diff options
author | Alexander Volkov <a.volkov@rusbitech.ru> | 2014-09-22 16:12:45 +0400 |
---|---|---|
committer | Alexander Volkov <a.volkov@rusbitech.ru> | 2014-12-12 10:36:44 +0100 |
commit | ec56885a50f25a88c5bf303077badad73aa1eb30 (patch) | |
tree | 824c1165b4ee6ea19b93b82d092e6e54d721804a /src/qdbus | |
parent | 008926f193ceb29da6ca94fae6a7efb3ca0e0f09 (diff) |
qdbusviewer: Restore the window size and state on startup
Save the window size, maximization state and state of splitters
on exit and restore these settings on startup.
Change-Id: Ibe26b09cc97ffc2fef17e6e8e2b804324dae7002
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Diffstat (limited to 'src/qdbus')
-rw-r--r-- | src/qdbus/qdbusviewer/main.cpp | 4 | ||||
-rw-r--r-- | src/qdbus/qdbusviewer/mainwindow.cpp | 46 | ||||
-rw-r--r-- | src/qdbus/qdbusviewer/mainwindow.h | 8 | ||||
-rw-r--r-- | src/qdbus/qdbusviewer/qdbusviewer.cpp | 20 | ||||
-rw-r--r-- | src/qdbus/qdbusviewer/qdbusviewer.h | 7 |
5 files changed, 81 insertions, 4 deletions
diff --git a/src/qdbus/qdbusviewer/main.cpp b/src/qdbus/qdbusviewer/main.cpp index 2de08ada3..9a2b7ba6b 100644 --- a/src/qdbus/qdbusviewer/main.cpp +++ b/src/qdbus/qdbusviewer/main.cpp @@ -40,6 +40,10 @@ int main(int argc, char *argv[]) { QApplication app(argc, argv); + + QCoreApplication::setOrganizationName(QStringLiteral("QtProject")); + QCoreApplication::setApplicationName(QStringLiteral("QDBusViewer")); + MainWindow mw; #ifndef Q_OS_MAC app.setWindowIcon(QIcon(QLatin1String(":/qt-project.org/qdbusviewer/images/qdbusviewer.png"))); diff --git a/src/qdbus/qdbusviewer/mainwindow.cpp b/src/qdbus/qdbusviewer/mainwindow.cpp index 48feacd4d..1676f6913 100644 --- a/src/qdbus/qdbusviewer/mainwindow.cpp +++ b/src/qdbus/qdbusviewer/mainwindow.cpp @@ -51,6 +51,7 @@ #include <QtWidgets/QMessageBox> #include <QtDBus/QDBusConnection> +#include <QtCore/QSettings> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) @@ -72,10 +73,17 @@ MainWindow::MainWindow(QWidget *parent) tabWidget = new QTabWidget; setCentralWidget(tabWidget); - QDBusViewer *sessionBusViewer = new QDBusViewer(QDBusConnection::sessionBus()); - QDBusViewer *systemBusViewer = new QDBusViewer(QDBusConnection::systemBus()); + sessionBusViewer = new QDBusViewer(QDBusConnection::sessionBus()); + systemBusViewer = new QDBusViewer(QDBusConnection::systemBus()); tabWidget->addTab(sessionBusViewer, tr("Session Bus")); tabWidget->addTab(systemBusViewer, tr("System Bus")); + + restoreSettings(); +} + +MainWindow::~MainWindow() +{ + saveSettings(); } void MainWindow::addCustomBusTab(const QString &busAddress) @@ -99,3 +107,37 @@ void MainWindow::about() box.setWindowTitle(tr("D-Bus Viewer")); box.exec(); } + +static inline QString windowGeometryKey() { return QStringLiteral("WindowGeometry"); } +static inline QString sessionTabGroup() { return QStringLiteral("SessionTab"); } +static inline QString systemTabGroup() { return QStringLiteral("SystemTab"); } + +void MainWindow::saveSettings() +{ + QSettings settings; + + settings.setValue(windowGeometryKey(), saveGeometry()); + + settings.beginGroup(sessionTabGroup()); + sessionBusViewer->saveState(&settings); + settings.endGroup(); + + settings.beginGroup(systemTabGroup()); + systemBusViewer->saveState(&settings); + settings.endGroup(); +} + +void MainWindow::restoreSettings() +{ + QSettings settings; + + restoreGeometry(settings.value(windowGeometryKey()).toByteArray()); + + settings.beginGroup(sessionTabGroup()); + sessionBusViewer->restoreState(&settings); + settings.endGroup(); + + settings.beginGroup(systemTabGroup()); + systemBusViewer->restoreState(&settings); + settings.endGroup(); +} diff --git a/src/qdbus/qdbusviewer/mainwindow.h b/src/qdbus/qdbusviewer/mainwindow.h index d1802f457..70f1139a7 100644 --- a/src/qdbus/qdbusviewer/mainwindow.h +++ b/src/qdbus/qdbusviewer/mainwindow.h @@ -46,11 +46,14 @@ QT_FORWARD_DECLARE_CLASS(QTabWidget) +class QDBusViewer; + class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); + ~MainWindow(); void addCustomBusTab(const QString &bus); @@ -58,7 +61,12 @@ private slots: void about(); private: + void saveSettings(); + void restoreSettings(); + QTabWidget *tabWidget; + QDBusViewer *sessionBusViewer; + QDBusViewer *systemBusViewer; }; #endif // MAINWINDOW_H diff --git a/src/qdbus/qdbusviewer/qdbusviewer.cpp b/src/qdbus/qdbusviewer/qdbusviewer.cpp index 0a37b09a5..d4c70a770 100644 --- a/src/qdbus/qdbusviewer/qdbusviewer.cpp +++ b/src/qdbus/qdbusviewer/qdbusviewer.cpp @@ -40,6 +40,7 @@ #include <QtCore/QStringListModel> #include <QtCore/QSortFilterProxyModel> #include <QtCore/QMetaProperty> +#include <QtCore/QSettings> #include <QtWidgets/QLineEdit> #include <QtWidgets/QListView> #include <QtWidgets/QAction> @@ -103,13 +104,13 @@ QDBusViewer::QDBusViewer(const QDBusConnection &connection, QWidget *parent) : connect(refreshShortcut, SIGNAL(activated()), this, SLOT(refreshChildren())); QVBoxLayout *layout = new QVBoxLayout(this); - QSplitter *topSplitter = new QSplitter(Qt::Vertical, this); + topSplitter = new QSplitter(Qt::Vertical, this); layout->addWidget(topSplitter); log = new LogViewer; connect(log, SIGNAL(anchorClicked(QUrl)), this, SLOT(anchorClicked(QUrl))); - QSplitter *splitter = new QSplitter(topSplitter); + splitter = new QSplitter(topSplitter); splitter->addWidget(servicesView); QWidget *servicesWidget = new QWidget; @@ -146,6 +147,21 @@ QDBusViewer::QDBusViewer(const QDBusConnection &connection, QWidget *parent) : } +static inline QString topSplitterStateKey() { return QStringLiteral("topSplitterState"); } +static inline QString splitterStateKey() { return QStringLiteral("splitterState"); } + +void QDBusViewer::saveState(QSettings *settings) const +{ + settings->setValue(topSplitterStateKey(), topSplitter->saveState()); + settings->setValue(splitterStateKey(), splitter->saveState()); +} + +void QDBusViewer::restoreState(const QSettings *settings) +{ + topSplitter->restoreState(settings->value(topSplitterStateKey()).toByteArray()); + splitter->restoreState(settings->value(splitterStateKey()).toByteArray()); +} + void QDBusViewer::logMessage(const QString &msg) { log->append(msg + QLatin1Char('\n')); diff --git a/src/qdbus/qdbusviewer/qdbusviewer.h b/src/qdbus/qdbusviewer/qdbusviewer.h index 2f5089365..5456b7176 100644 --- a/src/qdbus/qdbusviewer/qdbusviewer.h +++ b/src/qdbus/qdbusviewer/qdbusviewer.h @@ -46,6 +46,8 @@ QT_FORWARD_DECLARE_CLASS(QListView) QT_FORWARD_DECLARE_CLASS(QTextBrowser) QT_FORWARD_DECLARE_CLASS(QDomDocument) QT_FORWARD_DECLARE_CLASS(QDomElement) +QT_FORWARD_DECLARE_CLASS(QSplitter) +QT_FORWARD_DECLARE_CLASS(QSettings) struct BusSignature { @@ -59,6 +61,9 @@ class QDBusViewer: public QWidget public: QDBusViewer(const QDBusConnection &connection, QWidget *parent = 0); + void saveState(QSettings *settings) const; + void restoreState(const QSettings *settings); + public slots: void refresh(); @@ -94,6 +99,8 @@ private: QLineEdit *serviceFilterLine; QListView *servicesView; QTextBrowser *log; + QSplitter *topSplitter; + QSplitter *splitter; QRegExp objectPathRegExp; }; |