[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