X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fsettingspages%2Fchatmonitorsettingspage.cpp;h=855c21837595771db5f1df330125f9b180fc6abd;hp=e3d4b56ac639f5505c4bd2e179c64ed08ba4b350;hb=dcac65fc4beeb1167de8ebec5cc54608fc314fd3;hpb=63a5dd030855c90797fc92db00ec8adf538620f6 diff --git a/src/qtui/settingspages/chatmonitorsettingspage.cpp b/src/qtui/settingspages/chatmonitorsettingspage.cpp index e3d4b56a..855c2183 100644 --- a/src/qtui/settingspages/chatmonitorsettingspage.cpp +++ b/src/qtui/settingspages/chatmonitorsettingspage.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 * @@ -32,7 +32,7 @@ #include ChatMonitorSettingsPage::ChatMonitorSettingsPage(QWidget *parent) - : SettingsPage(tr("General"), tr("Chat Monitor"), parent) { + : SettingsPage(tr("Appearance"), tr("Chat Monitor"), parent) { ui.setupUi(this); ui.activateBuffer->setIcon(SmallIcon("go-next")); @@ -41,7 +41,8 @@ ChatMonitorSettingsPage::ChatMonitorSettingsPage(QWidget *parent) // setup available buffers config (for the bufferview on the left) _configAvailable = new BufferViewConfig(-667, this); _configAvailable->setBufferViewName("tmpChatMonitorAvailableBuffers"); - _configAvailable->sortAlphabetically(); + _configAvailable->setSortAlphabetically(true); + _configAvailable->setDisableDecoration(true); _configAvailable->setNetworkId(NetworkId()); _configAvailable->setInitialized(); @@ -49,6 +50,7 @@ ChatMonitorSettingsPage::ChatMonitorSettingsPage(QWidget *parent) _configActive = new BufferViewConfig(-666, this); _configActive->setBufferViewName("tmpChatMonitorActiveBuffers"); _configActive->setSortAlphabetically(true); + _configActive->setDisableDecoration(true); _configActive->setNetworkId(NetworkId()); _configActive->setInitialized(); @@ -57,7 +59,9 @@ ChatMonitorSettingsPage::ChatMonitorSettingsPage(QWidget *parent) ui.operationMode->addItem(tr("Opt Out"), ChatViewSettings::OptOut); // connect slots - connect(ui.operationMode, SIGNAL(currentIndexChanged(int)), this, SLOT(switchOperationMode(int))); + connect(ui.operationMode, SIGNAL(currentIndexChanged(int)), SLOT(switchOperationMode(int))); + connect(ui.showHighlights, SIGNAL(toggled(bool)), SLOT(widgetHasChanged())); + connect(ui.showOwnMessages, SIGNAL(toggled(bool)), SLOT(widgetHasChanged())); } bool ChatMonitorSettingsPage::hasDefaults() const { @@ -67,6 +71,7 @@ bool ChatMonitorSettingsPage::hasDefaults() const { void ChatMonitorSettingsPage::defaults() { settings["OperationMode"] = ChatViewSettings::OptOut; settings["ShowHighlights"] = false; + settings["ShowOwnMsgs"] = false; settings["Buffers"] = QVariant(); settings["Default"] = true; load(); @@ -79,8 +84,10 @@ void ChatMonitorSettingsPage::load() { else loadSettings(); + switchOperationMode(settings["OperationMode"].toInt() - 1); ui.operationMode->setCurrentIndex(settings["OperationMode"].toInt() - 1); ui.showHighlights->setChecked(settings["ShowHighlights"].toBool()); + ui.showOwnMessages->setChecked(settings["ShowOwnMsgs"].toBool()); // get all available buffer Ids QList allBufferIds = Client::networkModel()->allBufferIds(); @@ -92,10 +99,12 @@ void ChatMonitorSettingsPage::load() { bufferIdsFromConfig << v.value(); allBufferIds.removeAll(v.value()); } + Client::networkModel()->sortBufferIds(bufferIdsFromConfig); _configActive->initSetBufferList(bufferIdsFromConfig); } ui.activeBuffers->setFilteredModel(Client::bufferModel(), _configActive); + Client::networkModel()->sortBufferIds(allBufferIds); _configAvailable->initSetBufferList(allBufferIds); ui.availableBuffers->setFilteredModel(Client::bufferModel(), _configAvailable); @@ -104,22 +113,19 @@ void ChatMonitorSettingsPage::load() { void ChatMonitorSettingsPage::loadSettings() { ChatViewSettings chatViewSettings("ChatMonitor"); - settings["OperationMode"] = static_cast(chatViewSettings.value("OperationMode", QVariant()).toInt()); + settings["OperationMode"] = (ChatViewSettings::OperationMode)chatViewSettings.value("OperationMode", ChatViewSettings::OptOut).toInt(); - // Load default behavior if no or invalid settings found - if(settings["OperationMode"] == ChatViewSettings::InvalidMode) { - switchOperationMode(ui.operationMode->findData(ChatViewSettings::OptOut)); - settings["OperationMode"] == ChatViewSettings::OptOut; - } settings["ShowHighlights"] = chatViewSettings.value("ShowHighlights", false); + settings["ShowOwnMsgs"] = chatViewSettings.value("ShowOwnMsgs", false); settings["Buffers"] = chatViewSettings.value("Buffers", QVariantList()); } void ChatMonitorSettingsPage::save() { ChatViewSettings chatViewSettings("ChatMonitor"); // save operation mode - chatViewSettings.setValue("OperationMode", settings["OperationMode"]); - chatViewSettings.setValue("ShowHighlights", settings["ShowHighlights"]); + chatViewSettings.setValue("OperationMode", ui.operationMode->currentIndex() + 1); + chatViewSettings.setValue("ShowHighlights", ui.showHighlights->isChecked()); + chatViewSettings.setValue("ShowOwnMsgs", ui.showOwnMessages->isChecked()); // save list of active buffers QVariantList saveableBufferIdList; @@ -138,7 +144,23 @@ void ChatMonitorSettingsPage::widgetHasChanged() { } bool ChatMonitorSettingsPage::testHasChanged() { - if (_configAvailable != _configActive) return true; + if(settings["OperationMode"].toInt() != ui.operationMode->currentIndex() + 1) + return true; + if(settings["ShowHighlights"].toBool() != ui.showHighlights->isChecked()) + return true; + if(settings["ShowOwnMsgs"].toBool() != ui.showOwnMessages->isChecked()) + return true; + + if(_configActive->bufferList().count() != settings["Buffers"].toList().count()) + return true; + + QSet uiBufs = _configActive->bufferList().toSet(); + QSet settingsBufs; + foreach(QVariant v, settings["Buffers"].toList()) + settingsBufs << v.value(); + if(uiBufs != settingsBufs) + return true; + return false; } @@ -204,28 +226,17 @@ void ChatMonitorSettingsPage::on_deactivateBuffer_clicked() { } } -void ChatMonitorSettingsPage::on_showHighlights_toggled(bool state) -{ - settings["ShowHighlights"] = state; - widgetHasChanged(); -} - /* switchOperationMode gets called on combobox signal currentIndexChanged. modeIndex is the row id in combobox itemlist */ -void ChatMonitorSettingsPage::switchOperationMode(int modeIndex) { - ChatViewSettings::OperationMode newMode = static_cast(ui.operationMode->itemData(modeIndex).toInt()); - - if(newMode == ChatViewSettings::OptIn) { +void ChatMonitorSettingsPage::switchOperationMode(int idx) { + ChatViewSettings::OperationMode mode = (ChatViewSettings::OperationMode)(idx + 1); + if(mode == ChatViewSettings::OptIn) { ui.labelActiveBuffers->setText(tr("Show:")); } - else if(newMode == ChatViewSettings::OptOut) { + else if(mode == ChatViewSettings::OptOut) { ui.labelActiveBuffers->setText(tr("Ignore:")); } - - if(settings["OperationMode"] != newMode) { - setChangedState(true); - } - settings["OperationMode"] = newMode; + widgetHasChanged(); }