From 83efa7dcd9771008e7600b4c35db0dde6e0bc995 Mon Sep 17 00:00:00 2001 From: Manuel Nickschas Date: Wed, 21 Jul 2010 09:02:43 +0200 Subject: [PATCH] Save/restore active bufferview --- src/qtui/mainwin.cpp | 31 ++++++++++++++++++++++++++++++- src/qtui/mainwin.h | 1 + src/uisupport/bufferview.h | 1 + 3 files changed, 32 insertions(+), 1 deletion(-) diff --git a/src/qtui/mainwin.cpp b/src/qtui/mainwin.cpp index a144904b..334c5c1b 100644 --- a/src/qtui/mainwin.cpp +++ b/src/qtui/mainwin.cpp @@ -612,6 +612,28 @@ BufferView *MainWin::activeBufferView() const { return dock->isActive() ? qobject_cast(dock->widget()) : 0; } +void MainWin::changeActiveBufferView(int bufferViewId) { + if(bufferViewId < 0) + return; + + BufferView *current = activeBufferView(); + if(current) { + qobject_cast(current->parent())->setActive(false); + _activeBufferViewIndex = -1; + } + + for(int i = 0; i < _bufferViews.count(); i++) { + BufferViewDock *dock = _bufferViews.at(i); + if(dock->bufferViewId() == bufferViewId && !dock->isHidden()) { + _activeBufferViewIndex = i; + dock->setActive(true); + return; + } + } + + nextBufferView(); // fallback +} + void MainWin::changeActiveBufferView(bool backwards) { BufferView *current = activeBufferView(); if(current) @@ -893,14 +915,21 @@ void MainWin::loadLayout() { } restoreState(state, accountId); + int bufferViewId = s.value(QString("ActiveBufferView-%1").arg(accountId), -1).toInt(); + if(bufferViewId >= 0) + changeActiveBufferView(bufferViewId); + _layoutLoaded = true; } void MainWin::saveLayout() { QtUiSettings s; int accountId = _bufferViews.count()? Client::currentCoreAccount().accountId().toInt() : 0; // only save if we still have a layout! - if(accountId > 0) + if(accountId > 0) { s.setValue(QString("MainWinState-%1").arg(accountId) , saveState(accountId)); + BufferView *view = activeBufferView(); + s.setValue(QString("ActiveBufferView-%1").arg(accountId), view ? view->config()->bufferViewId() : -1); + } } void MainWin::disconnectedFromCore() { diff --git a/src/qtui/mainwin.h b/src/qtui/mainwin.h index bdff05d1..e882e0e6 100644 --- a/src/qtui/mainwin.h +++ b/src/qtui/mainwin.h @@ -154,6 +154,7 @@ class MainWin void bufferViewToggled(bool enabled); void bufferViewVisibilityChanged(bool visible); void changeActiveBufferView(bool backwards); + void changeActiveBufferView(int bufferViewId); signals: void connectToCore(const QVariantMap &connInfo); diff --git a/src/uisupport/bufferview.h b/src/uisupport/bufferview.h index 5dc1a2d9..b4fcbee0 100644 --- a/src/uisupport/bufferview.h +++ b/src/uisupport/bufferview.h @@ -114,6 +114,7 @@ protected: // ============================== class BufferViewDock : public QDockWidget { Q_OBJECT + Q_PROPERTY(bool active READ isActive WRITE setActive STORED true) public: BufferViewDock(BufferViewConfig *config, QWidget *parent); -- 2.20.1