[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