File indexing completed on 2024-04-28 16:52:24

0001 /*
0002  *  SPDX-FileCopyrightText: 2021 Devin Lin <devin@kde.org>
0003  *
0004  *  SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 
0007 #include "mobileshellplugin.h"
0008 
0009 #include <QQmlContext>
0010 #include <QQuickItem>
0011 
0012 #include "components/direction.h"
0013 
0014 #include "notifications/notificationfilemenu.h"
0015 #include "notifications/notificationthumbnailer.h"
0016 
0017 #include "taskswitcher/displaysmodel.h"
0018 
0019 #include "quicksettings/paginatemodel.h"
0020 #include "quicksettings/quicksetting.h"
0021 #include "quicksettings/quicksettingsmodel.h"
0022 
0023 #include "mobileshellsettings.h"
0024 #include "shellutil.h"
0025 #include "windowutil.h"
0026 
0027 QUrl resolvePath(std::string str)
0028 {
0029     return QUrl("qrc:/org/kde/plasma/private/mobileshell/qml/" + QString::fromStdString(str));
0030 }
0031 
0032 void MobileShellPlugin::registerTypes(const char *uri)
0033 {
0034     Q_ASSERT(QLatin1String(uri) == QLatin1String("org.kde.plasma.private.mobileshell"));
0035 
0036     qmlRegisterSingletonType<ShellUtil>(uri, 1, 0, "ShellUtil", [](QQmlEngine *, QJSEngine *) -> QObject * {
0037         return ShellUtil::instance();
0038     });
0039 
0040     qmlRegisterSingletonType<MobileShellSettings>(uri, 1, 0, "MobileShellSettings", [](QQmlEngine *, QJSEngine *) -> QObject * {
0041         return MobileShellSettings::self();
0042     });
0043 
0044     qmlRegisterType<QuickSetting>(uri, 1, 0, "QuickSetting");
0045     qmlRegisterType<QuickSettingsModel>(uri, 1, 0, "QuickSettingsModel");
0046     qmlRegisterType<PaginateModel>(uri, 1, 0, "PaginateModel");
0047     qmlRegisterType<SavedQuickSettings>(uri, 1, 0, "SavedQuickSettings");
0048     qmlRegisterType<SavedQuickSettingsModel>(uri, 1, 0, "SavedQuickSettingsModel");
0049     qmlRegisterSingletonType<WindowUtil>(uri, 1, 0, "WindowUtil", [](QQmlEngine *, QJSEngine *) -> QObject * {
0050         return WindowUtil::instance();
0051     });
0052 
0053     // components
0054     qmlRegisterType<Direction>(uri, 1, 0, "Direction");
0055 
0056     // notifications
0057     qmlRegisterType<NotificationThumbnailer>(uri, 1, 0, "NotificationThumbnailer");
0058     qmlRegisterType<NotificationFileMenu>(uri, 1, 0, "NotificationFileMenu");
0059 
0060     // taskswitcher
0061     qmlRegisterType<DisplaysModel>(uri, 1, 0, "DisplaysModel");
0062 
0063     // qml modules
0064 
0065     // /actiondrawer
0066     qmlRegisterType(resolvePath("actiondrawer/ActionDrawer.qml"), uri, 1, 0, "ActionDrawer");
0067     qmlRegisterType(resolvePath("actiondrawer/ActionDrawerOpenSurface.qml"), uri, 1, 0, "ActionDrawerOpenSurface");
0068     qmlRegisterType(resolvePath("actiondrawer/ActionDrawerWindow.qml"), uri, 1, 0, "ActionDrawerWindow");
0069 
0070     // /components
0071     qmlRegisterType(resolvePath("components/BaseItem.qml"), uri, 1, 0, "BaseItem");
0072     qmlRegisterType(resolvePath("components/ExtendedAbstractButton.qml"), uri, 1, 0, "ExtendedAbstractButton");
0073     qmlRegisterType(resolvePath("components/Flickable.qml"), uri, 1, 0, "Flickable");
0074     qmlRegisterType(resolvePath("components/GridView.qml"), uri, 1, 0, "GridView");
0075     qmlRegisterType(resolvePath("components/HapticsEffectLoader.qml"), uri, 1, 0, "HapticsEffectLoader");
0076     qmlRegisterType(resolvePath("components/ListView.qml"), uri, 1, 0, "ListView");
0077     qmlRegisterType(resolvePath("components/StartupFeedback.qml"), uri, 1, 0, "StartupFeedback");
0078     qmlRegisterType(resolvePath("components/VelocityCalculator.qml"), uri, 1, 0, "VelocityCalculator");
0079 
0080     // /dataproviders
0081     qmlRegisterType(resolvePath("dataproviders/BatteryInfo.qml"), uri, 1, 0, "BatteryInfo");
0082     qmlRegisterType(resolvePath("dataproviders/BluetoothInfo.qml"), uri, 1, 0, "BluetoothInfo");
0083     qmlRegisterType(resolvePath("dataproviders/SignalStrengthInfo.qml"), uri, 1, 0, "SignalStrengthInfo");
0084     qmlRegisterSingletonType(resolvePath("dataproviders/AudioProvider.qml"), uri, 1, 0, "AudioProvider");
0085 
0086     // /homescreen
0087     qmlRegisterType(resolvePath("homescreen/HomeScreen.qml"), uri, 1, 0, "HomeScreen");
0088 
0089     // /navigationpanel
0090     qmlRegisterType(resolvePath("navigationpanel/NavigationGestureArea.qml"), uri, 1, 0, "NavigationGestureArea");
0091     qmlRegisterType(resolvePath("navigationpanel/NavigationPanel.qml"), uri, 1, 0, "NavigationPanel");
0092     qmlRegisterType(resolvePath("navigationpanel/NavigationPanelAction.qml"), uri, 1, 0, "NavigationPanelAction");
0093 
0094     // /statusbar
0095     qmlRegisterType(resolvePath("statusbar/StatusBar.qml"), uri, 1, 0, "StatusBar");
0096 
0097     // /taskswitcher
0098     qmlRegisterType(resolvePath("taskswitcher/TaskSwitcher.qml"), uri, 1, 0, "TaskSwitcher");
0099 
0100     // /widgets
0101     qmlRegisterType(resolvePath("widgets/krunner/KRunnerWidget.qml"), uri, 1, 0, "KRunnerWidget");
0102     qmlRegisterType(resolvePath("widgets/mediacontrols/MediaControlsWidget.qml"), uri, 1, 0, "MediaControlsWidget");
0103     qmlRegisterType(resolvePath("widgets/notifications/NotificationsWidget.qml"), uri, 1, 0, "NotificationsWidget");
0104     qmlRegisterType(resolvePath("widgets/notifications/NotificationsModelType.qml"), uri, 1, 0, "NotificationsModelType");
0105 }