69 Commits

Author SHA1 Message Date
David Edmundson
2affb1ab56 Recheck which representation we should using in setPreferredRepresentation
Summary:
Appmenu quite neatly has a config option for which should be the
preferred representation, which is needed as both things are quite
viable in a panel and can't be done automatically.

AppletQuickItem needs to update which representation to use when this is
set at runtime. We already check on every single geometry change, so
one extra check won't have a huge impact.

Test Plan:
Appmenu changes dynamically
All other applets (both compact and normal) still seem fine

Reviewers: #plasma, mart

Reviewed By: mart

Subscribers: plasma-devel

Tags: #plasma

Differential Revision: https://phabricator.kde.org/D3794
2016-12-23 13:28:32 +00:00
Kai Uwe Broulik
eb81b3f162 [AppletQuickItem] Support launch error message
Now that we can have C++ applet we can make use of setLaunchErrorMessage
to communicate a fatal error in the applet initialization.

Differential Revision: https://phabricator.kde.org/D3725
2016-12-19 13:48:52 +01:00
Roman Gilg
65706d3878 New bool to use activated signal as toggle of expanded
The launcher applets couldn't be closed with Meta alone and on Wayland
in general by any global shortcut, since we used for that the focusOutEvent
triggered only on X and only on global shortcuts (on default Alt+F1).

This patch introduces the new bool activationTogglesExpanded, which allowes
QML applets to decide if they wish to use the activated signal also to end
their expanded state.

The default value is false, in order to not break any legacy applets.

REVIEW: 129204
BUG: 367685
2016-10-19 18:51:15 +02:00
Aleix Pol Gonzalez
9e54853ac8 Use less deprecated API
Makes it easier to look at the compilation output.

REVIEW: 129150
2016-10-17 13:36:51 +02:00
Aleix Pol Gonzalez
4a9d5cff2a Port some few remaining uses of pluginInfo to pluginMetaData
I forgot to do it in the previous RR.

REVIEW: 129100
2016-10-10 18:02:20 +02:00
Aleix Pol
bd970141ce Simplify plugin construction by relying exclusively on KPluginMetaData
REVIEW: 129057
2016-10-04 23:56:17 +02:00
Kai Uwe Broulik
dd5d07afec [AppletQuickItem] Break from loop when we found a layout
There's no point in going on once we found a layout.

REVIEW: 128851
2016-09-06 20:43:54 +02:00
David Edmundson
fb3e8d5fc5 Make use of QQuickItem::setSize
Even though QQuickItem only has a width and height accessor there is a
usable public setSize method.

This gets rid of a lot of potential re-evaluation as internal geometry
is updated before widthChanged is emitted.

REVIEW: 128316
2016-07-04 11:06:44 +01:00
Ivan Čukić
8d3ec9589c Properly guarding against a null applet
- The code used applet and d->applet which pointed to the same thing
- Some places checked dereferening of applet, while the last one did not
2016-04-05 09:49:56 +02:00
Aleix Pol
c23f2415bb Make it possible for an applet to offer a test object
Makes it possible for plasmoids to test themselves in the different shells
by providing API to extract the object that will test the plasmoid
instance.

REVIEW: 127345
2016-03-16 12:32:25 +01:00
David Rosca
82e172cc9e AppletQuickItem: Fix finding own attached layout
Regression from 344dbeb938

BUG: 358849
REVIEW: 127073
2016-02-19 13:23:26 +01:00
Marco Martin
3ee612c2c7 remove the legacy applets filter
this list was done because some applets broke with
the new shared engine stuff.

since it's many workspace releases ago, unconditionally
use the single engine now.

REVIEW:126918
2016-02-09 11:06:30 +01:00
David Rosca
f688c904a8 AppletQuickItem: Don't try to set initial size bigger than parent size
Trying to set initial size bigger than parent size only results
to item being resized down to fit in parent later.

REVIEW: 126822
BUG: 358200
2016-01-21 15:35:19 +01:00
David Rosca
11937533e8 Ignore check if just one part of size is zero in compactRepresentationCheck
When debugging the linked bug, it looks like when item's geometry change
eg. from 0x0 to 100x100, geometryChanged may be called twice, first with 100x0
and then finally with 100x100.
This was not issue before, because we used timer to call compactRepresentationCheck.
This changes compactRepresentationCheck so that it early returns also when just
one part of item's size is zero.

Fixes regression from 344dbeb938

REVIEW: 126778
BUG: 358039
2016-01-17 18:02:36 +01:00
David Rosca
344dbeb938 AppletQuickItem: Drop timer to create full representation
The timer only added 250ms delay before creating the full representation,
sometimes resulting in showing empty popup for a moment.

REVIEW: 126468
2015-12-22 15:46:00 +01:00
Patrick Spendrin
54736e262f don't rely on char* to QString implicit conversion
my Qt won't cast char* to QString, so explicitly use QStringLiteral here.

REVIEW: 126417
2015-12-19 00:29:23 +01:00
Marco Martin
5f92df4799 Let containments override CompactApplet.qml
the CompactApplet file from the shell package
defines the behavior of the poopup applets in
the panel (it implements an internal dialog
and all that jazz)
implementing a simplified systray(both the one
for the phone and a separate one for the desktop),
i noticed that a containment may have different
ideas on how to expand an applet: the systray would
have for instance a single popup dialog and put all
of its applet full representtions in the same Dialog,
this lets containment representation to override
that file (*if* won't get abused, that's the only
thing makes me a bit on the fence about this)
It would make possible also fairly different designs
that have been proposed in the past, such as the bug
sidebar similar to the "charm bar"

Have to keep an eye opened if having the file list
changing with the path may be an issue, but
shouldn't as ChangeableMainScript already does
something similar.

Change-Id: I1c7fda55d6829d3a67f511c91822b131dea85ac1
REVIEW:126244
2015-12-10 23:10:02 +01:00
Nick Shaforostoff
c7c2980f14 qstring optimizations
REVIEW: 126148
2015-11-27 20:03:48 +00:00
Marco Martin
b2b1c93fac give fullrepresentation a parent immediately
like compactRepresentationItem, initialize it
with the appletInterface as parent at creation
not having any moment without parents
2015-06-18 18:29:14 -07:00
Vishesh Handa
9976edcbc9 AppletQuickItem: Do not access KPluginInfo if not valid
When loading an applet which does not exist, we create a dummy applet
which just contains the error message. This dummy does not have a valid
KPluginInfo, and using an invalid KPluginInfo causes as assert to be
hit.

Reviewed-By: Marco and Sebas
2015-06-18 23:36:28 +02:00
Marco Martin
c60ca1b6a0 immediately parent objects
don't let representations without parents, avoid
possible leaks and fix cases in which the applet relies
on ht eparent hyerarchy, such as ColorContext
2015-06-10 22:39:22 -07:00
Marco Martin
13bd6703c0 Merge branch 'mart/singleQmlEngineExperiment'
REVIEW:123736
2015-06-10 09:05:46 -07:00
Marco Martin
607b7bf584 whitelist applets/versions for separate engine
an attempt at transition without having to litter all
the metadata files: whitelist for now the applets in which
use the separate engine: when they have a version number
greater than 3 (arbitrary) switch over to shared engine

Change-Id: I354638527923734722bfcb0810703e20e32372d1
2015-05-19 14:45:12 +02:00
Aleix Pol Gonzalez
dedc3cc9ae Improve debug information for some plasmoids
I've been trying to figure out why there's so many qml scripts which errors always specify "<Unknown Files>".
This patch is not ideal, but improves the situation slightly.

REVIEW: 123575
2015-05-14 02:56:04 +02:00
Marco Martin
1b5805ba02 qmlobjectsharedengine in wallpapers
Change-Id: I6125cfa6d7a0cbf1f6f4ece132e9b824a447ddfb
2015-05-11 20:54:52 +02:00
Marco Martin
a595bf9f61 use QmlObjectSharedEngine in applets
Change-Id: Ie3f8c90b7fd601fdb2da23bd69e4b4b338cb190b
2015-05-11 20:44:57 +02:00
Marco Martin
9802e9c6d1 implify
Change-Id: I983400993050e2ebf735290387982845d27dc0d1
2015-05-11 14:51:01 +02:00
Marco Martin
bb0d245d5b support fallback to the multi engine
require SingleEngine in X-Plasma-RequiredExtensions to share the engine

Change-Id: I72873d2e370f98a069bb3dff0d58290277da1292
2015-05-11 13:47:15 +02:00
Marco Martin
509c5da619 consider the case of one engine per applet
rest of fallback mechanism still to be implemented

Change-Id: I2889075d72c776fea4a7db7e9ea638697acd907f
2015-05-11 12:02:34 +02:00
Marco Martin
ac2f76d9c8 heuristic for finding out what package we want
based on the absolute path requested

Change-Id: Ie99bfdc322a409e7ef275499eb8b254d834a98b7
2015-05-11 11:49:37 +02:00
Marco Martin
f9e61de51b hopefully fix Plasmoid attached property
Change-Id: I57d6d443b0a2f94e986e11e0e5cfb1ac6e6884bc
2015-05-08 20:23:00 +02:00
Marco Martin
dc288044ef rough experiment on giving all applets the same engine
it has a couple of big problems
Plasmoid attached property (should be easily fixable)
url interceptor (more tricky)

Change-Id: Ie75dfa97e097f43e8e5778f9b47fdff29224e5fc
2015-05-08 19:44:22 +02:00
David Edmundson
04f96779c1 Fix memory leak in AppletQuickItem
Change-Id: I7307cdd4f61fa87f6385a5c09b2fe722165e5199
REVIEW: 123492
2015-05-07 22:18:33 +01:00
Aleix Pol
71891996d4 -- unneeded includes 2015-04-30 19:29:50 +02:00
Antonis Tsiapaliokas
684e456f84 Fix typo
REVIEW: 123276
2015-04-07 17:47:36 +03:00
Aleix Pol
e3b8935d29 Fix applet loading
Don't request delayed initialization if we're not going to wait for it.

Reviewed by DjE
2015-02-21 14:06:29 +01:00
Marco Martin
9c855f05ab use the X-Plasma-RootPath property as default catalog
if X-Plasma-RootPath is set, use that instead of the plugin name as
default translation domain.
if an applet uses the package of another one, of course it has to use its
translation catalog as well

Change-Id: Ia23b261f449a560c3da19bc074e521139ae942c8
reviewed-by:Eike Hein <hein@kde.org>
2015-02-11 16:48:47 +01:00
Marco Martin
340a4680bf Different themes between desktop and dialogs
different themes between QtControl themes in applets
and in config dialogs: this allows QtQuickControls
to be freely usable in applets without worrying how they
will integrate

Change-Id: I696bdcbd78eb2e4df708367ac0d70d13c5d6cf12
2014-12-11 12:46:02 +01:00
Aleix Pol
8df7801d3b Don't crash if the plasmoid wasn't properly loaded
If d->applet->package().isValid(), then d->qmlObject->mainComponent()
is null.
This makes Plasma crash when a faulty plasmoid is loaded.

REVIEW: 120581
2014-10-14 15:45:14 +02:00
Marco Martin
5b50373b37 if rootObject exists, component is here and ready
Change-Id: I37deb527a04dde9ce458c5aea8e178b3d08b1b46
2014-09-25 18:02:59 +02:00
Marco Martin
a71697e68d the qquickitem con be resized before qml is created
AppletQuickItemPrivate::compactRepresentationCheck() must not be executed before
the qml parse is over and rootObject is here: the creation of the full or compact representation
would go very wrong in that case

Change-Id: Ib72f7d25f570a1ae34ada3330080350384d5c1e8
CCBUG:339329
2014-09-25 17:57:14 +02:00
Marco Martin
a54da78ce8 check for plugin validity 2014-09-01 18:17:22 +02:00
Sebastian Kügler
d8b2ef147f typo-- in comment 2014-08-28 23:30:29 +02:00
Marco Martin
6a190670ba create the Layout attached object in init()
always create it and create it immediately.
this way it's possible for other c++ users to find it
2014-08-27 13:37:56 +02:00
Vishesh Handa
d3de99eb1e AppletQuickItem: Do not remember the popup dialog size
The popup dialog can currently never be resized, so it doesn't make
sense to record its height in a config file. Additionally, this also
causes problems when applet writers change the size of their plasmoid.
Since the old size is saved in the config file, it is shown with the old
dimensions instead of the new ones.

REVIEW: 118849
BUG: 336070
2014-06-20 17:31:57 +02:00
Marco Martin
751b773db2 if the applet has width/height in root, use it
CCBUG:336291
2014-06-16 14:35:04 +02:00
Marco Martin
9c642fd700 use correct translation domain names 2014-06-06 14:41:21 +02:00
Marco Martin
d984a60a2d set translation domain for applets
their default translation domain has the same name as the plugin name
(as the catalog in plasma1)
2014-06-05 13:33:07 +02:00
Aleix Pol
036be80400 readability++
QWeakPointer -> QPointer
Remove .data() when not needed
2014-05-27 17:25:25 +02:00
Aleix Pol
3d77ac5008 Make AppletQuickItem return QQuickItems
It was returning QObjects on most places and it didn't make much sense
since since it was just expecting the API users to qobject_cast to
QQuickItem to do anything with these. Considering that fullRepresentation
can be anything other than a graphic item doesn't sound good anyway.
2014-05-27 16:59:48 +02:00