Merge branch 'master' of git://anongit.kde.org/plasma-framework
This commit is contained in:
commit
7c06cd064a
BIN
autotests/data/test_image.png
Normal file
BIN
autotests/data/test_image.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.6 KiB |
@ -127,6 +127,33 @@ void IconItemTest::changeTheme(Plasma::Theme *theme, const QString &themeName)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ------ Tests
|
// ------ Tests
|
||||||
|
|
||||||
|
void IconItemTest::loadPixmap()
|
||||||
|
{
|
||||||
|
QScopedPointer<QQuickItem> item(createIconItem());
|
||||||
|
QPixmap sourcePixmap(QFINDTESTDATA("data/test_image.png"));
|
||||||
|
|
||||||
|
item->setProperty("source", sourcePixmap);
|
||||||
|
QVERIFY(item->property("valid").toBool());
|
||||||
|
|
||||||
|
QImage capture = grabImage(item.data());
|
||||||
|
QCOMPARE(capture, sourcePixmap.toImage().convertToFormat(QImage::Format_ARGB32_Premultiplied));
|
||||||
|
}
|
||||||
|
|
||||||
|
//tests setting icon from a QImage
|
||||||
|
void IconItemTest::loadImage()
|
||||||
|
{
|
||||||
|
QScopedPointer<QQuickItem> item(createIconItem());
|
||||||
|
QImage sourceImage(QFINDTESTDATA("data/test_image.png"));
|
||||||
|
|
||||||
|
item->setProperty("source", sourceImage);
|
||||||
|
QVERIFY(item->property("valid").toBool());
|
||||||
|
|
||||||
|
QImage capture = grabImage(item.data());
|
||||||
|
QCOMPARE(capture, sourceImage.convertToFormat(QImage::Format_ARGB32_Premultiplied));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void IconItemTest::invalidIcon()
|
void IconItemTest::invalidIcon()
|
||||||
{
|
{
|
||||||
QString name("tst-plasma-framework-invalid-icon-name");
|
QString name("tst-plasma-framework-invalid-icon-name");
|
||||||
|
@ -37,6 +37,9 @@ private Q_SLOTS:
|
|||||||
void initTestCase();
|
void initTestCase();
|
||||||
void cleanup();
|
void cleanup();
|
||||||
|
|
||||||
|
void loadPixmap();
|
||||||
|
void loadImage();
|
||||||
|
|
||||||
void invalidIcon();
|
void invalidIcon();
|
||||||
void usesPlasmaTheme();
|
void usesPlasmaTheme();
|
||||||
void animation();
|
void animation();
|
||||||
|
@ -107,7 +107,6 @@ void IconItem::setSource(const QVariant &source)
|
|||||||
if (url.isLocalFile()) {
|
if (url.isLocalFile()) {
|
||||||
m_icon = QIcon();
|
m_icon = QIcon();
|
||||||
m_imageIcon = QImage(url.path());
|
m_imageIcon = QImage(url.path());
|
||||||
m_pixmapIcon = QPixmap();
|
|
||||||
delete m_svgIcon;
|
delete m_svgIcon;
|
||||||
m_svgIcon = 0;
|
m_svgIcon = 0;
|
||||||
} else {
|
} else {
|
||||||
@ -155,7 +154,6 @@ void IconItem::setSource(const QVariant &source)
|
|||||||
delete m_svgIcon;
|
delete m_svgIcon;
|
||||||
m_svgIcon = 0;
|
m_svgIcon = 0;
|
||||||
m_imageIcon = QImage();
|
m_imageIcon = QImage();
|
||||||
m_pixmapIcon = QPixmap();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -163,28 +161,17 @@ void IconItem::setSource(const QVariant &source)
|
|||||||
} else if (source.canConvert<QIcon>()) {
|
} else if (source.canConvert<QIcon>()) {
|
||||||
m_icon = source.value<QIcon>();
|
m_icon = source.value<QIcon>();
|
||||||
m_imageIcon = QImage();
|
m_imageIcon = QImage();
|
||||||
m_pixmapIcon = QPixmap();
|
|
||||||
delete m_svgIcon;
|
delete m_svgIcon;
|
||||||
m_svgIcon = 0;
|
m_svgIcon = 0;
|
||||||
|
|
||||||
} else if (source.canConvert<QPixmap>()) {
|
|
||||||
m_icon = QIcon();
|
|
||||||
m_imageIcon = QImage();
|
|
||||||
m_pixmapIcon = source.value<QPixmap>();
|
|
||||||
delete m_svgIcon;
|
|
||||||
m_svgIcon = 0;
|
|
||||||
|
|
||||||
} else if (source.canConvert<QImage>()) {
|
} else if (source.canConvert<QImage>()) {
|
||||||
m_icon = QIcon();
|
m_icon = QIcon();
|
||||||
m_imageIcon = source.value<QImage>();
|
m_imageIcon = source.value<QImage>();
|
||||||
m_pixmapIcon = QPixmap();
|
|
||||||
delete m_svgIcon;
|
delete m_svgIcon;
|
||||||
m_svgIcon = 0;
|
m_svgIcon = 0;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
m_icon = QIcon();
|
m_icon = QIcon();
|
||||||
m_imageIcon = QImage();
|
m_imageIcon = QImage();
|
||||||
m_pixmapIcon = QPixmap();
|
|
||||||
delete m_svgIcon;
|
delete m_svgIcon;
|
||||||
m_svgIcon = 0;
|
m_svgIcon = 0;
|
||||||
}
|
}
|
||||||
@ -295,7 +282,7 @@ void IconItem::setUsesPlasmaTheme(bool usesPlasmaTheme)
|
|||||||
|
|
||||||
bool IconItem::isValid() const
|
bool IconItem::isValid() const
|
||||||
{
|
{
|
||||||
return !m_icon.isNull() || m_svgIcon || !m_pixmapIcon.isNull() || !m_imageIcon.isNull();
|
return !m_icon.isNull() || m_svgIcon || !m_imageIcon.isNull();
|
||||||
}
|
}
|
||||||
|
|
||||||
int IconItem::paintedWidth() const
|
int IconItem::paintedWidth() const
|
||||||
@ -427,8 +414,6 @@ void IconItem::loadPixmap()
|
|||||||
}
|
}
|
||||||
} else if (!m_icon.isNull()) {
|
} else if (!m_icon.isNull()) {
|
||||||
result = m_icon.pixmap(QSize(size, size) * (window() ? window()->devicePixelRatio() : qApp->devicePixelRatio()));
|
result = m_icon.pixmap(QSize(size, size) * (window() ? window()->devicePixelRatio() : qApp->devicePixelRatio()));
|
||||||
} else if (!m_pixmapIcon.isNull()) {
|
|
||||||
result = m_pixmapIcon;
|
|
||||||
} else if (!m_imageIcon.isNull()) {
|
} else if (!m_imageIcon.isNull()) {
|
||||||
result = QPixmap::fromImage(m_imageIcon);
|
result = QPixmap::fromImage(m_imageIcon);
|
||||||
} else {
|
} else {
|
||||||
|
@ -39,14 +39,63 @@ class IconItem : public QQuickItem
|
|||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the icon to be displayed. Source can be one of:
|
||||||
|
* - iconName (as a string)
|
||||||
|
* - URL
|
||||||
|
* - QImage
|
||||||
|
* - QPixmap
|
||||||
|
* - QIcon
|
||||||
|
*
|
||||||
|
* When passing an icon name (or a QIcon with an icon name set) it will:
|
||||||
|
* - load the plasma variant if usesPlasmaTheme is set and exists
|
||||||
|
* - otherwise try to load the icon as an SVG so colorscopes apply
|
||||||
|
* - load the icon as normal
|
||||||
|
*/
|
||||||
Q_PROPERTY(QVariant source READ source WRITE setSource NOTIFY sourceChanged)
|
Q_PROPERTY(QVariant source READ source WRITE setSource NOTIFY sourceChanged)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Specifies the color group to use for this icon
|
||||||
|
* This only applies to icons loaded from the plasma theme
|
||||||
|
*/
|
||||||
Q_PROPERTY(Plasma::Theme::ColorGroup colorGroup READ colorGroup WRITE setColorGroup NOTIFY colorGroupChanged)
|
Q_PROPERTY(Plasma::Theme::ColorGroup colorGroup READ colorGroup WRITE setColorGroup NOTIFY colorGroupChanged)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* See QQuickItem::smooth
|
||||||
|
*/
|
||||||
Q_PROPERTY(bool smooth READ smooth WRITE setSmooth NOTIFY smoothChanged)
|
Q_PROPERTY(bool smooth READ smooth WRITE setSmooth NOTIFY smoothChanged)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Apply a visual indication that this icon is active.
|
||||||
|
* Typically used to indicate that it is hovered
|
||||||
|
*/
|
||||||
Q_PROPERTY(bool active READ isActive WRITE setActive NOTIFY activeChanged)
|
Q_PROPERTY(bool active READ isActive WRITE setActive NOTIFY activeChanged)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If set, icon will blend when the source is changed or resized
|
||||||
|
*/
|
||||||
Q_PROPERTY(bool animated READ isAnimated WRITE setAnimated NOTIFY animatedChanged)
|
Q_PROPERTY(bool animated READ isAnimated WRITE setAnimated NOTIFY animatedChanged)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If set, icon will try and use icons from the Plasma theme if possible
|
||||||
|
*/
|
||||||
Q_PROPERTY(bool usesPlasmaTheme READ usesPlasmaTheme WRITE setUsesPlasmaTheme NOTIFY usesPlasmaThemeChanged)
|
Q_PROPERTY(bool usesPlasmaTheme READ usesPlasmaTheme WRITE setUsesPlasmaTheme NOTIFY usesPlasmaThemeChanged)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* True if a valid icon is set. False otherwise.
|
||||||
|
*/
|
||||||
Q_PROPERTY(bool valid READ isValid NOTIFY validChanged)
|
Q_PROPERTY(bool valid READ isValid NOTIFY validChanged)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The width of the icon that is actually painted
|
||||||
|
* Icons are drawn at standard icon sizes (eg. 16,32,64) centered within the item
|
||||||
|
*/
|
||||||
Q_PROPERTY(int paintedWidth READ paintedWidth NOTIFY paintedSizeChanged)
|
Q_PROPERTY(int paintedWidth READ paintedWidth NOTIFY paintedSizeChanged)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The height of the icon actually being drawn.
|
||||||
|
* Icons are drawn at standard icon sizes (eg. 16,32,64) centered within the item
|
||||||
|
*/
|
||||||
Q_PROPERTY(int paintedHeight READ paintedHeight NOTIFY paintedSizeChanged)
|
Q_PROPERTY(int paintedHeight READ paintedHeight NOTIFY paintedSizeChanged)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
@ -2,6 +2,8 @@
|
|||||||
Name=Breeze Light
|
Name=Breeze Light
|
||||||
Name[ca]=Brisa clara
|
Name[ca]=Brisa clara
|
||||||
Name[ca@valencia]=Brisa clara
|
Name[ca@valencia]=Brisa clara
|
||||||
|
Name[cs]=Breeze Světlé
|
||||||
|
Name[da]=Breeze Light
|
||||||
Name[de]=Breeze Light
|
Name[de]=Breeze Light
|
||||||
Name[en_GB]=Breeze Light
|
Name[en_GB]=Breeze Light
|
||||||
Name[es]=Brisa claro
|
Name[es]=Brisa claro
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -62,6 +62,7 @@ public:
|
|||||||
: q(dialog),
|
: q(dialog),
|
||||||
location(Plasma::Types::BottomEdge),
|
location(Plasma::Types::BottomEdge),
|
||||||
frameSvgItem(0),
|
frameSvgItem(0),
|
||||||
|
hasMask(false),
|
||||||
type(Dialog::Normal),
|
type(Dialog::Normal),
|
||||||
hideOnWindowDeactivate(false),
|
hideOnWindowDeactivate(false),
|
||||||
outputOnly(false),
|
outputOnly(false),
|
||||||
@ -131,6 +132,7 @@ public:
|
|||||||
QTimer hintsCommitTimer;
|
QTimer hintsCommitTimer;
|
||||||
|
|
||||||
QRect cachedGeometry;
|
QRect cachedGeometry;
|
||||||
|
bool hasMask;
|
||||||
Dialog::WindowType type;
|
Dialog::WindowType type;
|
||||||
bool hideOnWindowDeactivate;
|
bool hideOnWindowDeactivate;
|
||||||
bool outputOnly;
|
bool outputOnly;
|
||||||
@ -229,8 +231,12 @@ void DialogPrivate::updateTheme()
|
|||||||
frameSvgItem->frameSvg()->mask());
|
frameSvgItem->frameSvg()->mask());
|
||||||
|
|
||||||
if (KWindowSystem::compositingActive()) {
|
if (KWindowSystem::compositingActive()) {
|
||||||
q->setMask(QRegion());
|
if (hasMask) {
|
||||||
|
hasMask = false;
|
||||||
|
q->setMask(QRegion());
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
|
hasMask = true;
|
||||||
q->setMask(frameSvgItem->frameSvg()->mask());
|
q->setMask(frameSvgItem->frameSvg()->mask());
|
||||||
}
|
}
|
||||||
if (q->isVisible()) {
|
if (q->isVisible()) {
|
||||||
|
Loading…
Reference in New Issue
Block a user