X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fqtui%2Fsettingspages%2Fbufferviewsettingspage.cpp;h=40f636be33ddf2250a9c1d0e2b2b28cbed83305a;hb=ddfe7ae76a3fa975aff475e6dc34898d2341ae38;hp=5282f7c446c7fe01e2c28734d0fd3e5b67611bf2;hpb=2bd85f1d7a8330fdc4f5dedacdcea8006f971935;p=quassel.git diff --git a/src/qtui/settingspages/bufferviewsettingspage.cpp b/src/qtui/settingspages/bufferviewsettingspage.cpp index 5282f7c4..40f636be 100644 --- a/src/qtui/settingspages/bufferviewsettingspage.cpp +++ b/src/qtui/settingspages/bufferviewsettingspage.cpp @@ -23,6 +23,7 @@ #include #include "client.h" +#include "iconloader.h" #include "network.h" #include "bufferviewconfig.h" #include "bufferviewfilter.h" @@ -32,9 +33,15 @@ 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")); + ui.addBufferView->setIcon(SmallIcon("list-add")); + ui.deleteBufferView->setIcon(SmallIcon("edit-delete")); + reset(); ui.bufferViewList->setSortingEnabled(true); @@ -81,11 +88,16 @@ void BufferViewSettingsPage::reset() { } _deleteBufferViews.clear(); - + + bool _useBufferViewHint; + int _bufferViewHint; + setChangedState(false); } void BufferViewSettingsPage::load() { + bool useBufferViewHint = _useBufferViewHint; + int bufferViewHint = _bufferViewHint; reset(); if(!Client::bufferViewManager()) @@ -108,12 +120,21 @@ void BufferViewSettingsPage::load() { ui.networkSelector->setItemData(ui.networkSelector->count() - 1, qVariantFromValue(net->networkId())); } _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; @@ -125,7 +146,7 @@ void BufferViewSettingsPage::save() { if(Client::bufferViewManager()) { Client::bufferViewManager()->requestDeleteBufferViews(deleteConfigs); } - + QHash::iterator changedConfigIter = _changedBufferViews.begin(); QHash::iterator changedConfigIterEnd = _changedBufferViews.end(); BufferViewConfig *config, *changedConfig; @@ -171,8 +192,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() { @@ -193,12 +217,10 @@ 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()) { - foreach(BufferInfo bufferInfo, Client::allBufferInfos()) { - bufferIds << bufferInfo.bufferId(); - } + bufferIds = Client::networkModel()->allBufferIds(); if(config->sortAlphabetically()) qSort(bufferIds.begin(), bufferIds.end(), bufferIdLessThan); } @@ -208,7 +230,7 @@ void BufferViewSettingsPage::newBufferView(const QString &bufferViewName) { addBufferView(config); ui.bufferViewList->setCurrentRow(listPos(config)); } - + int BufferViewSettingsPage::listPos(BufferViewConfig *config) { QObject *obj; for(int i = 0; i < ui.bufferViewList->count(); i++) { @@ -228,6 +250,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) @@ -246,7 +280,7 @@ void BufferViewSettingsPage::updateBufferView() { void BufferViewSettingsPage::on_addBufferView_clicked() { if(!Client::bufferViewManager()) return; - + QStringList existing; foreach(BufferViewConfig *bufferConfig, Client::bufferViewManager()->bufferViewConfigs()) { existing << bufferConfig->bufferViewName(); @@ -265,7 +299,7 @@ void BufferViewSettingsPage::on_renameBufferView_clicked() { if(!Client::bufferViewManager()) return; - + BufferViewConfig *config = bufferView(ui.bufferViewList->currentRow()); if(!config) return; @@ -321,7 +355,7 @@ void BufferViewSettingsPage::bufferViewSelectionChanged(const QItemSelection &cu void BufferViewSettingsPage::loadConfig(BufferViewConfig *config) { if(!config) return; - + _ignoreWidgetChanges = true; ui.onlyStatusBuffers->setChecked(BufferInfo::StatusBuffer & config->allowedBufferTypes()); ui.onlyChannelBuffers->setChecked(BufferInfo::ChannelBuffer & config->allowedBufferTypes()); @@ -348,14 +382,14 @@ void BufferViewSettingsPage::loadConfig(BufferViewConfig *config) { ui.minimumActivitySelector->setCurrentIndex(activityIndex); ui.bufferViewPreview->setFilteredModel(Client::bufferModel(), config); - + _ignoreWidgetChanges = false; } void BufferViewSettingsPage::saveConfig(BufferViewConfig *config) { if(!config) return; - + int allowedBufferTypes = 0; if(ui.onlyStatusBuffers->isChecked()) allowedBufferTypes |= BufferInfo::StatusBuffer; @@ -378,9 +412,7 @@ void BufferViewSettingsPage::saveConfig(BufferViewConfig *config) { if(_newBufferViews.contains(config)) { QList bufferIds; if(config->addNewBuffersAutomatically()) { - foreach(BufferInfo bufferInfo, Client::allBufferInfos()) { - bufferIds << bufferInfo.bufferId(); - } + bufferIds = Client::networkModel()->allBufferIds(); if(config->sortAlphabetically()) qSort(bufferIds.begin(), bufferIds.end(), bufferIdLessThan); } @@ -418,7 +450,7 @@ bool BufferViewSettingsPage::testHasChanged() { BufferViewConfig *BufferViewSettingsPage::cloneConfig(BufferViewConfig *config) { if(!config || config->bufferViewId() < 0) return config; - + if(_changedBufferViews.contains(config)) return _changedBufferViews[config];