69 Commits

Author SHA1 Message Date
Kai Uwe Broulik
e92ed94d9d Remove PLASMA_NO_KIO option
It is a remnant of the Plasma Active days and didn't even compile.
This patch only removes those ifdefs, it doesn't fix any issues I found during (e.g. double lookups or the fact
that KRun::autoDelete is the default now)

Differential Revision: https://phabricator.kde.org/D16295
2018-10-18 16:44:27 +02:00
Kai Uwe Broulik
938cef210c Get rid of deprecated QWeakPointer usage
Replace by QPointer

Differential Revision: https://phabricator.kde.org/D14819
2018-08-17 15:44:08 +02:00
Kai Uwe Broulik
af01c2e953 [Plasma PluginLoader] Cache plugins during startup
Similar to KPackage's cache this speeds up startup where plugins are repeatedly looked up.
Especially the fallback path of looking in the plugin root directly causes quite some slowdown.

Differential Revision: https://phabricator.kde.org/D14009
2018-07-23 16:24:27 +02:00
Friedrich W. H. Kossebau
30cbc2dc33 Use more nullptr 2018-07-02 00:16:21 +02:00
Laurent Montel
e690c4726e Warning-- 2018-04-13 13:58:44 +02:00
Marco Martin
604aba0e24 reuse KPackage instance between PluginLoader and Applet
Summary:
to minimize metadata lookups, pass the kpackage created in pluginloader
to the applet itself as args. the args structure will be used only by the
internal constructor and applet sublasses will get their args unaltered

Test Plan:
plasma loads correctly, from 3 kpackage instantiation per applet to 2
(last is in the access manager)

Reviewers: #plasma, davidedmundson

Reviewed By: #plasma, davidedmundson

Subscribers: davidedmundson, plasma-devel, #frameworks

Tags: #plasma, #frameworks

Differential Revision: https://phabricator.kde.org/D9123
2017-12-09 10:37:08 +01:00
Aleix Pol
b8b8a69fd1 Remove implicit string casting
Summary: Follow the KF5 guidelines

Test Plan: Plasma shell starts

Reviewers: #plasma, #frameworks, sebas

Reviewed By: #plasma, sebas

Subscribers: plasma-devel

Tags: #plasma, #frameworks

Differential Revision: https://phabricator.kde.org/D9108
2017-12-02 15:44:14 +01:00
David Edmundson
3a0f61b559 Load translations from KPackage files if bundled
Test Plan:
Installed battery monitor locally with kpackagetool5 -i
moved x-test .po file from being installed systemwide to only being
inside the bundle
still get xx everywhere

BUG: 374825

Reviewers: #plasma, mart

Reviewed By: mart

Subscribers: plasma-devel, #frameworks

Tags: #plasma, #frameworks

Differential Revision: https://phabricator.kde.org/D5209
2017-07-11 13:19:10 +01:00
Aleix Pol
563011436d Port a bunch of classes away from Plasma::Package
Summary: Ported away some classes, removes many unneeded casts that happen when starting.

Test Plan: Tests still pass, plasma starts properly

Reviewers: #frameworks, #plasma, mart

Reviewed By: #plasma, mart

Subscribers: davidedmundson, mart, plasma-devel

Tags: #plasma, #frameworks

Differential Revision: https://phabricator.kde.org/D6041
2017-06-06 15:11:25 +02:00
Marco Martin
94edfa149f use KPluginMetaData::readStringList()
Summary:
replace the last remaining place in pluginloader
where a string list was read as a normal string

Change-Id: I66e7f563745466e31cfb23492fdb081806b1e406

Test Plan:
related to D3902
dropping of files on containment still works

Reviewers: broulik, #plasma, davidedmundson

Reviewed By: #plasma, davidedmundson

Subscribers: plasma-devel, #frameworks

Tags: #plasma, #frameworks

Differential Revision: https://phabricator.kde.org/D3936
2017-01-03 17:19:10 +01:00
Kai Uwe Broulik
a0f3d2429d Fix X-Plasma-Drop* types
They are supposed to be lists. This fixes dropping folders on desktops to create a FolderView.
Dropping trash:/ also offers to create a trash applet again.

BUG: 374418

Differential Revision: https://phabricator.kde.org/D3902
2017-01-03 09:31:21 +01:00
Martin Gräßlin
4798310ed7 Deprecate Plasma::Package API in PluginLoader
Summary:
As Plasma::Package is deprecated API using Plasma::Package should also
be deprecated.

Reviewers: #plasma, #frameworks

Subscribers: plasma-devel

Tags: #plasma

Differential Revision: https://phabricator.kde.org/D3812
2016-12-27 18:20:35 +01:00
Aleix Pol
edbccc5fca Dependency resolution code was moved to KPackage
Summary: Depends on D3299.

Test Plan: plasma still starts with all plasmoids

Reviewers: #plasma, mart

Reviewed By: mart

Subscribers: plasma-devel

Tags: #plasma

Differential Revision: https://phabricator.kde.org/D3311
2016-11-08 16:50:18 +01:00
David Edmundson
07c978f619 Remove unused member var
REVIEW: 129104
2016-10-17 16:44:54 +01:00
Kai Uwe Broulik
e7e0344d35 [PluginLoader] Use operator<< for finalArgs instead of initializer list
When appending a list to an existing list using append or operator<< each item in the list
is added individually whereas with initializer list it just adds the entire list as one entry.

This caused the applet args to never be empty usually and resulted in externalData being
emitted in init() with a QVariantList as argument.

While this didn't do much for most applets it did break FolderView (and potentially others)
which updates its URL in response to this signal and stored the "data" it got in
plasmoid.configuration.url. FolderView's model did not accept this broken data [1] so the
folder would still work initially. On next startup, however, it loaded said value from
config and just went blank.

[1] "file:///usr/share/plasma/plasmoids/org.kde.desktopcontainment/contents/ui/FolderViewLayer.qml:202:14: Unable to assign QJSValue to QString"

REVIEW: 129158
2016-10-13 10:18:06 +02:00
Aleix Pol
0ebe2ca1fa Don't enforce metadata.desktop, cleanup constructor
Makes it possible to use plugins that offer a metadata.json file.
Define the service type when falling back to the desktop file parser, so
the type system is proper.
Don't destroy a KPluginMetadata tuple to instanciate it right away.

REVIEW: 129102
2016-10-10 16:28:13 +02:00
David Edmundson
820baec72e Avoid creating a KPluginInfo from a KPluginMetaData instance
It's not needed, gives a (very) tiny performance boost and is a bit
cleaner.

REVIEW: 128904
2016-09-14 13:39:10 +01:00
Aleix Pol
67d882037c Define Plasma PackageStructure as regular KPackage PackageStructure plugins
This way we can use kpackagetool5 against them (see RR 128590).

REVIEW: 128596
2016-08-04 19:23:59 +02:00
David Faure
967e81611f PluginLoader::loadApplet: restore compatibility for misinstalled applets.
Summary:
The notifications applet installs the .so into the toplevel plugins dir,
and my earlier code removal broke the loading of that applet.

Reviewers: lbeltrame, mart

Reviewed By: mart

Differential Revision: https://phabricator.kde.org/D1851
2016-06-13 22:47:01 +02:00
David Faure
107c28d361 PluginLoader: improve error message about plugin version compatibility
Summary:
The name of the actual plugin was missing, making the warning rather useless.
Since this is only used within PluginLoader, I added a private function
isPluginVersionCompatible(KPluginLoader), taking code from
Plasma::isPluginVersionCompatible(uint). That one could probably be deprecated,
although no public replacement would be available, just "use PluginLoader".

Test Plan: plasmoidviewer -a org.kde.plasma.digitalclock

Reviewers: mart

Reviewed By: mart

Tags: #frameworks

Differential Revision: https://phabricator.kde.org/D1825
2016-06-12 18:13:12 +02:00
David Faure
181869e636 Remove erroneous plugin-loading compat code.
Summary:
This code was passing PREFIX/share/plasma/plasmoids/org.kde.desktopcontainment/metadata.desktop
to KPluginLoader (which expects a .so!), which led to warning noise
"Plasma::isPluginVersionCompatible: unversioned plugin detected, may result in instability"
(since that code tries to find a version symbol in the .so).

The reason why KPluginInfo::libraryPath() returns the .desktop file seems
to be a KPluginMetaData misuse, but this is compat code marked as "to be removed"
so I didn't fully debug the KPluginMetaData misuse.

Test Plan: plasmoidviewer -a org.kde.plasma.digitalclock

Reviewers: mart

Reviewed By: mart

Differential Revision: https://phabricator.kde.org/D1827
2016-06-12 18:12:02 +02:00
Marco Martin
e55eb59dbd add two missing categories 2016-03-09 12:44:47 +01:00
Marco Martin
5b0ec83c36 Revert "mechanism for coronas to load plasmoids from custom folders"
This reverts commit 2751b72835f1b6fdbca08846076bd5a8e6d2bb41.
2016-03-08 15:39:50 +01:00
Marco Martin
12ea79b341 Merge branch 'mart/customShell'
Conflicts:
	examples/CMakeLists.txt
	src/plasma/pluginloader.cpp
2016-03-08 15:38:31 +01:00
Marco Martin
40b99a9122 if path is passed, pick the tail
PluginLoader::loadApplet works both by passing a simple plugin
name and a full path of a plasmoid package.

However, when loading the optional C++ plugin, we have to look
in the standard plasmoid plugin path, so only consider the
tail of the path name, as is guaranteed that part is equal to
the plugin name.

BUG:359902
Change-Id: Ic7300b7c12d7693bcb5590e29de780109a8ff81c
2016-02-29 17:31:38 +01:00
Aleix Pol
9f62532674 Fix most of Clazy warnings in plasma-framework
REVIEW: 126672
2016-02-29 00:13:41 +01:00
Martin Klapetek
76186339f6 [libplasma] Add categorized debug output 2015-12-15 16:56:40 -05:00
Marco Martin
2751b72835 mechanism for coronas to load plasmoids from custom folders
applications such as Amarok can look for their plasmoids in
their own data dir in order to not have all mixed up
2015-12-01 17:39:05 +01:00
Nick Shaforostoff
c7c2980f14 qstring optimizations
REVIEW: 126148
2015-11-27 20:03:48 +00:00
David Edmundson
7061235418 Handle an invalid metadata in PluginLoader
REVIEW: 124823
2015-08-20 16:10:03 +01:00
Bhushan Shah
084d527638 Print useful warning when we can not get valid KPluginInfo
We can not generate proper PluginInfo most likely because metadata was
not valid, printing metadata itself will not be useful and will result
in printing message like,

Could not load plugin info for plugin : "" skipping plugin

Which is 0% useful.
2015-07-16 19:13:44 +05:30
David Edmundson
99da4651c3 Verify KService has valid plugin info before using it
Change-Id: I361bb9f49e9fab108e524e5d321d114fd1fc4aae
REVIEW: 124062
2015-06-14 10:16:54 -07:00
Marco Martin
a7d4e52aed get rid of "Could not load applet" message
is misleading and not correct anymore

Change-Id: I6429d522d92d94661d14d618f20e1c604140a6a9
2015-05-11 17:48:01 +02:00
Aleix Pol
ec6afe2a8a Don't use the DataEngineStructure for Applets
Use Plasmoid instead.

REVIEW: 123690
2015-05-08 19:24:38 +02:00
Marco Martin
ea924b1469 port libplasma away from sycoca as much as possible
this ports most of libplasma away from sycoca, using instead
a combination of KPluginLoader and KPackage::PackageLoader instead
(so eventually using their own little caches instead of the
global sycoca cache)
a kservicetypetrader call is left in the loading of
containmentactions since is the only way to make an older
workspace still work, but is only a fallback, so containmentactions
in plasma-workspace can be ported eventually as well

Change-Id: Ie9579c3e01284f6d97043e22d01bbe63d3c3f45a
REVIEW:123626
2015-05-07 16:26:37 +02:00
Sebastian Kügler
2b1a487428 Use KPluginLoader to load dataengines
KPluginLoader has all the needed machinery to identify a plugin by its
pluginId. No need to use the query parser here, replace it with a
lambda.

Look for C++ dataengines first. These are much more common, especially
in essential cases. By looking up the plugins through KPluginLoader
first, we can save querying ksycoca.

REVIEW:123297
CHANGELOG:Use KPluginLoader instead of ksycoca for loading C++ dataengines
2015-04-09 01:10:52 +02:00
Marco Martin
e2e7cb1cab remove PlasmaKPackageLoader
use a package of type KPackage/GenericQML for the toolbox instead

Change-Id: I5e559535338f093b3cd3734ef9c3906bb20cf001
2015-02-20 18:08:48 +01:00
Marco Martin
2bbb9dda7f if an inexisting library was specified, fallback
fallback to empty Applet/containment if an inexisting library
was specified in the metadata file.
this fixes old applets with incorrect metadata
BUG:344281

Change-Id: I0efc9dc32dee0e6fe4f3757065004a19f6e01844
2015-02-20 13:37:09 +01:00
Marco Martin
bda055367f use an internal package loader
internal kpackage loader used to load Plasma/generic plasma/plasmoid etc
directly from kpackage

Change-Id: Ibd91b0d18b233291978ac667f7bf768a8bdc3c9b
2015-02-20 09:58:57 +01:00
Marco Martin
462ad8a6ca support for C++ applets
make possible for an applet to be implemented in c++ but still
have the qml package with the usual api, this was supposed to
be supported from the beginning.

if a c++ applet has been loaded, make available the property
plasmoid.nativeInterface to the qml part, exposing the subclasses
Applet instance with all eventual extra propertiels/slots.

if no c++ plugin is present, appletInterface will be dummy/not available

this (besides limiting a bit the qml import rabbit procreation)
makes available some things not available to normal private imports:
* access to applet config() to save more complex things compared to what kconfigxt allows
  or save/load stuff from the c++ part
* access to containment()/corona(), may be useful for containment implementations
* easier port for old very big applets such as comics/weather

Change-Id: I65117660043de3a60ad58c77b086f686683d4d8c
2015-02-17 13:43:33 +01:00
Marco Martin
a629fe4d8f migrate to KPackage
Plasma::Package internally uses KPackage, being a pure wrapper.
old client code and old packagestructures still work using the wrapper.
old workspace code that is not directly using kpackage continues to work correctly

Change-Id: I05f95e8d05e3b67759973c4009e3753c61b1dcce
2014-12-29 13:56:52 +01:00
Marco Martin
919694a1de get rid of internal ShellPackage
ShellPackage is a plugin in plasma-workspace now, don't duplicate

Change-Id: I77edf63acf6c99314f6062d7ef2f55a129727013
2014-09-15 18:20:34 +02:00
Aaron Seigo
cd87344d80 make PackageStructure plugins use the json method as with DataEngines 2014-08-29 17:24:43 +02:00
Aaron Seigo
aa99a4f15c tidy up the data engine plugin loading code 2014-08-29 17:24:43 +02:00
Aaron Seigo
928d5e63a5 bool Package::hasValidStructure() const
needed to differentiate between packages with structures and without
before path is set
2014-08-08 14:12:22 +02:00
Marco Martin
d266a9594b valid package internalload even if just structure
consider a loaded package valid even if !isvalid() but does have some file
that indicates it has a valid packagestructure.
for how packages are loaded now, a package is never valid at first if has a required file:
because the path gets set only after the package is loaded
this fixes wallpaper loading
2014-08-08 11:29:23 +02:00
Hrvoje Senjan
a4e2b38d51 unbreak dataengine loading after PLUGIN_INSTALL_DIR change in e-c-m 2014-04-28 02:42:02 +02:00
Aleix Pol
9cd8f9fbeb Port plasma code to PLASMA_RELATIVE_DATA_INSTALL_DIR 2014-04-27 23:06:32 +02:00
Kevin Ottens
72ba7b4146 Apply the astyle-kdelibs script 2014-04-26 01:48:37 +02:00
Marco Martin
a2b436aef8 remove all references to runners 2014-04-16 18:56:22 +02:00