rendered paste bodydiff -ru kdebase-workspace-4.5.90_old//plasma/generic/applets/devicenotifier/devicenotifier.cpp kdebase-workspace-4.5.90_new//plasma/generic/applets/devicenotifier/devicenotifier.cpp--- kdebase-workspace-4.5.90_old//plasma/generic/applets/devicenotifier/devicenotifier.cpp 2010-12-22 10:55:28.000000000 +0100+++ kdebase-workspace-4.5.90_new//plasma/generic/applets/devicenotifier/devicenotifier.cpp 2011-01-04 00:48:46.384550301 +0100@@ -22,6 +22,8 @@ #include "devicenotifier.h" //Qt+#include <QtDBus/QDBusInterface>+#include <QtDBus/QDBusReply> #include <QGraphicsSceneContextMenuEvent> //KDE@@ -74,6 +76,19 @@ QString lastActionLabel; QStringList currentActions = m_dialog->deviceActions(udi); QStringList newActions = data["predicateFiles"].toStringList();+ QStringList autorunActions = data["autorunPredicateFiles"].toStringList();++ foreach (const QString &action, currentActions) {+ if (!autorunActions.contains(action)) {+ autorunActions.remove(action);+ }+ }+ if (!autorunActions.isEmpty()) {+ kDebug() << "DeviceNotifier:: call Solid Ui Server with params :" << udi << "," << autorunActions;+ QDBusInterface soliduiserver("org.kde.kded", "/modules/soliduiserver", "org.kde.SolidUiServer");+ QDBusReply<void> reply = soliduiserver.call("showActionsDialog", udi, autorunActions);+ return;+ } foreach (const QString &desktop, newActions) { QString filePath = KStandardDirs::locate("data", "solid/actions/" + desktop);diff -ru kdebase-workspace-4.5.90_old//plasma/generic/dataengines/hotplug/hotplugengine.cpp kdebase-workspace-4.5.90_new//plasma/generic/dataengines/hotplug/hotplugengine.cpp--- kdebase-workspace-4.5.90_old//plasma/generic/dataengines/hotplug/hotplugengine.cpp 2010-11-11 15:40:56.000000000 +0100+++ kdebase-workspace-4.5.90_new//plasma/generic/dataengines/hotplug/hotplugengine.cpp 2011-01-04 00:52:26.222727592 +0100@@ -99,12 +99,15 @@ void HotplugEngine::findPredicates() { m_predicates.clear();+ m_autorun.clear(); foreach (const QString &path, KGlobal::dirs()->findAllResources("data", "solid/actions/")) { KDesktopFile cfg(path); const QString string_predicate = cfg.desktopGroup().readEntry("X-KDE-Solid-Predicate");+ const QString string_autorun = cfg.desktopGroup().readEntry("X-KDE-Solid-Autorun"); //kDebug() << path << string_predicate; m_predicates.insert(KUrl(path).fileName(), Solid::Predicate::fromString(string_predicate));+ m_autorun.insert(KUrl(path).fileName(), Solid::Predicate::fromString(string_autorun)); } if (m_predicates.isEmpty()) {@@ -125,10 +128,12 @@ QString udi(it.key()); QStringList predicates = predicatesForDevice(device);+ QStringList autorunPredicates = autorunPredicatesForDevice(device); if (!predicates.isEmpty()) { if (sources().contains(udi)) { Plasma::DataEngine::Data data; data.insert("predicateFiles", predicates);+ data.insert("autorunPredicateFiles", autorunPredicates); setData(udi, data); } else {@@ -158,6 +163,23 @@ return interestingDesktopFiles; } +QStringList HotplugEngine::autorunPredicatesForDevice(Solid::Device &device)+{+ QStringList autorunDesktopFiles;+ //search in all desktop configuration file if the device inserted is a correct device+ QHashIterator<QString, Solid::Predicate> it(m_autorun);+ //kDebug() << "=================" << udi;+ while (it.hasNext()) {+ it.next();+ if (it.value().matches(device)) {+ //kDebug() << " hit" << it.key();+ autorunDesktopFiles << it.key();+ }+ }++ return autorunDesktopFiles;+}+ void HotplugEngine::onDeviceAdded(const QString &udi) { Solid::Device device(udi);@@ -201,6 +223,8 @@ } QStringList interestingDesktopFiles = predicatesForDevice(device);+ + QStringList autorunDesktopFiles = autorunPredicatesForDevice(device); bool isEncryptedContainer = m_encryptedPredicate.matches(device); @@ -220,6 +244,7 @@ data.insert("icon", device.icon()); data.insert("emblems", device.emblems()); data.insert("predicateFiles", interestingDesktopFiles);+ data.insert("autorunPredicateFiles", autorunDesktopFiles); data.insert("isEncryptedContainer", isEncryptedContainer); setData(device.udi(), data);diff -ru kdebase-workspace-4.5.90_old//plasma/generic/dataengines/hotplug/hotplugengine.h kdebase-workspace-4.5.90_new//plasma/generic/dataengines/hotplug/hotplugengine.h--- kdebase-workspace-4.5.90_old//plasma/generic/dataengines/hotplug/hotplugengine.h 2010-01-06 18:00:19.000000000 +0100+++ kdebase-workspace-4.5.90_new//plasma/generic/dataengines/hotplug/hotplugengine.h 2011-01-03 23:47:04.044466496 +0100@@ -49,6 +49,7 @@ void onDeviceAdded(Solid::Device &dev, bool added = true); void findPredicates(); QStringList predicatesForDevice(Solid::Device &device);+ QStringList autorunPredicatesForDevice(Solid::Device &device); private Q_SLOTS: void processNextStartupDevice();@@ -56,6 +57,7 @@ private: QHash<QString, Solid::Predicate> m_predicates;+ QHash<QString, Solid::Predicate> m_autorun; QHash<QString, Solid::Device> m_startList; QHash<QString, Solid::Device> m_devices; Solid::Predicate m_encryptedPredicate;