From e9bb37281e0304db32d7dc8bfb8d49e9eabf7503 Mon Sep 17 00:00:00 2001 From: Marcus Eggenberger Date: Wed, 11 Feb 2009 01:07:25 +0100 Subject: [PATCH] Fixes #481 - Sort buffer views alphabetically. Selecting sort alphabetically prohibits now reordering the buffer view. If you edit an existing buffer view in the settings page checking "sort alphabetically" will cause a resort. Unchecking doesn't "randomize" (or whatever) the view and leaves it in the sorted state, but you can now reorder it again. --- src/qtui/mainwin.cpp | 7 +++-- .../settingspages/bufferviewsettingspage.cpp | 27 ++++++++++--------- src/uisupport/bufferviewfilter.cpp | 5 +--- 3 files changed, 20 insertions(+), 19 deletions(-) diff --git a/src/qtui/mainwin.cpp b/src/qtui/mainwin.cpp index 2343b8a3..590126b9 100644 --- a/src/qtui/mainwin.cpp +++ b/src/qtui/mainwin.cpp @@ -326,6 +326,7 @@ void MainWin::addBufferView(ClientBufferViewConfig *config) { if(!config) return; + config->setLocked(QtUiSettings().value("LockLayout", false).toBool()); BufferViewDock *dock = new BufferViewDock(config, this); //create the view and initialize it's filter @@ -388,8 +389,10 @@ void MainWin::on_actionLockLayout_toggled(bool lock) { foreach(VerticalDock *dock, docks) { dock->showTitle(!lock); } - foreach(ClientBufferViewConfig *config, Client::bufferViewManager()->clientBufferViewConfigs()) { - config->setLocked(lock); + if(Client::bufferViewManager()) { + foreach(ClientBufferViewConfig *config, Client::bufferViewManager()->clientBufferViewConfigs()) { + config->setLocked(lock); + } } QtUiSettings().setValue("LockLayout", lock); } diff --git a/src/qtui/settingspages/bufferviewsettingspage.cpp b/src/qtui/settingspages/bufferviewsettingspage.cpp index e10386c3..4b41da4b 100644 --- a/src/qtui/settingspages/bufferviewsettingspage.cpp +++ b/src/qtui/settingspages/bufferviewsettingspage.cpp @@ -30,6 +30,7 @@ #include "buffermodel.h" #include "clientbufferviewmanager.h" #include "networkmodel.h" +#include "util.h" BufferViewSettingsPage::BufferViewSettingsPage(QWidget *parent) : SettingsPage(tr("General"), tr("Buffer Views"), parent), @@ -123,7 +124,7 @@ void BufferViewSettingsPage::load() { } _ignoreWidgetChanges = false; - + if(!useBufferViewHint || !selectBufferViewById(bufferViewHint)) ui.bufferViewList->setCurrentRow(0); } @@ -136,7 +137,7 @@ void BufferViewSettingsPage::save() { _useBufferViewHint = true; _bufferViewHint = currentConfig->bufferViewId(); } - + QVariantList newConfigs; QVariantList deleteConfigs; QVariantList changedConfigs; @@ -223,10 +224,13 @@ void BufferViewSettingsPage::newBufferView(const QString &bufferViewName) { config->setInitialized(); QList bufferIds; if(config->addNewBuffersAutomatically()) { - if(config->sortAlphabetically()) + if(config->sortAlphabetically()) { bufferIds = Client::networkModel()->allBufferIdsSorted(); - else + } else { bufferIds = Client::networkModel()->allBufferIds(); + qSort(bufferIds); + config->setProperty("OriginalBufferList", toVariantList(bufferIds)); + } } config->initSetBufferList(bufferIds); @@ -434,16 +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()) { - if(config->sortAlphabetically()) - bufferIds = Client::networkModel()->allBufferIdsSorted(); - else - bufferIds = Client::networkModel()->allBufferIds(); - } + 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() { @@ -491,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) diff --git a/src/uisupport/bufferviewfilter.cpp b/src/uisupport/bufferviewfilter.cpp index 51dfe15e..4ef0ec8c 100644 --- a/src/uisupport/bufferviewfilter.cpp +++ b/src/uisupport/bufferviewfilter.cpp @@ -363,10 +363,7 @@ bool BufferViewFilter::networkLessThan(const QModelIndex &source_left, const QMo NetworkId leftNetworkId = sourceModel()->data(source_left, NetworkModel::NetworkIdRole).value(); NetworkId rightNetworkId = sourceModel()->data(source_right, NetworkModel::NetworkIdRole).value(); - if(config() && config()->sortAlphabetically()) - return QSortFilterProxyModel::lessThan(source_left, source_right); - else - return leftNetworkId < rightNetworkId; + return QSortFilterProxyModel::lessThan(source_left, source_right); } QVariant BufferViewFilter::data(const QModelIndex &index, int role) const { -- 2.20.1