9#include <klocalizedstring.h>
21#include <QStandardPaths>
38 setCaption(i18n(
"Please paste this information in your bug report"));
50 QGuiApplication::clipboard()->setText(
m_page->txtBugInfo->toPlainText());
51 m_page->txtBugInfo->selectAll();
66 const QString configPath = QStandardPaths::writableLocation(QStandardPaths::GenericConfigLocation);
67 QSettings kritarc(configPath + QStringLiteral(
"/kritadisplayrc"), QSettings::IniFormat);
71 m_page->txtBugInfo->setText(info);
81 if (filename.isEmpty()) {
86 if (!file.open(QIODevice::WriteOnly)) {
87 QMessageBox::information(
this, i18n(
"Unable to open file"),
92 QTextStream out(&file);
95 if (originalLogFileName.isEmpty() && QFileInfo(originalLogFileName).exists()) {
96 QFile src(originalLogFileName);
100 out <<
m_page->txtBugInfo->toPlainText();
111 info.append(
"Krita");
116 info.append(
"\n Version (compiled): ").append(QT_VERSION_STR);
117 info.append(
"\n Version (loaded): ").append(qVersion());
121 info.append(
"OS Information");
122 info.append(
"\n Build ABI: ").append(QSysInfo::buildAbi());
123 info.append(
"\n Build CPU: ").append(QSysInfo::buildCpuArchitecture());
124 info.append(
"\n CPU: ").append(QSysInfo::currentCpuArchitecture());
125 info.append(
"\n Kernel Type: ").append(QSysInfo::kernelType());
126 info.append(
"\n Kernel Version: ").append(QSysInfo::kernelVersion());
127 info.append(
"\n Pretty Productname: ").append(QSysInfo::prettyProductName());
128 info.append(
"\n Product Type: ").append(QSysInfo::productType());
129 info.append(
"\n Product Version: ").append(QSysInfo::productVersion());
131 QString manufacturer =
132 QAndroidJniObject::getStaticObjectField(
"android/os/Build",
"MANUFACTURER",
"Ljava/lang/String;").toString();
133 const QString model =
134 QAndroidJniObject::getStaticObjectField(
"android/os/Build",
"MODEL",
"Ljava/lang/String;").toString();
135 manufacturer[0] = manufacturer[0].toUpper();
136 info.append(
"\n Product Model: ").append(manufacturer +
" " + model);
144 info.append(
"Hardware Information");
145 info.append(QString(
"\n Memory: %1").arg(
KisImageConfig(
true).totalRAM() / 1024)).append(
" Gb");
146 info.append(QString(
"\n Cores: %1").arg(QThread::idealThreadCount()));
156 if (!kritarc.value(
"LogUsage",
true).toBool() || !QFileInfo(
originalFileName()).exists()) {
162 info.append(
"------------------------------------");
170 log.open(QFile::ReadOnly | QFile::Text);
171 info += QString::fromUtf8(log.readAll());
QList< QString > QStringList
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
virtual QString originalFileName()=0
DlgBugInfo(QWidget *parent=0, ButtonCodes customButtons=None)
virtual QString replacementWarningText()=0
virtual QString infoText(QSettings &kritarc)
QString basicSystemInformationReplacementText()
virtual QString captionText()=0
virtual QString defaultNewFileName()=0
static const QString & getDebugText()
A dialog base class with standard buttons and predefined layouts.
void setMainWidget(QWidget *widget)
void setButtonText(ButtonCode id, const QString &text)
virtual void setCaption(const QString &caption)
void setButtons(ButtonCodes buttonMask)
void setDefaultButton(ButtonCode id)
@ User2
Show User defined button 2.
@ Ok
Show Ok button. (this button accept()s the dialog; result set to QDialog::Accepted)
@ User1
Show User defined button 1.
QString filename()
Get the file name the user selected in the file dialog.
void setDefaultDir(const QString &defaultDir, bool force=false)
setDefaultDir set the default directory to defaultDir.
void setMimeTypeFilters(const QStringList &mimeTypeList, QString defaultMimeType=QString())
setMimeTypeFilters Update the list of file filters from mime types.
void setUtf8OnStream(QTextStream &stream)
KRITAVERSION_EXPORT QString versionString(bool checkGit=false)