From 17a3864b43c5aec61c3fbf4a1e32c85657a2c731 Mon Sep 17 00:00:00 2001 From: Marcus Eggenberger Date: Fri, 31 Oct 2008 14:55:12 +0100 Subject: [PATCH] Fixing BR #324 --- .../settingspages/bufferviewsettingspage.cpp | 31 +++++++++++++++++-- .../settingspages/bufferviewsettingspage.h | 3 ++ 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/src/qtui/settingspages/bufferviewsettingspage.cpp b/src/qtui/settingspages/bufferviewsettingspage.cpp index e629c3c6..851b7c67 100644 --- a/src/qtui/settingspages/bufferviewsettingspage.cpp +++ b/src/qtui/settingspages/bufferviewsettingspage.cpp @@ -33,7 +33,9 @@ BufferViewSettingsPage::BufferViewSettingsPage(QWidget *parent) : SettingsPage(tr("General"), tr("Buffer Views"), parent), - _ignoreWidgetChanges(false) + _ignoreWidgetChanges(false), + _useBufferViewHint(false), + _bufferViewHint(0) { ui.setupUi(this); ui.renameBufferView->setIcon(SmallIcon("edit-rename")); @@ -91,6 +93,7 @@ void BufferViewSettingsPage::reset() { } void BufferViewSettingsPage::load() { + qDebug() << "loooooooad"; reset(); if(!Client::bufferViewManager()) @@ -114,11 +117,20 @@ void BufferViewSettingsPage::load() { } _ignoreWidgetChanges = false; - ui.bufferViewList->setCurrentRow(0); + + if(!_useBufferViewHint || !selectBufferViewById(_bufferViewHint)) + ui.bufferViewList->setCurrentRow(0); } void BufferViewSettingsPage::save() { setEnabled(false); + + BufferViewConfig *currentConfig = bufferView(ui.bufferViewList->currentRow()); + if(currentConfig) { + _useBufferViewHint = true; + _bufferViewHint = currentConfig->bufferViewId(); + } + QVariantList newConfigs; QVariantList deleteConfigs; QVariantList changedConfigs; @@ -176,8 +188,11 @@ void BufferViewSettingsPage::addBufferView(BufferViewConfig *config) { } void BufferViewSettingsPage::addBufferView(int bufferViewId) { + qDebug() << "addBufferView" << bufferViewId; + // we are informed about a new bufferview from Client::bufferViewManager() Q_ASSERT(Client::bufferViewManager()); addBufferView(Client::bufferViewManager()->bufferViewConfig(bufferViewId)); + selectBufferViewById(bufferViewId); } void BufferViewSettingsPage::bufferViewDeleted() { @@ -231,6 +246,18 @@ BufferViewConfig *BufferViewSettingsPage::bufferView(int listPos) { } } +bool BufferViewSettingsPage::selectBufferViewById(int bufferViewId) { + BufferViewConfig *config; + for(int i = 0; i < ui.bufferViewList->count(); i++) { + config = qobject_cast(ui.bufferViewList->item(i)->data(Qt::UserRole).value()); + if(config && config->bufferViewId() == bufferViewId) { + ui.bufferViewList->setCurrentRow(i); + return true; + } + } + return false; +} + void BufferViewSettingsPage::updateBufferView() { BufferViewConfig *config = qobject_cast(sender()); if(!config) diff --git a/src/qtui/settingspages/bufferviewsettingspage.h b/src/qtui/settingspages/bufferviewsettingspage.h index bf081777..66764cb2 100644 --- a/src/qtui/settingspages/bufferviewsettingspage.h +++ b/src/qtui/settingspages/bufferviewsettingspage.h @@ -60,6 +60,8 @@ private slots: private: Ui::BufferViewSettingsPage ui; bool _ignoreWidgetChanges; + bool _useBufferViewHint; + int _bufferViewHint; // list of bufferviews to create QList _newBufferViews; @@ -72,6 +74,7 @@ private: int listPos(BufferViewConfig *config); BufferViewConfig *bufferView(int listPos); + bool selectBufferViewById(int bufferViewId); BufferViewConfig *cloneConfig(BufferViewConfig *config); BufferViewConfig *configForDisplay(BufferViewConfig *config); -- 2.20.1