diff --git a/CMakeLists.txt b/CMakeLists.txt index f542c2302..d9c78cf4c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 2.8.12) project(Plasma) # ECM setup -find_package(ECM 1.1.0 REQUIRED NO_MODULE) +find_package(ECM 1.2.0 REQUIRED NO_MODULE) set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR}) include(FeatureSummary) @@ -16,8 +16,8 @@ include(ECMPackageConfigHelpers) include(ECMSetupVersion) include(KDEFrameworkCompilerSettings) -set(KF5_VERSION "5.1.0") # handled by release scripts -set(KF5_DEP_VERSION "5.1.0") # handled by release scripts +set(KF5_VERSION "5.3.0") # handled by release scripts +set(KF5_DEP_VERSION "5.2.0") # handled by release scripts ecm_setup_version(${KF5_VERSION} VARIABLE_PREFIX PLASMA diff --git a/README.md b/README.md index 09a4176aa..06841beb6 100644 --- a/README.md +++ b/README.md @@ -3,9 +3,23 @@ The plasma framework provides the foundations that can be used to build a primar ## Introduction The plasma framework provides the following: +- QML components - A C++ library: libplasma - Script engines -- QML components + +## QML components +### org.kde.plasma.core + +Bindings for libplasma functionality, such as DataEngine and FrameSvg, see @ref core. + +### org.kde.plasma.components +Graphical components for common items such as buttons, lineedits, tabbars and so on. Compatible subset of the MeeGo components used on the N9, see @ref plasmacomponents. + +### org.kde.plasma.extras +Extra graphical components that extend org.kde.plasma.components but are not in the standard api, see @ref plasmaextracomponents. + +### org.kde.plasma.plasmoid +Attached properties for manipulating the current applet or containment, see @ref libplasmaquick ## libplasma This C++ library provides: @@ -19,14 +33,3 @@ See @ref libplasma. ## Script engines Provides support to create applets or containments in various scripting languages. -## QML components -### org.kde.plasma.core - -Bindings for libplasma functionality, such as DataEngine and FrameSvg, see @ref core. - -### org.kde.plasma.components -Graphical components for common items such as buttons, lineedits, tabbars and so on. Compatible subset of the MeeGo components used on the N9, see @ref plasmacomponents. - -### org.kde.plasma.extras -Extra graphical components that extend org.kde.plasma.components but are not in the standard api, see @ref plasmaextracomponents. - diff --git a/autotests/CMakeLists.txt b/autotests/CMakeLists.txt index 4e64f38dc..544834c0c 100644 --- a/autotests/CMakeLists.txt +++ b/autotests/CMakeLists.txt @@ -37,6 +37,7 @@ MACRO(PLASMA_UNIT_TESTS) ENDMACRO(PLASMA_UNIT_TESTS) PLASMA_UNIT_TESTS( + fallbackpackagetest packagestructuretest packageurlinterceptortest pluginloadertest diff --git a/autotests/coronatest.cpp b/autotests/coronatest.cpp index 58e1b6996..3967b8c9e 100644 --- a/autotests/coronatest.cpp +++ b/autotests/coronatest.cpp @@ -129,7 +129,7 @@ void CoronaTest::cleanupTestCase() void CoronaTest::restore() { m_corona->loadLayout("plasma-test-appletsrc"); - QCOMPARE(m_corona->containments().count(), 1); + QCOMPARE(m_corona->containments().count(), 2); QCOMPARE(m_corona->containments().first()->applets().count(), 2); } diff --git a/autotests/data/signedPackage/metadata.desktop b/autotests/data/signedPackage/metadata.desktop index 85a6003af..854f9d61f 100644 --- a/autotests/data/signedPackage/metadata.desktop +++ b/autotests/data/signedPackage/metadata.desktop @@ -6,6 +6,7 @@ Name[de]=JavaScript-Datei-Aktionen Name[en_GB]=JavaScript File Operations Name[es]=Operaciones de archivo JavaScript Name[fi]=JavaScript-tiedostotoiminnot +Name[fr]=Opérations sur les fichiers en JavaScript Name[gl]=Operacións de ficheiro JavaScript Name[hu]=JavaScript fájlműveletek Name[ia]=Operationes de file de JavaScript @@ -34,7 +35,9 @@ Comment[de]=Demonstriert den Zugriff auf Daten über HTTP in JavaScript Comment[en_GB]=Demonstrates accessing data via HTTP in JavaScript Comment[es]=Demuestra el acceso a datos usando HTTP en JavaScript Comment[fi]=Demonstroi datan hakemista HTTP:n välityksellä käyttäen JavaScriptiä +Comment[fr]=Illustre l'accès aux données via HTTP en JavaScript Comment[gl]=Demostra o acceso a datos mediante HTTP en JavaScript +Comment[hu]=Demonstrálja adatok elérését HTTP-n keresztül JavaScriptben Comment[ia]=Il demonstra como acceder datos via HTTP inJavaScript Comment[mr]=जावास्क्रिप्ट मध्ये डेटा HTTP ने बघण्याचे प्रदर्शन Comment[nds]=Wiest, wodennig een op Daten över HTTP in JavaScript togriepen kann diff --git a/autotests/data/testfallbackpackage/contents/ui/main.qml b/autotests/data/testfallbackpackage/contents/ui/main.qml new file mode 100644 index 000000000..cde850a9d --- /dev/null +++ b/autotests/data/testfallbackpackage/contents/ui/main.qml @@ -0,0 +1,7 @@ +import QtQuick 2.0 + +Rectangle { + id: root + color: "darkblue" +} + diff --git a/autotests/data/testfallbackpackage/metadata.desktop b/autotests/data/testfallbackpackage/metadata.desktop new file mode 100644 index 000000000..4fde98c1c --- /dev/null +++ b/autotests/data/testfallbackpackage/metadata.desktop @@ -0,0 +1,33 @@ +[Desktop Entry] +Encoding=UTF-8 +Keywords= +Name=Test Fallback Package +Name[ca]=Paquet de proves alternatiu +Name[en_GB]=Test Fallback Package +Name[es]=Probar el paquete al que recurrir +Name[hu]=Tartalék tesztcsomag +Name[nl]=Testterugvalpakket +Name[pl]=Awaryjny pakiet próbny +Name[pt]=Pacote de Teste +Name[pt_BR]=Pacote de teste secundário +Name[sk]=Testovací záchranný balík +Name[sl]=Preizkusni zasilni paket +Name[sr]=Пробни одступни пакет +Name[sr@ijekavian]=Пробни одступни пакет +Name[sr@ijekavianlatin]=Probni odstupni paket +Name[sr@latin]=Probni odstupni paket +Name[sv]=Reservtestpaket +Name[uk]=Тестовий резервний пакунок +Name[x-test]=xxTest Fallback Packagexx +Name[zh_TW]=測試預設套件 +Type=Service + +X-KDE-ParentApp= +X-KDE-PluginInfo-Author=Marco Martin +X-KDE-PluginInfo-Category= +X-KDE-PluginInfo-Email=mart@kde.org +X-KDE-PluginInfo-License=GPLv2+ +X-KDE-PluginInfo-Name=org.kde.testfallbackpackage +X-KDE-PluginInfo-Version= +X-KDE-PluginInfo-Website= +X-Plasma-MainScript=ui/main.qml diff --git a/autotests/data/testpackage/contents/ui/otherfile.qml b/autotests/data/testpackage/contents/ui/otherfile.qml new file mode 100644 index 000000000..cde850a9d --- /dev/null +++ b/autotests/data/testpackage/contents/ui/otherfile.qml @@ -0,0 +1,7 @@ +import QtQuick 2.0 + +Rectangle { + id: root + color: "darkblue" +} + diff --git a/autotests/data/testpackage/metadata.desktop b/autotests/data/testpackage/metadata.desktop index 925330f19..42d5256a8 100644 --- a/autotests/data/testpackage/metadata.desktop +++ b/autotests/data/testpackage/metadata.desktop @@ -7,10 +7,11 @@ Name[bs]=Testni paket Name[ca]=Paquet de proves Name[de]=Test-Paket Name[en_GB]=Test Package -Name[es]=Paquete de pruebas +Name[es]=Probar el paquete Name[fi]=Testipaketti +Name[fr]=Paquet de test Name[gl]=Paquete de probas -Name[hu]=Teszt csomag +Name[hu]=Tesztcsomag Name[ia]=Pacchetto de prova Name[it]=Pacchetto di test Name[mr]=चाचणी पॅकेज diff --git a/autotests/fallbackpackagetest.cpp b/autotests/fallbackpackagetest.cpp new file mode 100644 index 000000000..91bc6e93d --- /dev/null +++ b/autotests/fallbackpackagetest.cpp @@ -0,0 +1,71 @@ +/****************************************************************************** +* Copyright 2007 by Aaron Seigo * +* Copyright 2014 Marco Martin * +* * +* This library is free software; you can redistribute it and/or * +* modify it under the terms of the GNU Library General Public * +* License as published by the Free Software Foundation; either * +* version 2 of the License, or (at your option) any later version. * +* * +* This library is distributed in the hope that it will be useful, * +* but WITHOUT ANY WARRANTY; without even the implied warranty of * +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +* Library General Public License for more details. * +* * +* You should have received a copy of the GNU Library General Public License * +* along with this library; see the file COPYING.LIB. If not, write to * +* the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * +* Boston, MA 02110-1301, USA. * +*******************************************************************************/ + +#include "fallbackpackagetest.h" + + +#include + +#include "packagestructure.h" +#include "pluginloader.h" + +void FallbackPackageTest::initTestCase() +{ + m_fallPackagePath = QFINDTESTDATA("data/testpackage"); + m_fallbackPkg = Plasma::PluginLoader::self()->loadPackage("Plasma/Generic"); + m_fallbackPkg.setPath(m_fallPackagePath); + + m_packagePath = QFINDTESTDATA("data/testfallbackpackage"); + m_pkg = Plasma::PluginLoader::self()->loadPackage("Plasma/Generic"); + m_pkg.setPath(m_packagePath); +} + +void FallbackPackageTest::beforeFallback() +{ + QVERIFY(m_fallbackPkg.hasValidStructure()); + QVERIFY(m_pkg.hasValidStructure()); + + //m_fallbackPkg should have otherfile.qml, m_pkg shouldn't + QVERIFY(!m_fallbackPkg.filePath("ui", "otherfile.qml").isEmpty()); + QVERIFY(m_pkg.filePath("ui", "otherfile.qml").isEmpty()); +} + +void FallbackPackageTest::afterFallback() +{ + m_pkg.setFallbackPackage(m_fallbackPkg); + + //after setting the fallback, m_pkg should resolve the exact same file as m_fallbackPkg + // for otherfile.qml + QVERIFY(!m_pkg.filePath("ui", "otherfile.qml").isEmpty()); + QCOMPARE(m_fallbackPkg.filePath("ui", "otherfile.qml"), m_pkg.filePath("ui", "otherfile.qml")); + QVERIFY(m_fallbackPkg.filePath("mainscript") != m_pkg.filePath("mainscript")); +} + +void FallbackPackageTest::cycle() +{ + m_fallbackPkg.setFallbackPackage(m_pkg); + m_pkg.setFallbackPackage(m_fallbackPkg); + + //The cycle should have been detected and filePath should take a not infinite time + QTRY_COMPARE_WITH_TIMEOUT(m_fallbackPkg.filePath("ui", "otherfile.qml"), m_pkg.filePath("ui", "otherfile.qml"), 1000); +} + +QTEST_MAIN(FallbackPackageTest) + diff --git a/autotests/fallbackpackagetest.h b/autotests/fallbackpackagetest.h new file mode 100644 index 000000000..a1bdb4a3c --- /dev/null +++ b/autotests/fallbackpackagetest.h @@ -0,0 +1,46 @@ +/****************************************************************************** +* Copyright 2007 by Aaron Seigo * +* Copyright 2014 Marco Martin * +* * +* This library is free software; you can redistribute it and/or * +* modify it under the terms of the GNU Library General Public * +* License as published by the Free Software Foundation; either * +* version 2 of the License, or (at your option) any later version. * +* * +* This library is distributed in the hope that it will be useful, * +* but WITHOUT ANY WARRANTY; without even the implied warranty of * +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +* Library General Public License for more details. * +* * +* You should have received a copy of the GNU Library General Public License * +* along with this library; see the file COPYING.LIB. If not, write to * +* the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * +* Boston, MA 02110-1301, USA. * +*******************************************************************************/ + +#ifndef FALLBACKPACKAGETEST_H + +#include + +#include "plasma/package.h" + +class FallbackPackageTest : public QObject +{ + Q_OBJECT + +private Q_SLOTS: + void initTestCase(); + void beforeFallback(); + void afterFallback(); + void cycle(); + + +private: + Plasma::Package m_pkg; + Plasma::Package m_fallbackPkg; + QString m_packagePath; + QString m_fallPackagePath; +}; + +#endif + diff --git a/autotests/packagemetadatatest.desktop b/autotests/packagemetadatatest.desktop index 5e8200830..51db67318 100644 --- a/autotests/packagemetadatatest.desktop +++ b/autotests/packagemetadatatest.desktop @@ -7,7 +7,9 @@ Name[de]=Testdatei für Paket-Metadaten Name[en_GB]=Package metadata test file Name[es]=Archivo de pruebas de metadatos de paquete Name[fi]=Pakettimetatietojen testitiedosto +Name[fr]=Fichier de test de métadonnées de paquets Name[gl]=Ficheiro de proba de metadatos de paquete +Name[hu]=Tesztfájl csomagok metaadatához Name[ia]=File de prova del pacchetto metadata Name[mr]=पॅकेज मेटाडेटा चाचणी फाईल Name[nds]=Paketmetadaten-Testdatei @@ -37,7 +39,9 @@ Comment[de]=Eine Test-Desktop-Datei zum Testen der Klasse „PackageMetaData“. Comment[en_GB]=A test desktop file to test the PackageMetaData class. Comment[es]=Un archivo de escritorio para probar la clase PackageMetaData. Comment[fi]=Kokeellinen desktop-tiedosto PackageMetaData-luokan testaamiseen. +Comment[fr]=Un fichier « desktop » de test pour tester la classe PackageMetaData. Comment[gl]=Un ficheiro de escritorio de proba para probar a clase PackageMetaData. +Comment[hu]=Teszt .desktop fájl a PackageMetaData osztály teszteléséhez. Comment[ia]=Un file de prova del scriptorio pro provar le classe PackageMetaData. Comment[mr]=पॅकेज मेटाडेटा वर्ग चाचणीसाठी चाचणी डेस्कटॉप फाईल. Comment[nds]=En Test-Schriefdischdatei för't Utproberen vun de Klass „PackageMetaData“. diff --git a/autotests/plasma-test-appletsrc b/autotests/plasma-test-appletsrc index 677d9f8f4..972cd5997 100644 --- a/autotests/plasma-test-appletsrc +++ b/autotests/plasma-test-appletsrc @@ -14,5 +14,13 @@ plugin=invalid immutability=1 plugin=simpleapplet +#empty panel: should emit complete even if empty +[Containments][4] +formfactor=2 +immutability=1 +lastScreen=0 +location=4 +plugin=simplecontainment + [General] immutability=1 diff --git a/examples/applets/bugreport/metadata.desktop b/examples/applets/bugreport/metadata.desktop index 4aa1898e1..3c7071da0 100644 --- a/examples/applets/bugreport/metadata.desktop +++ b/examples/applets/bugreport/metadata.desktop @@ -6,7 +6,9 @@ Comment[de]=Einen Fehler in Plasma berichten Comment[en_GB]=Report a bug in Plasma Comment[es]=Informar de un fallo en Plasma Comment[fi]=Ilmoita viasta Plasmassa +Comment[fr]=Rapporter un bogue dans Plasma Comment[gl]=Informar dun erro en Plasma +Comment[hu]=Hiba jelentése a Plasmában Comment[ia]=Reporta un bug in Plasma Comment[it]=Segnala un bug in Plasma Comment[nds]=En Fehler binnen Plasma künnig maken @@ -33,7 +35,9 @@ Keywords[de]=plasma,bugzilla,Fehler,Entwicklung,Unterstützung Keywords[en_GB]=plasma,bugzilla,bug,development,support Keywords[es]=plasma,bugzilla,fallo,desarrollo,soporte Keywords[fi]=plasma,bugzilla,bug,bugi,vika,virhe,development,kehitys,kehittäminen,support,tuki +Keywords[fr]=plasma,bugzilla,bug,développement,support Keywords[gl]=plasma,bugzilla,erro,desenvolvemento,soporte,asistencia técnica +Keywords[hu]=plasma,bugzilla,hiba,fejlesztés,támogatás Keywords[ia]=plasma,bugzilla,bug,development,support Keywords[it]=plasma,bugzilla,bug,sviluppo,supporto Keywords[nds]=Plasma,Bugzilla,Fehler,utwickeln,Support,ünnerstütten @@ -58,7 +62,9 @@ Name[de]=Fehler Name[en_GB]=Bug Name[es]=Fallo Name[fi]=Vika +Name[fr]=Bogue Name[gl]=Erro +Name[hu]=Hiba Name[ia]=Bug Name[it]=Bug Name[nds]=Fehler diff --git a/examples/applets/compactrepresentation/metadata.desktop b/examples/applets/compactrepresentation/metadata.desktop index 97d63528b..5ea902bd9 100644 --- a/examples/applets/compactrepresentation/metadata.desktop +++ b/examples/applets/compactrepresentation/metadata.desktop @@ -6,10 +6,12 @@ Name=hello world Name[ar]=أهلًا يا عالم Name[bs]=zdravo raja Name[ca]=hola món +Name[cs]=Hello World Name[de]=Hallo Welt Name[en_GB]=hello world Name[es]=hola mundo Name[fi]=Hei maailma +Name[fr]=Bonjour tout le monde Name[gl]=Ola mundo Name[hu]=helló, világ Name[ia]=Salute mundo diff --git a/examples/applets/conditionalloader/metadata.desktop b/examples/applets/conditionalloader/metadata.desktop index c1dd580d6..d3524da72 100644 --- a/examples/applets/conditionalloader/metadata.desktop +++ b/examples/applets/conditionalloader/metadata.desktop @@ -8,6 +8,7 @@ Name[de]=Miniprogrammtest Name[en_GB]=Applet Test Name[es]=Prueba de miniaplicación Name[fi]=Sovelmatesti +Name[fr]=Applet test Name[gl]=Proba de applet Name[hu]=Kisalkalmazás teszt Name[ia]=Applet Test (Prova de applet) diff --git a/examples/applets/config/metadata.desktop b/examples/applets/config/metadata.desktop index 17c64f2d9..1b5c6b59b 100644 --- a/examples/applets/config/metadata.desktop +++ b/examples/applets/config/metadata.desktop @@ -8,6 +8,7 @@ Name[de]=Einrichtungstest Name[en_GB]=Configuration test Name[es]=Prueba de configuración Name[fi]=Asetustesti +Name[fr]=Test de configuration Name[gl]=Proba de configuración Name[hu]=Beállításteszt Name[ia]=Prova de configuration diff --git a/examples/applets/dataenginemodel/metadata.desktop b/examples/applets/dataenginemodel/metadata.desktop index 8ddcced02..14d0d1583 100644 --- a/examples/applets/dataenginemodel/metadata.desktop +++ b/examples/applets/dataenginemodel/metadata.desktop @@ -5,7 +5,9 @@ Comment[de]=Miniprogramm-Beispiel, das die Anwendung von Modellen eingebettet in Comment[en_GB]=Example applet that shows how to use Models embedded in DataEngines Comment[es]=Miniaplicación de ejemplo que muestra cómo usar modelos empotrados en motores de datos Comment[fi]=Esimerkkisovelma, joka näyttää, miten tietomoottoreihin upotettuja malleja käytetään +Comment[fr]=Exemple d'applet qui montre comment utiliser les modèles embarqués dans DataEngines Comment[gl]=Unha applet de exemplo que mostra como usar os modelos incorporados nos DataEngines +Comment[hu]=Példa kisalkalmazás a DataEngine-be ágyazott modellek használatának bemutatására Comment[ia]=Applet de exemplo que monstra como usar Models (modellos) insertate in DataEngines (Motores de datos) Comment[nds]=Bispill-Lüttprogramm, dat wiest, wodennig sik Modellen binnen Datenkarns bruken laat Comment[nl]=Voorbeeld van applet dat toont hoe modellen ingebed in gegevensengines zijn te gebruiken @@ -31,6 +33,7 @@ Name[de]=Datenquellen-Modell Name[en_GB]=Dataengine model Name[es]=Modelo de motor de datos Name[fi]=Tietomoottorimalli +Name[fr]=Modèle DataEngine Name[gl]=Modelo de Dataengine Name[hu]=Adatmotor modell Name[ia]=Modello de Dataengine (Motor de datos) diff --git a/examples/applets/helloworld/metadata.desktop b/examples/applets/helloworld/metadata.desktop index a295404e7..ee5ad5206 100644 --- a/examples/applets/helloworld/metadata.desktop +++ b/examples/applets/helloworld/metadata.desktop @@ -6,10 +6,12 @@ Name=hello world Name[ar]=أهلًا يا عالم Name[bs]=zdravo raja Name[ca]=hola món +Name[cs]=Hello World Name[de]=Hallo Welt Name[en_GB]=hello world Name[es]=hola mundo Name[fi]=Hei maailma +Name[fr]=Bonjour tout le monde Name[gl]=Ola mundo Name[hu]=helló, világ Name[ia]=Salute mundo diff --git a/examples/applets/notes/metadata.desktop b/examples/applets/notes/metadata.desktop index 54f5af354..9dbab445c 100644 --- a/examples/applets/notes/metadata.desktop +++ b/examples/applets/notes/metadata.desktop @@ -6,7 +6,9 @@ Comment[de]=Beispiel zur Verwaltung von abgelegten Daten Comment[en_GB]=Example on how to manage Drop data Comment[es]=Ejemplo sobre cómo usar los datos soltados Comment[fi]=Esimerkki tiedon pudottamisen käsittelemisestä +Comment[fr]=Exemple de comment gérer les données déposées Comment[gl]=Exemplo de como xestionar os datos soltados +Comment[hu]=Példa a Drop adatok kezeléséhez Comment[ia]=Exemplo de como gerer Drop data (deponer datos) Comment[nds]=Bispill för't Hanteren vun afleggt Daten Comment[nl]=Voorbeeld van hoe gegevens van Drop te beheren @@ -32,7 +34,9 @@ Name[de]=Beispielnotizen Name[en_GB]=Example notes Name[es]=Notas del ejemplo Name[fi]=Muistiinpanoesimerkki +Name[fr]=Exemple de notes Name[gl]=Notas de exemplo +Name[hu]=Példa jegyzetek Name[ia]=Notas de exemplo Name[it]=Note di esempio Name[nds]=Bispillnotizen diff --git a/examples/applets/nowplaying/metadata.desktop b/examples/applets/nowplaying/metadata.desktop index 146381f6b..74460093b 100644 --- a/examples/applets/nowplaying/metadata.desktop +++ b/examples/applets/nowplaying/metadata.desktop @@ -7,7 +7,9 @@ Name[de]=Musiktitel-Anzeige (QML) Name[en_GB]=Now playing (QML) Name[es]=Reproduciendo (QML) Name[fi]=Nyt soi (QML) +Name[fr]=Lecture en cours (QML) Name[gl]=Estase a reproducir (QML) +Name[hu]=Most játszott (QML) Name[ia]=Ora reproducente (QML) Name[it]=In riproduzione (QML) Name[nds]=Lopen Stück (QML) @@ -33,7 +35,9 @@ Comment[de]=Ein Konzeptnachweis für eine Medien-Wiedergabe geschrieben in QML Comment[en_GB]=A proof of concept media player controller qml Comment[es]=Una prueba de concepto de controlador de reproductor multimedia en QML Comment[fi]=QML:n soveltuvuusselvitys mediasoittimen ohjaamiseen +Comment[fr]=Un contrôleur de lecteur multimédia comme démonstrateur de faisabilité en QML Comment[gl]=Unha proba de concepto de controlador de reprodutor multimedia en qml +Comment[hu]=Bemutató médiavezérlő QML-ben írva Comment[ia]=Un prova de controlator qml de reproductor de media ideate Comment[nds]=En Konzeptprööv för en QML-Medianafspeler-Kuntrull Comment[nl]=Een 'proof of concept' qml voor besturing van een mediaspeler diff --git a/examples/applets/qmltasks/metadata.desktop b/examples/applets/qmltasks/metadata.desktop index f065e1d82..664997086 100644 --- a/examples/applets/qmltasks/metadata.desktop +++ b/examples/applets/qmltasks/metadata.desktop @@ -7,7 +7,9 @@ Name[de]=Einfache Aufgaben Name[en_GB]=Poor Man's Tasks Name[es]=Tareas del hombre pobre Name[fi]=Köyhän miehen tehtävät +Name[fr]=Tâches du pauvre Name[gl]=Tarefa do pobre home +Name[hu]=Szegény ember feladatlistája Name[ia]=Cargas del Paupere Homine Name[nds]=Sülvenmaakt Opgavenpleger Name[nl]=Taken van 'Poor Man' @@ -32,7 +34,9 @@ Comment[de]=Beispiel für das Schreiben eigener Aufgaben-Miniprogramme Comment[en_GB]=Example showing how to write your own tasks Widget Comment[es]=Ejemplo que muestra cómo escribir su propio widget de tareas Comment[fi]=Esimerkki oman tehtäväsovelman kirjoittamisesta +Comment[fr]=Exemple montrant comment écrire votre propre composant graphique de tâches Comment[gl]=Un exemplo de como escribir un widget de tarefas pendentes +Comment[hu]=Példa saját feladatlista írásához Comment[ia]=Exemplo monstrante como scriber tu proprie Widget de cargas Comment[nds]=Bispill för en sülvenschreven Opgavenpleeg-Lüttprogramm Comment[nl]=Voorbeeld die toont hoe u uw eigen taak-widget schrijft diff --git a/examples/applets/samegame/metadata.desktop b/examples/applets/samegame/metadata.desktop index 3138385a6..e7a6a187f 100644 --- a/examples/applets/samegame/metadata.desktop +++ b/examples/applets/samegame/metadata.desktop @@ -7,7 +7,9 @@ Name[de]=SameGame-Spiel (QML) Name[en_GB]=Same game (QML) Name[es]=Juego Iguales (QML) Name[fi]=Same Game (QML) +Name[fr]=Same Game (QML) Name[gl]=Xogo dos iguais (QML) +Name[hu]=Leszedegetős játék (QML) Name[ia]=Mesme Joco (QML) Name[nds]=SameGame (QML) Name[nl]=Zelfde spel (QML) @@ -31,7 +33,9 @@ Comment[de]=Das Spiel SameGame als QML-QT-Demo umgewandelt in ein Plasmoid Comment[en_GB]=The Same game QML Qt demo converted as plasmoid Comment[es]=Demo en QML de Qt del juego Iguales convertido en plasmoide Comment[fi]=QML Qt-demo Same Game muunnettuna plasmoidiksi +Comment[fr]=Le jeu « Same Game » de la démo QML de Qt, converti en plasmoid Comment[gl]=O xogo dos iguais en QML convertido nun plasmoide +Comment[hu]=A leszedegetős játék demó verziója plazmoidként Comment[ia]=Le Mesme Joco QML. Demo de QT convertite in plasmoid Comment[nds]=Dat SameGame-QML-Qt-Demo ümbuut as Plasma-Lüttprogramm Comment[nl]=De demo van QML Qt van 'Zelfde spel' geconverteerd als plasmoid diff --git a/examples/applets/testcomponents/metadata.desktop b/examples/applets/testcomponents/metadata.desktop index 678396bf0..71869daa2 100644 --- a/examples/applets/testcomponents/metadata.desktop +++ b/examples/applets/testcomponents/metadata.desktop @@ -8,7 +8,9 @@ Name[de]=Komponententest Name[en_GB]=Components Test Name[es]=Prueba de componentes Name[fi]=Komponenttitesti +Name[fr]=Test des composants Name[gl]=Proba dos compoñentes +Name[hu]=Komponensteszt Name[ia]=Essayo de componentes(Components) Name[mr]=घटक चाचणी Name[nds]=Komponententest diff --git a/examples/applets/testshaders/metadata.desktop b/examples/applets/testshaders/metadata.desktop index 99acd4ef5..188f4086e 100644 --- a/examples/applets/testshaders/metadata.desktop +++ b/examples/applets/testshaders/metadata.desktop @@ -8,7 +8,9 @@ Name[de]=Schattentest Name[en_GB]=Shader Test Name[es]=Prueba de sombreado Name[fi]=Varjostintesti +Name[fr]=Test du nuanceur Name[gl]=Proba de sombreador +Name[hu]=Árnyékoló teszt Name[ia]=Essayo de umbrator (Shader) Name[mr]=शेडर चाचणी Name[nds]=Schaddeerertest @@ -33,7 +35,9 @@ Comment[de]=Verschwommen mit optischen Effekten Comment[en_GB]=Futzing with Visual Effects Comment[es]=Jugar con los efectos visuales Comment[fi]=Ajan tuhlausta visuaalisten tehosteiden parissa +Comment[fr]=Jouer avec les effets visuels Comment[gl]=Perdas de tempo con efectos visuais +Comment[hu]=Vizuális effektek kavalkádja Comment[ia]=Jocante (Futzing) con effectos visual Comment[mr]=दृश्यास्पद परिणाम बरोबर फट्झिंग Comment[nds]=Rümspelen mit visuell Effekten diff --git a/examples/applets/testtheme/metadata.desktop b/examples/applets/testtheme/metadata.desktop index b4d42878c..6293d0bac 100644 --- a/examples/applets/testtheme/metadata.desktop +++ b/examples/applets/testtheme/metadata.desktop @@ -7,7 +7,9 @@ Name[de]=Designtest Name[en_GB]=Theme Test Name[es]=Prueba del tema Name[fi]=Teematesti +Name[fr]=Thème test Name[gl]=Proba do tema +Name[hu]=Témateszt Name[ia]=Essayo de Thema Name[it]=Test del tema Name[nds]=Mustertest diff --git a/examples/applets/widgetgallery/contents/ui/Sliders.qml b/examples/applets/widgetgallery/contents/ui/Sliders.qml index 135ee3e8b..9b1eae8a0 100644 --- a/examples/applets/widgetgallery/contents/ui/Sliders.qml +++ b/examples/applets/widgetgallery/contents/ui/Sliders.qml @@ -89,6 +89,7 @@ PlasmaComponents.Page { orientation: Qt.Horizontal minimumValue: 0 maximumValue: 255 + tickmarksEnabled: true stepSize: 10 Keys.onTabPressed: blueSlider.forceActiveFocus() } diff --git a/examples/applets/widgetgallery/metadata.desktop b/examples/applets/widgetgallery/metadata.desktop index 3c6b86d1d..c685eed2a 100644 --- a/examples/applets/widgetgallery/metadata.desktop +++ b/examples/applets/widgetgallery/metadata.desktop @@ -8,7 +8,9 @@ Name[de]=Miniprogramm-Galerie Name[en_GB]=Widgets gallery Name[es]=Galería de elementos gráficos Name[fi]=Kontrolligalleria +Name[fr]=Galerie de composants graphiques Name[gl]=Galería de widgets +Name[hu]=Elemgaléria Name[ia]=Galleria de widget Name[it]=Galleria dei widget Name[nds]=Lüttprogramm-Galerie @@ -33,7 +35,9 @@ Comment[de]=Galerie von Miniprogrammen, die mit Plasma QtComponents erstellt wur Comment[en_GB]=gallery of widgets done with Plasma QtComponents Comment[es]=Galería de elementos gráficos realizada con Plasma QtComponents Comment[fi]=galleria kontrolleista, jotka on tehty Plasman QtComponents-tekniikalla +Comment[fr]=Galerie de composants graphiques réalisés avec les QtComponents de Plasma Comment[gl]=galería de widgets feita con QtComponents de Plasma +Comment[hu]=A Plasma QtComponentből készült elemek galériája Comment[ia]=galleria de widget facite con Plasma QtComponents Comment[nds]=Galerie vun Lüttprogrammen, de mit de Plasma-QtComponents opstellt wöörn Comment[nl]=galerij van widgets gemaakt met Plasma QtComponents diff --git a/examples/applets/windowthumbnails/metadata.desktop b/examples/applets/windowthumbnails/metadata.desktop index 5ffd3dd61..2a1819ea0 100644 --- a/examples/applets/windowthumbnails/metadata.desktop +++ b/examples/applets/windowthumbnails/metadata.desktop @@ -6,7 +6,9 @@ Name[de]=Beispiel einer Liste mit Fenstervorschaubilden Name[en_GB]=Example window thumbnails list Name[es]=Ejemplo de lista de miniaturas de ventanas Name[fi]=Esimerkki ikkunoiden pikkukuvien luettelosta +Name[fr]=Exemple de liste de vignettes de fenêtres Name[gl]=Exemplo de lista de miniaturas de xanelas +Name[hu]=Ablakbélyegképek lista - példa Name[ia]=Lista de miniaturas de fenestra de exemplo Name[nds]=Bispill-Finstervöransichten-List Name[nl]=Voorbeeld van lijst met miniaturen van vensters @@ -30,7 +32,9 @@ Comment[de]=Beispiel zur Anzeige einer Liste mit Fenstervorschaubilden Comment[en_GB]=Example showing how to display window thumbnails Comment[es]=Ejemplo que muestra cómo mostrar miniaturas de ventanas Comment[fi]=Esimerkki ikkunoiden pikkukuvien näyttämisestä +Comment[fr]=Exemple montrant comment afficher des vignettes de fenêtres Comment[gl]=Un exemplo que como mostrar miniaturas de xanelas +Comment[hu]=Példa ablakok bélyegképeinek megjelenítésére Comment[ia]=Exemplo monstrante como monstrar miniaturas de fenestra Comment[nds]=En Bispill, dat wiest, wodennig sik Finstervöransichten dorstellen laat Comment[nl]=Voorbeeld van hoe miniaturen van vensters te tonen diff --git a/examples/containments/testcontainment/metadata.desktop b/examples/containments/testcontainment/metadata.desktop index 52f604c32..149b6a860 100644 --- a/examples/containments/testcontainment/metadata.desktop +++ b/examples/containments/testcontainment/metadata.desktop @@ -8,7 +8,9 @@ Name[de]=Container-Test Name[en_GB]=Containment Test Name[es]=Prueba de contenedor Name[fi]=Sovelmasäiiliötesti +Name[fr]=Test du conteneur Name[gl]=Proba de contedor +Name[hu]=Tartalomteszt Name[ia]=Essayo de Containment Name[mr]=कंटेनमेंट चाचणी Name[nds]=Gelaatstest diff --git a/examples/dataengines/customDataContainers/plasma-dataengine-example-customDataContainers.desktop b/examples/dataengines/customDataContainers/plasma-dataengine-example-customDataContainers.desktop index 7af0e7fb6..96746c4eb 100644 --- a/examples/dataengines/customDataContainers/plasma-dataengine-example-customDataContainers.desktop +++ b/examples/dataengines/customDataContainers/plasma-dataengine-example-customDataContainers.desktop @@ -6,7 +6,9 @@ Name[de]=Benutzerdefinierte Datencontainer Name[en_GB]=Custom DataContainers Name[es]=«DataContainers» personalizados Name[fi]=Mukautetut DataContainerit +Name[fr]=DataContainers personnalisés Name[gl]=DataContainers personalizado +Name[hu]=Egyéni DataContainerek Name[ia]=DataContainers (Contento de datos) personalisate Name[nds]=Egen Datengelaatsen Name[nl]=Aangepaste gegevenscontainers @@ -30,7 +32,9 @@ Comment[de]=Eine Demonstration wie Unterklassen von Datencontainern erstellt wer Comment[en_GB]=A demonstration of how to subclass DataContainer Comment[es]=Una demostración de cómo derivar una clase de «DataContainer» Comment[fi]=Demonstraatio DataContainerin aliluokittamisesta +Comment[fr]=Une démonstration de comment faire une sous-classe de « DataContainer » Comment[gl]=Unha demostración de como facer subclases de DataContainer +Comment[hu]=A DataContainer alosztályként használatának demonstrációja Comment[ia]=Un demonstration de como poner in sub-classe un DataContainer Comment[nds]=En Demonstratschoon, wodennig sik en DataContainer-Ünnerklass bruken lett Comment[nl]=Een demonstratie van hoe een subklasse toe te kennen aan een gegevenscontainer diff --git a/examples/dataengines/simpleEngine/plasma-dataengine-example-simpleEngine.desktop b/examples/dataengines/simpleEngine/plasma-dataengine-example-simpleEngine.desktop index 6b5f39ca0..e2b5fb1a6 100644 --- a/examples/dataengines/simpleEngine/plasma-dataengine-example-simpleEngine.desktop +++ b/examples/dataengines/simpleEngine/plasma-dataengine-example-simpleEngine.desktop @@ -7,6 +7,7 @@ Name[de]=Einfaches Datentreiber-Beispiel Name[en_GB]=Simple DataEngine Example Name[es]=Ejemplo sencillo de «DataEngine» Name[fi]=Yksinkertainen DataEngine-esimerkki +Name[fr]=Exemple simple de DataEngine Name[gl]=Exemplo sinxelo de DataEngine Name[hu]=Egyszerű adatmotor példa Name[ia]=Exemplo semplice de DataEngine (Motor de datos) @@ -32,6 +33,7 @@ Comment[de]=Eine Basis-Implementation eines Datentreibers Comment[en_GB]=A very basic DataEngine implementation Comment[es]=Una implementación muy básica de «DataEngine» Comment[fi]=Erittäin yksinkertainen DataEngine-toteutus +Comment[fr]=Une implémentation très basique de DataEngine Comment[gl]=Unha implementación moi básica de DataEngine Comment[hu]=Egy nagyon egyszerű adatmotor megvalósítás Comment[ia]=Un implementation multo basic de DataEngine (Motor de datos) diff --git a/examples/dataengines/sourcesOnRequest/plasma-dataengine-example-sourcesOnRequest.desktop b/examples/dataengines/sourcesOnRequest/plasma-dataengine-example-sourcesOnRequest.desktop index b07a5ee5d..d5210d6c8 100644 --- a/examples/dataengines/sourcesOnRequest/plasma-dataengine-example-sourcesOnRequest.desktop +++ b/examples/dataengines/sourcesOnRequest/plasma-dataengine-example-sourcesOnRequest.desktop @@ -6,7 +6,9 @@ Name[de]=Ressourcen auf Anforderung Name[en_GB]=Sources On Request Name[es]=Fuentes bajo petición Name[fi]=Lähteet pyynnöstä +Name[fr]=Sources à la demande Name[gl]=Orixes baixo pedido +Name[hu]=Forráskérés Name[ia]=Fontes sur requesta Name[nds]=Borns op Anfraag Name[nl]=Bronnen op verzoek @@ -30,7 +32,9 @@ Comment[de]=Ein Datentreiber-Beispiel, das die Antwort auf Anfragen zur Erstellu Comment[en_GB]=A DataEngine example showing how to respond to requests for source creation and updates Comment[es]=Un ejemplo de «DataEngine» que muestra cómo responder a peticiones para creación y actualización de fuentes Comment[fi]=DataEngine-esimerkki, joka näyttää miten vastata lähteiden luonnin ja päivittämisen pyyntöihin +Comment[fr]=Un exemple DataEngine montrant comment répondre à des requêtes de création de source et de mise à jour Comment[gl]=Un exemplo de DataEngine que mostra como responder a pedidos de creación e actualización de orixes +Comment[hu]=DataEngine példa forráslétrehozási és frissítési kérések megválaszolására Comment[ia]=Un exemplo de dataEngine (motor de datos) monstrante como responder a requestas de creation de fonte e actualisationes Comment[nds]=En Datenkarn-Bispill, dat wiest, wodennig een op Anfragen na Bornopstellen un -opfrischen antern kann Comment[nl]=Een voorbeeld van een gegevens-engine die toont hoe te antwoorden op verzoeken voor aanmaken van een bron en bijwerken diff --git a/examples/kpart/plasma-example-kpart-shell.desktop b/examples/kpart/plasma-example-kpart-shell.desktop index 888609ecf..e2b171301 100755 --- a/examples/kpart/plasma-example-kpart-shell.desktop +++ b/examples/kpart/plasma-example-kpart-shell.desktop @@ -7,6 +7,7 @@ Name[de]=plasma-kpart-shell Name[en_GB]=plasma-kpart-shell Name[es]=plasma-kpart-shell Name[fi]=plasma-kpart-shell +Name[fr]=plasma-kpart-shell Name[gl]=plasma-kpart-shell Name[hu]=plasma-kpart-shell Name[ia]=plasma-kpart-shell @@ -36,7 +37,9 @@ GenericName[de]=Eine KPart-Shell für Plasma GenericName[en_GB]=A KPart shell for Plasma GenericName[es]=Un KPart de intérprete para Plasma GenericName[fi]=KPart-kuori Plasmalle +GenericName[fr]=Un interpréteur KPart pour Plasma GenericName[gl]=Unha shell de KPart para Plasma +GenericName[hu]=KPart héj a Plasmához GenericName[ia]=Un shell (concha) de KPart pro Plasma GenericName[nds]=En KPart-Konsool för Plasma GenericName[nl]=Een KPart-shell voor Plasma diff --git a/examples/testcontainmentactionsplugin/plasma-containmentactions-test.desktop b/examples/testcontainmentactionsplugin/plasma-containmentactions-test.desktop index 81a66de11..6403e0248 100644 --- a/examples/testcontainmentactionsplugin/plasma-containmentactions-test.desktop +++ b/examples/testcontainmentactionsplugin/plasma-containmentactions-test.desktop @@ -7,7 +7,9 @@ Name[de]=Test Name[en_GB]=Test Name[es]=Prueba Name[fi]=Testi +Name[fr]=Test Name[gl]=Proba +Name[hu]=Teszt Name[ia]=Essaya Name[it]=Test Name[mr]=चाचणी @@ -37,7 +39,9 @@ Comment[de]=Ein Dummy-Modul zum Testen. Comment[en_GB]=A dummy plugin for testing Comment[es]=Un complemento de simulación para hacer pruebas Comment[fi]=Tyhjä testausliitännäinen +Comment[fr]=Un module externe factice pour tester Comment[gl]=Un complemento para probas +Comment[hu]=Üres bővítmény tesztelésre Comment[ia]=Un plugin vacue pro essayar Comment[mr]=चाचणीसाठी नकली प्लगइन Comment[nds]=En Platzholler-Moduul för't Utproberen diff --git a/examples/wallpapers/autumn/metadata.desktop b/examples/wallpapers/autumn/metadata.desktop index 0cb30aefd..2a336e2da 100644 --- a/examples/wallpapers/autumn/metadata.desktop +++ b/examples/wallpapers/autumn/metadata.desktop @@ -10,7 +10,9 @@ Name[de]=Herbst Name[en_GB]=Autumn Name[es]=Otoño Name[fi]=Syksy +Name[fr]=Automne Name[gl]=Outono +Name[hu]=Ősz Name[ia]=Autumno Name[it]=Autunno Name[mr]=शरद ऋतु diff --git a/src/declarativeimports/calendar/qml/MonthView.qml b/src/declarativeimports/calendar/qml/MonthView.qml index 2a14f281f..11013a76f 100644 --- a/src/declarativeimports/calendar/qml/MonthView.qml +++ b/src/declarativeimports/calendar/qml/MonthView.qml @@ -107,6 +107,8 @@ Item { } MouseArea { id: monthMouse + property int previousPixelDelta + width: monthHeading.paintedWidth anchors { left: parent.left @@ -119,6 +121,29 @@ Item { } menuLoader.item.open(0, height); } + onExited: previousPixelDelta = 0 + onWheel: { + var delta = wheel.angleDelta.y || wheel.angleDelta.x + var pixelDelta = wheel.pixelDelta.y || wheel.pixelDelta.x + + // For high-precision touchpad scrolling, we get a wheel event for basically every slightest + // finger movement. To prevent the view from suddenly ending up in the next century, we + // cumulate all the pixel deltas until they're larger than the label and then only change + // the month. Standard mouse wheel scrolling is unaffected since it's fine. + if (pixelDelta) { + if (Math.abs(previousPixelDelta) < monthMouse.height) { + previousPixelDelta += pixelDelta + return + } + } + + if (delta >= 15) { + calendarBackend.previousMonth() + } else if (delta <= -15) { + calendarBackend.nextMonth() + } + previousPixelDelta = 0 + } } } diff --git a/src/declarativeimports/core/colorscope.h b/src/declarativeimports/core/colorscope.h index e5aa212a7..fa75b9daa 100644 --- a/src/declarativeimports/core/colorscope.h +++ b/src/declarativeimports/core/colorscope.h @@ -38,9 +38,25 @@ class QQuickItem; class ColorScope : public QQuickItem { Q_OBJECT + + /** + * Specifies the color group to use for this ColorScope + */ Q_PROPERTY(Plasma::Theme::ColorGroup colorGroup READ colorGroup WRITE setColorGroup NOTIFY colorGroupChanged) + + /** + * The main foreground color within this colorscope + */ Q_PROPERTY(QColor textColor READ textColor NOTIFY colorsChanged) + + /** + * The highlight color within this colorscope + */ Q_PROPERTY(QColor highlightColor READ highlightColor NOTIFY colorsChanged) + + /** + * The background color that should be used within this colorscope + */ Q_PROPERTY(QColor backgroundColor READ backgroundColor NOTIFY colorsChanged) public: diff --git a/src/declarativeimports/core/datasource.cpp b/src/declarativeimports/core/datasource.cpp index 2e7a2af49..86671cf32 100644 --- a/src/declarativeimports/core/datasource.cpp +++ b/src/declarativeimports/core/datasource.cpp @@ -163,7 +163,7 @@ void DataSource::modelChanged(const QString &sourceName, QAbstractItemModel *mod m_models->insert(sourceName, QVariant::fromValue(model)); //FIXME: this will break in the case a second model is set - connect(model, &QObject::destroyed, [ = ]() { + connect(model, &QObject::destroyed, m_models, [ = ]() { m_models->clear(sourceName); }); } diff --git a/src/declarativeimports/core/datasource.h b/src/declarativeimports/core/datasource.h index 3a8b52291..3aaa2bbaf 100644 --- a/src/declarativeimports/core/datasource.h +++ b/src/declarativeimports/core/datasource.h @@ -54,7 +54,6 @@ public: typedef QMap Data; DataSource(QObject *parent = 0); - /** * true if the connection to the Plasma DataEngine is valid */ diff --git a/src/declarativeimports/core/units.cpp b/src/declarativeimports/core/units.cpp index a08b773e0..56c0b5542 100644 --- a/src/declarativeimports/core/units.cpp +++ b/src/declarativeimports/core/units.cpp @@ -1,6 +1,6 @@ /*************************************************************************** * Copyright 2013 Marco Martin * - * Copyright 2014 Sebastian Kugler * + * Copyright 2014 Sebastian Kügler * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * @@ -48,7 +48,7 @@ Units::Units(QObject *parent) updateDevicePixelRatio(); // also updates icon sizes updateSpacing(); // updates gridUnit and *Spacing properties - connect(KIconLoader::global(), SIGNAL(iconLoaderSettingsChanged()), this, SLOT(iconLoaderSettingsChanged())); + connect(KIconLoader::global(), &KIconLoader::iconLoaderSettingsChanged, this, &Units::iconLoaderSettingsChanged); connect(&m_theme, &Plasma::Theme::themeChanged, this, &Units::updateSpacing); QCoreApplication::instance()->installEventFilter(this); @@ -173,7 +173,7 @@ int Units::largeSpacing() const void Units::updateSpacing() { - int gridUnit = QFontMetrics(QGuiApplication::font()).boundingRect("M").height();; + int gridUnit = QFontMetrics(QGuiApplication::font()).boundingRect("M").height(); if (gridUnit % 2 != 0) { gridUnit++; } diff --git a/src/declarativeimports/core/windowthumbnail.h b/src/declarativeimports/core/windowthumbnail.h index 61bc156b0..a313cd94f 100644 --- a/src/declarativeimports/core/windowthumbnail.h +++ b/src/declarativeimports/core/windowthumbnail.h @@ -19,6 +19,9 @@ #ifndef PLASMA_WINDOWTHUMBNAIL_H #define PLASMA_WINDOWTHUMBNAIL_H #include + +#include + // Qt #include #include diff --git a/src/declarativeimports/plasmacomponents/Mainpage.dox b/src/declarativeimports/plasmacomponents/Mainpage.dox index 926f49ba7..25de44990 100644 --- a/src/declarativeimports/plasmacomponents/Mainpage.dox +++ b/src/declarativeimports/plasmacomponents/Mainpage.dox @@ -4,60 +4,60 @@ ## Widgets Input: -- TextArea -- TextField -- CheckBox -- RadioButton -- Switch -- Slider +- \link org::kde::plasma::components::TextArea TextArea \endlink +- \link org::kde::plasma::components::TextField TextField \endlink +- \link org::kde::plasma::components::CheckBox CheckBox \endlink +- \link org::kde::plasma::components::RadioButton RadioButton \endlink +- \link org::kde::plasma::components::Switch Switch \endlink +- \link org::kde::plasma::components::Slider Slider \endlink Buttons: -- Button -- ButtonColumn -- ButtonRow -- ToolButton +- \link org::kde::plasma::components::Button Button \endlink +- \link org::kde::plasma::components::ButtonColumn ButtonColumn \endlink +- \link org::kde::plasma::components::ButtonRow ButtonRow \endlink +- \link org::kde::plasma::components::ToolButton ToolButton \endlink Misc: -- BusyIndicator -- ProgressBar -- Label +- \link org::kde::plasma::components::BusyIndicator BusyIndicator \endlink +- \link org::kde::plasma::components::ProgressBar ProgressBar \endlink +- \link org::kde::plasma::components::Label Label \endlink ## Containers Pages: -- Page -- PageOrientation -- PageStatus -- PageStack +- \link org::kde::plasma::components::Page Page \endlink +- \link org::kde::plasma::components::PageOrientation PageOrientation \endlink +- \link org::kde::plasma::components::PageStatus PageStatus \endlink +- \link org::kde::plasma::components::PageStack PageStack \endlink Dialogs: -- Dialog -- DialogStatus -- CommonDialog -- QueryDialog -- SelectionDialog +- \link org::kde::plasma::components::Dialog Dialog \endlink +- \link org::kde::plasma::components::DialogStatus DialogStatus \endlink +- \link org::kde::plasma::components::CommonDialog CommonDialog \endlink +- \link org::kde::plasma::components::QueryDialog QueryDialog \endlink +- \link org::kde::plasma::components::SelectionDialog SelectionDialog \endlink Tab bars: -- TabBar -- TabButton -- TabGroup +- \link org::kde::plasma::components::TabBar TabBar \endlink +- \link org::kde::plasma::components::TabButton TabButton \endlink +- \link org::kde::plasma::components::TabGroup TabGroup \endlink Misc: -- Sheet -- ScrollBar +- \link org::kde::plasma::components::Sheet Sheet \endlink +- \link org::kde::plasma::components::ScrollBar ScrollBar \endlink ## Menus -- Menu -- MenuItem -- ContextMenu +- \link org::kde::plasma::components::Menu Menu \endlink +- \link org::kde::plasma::components::MenuItem MenuItem \endlink +- \link org::kde::plasma::components::ContextMenu ContextMenu \endlink ## Lists -- ListItem -- Highlight -- SectionScroller +- \link org::kde::plasma::components::ListItem ListItem \endlink +- \link org::kde::plasma::components::Highlight Highlight \endlink +- \link org::kde::plasma::components::SectionScroller SectionScroller \endlink ## Toolbar -- ToolBar -- ToolBarLayout +- \link org::kde::plasma::components::ToolBar ToolBar \endlink +- \link org::kde::plasma::components::ToolBarLayout ToolBarLayout \endlink */ // DOXYGEN_SET_PROJECT_NAME = PlasmaComponents diff --git a/src/declarativeimports/plasmacomponents/qml/Slider.qml b/src/declarativeimports/plasmacomponents/qml/Slider.qml index c5325909e..e1988a5c6 100644 --- a/src/declarativeimports/plasmacomponents/qml/Slider.qml +++ b/src/declarativeimports/plasmacomponents/qml/Slider.qml @@ -1,5 +1,6 @@ /* * Copyright (C) 2011 by Daker Fernandes Pinheiro +* Copyright (C) 2014 by Marco Martin * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as @@ -19,66 +20,19 @@ import QtQuick 2.1 import org.kde.plasma.core 2.0 as PlasmaCore -import org.kde.plasma.components 2.0 as PlasmaComponents import "private" as Private +import QtQuick.Controls 1.2 as QtControls +import "styles" as Styles + -// TODO: create a value indicator for plasma? /** * An interactive slider component with Plasma look and feel. * - * @inherit QtQuick.Item + * @inherit QtControls.Slider */ -Item { +QtControls.Slider { id: slider - // Common API - /** - * type:real - * How many steps the slider value can be selected within its range value. - */ - property alias stepSize: range.stepSize - - /** - * type:real - * Minimum value that the slider's value can assume. - * - * The default value is 0. - */ - property alias minimumValue: range.minimumValue - - /** - * type:real - * Maximum value that the slider's value can assume. - * - * The default value is 1. - */ - property alias maximumValue: range.maximumValue - - /** - * type:real - * This property holds the value selected inside the minimum to maximum - * range of value. - * - * The default value is 0. - */ - property alias value: range.value - - /** - * Orientation for this component. - * - * The orientation can be either Qt.Horizontal or Qt.Vertical. - * - * The default is Qt.Horizontal. - */ - property int orientation: Qt.Horizontal - - /** - * type:bool - * - * True if the Slider is being pressed. - */ - property alias pressed: mouseArea.pressed - /** * This property holds if a value indicator element will be shown while is * dragged or not. @@ -96,15 +50,14 @@ Item { */ property string valueIndicatorText: value - // Plasma API /** * type:bool * This property holds if the slider visualizations has an inverted * direction. * - * The default value is false. + * @warning: deprecated and not supported, here for retrocompatibility */ - property alias inverted: range.inverted + property bool inverted: false width: contents.isVertical ? theme.mSize(theme.defaultFont).height*1.6 : 200 height: contents.isVertical ? 200 : theme.mSize(theme.defaultFont).height*1.6 @@ -114,10 +67,7 @@ Item { activeFocusOnTab: true - Keys.onUpPressed: { if (contents.isVertical) decrease() } - Keys.onDownPressed: { if (contents.isVertical) increase() } - Keys.onLeftPressed: { if (!contents.isVertical) increase() } - Keys.onRightPressed: { if (!contents.isVertical) decrease() } + //FIXME: remove those 2 functions once we can depend from 5.4*/ function accessibleIncreaseAction() { increase() } function accessibleDecreaseAction() { decrease() } @@ -138,177 +88,5 @@ Item { value += stepSize; } - Item { - id: contents - - // Plasma API - property bool animated: units.longDuration > 0 - property real handleWidth: handle.naturalSize.width - property real handleHeight: handle.naturalSize.height - - // Convenience API - property bool isVertical: orientation == Qt.Vertical - - width: contents.isVertical ? slider.height : slider.width - height: contents.isVertical ? slider.width : slider.height - rotation: contents.isVertical ? -90 : 0 - - anchors.centerIn: parent - - PlasmaComponents.RangeModel { - id: range - - minimumValue: 0.0 - maximumValue: 1.0 - value: 0 - stepSize: 0.0 - inverted: false - positionAtMinimum: -handle.width/8 - positionAtMaximum: contents.width - (handle.width/8) * 7 - } - - PlasmaCore.Svg { - id: grooveSvg - imagePath: "widgets/slider" - } - PlasmaCore.FrameSvgItem { - id: groove - imagePath: "widgets/slider" - prefix: "groove" - //FIXME: frameSvg should have a minimumSize attribute, could be added to kdelibs 4.7(maybe just the qml binding is enough)? - height: margins.top + margins.bottom - anchors { - left: parent.left - right: parent.right - verticalCenter: parent.verticalCenter - } - } - PlasmaCore.FrameSvgItem { - id: highlight - imagePath: "widgets/slider" - prefix: "groove-highlight" - height: groove.height - - width: inverted ? groove.width - handle.x - handle.width/4 : fakeHandle.x + handle.width/4 - x: inverted ? handle.x + handle.width/4 : 0 - anchors.verticalCenter: parent.verticalCenter - - //use the same animation when resizing a slider as moving the slider this keeps it in line when using key shortcuts - Behavior on width { - enabled: !mouseArea.drag.active && contents.animated - PropertyAnimation { - duration: behavior.enabled ? units.shortDuration : 0 - easing.type: Easing.OutSine - } - } - Behavior on x { - enabled: inverted && !mouseArea.drag.active && contents.animated - PropertyAnimation { - duration: behavior.enabled ? units.shortDuration : 0 - easing.type: Easing.OutSine - } - } - - visible: range.position > 0 && slider.enabled - } - - Private.RoundShadow { - id: shadow - imagePath: "widgets/slider" - focusElement: contents.isVertical ? "vertical-slider-focus" : "horizontal-slider-focus" - hoverElement: contents.isVertical ? "vertical-slider-hover" : "horizontal-slider-hover" - shadowElement: contents.isVertical ? "vertical-slider-shadow" : "horizontal-slider-shadow" - state: slider.activeFocus ? "focus" : (mouseArea.containsMouse ? "hover" : "shadow") - anchors.fill: handle - //We rotate the handle below, we need to rotate the shadow back as well - rotation: contents.isVertical ? 90 : 0 - } - - PlasmaCore.SvgItem { - id: handle - - x: fakeHandle.x - anchors { - verticalCenter: groove.verticalCenter - } - width: contents.handleWidth - height: contents.handleHeight - //Rotate the handle back for vertical slider so all the handles have the same shadow effect - rotation: contents.isVertical ? 90 : 0 - svg: grooveSvg - elementId: contents.isVertical ? "vertical-slider-handle" : "horizontal-slider-handle" - - Behavior on x { - id: behavior - enabled: !mouseArea.drag.active && contents.animated - - PropertyAnimation { - duration: behavior.enabled ? units.shortDuration : 0 - easing.type: Easing.OutSine - } - } - } - - Item { - id: fakeHandle - width: handle.width - height: handle.height - } - - MouseArea { - id: mouseArea - - anchors.fill: parent - enabled: slider.enabled - drag { - target: fakeHandle - axis: Drag.XAxis - minimumX: range.positionAtMinimum - maximumX: range.positionAtMaximum - } - hoverEnabled: true - - onPressed: { - // Clamp the value - var newX = Math.max(mouse.x, drag.minimumX) - newX = Math.min(newX, drag.maximumX) - - // Debounce the press: a press event inside the handler will not - // change its position, the user needs to drag it. - if (Math.abs(newX - fakeHandle.x) > handle.width / 2) { - range.position = newX - handle.width / 2 - } - - slider.forceActiveFocus() - } - onWheel: { - // horizontal scrolling (angleDelta.x) is "inverted" - // this matches QSlider's behavior - var delta = wheel.angleDelta.x ? -wheel.angleDelta.x : wheel.angleDelta.y - if (delta > 0) { // up/right - slider.value += (slider.inverted ? -slider.stepSize : slider.stepSize) - } else if (delta < 0) { - slider.value += (slider.inverted ? slider.stepSize : -slider.stepSize) - } - slider.forceActiveFocus() - } - } - } - - Binding { - target: range - property: "position" - value: fakeHandle.x - } - - // During the drag, we simply ignore position set from the range, this - // means that setting a value while dragging will not "interrupt" the - // dragging activity. - Binding { - when: !mouseArea.drag.active - target: fakeHandle - property: "x" - value: range.position - } - Accessible.role: Accessible.Slider + style: Styles.SliderStyle {} } diff --git a/src/declarativeimports/plasmacomponents/qml/ToolBar.qml b/src/declarativeimports/plasmacomponents/qml/ToolBar.qml index 75ed0c00c..6794a263e 100644 --- a/src/declarativeimports/plasmacomponents/qml/ToolBar.qml +++ b/src/declarativeimports/plasmacomponents/qml/ToolBar.qml @@ -27,7 +27,7 @@ import org.kde.plasma.core 2.0 as PlasmaCore Item{ id: toolBar width: parent.width - height: (tools && enabled) ? tools.height + frameSvg.margins.top + frameSvg.margins.bottom : 0 + height: (tools && enabled) ? tools.implicitHeight + frameSvg.margins.top + frameSvg.margins.bottom : 0 visible: height > 0 /** diff --git a/src/declarativeimports/plasmacomponents/qml/styles/CheckBoxStyle.qml b/src/declarativeimports/plasmacomponents/qml/styles/CheckBoxStyle.qml index d9dc9fd92..a83ac2845 100644 --- a/src/declarativeimports/plasmacomponents/qml/styles/CheckBoxStyle.qml +++ b/src/declarativeimports/plasmacomponents/qml/styles/CheckBoxStyle.qml @@ -37,8 +37,8 @@ QtQuickControlStyle.CheckBoxStyle { indicator: PlasmaCore.FrameSvgItem { imagePath: "widgets/button" prefix: "normal" - width: units.gridUnit - height: units.gridUnit + width: theme.mSize(theme.defaultFont).height + margins.left + height: theme.mSize(theme.defaultFont).height + margins.top opacity: control.enabled ? 1 : 0.6 PlasmaCore.SvgItem { diff --git a/src/declarativeimports/plasmacomponents/qml/styles/RadioButtonStyle.qml b/src/declarativeimports/plasmacomponents/qml/styles/RadioButtonStyle.qml index 6d06f01c5..0f4cac027 100644 --- a/src/declarativeimports/plasmacomponents/qml/styles/RadioButtonStyle.qml +++ b/src/declarativeimports/plasmacomponents/qml/styles/RadioButtonStyle.qml @@ -42,8 +42,8 @@ QtQuickControlStyle.RadioButtonStyle { } elementId: "normal" - width: units.gridUnit - height: width + width: theme.mSize(theme.defaultFont).height + margins.left + height: theme.mSize(theme.defaultFont).height + margins.top PlasmaCore.SvgItem { id: checkmark diff --git a/src/declarativeimports/plasmacomponents/qml/styles/SliderStyle.qml b/src/declarativeimports/plasmacomponents/qml/styles/SliderStyle.qml new file mode 100644 index 000000000..0d0323779 --- /dev/null +++ b/src/declarativeimports/plasmacomponents/qml/styles/SliderStyle.qml @@ -0,0 +1,91 @@ +/* + * Copyright (C) 2014 by Marco Martin + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Library General Public License as + * published by the Free Software Foundation; either version 2, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Library General Public License for more details + * + * You should have received a copy of the GNU Library General Public + * License along with this program; if not, write to the + * Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 2.010-1301, USA. + */ + + +import QtQuick 2.1 +import QtQuick.Controls.Styles 1.1 as QtQuickControlStyle +import QtQuick.Controls 1.1 + +import org.kde.plasma.core 2.0 as PlasmaCore +import org.kde.plasma.components 2.0 as PlasmaComponents + +import "../private" as Private + +QtQuickControlStyle.SliderStyle { + id: styleItem + + property Item handleItem + padding { top: 0 ; left: 0 ; right: 0 ; bottom: 0 } + + PlasmaCore.Svg { + id: grooveSvg + imagePath: "widgets/slider" + } + handle: Item { + width: handle.naturalSize.width + height: handle.naturalSize.height + Private.RoundShadow { + id: shadow + anchors.fill: parent + imagePath: "widgets/slider" + focusElement: "horizontal-slider-focus" + hoverElement: "horizontal-slider-hover" + shadowElement: "horizontal-slider-shadow" + state: control.activeFocus ? "focus" : (control.hovered ? "hover" : "shadow") + } + PlasmaCore.SvgItem { + id: handle + anchors.fill: parent + svg: grooveSvg + elementId: "horizontal-slider-handle" + } + } + + + groove: PlasmaCore.FrameSvgItem { + id: groove + imagePath: "widgets/slider" + prefix: "groove" + PlasmaCore.FrameSvgItem { + id: highlight + imagePath: "widgets/slider" + prefix: "groove-highlight" + height: groove.height + + width: styleData.handlePosition + anchors.verticalCenter: parent.verticalCenter + + visible: value > 0 && slider.enabled + } + } + + + tickmarks: Repeater { + id: repeater + model: control.stepSize > 0 ? 1 + (control.maximumValue - control.minimumValue) / control.stepSize : 0 + Rectangle { + color: theme.textColor + width: 1 ; height: 3 + y: repeater.height + //Position ticklines from styleData.handleWidth to width - styleData.handleWidth/2 + //position them at an half handle width increment + x: styleData.handleWidth / 2 + index * ((repeater.width - styleData.handleWidth) / (repeater.count>1 ? repeater.count-1 : 1)) + } + } +} diff --git a/src/declarativeimports/plasmacomponents/qml/styles/TextFieldStyle.qml b/src/declarativeimports/plasmacomponents/qml/styles/TextFieldStyle.qml index 403f52006..8549e589f 100644 --- a/src/declarativeimports/plasmacomponents/qml/styles/TextFieldStyle.qml +++ b/src/declarativeimports/plasmacomponents/qml/styles/TextFieldStyle.qml @@ -33,6 +33,9 @@ QtQuickControlStyle.TextFieldStyle { selectedTextColor: theme.viewBackgroundColor background: Item { + implicitHeight: theme.mSize(theme.defaultFont).height * 1.6 + implicitWidth: theme.mSize(theme.defaultFont).width * 12 + Private.TextFieldFocus { id: hover state: control.activeFocus ? "focus" : (control.hovered ? "hover" : "hidden") diff --git a/src/declarativeimports/plasmacomponents/qml/styles/ToolButtonStyle.qml b/src/declarativeimports/plasmacomponents/qml/styles/ToolButtonStyle.qml index e484c9381..23714b3ed 100644 --- a/src/declarativeimports/plasmacomponents/qml/styles/ToolButtonStyle.qml +++ b/src/declarativeimports/plasmacomponents/qml/styles/ToolButtonStyle.qml @@ -170,7 +170,7 @@ QtQuickControlStyle.ButtonStyle { implicitWidth: { if (control.text.length == 0) { - height; + implicitHeight; } else { Math.max(theme.mSize(theme.defaultFont).width*12, style.minimumWidth); } diff --git a/src/declarativeimports/plasmaextracomponents/Mainpage.dox b/src/declarativeimports/plasmaextracomponents/Mainpage.dox index 566afb128..733680087 100644 --- a/src/declarativeimports/plasmaextracomponents/Mainpage.dox +++ b/src/declarativeimports/plasmaextracomponents/Mainpage.dox @@ -2,22 +2,22 @@

import org.kde.plasma.extras

-- App -- PageRow -- ScrollArea -- FallbackComponent -- ResourceInstance +- \link org::kde::plasma::plasmaextracomponents::App App \endlink +- \link org::kde::plasma::plasmaextracomponents::PageRow PageRow \endlink +- \link org::kde::plasma::plasmaextracomponents::ScrollArea ScrollArea \endlink +- \link org::kde::plasma::plasmaextracomponents::FallbackComponent FallbackComponent \endlink +- \link org::kde::plasma::plasmaextracomponents::ResourceInstance ResourceInstance \endlink Text formatting -- Heading -- Paragraph -- Title +- \link org::kde::plasma::plasmaextracomponents::Heading Heading \endlink +- \link org::kde::plasma::plasmaextracomponents::Paragraph Paragraph \endlink +- \link org::kde::plasma::plasmaextracomponents::Title Title \endlink Animations -- ActivateAnimation -- AppearAnimation -- PressedAnimation -- ReleasedAnimation +- \link org::kde::plasma::plasmaextracomponents::ActivateAnimation ActivateAnimation \endlink +- \link org::kde::plasma::plasmaextracomponents::AppearAnimation AppearAnimation \endlink +- \link org::kde::plasma::plasmaextracomponents::PressedAnimation PressedAnimation \endlink +- \link org::kde::plasma::plasmaextracomponents::ReleasedAnimation ReleasedAnimation \endlink */ diff --git a/src/desktoptheme/air/metadata.desktop b/src/desktoptheme/air/metadata.desktop index 125964f7a..fb409434b 100644 --- a/src/desktoptheme/air/metadata.desktop +++ b/src/desktoptheme/air/metadata.desktop @@ -8,6 +8,7 @@ Name[de]=Air Name[en_GB]=Air Name[es]=Aire Name[fi]=Air +Name[fr]=Air Name[gl]=Air Name[hu]=Levegő Name[ia]=Air @@ -42,6 +43,7 @@ Comment[de]=Ein Atemzug frische Luft Comment[en_GB]=A breath of fresh air Comment[es]=Una bocanada de aire fresco Comment[fi]=Raikkaan ilman leyhähdys +Comment[fr]=Un souffle d'air frais Comment[gl]=Un folgo de ar fresco Comment[hu]=Friss fuvallat Comment[ia]=Un respiration de aere fresc diff --git a/src/desktoptheme/breeze-dark/metadata.desktop b/src/desktoptheme/breeze-dark/metadata.desktop index 2cbf41086..6c799531e 100644 --- a/src/desktoptheme/breeze-dark/metadata.desktop +++ b/src/desktoptheme/breeze-dark/metadata.desktop @@ -6,7 +6,9 @@ Name[de]=Dunkle Brise Name[en_GB]=Breeze Dark Name[es]=Brisa oscuro Name[fi]=Breeze Dark +Name[fr]=Breeze foncé Name[gl]=Breeze escuro +Name[hu]=Breeze Dark Name[ia]=Brisa obscure Name[nds]=Breeze düüster Name[nl]=Breeze Dark diff --git a/src/desktoptheme/breeze/icons/akonadi.svgz b/src/desktoptheme/breeze/icons/akonadi.svgz index aa4329c27..055e915e7 100644 Binary files a/src/desktoptheme/breeze/icons/akonadi.svgz and b/src/desktoptheme/breeze/icons/akonadi.svgz differ diff --git a/src/desktoptheme/breeze/icons/akregator.svgz b/src/desktoptheme/breeze/icons/akregator.svgz index cf94d2f89..8d96f1188 100644 Binary files a/src/desktoptheme/breeze/icons/akregator.svgz and b/src/desktoptheme/breeze/icons/akregator.svgz differ diff --git a/src/desktoptheme/breeze/icons/amarok.svgz b/src/desktoptheme/breeze/icons/amarok.svgz index fd1dd8125..4ed0c5498 100644 Binary files a/src/desktoptheme/breeze/icons/amarok.svgz and b/src/desktoptheme/breeze/icons/amarok.svgz differ diff --git a/src/desktoptheme/breeze/icons/applications.svgz b/src/desktoptheme/breeze/icons/applications.svgz index 94cccc9c6..9da5d3a86 100644 Binary files a/src/desktoptheme/breeze/icons/applications.svgz and b/src/desktoptheme/breeze/icons/applications.svgz differ diff --git a/src/desktoptheme/breeze/icons/apport.svgz b/src/desktoptheme/breeze/icons/apport.svgz index ce6228182..84371c5dc 100644 Binary files a/src/desktoptheme/breeze/icons/apport.svgz and b/src/desktoptheme/breeze/icons/apport.svgz differ diff --git a/src/desktoptheme/breeze/icons/audio.svgz b/src/desktoptheme/breeze/icons/audio.svgz index 86a60e9d0..f0eb2f0dd 100644 Binary files a/src/desktoptheme/breeze/icons/audio.svgz and b/src/desktoptheme/breeze/icons/audio.svgz differ diff --git a/src/desktoptheme/breeze/icons/battery.svgz b/src/desktoptheme/breeze/icons/battery.svgz index 42f2e24c6..ee43f2372 100644 Binary files a/src/desktoptheme/breeze/icons/battery.svgz and b/src/desktoptheme/breeze/icons/battery.svgz differ diff --git a/src/desktoptheme/breeze/icons/bookmarks.svgz b/src/desktoptheme/breeze/icons/bookmarks.svgz index 2c8c378da..236d1f310 100644 Binary files a/src/desktoptheme/breeze/icons/bookmarks.svgz and b/src/desktoptheme/breeze/icons/bookmarks.svgz differ diff --git a/src/desktoptheme/breeze/icons/computer.svgz b/src/desktoptheme/breeze/icons/computer.svgz index ccaf48f6c..ec1c70fe8 100644 Binary files a/src/desktoptheme/breeze/icons/computer.svgz and b/src/desktoptheme/breeze/icons/computer.svgz differ diff --git a/src/desktoptheme/breeze/icons/configure.svgz b/src/desktoptheme/breeze/icons/configure.svgz index b22b28e97..4ff198f78 100644 Binary files a/src/desktoptheme/breeze/icons/configure.svgz and b/src/desktoptheme/breeze/icons/configure.svgz differ diff --git a/src/desktoptheme/breeze/icons/device.svgz b/src/desktoptheme/breeze/icons/device.svgz index 9c12f17e6..adc67daa0 100644 Binary files a/src/desktoptheme/breeze/icons/device.svgz and b/src/desktoptheme/breeze/icons/device.svgz differ diff --git a/src/desktoptheme/breeze/icons/document.svgz b/src/desktoptheme/breeze/icons/document.svgz index 6f3ae1b60..6ac2ed4c4 100644 Binary files a/src/desktoptheme/breeze/icons/document.svgz and b/src/desktoptheme/breeze/icons/document.svgz differ diff --git a/src/desktoptheme/breeze/icons/drive.svgz b/src/desktoptheme/breeze/icons/drive.svgz index 481965443..d5ce0ef3a 100644 Binary files a/src/desktoptheme/breeze/icons/drive.svgz and b/src/desktoptheme/breeze/icons/drive.svgz differ diff --git a/src/desktoptheme/breeze/icons/edit.svgz b/src/desktoptheme/breeze/icons/edit.svgz index b9db96e5a..106957b24 100644 Binary files a/src/desktoptheme/breeze/icons/edit.svgz and b/src/desktoptheme/breeze/icons/edit.svgz differ diff --git a/src/desktoptheme/breeze/icons/go.svgz b/src/desktoptheme/breeze/icons/go.svgz index da97c56f2..1bd51d126 100644 Binary files a/src/desktoptheme/breeze/icons/go.svgz and b/src/desktoptheme/breeze/icons/go.svgz differ diff --git a/src/desktoptheme/breeze/icons/input.svgz b/src/desktoptheme/breeze/icons/input.svgz index 3339de58e..208a478c9 100644 Binary files a/src/desktoptheme/breeze/icons/input.svgz and b/src/desktoptheme/breeze/icons/input.svgz differ diff --git a/src/desktoptheme/breeze/icons/kdeconnect.svgz b/src/desktoptheme/breeze/icons/kdeconnect.svgz index 1a6bef12c..995eeb444 100644 Binary files a/src/desktoptheme/breeze/icons/kdeconnect.svgz and b/src/desktoptheme/breeze/icons/kdeconnect.svgz differ diff --git a/src/desktoptheme/breeze/icons/keyboard_layout.svgz b/src/desktoptheme/breeze/icons/keyboard_layout.svgz index 72bd5f14b..41a102f21 100644 Binary files a/src/desktoptheme/breeze/icons/keyboard_layout.svgz and b/src/desktoptheme/breeze/icons/keyboard_layout.svgz differ diff --git a/src/desktoptheme/breeze/icons/kget.svgz b/src/desktoptheme/breeze/icons/kget.svgz index 3d1def6cc..871e074c8 100644 Binary files a/src/desktoptheme/breeze/icons/kget.svgz and b/src/desktoptheme/breeze/icons/kget.svgz differ diff --git a/src/desktoptheme/breeze/icons/kgpg.svgz b/src/desktoptheme/breeze/icons/kgpg.svgz index 06058237f..df368f4d2 100644 Binary files a/src/desktoptheme/breeze/icons/kgpg.svgz and b/src/desktoptheme/breeze/icons/kgpg.svgz differ diff --git a/src/desktoptheme/breeze/icons/klipper.svgz b/src/desktoptheme/breeze/icons/klipper.svgz index f90d6b8da..367914d08 100644 Binary files a/src/desktoptheme/breeze/icons/klipper.svgz and b/src/desktoptheme/breeze/icons/klipper.svgz differ diff --git a/src/desktoptheme/breeze/icons/kmail.svgz b/src/desktoptheme/breeze/icons/kmail.svgz index 2aabcdd6b..f5efee68e 100644 Binary files a/src/desktoptheme/breeze/icons/kmail.svgz and b/src/desktoptheme/breeze/icons/kmail.svgz differ diff --git a/src/desktoptheme/breeze/icons/konv_message.svgz b/src/desktoptheme/breeze/icons/konv_message.svgz index 0892c30b0..7a91be039 100644 Binary files a/src/desktoptheme/breeze/icons/konv_message.svgz and b/src/desktoptheme/breeze/icons/konv_message.svgz differ diff --git a/src/desktoptheme/breeze/icons/konversation.svgz b/src/desktoptheme/breeze/icons/konversation.svgz index 4e54dbf47..671dd92d9 100644 Binary files a/src/desktoptheme/breeze/icons/konversation.svgz and b/src/desktoptheme/breeze/icons/konversation.svgz differ diff --git a/src/desktoptheme/breeze/icons/kopete.svgz b/src/desktoptheme/breeze/icons/kopete.svgz index 205141e02..0b436931a 100644 Binary files a/src/desktoptheme/breeze/icons/kopete.svgz and b/src/desktoptheme/breeze/icons/kopete.svgz differ diff --git a/src/desktoptheme/breeze/icons/korgac.svgz b/src/desktoptheme/breeze/icons/korgac.svgz index 779ecd9cb..1be9fa33e 100644 Binary files a/src/desktoptheme/breeze/icons/korgac.svgz and b/src/desktoptheme/breeze/icons/korgac.svgz differ diff --git a/src/desktoptheme/breeze/icons/kpackagekit.svgz b/src/desktoptheme/breeze/icons/kpackagekit.svgz index 70c960a9b..65690ed89 100644 Binary files a/src/desktoptheme/breeze/icons/kpackagekit.svgz and b/src/desktoptheme/breeze/icons/kpackagekit.svgz differ diff --git a/src/desktoptheme/breeze/icons/kteatime.svgz b/src/desktoptheme/breeze/icons/kteatime.svgz index 7f108d22d..2456c677a 100644 Binary files a/src/desktoptheme/breeze/icons/kteatime.svgz and b/src/desktoptheme/breeze/icons/kteatime.svgz differ diff --git a/src/desktoptheme/breeze/icons/ktorrent.svgz b/src/desktoptheme/breeze/icons/ktorrent.svgz index be76fc04b..82e1ef8f2 100644 Binary files a/src/desktoptheme/breeze/icons/ktorrent.svgz and b/src/desktoptheme/breeze/icons/ktorrent.svgz differ diff --git a/src/desktoptheme/breeze/icons/list.svgz b/src/desktoptheme/breeze/icons/list.svgz index 34acd7e22..427cfb554 100644 Binary files a/src/desktoptheme/breeze/icons/list.svgz and b/src/desktoptheme/breeze/icons/list.svgz differ diff --git a/src/desktoptheme/breeze/icons/mail.svgz b/src/desktoptheme/breeze/icons/mail.svgz index 93fab9951..9bb2769ff 100644 Binary files a/src/desktoptheme/breeze/icons/mail.svgz and b/src/desktoptheme/breeze/icons/mail.svgz differ diff --git a/src/desktoptheme/breeze/icons/media.svgz b/src/desktoptheme/breeze/icons/media.svgz index 9613bd737..d7c2258a0 100644 Binary files a/src/desktoptheme/breeze/icons/media.svgz and b/src/desktoptheme/breeze/icons/media.svgz differ diff --git a/src/desktoptheme/breeze/icons/nepomuk.svgz b/src/desktoptheme/breeze/icons/nepomuk.svgz index e7768c02e..48e8c44d4 100644 Binary files a/src/desktoptheme/breeze/icons/nepomuk.svgz and b/src/desktoptheme/breeze/icons/nepomuk.svgz differ diff --git a/src/desktoptheme/breeze/icons/network.svgz b/src/desktoptheme/breeze/icons/network.svgz index 5ed745057..da4babfc8 100644 Binary files a/src/desktoptheme/breeze/icons/network.svgz and b/src/desktoptheme/breeze/icons/network.svgz differ diff --git a/src/desktoptheme/breeze/icons/notification.svgz b/src/desktoptheme/breeze/icons/notification.svgz index 23688bca2..3901b4fff 100644 Binary files a/src/desktoptheme/breeze/icons/notification.svgz and b/src/desktoptheme/breeze/icons/notification.svgz differ diff --git a/src/desktoptheme/breeze/icons/phone.svgz b/src/desktoptheme/breeze/icons/phone.svgz index ab695d8c1..11a930259 100644 Binary files a/src/desktoptheme/breeze/icons/phone.svgz and b/src/desktoptheme/breeze/icons/phone.svgz differ diff --git a/src/desktoptheme/breeze/icons/preferences.svgz b/src/desktoptheme/breeze/icons/preferences.svgz index 558220533..77d3acb0a 100644 Binary files a/src/desktoptheme/breeze/icons/preferences.svgz and b/src/desktoptheme/breeze/icons/preferences.svgz differ diff --git a/src/desktoptheme/breeze/icons/printer.svgz b/src/desktoptheme/breeze/icons/printer.svgz index b265492c2..099dc63b8 100644 Binary files a/src/desktoptheme/breeze/icons/printer.svgz and b/src/desktoptheme/breeze/icons/printer.svgz differ diff --git a/src/desktoptheme/breeze/icons/quassel.svgz b/src/desktoptheme/breeze/icons/quassel.svgz index ee3dd14ed..4eb99c729 100644 Binary files a/src/desktoptheme/breeze/icons/quassel.svgz and b/src/desktoptheme/breeze/icons/quassel.svgz differ diff --git a/src/desktoptheme/breeze/icons/slc.svgz b/src/desktoptheme/breeze/icons/slc.svgz index bce88bef0..b5fb6cad8 100644 Binary files a/src/desktoptheme/breeze/icons/slc.svgz and b/src/desktoptheme/breeze/icons/slc.svgz differ diff --git a/src/desktoptheme/breeze/icons/software-updates.svgz b/src/desktoptheme/breeze/icons/software-updates.svgz index 6a8b02704..2792871f9 100644 Binary files a/src/desktoptheme/breeze/icons/software-updates.svgz and b/src/desktoptheme/breeze/icons/software-updates.svgz differ diff --git a/src/desktoptheme/breeze/icons/start.svgz b/src/desktoptheme/breeze/icons/start.svgz index 7cbfc00ac..6551703c8 100644 Binary files a/src/desktoptheme/breeze/icons/start.svgz and b/src/desktoptheme/breeze/icons/start.svgz differ diff --git a/src/desktoptheme/breeze/icons/system.svgz b/src/desktoptheme/breeze/icons/system.svgz index 88411aa9f..15431c61e 100644 Binary files a/src/desktoptheme/breeze/icons/system.svgz and b/src/desktoptheme/breeze/icons/system.svgz differ diff --git a/src/desktoptheme/breeze/icons/touchpad.svgz b/src/desktoptheme/breeze/icons/touchpad.svgz index bb5981474..166219eaa 100644 Binary files a/src/desktoptheme/breeze/icons/touchpad.svgz and b/src/desktoptheme/breeze/icons/touchpad.svgz differ diff --git a/src/desktoptheme/breeze/icons/user.svgz b/src/desktoptheme/breeze/icons/user.svgz index c2b7e53ed..8345c3bf1 100644 Binary files a/src/desktoptheme/breeze/icons/user.svgz and b/src/desktoptheme/breeze/icons/user.svgz differ diff --git a/src/desktoptheme/breeze/icons/video.svgz b/src/desktoptheme/breeze/icons/video.svgz index ce180a843..78415ecef 100644 Binary files a/src/desktoptheme/breeze/icons/video.svgz and b/src/desktoptheme/breeze/icons/video.svgz differ diff --git a/src/desktoptheme/breeze/icons/view.svgz b/src/desktoptheme/breeze/icons/view.svgz index fc18b64ac..5b5c2d41a 100644 Binary files a/src/desktoptheme/breeze/icons/view.svgz and b/src/desktoptheme/breeze/icons/view.svgz differ diff --git a/src/desktoptheme/breeze/icons/wallet.svgz b/src/desktoptheme/breeze/icons/wallet.svgz index 7d77656a7..4174253aa 100644 Binary files a/src/desktoptheme/breeze/icons/wallet.svgz and b/src/desktoptheme/breeze/icons/wallet.svgz differ diff --git a/src/desktoptheme/breeze/icons/window.svgz b/src/desktoptheme/breeze/icons/window.svgz index 4e60b5395..f0c5c1638 100644 Binary files a/src/desktoptheme/breeze/icons/window.svgz and b/src/desktoptheme/breeze/icons/window.svgz differ diff --git a/src/desktoptheme/breeze/icons/zoom.svgz b/src/desktoptheme/breeze/icons/zoom.svgz index f9be885e4..eaa744637 100644 Binary files a/src/desktoptheme/breeze/icons/zoom.svgz and b/src/desktoptheme/breeze/icons/zoom.svgz differ diff --git a/src/desktoptheme/breeze/metadata.desktop b/src/desktoptheme/breeze/metadata.desktop index edb8d9950..149051d65 100644 --- a/src/desktoptheme/breeze/metadata.desktop +++ b/src/desktoptheme/breeze/metadata.desktop @@ -2,11 +2,14 @@ Name=Breeze Name[ar]=نسيم Name[ca]=Brisa +Name[cs]=Breeze Name[de]=Brise Name[en_GB]=Breeze Name[es]=Brisa Name[fi]=Breeze +Name[fr]=Breeze Name[gl]=Breeze +Name[hu]=Breeze Name[ia]=Brisa Name[nds]=Breeze Name[nl]=Breeze @@ -30,7 +33,7 @@ Name[zh_TW]=Breeze Dark X-KDE-PluginInfo-Author=KDE Visual Design Group X-KDE-PluginInfo-Email=kde-artists@kde.org X-KDE-PluginInfo-Name=default -X-KDE-PluginInfo-Version=0.8 +X-KDE-PluginInfo-Version=0.81 X-KDE-PluginInfo-Website=http://plasma.kde.org X-KDE-PluginInfo-Category= X-KDE-PluginInfo-Depends= diff --git a/src/desktoptheme/breeze/widgets/actionbutton.svgz b/src/desktoptheme/breeze/widgets/actionbutton.svgz index fda4a9b7b..fa360e893 100644 Binary files a/src/desktoptheme/breeze/widgets/actionbutton.svgz and b/src/desktoptheme/breeze/widgets/actionbutton.svgz differ diff --git a/src/desktoptheme/breeze/widgets/button.svgz b/src/desktoptheme/breeze/widgets/button.svgz index 8bf732800..d8297babe 100644 Binary files a/src/desktoptheme/breeze/widgets/button.svgz and b/src/desktoptheme/breeze/widgets/button.svgz differ diff --git a/src/desktoptheme/breeze/widgets/containment-controls.svgz b/src/desktoptheme/breeze/widgets/containment-controls.svgz index a914419ac..ec6014ca4 100644 Binary files a/src/desktoptheme/breeze/widgets/containment-controls.svgz and b/src/desktoptheme/breeze/widgets/containment-controls.svgz differ diff --git a/src/desktoptheme/breeze/widgets/lineedit.svgz b/src/desktoptheme/breeze/widgets/lineedit.svgz index 22672149e..816fe24f2 100644 Binary files a/src/desktoptheme/breeze/widgets/lineedit.svgz and b/src/desktoptheme/breeze/widgets/lineedit.svgz differ diff --git a/src/desktoptheme/oxygen/metadata.desktop b/src/desktoptheme/oxygen/metadata.desktop index f064a66ca..a4eb5d9d0 100644 --- a/src/desktoptheme/oxygen/metadata.desktop +++ b/src/desktoptheme/oxygen/metadata.desktop @@ -8,8 +8,9 @@ Name[de]=Oxygen Name[en_GB]=Oxygen Name[es]=Oxígeno Name[fi]=Oxygen +Name[fr]=Oxygen Name[gl]=Oxygen -Name[hu]=Oxigén +Name[hu]=Oxygen Name[ia]=Oxygen Name[it]=Oxygen Name[mr]=ऑक्सीजन @@ -42,6 +43,7 @@ Comment[de]=Oberflächen-Design im Oxygen-Stil Comment[en_GB]=Theme done in the Oxygen style Comment[es]=Tema realizado al estilo de Oxígeno Comment[fi]=Oxygen-tyylinen teema +Comment[fr]=Thème réalisé dans le style Oxygen Comment[gl]=Tema feito no estilo Oxygen Comment[hu]=Oxygen-stílusú téma Comment[ia]=Thema facite in le stilo de Oxygen diff --git a/src/kpart/plasma-kpart.desktop b/src/kpart/plasma-kpart.desktop index 1eef5550b..766626951 100644 --- a/src/kpart/plasma-kpart.desktop +++ b/src/kpart/plasma-kpart.desktop @@ -7,6 +7,7 @@ Name[de]=plasma-kpart Name[en_GB]=plasma-kpart Name[es]=plasma-kpart Name[fi]=plasma-kpart +Name[fr]=plasma-kpart Name[gl]=plasma-kpart Name[hu]=plasma-kpart Name[ia]=plasma-kpart diff --git a/src/plasma/applet.cpp b/src/plasma/applet.cpp index b0806deaa..f4b5410c5 100644 --- a/src/plasma/applet.cpp +++ b/src/plasma/applet.cpp @@ -338,7 +338,7 @@ KPluginInfo Applet::pluginInfo() const return d->appletDescription; } -Types::Types::ImmutabilityType Applet::immutability() const +Types::ImmutabilityType Applet::immutability() const { // if this object is itself system immutable, then just return that; it's the most // restrictive setting possible and will override anything that might be happening above it @@ -375,7 +375,7 @@ Types::Types::ImmutabilityType Applet::immutability() const } } -void Applet::setImmutability(const Types::Types::ImmutabilityType immutable) +void Applet::setImmutability(const Types::ImmutabilityType immutable) { if (d->immutability == immutable || immutable == Types::SystemImmutable) { // we do not store system immutability in d->immutability since that gets saved diff --git a/src/plasma/corona.cpp b/src/plasma/corona.cpp index 018dcd422..d51a9b8c7 100644 --- a/src/plasma/corona.cpp +++ b/src/plasma/corona.cpp @@ -563,7 +563,6 @@ QList CoronaPrivate::importLayout(const KConfigGroup &con if (!ready) { return; } - --containmentsStarting; if (containmentsStarting <= 0) { emit q->startupCompleted(); diff --git a/src/plasma/data/servicetypes/plasma-applet.desktop b/src/plasma/data/servicetypes/plasma-applet.desktop index 247bbfb5d..83825e1d8 100644 --- a/src/plasma/data/servicetypes/plasma-applet.desktop +++ b/src/plasma/data/servicetypes/plasma-applet.desktop @@ -11,6 +11,7 @@ Comment[de]=Plasma-Miniprogramm Comment[en_GB]=Plasma applet Comment[es]=Miniaplicación para Plasma Comment[fi]=Plasma-sovelma +Comment[fr]=Applet Plasma Comment[gl]=Applet de Plasma Comment[hu]=Plasma kisalkalmazás Comment[ia]=Applet Plasma diff --git a/src/plasma/data/servicetypes/plasma-containment.desktop b/src/plasma/data/servicetypes/plasma-containment.desktop index 04cf8e81c..bc65b5d7a 100644 --- a/src/plasma/data/servicetypes/plasma-containment.desktop +++ b/src/plasma/data/servicetypes/plasma-containment.desktop @@ -10,6 +10,7 @@ Comment[de]=Plasma-Programmcontainer und Hintergrund-Zeichnung Comment[en_GB]=Plasma applet container and background painter Comment[es]=Contenedor de miniaplicación de Plasma y pintor de fondo Comment[fi]=Plasma-sovelmasäiliö ja taustan piirrin +Comment[fr]=Conteneur d'applets Plasma et décor d'arrière-plan Comment[gl]=Un contedor de applet de Plasma e pintor do fondo Comment[hu]=Tároló Plasma-kisalkalmazásokhoz és háttérrajzoló Comment[ia]=Receptaculo applet Plasma e pictor de fundo diff --git a/src/plasma/data/servicetypes/plasma-containmentactions.desktop b/src/plasma/data/servicetypes/plasma-containmentactions.desktop index dc31894ba..07eb734a7 100644 --- a/src/plasma/data/servicetypes/plasma-containmentactions.desktop +++ b/src/plasma/data/servicetypes/plasma-containmentactions.desktop @@ -10,7 +10,9 @@ Comment[de]=Plasma-Container-Aktionen Comment[en_GB]=Plasma ContainmentActions Comment[es]=«ContainmentActions» de Plasma Comment[fi]=Plasma ContainmentActions +Comment[fr]=Actions de conteneur de Plasma Comment[gl]=ContainmentActions de Plasma +Comment[hu]=Plasma ContainmentActions Comment[ia]=Actiones de continemento Plasma Comment[mr]=प्लाज्मा कंटेनमेंट कृती Comment[nds]=Plasma-Gelaatsakschonen diff --git a/src/plasma/data/servicetypes/plasma-dataengine.desktop b/src/plasma/data/servicetypes/plasma-dataengine.desktop index c27a9104f..b32b49a24 100644 --- a/src/plasma/data/servicetypes/plasma-dataengine.desktop +++ b/src/plasma/data/servicetypes/plasma-dataengine.desktop @@ -10,6 +10,7 @@ Comment[de]=Plasma-Daten-Treiber Comment[en_GB]=Plasma Data Engine Comment[es]=Motor de datos para Plasma Comment[fi]=Plasma-tietomoottori +Comment[fr]=Moteur de données de Plasma Comment[gl]=Motor de datos de plasma Comment[hu]=Plazma adatmotor Comment[ia]=Motor de datos de Plasma diff --git a/src/plasma/data/servicetypes/plasma-generic.desktop b/src/plasma/data/servicetypes/plasma-generic.desktop index bafef1b8f..f39b0c508 100644 --- a/src/plasma/data/servicetypes/plasma-generic.desktop +++ b/src/plasma/data/servicetypes/plasma-generic.desktop @@ -9,7 +9,9 @@ Name[de]=Plasma-Paket Name[en_GB]=Plasma Package Name[es]=Paquete de Plasma Name[fi]=Plasma-paketti +Name[fr]=Paquet Plasma Name[gl]=Paquete de Plasma +Name[hu]=Plasma csomag Name[ia]=Pacchetto de Plasma Name[nds]=Plasma-Paket Name[nl]=Plasma-pakket @@ -31,11 +33,14 @@ Name[zh_TW]=Plasma 套件 Comment=Generic Plasma Package Comment[bs]=Generički plazma paket Comment[ca]=Paquet genèric del Plasma +Comment[cs]=Obecný balíček Plasmy Comment[de]=Allgemeines Plasma-Paket Comment[en_GB]=Generic Plasma Package Comment[es]=Paquete de Plasma genérico Comment[fi]=Yleispätevä Plasma-paketti +Comment[fr]=Paquet Plasma générique Comment[gl]=Paquete xenérico de Plasma +Comment[hu]=Általános Plasma csomag Comment[ia]=Plasma generic Comment[nds]=Allmeen Plasma-Paket Comment[nl]=Algemeen plasma-pakket diff --git a/src/plasma/data/servicetypes/plasma-lookandfeel.desktop b/src/plasma/data/servicetypes/plasma-lookandfeel.desktop index d75c7f5be..8501cfde6 100644 --- a/src/plasma/data/servicetypes/plasma-lookandfeel.desktop +++ b/src/plasma/data/servicetypes/plasma-lookandfeel.desktop @@ -5,11 +5,14 @@ Name=Plasma Look and Feel Name[ar]=مظهر وَإحساس پلازما Name[bs]=Plazma izgled i osjećaj Name[ca]=Aspecte i comportament del Plasma +Name[cs]=Vzhled a chování Plasmy Name[de]=Plasma-Erscheinungsbild Name[en_GB]=Plasma Look and Feel Name[es]=Aspecto visual de Plasma Name[fi]=Plasman ulkoasu ja tuntuma +Name[fr]=Apparence de Plasma Name[gl]=Aparencia e comportamento de Plasma +Name[hu]=A Plasma megjelenése Name[ia]=Aspecto (Look and feel) de Plasma Name[nds]=Utsehn un Bedenen vun Plasma Name[nl]=Plasma Look-and-Feel @@ -36,7 +39,9 @@ Comment[de]=Legt das Erscheinungsbild für Plasma fest Comment[en_GB]=Defines the Visual Language for Plasma Shells Comment[es]=Define el lenguaje visual para los intérpretes de Plasma Comment[fi]=Määrittää Plasma-kuorien visuaalisen kielen +Comment[fr]=Définit le langage visuel pour les terminaux de Plasma Comment[gl]=Define a linguaxe visual das shells de Plasma +Comment[hu]=A Plasma felület vizuális nyelvének leírása Comment[ia]=Ildefine le linguage visual per Shells de Plasma Comment[nds]=Leggt de visuell Spraak för Plasmakonsolen fast Comment[nl]=Definieert de Visual Language voor Plasma Shells diff --git a/src/plasma/data/servicetypes/plasma-packagestructure.desktop b/src/plasma/data/servicetypes/plasma-packagestructure.desktop index 254c5fe98..3aed8c47a 100644 --- a/src/plasma/data/servicetypes/plasma-packagestructure.desktop +++ b/src/plasma/data/servicetypes/plasma-packagestructure.desktop @@ -9,7 +9,9 @@ Comment[de]=Plasma-Paket-Struktur-Definition Comment[en_GB]=Plasma package structure definition Comment[es]=Definición de estructura de paquete para Plasma Comment[fi]=Plasma-pakettirakenteen määritelmä +Comment[fr]=Définition de la structure des paquets de Plasma Comment[gl]=Definición da estrutura do paquete de Plasma +Comment[hu]=Plasma-csomag struktúradefiníció Comment[ia]=Definition del structura de pacchetto de Plasma Comment[mr]=प्लाज्मा पॅकेज संरचना व्याख्या Comment[nds]=Paketstruktuur-Fastleggen vun Plasma diff --git a/src/plasma/data/servicetypes/plasma-scriptengine.desktop b/src/plasma/data/servicetypes/plasma-scriptengine.desktop index 2c3e2659d..21ddc33ed 100644 --- a/src/plasma/data/servicetypes/plasma-scriptengine.desktop +++ b/src/plasma/data/servicetypes/plasma-scriptengine.desktop @@ -10,7 +10,9 @@ Comment[de]=Skriptsprachen-Erweiterung für Plasma Comment[en_GB]=Scripting language extension for Plasma Comment[es]=Extensión de lenguaje de scripts para Plasma Comment[fi]=Skriptauskielituki Plasmalle +Comment[fr]=Extension du langage de script pour Plasma Comment[gl]=Extensión de linguaxe de scripts para o Plasma +Comment[hu]=Szkriptnyelv-kiterjesztés a Plasmához Comment[ia]=Extension del language de script de Plasma Comment[mr]=प्लाज्मा साठी स्क्रिप्टींग भाषा एक्सटेंशन Comment[nds]=Skriptspraak-Verwiedern för Plasma diff --git a/src/plasma/data/servicetypes/plasma-service.desktop b/src/plasma/data/servicetypes/plasma-service.desktop index e7377401e..04a1f4180 100644 --- a/src/plasma/data/servicetypes/plasma-service.desktop +++ b/src/plasma/data/servicetypes/plasma-service.desktop @@ -11,7 +11,9 @@ Comment[de]=Plasma-Dienst Comment[en_GB]=Plasma service Comment[es]=Servicio de Plasma Comment[fi]=Plasma-palvelu +Comment[fr]=Service de Plasma Comment[gl]=Servizo do Plasma +Comment[hu]=Plasma szolgáltatás Comment[ia]=Servicio de Plasma Comment[mr]=प्लाज्मा सेवा Comment[nds]=Plasma-Deenst diff --git a/src/plasma/data/servicetypes/plasma-shell.desktop b/src/plasma/data/servicetypes/plasma-shell.desktop index e2c83ba8b..75b9e37f4 100644 --- a/src/plasma/data/servicetypes/plasma-shell.desktop +++ b/src/plasma/data/servicetypes/plasma-shell.desktop @@ -5,11 +5,14 @@ Name=Plasma Shell Name[ar]=صَدفة پلازما Name[bs]=Plazma školjka Name[ca]=Intèrpret d'ordres del Plasma +Name[cs]=Shell Plasmy Name[de]=Plasma-Umgebung Name[en_GB]=Plasma Shell Name[es]=Intérprete de Plasma Name[fi]=Plasma-kuori +Name[fr]=Terminal de Plasma Name[gl]=Shell de Plasma +Name[hu]=Plasma felület Name[ia]=Plasma Shell (Shell de Plasma) Name[nds]=Plasma-Konsool Name[nl]=Plasma Shell @@ -37,7 +40,9 @@ Comment[de]=Plasma-Shell-Komponenten Comment[en_GB]=Plasma Shell Components Comment[es]=Componentes del intérprete de Plasma Comment[fi]=Plasma-kuoren komponentit +Comment[fr]=Composant des terminaux de Plasma Comment[gl]=Compoñentes da shell de Plasma +Comment[hu]=Plasma felület elemei Comment[ia]=Componentes de Plasma Shell Comment[nds]=Plasma-Konsoolkomponenten Comment[nl]=Plasma Shell-componenten @@ -56,4 +61,3 @@ Comment[sv]=Plasma skalkomponenter Comment[uk]=Компоненти оболонки Плазми Comment[x-test]=xxPlasma Shell Componentsxx Comment[zh_TW]=Plasma Shell 組件 - diff --git a/src/plasma/package.cpp b/src/plasma/package.cpp index 6ad332167..07b3c90c5 100644 --- a/src/plasma/package.cpp +++ b/src/plasma/package.cpp @@ -49,6 +49,7 @@ Package::Package(PackageStructure *structure) : d(new PackagePrivate()) { d->structure = structure; + if (d->structure) { d->structure.data()->initPackage(this); } @@ -188,6 +189,27 @@ void Package::setDefaultPackageRoot(const QString &packageRoot) } } +void Package::setFallbackPackage(const Plasma::Package &package) +{ + if ((d->fallbackPackage && d->fallbackPackage->path() == package.path() && d->fallbackPackage->metadata() == package.metadata()) || + //can't be fallback of itself + (package.path() == path() && package.metadata() == metadata()) || + d->hasCycle(package)) { + return; + } + + d->fallbackPackage = new Package(package); +} + +Plasma::Package Package::fallbackPackage() const +{ + if (d->fallbackPackage) { + return (*d->fallbackPackage); + } else { + return Package(); + } +} + QString Package::servicePrefix() const { return d->servicePrefix; @@ -290,7 +312,7 @@ QString Package::filePath(const char *fileType, const QString &filename) const { if (!d->valid) { //qDebug() << "package is not valid"; - return QString(); + return d->fallbackFilePath(fileType, filename); } const QString discoveryKey(fileType + filename); @@ -305,7 +327,7 @@ QString Package::filePath(const char *fileType, const QString &filename) const //qDebug()<contents.keys(); if (!d->contents.contains(fileType)) { //qDebug() << "package does not contain" << fileType << filename; - return QString(); + return d->fallbackFilePath(fileType, filename); } paths = d->contents[fileType].paths; @@ -313,7 +335,7 @@ QString Package::filePath(const char *fileType, const QString &filename) const if (paths.isEmpty()) { //qDebug() << "no matching path came of it, while looking for" << fileType << filename; d->discoveries.insert(discoveryKey, QString()); - return QString(); + return d->fallbackFilePath(fileType, filename); } } else { //when filetype is empty paths is always empty, so try with an empty string @@ -356,7 +378,7 @@ QString Package::filePath(const char *fileType, const QString &filename) const } //qDebug() << fileType << filename << "does not exist in" << prefixes << "at root" << d->path; - return QString(); + return d->fallbackFilePath(fileType, filename); } QStringList Package::entryList(const char *key) const @@ -451,11 +473,13 @@ void Package::setPath(const QString &path) QStringList paths; if (QDir::isRelativePath(path)) { QString p; + if (d->defaultPackageRoot.isEmpty()) { p = path % "/"; } else { p = d->defaultPackageRoot % path % "/"; } + if (QDir::isRelativePath(p)) { paths << QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, p, QStandardPaths::LocateDirectory); } else { @@ -464,6 +488,7 @@ void Package::setPath(const QString &path) paths << p; } } + //qDebug() << "paths:" << p << paths << d->defaultPackageRoot; } else { const QDir dir(path); @@ -497,6 +522,7 @@ void Package::setPath(const QString &path) } } + // if nothing did change, then we go back to the old dptr if (d->path == previousPath) { d = oldD; @@ -508,6 +534,8 @@ void Package::setPath(const QString &path) delete d->metadata; d->metadata = 0; + QString fallback; + // uh-oh, but we didn't end up with anything valid, so we sadly reset ourselves // to futility. if (!d->valid) { @@ -761,6 +789,7 @@ KJob *Package::uninstall(const QString &packageName, const QString &packageRoot) PackagePrivate::PackagePrivate() : QSharedData(), servicePrefix("plasma-applet-"), + fallbackPackage(0), metadata(0), externalPaths(false), valid(false), @@ -783,6 +812,7 @@ PackagePrivate::~PackagePrivate() dir.removeRecursively(); } delete metadata; + delete fallbackPackage; } PackagePrivate &PackagePrivate::operator=(const PackagePrivate &rhs) @@ -792,6 +822,11 @@ PackagePrivate &PackagePrivate::operator=(const PackagePrivate &rhs) } structure = rhs.structure; + if (rhs.fallbackPackage) { + fallbackPackage = new Package(*rhs.fallbackPackage); + } else { + fallbackPackage = 0; + } path = rhs.path; contentsPrefixPaths = rhs.contentsPrefixPaths; servicePrefix = rhs.servicePrefix; @@ -871,4 +906,38 @@ void PackagePrivate::createPackageMetadata(const QString &path) metadata = new KPluginInfo(metadataPath); } +QString PackagePrivate::fallbackFilePath(const char *key, const QString &filename) const +{ + //don't fallback if the package isn't valid and never fallback the metadata file + if (qstrcmp(key, "metadata") != 0 && fallbackPackage && fallbackPackage->isValid()) { + return fallbackPackage->filePath(key, filename); + } else { + return QString(); + } +} + +bool PackagePrivate::hasCycle(const Plasma::Package &package) +{ + if (!package.d->fallbackPackage) { + return false; + } + + //This is the Floyd cycle detection algorithm + //http://en.wikipedia.org/wiki/Cycle_detection#Tortoise_and_hare + Plasma::Package *slowPackage = const_cast(&package); + Plasma::Package *fastPackage = const_cast(&package); + + while (fastPackage && fastPackage->d->fallbackPackage) { + //consider two packages the same if they have the same metadata + if ((fastPackage->d->fallbackPackage->metadata().isValid() && fastPackage->d->fallbackPackage->metadata() == slowPackage->metadata()) || + (fastPackage->d->fallbackPackage->d->fallbackPackage && fastPackage->d->fallbackPackage->d->fallbackPackage->metadata().isValid() && fastPackage->d->fallbackPackage->d->fallbackPackage->metadata() == slowPackage->metadata())) { + qWarning() << "Warning: the fallback chain of " << package.metadata().pluginName() << "contains a cyclical dependency."; + return true; + } + fastPackage = fastPackage->d->fallbackPackage->d->fallbackPackage; + slowPackage = slowPackage->d->fallbackPackage; + } + return false; +} + } // Namespace diff --git a/src/plasma/package.h b/src/plasma/package.h index 2c686d784..28f8b08a1 100644 --- a/src/plasma/package.h +++ b/src/plasma/package.h @@ -290,6 +290,20 @@ public: */ void setDefaultPackageRoot(const QString &packageRoot); + /** + * Sets the fallback package root path + * If a file won't be found in this package, it will search it in the package + * with the same structure identified by path + * It is intended to be used by the packageStructure + * @param path package root path @see setPath + */ + void setFallbackPackage(const Plasma::Package &package); + + /** + * @return The fallback package root path + */ + Plasma::Package fallbackPackage() const; + // Content structure description methods /** * @return all directories registered as part of this Package's structure @@ -328,6 +342,7 @@ public: private: QExplicitlySharedDataPointer d; + friend class PackagePrivate; }; } diff --git a/src/plasma/packagestructure.h b/src/plasma/packagestructure.h index fb32c22a6..c746732ba 100644 --- a/src/plasma/packagestructure.h +++ b/src/plasma/packagestructure.h @@ -27,6 +27,7 @@ #include #include #include +#include namespace Plasma { @@ -98,5 +99,9 @@ private: #define K_EXPORT_PLASMA_PACKAGE(libname, classname) \ K_PLUGIN_FACTORY(factory, registerPlugin();) \ K_EXPORT_PLUGIN_VERSION(PLASMA_VERSION) -#endif +#define K_EXPORT_PLASMA_PACKAGE_WITH_JSON(classname, jsonFile) \ + K_PLUGIN_FACTORY_WITH_JSON(factory, jsonFile, registerPlugin();) \ + K_EXPORT_PLUGIN_VERSION(PLASMA_VERSION) + +#endif diff --git a/src/plasma/pluginloader.cpp b/src/plasma/pluginloader.cpp index d2ba5ca2d..d08104e5f 100644 --- a/src/plasma/pluginloader.cpp +++ b/src/plasma/pluginloader.cpp @@ -51,7 +51,10 @@ class PluginLoaderPrivate { public: PluginLoaderPrivate() - : packageRE("[^a-zA-Z0-9\\-_]") + : isDefaultLoader(false), + dataEnginePluginDir("plasma/dataengine"), + packageStructurePluginDir("plasma/packagestructure"), + packageRE("[^a-zA-Z0-9\\-_]") { } @@ -61,7 +64,8 @@ public: static QSet s_customCategories; QHash > structures; bool isDefaultLoader; - QString pluginDir; + QString dataEnginePluginDir; + QString packageStructurePluginDir; QRegExp packageRE; }; @@ -113,8 +117,6 @@ QString PluginLoaderPrivate::parentAppConstraint(const QString &parentApp) PluginLoader::PluginLoader() : d(new PluginLoaderPrivate) { - d->pluginDir = "plasma/dataengine"; - d->isDefaultLoader = false; } PluginLoader::~PluginLoader() @@ -236,33 +238,22 @@ DataEngine *PluginLoader::loadDataEngine(const QString &name) return engine; } - // load the engine, add it to the engines QString constraint = QString("[X-KDE-PluginInfo-Name] == '%1'").arg(name); - KService::List offers = KServiceTypeTrader::self()->query("Plasma/DataEngine", - constraint); - QString error; - if (offers.isEmpty()) { -#ifndef NDEBUG - // qDebug() << "offers are empty for " << name << " with constraint " << constraint; -#endif - } else { - QVariantList allArgs; - allArgs << offers.first()->storageId(); - QString api = offers.first()->property("X-Plasma-API").toString(); + // First check with KServiceTypeTrader as that is where scripted engines will be + KService::List offers = KServiceTypeTrader::self()->query("Plasma/DataEngine", constraint); + + if (!offers.isEmpty()) { + const QString api = offers.first()->property("X-Plasma-API").toString(); if (api.isEmpty()) { - engine = KPluginTrader::createInstanceFromQuery(d->pluginDir, "Plasma/DataEngine", constraint, 0); + // it is a C++ plugin, fetch it with KPluginTrader + engine = KPluginTrader::createInstanceFromQuery(d->dataEnginePluginDir, "Plasma/DataEngine", constraint, 0); } else { + // it is a scripted plugin, load it via a package engine = new DataEngine(KPluginInfo(offers.first()), 0); } } - if (!engine) { -#ifndef NDEBUG - // qDebug() << "Couldn't load engine \"" << name << "\". Error given: " << error; -#endif - } - return engine; } @@ -454,23 +445,16 @@ Package PluginLoader::loadPackage(const QString &packageFormat, const QString &s } // first we check for plugins in sycoca - QString constraint = QString("[X-KDE-PluginInfo-Name] == '%1'").arg(packageFormat); - KService::List offers = KServiceTypeTrader::self()->query("Plasma/PackageStructure", constraint); - - QVariantList args; - QString error; - foreach (const KService::Ptr &offer, offers) { - structure = qobject_cast(offer->createInstance(0, args, &error)); - - if (structure) { - d->structures.insert(hashkey, structure); - return Package(structure); - } + const QString constraint = QString("[X-KDE-PluginInfo-Name] == '%1'").arg(packageFormat); + structure = KPluginTrader::createInstanceFromQuery(d->packageStructurePluginDir, "Plasma/PackageStructure", constraint, 0); + if (structure) { + d->structures.insert(hashkey, structure); + return Package(structure); + } #ifndef NDEBUG // qDebug() << "Couldn't load Package for" << packageFormat << "! reason given: " << error; #endif - } return Package(); } @@ -695,7 +679,7 @@ KPluginInfo::List PluginLoader::listDataEngineInfo(const QString &parentApp) constraint.append("[X-KDE-ParentApp] == '").append(parentApp).append("'"); } - list.append(KPluginTrader::self()->query(d->pluginDir, "Plasma/DataEngine", constraint)); + list.append(KPluginTrader::self()->query(d->dataEnginePluginDir, "Plasma/DataEngine", constraint)); return list; } diff --git a/src/plasma/private/applet_p.cpp b/src/plasma/private/applet_p.cpp index 684350570..830514bfd 100644 --- a/src/plasma/private/applet_p.cpp +++ b/src/plasma/private/applet_p.cpp @@ -170,8 +170,8 @@ void AppletPrivate::init(const QString &packagePath, const QVariantList &args) foreach (const QString &prov, provides) { if (!first) { constraint += " or "; - first = false; } + first = false; constraint += "'" + prov + "' in [X-Plasma-Provides]"; } diff --git a/src/plasma/private/associatedapplicationmanager.cpp b/src/plasma/private/associatedapplicationmanager.cpp index b7407c0ca..01dd3193b 100644 --- a/src/plasma/private/associatedapplicationmanager.cpp +++ b/src/plasma/private/associatedapplicationmanager.cpp @@ -118,9 +118,7 @@ void AssociatedApplicationManager::setApplication(Plasma::Applet *applet, const KService::Ptr service = KService::serviceByDesktopName(application); if (service || !QStandardPaths::findExecutable(application).isNull() || QFile::exists(application)) { d->applicationNames[applet] = application; - if (!d->urlLists.contains(applet)) { - connect(applet, SIGNAL(destroyed(QObject*)), this, SLOT(cleanupApplet(QObject*))); - } else { + if (d->urlLists.contains(applet)) { QAction *a = applet->actions()->action("run associated application"); if (a) { a->setIcon(QIcon::fromTheme("system-run")); @@ -128,6 +126,7 @@ void AssociatedApplicationManager::setApplication(Plasma::Applet *applet, const } } } + connect(applet, SIGNAL(destroyed(QObject*)), this, SLOT(cleanupApplet(QObject*))); } QString AssociatedApplicationManager::application(const Plasma::Applet *applet) const @@ -152,6 +151,7 @@ void AssociatedApplicationManager::setUrls(Plasma::Applet *applet, const QList AssociatedApplicationManager::urls(const Plasma::Applet *applet) const diff --git a/src/plasma/private/containment_p.cpp b/src/plasma/private/containment_p.cpp index 616bc9342..383677226 100644 --- a/src/plasma/private/containment_p.cpp +++ b/src/plasma/private/containment_p.cpp @@ -246,7 +246,7 @@ void ContainmentPrivate::setUiReady() //if we are the containment and there is still some uncomplete applet, we're still incomplete if (!uiReady) { uiReady = true; - if (q->Applet::d->started && appletsUiReady && loadingApplets.isEmpty()) { + if (q->Applet::d->started && (appletsUiReady || applets.isEmpty()) && loadingApplets.isEmpty()) { emit q->uiReadyChanged(true); } } diff --git a/src/plasma/private/package_p.h b/src/plasma/private/package_p.h index d902eb11c..ddf2bdb84 100644 --- a/src/plasma/private/package_p.h +++ b/src/plasma/private/package_p.h @@ -73,6 +73,8 @@ public: void createPackageMetadata(const QString &path); QString unpack(const QString &filePath); void updateHash(const QString &basePath, const QString &subPath, const QDir &dir, QCryptographicHash &hash); + QString fallbackFilePath(const char *key, const QString &filename = QString()) const; + bool hasCycle(const Plasma::Package &package); QWeakPointer structure; QString path; @@ -82,6 +84,7 @@ public: QString servicePrefix; QHash discoveries; QHash contents; + Package *fallbackPackage; #ifndef PLASMA_NO_PACKAGE_EXTRADATA QStringList mimeTypes; #endif diff --git a/src/plasma/private/packages.cpp b/src/plasma/private/packages.cpp index 42906ecf8..ac85a885f 100644 --- a/src/plasma/private/packages.cpp +++ b/src/plasma/private/packages.cpp @@ -115,11 +115,6 @@ void PlasmoidPackage::initPackage(Package *package) package->addFileDefinition("mainconfigxml", "config/main.xml", i18n("Configuration XML file")); } -QString ContainmentPackage::mainScriptConfigKey() const -{ - return QLatin1String("X-Plasma-Containment-MainScript"); -} - void DataEnginePackage::initPackage(Package *package) { ChangeableMainScriptPackage::initPackage(package); @@ -280,6 +275,9 @@ void ShellPackage::initPackage(Plasma::Package *package) //Widget explorer package->addFileDefinition("widgetexplorer", "explorer/WidgetExplorer.qml", i18n("Widgets explorer UI")); + package->addFileDefinition("interactiveconsole", "InteractiveConsole.qml", + i18n("A UI for writing, loading and running desktop scripts in the current live session")); + //package->setRequired("mainscript", true); } diff --git a/src/plasma/private/packages_p.h b/src/plasma/private/packages_p.h index 0833a4ed1..41a7602fb 100644 --- a/src/plasma/private/packages_p.h +++ b/src/plasma/private/packages_p.h @@ -48,12 +48,6 @@ public: void initPackage(Package *package); }; -class ContainmentPackage : public PlasmoidPackage -{ -public: - QString mainScriptConfigKey() const; -}; - class DataEnginePackage : public ChangeableMainScriptPackage { public: diff --git a/src/plasma/private/theme_p.cpp b/src/plasma/private/theme_p.cpp index 763e42003..365974e13 100644 --- a/src/plasma/private/theme_p.cpp +++ b/src/plasma/private/theme_p.cpp @@ -722,7 +722,8 @@ void ThemePrivate::setThemeName(const QString &tempThemeName, bool writeSettings QString themePath = QStandardPaths::locate(QStandardPaths::GenericDataLocation, QLatin1Literal(PLASMA_RELATIVE_DATA_INSTALL_DIR "/desktoptheme/") % theme % "/metadata.desktop"); if (themePath.isEmpty() && themeName.isEmpty()) { - themePath = QStandardPaths::locate(QStandardPaths::GenericDataLocation, QStringLiteral(PLASMA_RELATIVE_DATA_INSTALL_DIR "/desktoptheme/default"), QStandardPaths::LocateDirectory); + // note: can't use QStringLiteral("foo" "bar") on Windows + themePath = QStandardPaths::locate(QStandardPaths::GenericDataLocation, QString(PLASMA_RELATIVE_DATA_INSTALL_DIR "/desktoptheme/default"), QStandardPaths::LocateDirectory); if (themePath.isEmpty()) { return; diff --git a/src/plasmapkg/plasmapkg.cpp b/src/plasmapkg/plasmapkg.cpp index f21d46162..7d55d0f38 100644 --- a/src/plasmapkg/plasmapkg.cpp +++ b/src/plasmapkg/plasmapkg.cpp @@ -618,7 +618,7 @@ void PlasmaPkgPrivate::listTypes() foreach (const QString &file, desktopFiles) { // extract the type KConfig config(file, KConfig::SimpleConfig); -#warning "read config here" +#pragma message("read config here") // structure.read(&config); // get the name based on the rc file name, just as Plasma::PackageStructure does const QString name = file.left(file.length() - 2); diff --git a/src/plasmaquick/Mainpage.dox b/src/plasmaquick/Mainpage.dox new file mode 100644 index 000000000..970295834 --- /dev/null +++ b/src/plasmaquick/Mainpage.dox @@ -0,0 +1,21 @@ +/** @page libplasmaquick Plasmoid Interfaces + +libplasmaquick is an internal part of lib plasma. + +It should not be used directly, however some classes are exposed to Plasma as attached properties. + +Namely: + - AppletInterface + - ContainmentInterface + +which are exposed as "Plasmoid" for applets and containments respectively. + +QML applets should import org.kde.plasma.plasmoid 2.0 in order to access this attached object + +*/ + +// DOXYGEN_SET_PROJECT_NAME = Plasma +// DOXYGEN_SET_RECURSIVE = YES +// DOXYGEN_EXCLUDE_PATTERNS = *_p.h */private/* */tests/* + +// vim:ts=4:sw=4:expandtab:filetype=doxygen diff --git a/src/plasmaquick/appletquickitem.cpp b/src/plasmaquick/appletquickitem.cpp index 9aa28763a..e7eb27460 100644 --- a/src/plasmaquick/appletquickitem.cpp +++ b/src/plasmaquick/appletquickitem.cpp @@ -380,7 +380,9 @@ AppletQuickItem::AppletQuickItem(Plasma::Applet *applet, QQuickItem *parent) this, SLOT(compactRepresentationCheck())); d->qmlObject = new KDeclarative::QmlObject(this); - d->qmlObject->setTranslationDomain("plasma_applet_" + applet->pluginInfo().pluginName()); + if (applet->pluginInfo().isValid()) { + d->qmlObject->setTranslationDomain("plasma_applet_" + applet->pluginInfo().pluginName()); + } d->qmlObject->setInitializationDelayed(true); // set the graphicObject dynamic property on applet @@ -612,7 +614,7 @@ void AppletQuickItem::setExpanded(bool expanded) } //if there is no compact representation it means it's always expanded - //Containnments are always expanded + //Containments are always expanded if (d->expanded == expanded) { return; } diff --git a/src/plasmaquick/configmodel.h b/src/plasmaquick/configmodel.h index 3e0ddd093..c24dee1f9 100644 --- a/src/plasmaquick/configmodel.h +++ b/src/plasmaquick/configmodel.h @@ -51,7 +51,7 @@ class ConfigCategoryPrivate; class ConfigModelPrivate; class ConfigCategory; -/** +/* * This model contains all the possible config categories for a dialog, * such as categories of the config dialog for an Applet * TODO: it should probably become an import instead of a library? diff --git a/src/plasmaquick/dialog.h b/src/plasmaquick/dialog.h index 9504349f2..35d237a66 100644 --- a/src/plasmaquick/dialog.h +++ b/src/plasmaquick/dialog.h @@ -53,9 +53,32 @@ class DialogPrivate; /** * @class Dialog - * @short QML wrapper for dialogs * - * Exposed as `PlasmaCore.Dialog` in QML. + * Dialog creates a Plasma themed top level window that can contain any QML component. + * + * It can be automatically positioned relative to a visual parent + * The dialog will resize to the size of the main item + * + * @code{.qml} + * import QtQuick 2.0 + * import org.kde.plasma.core 2.0 as PlasmaCore + * Item { + * PlasmaCore.Dialog { + * visible: true + * mainItem: Item { + * width: 500 + * height: 500 + * + * Text { + * anchors.centerIn: parent + * color: "red" + * text: "text" + * } + * } + * } + * } + * @endcode + * */ class PLASMAQUICK_EXPORT Dialog : public QQuickWindow, public QQmlParserStatus { diff --git a/src/platformstatus/kded_platformstatus.desktop b/src/platformstatus/kded_platformstatus.desktop index 69c86a619..b1d6cda90 100644 --- a/src/platformstatus/kded_platformstatus.desktop +++ b/src/platformstatus/kded_platformstatus.desktop @@ -13,6 +13,7 @@ Name[de]=Plattform-Status Name[en_GB]=Platform Status Name[es]=Estado de la plataforma Name[fi]=Alustan tila +Name[fr]=État de la plate-forme Name[gl]=Estado da plataforma Name[hu]=Platform állapot Name[ia]=Stato de platteforma @@ -41,7 +42,9 @@ Comment[de]=Überwacht das aktuelle Shell-Paket und die Plattformdefinitionen. Comment[en_GB]=Tracks the current shell package and the platform definition strings. Comment[es]=Rastrea las cadenas de definición del paquete de intérprete actual y de la plataforma. Comment[fi]=Seuraa nykyistä kuoripakettia ja alustan määrittelyn merkkijonoja. +Comment[fr]=Suit le paquet du terminal actuel et les chaînes de définition de la plate-forme. Comment[gl]=Fai seguimento do paquete da shell e do texto de definición da plataforma. +Comment[hu]=A jelenlegi felületcsomag és platformdefiníciós sztringek követése. Comment[ia]=Il tracia le pacchetto de shell currente e le catenas de definition de platteforma. Comment[nds]=Kiekt op dat aktuelle Konsoolpaket un de Ünnerbuu-Definitschonen Comment[nl]=Volgt het huidige shell-pakket en de definitietekenreeksen van platform. diff --git a/src/platformstatus/org.kde.platformstatus.xml b/src/platformstatus/org.kde.platformstatus.xml index fc77a8e55..d5c81bc42 100644 --- a/src/platformstatus/org.kde.platformstatus.xml +++ b/src/platformstatus/org.kde.platformstatus.xml @@ -2,16 +2,23 @@ + + + + + + + diff --git a/src/platformstatus/platformstatus.cpp b/src/platformstatus/platformstatus.cpp index a60569569..42c561f21 100644 --- a/src/platformstatus/platformstatus.cpp +++ b/src/platformstatus/platformstatus.cpp @@ -13,7 +13,8 @@ #include "platformstatusadaptor.h" #include "../plasma/config-plasma.h" -const char *defaultPackage = "org.kde.desktop"; +const char *defaultPackage = "org.kde.plasma.desktop"; +const char *defaultLnFPackage = "org.kde.breeze.desktop"; K_PLUGIN_FACTORY(PlatformStatusFactory, registerPlugin();) @@ -24,9 +25,11 @@ PlatformStatus::PlatformStatus(QObject *parent, const QVariantList &) QDBusConnection::sessionBus().registerObject("/PlatformStatus", this); findShellPackage(false); + findLookAndFeelPackage(false); const QString globalrcPath = QStandardPaths::locate(QStandardPaths::GenericConfigLocation, "kdeglobals"); connect(KDirWatch::self(), SIGNAL(dirty(QString)), this, SLOT(fileDirtied(QString))); + connect(KDirWatch::self(), SIGNAL(created(QString)), this, SLOT(fileDirtied(QString))); KDirWatch::self()->addFile(globalrcPath); } @@ -64,11 +67,53 @@ void PlatformStatus::findShellPackage(bool sendSignal) } } +void PlatformStatus::findLookAndFeelPackage(bool sendSignal) +{ + + KConfigGroup group(KSharedConfig::openConfig("kdeglobals"), "KDE"); + QString package = group.readEntry("LookAndFeelPackage", QString()); + + if (package.isEmpty()) { + const QString shellPath = QStandardPaths::locate(QStandardPaths::GenericDataLocation, + PLASMA_RELATIVE_DATA_INSTALL_DIR "/shells/" + m_shellPackage + '/', + QStandardPaths::LocateDirectory); + KConfig packageDefaults(shellPath + "contents/defaults", KConfig::SimpleConfig); + group = KConfigGroup(&packageDefaults, "Desktop"); + package = group.readEntry("LookAndFeel", defaultLnFPackage); + + } else { + const QString path = QStandardPaths::locate(QStandardPaths::GenericDataLocation, + PLASMA_RELATIVE_DATA_INSTALL_DIR "/look-and-feel/" + package + '/', + QStandardPaths::LocateDirectory); + if (path.isEmpty()) { + if (package != defaultPackage) { + group.deleteEntry(m_shellPackage); + findLookAndFeelPackage(sendSignal); + } + + return; + } + + } + + const bool lnfChanged = (m_lookAndFeelPackage != package); + m_lookAndFeelPackage = package; + + if (sendSignal && lnfChanged) { + emit lookAndFeelPackageChanged(m_lookAndFeelPackage); + } +} + QString PlatformStatus::shellPackage() const { return m_shellPackage; } +QString PlatformStatus::lookAndFeelPackage() const +{ + return m_lookAndFeelPackage; +} + QStringList PlatformStatus::runtimePlatform() const { return m_runtimePlatform; @@ -78,6 +123,7 @@ void PlatformStatus::fileDirtied(const QString &path) { if (path.endsWith("kdeglobals")) { findShellPackage(true); + findLookAndFeelPackage(true); } } diff --git a/src/platformstatus/platformstatus.h b/src/platformstatus/platformstatus.h index fcef688bc..6c113ab57 100644 --- a/src/platformstatus/platformstatus.h +++ b/src/platformstatus/platformstatus.h @@ -10,6 +10,7 @@ class PlatformStatus : public KDEDModule Q_OBJECT Q_CLASSINFO("D-Bus Interface", "org.kde.PlatformStatus") Q_PROPERTY(QString shellPackage READ shellPackage NOTIFY shellPackageChanged) + Q_PROPERTY(QString lookAndFeelPackage READ lookAndFeelPackage NOTIFY lookAndFeelPackageChanged) Q_PROPERTY(QStringList runtimePlatform READ runtimePlatform NOTIFY runtimePlatformChanged) public: @@ -17,20 +18,24 @@ public: public Q_SLOTS: QString shellPackage() const; + QString lookAndFeelPackage() const; QStringList runtimePlatform() const; Q_SIGNALS: void shellPackageChanged(const QString &package); + void lookAndFeelPackageChanged(const QString &package); void runtimePlatformChanged(const QStringList &runtimePlatform); private: void findShellPackage(bool sendSignal); + void findLookAndFeelPackage(bool sendSignal); private Q_SLOTS: void fileDirtied(const QString &path); private: QString m_shellPackage; + QString m_lookAndFeelPackage; QStringList m_runtimePlatform; }; diff --git a/src/scriptengines/python/plasma-scriptengine-dataengine-python.desktop b/src/scriptengines/python/plasma-scriptengine-dataengine-python.desktop index 17e6b86a4..fe0f17dd3 100644 --- a/src/scriptengines/python/plasma-scriptengine-dataengine-python.desktop +++ b/src/scriptengines/python/plasma-scriptengine-dataengine-python.desktop @@ -7,6 +7,7 @@ Name[de]=Python-Datentreiber Name[en_GB]=Python data engine Name[es]=Motor de datos Python Name[fi]=Python-tietomoottori +Name[fr]=Moteur de données Python Name[gl]=Motor de datos de Python Name[hu]=Python adatmotor Name[ia]=Motor de datos de Python @@ -36,6 +37,7 @@ Comment[de]=Unterstützung für Plasma-Datentreiber in Python Comment[en_GB]=Plasma data engine support for Python Comment[es]=Motor de datos de Plasma para Python Comment[fi]=Plasma-tietomoottorituki Python-kielelle +Comment[fr]=Support du moteur de données de Plasma pour Python Comment[gl]=Motor de datos de Plasma para dar soporte a Python Comment[hu]=Plazma adatmotor támogatás Pythonhoz Comment[ia]=Supporto de moptor de datos de Plasma per Python diff --git a/src/scriptengines/python/plasma-scriptengine-runner-python.desktop b/src/scriptengines/python/plasma-scriptengine-runner-python.desktop index bd867959d..e94a3d14d 100644 --- a/src/scriptengines/python/plasma-scriptengine-runner-python.desktop +++ b/src/scriptengines/python/plasma-scriptengine-runner-python.desktop @@ -7,6 +7,7 @@ Name[de]=Python-Runner Name[en_GB]=Python Runner Name[es]=Lanzador de Python Name[fi]=Python-suoritusohjelma +Name[fr]=Lanceur Python Name[gl]=Executor de Python Name[hu]=Python-indító Name[ia]=Python Runner (Executor de Python) @@ -35,6 +36,7 @@ Comment[de]=Unterstützung für Plasma-Runner in Python Comment[en_GB]=Plasma Runner support for Python Comment[es]=Lanzador de Plasma para Python Comment[fi]=Plasma-suoritusohjelmatuki Python-kielelle +Comment[fr]=Support du lanceur de Plasma pour Python Comment[gl]=Executor de Plasma que permite usar Python Comment[hu]=Plazma-indító támogatás Pythonhoz Comment[ia]=Supporto de Plasma Runner per Python diff --git a/src/scriptengines/qml/data/plasma-scriptengine-applet-declarative.desktop b/src/scriptengines/qml/data/plasma-scriptengine-applet-declarative.desktop index c6d72a049..f9f7cff83 100644 --- a/src/scriptengines/qml/data/plasma-scriptengine-applet-declarative.desktop +++ b/src/scriptengines/qml/data/plasma-scriptengine-applet-declarative.desktop @@ -7,6 +7,7 @@ Name[de]=Deklaratives Bedienelement Name[en_GB]=Declarative widget Name[es]=Elemento gráfico declarativo Name[fi]=Deklaratiivinen sovelma +Name[fr]=Composant graphique déclaratif Name[gl]=Widget declarativo Name[hu]=Deklaratív felületi elem Name[ia]=Widget declarative @@ -38,6 +39,7 @@ Comment[de]=Echtes Plasma-Programm, geschrieben in QML und JavaScript Comment[en_GB]=Native Plasma widget written in QML and JavaScript Comment[es]=Elemento gráfico nativo de Plasma escrito en QML y JavaScript Comment[fi]=Natiivi, QML-pohjainen Plasma-sovelma +Comment[fr]=Composant graphique natif de Plasma écrit en QML et JavaScript Comment[gl]=Widget nativo de Plasma escrito en QML e JavaScript Comment[hu]=QML-ben és JavaScriptben írt natív Plazma felületi elem Comment[ia]=Widget native de Plasma scribite in QLM e JavaScript diff --git a/src/scriptengines/qml/data/plasma-wallpaper.desktop b/src/scriptengines/qml/data/plasma-wallpaper.desktop index c34cca1a5..59fb30bfd 100644 --- a/src/scriptengines/qml/data/plasma-wallpaper.desktop +++ b/src/scriptengines/qml/data/plasma-wallpaper.desktop @@ -11,6 +11,7 @@ Comment[de]=Plasma-Hintergrundbild Comment[en_GB]=Plasma wallpaper Comment[es]=Fondo de escritorio para Plasma Comment[fi]=Plasma-taustakuva +Comment[fr]=Fond d'écran Plasma Comment[gl]=Fondo de escritorio do Plasma Comment[hu]=Plasma háttérkép Comment[ia]=Tapete de papiro de Plasma diff --git a/src/scriptengines/qml/plasmoid/appletinterface.cpp b/src/scriptengines/qml/plasmoid/appletinterface.cpp index 70a5cd155..24a36b3d5 100644 --- a/src/scriptengines/qml/plasmoid/appletinterface.cpp +++ b/src/scriptengines/qml/plasmoid/appletinterface.cpp @@ -206,7 +206,7 @@ uint AppletInterface::id() const QString AppletInterface::pluginName() const { - return applet()->pluginInfo().pluginName(); + return applet()->pluginInfo().isValid() ? applet()->pluginInfo().pluginName() : QString(); } QString AppletInterface::icon() const @@ -268,7 +268,7 @@ void AppletInterface::setToolTipMainText(const QString &text) QString AppletInterface::toolTipSubText() const { - if (m_toolTipSubText.isNull()) { + if (m_toolTipSubText.isNull() && applet()->pluginInfo().isValid()) { return applet()->pluginInfo().comment(); } else { return m_toolTipSubText; diff --git a/src/scriptengines/qml/plasmoid/appletinterface.h b/src/scriptengines/qml/plasmoid/appletinterface.h index c84f06569..728eea321 100644 --- a/src/scriptengines/qml/plasmoid/appletinterface.h +++ b/src/scriptengines/qml/plasmoid/appletinterface.h @@ -48,6 +48,13 @@ namespace Plasma class ConfigLoader; } // namespace Plasma +/** + * @class AppletInterface + * + * @short This class is exposed to applets in QML as the attached property Plasmoid + * + * \@import org.kde.plasma.Plasmoid + */ class AppletInterface : public PlasmaQuick::AppletQuickItem { Q_OBJECT diff --git a/src/scriptengines/qml/plasmoid/containmentinterface.cpp b/src/scriptengines/qml/plasmoid/containmentinterface.cpp index 373968285..4d30f7471 100644 --- a/src/scriptengines/qml/plasmoid/containmentinterface.cpp +++ b/src/scriptengines/qml/plasmoid/containmentinterface.cpp @@ -636,16 +636,27 @@ QList ContainmentInterface::actions() const { //FIXME: giving directly a QList crashes + QStringList actionOrder; + actionOrder << "add widgets" << "manage activities" << "remove" << "lock widgets" << "run associated application" << "configure"; + QHash orderedActions; //use a multimap to sort by action type QMultiMap actions; + int i = 0; foreach (QAction *a, m_containment->actions()->actions()) { - //FIXME QML visualizations don't support menus for now, *and* there is no way to - //distinguish them on QML side - if (!a->menu()) { - actions.insert(a->data().toInt(), a); + if (!actionOrder.contains(a->objectName())) { + //FIXME QML visualizations don't support menus for now, *and* there is no way to + //distinguish them on QML side + if (!a->menu()) { + actions.insert(a->data().toInt()*100 + i, a); + ++i; + } + } else { + orderedActions[a->objectName()] = a; } } - foreach (QAction *a, m_containment->corona()->actions()->actions()) { + + i = 0; + foreach (QAction *a, m_containment->corona()->actions()->actions()) { if (a->objectName() == QStringLiteral("lock widgets") || a->menu()) { //It is up to the Containment to decide if the user is allowed or not //to lock/unluck the widgets, so corona should not add one when there is none @@ -653,9 +664,25 @@ QList ContainmentInterface::actions() const //one continue; } - actions.insert(a->data().toInt(), a); + + if (!actionOrder.contains(a->objectName())) { + actions.insert(a->data().toInt()*100 + i, a); + } else { + orderedActions[a->objectName()] = a; + } + ++i; } - return actions.values(); + QList actionList = actions.values(); + + foreach (const QString &name, actionOrder) { + QAction *a = orderedActions.value(name); + if (a && a->isVisible() && !a->menu()) { + actionList << a; + } + ++i; + } + + return actionList; } //PROTECTED-------------------- diff --git a/src/scriptengines/qml/plasmoid/containmentinterface.h b/src/scriptengines/qml/plasmoid/containmentinterface.h index 5eebff268..280f5b3af 100644 --- a/src/scriptengines/qml/plasmoid/containmentinterface.h +++ b/src/scriptengines/qml/plasmoid/containmentinterface.h @@ -40,6 +40,14 @@ namespace KActivities class Info; } + +/** + * @class ContainmentInterface + * + * @brief This class is exposed to containments QML as the attached property Plasmoid + * + * + */ class ContainmentInterface : public AppletInterface { Q_OBJECT diff --git a/src/scriptengines/qml/plasmoid/wallpaperinterface.cpp b/src/scriptengines/qml/plasmoid/wallpaperinterface.cpp index 1fc2ab523..36e34b58a 100644 --- a/src/scriptengines/qml/plasmoid/wallpaperinterface.cpp +++ b/src/scriptengines/qml/plasmoid/wallpaperinterface.cpp @@ -98,6 +98,7 @@ KConfigLoader *WallpaperInterface::configScheme() KConfigGroup cfg = m_containmentInterface->containment()->config(); cfg = KConfigGroup(&cfg, "Wallpaper"); + cfg = KConfigGroup(&cfg, m_wallpaperPlugin); if (xmlPath.isEmpty()) { m_configLoader = new KConfigLoader(cfg, 0, this); diff --git a/src/scriptengines/ruby/plasma-scriptengine-ruby-dataengine.desktop b/src/scriptengines/ruby/plasma-scriptengine-ruby-dataengine.desktop index cbfbf1f5b..2bcb7be40 100644 --- a/src/scriptengines/ruby/plasma-scriptengine-ruby-dataengine.desktop +++ b/src/scriptengines/ruby/plasma-scriptengine-ruby-dataengine.desktop @@ -7,6 +7,7 @@ Name[de]=Ruby-Miniprogramm Name[en_GB]=Ruby Widget Name[es]=Elemento gráfico en Ruby Name[fi]=Ruby-sovelma +Name[fr]=Composant graphique Ruby Name[gl]=Widget en Ruby Name[hu]=Ruby felületi elem Name[ia]=Widget de Ruby @@ -37,6 +38,7 @@ Comment[de]=Echtes Plasma-Programm, geschrieben in Ruby Comment[en_GB]=Native Plasma widget written in Ruby Comment[es]=Elemento gráfico nativo para Plasma escrito en Ruby Comment[fi]=Natiivi, Ruby-pohjainen Plasma-sovelma +Comment[fr]=Composant graphique natif de Plasma écrit en Ruby Comment[gl]=Widget nativo de Plasma escrito en Ruby Comment[hu]=Ruby nyelven írt natív Plazma felületi elem Comment[ia]=Widget native de Plasma scribite in Ruby diff --git a/tests/testengine/plasma-dataengine-testengine.desktop b/tests/testengine/plasma-dataengine-testengine.desktop index 5ba470d61..3a65025e3 100644 --- a/tests/testengine/plasma-dataengine-testengine.desktop +++ b/tests/testengine/plasma-dataengine-testengine.desktop @@ -7,6 +7,7 @@ Name[de]=Test-Datentreiber Name[en_GB]=Test Data Engine Name[es]=Motor de datos de pruebas Name[fi]=Testitietomoottori +Name[fr]=Moteur de données pour faire des tests Name[gl]=Motor de datos de probas Name[hu]=Teszt adatmotor Name[ia]=Motor del essayo de datos