diff options
Diffstat (limited to 'rbutil/rbutilqt')
-rw-r--r-- | rbutil/rbutilqt/rbutilqt.cpp | 1 | ||||
-rw-r--r-- | rbutil/rbutilqt/systrace.cpp | 47 | ||||
-rw-r--r-- | rbutil/rbutilqt/systrace.h | 5 | ||||
-rw-r--r-- | rbutil/rbutilqt/systracefrm.ui | 74 |
4 files changed, 86 insertions, 41 deletions
diff --git a/rbutil/rbutilqt/rbutilqt.cpp b/rbutil/rbutilqt/rbutilqt.cpp index 292a0026b1..ececb782d4 100644 --- a/rbutil/rbutilqt/rbutilqt.cpp +++ b/rbutil/rbutilqt/rbutilqt.cpp | |||
@@ -149,6 +149,7 @@ void RbUtilQt::shutdown(void) | |||
149 | // object destruction -- the trace object could already be destroyed. | 149 | // object destruction -- the trace object could already be destroyed. |
150 | // Fixes segfaults on exit. | 150 | // Fixes segfaults on exit. |
151 | qInstallMsgHandler(0); | 151 | qInstallMsgHandler(0); |
152 | SysTrace::save(); | ||
152 | this->close(); | 153 | this->close(); |
153 | } | 154 | } |
154 | 155 | ||
diff --git a/rbutil/rbutilqt/systrace.cpp b/rbutil/rbutilqt/systrace.cpp index 1aed5c05b5..1b9de6b713 100644 --- a/rbutil/rbutilqt/systrace.cpp +++ b/rbutil/rbutilqt/systrace.cpp | |||
@@ -21,6 +21,7 @@ | |||
21 | #include "systrace.h" | 21 | #include "systrace.h" |
22 | #include "ui_systracefrm.h" | 22 | #include "ui_systracefrm.h" |
23 | 23 | ||
24 | #include "rbsettings.h" | ||
24 | 25 | ||
25 | QString SysTrace::debugbuffer; | 26 | QString SysTrace::debugbuffer; |
26 | 27 | ||
@@ -32,7 +33,8 @@ SysTrace::SysTrace(QWidget *parent) : QDialog(parent) | |||
32 | refresh(); | 33 | refresh(); |
33 | 34 | ||
34 | connect(ui.buttonClose, SIGNAL(clicked()), this, SLOT(close())); | 35 | connect(ui.buttonClose, SIGNAL(clicked()), this, SLOT(close())); |
35 | connect(ui.buttonSave, SIGNAL(clicked()), this, SLOT(save())); | 36 | connect(ui.buttonSave, SIGNAL(clicked()), this, SLOT(saveCurrentTrace())); |
37 | connect(ui.buttonSavePrevious, SIGNAL(clicked()), this, SLOT(savePreviousTrace())); | ||
36 | connect(ui.buttonRefresh, SIGNAL(clicked()), this, SLOT(refresh())); | 38 | connect(ui.buttonRefresh, SIGNAL(clicked()), this, SLOT(refresh())); |
37 | } | 39 | } |
38 | 40 | ||
@@ -41,22 +43,51 @@ void SysTrace::refresh(void) | |||
41 | int pos = ui.textTrace->verticalScrollBar()->value(); | 43 | int pos = ui.textTrace->verticalScrollBar()->value(); |
42 | ui.textTrace->setHtml("<pre>" + debugbuffer + "</pre>"); | 44 | ui.textTrace->setHtml("<pre>" + debugbuffer + "</pre>"); |
43 | ui.textTrace->verticalScrollBar()->setValue(pos); | 45 | ui.textTrace->verticalScrollBar()->setValue(pos); |
46 | QString oldlog = RbSettings::value(RbSettings::CachePath).toString() | ||
47 | + "/rbutil-trace.log"; | ||
48 | ui.buttonSavePrevious->setEnabled(QFileInfo(oldlog).isFile()); | ||
44 | } | 49 | } |
45 | 50 | ||
46 | void SysTrace::save(void) | 51 | |
52 | void SysTrace::save(QString filename) | ||
47 | { | 53 | { |
48 | QString fp = QFileDialog::getSaveFileName(this, tr("Save system trace log"), | 54 | if(filename.isEmpty()) |
49 | QDir::homePath(), "*.log"); | 55 | filename = RbSettings::value(RbSettings::CachePath).toString() |
50 | if(fp == "") | 56 | + "/rbutil-trace.log"; |
51 | return; | 57 | // append save date to the trace. Append it directly instead of using |
52 | 58 | // qDebug() as the handler might have been unregistered. | |
53 | QFile fh(fp); | 59 | debugbuffer.append("[SysTrace] saving trace at "); |
60 | debugbuffer.append(QDateTime::currentDateTime().toString(Qt::ISODate)); | ||
61 | debugbuffer.append("\n"); | ||
62 | QFile fh(filename); | ||
54 | if(!fh.open(QIODevice::WriteOnly)) | 63 | if(!fh.open(QIODevice::WriteOnly)) |
55 | return; | 64 | return; |
56 | fh.write(debugbuffer.toUtf8(), debugbuffer.size()); | 65 | fh.write(debugbuffer.toUtf8(), debugbuffer.size()); |
57 | fh.close(); | 66 | fh.close(); |
58 | } | 67 | } |
59 | 68 | ||
69 | void SysTrace::saveCurrentTrace(void) | ||
70 | { | ||
71 | QString fp = QFileDialog::getSaveFileName(this, tr("Save system trace log"), | ||
72 | QDir::homePath(), "*.log"); | ||
73 | if(!fp.isEmpty()) | ||
74 | save(fp); | ||
75 | } | ||
76 | |||
77 | |||
78 | void SysTrace::savePreviousTrace(void) | ||
79 | { | ||
80 | QString fp = QFileDialog::getSaveFileName(this, tr("Save system trace log"), | ||
81 | QDir::homePath(), "*.log"); | ||
82 | if(fp.isEmpty()) | ||
83 | return; | ||
84 | |||
85 | QString oldlog = RbSettings::value(RbSettings::CachePath).toString() | ||
86 | + "/rbutil-trace.log"; | ||
87 | QFile::copy(oldlog, fp); | ||
88 | return; | ||
89 | } | ||
90 | |||
60 | void SysTrace::debug(QtMsgType type, const char* msg) | 91 | void SysTrace::debug(QtMsgType type, const char* msg) |
61 | { | 92 | { |
62 | (void)type; | 93 | (void)type; |
diff --git a/rbutil/rbutilqt/systrace.h b/rbutil/rbutilqt/systrace.h index a8253ce9e6..4e6206a886 100644 --- a/rbutil/rbutilqt/systrace.h +++ b/rbutil/rbutilqt/systrace.h | |||
@@ -31,14 +31,15 @@ class SysTrace : public QDialog | |||
31 | public: | 31 | public: |
32 | SysTrace(QWidget *parent); | 32 | SysTrace(QWidget *parent); |
33 | static void debug(QtMsgType type, const char* msg); | 33 | static void debug(QtMsgType type, const char* msg); |
34 | |||
35 | static QString getTrace() {return debugbuffer;} | 34 | static QString getTrace() {return debugbuffer;} |
35 | static void save(QString filename = ""); | ||
36 | private: | 36 | private: |
37 | Ui::SysTraceFrm ui; | 37 | Ui::SysTraceFrm ui; |
38 | static QString debugbuffer; | 38 | static QString debugbuffer; |
39 | 39 | ||
40 | private slots: | 40 | private slots: |
41 | void save(void); | 41 | void saveCurrentTrace(void); |
42 | void savePreviousTrace(void); | ||
42 | void refresh(void); | 43 | void refresh(void); |
43 | 44 | ||
44 | }; | 45 | }; |
diff --git a/rbutil/rbutilqt/systracefrm.ui b/rbutil/rbutilqt/systracefrm.ui index 7a83eecb80..eb8bb6dac6 100644 --- a/rbutil/rbutilqt/systracefrm.ui +++ b/rbutil/rbutilqt/systracefrm.ui | |||
@@ -1,7 +1,8 @@ | |||
1 | <ui version="4.0" > | 1 | <?xml version="1.0" encoding="UTF-8"?> |
2 | <ui version="4.0"> | ||
2 | <class>SysTraceFrm</class> | 3 | <class>SysTraceFrm</class> |
3 | <widget class="QDialog" name="SysTraceFrm" > | 4 | <widget class="QDialog" name="SysTraceFrm"> |
4 | <property name="geometry" > | 5 | <property name="geometry"> |
5 | <rect> | 6 | <rect> |
6 | <x>0</x> | 7 | <x>0</x> |
7 | <y>0</y> | 8 | <y>0</y> |
@@ -9,29 +10,29 @@ | |||
9 | <height>550</height> | 10 | <height>550</height> |
10 | </rect> | 11 | </rect> |
11 | </property> | 12 | </property> |
12 | <property name="windowTitle" > | 13 | <property name="windowTitle"> |
13 | <string>System Trace</string> | 14 | <string>System Trace</string> |
14 | </property> | 15 | </property> |
15 | <layout class="QGridLayout" name="gridLayout" > | 16 | <layout class="QGridLayout" name="gridLayout"> |
16 | <item row="0" column="0" colspan="5" > | 17 | <item row="0" column="0" colspan="6"> |
17 | <widget class="QLabel" name="label" > | 18 | <widget class="QLabel" name="label"> |
18 | <property name="text" > | 19 | <property name="text"> |
19 | <string>System State trace</string> | 20 | <string>System State trace</string> |
20 | </property> | 21 | </property> |
21 | <property name="wordWrap" > | 22 | <property name="wordWrap"> |
22 | <bool>true</bool> | 23 | <bool>true</bool> |
23 | </property> | 24 | </property> |
24 | </widget> | 25 | </widget> |
25 | </item> | 26 | </item> |
26 | <item row="1" column="0" colspan="5" > | 27 | <item row="1" column="0" colspan="6"> |
27 | <widget class="QTextEdit" name="textTrace" /> | 28 | <widget class="QTextEdit" name="textTrace"/> |
28 | </item> | 29 | </item> |
29 | <item row="2" column="1" colspan="2" > | 30 | <item row="2" column="1" colspan="2"> |
30 | <spacer name="horizontalSpacer" > | 31 | <spacer name="horizontalSpacer"> |
31 | <property name="orientation" > | 32 | <property name="orientation"> |
32 | <enum>Qt::Horizontal</enum> | 33 | <enum>Qt::Horizontal</enum> |
33 | </property> | 34 | </property> |
34 | <property name="sizeHint" stdset="0" > | 35 | <property name="sizeHint" stdset="0"> |
35 | <size> | 36 | <size> |
36 | <width>487</width> | 37 | <width>487</width> |
37 | <height>26</height> | 38 | <height>26</height> |
@@ -39,43 +40,54 @@ | |||
39 | </property> | 40 | </property> |
40 | </spacer> | 41 | </spacer> |
41 | </item> | 42 | </item> |
42 | <item row="2" column="4" > | 43 | <item row="2" column="5"> |
43 | <widget class="QPushButton" name="buttonClose" > | 44 | <widget class="QPushButton" name="buttonClose"> |
44 | <property name="text" > | 45 | <property name="text"> |
45 | <string>&Close</string> | 46 | <string>&Close</string> |
46 | </property> | 47 | </property> |
47 | <property name="icon" > | 48 | <property name="icon"> |
48 | <iconset resource="rbutilqt.qrc" > | 49 | <iconset resource="rbutilqt.qrc"> |
49 | <normaloff>:/icons/process-stop.png</normaloff>:/icons/process-stop.png</iconset> | 50 | <normaloff>:/icons/process-stop.png</normaloff>:/icons/process-stop.png</iconset> |
50 | </property> | 51 | </property> |
51 | </widget> | 52 | </widget> |
52 | </item> | 53 | </item> |
53 | <item row="2" column="3" > | 54 | <item row="2" column="4"> |
54 | <widget class="QPushButton" name="buttonSave" > | 55 | <widget class="QPushButton" name="buttonSave"> |
55 | <property name="text" > | 56 | <property name="text"> |
56 | <string>&Save</string> | 57 | <string>&Save</string> |
57 | </property> | 58 | </property> |
58 | <property name="icon" > | 59 | <property name="icon"> |
59 | <iconset resource="rbutilqt.qrc" > | 60 | <iconset resource="rbutilqt.qrc"> |
60 | <normaloff>:/icons/document-save.png</normaloff>:/icons/document-save.png</iconset> | 61 | <normaloff>:/icons/document-save.png</normaloff>:/icons/document-save.png</iconset> |
61 | </property> | 62 | </property> |
62 | </widget> | 63 | </widget> |
63 | </item> | 64 | </item> |
64 | <item row="2" column="0" > | 65 | <item row="2" column="0"> |
65 | <widget class="QPushButton" name="buttonRefresh" > | 66 | <widget class="QPushButton" name="buttonRefresh"> |
66 | <property name="text" > | 67 | <property name="text"> |
67 | <string>&Refresh</string> | 68 | <string>&Refresh</string> |
68 | </property> | 69 | </property> |
69 | <property name="icon" > | 70 | <property name="icon"> |
70 | <iconset resource="rbutilqt.qrc" > | 71 | <iconset resource="rbutilqt.qrc"> |
71 | <normaloff>:/icons/view-refresh.png</normaloff>:/icons/view-refresh.png</iconset> | 72 | <normaloff>:/icons/view-refresh.png</normaloff>:/icons/view-refresh.png</iconset> |
72 | </property> | 73 | </property> |
73 | </widget> | 74 | </widget> |
74 | </item> | 75 | </item> |
76 | <item row="2" column="3"> | ||
77 | <widget class="QPushButton" name="buttonSavePrevious"> | ||
78 | <property name="text"> | ||
79 | <string>Save &previous</string> | ||
80 | </property> | ||
81 | <property name="icon"> | ||
82 | <iconset resource="rbutilqt.qrc"> | ||
83 | <normaloff>:/icons/document-save.png</normaloff>:/icons/document-save.png</iconset> | ||
84 | </property> | ||
85 | </widget> | ||
86 | </item> | ||
75 | </layout> | 87 | </layout> |
76 | </widget> | 88 | </widget> |
77 | <resources> | 89 | <resources> |
78 | <include location="rbutilqt.qrc" /> | 90 | <include location="rbutilqt.qrc"/> |
79 | </resources> | 91 | </resources> |
80 | <connections/> | 92 | <connections/> |
81 | </ui> | 93 | </ui> |