From 3ede60a091b5cc45bcf6e616bc68bdf7789f543c Mon Sep 17 00:00:00 2001 From: Devin Lin Date: Sat, 4 Mar 2023 18:40:06 -0800 Subject: [PATCH] Rename containments --- containments/homescreens/folio/CMakeLists.txt | 2 +- containments/homescreens/folio/Messages.sh | 2 +- .../folio/applicationlistmodel.cpp | 4 --- .../homescreens/folio/package/metadata.json | 2 +- .../homescreens/halcyon/CMakeLists.txt | 11 +++--- containments/homescreens/halcyon/Messages.sh | 2 +- .../homescreens/halcyon/homescreen.cpp | 23 ------------ containments/homescreens/halcyon/homescreen.h | 2 -- .../halcyon/package/contents/ui/Clock.qml | 10 +++--- .../contents/ui/FavoritesAppDelegate.qml | 16 ++++----- .../package/contents/ui/FavoritesGrid.qml | 35 +++++++++++-------- .../package/contents/ui/FavoritesView.qml | 1 - .../package/contents/ui/FolderGrid.qml | 20 +++++------ .../package/contents/ui/GridAppDelegate.qml | 22 ++++++------ .../package/contents/ui/GridAppList.qml | 2 +- .../package/contents/ui/HomeScreen.qml | 23 ++++++------ .../halcyon/package/contents/ui/main.qml | 19 +++++----- .../homescreens/halcyon/package/metadata.json | 2 +- .../homescreens/halcyon/plugin/CMakeLists.txt | 30 ++++++++++++++++ .../halcyon/{ => plugin}/application.cpp | 0 .../halcyon/{ => plugin}/application.h | 0 .../{ => plugin}/applicationfolder.cpp | 0 .../halcyon/{ => plugin}/applicationfolder.h | 0 .../{ => plugin}/applicationlistmodel.cpp | 0 .../{ => plugin}/applicationlistmodel.h | 0 .../halcyon/plugin/halcyonplugin.cpp | 25 +++++++++++++ .../halcyon/plugin/halcyonplugin.h | 16 +++++++++ .../halcyon/{ => plugin}/pinnedmodel.cpp | 14 ++++++-- .../halcyon/{ => plugin}/pinnedmodel.h | 9 +++-- .../homescreens/halcyon/plugin/qmldir | 2 ++ .../halcyon/{ => plugin}/windowlistener.cpp | 0 .../halcyon/{ => plugin}/windowlistener.h | 0 containments/panel/CMakeLists.txt | 2 +- containments/panel/Messages.sh | 2 +- containments/panel/package/metadata.json | 2 +- containments/taskpanel/CMakeLists.txt | 2 +- containments/taskpanel/Messages.sh | 2 +- containments/taskpanel/package/metadata.json | 2 +- containments/taskpanel/taskpanel.cpp | 2 +- shell/contents/defaults | 2 +- 40 files changed, 184 insertions(+), 126 deletions(-) create mode 100644 containments/homescreens/halcyon/plugin/CMakeLists.txt rename containments/homescreens/halcyon/{ => plugin}/application.cpp (100%) rename containments/homescreens/halcyon/{ => plugin}/application.h (100%) rename containments/homescreens/halcyon/{ => plugin}/applicationfolder.cpp (100%) rename containments/homescreens/halcyon/{ => plugin}/applicationfolder.h (100%) rename containments/homescreens/halcyon/{ => plugin}/applicationlistmodel.cpp (100%) rename containments/homescreens/halcyon/{ => plugin}/applicationlistmodel.h (100%) create mode 100644 containments/homescreens/halcyon/plugin/halcyonplugin.cpp create mode 100644 containments/homescreens/halcyon/plugin/halcyonplugin.h rename containments/homescreens/halcyon/{ => plugin}/pinnedmodel.cpp (97%) rename containments/homescreens/halcyon/{ => plugin}/pinnedmodel.h (87%) create mode 100644 containments/homescreens/halcyon/plugin/qmldir rename containments/homescreens/halcyon/{ => plugin}/windowlistener.cpp (100%) rename containments/homescreens/halcyon/{ => plugin}/windowlistener.h (100%) diff --git a/containments/homescreens/folio/CMakeLists.txt b/containments/homescreens/folio/CMakeLists.txt index f47d0bd2..d0c9ff38 100644 --- a/containments/homescreens/folio/CMakeLists.txt +++ b/containments/homescreens/folio/CMakeLists.txt @@ -26,4 +26,4 @@ target_link_libraries(plasma_containment_phone_homescreen install(TARGETS plasma_containment_phone_homescreen DESTINATION ${KDE_INSTALL_PLUGINDIR}/plasma/applets) -plasma_install_package(package org.kde.phone.homescreen) +plasma_install_package(package org.kde.plasma.mobile.homescreen.folio) diff --git a/containments/homescreens/folio/Messages.sh b/containments/homescreens/folio/Messages.sh index 48559fa1..58b0e058 100755 --- a/containments/homescreens/folio/Messages.sh +++ b/containments/homescreens/folio/Messages.sh @@ -4,5 +4,5 @@ # SPDX-License-Identifier: GPL-2.0-or-later $EXTRACTRC `find . -name \*.rc -o -name \*.ui -o -name \*.kcfg` >> rc.cpp -$XGETTEXT `find . -name \*.js -o -name \*.qml -o -name \*.cpp` -o $podir/plasma_applet_org.kde.phone.homescreen.pot +$XGETTEXT `find . -name \*.js -o -name \*.qml -o -name \*.cpp` -o $podir/plasma_applet_org.kde.plasma.mobile.homescreen.pot rm -f rc.cpp diff --git a/containments/homescreens/folio/applicationlistmodel.cpp b/containments/homescreens/folio/applicationlistmodel.cpp index b5c486fa..734ed78c 100644 --- a/containments/homescreens/folio/applicationlistmodel.cpp +++ b/containments/homescreens/folio/applicationlistmodel.cpp @@ -21,11 +21,7 @@ ApplicationListModel::ApplicationListModel(QObject *parent) : QAbstractListModel(parent) { -#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) - connect(KSycoca::self(), qOverload(&KSycoca::databaseChanged), this, &ApplicationListModel::sycocaDbChanged); -#else connect(KSycoca::self(), &KSycoca::databaseChanged, this, &ApplicationListModel::sycocaDbChanged); -#endif // initialize wayland window checking KWayland::Client::ConnectionThread *connection = KWayland::Client::ConnectionThread::fromApplication(this); diff --git a/containments/homescreens/folio/package/metadata.json b/containments/homescreens/folio/package/metadata.json index d9ee6459..285bdf70 100644 --- a/containments/homescreens/folio/package/metadata.json +++ b/containments/homescreens/folio/package/metadata.json @@ -60,7 +60,7 @@ "Description[uk]": "Домашня сторінка для мобільних пристроїв із акцентом на можливості налаштовування.", "Description[x-test]": "xxMobile homescreen with a focus on customizability.xx", "Description[zh_CN]": "高可定制性的手机主屏幕方案。", - "Id": "org.kde.phone.homescreen", + "Id": "org.kde.plasma.mobile.homescreen.folio", "License": "GPLv2+", "Name": "Folio", "Name[ca@valencia]": "Folio", diff --git a/containments/homescreens/halcyon/CMakeLists.txt b/containments/homescreens/halcyon/CMakeLists.txt index 50f32646..f8f48209 100644 --- a/containments/homescreens/halcyon/CMakeLists.txt +++ b/containments/homescreens/halcyon/CMakeLists.txt @@ -1,13 +1,8 @@ -# SPDX-FileCopyrightText: 2022 Devin Lin +# SPDX-FileCopyrightText: 2022-2023 Devin Lin # SPDX-License-Identifier: GPL-2.0-or-later set(homescreen_SRCS homescreen.cpp - application.cpp - applicationfolder.cpp - applicationlistmodel.cpp - pinnedmodel.cpp - windowlistener.cpp ) add_library(plasma_containment_phone_homescreen_halcyon MODULE ${homescreen_SRCS}) @@ -27,4 +22,6 @@ target_link_libraries(plasma_containment_phone_homescreen_halcyon install(TARGETS plasma_containment_phone_homescreen_halcyon DESTINATION ${KDE_INSTALL_PLUGINDIR}/plasma/applets) -plasma_install_package(package org.kde.phone.homescreen.halcyon) +plasma_install_package(package org.kde.plasma.mobile.homescreen.halcyon) + +add_subdirectory(plugin) diff --git a/containments/homescreens/halcyon/Messages.sh b/containments/homescreens/halcyon/Messages.sh index a707825d..d7db51f4 100644 --- a/containments/homescreens/halcyon/Messages.sh +++ b/containments/homescreens/halcyon/Messages.sh @@ -4,6 +4,6 @@ # SPDX-License-Identifier: GPL-2.0-or-later $EXTRACTRC `find . -name \*.rc -o -name \*.ui -o -name \*.kcfg` >> rc.cpp -$XGETTEXT `find . -name \*.js -o -name \*.qml -o -name \*.cpp` -o $podir/plasma_applet_org.kde.phone.homescreen.simple.pot +$XGETTEXT `find . -name \*.js -o -name \*.qml -o -name \*.cpp` -o $podir/plasma_applet_org.kde.plasma.mobile.homescreen.halcyon.pot rm -f rc.cpp diff --git a/containments/homescreens/halcyon/homescreen.cpp b/containments/homescreens/halcyon/homescreen.cpp index 909629cd..52947714 100644 --- a/containments/homescreens/halcyon/homescreen.cpp +++ b/containments/homescreens/halcyon/homescreen.cpp @@ -2,10 +2,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later #include "homescreen.h" -#include "application.h" -#include "applicationfolder.h" -#include "pinnedmodel.h" -#include "windowlistener.h" #include #include @@ -18,25 +14,6 @@ HomeScreen::HomeScreen(QObject *parent, const KPluginMetaData &data, const QVari : Plasma::Containment{parent, data, args} { setHasConfigurationInterface(true); - - WindowListener::instance(); // ensure it is created - - ApplicationListModel *applicationListModel = new ApplicationListModel{this}; - qmlRegisterSingletonType("org.kde.phone.homescreen.halcyon", - 1, - 0, - "ApplicationListModel", - [applicationListModel](QQmlEngine *, QJSEngine *) -> QObject * { - return applicationListModel; - }); - - PinnedModel *pinnedModel = new PinnedModel{this, this}; - qmlRegisterSingletonType("org.kde.phone.homescreen.halcyon", 1, 0, "PinnedModel", [pinnedModel](QQmlEngine *, QJSEngine *) -> QObject * { - return pinnedModel; - }); - - qmlRegisterType("org.kde.phone.homescreen.halcyon", 1, 0, "Application"); - qmlRegisterType("org.kde.phone.homescreen.halcyon", 1, 0, "ApplicationFolder"); } HomeScreen::~HomeScreen() = default; diff --git a/containments/homescreens/halcyon/homescreen.h b/containments/homescreens/halcyon/homescreen.h index 3051967d..800d0c21 100644 --- a/containments/homescreens/halcyon/homescreen.h +++ b/containments/homescreens/halcyon/homescreen.h @@ -5,8 +5,6 @@ #include -#include - class HomeScreen : public Plasma::Containment { Q_OBJECT diff --git a/containments/homescreens/halcyon/package/contents/ui/Clock.qml b/containments/homescreens/halcyon/package/contents/ui/Clock.qml index 786479ab..261006e7 100644 --- a/containments/homescreens/halcyon/package/contents/ui/Clock.qml +++ b/containments/homescreens/halcyon/package/contents/ui/Clock.qml @@ -1,14 +1,14 @@ // SPDX-FileCopyrightText: 2022 Devin Lin // SPDX-License-Identifier: LGPL-2.1-or-later -import QtQuick 2.15 -import QtQuick.Layouts 1.1 -import QtQuick.Controls 2.15 +import QtQuick +import QtQuick.Layouts +import QtQuick.Controls import Qt5Compat.GraphicalEffects -import org.kde.plasma.core 2.0 as PlasmaCore +import org.kde.plasma.core as PlasmaCore -import org.kde.plasma.private.mobileshell 1.0 as MobileShell +import org.kde.plasma.private.mobileshell as MobileShell ColumnLayout { id: root diff --git a/containments/homescreens/halcyon/package/contents/ui/FavoritesAppDelegate.qml b/containments/homescreens/halcyon/package/contents/ui/FavoritesAppDelegate.qml index db72e8ab..b36c2d1f 100644 --- a/containments/homescreens/halcyon/package/contents/ui/FavoritesAppDelegate.qml +++ b/containments/homescreens/halcyon/package/contents/ui/FavoritesAppDelegate.qml @@ -1,19 +1,19 @@ // SPDX-FileCopyrightText: 2022 Devin Lin // SPDX-License-Identifier: GPL-2.0-or-later -import QtQuick 2.15 -import QtQuick.Layouts 1.1 -import QtQuick.Controls 2.3 as Controls +import QtQuick +import QtQuick.Layouts +import QtQuick.Controls as Controls import Qt5Compat.GraphicalEffects -import org.kde.plasma.core 2.0 as PlasmaCore +import org.kde.plasma.core as PlasmaCore import org.kde.plasma.components 3.0 as PlasmaComponents +import org.kde.plasma.extras 2.0 as PlasmaExtras import org.kde.kquickcontrolsaddons 2.0 import org.kde.plasma.private.containmentlayoutmanager 1.0 as ContainmentLayoutManager import org.kde.plasma.private.mobileshell 1.0 as MobileShell import org.kde.plasma.private.mobileshell.state 1.0 as MobileShellState -import org.kde.phone.homescreen.halcyon 1.0 as Halcyon import org.kde.kirigami 2.19 as Kirigami @@ -99,12 +99,12 @@ Item { sourceComponent: PlasmaComponents.Menu { id: menu title: label.text - closePolicy: PlasmaComponents.Menu.CloseOnReleaseOutside | PlasmaComponents.Menu.CloseOnEscape + closePolicy: PlasmaExtras.Menu.CloseOnReleaseOutside | PlasmaExtras.Menu.CloseOnEscape Repeater { model: menuActions - delegate: PlasmaComponents.MenuItem { - icon.name: modelData.iconName + delegate: PlasmaExtras.MenuItem { + icon: modelData.iconName text: modelData.text onClicked: modelData.triggered() } diff --git a/containments/homescreens/halcyon/package/contents/ui/FavoritesGrid.qml b/containments/homescreens/halcyon/package/contents/ui/FavoritesGrid.qml index 1a4dc493..ffbf1919 100644 --- a/containments/homescreens/halcyon/package/contents/ui/FavoritesGrid.qml +++ b/containments/homescreens/halcyon/package/contents/ui/FavoritesGrid.qml @@ -1,20 +1,20 @@ // SPDX-FileCopyrightText: 2022 Devin Lin // SPDX-License-Identifier: LGPL-2.0-or-later -import QtQuick 2.12 -import QtQuick.Controls 2.15 as QQC2 -import QtQuick.Layouts 1.1 -import QtQml.Models 2.15 +import QtQuick +import QtQuick.Controls as QQC2 +import QtQuick.Layouts +import QtQml.Models import Qt5Compat.GraphicalEffects -import org.kde.plasma.core 2.0 as PlasmaCore -import org.kde.plasma.extras 2.0 as PlasmaExtras +import org.kde.plasma.core as PlasmaCore +import org.kde.plasma.extras as PlasmaExtras import org.kde.plasma.components 3.0 as PC3 -import org.kde.draganddrop 2.0 as DragDrop +import org.kde.draganddrop as DragDrop -import org.kde.kirigami 2.19 as Kirigami -import org.kde.plasma.private.mobileshell 1.0 as MobileShell -import org.kde.phone.homescreen.halcyon 1.0 as Halcyon +import org.kde.kirigami as Kirigami +import org.kde.plasma.private.mobileshell as MobileShell +import org.kde.private.mobile.homescreen.halcyon as Halcyon MobileShell.GridView { id: root @@ -56,6 +56,11 @@ MobileShell.GridView { } } + Halcyon.PinnedModel { + id: pinnedModel + applet: plasmoid.nativeInterface + } + // open wallpaper menu when held on click TapHandler { onLongPressed: root.openConfigureRequested() @@ -77,7 +82,7 @@ MobileShell.GridView { model: DelegateModel { id: visualModel - model: Halcyon.PinnedModel + model: pinnedModel delegate: Item { id: delegateRoot @@ -89,7 +94,7 @@ MobileShell.GridView { function moveDragToCurrentPos(from, to) { if (from !== to) { visualModel.items.move(from, to); - Halcyon.PinnedModel.moveEntry(from, to); + pinnedModel.moveEntry(from, to); } } @@ -191,9 +196,9 @@ MobileShell.GridView { onDropped: (drop) => { if (transitionAnim.running || appDelegate.drag.active || drag.source.isFolder) return; // don't do anything when reordering if (appDelegate.isFolder) { - Halcyon.PinnedModel.addAppToFolder(drop.source.visualIndex, appDelegate.visualIndex); + pinnedModel.addAppToFolder(drop.source.visualIndex, appDelegate.visualIndex); } else { - Halcyon.PinnedModel.createFolderFromApps(drop.source.visualIndex, appDelegate.visualIndex); + pinnedModel.createFolderFromApps(drop.source.visualIndex, appDelegate.visualIndex); } folderAnim.to = 0; folderAnim.restart(); @@ -222,7 +227,7 @@ MobileShell.GridView { Kirigami.Action { iconName: "emblem-favorite" text: i18n("Remove from favourites") - onTriggered: Halcyon.PinnedModel.removeEntry(model.index) + onTriggered: pinnedModel.removeEntry(model.index) } ] diff --git a/containments/homescreens/halcyon/package/contents/ui/FavoritesView.qml b/containments/homescreens/halcyon/package/contents/ui/FavoritesView.qml index c564138d..4db58da3 100644 --- a/containments/homescreens/halcyon/package/contents/ui/FavoritesView.qml +++ b/containments/homescreens/halcyon/package/contents/ui/FavoritesView.qml @@ -13,7 +13,6 @@ import org.kde.draganddrop 2.0 as DragDrop import org.kde.kirigami 2.19 as Kirigami import org.kde.plasma.private.mobileshell 1.0 as MobileShell -import org.kde.phone.homescreen.halcyon 1.0 as Halcyon Item { id: root diff --git a/containments/homescreens/halcyon/package/contents/ui/FolderGrid.qml b/containments/homescreens/halcyon/package/contents/ui/FolderGrid.qml index f14f17d8..4240d7c8 100644 --- a/containments/homescreens/halcyon/package/contents/ui/FolderGrid.qml +++ b/containments/homescreens/halcyon/package/contents/ui/FolderGrid.qml @@ -1,20 +1,20 @@ // SPDX-FileCopyrightText: 2022 Devin Lin // SPDX-License-Identifier: LGPL-2.0-or-later -import QtQuick 2.12 -import QtQuick.Controls 2.15 as QQC2 -import QtQuick.Layouts 1.1 -import QtQml.Models 2.15 +import QtQuick +import QtQuick.Controls as QQC2 +import QtQuick.Layouts +import QtQml.Models import Qt5Compat.GraphicalEffects -import org.kde.plasma.core 2.0 as PlasmaCore -import org.kde.plasma.extras 2.0 as PlasmaExtras +import org.kde.plasma.core as PlasmaCore +import org.kde.plasma.extras as PlasmaExtras import org.kde.plasma.components 3.0 as PC3 -import org.kde.draganddrop 2.0 as DragDrop +import org.kde.draganddrop as DragDrop -import org.kde.kirigami 2.19 as Kirigami -import org.kde.plasma.private.mobileshell 1.0 as MobileShell -import org.kde.phone.homescreen.halcyon 1.0 as Halcyon +import org.kde.kirigami as Kirigami +import org.kde.plasma.private.mobileshell as MobileShell +import org.kde.private.mobile.homescreen.halcyon as Halcyon MobileShell.GridView { id: root diff --git a/containments/homescreens/halcyon/package/contents/ui/GridAppDelegate.qml b/containments/homescreens/halcyon/package/contents/ui/GridAppDelegate.qml index bb04b822..d84113d0 100644 --- a/containments/homescreens/halcyon/package/contents/ui/GridAppDelegate.qml +++ b/containments/homescreens/halcyon/package/contents/ui/GridAppDelegate.qml @@ -4,20 +4,20 @@ * SPDX-License-Identifier: GPL-2.0-or-later */ -import QtQuick 2.15 -import QtQuick.Layouts 1.1 -import QtQuick.Controls 2.15 as Controls +import QtQuick +import QtQuick.Layouts +import QtQuick.Controls as Controls import Qt5Compat.GraphicalEffects -import org.kde.plasma.core 2.0 as PlasmaCore +import org.kde.plasma.core as PlasmaCore import org.kde.plasma.components 3.0 as PlasmaComponents -import org.kde.kquickcontrolsaddons 2.0 +import org.kde.plasma.extras as PlasmaExtras +import org.kde.kquickcontrolsaddons -import org.kde.plasma.private.containmentlayoutmanager 1.0 as ContainmentLayoutManager -import org.kde.plasma.private.mobileshell 1.0 as MobileShell -import org.kde.phone.homescreen.halcyon 1.0 as Halcyon +import org.kde.plasma.private.mobileshell as MobileShell +import org.kde.private.mobile.homescreen.halcyon as Halcyon -import org.kde.kirigami 2.19 as Kirigami +import org.kde.kirigami as Kirigami MouseArea { id: delegate @@ -59,8 +59,8 @@ MouseArea { title: label.text closePolicy: PlasmaComponents.Menu.CloseOnReleaseOutside | PlasmaComponents.Menu.CloseOnEscape - PlasmaComponents.MenuItem { - icon.name: "emblem-favorite" + PlasmaExtras.MenuItem { + icon: "emblem-favorite" text: i18n("Add to favourites") onClicked: { Halcyon.PinnedModel.addApp(application.storageId, 0); diff --git a/containments/homescreens/halcyon/package/contents/ui/GridAppList.qml b/containments/homescreens/halcyon/package/contents/ui/GridAppList.qml index 0bf8efbd..afdce2ec 100644 --- a/containments/homescreens/halcyon/package/contents/ui/GridAppList.qml +++ b/containments/homescreens/halcyon/package/contents/ui/GridAppList.qml @@ -15,7 +15,7 @@ import org.kde.kirigami 2.10 as Kirigami import org.kde.plasma.private.nanoshell 2.0 as NanoShell import org.kde.plasma.private.mobileshell 1.0 as MobileShell import org.kde.plasma.private.mobileshell.state 1.0 as MobileShellState -import org.kde.phone.homescreen.halcyon 1.0 as Halcyon +import org.kde.private.mobile.homescreen.halcyon 1.0 as Halcyon MobileShell.GridView { id: gridView diff --git a/containments/homescreens/halcyon/package/contents/ui/HomeScreen.qml b/containments/homescreens/halcyon/package/contents/ui/HomeScreen.qml index a79bd9dc..185ed5c1 100644 --- a/containments/homescreens/halcyon/package/contents/ui/HomeScreen.qml +++ b/containments/homescreens/halcyon/package/contents/ui/HomeScreen.qml @@ -1,20 +1,19 @@ -// SPDX-FileCopyrightText: 2022 Devin Lin +// SPDX-FileCopyrightText: 2022-2023 Devin Lin // SPDX-License-Identifier: LGPL-2.0-or-later -import QtQuick 2.12 -import QtQuick.Controls 2.15 as QQC2 -import QtQuick.Layouts 1.1 -import QtQuick.Window 2.15 +import QtQuick +import QtQuick.Controls as QQC2 +import QtQuick.Layouts +import QtQuick.Window -import org.kde.plasma.plasmoid 2.0 -import org.kde.plasma.core 2.0 as PlasmaCore -import org.kde.plasma.extras 2.0 as PlasmaExtras +import org.kde.plasma.plasmoid +import org.kde.plasma.core as PlasmaCore +import org.kde.plasma.extras as PlasmaExtras import org.kde.plasma.components 3.0 as PC3 -import org.kde.draganddrop 2.0 as DragDrop +import org.kde.draganddrop as DragDrop -import org.kde.kirigami 2.19 as Kirigami -import org.kde.plasma.private.mobileshell.state 1.0 as MobileShellState -import org.kde.phone.homescreen.halcyon 1.0 as Halcyon +import org.kde.kirigami as Kirigami +import org.kde.plasma.private.mobileshell.state as MobileShellState Item { id: root diff --git a/containments/homescreens/halcyon/package/contents/ui/main.qml b/containments/homescreens/halcyon/package/contents/ui/main.qml index ae7b8092..95523fa0 100644 --- a/containments/homescreens/halcyon/package/contents/ui/main.qml +++ b/containments/homescreens/halcyon/package/contents/ui/main.qml @@ -1,17 +1,17 @@ -// SPDX-FileCopyrightText: 2022 Devin Lin +// SPDX-FileCopyrightText: 2022-2023 Devin Lin // SPDX-License-Identifier: LGPL-2.0-or-later -import QtQuick 2.15 -import QtQuick.Window 2.15 -import QtQuick.Layouts 1.1 +import QtQuick +import QtQuick.Window +import QtQuick.Layouts -import org.kde.plasma.plasmoid 2.0 -import org.kde.plasma.core 2.0 as PlasmaCore +import org.kde.plasma.plasmoid +import org.kde.plasma.core as PlasmaCore import org.kde.plasma.components 3.0 as PlasmaComponents -import org.kde.plasma.private.mobileshell 1.0 as MobileShell -import org.kde.plasma.private.mobileshell.state 1.0 as MobileShellState -import org.kde.phone.homescreen.halcyon 1.0 as Halcyon +import org.kde.plasma.private.mobileshell as MobileShell +import org.kde.plasma.private.mobileshell.state as MobileShellState +import org.kde.private.mobile.homescreen.halcyon as Halcyon MobileShell.HomeScreen { id: root @@ -26,7 +26,6 @@ MobileShell.HomeScreen { Component.onCompleted: { Halcyon.ApplicationListModel.loadApplications(); - Halcyon.PinnedModel.load(); forceActiveFocus(); } diff --git a/containments/homescreens/halcyon/package/metadata.json b/containments/homescreens/halcyon/package/metadata.json index f9654cd4..620aee3e 100644 --- a/containments/homescreens/halcyon/package/metadata.json +++ b/containments/homescreens/halcyon/package/metadata.json @@ -62,7 +62,7 @@ "Description[uk]": "Домашній екран для мобільних пристроїв із акцентом на простоті та зручності.", "Description[x-test]": "xxA mobile homescreen focused on simplicity and ease-of-use.xx", "Description[zh_CN]": "简约易用的手机主屏幕方案。", - "Id": "org.kde.phone.homescreen.halcyon", + "Id": "org.kde.plasma.mobile.homescreen.halcyon", "License": "GPLv2+", "Name": "Halcyon", "Name[az]": "Halcyon", diff --git a/containments/homescreens/halcyon/plugin/CMakeLists.txt b/containments/homescreens/halcyon/plugin/CMakeLists.txt new file mode 100644 index 00000000..ed999ae0 --- /dev/null +++ b/containments/homescreens/halcyon/plugin/CMakeLists.txt @@ -0,0 +1,30 @@ +# SPDX-FileCopyrightText: 2023 Devin Lin +# SPDX-License-Identifier: GPL-2.0-or-later + +set(halcyonplugin_SRCS + halcyonplugin.cpp + application.cpp + applicationfolder.cpp + applicationlistmodel.cpp + pinnedmodel.cpp + windowlistener.cpp +) + +install(FILES qmldir DESTINATION ${KDE_INSTALL_QMLDIR}/org/kde/private/mobile/homescreen/halcyon) + +add_library(halcyonplugin SHARED ${halcyonplugin_SRCS}) + +target_link_libraries(halcyonplugin + Qt::Gui + Qt::Qml + Qt::Quick + KF6::Plasma + KF6::I18n + KF6::Service + KF6::KIOGui + KF6::Notifications + KF6::WaylandClient + KF6::WindowSystem) + +set_property(TARGET halcyonplugin PROPERTY LIBRARY_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/org/kde/plasma/mm) +install(TARGETS halcyonplugin DESTINATION ${KDE_INSTALL_QMLDIR}/org/kde/private/mobile/homescreen/halcyon) diff --git a/containments/homescreens/halcyon/application.cpp b/containments/homescreens/halcyon/plugin/application.cpp similarity index 100% rename from containments/homescreens/halcyon/application.cpp rename to containments/homescreens/halcyon/plugin/application.cpp diff --git a/containments/homescreens/halcyon/application.h b/containments/homescreens/halcyon/plugin/application.h similarity index 100% rename from containments/homescreens/halcyon/application.h rename to containments/homescreens/halcyon/plugin/application.h diff --git a/containments/homescreens/halcyon/applicationfolder.cpp b/containments/homescreens/halcyon/plugin/applicationfolder.cpp similarity index 100% rename from containments/homescreens/halcyon/applicationfolder.cpp rename to containments/homescreens/halcyon/plugin/applicationfolder.cpp diff --git a/containments/homescreens/halcyon/applicationfolder.h b/containments/homescreens/halcyon/plugin/applicationfolder.h similarity index 100% rename from containments/homescreens/halcyon/applicationfolder.h rename to containments/homescreens/halcyon/plugin/applicationfolder.h diff --git a/containments/homescreens/halcyon/applicationlistmodel.cpp b/containments/homescreens/halcyon/plugin/applicationlistmodel.cpp similarity index 100% rename from containments/homescreens/halcyon/applicationlistmodel.cpp rename to containments/homescreens/halcyon/plugin/applicationlistmodel.cpp diff --git a/containments/homescreens/halcyon/applicationlistmodel.h b/containments/homescreens/halcyon/plugin/applicationlistmodel.h similarity index 100% rename from containments/homescreens/halcyon/applicationlistmodel.h rename to containments/homescreens/halcyon/plugin/applicationlistmodel.h diff --git a/containments/homescreens/halcyon/plugin/halcyonplugin.cpp b/containments/homescreens/halcyon/plugin/halcyonplugin.cpp new file mode 100644 index 00000000..0bef3919 --- /dev/null +++ b/containments/homescreens/halcyon/plugin/halcyonplugin.cpp @@ -0,0 +1,25 @@ +// SPDX-FileCopyrightText: 2023 Devin Lin +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "halcyonplugin.h" +#include "application.h" +#include "applicationfolder.h" +#include "applicationlistmodel.h" +#include "pinnedmodel.h" +#include "windowlistener.h" + +void HalcyonPlugin::registerTypes(const char *uri) +{ + Q_ASSERT(QLatin1String(uri) == QLatin1String("org.kde.private.mobile.homescreen.halcyon")); + + WindowListener::instance(); // ensure it is created + + ApplicationListModel *applicationListModel = new ApplicationListModel{this}; + qmlRegisterSingletonType(uri, 1, 0, "ApplicationListModel", [applicationListModel](QQmlEngine *, QJSEngine *) -> QObject * { + return applicationListModel; + }); + + qmlRegisterType(uri, 1, 0, "PinnedModel"); + qmlRegisterType(uri, 1, 0, "Application"); + qmlRegisterType(uri, 1, 0, "ApplicationFolder"); +} diff --git a/containments/homescreens/halcyon/plugin/halcyonplugin.h b/containments/homescreens/halcyon/plugin/halcyonplugin.h new file mode 100644 index 00000000..eae08dc1 --- /dev/null +++ b/containments/homescreens/halcyon/plugin/halcyonplugin.h @@ -0,0 +1,16 @@ +// SPDX-FileCopyrightText: 2023 Devin Lin +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include +#include + +class HalcyonPlugin : public QQmlExtensionPlugin +{ + Q_OBJECT + Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface") + +public: + void registerTypes(const char *uri) override; +}; diff --git a/containments/homescreens/halcyon/pinnedmodel.cpp b/containments/homescreens/halcyon/plugin/pinnedmodel.cpp similarity index 97% rename from containments/homescreens/halcyon/pinnedmodel.cpp rename to containments/homescreens/halcyon/plugin/pinnedmodel.cpp index aaaa7700..a561135c 100644 --- a/containments/homescreens/halcyon/pinnedmodel.cpp +++ b/containments/homescreens/halcyon/plugin/pinnedmodel.cpp @@ -8,9 +8,8 @@ #include -PinnedModel::PinnedModel(QObject *parent, Plasma::Applet *applet) +PinnedModel::PinnedModel(QObject *parent) : QAbstractListModel{parent} - , m_applet{applet} { } @@ -241,3 +240,14 @@ void PinnedModel::addAppFromFolder(const QString &storageId) { addApp(storageId, 0); } + +Plasma::Applet *PinnedModel::applet() +{ + return m_applet; +} + +void PinnedModel::setApplet(Plasma::Applet *applet) +{ + m_applet = applet; + load(); +} diff --git a/containments/homescreens/halcyon/pinnedmodel.h b/containments/homescreens/halcyon/plugin/pinnedmodel.h similarity index 87% rename from containments/homescreens/halcyon/pinnedmodel.h rename to containments/homescreens/halcyon/plugin/pinnedmodel.h index 06932ea5..628f6f42 100644 --- a/containments/homescreens/halcyon/pinnedmodel.h +++ b/containments/homescreens/halcyon/plugin/pinnedmodel.h @@ -25,11 +25,12 @@ class PinnedModel : public QAbstractListModel { Q_OBJECT + Q_PROPERTY(Plasma::Applet *applet READ applet WRITE setApplet CONSTANT) public: enum Roles { IsFolderRole = Qt::UserRole + 1, ApplicationRole, FolderRole }; - PinnedModel(QObject *parent = nullptr, Plasma::Applet *applet = nullptr); + PinnedModel(QObject *parent = nullptr); ~PinnedModel() override; int rowCount(const QModelIndex &parent = QModelIndex()) const override; @@ -44,13 +45,17 @@ public: Q_INVOKABLE void createFolderFromApps(int sourceAppRow, int draggedAppRow); Q_INVOKABLE void addAppToFolder(int appRow, int folderRow); - Q_INVOKABLE void load(); void save(); + Plasma::Applet *applet(); + void setApplet(Plasma::Applet *applet); + public Q_SLOTS: void addAppFromFolder(const QString &storageId); private: + void load(); + QList m_applications; QList m_folders; diff --git a/containments/homescreens/halcyon/plugin/qmldir b/containments/homescreens/halcyon/plugin/qmldir new file mode 100644 index 00000000..e127f092 --- /dev/null +++ b/containments/homescreens/halcyon/plugin/qmldir @@ -0,0 +1,2 @@ +module org.kde.private.mobile.homescreen.halcyon +plugin halcyonplugin diff --git a/containments/homescreens/halcyon/windowlistener.cpp b/containments/homescreens/halcyon/plugin/windowlistener.cpp similarity index 100% rename from containments/homescreens/halcyon/windowlistener.cpp rename to containments/homescreens/halcyon/plugin/windowlistener.cpp diff --git a/containments/homescreens/halcyon/windowlistener.h b/containments/homescreens/halcyon/plugin/windowlistener.h similarity index 100% rename from containments/homescreens/halcyon/windowlistener.h rename to containments/homescreens/halcyon/plugin/windowlistener.h diff --git a/containments/panel/CMakeLists.txt b/containments/panel/CMakeLists.txt index c65ed31a..0aa49fd0 100644 --- a/containments/panel/CMakeLists.txt +++ b/containments/panel/CMakeLists.txt @@ -20,5 +20,5 @@ target_link_libraries(plasma_applet_phonepanel install(TARGETS plasma_applet_phonepanel DESTINATION ${KDE_INSTALL_PLUGINDIR}/plasma/applets) #install(FILES plasma-phonepanel-default.desktop DESTINATION ${KDE_INSTALL_KSERVICES5DIR}) -plasma_install_package(package org.kde.phone.panel) +plasma_install_package(package org.kde.plasma.mobile.panel) diff --git a/containments/panel/Messages.sh b/containments/panel/Messages.sh index 8db5a959..17a8b19e 100755 --- a/containments/panel/Messages.sh +++ b/containments/panel/Messages.sh @@ -5,5 +5,5 @@ # SPDX-License-Identifier: GPL-2.0-or-later $EXTRACTRC `find . -name \*.rc -o -name \*.ui -o -name \*.kcfg` >> rc.cpp -$XGETTEXT `find . -name \*.js -o -name \*.qml -o -name \*.cpp` -o $podir/plasma_applet_org.kde.phone.panel.pot +$XGETTEXT `find . -name \*.js -o -name \*.qml -o -name \*.cpp` -o $podir/plasma_applet_org.kde.plasma.mobile.panel.pot rm -f rc.cpp diff --git a/containments/panel/package/metadata.json b/containments/panel/package/metadata.json index f2a92cef..c9c2b8de 100644 --- a/containments/panel/package/metadata.json +++ b/containments/panel/package/metadata.json @@ -60,7 +60,7 @@ "Description[uk]": "Верхня панель для мобільної Плазми", "Description[x-test]": "xxTop panel for Plasma Mobilexx", "Description[zh_CN]": "Plasma Mobile 的顶部面板", - "Id": "org.kde.phone.panel", + "Id": "org.kde.plasma.mobile.panel", "License": "GPLv2+", "Name": "Phone Panel", "Name[az]": "Telefon paneli", diff --git a/containments/taskpanel/CMakeLists.txt b/containments/taskpanel/CMakeLists.txt index a70ef20e..dea13d84 100644 --- a/containments/taskpanel/CMakeLists.txt +++ b/containments/taskpanel/CMakeLists.txt @@ -21,5 +21,5 @@ target_link_libraries(plasma_containment_phone_taskpanel install(TARGETS plasma_containment_phone_taskpanel DESTINATION ${KDE_INSTALL_PLUGINDIR}/plasma/applets) -plasma_install_package(package org.kde.phone.taskpanel) +plasma_install_package(package org.kde.plasma.mobile.taskpanel) diff --git a/containments/taskpanel/Messages.sh b/containments/taskpanel/Messages.sh index f3df5dd4..0569e084 100755 --- a/containments/taskpanel/Messages.sh +++ b/containments/taskpanel/Messages.sh @@ -4,5 +4,5 @@ # SPDX-License-Identifier: GPL-2.0-or-later $EXTRACTRC `find . -name \*.rc -o -name \*.ui -o -name \*.kcfg` >> rc.cpp -$XGETTEXT `find . -name \*.js -o -name \*.qml -o -name \*.cpp` -o $podir/plasma_applet_org.kde.phone.taskpanel.pot +$XGETTEXT `find . -name \*.js -o -name \*.qml -o -name \*.cpp` -o $podir/plasma_applet_org.kde.plasma.mobile.taskpanel.pot rm -f rc.cpp diff --git a/containments/taskpanel/package/metadata.json b/containments/taskpanel/package/metadata.json index e7cc6761..9a3bca6c 100644 --- a/containments/taskpanel/package/metadata.json +++ b/containments/taskpanel/package/metadata.json @@ -60,7 +60,7 @@ "Description[uk]": "Панель навігації для мобільної Плазми", "Description[x-test]": "xxNavigation panel for Plasma Mobilexx", "Description[zh_CN]": "Plasma 移动版导航面板", - "Id": "org.kde.phone.taskpanel", + "Id": "org.kde.plasma.mobile.taskpanel", "License": "GPLv2+", "Name": "Phone Task panel", "Name[az]": "Telefon tapşırıq paneli", diff --git a/containments/taskpanel/taskpanel.cpp b/containments/taskpanel/taskpanel.cpp index 63d85ead..a9654f55 100644 --- a/containments/taskpanel/taskpanel.cpp +++ b/containments/taskpanel/taskpanel.cpp @@ -30,7 +30,7 @@ TaskPanel::TaskPanel(QObject *parent, const KPluginMetaData &data, const QVarian setHasConfigurationInterface(true); initWayland(); - qmlRegisterUncreatableType("org.kde.plasma.phone.taskpanel", 1, 0, "Output", "nope"); + qmlRegisterUncreatableType("org.kde.plasma.mobile.taskpanel", 1, 0, "Output", "nope"); // register type for Keyboards.KWinVirtualKeyboard.forceActivate(); qRegisterMetaType>(); diff --git a/shell/contents/defaults b/shell/contents/defaults index 7d3e8921..02563417 100644 --- a/shell/contents/defaults +++ b/shell/contents/defaults @@ -7,7 +7,7 @@ LookAndFeelPackage=org.kde.breeze.mobile [Desktop] -Containment=org.kde.phone.homescreen.halcyon +Containment=org.kde.plasma.mobile.homescreen.halcyon ToolBox=org.kde.plasma.nano.desktoptoolbox [Desktop][ContainmentActions]