Add template for Plasma wallpaper with QML extension
Summary: Allows to quickly start a new wallpaper which also wants to use a custom QML extension. Reviewers: mart Reviewed By: mart Subscribers: #frameworks Tags: #frameworks Differential Revision: https://phabricator.kde.org/D10849
This commit is contained in:
parent
d93ecddd14
commit
354bd71296
@ -3,6 +3,7 @@ set(apptemplate_DIRS
|
|||||||
qml-plasmoid-with-qml-extension
|
qml-plasmoid-with-qml-extension
|
||||||
cpp-plasmoid
|
cpp-plasmoid
|
||||||
plasma-wallpaper
|
plasma-wallpaper
|
||||||
|
plasma-wallpaper-with-qml-extension
|
||||||
)
|
)
|
||||||
|
|
||||||
kde_package_app_templates(TEMPLATES ${apptemplate_DIRS} INSTALL_DIR ${KDE_INSTALL_KTEMPLATESDIR})
|
kde_package_app_templates(TEMPLATES ${apptemplate_DIRS} INSTALL_DIR ${KDE_INSTALL_KTEMPLATESDIR})
|
||||||
|
30
templates/plasma-wallpaper-with-qml-extension/CMakeLists.txt
Normal file
30
templates/plasma-wallpaper-with-qml-extension/CMakeLists.txt
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
cmake_minimum_required(VERSION 3.0)
|
||||||
|
|
||||||
|
project(plasma-%{APPNAMELC})
|
||||||
|
|
||||||
|
find_package(ECM 1.4.0 REQUIRED NO_MODULE)
|
||||||
|
set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR})
|
||||||
|
|
||||||
|
include(KDEInstallDirs)
|
||||||
|
include(KDECMakeSettings)
|
||||||
|
include(KDECompilerSettings NO_POLICY_SCOPE)
|
||||||
|
include(FeatureSummary)
|
||||||
|
|
||||||
|
find_package(KF5 REQUIRED COMPONENTS
|
||||||
|
Plasma
|
||||||
|
I18n
|
||||||
|
)
|
||||||
|
|
||||||
|
find_package(Qt5 CONFIG REQUIRED COMPONENTS
|
||||||
|
Qml
|
||||||
|
Gui
|
||||||
|
Core
|
||||||
|
)
|
||||||
|
|
||||||
|
# wallpaper applet
|
||||||
|
plasma_install_package(package org.kde.plasma.%{APPNAMELC} wallpapers wallpaper)
|
||||||
|
|
||||||
|
# qml extension plugin
|
||||||
|
add_subdirectory(plugin)
|
||||||
|
|
||||||
|
feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)
|
@ -0,0 +1,2 @@
|
|||||||
|
#! /usr/bin/env bash
|
||||||
|
$XGETTEXT `find . -name \*.qml -o -name \*.cpp` -o $podir/plasma_wallpaper_org.kde.plasma.%{APPNAMELC}.pot
|
24
templates/plasma-wallpaper-with-qml-extension/README
Normal file
24
templates/plasma-wallpaper-with-qml-extension/README
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
Plasma Wallpaper Template
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
-- Build instructions --
|
||||||
|
|
||||||
|
cd /where/your/wallpaper/is/generated
|
||||||
|
mkdir build
|
||||||
|
cd build
|
||||||
|
cmake -DCMAKE_INSTALL_PREFIX=MYPREFIX ..
|
||||||
|
make
|
||||||
|
make install
|
||||||
|
|
||||||
|
(MYPREFIX is where you install your Plasma setup, replace it accordingly)
|
||||||
|
|
||||||
|
Restart plasma to load the wallpaper
|
||||||
|
(in a terminal or in krunner type:
|
||||||
|
kquitapp plasmashell
|
||||||
|
and then
|
||||||
|
plasmashell)
|
||||||
|
then go to wallpaper settings and select it
|
||||||
|
|
||||||
|
-- Tutorials and resources --
|
||||||
|
Plasma QML API explained
|
||||||
|
https://techbase.kde.org/Development/Tutorials/Plasma2/QML2/API
|
@ -0,0 +1,15 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<kcfg xmlns="http://www.kde.org/standards/kcfg/1.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://www.kde.org/standards/kcfg/1.0
|
||||||
|
http://www.kde.org/standards/kcfg/1.0/kcfg.xsd" >
|
||||||
|
<kcfgfile name=""/>
|
||||||
|
|
||||||
|
<group name="General">
|
||||||
|
<entry name="DisplayText" type="String">
|
||||||
|
<label>Text to display</label>
|
||||||
|
<default>Hello World!</default>
|
||||||
|
</entry>
|
||||||
|
</group>
|
||||||
|
|
||||||
|
</kcfg>
|
@ -0,0 +1,56 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) %{CURRENT_YEAR} by %{AUTHOR} <%{EMAIL}>
|
||||||
|
*
|
||||||
|
* 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 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 02110-1301, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import QtQuick 2.1
|
||||||
|
import QtQuick.Layouts 1.0
|
||||||
|
import QtQuick.Controls 1.0 as QtControls
|
||||||
|
|
||||||
|
// for "units"
|
||||||
|
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||||
|
|
||||||
|
|
||||||
|
ColumnLayout {
|
||||||
|
id: root
|
||||||
|
property alias cfg_DisplayText: textField.text
|
||||||
|
|
||||||
|
RowLayout {
|
||||||
|
spacing: units.largeSpacing / 2
|
||||||
|
|
||||||
|
// To allow aligned integration in the settings form,
|
||||||
|
// "formAlignment" is a property injected by the config containment
|
||||||
|
// which defines the offset of the value fields
|
||||||
|
QtControls.Label {
|
||||||
|
Layout.minimumWidth: width
|
||||||
|
Layout.maximumWidth: width
|
||||||
|
width: formAlignment - units.largeSpacing
|
||||||
|
horizontalAlignment: Text.AlignRight
|
||||||
|
|
||||||
|
// use i18nd in config QML, as the default textdomain is set to that of the config container
|
||||||
|
text: i18nd("plasma_wallpaper_org.kde.plasma.%{APPNAMELC}", "Text to Display:")
|
||||||
|
}
|
||||||
|
QtControls.TextField {
|
||||||
|
id: textField
|
||||||
|
Layout.fillWidth: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Item { // tighten layout
|
||||||
|
Layout.fillHeight: true
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,46 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) %{CURRENT_YEAR} by %{AUTHOR} <%{EMAIL}>
|
||||||
|
*
|
||||||
|
* 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 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 02110-1301, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import QtQuick 2.1
|
||||||
|
|
||||||
|
import QtQuick.Layouts 1.1
|
||||||
|
|
||||||
|
import org.kde.plasma.components 2.0 as PlasmaComponents
|
||||||
|
import org.kde.plasma.extras 2.0 as PlasmaExtras
|
||||||
|
|
||||||
|
import org.kde.plasma.private.%{APPNAMELC} 1.0
|
||||||
|
|
||||||
|
Item {
|
||||||
|
id: root
|
||||||
|
|
||||||
|
ColumnLayout {
|
||||||
|
anchors.centerIn: parent
|
||||||
|
|
||||||
|
PlasmaExtras.Title {
|
||||||
|
Layout.alignment: Qt.AlignCenter
|
||||||
|
text: wallpaper.configuration.DisplayText ||
|
||||||
|
i18n("<Please configure a text to display>")
|
||||||
|
}
|
||||||
|
|
||||||
|
PlasmaComponents.Label {
|
||||||
|
Layout.alignment: Qt.AlignCenter
|
||||||
|
text: HelloWorld.text
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Name=%{APPNAME}
|
||||||
|
|
||||||
|
Type=Service
|
||||||
|
Icon=plasma
|
||||||
|
|
||||||
|
X-KDE-ServiceTypes=Plasma/Wallpaper
|
||||||
|
X-KDE-PluginInfo-Author=%{AUTHOR}
|
||||||
|
X-KDE-PluginInfo-Email=%{EMAIL}
|
||||||
|
X-KDE-PluginInfo-Name=org.kde.plasma.%{APPNAMELC}
|
||||||
|
X-KDE-PluginInfo-License=LGPLv2+
|
||||||
|
X-KDE-PluginInfo-Version=%{VERSION}
|
||||||
|
X-KDE-PluginInfo-Website=https://plasma.kde.org/
|
||||||
|
X-Plasma-MainScript=ui/main.qml
|
@ -0,0 +1,5 @@
|
|||||||
|
[General]
|
||||||
|
Name=Simple Plasma Wallpaper with QML extension
|
||||||
|
Comment=A Plasma wallpaper which uses custom API provided by an own QML extension plugin
|
||||||
|
Category=Plasma/Wallpaper
|
||||||
|
Icon=
|
@ -0,0 +1,43 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) %{CURRENT_YEAR} by %{AUTHOR} <%{EMAIL}>
|
||||||
|
* 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 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 02110-1301, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "%{APPNAMELC}plugin.h"
|
||||||
|
|
||||||
|
// KF
|
||||||
|
#include <KLocalizedString>
|
||||||
|
// Qt
|
||||||
|
#include <QJSEngine>
|
||||||
|
#include <QQmlEngine>
|
||||||
|
#include <QQmlContext>
|
||||||
|
|
||||||
|
static QJSValue singletonTypeExampleProvider(QQmlEngine* engine, QJSEngine* scriptEngine)
|
||||||
|
{
|
||||||
|
Q_UNUSED(engine)
|
||||||
|
|
||||||
|
QJSValue helloWorld = scriptEngine->newObject();
|
||||||
|
helloWorld.setProperty("text", i18n("Hello world!"));
|
||||||
|
return helloWorld;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void %{APPNAME}Plugin::registerTypes(const char* uri)
|
||||||
|
{
|
||||||
|
Q_ASSERT(uri == QLatin1String("org.kde.plasma.private.%{APPNAMELC}"));
|
||||||
|
|
||||||
|
qmlRegisterSingletonType(uri, 1, 0, "HelloWorld", singletonTypeExampleProvider);
|
||||||
|
}
|
@ -0,0 +1,33 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) %{CURRENT_YEAR} by %{AUTHOR} <%{EMAIL}>
|
||||||
|
* 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 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 02110-1301, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef %{APPNAMEUC}PLUGIN_H
|
||||||
|
#define %{APPNAMEUC}PLUGIN_H
|
||||||
|
|
||||||
|
#include <QQmlExtensionPlugin>
|
||||||
|
|
||||||
|
class %{APPNAME}Plugin : public QQmlExtensionPlugin
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface")
|
||||||
|
|
||||||
|
public:
|
||||||
|
void registerTypes(const char *uri) override;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // %{APPNAMEUC}PLUGIN_H
|
@ -0,0 +1,15 @@
|
|||||||
|
add_definitions(-DTRANSLATION_DOMAIN=\"plasma_wallpaper_org.kde.plasma.%{APPNAMELC}\")
|
||||||
|
|
||||||
|
set(%{APPNAMELC}plugin_SRCS
|
||||||
|
%{APPNAMELC}plugin.cpp
|
||||||
|
)
|
||||||
|
|
||||||
|
add_library(%{APPNAMELC}plugin SHARED ${%{APPNAMELC}plugin_SRCS})
|
||||||
|
|
||||||
|
target_link_libraries(%{APPNAMELC}plugin
|
||||||
|
KF5::I18n
|
||||||
|
Qt5::Gui
|
||||||
|
Qt5::Qml
|
||||||
|
)
|
||||||
|
install(TARGETS %{APPNAMELC}plugin DESTINATION ${KDE_INSTALL_QMLDIR}/org/kde/plasma/private/%{APPNAMELC})
|
||||||
|
install(FILES qmldir DESTINATION ${KDE_INSTALL_QMLDIR}/org/kde/plasma/private/%{APPNAMELC})
|
@ -0,0 +1,2 @@
|
|||||||
|
module org.kde.plasma.private.%{APPNAMELC}
|
||||||
|
plugin %{APPNAMELC}plugin
|
Loading…
Reference in New Issue
Block a user