mirror of
https://invent.kde.org/marcoa/shift-shell.git
synced 2026-04-29 07:03:08 +00:00
quicksettings: Add power menu quicksetting
This commit is contained in:
parent
1101599e58
commit
fc99809143
10 changed files with 165 additions and 0 deletions
|
|
@ -49,6 +49,9 @@ find_package(KF5 ${KF5_MIN_VERSION} REQUIRED COMPONENTS
|
|||
ModemManagerQt
|
||||
NetworkManagerQt
|
||||
)
|
||||
|
||||
find_package(LibKWorkspace CONFIG REQUIRED)
|
||||
|
||||
find_package(KWinDBusInterface)
|
||||
set_package_properties(KWinDBusInterface PROPERTIES DESCRIPTION "KWin DBus interface"
|
||||
TYPE REQUIRED
|
||||
|
|
|
|||
|
|
@ -4,3 +4,4 @@
|
|||
plasma_install_package(airplanemode org.kde.plasma.airplanemode quicksettings)
|
||||
plasma_install_package(caffeine org.kde.plasma.caffeine quicksettings)
|
||||
add_subdirectory(nightcolor)
|
||||
add_subdirectory(powermenu)
|
||||
|
|
|
|||
34
quicksettings/powermenu/CMakeLists.txt
Normal file
34
quicksettings/powermenu/CMakeLists.txt
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
# SPDX-FileCopyrightText: 2022 Devin Lin <devin@kde.org>
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
set(powermenuplugin_SRCS
|
||||
powermenuplugin.cpp
|
||||
powermenuutil.cpp
|
||||
)
|
||||
|
||||
add_library(powermenuplugin ${powermenuplugin_SRCS})
|
||||
|
||||
find_package(KF5 ${KF5_MIN_VERSION} REQUIRED COMPONENTS
|
||||
Config
|
||||
Declarative
|
||||
)
|
||||
|
||||
find_package(PW::KWorkspace)
|
||||
|
||||
target_link_libraries(powermenuplugin
|
||||
PUBLIC
|
||||
Qt::Core
|
||||
PRIVATE
|
||||
KF5::CoreAddons
|
||||
KF5::QuickAddons
|
||||
PW::KWorkspace
|
||||
)
|
||||
|
||||
set_property(TARGET powermenuplugin PROPERTY LIBRARY_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/org/kde/plasma/quicksetting/powermenu)
|
||||
file(COPY qmldir DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/org/kde/plasma/quicksetting/powermenu)
|
||||
|
||||
install(TARGETS powermenuplugin DESTINATION ${QML_INSTALL_DIR}/org/kde/plasma/quicksetting/powermenu)
|
||||
install(FILES qmldir ${qml_SRC} DESTINATION ${QML_INSTALL_DIR}/org/kde/plasma/quicksetting/powermenu)
|
||||
|
||||
plasma_install_package(package org.kde.plasma.powermenu quicksettings)
|
||||
|
||||
21
quicksettings/powermenu/package/contents/ui/main.qml
Normal file
21
quicksettings/powermenu/package/contents/ui/main.qml
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: 2022 Devin Lin <devin@kde.org>
|
||||
*
|
||||
* SPDX-License-Identifier: LGPL-2.0-or-later
|
||||
*/
|
||||
|
||||
import org.kde.plasma.private.mobileshell 1.0 as MobileShell
|
||||
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||
import org.kde.plasma.quicksetting.powermenu 1.0 as PowerMenu
|
||||
|
||||
MobileShell.QuickSetting {
|
||||
text: i18n("Shut Down")
|
||||
icon: "system-shutdown-symbolic"
|
||||
status: i18n("Open power menu")
|
||||
enabled: false
|
||||
|
||||
function toggle() {
|
||||
PowerMenu.PowerMenuUtil.openShutdownScreen();
|
||||
}
|
||||
}
|
||||
|
||||
18
quicksettings/powermenu/package/metadata.desktop
Normal file
18
quicksettings/powermenu/package/metadata.desktop
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
# SPDX-FileCopyrightText: 2022 Devin Lin <devin@kde.org>
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
[Desktop Entry]
|
||||
Name=Power Menu
|
||||
Icon=system-shutdown-symbolic
|
||||
|
||||
Type=Service
|
||||
X-KDE-ServiceTypes=KPackage/GenericQML
|
||||
|
||||
X-KDE-PluginInfo-Author=Devin Lin
|
||||
X-KDE-PluginInfo-Email=devin@kde.org
|
||||
X-KDE-PluginInfo-Name=org.kde.plasma.powermenu
|
||||
X-KDE-PluginInfo-Version=0.1
|
||||
X-KDE-PluginInfo-Website=https://kde.org
|
||||
X-KDE-PluginInfo-License=GPL
|
||||
|
||||
|
||||
23
quicksettings/powermenu/powermenuplugin.cpp
Normal file
23
quicksettings/powermenu/powermenuplugin.cpp
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: 2022 by Devin Lin <devin@kde.org>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later
|
||||
*/
|
||||
|
||||
#include "powermenuplugin.h"
|
||||
|
||||
#include <QQmlContext>
|
||||
#include <QQuickItem>
|
||||
|
||||
#include "powermenuutil.h"
|
||||
|
||||
void PowerMenuPlugin::registerTypes(const char *uri)
|
||||
{
|
||||
Q_ASSERT(QLatin1String(uri) == QLatin1String("org.kde.plasma.quicksetting.powermenu"));
|
||||
|
||||
qmlRegisterSingletonType<PowerMenuUtil>(uri, 1, 0, "PowerMenuUtil", [](QQmlEngine *, QJSEngine *) {
|
||||
return new PowerMenuUtil;
|
||||
});
|
||||
}
|
||||
|
||||
//#include "moc_powermenuplugin.cpp"
|
||||
21
quicksettings/powermenu/powermenuplugin.h
Normal file
21
quicksettings/powermenu/powermenuplugin.h
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: 2022 by Devin Lin <devin@kde.org>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <QUrl>
|
||||
|
||||
#include <QQmlEngine>
|
||||
#include <QQmlExtensionPlugin>
|
||||
|
||||
class PowerMenuPlugin : public QQmlExtensionPlugin
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface")
|
||||
|
||||
public:
|
||||
void registerTypes(const char *uri) override;
|
||||
};
|
||||
19
quicksettings/powermenu/powermenuutil.cpp
Normal file
19
quicksettings/powermenu/powermenuutil.cpp
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: 2022 by Devin Lin <devin@kde.org>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later
|
||||
*/
|
||||
|
||||
#include "powermenuutil.h"
|
||||
|
||||
#include <kworkspace.h>
|
||||
|
||||
PowerMenuUtil::PowerMenuUtil(QObject *parent)
|
||||
: QObject{parent}
|
||||
{
|
||||
}
|
||||
|
||||
void PowerMenuUtil::openShutdownScreen()
|
||||
{
|
||||
KWorkSpace::requestShutDown(KWorkSpace::ShutdownConfirmYes);
|
||||
}
|
||||
19
quicksettings/powermenu/powermenuutil.h
Normal file
19
quicksettings/powermenu/powermenuutil.h
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: 2022 by Devin Lin <devin@kde.org>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <QObject>
|
||||
|
||||
class PowerMenuUtil : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
PowerMenuUtil(QObject *parent = nullptr);
|
||||
|
||||
Q_INVOKABLE void openShutdownScreen();
|
||||
};
|
||||
6
quicksettings/powermenu/qmldir
Normal file
6
quicksettings/powermenu/qmldir
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
# SPDX-FileCopyrightText: 2022 Devin Lin <devin@kde.org>
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
module org.kde.plasma.quicksetting.powermenu
|
||||
plugin powermenuplugin
|
||||
classname PowerMenuPlugin
|
||||
Loading…
Reference in a new issue