File indexing completed on 2024-06-02 05:42:16
0001 // SPDX-FileCopyrightText: 2015 Marco Martin <mart@kde.org> 0002 // SPDX-FileCopyrightText: 2022-2023 Devin Lin <devin@kde.org> 0003 // SPDX-License-Identifier: GPL-2.0-or-later 0004 0005 #include "homescreen.h" 0006 0007 #include "applicationlistmodel.h" 0008 #include "delegatetoucharea.h" 0009 #include "favouritesmodel.h" 0010 #include "folioapplication.h" 0011 #include "folioapplicationfolder.h" 0012 #include "foliodelegate.h" 0013 #include "foliosettings.h" 0014 #include "foliowidget.h" 0015 #include "homescreenstate.h" 0016 #include "pagelistmodel.h" 0017 #include "pagemodel.h" 0018 #include "widgetcontainer.h" 0019 #include "widgetsmanager.h" 0020 0021 #include <KWindowSystem> 0022 0023 #include <QDebug> 0024 #include <QQmlEngine> 0025 #include <QQmlExtensionPlugin> 0026 #include <QQuickItem> 0027 #include <QtQml> 0028 0029 HomeScreen::HomeScreen(QObject *parent, const KPluginMetaData &data, const QVariantList &args) 0030 : Plasma::Containment{parent, data, args} 0031 { 0032 setHasConfigurationInterface(true); 0033 const char *uri = "org.kde.private.mobile.homescreen.folio"; 0034 0035 // pre-initialize 0036 FolioSettings::self()->setApplet(this); 0037 HomeScreenState::self()->setContainment(this); 0038 WidgetsManager::self(); 0039 0040 // models are loaded in main.qml 0041 ApplicationListModel::self(); 0042 FavouritesModel::self()->setContainment(this); 0043 PageListModel::self()->setContainment(this); 0044 0045 qmlRegisterSingletonType<ApplicationListModel>(uri, 1, 0, "ApplicationListModel", [](QQmlEngine *, QJSEngine *) -> QObject * { 0046 return ApplicationListModel::self(); 0047 }); 0048 0049 qmlRegisterSingletonType<FavouritesModel>(uri, 1, 0, "FavouritesModel", [](QQmlEngine *, QJSEngine *) -> QObject * { 0050 return FavouritesModel::self(); 0051 }); 0052 0053 qmlRegisterSingletonType<PageListModel>(uri, 1, 0, "PageListModel", [](QQmlEngine *, QJSEngine *) -> QObject * { 0054 return PageListModel::self(); 0055 }); 0056 0057 qmlRegisterSingletonType<FolioSettings>(uri, 1, 0, "FolioSettings", [](QQmlEngine *, QJSEngine *) -> QObject * { 0058 return FolioSettings::self(); 0059 }); 0060 0061 qmlRegisterSingletonType<HomeScreenState>(uri, 1, 0, "HomeScreenState", [](QQmlEngine *, QJSEngine *) -> QObject * { 0062 return HomeScreenState::self(); 0063 }); 0064 0065 qmlRegisterType<FolioApplication>(uri, 1, 0, "FolioApplication"); 0066 qmlRegisterType<FolioApplicationFolder>(uri, 1, 0, "FolioApplicationFolder"); 0067 qmlRegisterType<FolioWidget>(uri, 1, 0, "FolioWidget"); 0068 qmlRegisterType<FolioDelegate>(uri, 1, 0, "FolioDelegate"); 0069 qmlRegisterType<PageModel>(uri, 1, 0, "PageModel"); 0070 qmlRegisterType<FolioPageDelegate>(uri, 1, 0, "FolioPageDelegate"); 0071 qmlRegisterType<DelegateTouchArea>(uri, 1, 0, "DelegateTouchArea"); 0072 qmlRegisterType<DelegateDragPosition>(uri, 1, 0, "DelegateDragPosition"); 0073 qmlRegisterType<WidgetContainer>(uri, 1, 0, "WidgetContainer"); 0074 0075 connect(KWindowSystem::self(), &KWindowSystem::showingDesktopChanged, this, &HomeScreen::showingDesktopChanged); 0076 0077 connect(this, &Plasma::Containment::appletAdded, this, &HomeScreen::onAppletAdded); 0078 connect(this, &Plasma::Containment::appletAboutToBeRemoved, this, &HomeScreen::onAppletAboutToBeRemoved); 0079 } 0080 0081 HomeScreen::~HomeScreen() = default; 0082 0083 void HomeScreen::configChanged() 0084 { 0085 Plasma::Containment::configChanged(); 0086 } 0087 0088 void HomeScreen::onAppletAdded(Plasma::Applet *applet, const QRectF &geometryHint) 0089 { 0090 WidgetsManager::self()->addWidget(applet); 0091 } 0092 0093 void HomeScreen::onAppletAboutToBeRemoved(Plasma::Applet *applet) 0094 { 0095 WidgetsManager::self()->removeWidget(applet); 0096 } 0097 0098 K_PLUGIN_CLASS(HomeScreen) 0099 0100 #include "homescreen.moc"