diff options
Diffstat (limited to 'Swift/QtUI/QtSingleWindow.cpp')
-rw-r--r-- | Swift/QtUI/QtSingleWindow.cpp | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/Swift/QtUI/QtSingleWindow.cpp b/Swift/QtUI/QtSingleWindow.cpp index 2a19dd4..733571f 100644 --- a/Swift/QtUI/QtSingleWindow.cpp +++ b/Swift/QtUI/QtSingleWindow.cpp @@ -7,10 +7,12 @@ #include <Swift/QtUI/QtSingleWindow.h> #include <Swift/QtUI/QtSettingsProvider.h> +#include <Swiften/Base/foreach.h> namespace Swift { static const QString SINGLE_WINDOW_GEOMETRY = QString("SINGLE_WINDOW_GEOMETRY"); +static const QString SINGLE_WINDOW_SPLITS = QString("SINGLE_WINDOW_SPLITS"); QtSingleWindow::QtSingleWindow(QtSettingsProvider* settings) : QSplitter() { settings_ = settings; @@ -18,12 +20,35 @@ QtSingleWindow::QtSingleWindow(QtSettingsProvider* settings) : QSplitter() { if (geometryVariant.isValid()) { restoreGeometry(geometryVariant.toByteArray()); } + connect(this, SIGNAL(splitterMoved(int, int)), this, SLOT(handleSplitterMoved(int, int))); + restoreSplitters(); +} +QtSingleWindow::~QtSingleWindow() { } -QtSingleWindow::~QtSingleWindow() { +void QtSingleWindow::handleSplitterMoved(int, int) { + QList<QVariant> variantValues; + QList<int> intValues = sizes(); + foreach (int value, intValues) { + variantValues.append(QVariant(value)); + } + settings_->getQSettings()->setValue(SINGLE_WINDOW_SPLITS, QVariant(variantValues)); +} + +void QtSingleWindow::restoreSplitters() { + QList<QVariant> variantValues = settings_->getQSettings()->value(SINGLE_WINDOW_SPLITS).toList(); + QList<int> intValues; + foreach (QVariant value, variantValues) { + intValues.append(value.toInt()); + } + setSizes(intValues); +} +void QtSingleWindow::insertAtFront(QWidget* widget) { + insertWidget(0, widget); + restoreSplitters(); } void QtSingleWindow::handleGeometryChanged() { |