Krita Source Code Documentation
Loading...
Searching...
No Matches
DlgAndroidLogcatDumper Class Reference

#include <DlgAndroidLogcatDumper.h>

+ Inheritance diagram for DlgAndroidLogcatDumper:

Public Member Functions

QString captionText () override
 
QString defaultNewFileName () override
 
 DlgAndroidLogcatDumper (QWidget *parent=nullptr)
 
QString originalFileName () override
 
QString replacementWarningText () override
 
 ~DlgAndroidLogcatDumper ()
 
- Public Member Functions inherited from DlgBugInfo
QString basicSystemInformationReplacementText ()
 
 DlgBugInfo (QWidget *parent=0, ButtonCodes customButtons=None)
 
virtual QString infoText (QSettings &kritarc)
 
void initialize ()
 
void initializeText ()
 
void saveToFile ()
 
 ~DlgBugInfo () override
 
- Public Member Functions inherited from KoDialog
QPushButton * button (ButtonCode id) const
 
QIcon buttonIcon (ButtonCode id) const
 
QString buttonText (ButtonCode id) const
 
QString buttonToolTip (ButtonCode id) const
 
QString buttonWhatsThis (ButtonCode id) const
 
ButtonCode defaultButton () const
 
QString helpLinkText () const
 
void incrementInitialSize (const QSize &size)
 
bool isButtonEnabled (ButtonCode id) const
 
 KoDialog (QWidget *parent=0, Qt::WindowFlags f=Qt::WindowFlags())
 
QWidget * mainWidget ()
 
QSize minimumSizeHint () const override
 
void setButtonFocus (ButtonCode id)
 
void setButtonGuiItem (ButtonCode id, const KGuiItem &item)
 
void setButtonIcon (ButtonCode id, const QIcon &icon)
 
void setButtons (ButtonCodes buttonMask)
 
void setButtonsOrientation (Qt::Orientation orientation)
 
void setButtonText (ButtonCode id, const QString &text)
 
void setButtonToolTip (ButtonCode id, const QString &text)
 
void setButtonWhatsThis (ButtonCode id, const QString &text)
 
void setDefaultButton (ButtonCode id)
 
void setEscapeButton (ButtonCode id)
 
void setInitialSize (const QSize &size)
 
void setMainWidget (QWidget *widget)
 
void showButton (ButtonCode id, bool state)
 
void showButtonSeparator (bool state)
 
QSize sizeHint () const override
 
 ~KoDialog () override
 

Private Slots

void writeTextToWidget ()
 

Private Member Functions

void disableLogging ()
 
void enableLogging ()
 

Private Attributes

QProcess m_logcatProcess
 
KisSignalCompressor m_updateWidgetCompressor
 

Additional Inherited Members

- Public Types inherited from KoDialog
enum  ButtonCode {
  None = 0x00000000 , Help = 0x00000001 , Default = 0x00000002 , Ok = 0x00000004 ,
  Apply = 0x00000008 , Try = 0x00000010 , Cancel = 0x00000020 , Close = 0x00000040 ,
  No = 0x00000080 , Yes = 0x00000100 , Reset = 0x00000200 , Details = 0x00000400 ,
  User1 = 0x00001000 , User2 = 0x00002000 , User3 = 0x00004000 , NoDefault = 0x00008000
}
 
enum  ButtonPopupMode { InstantPopup = 0 , DelayedPopup = 1 }
 
enum  CaptionFlag { NoCaptionFlags = 0 , AppNameCaption = 1 , ModifiedCaption = 2 , HIGCompliantCaption = AppNameCaption }
 
- Public Slots inherited from KoDialog
void delayedDestruct ()
 
void enableButton (ButtonCode id, bool state)
 
void enableButtonApply (bool state)
 
void enableButtonCancel (bool state)
 
void enableButtonOk (bool state)
 
void enableLinkedHelp (bool state)
 
bool isDetailsWidgetVisible () const
 
virtual void setCaption (const QString &caption)
 
virtual void setCaption (const QString &caption, bool modified)
 
void setDetailsWidget (QWidget *detailsWidget)
 
void setDetailsWidgetVisible (bool visible)
 
void setHelp (const QString &anchor, const QString &appname=QString())
 
void setHelpLinkText (const QString &text)
 
virtual void setPlainCaption (const QString &caption)
 
- Signals inherited from KoDialog
void aboutToShowDetails ()
 
void applyClicked ()
 
void buttonClicked (KoDialog::ButtonCode button)
 
void cancelClicked ()
 
void closeClicked ()
 
void defaultClicked ()
 
void finished ()
 
void helpClicked ()
 
void hidden ()
 
void layoutHintChanged ()
 
void noClicked ()
 
void okClicked ()
 
void resetClicked ()
 
void tryClicked ()
 
void user1Clicked ()
 
void user2Clicked ()
 
void user3Clicked ()
 
void yesClicked ()
 
- Static Public Member Functions inherited from KoDialog
static int groupSpacingHint ()
 
static QString makeStandardCaption (const QString &userCaption, QWidget *window=0, CaptionFlags flags=HIGCompliantCaption)
 
static int marginHint ()
 
static void resizeLayout (QLayout *lay, int margin, int spacing)
 
static void resizeLayout (QWidget *widget, int margin, int spacing)
 
static int spacingHint ()
 
- Protected Slots inherited from KoDialog
virtual void slotButtonClicked (int button)
 
- Protected Member Functions inherited from KoDialog
void closeEvent (QCloseEvent *e) override
 
void hideEvent (QHideEvent *) override
 
void keyPressEvent (QKeyEvent *) override
 
void showEvent (QShowEvent *e) override
 
- Protected Attributes inherited from DlgBugInfo
WdgBugInfom_page
 

Detailed Description

Definition at line 16 of file DlgAndroidLogcatDumper.h.

Constructor & Destructor Documentation

◆ DlgAndroidLogcatDumper()

DlgAndroidLogcatDumper::DlgAndroidLogcatDumper ( QWidget * parent = nullptr)

Definition at line 17 of file DlgAndroidLogcatDumper.cpp.

18 : DlgBugInfo(parent, User3)
19 , m_logcatProcess(parent)
21{
22 QString program = "logcat";
23 QStringList arguments = {"-v", "time", "--pid", QString::number(getpid())};
24 m_logcatProcess.start(program, arguments);
25 QString errorOutput = m_logcatProcess.readAllStandardError();
26 if (!errorOutput.isEmpty()) {
27 qWarning() << "Couldn't spawn logcat process" << errorOutput;
28 }
29
30 setButtonText(User3, i18n("Toggle Logging"));
31 button(User3)->setCheckable(true);
32 button(User3)->setChecked(true);
33
35 connect(this, &KoDialog::user3Clicked, this, [this]() {
36 QPushButton *loggingButton = button(User3);
37 if (loggingButton->isChecked()) {
39 } else {
41 }
42 });
43
44 QRect screen_rect = QGuiApplication::primaryScreen()->availableGeometry();
45 int frame_height = parentWidget()->frameGeometry().height() - parentWidget()->size().height();
46 resize(m_page->size().width(), screen_rect.height() - frame_height);
47}
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
KisSignalCompressor m_updateWidgetCompressor
DlgBugInfo(QWidget *parent=0, ButtonCodes customButtons=None)
WdgBugInfo * m_page
Definition dlg_buginfo.h:47
void user3Clicked()
QPushButton * button(ButtonCode id) const
Definition KoDialog.cpp:591
void setButtonText(ButtonCode id, const QString &text)
Definition KoDialog.cpp:648
@ User3
Show User defined button 3.
Definition KoDialog.h:138

References KoDialog::button(), connect(), disableLogging(), enableLogging(), m_logcatProcess, DlgBugInfo::m_page, KoDialog::setButtonText(), KoDialog::User3, and KoDialog::user3Clicked().

◆ ~DlgAndroidLogcatDumper()

DlgAndroidLogcatDumper::~DlgAndroidLogcatDumper ( )

Definition at line 49 of file DlgAndroidLogcatDumper.cpp.

50{
51 m_logcatProcess.kill();
52 m_logcatProcess.waitForFinished();
53}

References m_logcatProcess.

Member Function Documentation

◆ captionText()

QString DlgAndroidLogcatDumper::captionText ( )
overridevirtual

Implements DlgBugInfo.

Definition at line 95 of file DlgAndroidLogcatDumper.cpp.

96{
97 return i18nc("Caption of the dialog with Krita's Android system log for bug reports",
98 "Krita Logcat Dump: please paste this information to the bug report");
99}

◆ defaultNewFileName()

QString DlgAndroidLogcatDumper::defaultNewFileName ( )
overridevirtual

Implements DlgBugInfo.

Definition at line 88 of file DlgAndroidLogcatDumper.cpp.

88{ return "kritalogcatdump.txt"; }

◆ disableLogging()

void DlgAndroidLogcatDumper::disableLogging ( )
private

Definition at line 82 of file DlgAndroidLogcatDumper.cpp.

83{
84 disconnect(&m_updateWidgetCompressor, SIGNAL(timeout()), this, SLOT(writeTextToWidget()));
85 disconnect(&m_logcatProcess, SIGNAL(readyReadStandardOutput()), &m_updateWidgetCompressor, SLOT(start()));
86}

References m_logcatProcess, m_updateWidgetCompressor, and writeTextToWidget().

◆ enableLogging()

void DlgAndroidLogcatDumper::enableLogging ( )
private

Definition at line 73 of file DlgAndroidLogcatDumper.cpp.

74{
75 connect(&m_logcatProcess, SIGNAL(readyReadStandardOutput()), &m_updateWidgetCompressor, SLOT(start()),
76 Qt::UniqueConnection);
77 connect(&m_updateWidgetCompressor, SIGNAL(timeout()), this, SLOT(writeTextToWidget()), Qt::UniqueConnection);
78
80}

References connect(), m_logcatProcess, m_updateWidgetCompressor, KisSignalCompressor::start(), and writeTextToWidget().

◆ originalFileName()

QString DlgAndroidLogcatDumper::originalFileName ( )
overridevirtual

Implements DlgBugInfo.

Definition at line 90 of file DlgAndroidLogcatDumper.cpp.

91{
92 return QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation) + "/krita-logcatdump.log";
93}

◆ replacementWarningText()

QString DlgAndroidLogcatDumper::replacementWarningText ( )
overridevirtual

Implements DlgBugInfo.

Definition at line 101 of file DlgAndroidLogcatDumper.cpp.

101{ return QString(); }

◆ writeTextToWidget

void DlgAndroidLogcatDumper::writeTextToWidget ( )
privateslot

Definition at line 55 of file DlgAndroidLogcatDumper.cpp.

56{
57 QScrollBar *scrollBar = m_page->txtBugInfo->verticalScrollBar();
58 const bool scrollbarAtBottom = scrollBar->value() >= scrollBar->maximum();
59
60 QByteArray output = m_logcatProcess.readAllStandardOutput();
61
62 // this allows user's movement of the scrollbar
63 QTextCursor tmp(m_page->txtBugInfo->document());
64 tmp.movePosition(QTextCursor::End);
65 tmp.insertText(output);
66
67 // scroll to the bottom if scrollbar is at the bottom
68 if (scrollbarAtBottom) {
69 scrollBar->setValue(scrollBar->maximum());
70 }
71}

References m_logcatProcess, and DlgBugInfo::m_page.

Member Data Documentation

◆ m_logcatProcess

QProcess DlgAndroidLogcatDumper::m_logcatProcess
private

Definition at line 36 of file DlgAndroidLogcatDumper.h.

◆ m_updateWidgetCompressor

KisSignalCompressor DlgAndroidLogcatDumper::m_updateWidgetCompressor
private

Definition at line 37 of file DlgAndroidLogcatDumper.h.


The documentation for this class was generated from the following files: