diff --git a/initialstart/CMakeLists.txt b/initialstart/CMakeLists.txt index 8ffab47f..3d3bea92 100644 --- a/initialstart/CMakeLists.txt +++ b/initialstart/CMakeLists.txt @@ -13,6 +13,7 @@ set(plasma-mobile-initial-start_SRCS qt_add_resources(RESOURCES resources.qrc) add_subdirectory(modules) +add_subdirectory(plugin) add_executable(plasma-mobile-initial-start ${plasma-mobile-initial-start_SRCS} ${RESOURCES}) target_link_libraries(plasma-mobile-initial-start diff --git a/initialstart/modules/finished/contents/ui/main.qml b/initialstart/modules/finished/contents/ui/main.qml index cc6e157d..ff7d29bc 100644 --- a/initialstart/modules/finished/contents/ui/main.qml +++ b/initialstart/modules/finished/contents/ui/main.qml @@ -4,8 +4,11 @@ import QtQuick 2.15 import QtQuick.Controls 2.15 import QtQuick.Layouts 1.15 + import org.kde.kirigami 2.20 as Kirigami +import org.kde.plasma.mobileinitialstart.initialstart + Item { id: root @@ -18,7 +21,7 @@ Item { Label { Layout.fillWidth: true Layout.alignment: Qt.AlignHCenter | Qt.AlignTop - text: i18n("Your device is now ready.

Enjoy Plasma 6.0!") + text: i18n("Your device is now ready.

Enjoy %1!", InitialStartUtil.distroName) wrapMode: Text.Wrap horizontalAlignment: Text.AlignHCenter } diff --git a/initialstart/plugin/CMakeLists.txt b/initialstart/plugin/CMakeLists.txt new file mode 100644 index 00000000..74dfdd3f --- /dev/null +++ b/initialstart/plugin/CMakeLists.txt @@ -0,0 +1,22 @@ +# SPDX-FileCopyrightText: 2023 Devin Lin +# SPDX-License-Identifier: GPL-2.0-or-later + +set(initialstartplugin_SRCS + initialstartplugin.cpp + initialstartutil.cpp +) + +add_library(initialstartplugin ${initialstartplugin_SRCS}) + +target_link_libraries(initialstartplugin + Qt::Core + Qt::Quick + KF6::CoreAddons + KF6::I18n +) + +set_property(TARGET initialstartplugin PROPERTY LIBRARY_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/org/kde/plasma/mobileinitialstart/initialstart) +file(COPY qmldir DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/org/kde/plasma/mobileinitialstart/initialstart) + +install(TARGETS initialstartplugin DESTINATION ${KDE_INSTALL_QMLDIR}/org/kde/plasma/mobileinitialstart/initialstart) +install(FILES qmldir ${qml_SRC} DESTINATION ${KDE_INSTALL_QMLDIR}/org/kde/plasma/mobileinitialstart/initialstart) diff --git a/initialstart/plugin/initialstartplugin.cpp b/initialstart/plugin/initialstartplugin.cpp new file mode 100644 index 00000000..0d4c8ee5 --- /dev/null +++ b/initialstart/plugin/initialstartplugin.cpp @@ -0,0 +1,17 @@ +// SPDX-FileCopyrightText: 2023 Devin Lin +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "initialstartplugin.h" +#include "initialstartutil.h" + +#include +#include + +void InitialStartPlugin::registerTypes(const char *uri) +{ + Q_ASSERT(QLatin1String(uri) == QLatin1String("org.kde.plasma.mobileinitialstart.initialstart")); + + qmlRegisterSingletonType(uri, 1, 0, "InitialStartUtil", [](QQmlEngine *, QJSEngine *) { + return new InitialStartUtil; + }); +} diff --git a/initialstart/plugin/initialstartplugin.h b/initialstart/plugin/initialstartplugin.h new file mode 100644 index 00000000..30588d6d --- /dev/null +++ b/initialstart/plugin/initialstartplugin.h @@ -0,0 +1,18 @@ +// SPDX-FileCopyrightText: 2023 Devin Lin +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include + +#include +#include + +class InitialStartPlugin : public QQmlExtensionPlugin +{ + Q_OBJECT + Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface") + +public: + void registerTypes(const char *uri) override; +}; diff --git a/initialstart/plugin/initialstartutil.cpp b/initialstart/plugin/initialstartutil.cpp new file mode 100644 index 00000000..1d026182 --- /dev/null +++ b/initialstart/plugin/initialstartutil.cpp @@ -0,0 +1,14 @@ +// SPDX-FileCopyrightText: 2023 Devin Lin +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "initialstartutil.h" + +InitialStartUtil::InitialStartUtil(QObject *parent) + : QObject{parent} +{ +} + +QString InitialStartUtil::distroName() const +{ + return m_osrelease.name(); +} \ No newline at end of file diff --git a/initialstart/plugin/initialstartutil.h b/initialstart/plugin/initialstartutil.h new file mode 100644 index 00000000..18608c2c --- /dev/null +++ b/initialstart/plugin/initialstartutil.h @@ -0,0 +1,21 @@ +// SPDX-FileCopyrightText: 2023 Devin Lin +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include +#include + +class InitialStartUtil : public QObject +{ + Q_OBJECT + Q_PROPERTY(QString distroName READ distroName CONSTANT); + +public: + InitialStartUtil(QObject *parent = nullptr); + + QString distroName() const; + +private: + KOSRelease m_osrelease; +}; diff --git a/initialstart/plugin/qmldir b/initialstart/plugin/qmldir new file mode 100644 index 00000000..bcc18d4e --- /dev/null +++ b/initialstart/plugin/qmldir @@ -0,0 +1,6 @@ +# SPDX-FileCopyrightText: 2023 Devin Lin +# SPDX-License-Identifier: GPL-2.0-or-later + +module org.kde.plasma.mobileinitialstart.initialstart +plugin initialstartplugin +classname InitialStartPlugin diff --git a/initialstart/qml/LandingComponent.qml b/initialstart/qml/LandingComponent.qml index 034a496c..b7745f0b 100644 --- a/initialstart/qml/LandingComponent.qml +++ b/initialstart/qml/LandingComponent.qml @@ -4,8 +4,11 @@ import QtQuick 2.15 import QtQuick.Controls 2.15 import QtQuick.Layouts 1.15 + import org.kde.kirigami 2.20 as Kirigami +import org.kde.plasma.mobileinitialstart.initialstart + Item { id: root @@ -78,7 +81,7 @@ Item { Label { Layout.fillWidth: true - text: i18n("Welcome to Plasma") + text: i18n("Welcome to
%1", InitialStartUtil.distroName) horizontalAlignment: Text.AlignHCenter wrapMode: Text.Wrap