mirror of
https://invent.kde.org/marcoa/shift-shell.git
synced 2026-08-03 10:14:45 +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
|
ModemManagerQt
|
||||||
NetworkManagerQt
|
NetworkManagerQt
|
||||||
)
|
)
|
||||||
|
|
||||||
|
find_package(LibKWorkspace CONFIG REQUIRED)
|
||||||
|
|
||||||
find_package(KWinDBusInterface)
|
find_package(KWinDBusInterface)
|
||||||
set_package_properties(KWinDBusInterface PROPERTIES DESCRIPTION "KWin DBus interface"
|
set_package_properties(KWinDBusInterface PROPERTIES DESCRIPTION "KWin DBus interface"
|
||||||
TYPE REQUIRED
|
TYPE REQUIRED
|
||||||
|
|
|
||||||
|
|
@ -4,3 +4,4 @@
|
||||||
plasma_install_package(airplanemode org.kde.plasma.airplanemode quicksettings)
|
plasma_install_package(airplanemode org.kde.plasma.airplanemode quicksettings)
|
||||||
plasma_install_package(caffeine org.kde.plasma.caffeine quicksettings)
|
plasma_install_package(caffeine org.kde.plasma.caffeine quicksettings)
|
||||||
add_subdirectory(nightcolor)
|
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