68 Commits

Author SHA1 Message Date
Kai Uwe Broulik
0a7ae2ce97 [Icon Item] Round size we want to load a pixmap in
QML sizes can be fractional. In case we're asked to load a 31.5 px pixmap it would truncate
it to 31 and then round down to 22 causing a blurry result. Instead, round the size.

Differential Revision: https://phabricator.kde.org/D4040
2017-01-11 10:34:35 +01:00
Kai Uwe Broulik
8875a04a1b [Icon Item] Fix updating implicit size when icon sizes change
The old code was connecting the KIconLoader signal to implicitWidth/HeightChanged
but never actually set a new implicit size.
Also, while at it use "setImplicitSize" - it's also marked internal but public
like setSize and uses qreal instead of QSizeF.

Differential Revision: https://phabricator.kde.org/D4011
2017-01-08 16:16:59 +01:00
Kai Uwe Broulik
d46a91ea57 [Icon Item] Support non-square icons
BUG: 355592

Differential Revision: https://phabricator.kde.org/D3892
2017-01-05 15:15:14 +01:00
Eike Hein
91eb0749ed Revert "port all output to QCDebug/QCWarning"
This reverts commit acd7ab7815a2a1f9a65f1dbf2cb53123c86da58b.

This broke the build for me and on CI:
/home/jenkins/sources/plasma-framework/kf5-qt5/src/declarativeimports/core/datamodel.cpp:214:9:
error: 'LOG_PLASMACORE' was not declared in this scope

CCMAIL:notmart@gmail.com
2016-10-19 03:16:16 +09:00
Marco Martin
acd7ab7815 port all output to QCDebug/QCWarning
port every terminal output to appropriate QCdebug/QCwarning,
each different binary has its own logging category now, so
it's possible to enable/disable them selectively.
this should also make plasmashell a bit more quiet on
terminal by default

Change-Id: Ic0b26364f988935e990c6988f8f9375b7c9bf838
REVIEW:129210
2016-10-17 18:18:04 +02:00
David Edmundson
812340ea2f If we pass a QIcon as an argument to IconItem::Source, use it
Currently the code gets the icon name from the QIcon and tries to do
some Plasma theming with it.
However if that fails it then loads the QIcon::fromTheme again.

This is pointless in most cases and will break any icons that have a
custom loader (all SNIs)

REVIEW: 128580
2016-08-03 12:05:30 +01:00
Chinmoy Ranjan Pradhan
0abc67a99f Add overlay support to Plasma IconItem.
By default Plasma IconItem renders the icon without an overlay even when an overlay is required.
This fixes this.

REVIEW:128573
2016-08-02 22:09:51 +05:30
David Rosca
9070f461bb IconItem: Use better approach to disable animation when going from invisible to visible
Clearing the pixmap is actually wrong, because in some cases the
IconItem::updatePolish() is not called when changing visibility.

REVIEW: 128409
2016-07-12 10:02:47 +02:00
Marco Martin
4de0dd2e90 rename state property in status
emergency change: in Qml the name "state" for a property
is reserved for the internal state machine, so any object that
exposes a "state" property on its own would automatically
break the state machine
2016-06-01 14:47:56 +02:00
Marco Martin
f3c05034d9 Selected state for Plasma::Svg and IconItem
Like KIconloader, support a Selected state, in IconItem,
as in all generic svgs/framesvg
it replaces the text color with HighlightedText and the
background color with HighlightColor

Change-Id: Id97a527405d2c3feed75a172f05547defdbf440c
REVIEW:127975
2016-05-31 11:10:47 +02:00
David Rosca
fd46322300 IconItem: Schedule pixmap update when window changes
QQuickItem::polish is not called when window changes.

Regression from 344d04e2306ca2fdaf17269bc218f4fad065cbbf

REVIEW: 127342
2016-03-12 13:01:07 +01:00
David Rosca
46a1181587 IconItem: Animate active and enabled change even with animations disabled
animated: false should disable only animation when changing source,
we still want the hover and enabled animations.
Also fix docs.

REVIEW: 127302
2016-03-11 14:10:59 +01:00
Kai Uwe Broulik
344d04e230 [Icon Item] Don't animate from previous pixmap when it has been invisible
We have a lot of reusable singletons that are just hidden when not needed, such
as the OSD. IconItem, however, will always fade from the previous state, even if
the previous action happened minutes ago.

This fixes for example changing the volume and then later changing the brightness
where you could see the OSD animating from the volume icon.

REVIEW: 122859
2016-03-10 13:01:29 +01:00
Kai Uwe Broulik
3b115e6d90 [Icon Item] Don't call loadPixmap in setColorGroup
Changing the color group of an Svg emits repaintNeeded which will then
cause it to schedule a pixmap update anyway. Includes a unittest.

REVIEW: 127313
2016-03-10 12:58:18 +01:00
David Rosca
978b8b3b87 IconItem: Don't overwrite source when using QIcon::name()
source should always return the same value as it was assigned.
Also removed duplicated code (empty sourceString is now handled
as if the source couldn't be converted to any type).

REVIEW: 127282
2016-03-04 23:44:57 +01:00
David Edmundson
1b21758570 Remove effectively duplicate code path for handling QPixmaps
IconItem handled both QOixmaps and QImages as a source.

QVariant(somePixmap).canConvert<QImage>() returns true so one of the
two code paths isn't executed. Given converting between the two is
practically free, we don't need two code paths.

REVIEW: 127270
2016-03-04 00:20:56 +00:00
David Rosca
30368e1d45 IconItem: Fix changing color of svg icons loaded from icon theme
Connect to repaintNeeded when creating Plasma::Svg.

REVIEW: 127207
2016-02-29 22:28:58 +01:00
Weng Xuetian
066cf0a0d7 Fix svg iconPath resolving in IconItem
This fixes iconPath is not correctly set when its size changes.

REVIEW: 127201
2016-02-29 13:05:48 -08:00
David Rosca
526915895b Add autotests for IconItem
Add some tests for IconItem.
Also found one issue in animation when quickly changing source, first frame
will be rendered with wrong icon.

REVIEW: 127103
2016-02-27 21:24:45 +01:00
Dan Vrátil
525bf2d377 Fix IconItem not loading non-theme icons with name
Commit 5184ac introduced a small regression that caused IconItem
to no longer load non-theme icons with name set, for instance icons
coming from sni-qt, causing sni-qt apps to not show in systray.

BUG: 359388
FIXED-IN: 5.20
REVIEW: 127091
2016-02-16 21:16:01 +01:00
David Rosca
83cec13edb IconItem: Add usesPlasmaTheme property
Add usesPlasmaTheme (enabled by default) property to make it possible
to disable using icons from Plasma theme.

REVIEW: 126814
2016-01-20 11:28:56 +01:00
David Rosca
5184ac94c9 IconItem: Try to load QIcon::fromTheme icons as svg
When showing QIcons in IconItem, it would ignore stylesheet colors.
This tries to load QIcons created with QIcon::fromTheme as svg, by using
the icon name returned from QIcon::name.

REVIEW: 126792
CCBUG: 353358
2016-01-19 10:14:49 +01:00
David Rosca
e4ea8d55b7 IconItem: Add animated property
Add property animated, that allows to disable cross-fade animation when
changing icon (enabled by default).

REVIEW: 126637
2016-01-06 20:21:15 +01:00
Marco Martin
c532ca8ff7 paintedWidth/paintedheight for IconItem
export the actual painted icon size of the icon item
REVIEW:126625

Change-Id: Ifa6667fdb9e3f7ee675b2c36628eae2ea5394a35
2016-01-04 18:20:38 +01:00
Marco Martin
3f56e63e70 use the new KDEPackageAppTemplates ECM module
REVIEW:126557
Change-Id: Ie32644a0641d1f0d5299ba9d1b0053e3f37d2635
2015-12-29 15:41:35 +01:00
Eike Hein
706276d108 Stop relying on timer to schedule pixmap updates.
The timer was used to skip ahead of parsing and to compress prop
updates to handle width/height changes atomically. This achieves
both by moving pixmap load into the polish phase after those are
guaranteed to be done.

This fixes a bunch of flicker all over the place since 150ms is
obviously far beyond the frame time budget on 60 hz, but we can
usually easily fit into one frame on hot caches.
2015-12-22 18:39:53 +01:00
Eike Hein
283ab4a634 Fix element ids for east orientation. 2015-12-22 05:04:01 +01:00
Nick Shaforostoff
c7c2980f14 qstring optimizations
REVIEW: 126148
2015-11-27 20:03:48 +00:00
Kai Uwe Broulik
9ccc6293f7 [IconItem] Don't crash on null KIconLoader theme
REVIEW: 126168
BUG: 355577
FIXED-IN: 5.17
2015-11-25 18:17:57 +01:00
Marco Martin
c1065ccf39 Theme breeze icons when loaded trough IconItem
This makes IconItem try to load global icons from the theme
with Plasma::Svg as well, making it assign the colors from
the stylesheet if the breeze monochrome icons are treated,
that should be scriptable, from some attempts i did the
script seems to convert them correctly, without any
change in rendering.

This will automatically color monochrome breeze icons only
in plasmashell, and more specifically only those that use
IconItem, not QIconItem (iconitem should probably have an
animation-less mode to be able to be used in taskmanager
and stuff)
perhaps in the future we'll be able somehow to hook all
this stuff in QIconEngine to be able to use it in QWidget
applications, but since QIcon does have any idea where it is,
is not usable yet for things like the fullscreen fixed-dark
gwenview view.

Change-Id: I28e5fedabafbe8ed82a9df7614f8e2af18c6a24d
REVIEW:125657
2015-10-20 11:49:20 +02:00
David Edmundson
fa3cd81597 Initialise bool members of iconitem
Change-Id: I289ab2e2676ea27e1add8b0b4548dd6502cc8adc
2015-03-24 11:50:28 +01:00
Marco Martin
148e0022f6 Make Svg,FrameSvg work qith QT_DEVICE_PIXELRATIO
when QT_DEVICE_PIXELRATIO is something different from 1,
the pixmaps generated by Svg will be scaled up to give a proper texture.

This is complementary but not replacing our current approach:
the pixelratio that can be accessed by units is now in relation to the qt pixel ratio,
spacings are also adjusted accordingly (therefore, spaces and sizes won't
need an integer value like pixelratio)

svg introduces also a scaleFactor property (that is pretty much like its old pixelRatio)
basically, scalefactor, will scale both the textures and all the reported sizes,
(old method) pixelratio just scales textures without altering measures
(like qt pixelratio likes)

Change-Id: I304aa0d80abf76abafac239be185dd3b2ab741b7
REVIEW:122673
2015-03-10 18:02:15 +01:00
Kai Uwe Broulik
c9fd8fc1e5 When changing "active" load pixmap right away
The active property is usualy set in response to a hover event.
Loading the new pixmap right away, starting the fade animation immediately, provides
a more responsive user experience.

REVIEW: 122857
2015-03-08 19:57:25 +01:00
Aleix Pol
3937b0453e Fix PlasmaCore.IconItem initialization when using QPixmap on it
I was getting the m_pixmapIcon cleared some times, instead of the
m_iconPixmap. This made it forget about my image.
m_iconPixmap should be renamed to something else.

Reviewed and done in collaboration with David Edmindson
2015-02-12 16:35:28 +01:00
Kevin Funk
9dda1204c8 Run convert-to-cmake-automoc.pl over files 2015-01-20 00:00:31 +01:00
Kai Uwe Broulik
6531279771 Load IconItem immediately upon componentComplete()
This makes the IconItem load the icon immediately after component creation and not
wait 150ms there for no reason which prevents eg. flickering in the OSD when it shows up.

REVIEW: 121219
2014-12-15 20:21:06 +01:00
Weng Xuetian
a11ac49717 stop animation if the pixmap change is triggered by geometry change
Making transition between two different size doesn't make much sense,
since repainting is usually happens at that time and it could take some
time to finish. And the animation need to be stopped if m_animValue is set
manually.

Change-Id: I240c19f46d4d13eb0e54b4e7b3fa3b6c31cfc6d8
REVIEW: 121411
2014-12-11 14:49:43 -05:00
Marco Martin
7d52397115 move the controls to an independent style
* Adapt the existing controls to be generic enough to work on stock QtQuickControls
* Add missing styles needed for the set to be complete (and applications actually work)

The full list of controls styles is now:
ApplicationWindowStyle
BusyIndicatorStyle
ButtonStyle
CalendarStyle
CheckBoxStyle
ComboBoxStyle
MenuBarStyle
MenuStyle
ProgressBarStyle
RadioButtonStyle
ScrollViewStyle
SliderStyle
SpinBoxStyle
StatusBarStyle
SwitchStyle
TabViewStyle
TableViewStyle
TextAreaStyle
TextFieldStyle
ToolBarStyle
ToolButtonStyle
GroupBoxStyle

Change-Id: Ic5d33bc20c7456d1478c07aca33bda63378d5c05
2014-12-02 15:59:42 +01:00
Marco Martin
1cb4501a11 remove the old icon when an empty source is set
BUG:339793

reviewer by:Bhushan Shah <bhush94@gmail.com>

Change-Id: I02910e7ec9397c5bb6ca4e5c0ed3793d19aa14e5
2014-10-15 16:11:19 +02:00
Aleix Pol
7a4998046e Adopt QuickAddons in plasma-framework
Removes the code that was moved to QuickAddons

REVIEW: 120596
2014-10-15 13:22:27 +02:00
Marco Martin
8aab4ac9c7 share icon rounding code between Units/IconItem
it should ensure both share the same behavior

Change-Id: I2de37f5fb43bdcdd482ede9252c68fc207efbe39
2014-09-25 14:48:45 +02:00
Marco Martin
a059748fbc Merge branch 'mart/QtControlsButton'
REVIEW:119455
2014-07-25 13:05:00 +02:00
Aleix Pol
bc425f1809 Cache the textures created for the fast path
Create a cache that has pointers to all the textures that we've generated,
so in case we have one already created, we can re-use it.

REVIEW: 119425
2014-07-25 12:41:53 +02:00
Marco Martin
d29b3f051d don't mix anchors and layouts 2014-07-25 11:20:26 +02:00
Marco Martin
02c6bba518 initial port of Button to QtControls
still loads of layout problems
2014-07-24 15:58:14 +02:00
Marco Martin
b755bd1e32 ColorGroup is part of Theme 2014-06-18 19:22:02 +02:00
Marco Martin
05d71947c8 svgColorGroup -> colorGroup 2014-06-13 15:40:47 +02:00
Martin Gräßlin
0d61746784 Small improvments to FadingNode and IconItem
* trigger an update after the animation finished as the IconItem needs to
  switch to SVGTextureNode again
* Don't connect needlessly to a lambda slot
* FadingMaterialShader had the texture bind swapped
* Fix virtual method hidden warning in FadingMaterialShader
* Use dynamic_cast instead of static_cast to convert to SVGTextureNode
  or FadingNode.

REVIEW: 118251
2014-06-11 07:55:01 +02:00
Marco Martin
fa95680a51 use color groups instead
the Text and Background colors can become buttonText or ButtonBackground
based on the svg property ColorGroup
2014-06-09 19:35:58 +02:00
Marco Martin
cac2704d50 prototype of more flexyble svg stylesheets
experiment in dynamic repacement of Text and Background
colors, in order to be able to generate icons of different colors
based on where they are (for instance if the normal background
is dark and the button background is light

at the moment supported an option to invert colors, one
to use the "highlight" color (if we want colored icons
on mouse over)
2014-06-09 17:35:46 +02:00