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

List:       kde-commits
Subject:    KDE/kdebase/workspace/plasma/netbook/containments/netpanel
From:       Aaron J. Seigo <aseigo () kde ! org>
Date:       2009-10-01 0:59:10
Message-ID: 1254358750.783408.25312.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 1029905 by aseigo:

add a lock panel action


 M  +56 -2     panel.cpp  
 M  +2 -0      panel.h  


--- trunk/KDE/kdebase/workspace/plasma/netbook/containments/netpanel/panel.cpp #1029904:1029905
@@ -35,6 +35,7 @@
 #include <QGraphicsLayout>
 
 
+#include <KAction>
 #include <KDebug>
 #include <KIcon>
 #include <KDialog>
@@ -92,8 +93,25 @@
     }
     connect(c, SIGNAL(containmentAdded(Plasma::Containment *)),
             this, SLOT(containmentAdded(Plasma::Containment *)));
+
+    KAction *lockAction = new KAction(this);
+    addAction("lock panel", lockAction);
+    lockAction->setText(i18n("Lock Panel"));
+    lockAction->setIcon(KIcon("object-locked"));
+    QObject::connect(lockAction, SIGNAL(triggered(bool)), this, SLOT(toggleImmutability()));
+    lockAction->setShortcut(KShortcut("alt+d, l"));
+    lockAction->setShortcutContext(Qt::ApplicationShortcut);
 }
 
+void Panel::toggleImmutability()
+{
+    if (immutability() == Plasma::UserImmutable) {
+        setImmutability(Plasma::Mutable);
+    } else if (immutability() == Plasma::Mutable) {
+        setImmutability(Plasma::UserImmutable);
+    }
+}
+
 void Panel::containmentAdded(Plasma::Containment *containment)
 {
     connect(containment, SIGNAL(toolBoxVisibilityChanged(bool)),
@@ -325,12 +343,48 @@
     }
 
     if (constraints & Plasma::ImmutableConstraint) {
-        bool unlocked = immutability() == Plasma::Mutable;
+        updateBorders();
 
-        updateBorders();
+        QAction *a = action("lock panel");
+        if (a) {
+            switch (immutability()) {
+                case Plasma::SystemImmutable:
+                    a->setEnabled(false);
+                    a->setVisible(false);
+                    break;
+
+                case Plasma::UserImmutable:
+                    a->setText(i18n("Unlock Panel"));
+                    a->setEnabled(true);
+                    a->setVisible(true);
+                    break;
+
+                case Plasma::Mutable:
+                    a->setText(i18n("Lock Panel"));
+                    a->setEnabled(true);
+                    a->setVisible(true);
+                    break;
+            }
+        }
     }
+
+    if (constraints & Plasma::StartupCompletedConstraint) {
+        delete action("remove");
+    }
 }
 
+QList<QAction *> Panel::contextualActions()
+{
+    QList<QAction *> actions;
+
+    QAction *a = action("lock panel");
+    if (a) {
+        actions << a;
+    }
+
+    return actions;
+}
+
 void Panel::updateConfigurationMode(bool config)
 {
     if (config && !m_appletOverlay) {
--- trunk/KDE/kdebase/workspace/plasma/netbook/containments/netpanel/panel.h #1029904:1029905
@@ -51,11 +51,13 @@
                         const QStyleOptionGraphicsItem *option,
                         const QRect &contentsRect);
     void paintBackground(QPainter *painter, const QRect &contentsRect);
+    QList<QAction *> contextualActions();
 
 protected:
     void saveState(KConfigGroup &config) const;
 
 private slots:
+    void toggleImmutability();
     void themeUpdated();
     void backgroundChanged();
     void layoutApplet(Plasma::Applet* applet, const QPointF &pos);
[prev in list] [next in list] [prev in thread] [next in thread] 

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