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

List:       kde-commits
Subject:    extragear/utils/yakuake
From:       Eike Hein <hein () kde ! org>
Date:       2010-02-05 10:48:24
Message-ID: 1265366904.749115.17947.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 1085473 by hein:

A round of improvements to the lock icon stuff - better
pixmap, better scaling, caching of a scaled version when
a system image is used, and a x/y coordinate pair for
the icon for skin authors.


 M  +30 -3     app/skin.cpp  
 M  +5 -0      app/skin.h  
 M  +13 -7     app/tabbar.cpp  
 M  +2 -0      skins/default/tabs.skin  
 M             skins/default/tabs/lock.png  
 M  +2 -0      skins/plastik_dark/tabs.skin  
 M             skins/plastik_dark/tabs/lock.png  
 M  +2 -0      skins/plastik_light/tabs.skin  
 M             skins/plastik_light/tabs/lock.png  


--- trunk/extragear/utils/yakuake/app/skin.cpp #1085472:1085473
@@ -133,6 +133,8 @@
     m_tabBarSelectedRightCornerImage.load(tabDir + \
tabBar.readEntry("selected_right_corner", ""));  
     m_tabBarPreventClosingImage.load(tabDir + \
tabBar.readEntry("prevent_closing_image", "")); +    \
m_tabBarPreventClosingImagePosition.setX(tabBar.readEntry("prevent_closing_image_x", \
0)); +    m_tabBarPreventClosingImagePosition.setY(tabBar.readEntry("prevent_closing_image_y", \
0));  
 
     KConfigGroup tabBarBackground = tabConfig.group("Background");
@@ -161,6 +163,9 @@
                                                         tabDir + \
                tabBarCloseTabButton.readEntry("over_image", ""),
                                                         tabDir + \
tabBarCloseTabButton.readEntry("down_image", ""));  
+    if (m_tabBarPreventClosingImage.isNull())
+        updateTabBarPreventClosingImageCache();
+
     return true;
 }
 
@@ -195,18 +200,40 @@
 
 const QPixmap Skin::tabBarPreventClosingImage()
 {
-    // If the skin. doesn't provide a Prevent Closing image, procure one
-    // from the system icon theme.
     if (m_tabBarPreventClosingImage.isNull())
-        return KIcon("object-locked.png").pixmap(QSize(32, 32));
+        return m_tabBarPreventClosingImageCached;
 
     return m_tabBarPreventClosingImage;
 }
 
+void Skin::updateTabBarPreventClosingImageCache()
+{
+    // Get the target image size from the tabBar height, aquired from
+    // background image, minus (2 * y position) of the lock icon.
+    int m_IconSize = m_tabBarBackgroundImage.height() -
+        (2 * m_tabBarPreventClosingImagePosition.y());
+
+    // Get the system lock icon in a generous size.
+    m_tabBarPreventClosingImageCached = KIcon("object-locked.png").pixmap(48, 48);
+
+    // Resize the image if it's too tall.
+    if (m_IconSize <  m_tabBarPreventClosingImageCached.height())
+    {
+        m_tabBarPreventClosingImageCached =
+            m_tabBarPreventClosingImageCached.scaled(m_IconSize,
+            m_IconSize, Qt::KeepAspectRatio,
+            Qt::SmoothTransformation);
+    }
+}
+
 void Skin::systemIconsChanged(int group)
 {
     Q_UNUSED(group);
 
     if (m_tabBarPreventClosingImage.isNull())
+    {
+        updateTabBarPreventClosingImageCache();
+
         emit iconChanged();
+    }
 }
--- trunk/extragear/utils/yakuake/app/skin.h #1085472:1085473
@@ -71,6 +71,7 @@
         const QPixmap& tabBarSelectedRightCornerImage() { return \
m_tabBarSelectedRightCornerImage; }  
         const QPixmap tabBarPreventClosingImage();
+        const QPoint& tabBarPreventClosingImagePosition() { return \
m_tabBarPreventClosingImagePosition; }  
         const QPixmap& tabBarBackgroundImage() { return m_tabBarBackgroundImage; }
         const QPixmap& tabBarLeftCornerImage() { return m_tabBarLeftCornerImage; }
@@ -94,6 +95,8 @@
     private:
         const QString buttonStyleSheet(const QString& up, const QString& over, const \
QString& down);  
+        void updateTabBarPreventClosingImageCache();
+
         QColor m_borderColor;
         int m_borderWidth;
 
@@ -126,6 +129,8 @@
         QPixmap m_tabBarSelectedRightCornerImage;
 
         QPixmap m_tabBarPreventClosingImage;
+        QPixmap m_tabBarPreventClosingImageCached;
+        QPoint m_tabBarPreventClosingImagePosition;
 
         QPixmap m_tabBarBackgroundImage;
         QPixmap m_tabBarLeftCornerImage;
--- trunk/extragear/utils/yakuake/app/tabbar.cpp #1085472:1085473
@@ -366,17 +366,23 @@
     // Draw the Prevent Closing image in the tab button.
     if (m_mainWindow->sessionStack()->isSessionClosable(sessionId) == false)
     {
-        QPixmap preventClosingImage = \
                m_skin->tabBarPreventClosingImage().scaled(height() - 4, height() - \
                4,
-            Qt::KeepAspectRatio, Qt::SmoothTransformation);
-
         if (selected)
-            painter.drawTiledPixmap(x, y, preventClosingImage.width(), height(), \
m_skin->tabBarSelectedBackgroundImage()); +            painter.drawTiledPixmap(x, y,
+                    m_skin->tabBarPreventClosingImagePosition().x() +
+                    m_skin->tabBarPreventClosingImage().width(), height(), 
+                    m_skin->tabBarSelectedBackgroundImage());
         else
-            painter.drawTiledPixmap(x, y, preventClosingImage.width(), height(), \
m_skin->tabBarUnselectedBackgroundImage()); +            painter.drawTiledPixmap(x, \
y,  +                    m_skin->tabBarPreventClosingImagePosition().x() +
+                    m_skin->tabBarPreventClosingImage().width(), height(),
+                    m_skin->tabBarUnselectedBackgroundImage());
 
-        painter.drawPixmap(x + 1, (height() / 2) - (preventClosingImage.height() / \
2), preventClosingImage); +        painter.drawPixmap(x + \
m_skin->tabBarPreventClosingImagePosition().x(), +                           \
m_skin->tabBarPreventClosingImagePosition().y(), +                           \
m_skin->tabBarPreventClosingImage());  
-        x += preventClosingImage.width();
+        x += m_skin->tabBarPreventClosingImagePosition().x();
+        x += m_skin->tabBarPreventClosingImage().width();
     }
 
     if (selected)
--- trunk/extragear/utils/yakuake/skins/default/tabs.skin #1085472:1085473
@@ -16,6 +16,8 @@
 selected_right_corner=/tabs/selected_right.png
 unselected_background=/tabs/unselected_back.png
 prevent_closing_image=/tabs/lock.png
+prevent_closing_image_x=2
+prevent_closing_image_y=4
 
 [Background]
 back_image=/tabs/back_image.png
--- trunk/extragear/utils/yakuake/skins/plastik_dark/tabs.skin #1085472:1085473
@@ -16,6 +16,8 @@
 selected_right_corner=/tabs/selected_right.png
 unselected_background=/tabs/unselected_back.png
 prevent_closing_image=/tabs/lock.png
+prevent_closing_image_x=2
+prevent_closing_image_y=3
 
 [Background]
 back_image=/tabs/back_image.png
--- trunk/extragear/utils/yakuake/skins/plastik_light/tabs.skin #1085472:1085473
@@ -16,6 +16,8 @@
 selected_right_corner=/tabs/selected_right.png
 unselected_background=/tabs/unselected_back.png
 prevent_closing_image=/tabs/lock.png
+prevent_closing_image_x=2
+prevent_closing_image_y=3
 
 [Background]
 back_image=/tabs/back_image.png


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

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