X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fsettingspages%2Fbufferviewsettingspage.cpp;h=c23e6af7722fa892d7849b6384c55443f8975dc7;hp=f8133de77851bd9667513ff98675a45717251842;hb=dcac65fc4beeb1167de8ebec5cc54608fc314fd3;hpb=75d7f7d582826603236394a37f43feb4cd725bb0 diff --git a/src/qtui/settingspages/bufferviewsettingspage.cpp b/src/qtui/settingspages/bufferviewsettingspage.cpp index f8133de7..c23e6af7 100644 --- a/src/qtui/settingspages/bufferviewsettingspage.cpp +++ b/src/qtui/settingspages/bufferviewsettingspage.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-08 by the Quassel IRC Team * + * Copyright (C) 2005-09 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -27,12 +27,13 @@ #include "network.h" #include "bufferviewconfig.h" #include "bufferviewfilter.h" -#include "bufferviewmanager.h" #include "buffermodel.h" +#include "clientbufferviewmanager.h" #include "networkmodel.h" +#include "util.h" BufferViewSettingsPage::BufferViewSettingsPage(QWidget *parent) - : SettingsPage(tr("General"), tr("Buffer Views"), parent), + : SettingsPage(tr("Appearance"), tr("Buffer Views"), parent), _ignoreWidgetChanges(false), _useBufferViewHint(false), _bufferViewHint(0) @@ -61,6 +62,8 @@ BufferViewSettingsPage::BufferViewSettingsPage(QWidget *parent) connect(ui.hideInactiveBuffers, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged())); connect(ui.networkSelector, SIGNAL(currentIndexChanged(int)), this, SLOT(widgetHasChanged())); connect(ui.minimumActivitySelector, SIGNAL(currentIndexChanged(int)), this, SLOT(widgetHasChanged())); + + connect(ui.networkSelector, SIGNAL(currentIndexChanged(int)), this, SLOT(enableStatusBuffers(int))); } BufferViewSettingsPage::~BufferViewSettingsPage() { @@ -121,7 +124,7 @@ void BufferViewSettingsPage::load() { } _ignoreWidgetChanges = false; - + if(!useBufferViewHint || !selectBufferViewById(bufferViewHint)) ui.bufferViewList->setCurrentRow(0); } @@ -134,7 +137,7 @@ void BufferViewSettingsPage::save() { _useBufferViewHint = true; _bufferViewHint = currentConfig->bufferViewId(); } - + QVariantList newConfigs; QVariantList deleteConfigs; QVariantList changedConfigs; @@ -221,9 +224,13 @@ void BufferViewSettingsPage::newBufferView(const QString &bufferViewName) { config->setInitialized(); QList bufferIds; if(config->addNewBuffersAutomatically()) { - bufferIds = Client::networkModel()->allBufferIds(); - if(config->sortAlphabetically()) - qSort(bufferIds.begin(), bufferIds.end(), bufferIdLessThan); + if(config->sortAlphabetically()) { + bufferIds = Client::networkModel()->allBufferIdsSorted(); + } else { + bufferIds = Client::networkModel()->allBufferIds(); + qSort(bufferIds); + config->setProperty("OriginalBufferList", toVariantList(bufferIds)); + } } config->initSetBufferList(bufferIds); @@ -278,6 +285,12 @@ void BufferViewSettingsPage::updateBufferView() { loadConfig(config); } +void BufferViewSettingsPage::enableStatusBuffers(int networkIdx) { + // we don't show a status buffer if we show multiple networks as selecting + // the network is the same as selecting the status buffer. + ui.onlyStatusBuffers->setEnabled(networkIdx != 0); +} + void BufferViewSettingsPage::on_addBufferView_clicked() { if(!Client::bufferViewManager()) return; @@ -341,10 +354,11 @@ void BufferViewSettingsPage::on_deleteBufferView_clicked() { QList::iterator iter = _newBufferViews.begin(); while(iter != _newBufferViews.end()) { if(*iter == config) { - _newBufferViews.erase(iter); + iter = _newBufferViews.erase(iter); break; + } else { + iter++; } - iter++; } delete config; if(_deleteBufferViews.isEmpty() && _changedBufferViews.isEmpty() && _newBufferViews.isEmpty()) @@ -424,15 +438,12 @@ void BufferViewSettingsPage::saveConfig(BufferViewConfig *config) { minimumActivity = 1 << (ui.minimumActivitySelector->currentIndex() - 1); config->setMinimumActivity(minimumActivity); - if(_newBufferViews.contains(config)) { - QList bufferIds; - if(config->addNewBuffersAutomatically()) { - bufferIds = Client::networkModel()->allBufferIds(); - if(config->sortAlphabetically()) - qSort(bufferIds.begin(), bufferIds.end(), bufferIdLessThan); - } + QList bufferIds = fromVariantList(config->property("OriginalBufferList").toList()); + if(config->sortAlphabetically()) + Client::networkModel()->sortBufferIds(bufferIds); + + if(!_newBufferViews.contains(config) || config->addNewBuffersAutomatically()) config->initSetBufferList(bufferIds); - } } void BufferViewSettingsPage::widgetHasChanged() { @@ -453,7 +464,7 @@ bool BufferViewSettingsPage::testHasChanged() { while(iter != iterEnd) { if(&(iter.key()) == &(iter.value())) { iter.value()->deleteLater(); - _changedBufferViews.erase(iter); + iter = _changedBufferViews.erase(iter); } else { changed = true; iter++; @@ -480,6 +491,7 @@ BufferViewConfig *BufferViewSettingsPage::cloneConfig(BufferViewConfig *config) connect(config, SIGNAL(moveBufferRequested(const BufferId &, int)), changedConfig, SLOT(moveBuffer(const BufferId &, int))); connect(config, SIGNAL(removeBufferRequested(const BufferId &)), changedConfig, SLOT(removeBuffer(const BufferId &))); + changedConfig->setProperty("OriginalBufferList", toVariantList(config->bufferList())); // if this is the currently displayed view we have to change the config of the preview filter BufferViewFilter *filter = qobject_cast(ui.bufferViewPreview->model()); if(filter && filter->config() == config)