From: Manuel Nickschas Date: Sun, 29 Nov 2009 01:41:09 +0000 (+0100) Subject: Fix changed state detection in CoreAccountSettingsPage X-Git-Tag: 0.6-beta1~144 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=5f4f134e79286b24c4c1b906ad9897ff6ec32f82;ds=sidebyside Fix changed state detection in CoreAccountSettingsPage --- diff --git a/src/qtui/settingspages/coreaccountsettingspage.cpp b/src/qtui/settingspages/coreaccountsettingspage.cpp index 40f0f5e5..3dbb2996 100644 --- a/src/qtui/settingspages/coreaccountsettingspage.cpp +++ b/src/qtui/settingspages/coreaccountsettingspage.cpp @@ -47,6 +47,7 @@ _standalone(false) connect(filteredModel(), SIGNAL(rowsInserted(QModelIndex, int, int)), SLOT(rowsInserted(QModelIndex, int, int))); connect(ui.accountView->selectionModel(), SIGNAL(selectionChanged(QItemSelection, QItemSelection)), SLOT(setWidgetStates())); + connect(ui.autoConnectAccount, SIGNAL(currentIndexChanged(int)), SLOT(widgetHasChanged())); setWidgetStates(); } @@ -74,6 +75,7 @@ void CoreAccountSettingsPage::load() { QModelIndex idx = filteredModel()->mapFromSource(model()->accountIndex(s.autoConnectAccount())); ui.autoConnectAccount->setCurrentIndex(idx.isValid() ? idx.row() : 0); + ui.autoConnectAccount->setProperty("storedValue", ui.autoConnectAccount->currentIndex()); setWidgetStates(); } @@ -82,27 +84,9 @@ void CoreAccountSettingsPage::save() { Client::coreAccountModel()->update(model()); Client::coreAccountModel()->save(); CoreAccountSettings s; -} - -QVariant CoreAccountSettingsPage::loadAutoWidgetValue(const QString &widgetName) { - if(widgetName == "autoConnectAccount") { - CoreAccountSettings s; - AccountId id = s.autoConnectAccount(); - if(!id.isValid()) - return QVariant(); - return id.toInt(); - } - return SettingsPage::loadAutoWidgetValue(widgetName); -} - -void CoreAccountSettingsPage::saveAutoWidgetValue(const QString &widgetName, const QVariant &v) { - CoreAccountSettings s; - if(widgetName == "autoConnectAccount") { - AccountId id = filteredModel()->index(ui.autoConnectAccount->currentIndex(), 0).data(CoreAccountModel::AccountIdRole).value(); - s.setAutoConnectAccount(id); - return; - } - SettingsPage::saveAutoWidgetValue(widgetName, v); + AccountId id = filteredModel()->index(ui.autoConnectAccount->currentIndex(), 0).data(CoreAccountModel::AccountIdRole).value(); + s.setAutoConnectAccount(id); + ui.autoConnectAccount->setProperty("storedValue", ui.autoConnectAccount->currentIndex()); } // TODO: Qt 4.6 - replace by proper rowsMoved() semantics @@ -210,6 +194,8 @@ void CoreAccountSettingsPage::widgetHasChanged() { } bool CoreAccountSettingsPage::testHasChanged() { + if(ui.autoConnectAccount->currentIndex() != ui.autoConnectAccount->property("storedValue").toInt()) + return true; if(!(*model() == *Client::coreAccountModel())) return true; diff --git a/src/qtui/settingspages/coreaccountsettingspage.h b/src/qtui/settingspages/coreaccountsettingspage.h index d74f967e..f28e01f0 100644 --- a/src/qtui/settingspages/coreaccountsettingspage.h +++ b/src/qtui/settingspages/coreaccountsettingspage.h @@ -61,6 +61,7 @@ signals: void on_accountView_doubleClicked(const QModelIndex &index); void setWidgetStates(); + void widgetHasChanged(); void rowsAboutToBeRemoved(const QModelIndex &index, int start, int end); void rowsInserted(const QModelIndex &index, int start, int end); @@ -76,12 +77,8 @@ signals: AccountId _lastAccountId, _lastAutoConnectId; bool _standalone; - virtual QVariant loadAutoWidgetValue(const QString &widgetName); - virtual void saveAutoWidgetValue(const QString &widgetName, const QVariant &value); - void editAccount(const QModelIndex &); - void widgetHasChanged(); bool testHasChanged(); inline QString settingsKey() const { return QString("CoreAccounts"); } diff --git a/src/qtui/settingspages/coreaccountsettingspage.ui b/src/qtui/settingspages/coreaccountsettingspage.ui index 94d45c06..dbc28ee9 100644 --- a/src/qtui/settingspages/coreaccountsettingspage.ui +++ b/src/qtui/settingspages/coreaccountsettingspage.ui @@ -160,12 +160,6 @@ false - - - - - 0 -