[kde-workspace/KDE/4.11] plasma/desktop/shell/scripting: implement min/max sizes for panel length in the scripting

Aaron Seigo aseigo at kde.org
Mon Nov 11 10:13:18 UTC 2013


Git commit cc843f06f670fe2d06b1f7f84a0a3fc1a3d575ed by Aaron Seigo.
Committed on 11/11/2013 at 08:56.
Pushed by aseigo into branch 'KDE/4.11'.

implement min/max sizes for panel length in the scripting

should be forward ported to plasma2's panel system

CCMAIL:vercetti.mail at gmail.com
CCMAIL:plasma-devel at kde.org

M  +80   -10   plasma/desktop/shell/scripting/panel.cpp
M  +9    -0    plasma/desktop/shell/scripting/panel.h

http://commits.kde.org/kde-workspace/cc843f06f670fe2d06b1f7f84a0a3fc1a3d575ed

diff --git a/plasma/desktop/shell/scripting/panel.cpp b/plasma/desktop/shell/scripting/panel.cpp
index 925af7a..e48b9b5 100644
--- a/plasma/desktop/shell/scripting/panel.cpp
+++ b/plasma/desktop/shell/scripting/panel.cpp
@@ -225,33 +225,103 @@ int Panel::length() const
     }
 }
 
-void Panel::setLength(int pixels)
+void Panel::setLength(int minPixels, int maxPixels)
 {
     Plasma::Containment *c = containment();
-    if (pixels < 0 || !c) {
+    if ((minPixels < 0 && maxPixels < 0) || !c) {
         return;
     }
 
     PanelView *v = panel();
     if (v) {
+        if (minPixels < 0) {
+            minPixels = minLength();
+        }
+
+        if (maxPixels < 0) {
+            maxPixels = maxLength();
+        }
+
+        int pixels = 0;
+            pixels = minPixels;
+
+        if (minPixels > maxPixels) {
+            maxPixels = minPixels;
+        }
+
+        pixels = qBound(minPixels, pixels, maxPixels);
+
         QRectF screen = c->corona()->screenGeometry(v->screen());
-        QSizeF s = c->size();
+        QSizeF size = c->size();
+        QSizeF minSize = c->minimumSize();
+        QSizeF maxSize = c->maximumSize();
         if (c->formFactor() == Plasma::Vertical) {
-            if (pixels > screen.height() - v->offset()) {
+            if (minPixels > screen.height() - v->offset()) {
                 return;
             }
 
-            s.setHeight(pixels);
-        } else if (pixels > screen.width() - v->offset()) {
+            size.setHeight(pixels);
+            minSize.setHeight(minPixels);
+            maxSize.setHeight(maxPixels);
+        } else if (minPixels > screen.width() - v->offset()) {
             return;
         } else {
-            s.setWidth(pixels);
+            size.setWidth(pixels);
+            minSize.setWidth(minPixels);
+            maxSize.setWidth(maxPixels);
         }
 
-        c->resize(s);
-        c->setMinimumSize(s);
-        c->setMaximumSize(s);
+        //kDebug() << "sizes:" << minSize << size << maxSize;
+        c->setMinimumSize(0, 0);
+        c->setMaximumSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX);
+        c->resize(size);
+        c->setMinimumSize(minSize);
+        c->setMaximumSize(maxSize);
+        v->pinchContainmentToCurrentScreen();
+    }
+}
+
+void Panel::setLength(int pixels)
+{
+    setLength(pixels, pixels);
+}
+
+int Panel::minLength() const
+{
+    Plasma::Containment *c = containment();
+    if (!c) {
+        return 0;
+    }
+
+    if (c->formFactor() == Plasma::Vertical) {
+        return c->minimumHeight();
+    } else {
+        return c->minimumWidth();
+    }
+}
+
+void Panel::setMinLength(int pixels)
+{
+    setLength(pixels, -1);
+}
+
+int Panel::maxLength() const
+{
+    Plasma::Containment *c = containment();
+    if (!c) {
+        return 0;
     }
+
+    if (c->formFactor() == Plasma::Vertical) {
+        return c->maximumHeight();
+    } else {
+        return c->maximumWidth();
+    }
+}
+
+void Panel::setMaxLength(int pixels)
+{
+    setLength(-1, pixels);
 }
 
 int Panel::height() const
diff --git a/plasma/desktop/shell/scripting/panel.h b/plasma/desktop/shell/scripting/panel.h
index 2ef0fb8..8e3271d 100644
--- a/plasma/desktop/shell/scripting/panel.h
+++ b/plasma/desktop/shell/scripting/panel.h
@@ -51,6 +51,8 @@ class Panel : public Containment
     // panel properties
     Q_PROPERTY(QString alignment READ alignment WRITE setAlignment)
     Q_PROPERTY(int offset READ offset WRITE setOffset)
+    Q_PROPERTY(int minLength READ minLength WRITE setMinLength)
+    Q_PROPERTY(int maxLength READ maxLength WRITE setMaxLength)
     Q_PROPERTY(int length READ length WRITE setLength)
     Q_PROPERTY(int height READ height WRITE setHeight)
     Q_PROPERTY(QString hiding READ hiding WRITE setHiding)
@@ -68,6 +70,12 @@ public:
     int offset() const;
     void setOffset(int pixels);
 
+    int minLength() const;
+    void setMinLength(int pixels);
+
+    int maxLength() const;
+    void setMaxLength(int pixels);
+
     int length() const;
     void setLength(int pixels);
 
@@ -87,6 +95,7 @@ public Q_SLOTS:
     void reloadConfig() { Applet::reloadConfig(); }
 
 private:
+    void setLength(int minPixels, int maxPixels);
     PanelView *panel() const;
 };
 



More information about the Plasma-devel mailing list