Fix changed state detection in CoreAccountSettingsPage
authorManuel Nickschas <sputnick@quassel-irc.org>
Sun, 29 Nov 2009 01:41:09 +0000 (02:41 +0100)
committerManuel Nickschas <sputnick@quassel-irc.org>
Sun, 29 Nov 2009 01:41:09 +0000 (02:41 +0100)
src/qtui/settingspages/coreaccountsettingspage.cpp
src/qtui/settingspages/coreaccountsettingspage.h
src/qtui/settingspages/coreaccountsettingspage.ui

index 40f0f5e..3dbb299 100644 (file)
@@ -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(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();
 }
 
   setWidgetStates();
 }
 
@@ -74,6 +75,7 @@ void CoreAccountSettingsPage::load() {
 
   QModelIndex idx = filteredModel()->mapFromSource(model()->accountIndex(s.autoConnectAccount()));
   ui.autoConnectAccount->setCurrentIndex(idx.isValid() ? idx.row() : 0);
 
   QModelIndex idx = filteredModel()->mapFromSource(model()->accountIndex(s.autoConnectAccount()));
   ui.autoConnectAccount->setCurrentIndex(idx.isValid() ? idx.row() : 0);
+  ui.autoConnectAccount->setProperty("storedValue", ui.autoConnectAccount->currentIndex());
   setWidgetStates();
 }
 
   setWidgetStates();
 }
 
@@ -82,27 +84,9 @@ void CoreAccountSettingsPage::save() {
   Client::coreAccountModel()->update(model());
   Client::coreAccountModel()->save();
   CoreAccountSettings s;
   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<AccountId>();
-    s.setAutoConnectAccount(id);
-    return;
-  }
-  SettingsPage::saveAutoWidgetValue(widgetName, v);
+  AccountId id = filteredModel()->index(ui.autoConnectAccount->currentIndex(), 0).data(CoreAccountModel::AccountIdRole).value<AccountId>();
+  s.setAutoConnectAccount(id);
+  ui.autoConnectAccount->setProperty("storedValue", ui.autoConnectAccount->currentIndex());
 }
 
 // TODO: Qt 4.6 - replace by proper rowsMoved() semantics
 }
 
 // TODO: Qt 4.6 - replace by proper rowsMoved() semantics
@@ -210,6 +194,8 @@ void CoreAccountSettingsPage::widgetHasChanged() {
 }
 
 bool CoreAccountSettingsPage::testHasChanged() {
 }
 
 bool CoreAccountSettingsPage::testHasChanged() {
+  if(ui.autoConnectAccount->currentIndex() != ui.autoConnectAccount->property("storedValue").toInt())
+    return true;
   if(!(*model() == *Client::coreAccountModel()))
     return true;
 
   if(!(*model() == *Client::coreAccountModel()))
     return true;
 
index d74f967..f28e01f 100644 (file)
@@ -61,6 +61,7 @@ signals:
     void on_accountView_doubleClicked(const QModelIndex &index);
 
     void setWidgetStates();
     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);
 
     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;
 
     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 editAccount(const QModelIndex &);
 
-    void widgetHasChanged();
     bool testHasChanged();
 
     inline QString settingsKey() const { return QString("CoreAccounts"); }
     bool testHasChanged();
 
     inline QString settingsKey() const { return QString("CoreAccounts"); }
index 94d45c0..dbc28ee 100644 (file)
             <property name="enabled">
              <bool>false</bool>
             </property>
             <property name="enabled">
              <bool>false</bool>
             </property>
-            <property name="settingsKey" stdset="0">
-             <string notr="true"/>
-            </property>
-            <property name="defaultValue" stdset="0">
-             <number>0</number>
-            </property>
            </widget>
           </item>
           <item>
            </widget>
           </item>
           <item>