X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fsettingspages%2Fbufferviewsettingspage.cpp;h=0f45b2c03da56f314ae38c4c527c566a67ebcc73;hp=6c059246109b7e76e6acc0d1be9e8cfc8c8dff14;hb=ef91ece316298bfd7e484ede233822457a61db41;hpb=f429bd6dfbea50ad4690875f1466a920f7a3b509 diff --git a/src/qtui/settingspages/bufferviewsettingspage.cpp b/src/qtui/settingspages/bufferviewsettingspage.cpp index 6c059246..0f45b2c0 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")); @@ -87,10 +89,15 @@ void BufferViewSettingsPage::reset() { _deleteBufferViews.clear(); + bool _useBufferViewHint; + int _bufferViewHint; + setChangedState(false); } void BufferViewSettingsPage::load() { + bool useBufferViewHint = _useBufferViewHint; + int bufferViewHint = _bufferViewHint; reset(); if(!Client::bufferViewManager()) @@ -114,11 +121,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 +192,10 @@ void BufferViewSettingsPage::addBufferView(BufferViewConfig *config) { } void BufferViewSettingsPage::addBufferView(int 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() { @@ -198,7 +216,7 @@ void BufferViewSettingsPage::newBufferView(const QString &bufferViewName) { int fakeId = -1 * (_newBufferViews.count() + 1); BufferViewConfig *config = new BufferViewConfig(fakeId); config->setBufferViewName(bufferViewName); - + config->setInitialized(); QList bufferIds; if(config->addNewBuffersAutomatically()) { bufferIds = Client::networkModel()->allBufferIds(); @@ -231,6 +249,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)