[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    branches/work/kdelirc
From:       Michael Zanetti <michael_zanetti () gmx ! net>
Date:       2010-03-03 20:20:00
Message-ID: 1267647600.329172.21203.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 1098505 by mzanetti:

update kcm on backend changes


 M  +0 -1      TODO  
 M  +44 -12    kcmremotecontrol/kcmremotecontrol.cpp  
 M  +1 -0      kcmremotecontrol/kcmremotecontrol.h  
 M  +2 -2      libkremotecontrol/remotelist.cpp  


--- branches/work/kdelirc/TODO #1098504:1098505
@@ -2,7 +2,6 @@
 -------------------------------
 * update docs (mzanetti)
 * rework nofications from Kded (mzanetti + frasche)
-* test/fix behaviour on newly attached or removed remotes during runtime (mzanetti)
 * rework icons
 * knewstuff
 * more unit tests (can also be done after moving back to kdeutils)
--- branches/work/kdelirc/kcmremotecontrol/kcmremotecontrol.cpp #1098504:1098505
@@ -37,6 +37,7 @@
 #include <kgenericfactory.h>
 #include <kaboutdata.h>
 #include <kmessagebox.h>
+#include <solid/control/remotecontrolmanager.h>
 
 #include <QDBusInterface>
 
@@ -115,6 +116,9 @@
     
     // connect ShowTrayIcon checkbox
     connect(ui.cbTrayIcon, SIGNAL(clicked(bool)), SLOT(changed()));
+    
+    connect(Solid::Control::RemoteControlManager::notifier(), \
SIGNAL(statusChanged(bool)), SLOT(addUnconfiguredRemotes())); +    \
connect(Solid::Control::RemoteControlManager::notifier(), \
SIGNAL(remoteControlAdded(const QString &)), SLOT(addUnconfiguredRemotes()));  }
 
 KCMRemoteControl::~KCMRemoteControl() {
@@ -234,9 +238,25 @@
     Remote *remote = m_remoteModel->remote(currentIndex);
     Mode *mode = m_remoteModel->mode(currentIndex);
     if(remote && remote->allModes().contains(mode)){
-        remote->removeMode(mode);
-        updateModes();
-        ui.tvRemotes->selectionModel()->setCurrentIndex(m_remoteModel->find(remote->masterMode()), \
QItemSelectionModel::Rows | QItemSelectionModel::SelectCurrent); +        // If the \
master mode is selected the we should remove the whole remote +        if(mode == \
remote->masterMode()){ +            if(KMessageBox::questionYesNo(this, i18n("Are you \
sure you want to remove this remote and all of its modes and actions?"), i18n("Remove \
remote")) == KMessageBox::Yes) { +                m_remoteList.removeAll(remote);
+                m_remoteModel->clear(); // Clear the model before deleting the \
remote!!! +                delete remote;
+                addUnconfiguredRemotes(); // Just in case we removed a physically \
available remote (shouldn't happen). This also refreshes the modeModel +            } \
else { +                return; // User cancelled
+            }
+        } else {
+            if((mode->actions().count() > 0) &&
+                (KMessageBox::questionYesNo(this, i18n("Are you sure you want to \
remove this mode and all contained actions?"), i18n("Remove mode")) != \
KMessageBox::Yes)) { +                return; // User cancelled
+            }
+            remote->removeMode(mode);
+            updateModes();
+            ui.tvRemotes->selectionModel()->setCurrentIndex(m_remoteModel->find(remote->masterMode()), \
QItemSelectionModel::Rows | QItemSelectionModel::SelectCurrent); +        }
         emit changed(true);
     }
 }
@@ -285,17 +305,26 @@
         ui.pbEditMode->setEnabled(true);
         ui.pbAddAction->setEnabled(true);
         ui.pbAutoPopulate->setEnabled(true);
+        
+        // Only enable the remove mode button if a non-Master mode is selected,
+        // or if the Remote is not available in Solid
+        if((m_remoteModel->mode(index) != \
m_remoteModel->remote(index)->masterMode()) +            || \
(!m_remoteModel->remote(index)->isAvailable()) ){ +            \
ui.pbRemoveMode->setEnabled(true);                 +        } else {
+            ui.pbRemoveMode->setEnabled(false);
+        }
+        
     } else {
         ui.pbAddMode->setEnabled(false);
         ui.pbEditMode->setEnabled(false);
         ui.pbAddAction->setEnabled(false);
         ui.pbAutoPopulate->setEnabled(false);
+        ui.pbRemoveMode->setEnabled(false);
     }
     
     if(index.isValid() && index.parent().isValid()){
-        ui.pbRemoveMode->setEnabled(true);
     } else {
-        ui.pbRemoveMode->setEnabled(false);
     }
     
     Mode *mode = m_remoteModel->mode(index);
@@ -347,10 +376,7 @@
     }
 }
 
-
-void KCMRemoteControl::load() {
-    m_remoteList.loadFromConfig("kremotecontrolrc");
-
+void KCMRemoteControl::addUnconfiguredRemotes() {
     // Check if there are Remotes available in Solid but not yet in m_remoteList
     foreach(const QString &remoteName, \
Solid::Control::RemoteControl::allRemoteNames()){  \
if(!m_remoteList.contains(remoteName)){ @@ -358,9 +384,15 @@
             m_remoteList.append(remote);
         }
     }
-
     updateModes();
+}
 
+
+void KCMRemoteControl::load() {
+    m_remoteList.loadFromConfig("kremotecontrolrc");
+
+    addUnconfiguredRemotes();
+
     // Check if the daemon module is running
     if(!m_remoteList.isEmpty()){ // No need to run the daemon if we have no remote \
controls  kDebug() << "remotes found... checking for kded module";
@@ -384,11 +416,11 @@
     KConfig config("kremotecontrolrc");
     KConfigGroup globalGroup = KConfigGroup(&config, "Global");
     globalGroup.writeEntry("ShowTrayIcon", ui.cbTrayIcon->isChecked());
-    globalGroup.sync();
+    globalGroup.sync(); // Sync the config before requesting the daemon to update.
 
     DBusInterface::getInstance()->reloadRemoteControlDaemon();
     
-    // If there are no remotes configured it makes no sense to have de daemon \
running. stop it +    // If there are no remotes configured it makes no sense to have \
the daemon running. stop it  if(m_remoteList.isEmpty()){
         if(DBusInterface::getInstance()->isKdedModuleRunning()){
             DBusInterface::getInstance()->unloadKdedModule();
--- branches/work/kdelirc/kcmremotecontrol/kcmremotecontrol.h #1098504:1098505
@@ -70,6 +70,7 @@
     void updateActions(Mode *mode);
     void modeSelectionChanged(const QModelIndex &index);
     void actionSelectionChanged(const QModelIndex &index);
+    void addUnconfiguredRemotes();
 
     void autoPopulate();
     void actionDropped(Mode *mode);
--- branches/work/kdelirc/libkremotecontrol/remotelist.cpp #1098504:1098505
@@ -41,10 +41,10 @@
 // Save everything to config File in the format [Remote][modeIndex][actionIndex]
 void RemoteList::saveToConfig(const QString& configName) {
     KConfig config(configName);
+    // Clear out all old remotes settings. We will sync the whole tree to disk now
+    config.deleteGroup("Remotes");
     KConfigGroup remotesGroup(&config, "Remotes");
     for(QList<Remote*>::const_iterator remoteIterator = constBegin(); remoteIterator \
                != constEnd(); ++remoteIterator){
-        // Clear out old entries for this remote
-        remotesGroup.deleteGroup((*remoteIterator)->name());
         KConfigGroup remoteGroup(&remotesGroup, (*remoteIterator)->name());
         // Save Remote properties here
         remoteGroup.writeEntry("DefaultMode", \
(*remoteIterator)->defaultMode()->name());


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic