Sophie

Sophie

distrib > * > 2008.0 > x86_64 > by-pkgid > c4aaebff5a034775f37cbc49827cf3b9 > files > 11

smart-0.51-17mdv2008.0.src.rpm

diff -Naur smart-0.51/contrib/ksmarttray/src/ksmarttray.cc smart-0.51.tpg/contrib/ksmarttray/src/ksmarttray.cc
--- smart-0.51/contrib/ksmarttray/src/ksmarttray.cc	2005-03-04 19:21:46.000000000 +0000
+++ smart-0.51.tpg/contrib/ksmarttray/src/ksmarttray.cc	2007-08-28 09:10:55.000000000 +0000
@@ -48,6 +48,7 @@
 {
     hasActions = false;
     checkAction.setText("Check");
+    startSmartAction.setText("Start Smart...");
     stopAction.setText("Stop");
     stopAction.setIcon("stop");
     stopAction.setEnabled(false);
@@ -58,6 +59,7 @@
     if (!hasActions) {
         hasActions = true;
         checkAction.plug(menu, 1);
+        startSmartAction.plug(menu, 2);
         //stopAction.plug(menu, 2);
     }
 }
@@ -94,6 +96,8 @@
 
     connect(&sysTray.checkAction, SIGNAL(activated()),
             this, SLOT(manualCheckUpgrades()));
+    connect(&sysTray.startSmartAction, SIGNAL(activated()),
+            this, SLOT(startSmart()));
     connect(&sysTray.stopAction, SIGNAL(activated()),
             this, SLOT(stopChecking()));
     connect(&sysTray, SIGNAL(quitSelected()),
@@ -112,6 +116,7 @@
         return;
     if (state == StateWaiting) {
         sysTray.checkAction.setEnabled(false);
+        sysTray.startSmartAction.setEnabled(false);
         sysTray.stopAction.setEnabled(true);
         process.resetAll();
         if (manual)
@@ -145,6 +150,7 @@
                              "There is a running process.");
     } else {
         sysTray.checkAction.setEnabled(false);
+        sysTray.startSmartAction.setEnabled(false);
         sysTray.stopAction.setEnabled(false);
         process.resetAll();
         process << "kdesu" << "-d" << "-c" << "smart --gui upgrade";
@@ -159,6 +165,28 @@
     }
 }
 
+void KSmartTray::startSmart()
+{
+    if (state != StateWaiting) {
+        KNotifyClient::event(sysTray.winId(), "fatalerror",
+                             "There is a running process.");
+    } else {
+        sysTray.checkAction.setEnabled(false);
+        sysTray.startSmartAction.setEnabled(false);
+        sysTray.stopAction.setEnabled(false);
+        process.resetAll();
+        process << "kdesu" << "-d" << "-c" << "smart --gui";
+        if (!process.start()) {
+            KNotifyClient::event(sysTray.winId(), "fatalerror",
+                                 "Couldn't run 'smart'.");
+        } else {
+            state = StateRunningSmart;
+            QToolTip::remove(&sysTray);
+            QToolTip::add(&sysTray, "Running Smart Package Manager...");
+        }
+    }
+}
+
 void KSmartTray::stopChecking()
 {
     process.kill();
@@ -223,6 +251,11 @@
             lastKnownStatus = "";
             break;
 
+        case StateRunningSmart:
+            state = StateWaiting;
+            lastKnownStatus = "";
+            break;
+
         default:
             /* Error! */
             break;
@@ -231,6 +264,7 @@
     if (state == StateWaiting) {
         updateFailed = false;
         sysTray.checkAction.setEnabled(true);
+        sysTray.startSmartAction.setEnabled(true);
         sysTray.stopAction.setEnabled(false);
         if (!lastKnownStatus.isEmpty())
         {
diff -Naur smart-0.51/contrib/ksmarttray/src/ksmarttray.h smart-0.51.tpg/contrib/ksmarttray/src/ksmarttray.h
--- smart-0.51/contrib/ksmarttray/src/ksmarttray.h	2006-06-13 13:24:24.000000000 +0000
+++ smart-0.51.tpg/contrib/ksmarttray/src/ksmarttray.h	2007-08-28 09:10:55.000000000 +0000
@@ -43,6 +43,7 @@
 
     KAction checkAction;
     KAction stopAction;
+    KAction startSmartAction;
 
     protected:
 
@@ -69,6 +70,7 @@
         StateUpdating,
         StateChecking,
         StateUpgrading,
+        StateRunningSmart,
     };
     
     State state;
@@ -105,6 +107,7 @@
     void checkUpgrades();
     void manualCheckUpgrades();
     void runUpgrades();
+    void startSmart();
 
     public: