summaryrefslogtreecommitdiffstats
path: root/src/qdbus
diff options
context:
space:
mode:
authorAlexander Volkov <a.volkov@rusbitech.ru>2014-09-22 16:12:45 +0400
committerAlexander Volkov <a.volkov@rusbitech.ru>2014-12-12 10:36:44 +0100
commitec56885a50f25a88c5bf303077badad73aa1eb30 (patch)
tree824c1165b4ee6ea19b93b82d092e6e54d721804a /src/qdbus
parent008926f193ceb29da6ca94fae6a7efb3ca0e0f09 (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.cpp4
-rw-r--r--src/qdbus/qdbusviewer/mainwindow.cpp46
-rw-r--r--src/qdbus/qdbusviewer/mainwindow.h8
-rw-r--r--src/qdbus/qdbusviewer/qdbusviewer.cpp20
-rw-r--r--src/qdbus/qdbusviewer/qdbusviewer.h7
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;
};