mirror of
https://invent.kde.org/marcoa/shift-shell.git
synced 2026-04-26 14:23:09 +00:00
quicksettings/record: Move record functions out of shellutil
This commit is contained in:
parent
af1b947d52
commit
8c885bc699
11 changed files with 153 additions and 38 deletions
|
|
@ -87,23 +87,3 @@ void ShellUtil::launchApp(const QString &app)
|
|||
auto job = new KIO::ApplicationLauncherJob(appService, this);
|
||||
job->start();
|
||||
}
|
||||
|
||||
QString ShellUtil::videoLocation(const QString &name)
|
||||
{
|
||||
QString path = QStandardPaths::writableLocation(QStandardPaths::MoviesLocation);
|
||||
QString newPath(path + '/' + name);
|
||||
if (QFile::exists(newPath)) {
|
||||
newPath = path + '/' + KFileUtils::suggestName(QUrl::fromLocalFile(newPath), name);
|
||||
}
|
||||
return newPath;
|
||||
}
|
||||
|
||||
void ShellUtil::showNotification(const QString &title, const QString &text, const QString &filePath)
|
||||
{
|
||||
KNotification *notif = new KNotification("captured");
|
||||
notif->setComponentName(QStringLiteral("plasma_phone_components"));
|
||||
notif->setTitle(title);
|
||||
notif->setUrls({QUrl::fromLocalFile(filePath)});
|
||||
notif->setText(text);
|
||||
notif->sendEvent();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,7 +21,8 @@
|
|||
class ShellUtil : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_PROPERTY(bool isSystem24HourFormat READ isSystem24HourFormat NOTIFY isSystem24HourFormatChanged);
|
||||
Q_PROPERTY(bool isSystem24HourFormat READ isSystem24HourFormat NOTIFY isSystem24HourFormatChanged)
|
||||
Q_PROPERTY(bool launchingApp READ isLaunchingApp NOTIFY isLaunchingAppChanged)
|
||||
|
||||
public:
|
||||
ShellUtil(QObject *parent = nullptr);
|
||||
|
|
@ -62,19 +63,6 @@ public:
|
|||
*/
|
||||
Q_INVOKABLE bool isSystem24HourFormat();
|
||||
|
||||
/**
|
||||
* Allows us to get a filename in the standard videos directory (~/Videos by default)
|
||||
* with a name that starts with @p name
|
||||
*
|
||||
* @returns a non-existing path that can be written into
|
||||
*
|
||||
* @see QStandardPaths::writableLocation()
|
||||
* @see KFileUtil::suggestName()
|
||||
*/
|
||||
Q_INVOKABLE QString videoLocation(const QString &name);
|
||||
|
||||
Q_INVOKABLE void showNotification(const QString &title, const QString &text, const QString &filePath);
|
||||
|
||||
Q_SIGNALS:
|
||||
void isSystem24HourFormatChanged();
|
||||
|
||||
|
|
|
|||
|
|
@ -10,11 +10,11 @@ plasma_install_package(donotdisturb org.kde.plasma.quicksetting.donotdisturb qui
|
|||
plasma_install_package(keyboardtoggle org.kde.plasma.quicksetting.keyboardtoggle quicksettings)
|
||||
plasma_install_package(location org.kde.plasma.quicksetting.location quicksettings)
|
||||
plasma_install_package(mobiledata org.kde.plasma.quicksetting.mobiledata quicksettings)
|
||||
plasma_install_package(record org.kde.plasma.quicksetting.record quicksettings)
|
||||
plasma_install_package(settingsapp org.kde.plasma.quicksetting.settingsapp quicksettings)
|
||||
plasma_install_package(wifi org.kde.plasma.quicksetting.wifi quicksettings)
|
||||
add_subdirectory(flashlight)
|
||||
add_subdirectory(nightcolor)
|
||||
add_subdirectory(powermenu)
|
||||
add_subdirectory(record)
|
||||
add_subdirectory(screenshot)
|
||||
add_subdirectory(screenrotation)
|
||||
|
|
|
|||
35
quicksettings/record/CMakeLists.txt
Normal file
35
quicksettings/record/CMakeLists.txt
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
# SPDX-FileCopyrightText: 2022 Devin Lin <devin@kde.org>
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
set(recordplugin_SRCS
|
||||
recordplugin.cpp
|
||||
recordutil.cpp
|
||||
)
|
||||
|
||||
add_library(recordplugin ${recordplugin_SRCS})
|
||||
|
||||
find_package(KF5 ${KF5_MIN_VERSION} REQUIRED COMPONENTS
|
||||
Declarative
|
||||
Notifications
|
||||
)
|
||||
|
||||
target_link_libraries(recordplugin
|
||||
PUBLIC
|
||||
Qt::Core
|
||||
PRIVATE
|
||||
Qt::DBus
|
||||
KF5::CoreAddons
|
||||
KF5::QuickAddons
|
||||
KF5::ConfigCore
|
||||
KF5::ConfigGui
|
||||
KF5::I18n
|
||||
KF5::Notifications
|
||||
)
|
||||
|
||||
set_property(TARGET recordplugin PROPERTY LIBRARY_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/org/kde/plasma/quicksetting/record)
|
||||
file(COPY qmldir DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/org/kde/plasma/quicksetting/record)
|
||||
|
||||
install(TARGETS recordplugin DESTINATION ${KDE_INSTALL_QMLDIR}/org/kde/plasma/quicksetting/record)
|
||||
install(FILES qmldir ${qml_SRC} DESTINATION ${KDE_INSTALL_QMLDIR}/org/kde/plasma/quicksetting/record)
|
||||
|
||||
plasma_install_package(package org.kde.plasma.quicksetting.record quicksettings)
|
||||
|
|
@ -7,6 +7,7 @@ import QtQuick.Window 2.15
|
|||
import org.kde.plasma.private.mobileshell 1.0 as MobileShell
|
||||
import org.kde.pipewire.record 0.1 as PWRec
|
||||
import org.kde.taskmanager 0.1 as TaskManager
|
||||
import org.kde.plasma.quicksetting.record 1.0
|
||||
|
||||
MobileShell.QuickSetting {
|
||||
id: root
|
||||
|
|
@ -31,9 +32,9 @@ MobileShell.QuickSetting {
|
|||
|
||||
function toggle() {
|
||||
if (!record.active) {
|
||||
record.output = MobileShell.ShellUtil.videoLocation("screen-recording.mp4");
|
||||
record.output = RecordUtil.videoLocation("screen-recording.mp4");
|
||||
} else {
|
||||
MobileShell.ShellUtil.showNotification(i18n("New Screen Recording"), i18n("New Screen Recording saved in %1", record.output), record.output);
|
||||
RecordUtil.showNotification(i18n("New Screen Recording"), i18n("New Screen Recording saved in %1", record.output), record.output);
|
||||
}
|
||||
|
||||
enabled = !enabled
|
||||
7
quicksettings/record/qmldir
Normal file
7
quicksettings/record/qmldir
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
# SPDX-FileCopyrightText: 2022 Devin Lin <devin@kde.org>
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
module org.kde.plasma.quicksetting.record
|
||||
plugin recordplugin
|
||||
classname RecordPlugin
|
||||
|
||||
23
quicksettings/record/recordplugin.cpp
Normal file
23
quicksettings/record/recordplugin.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 "recordplugin.h"
|
||||
|
||||
#include <QQmlContext>
|
||||
#include <QQuickItem>
|
||||
|
||||
#include "recordutil.h"
|
||||
|
||||
void RecordPlugin::registerTypes(const char *uri)
|
||||
{
|
||||
Q_ASSERT(QLatin1String(uri) == QLatin1String("org.kde.plasma.quicksetting.record"));
|
||||
|
||||
qmlRegisterSingletonType<RecordUtil>(uri, 1, 0, "RecordUtil", [](QQmlEngine *, QJSEngine *) {
|
||||
return new RecordUtil;
|
||||
});
|
||||
}
|
||||
|
||||
//#include "moc_screenshotplugin.cpp"
|
||||
21
quicksettings/record/recordplugin.h
Normal file
21
quicksettings/record/recordplugin.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 RecordPlugin : public QQmlExtensionPlugin
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface")
|
||||
|
||||
public:
|
||||
void registerTypes(const char *uri) override;
|
||||
};
|
||||
29
quicksettings/record/recordutil.cpp
Normal file
29
quicksettings/record/recordutil.cpp
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: 2022 by Devin Lin <devin@kde.org>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later
|
||||
*/
|
||||
|
||||
#include "recordutil.h"
|
||||
|
||||
#include <KNotification>
|
||||
|
||||
QString RecordUtil::videoLocation(const QString &name)
|
||||
{
|
||||
QString path = QStandardPaths::writableLocation(QStandardPaths::MoviesLocation);
|
||||
QString newPath(path + '/' + name);
|
||||
if (QFile::exists(newPath)) {
|
||||
newPath = path + '/' + KFileUtils::suggestName(QUrl::fromLocalFile(newPath), name);
|
||||
}
|
||||
return newPath;
|
||||
}
|
||||
|
||||
void RecordUtil::showNotification(const QString &title, const QString &text, const QString &filePath)
|
||||
{
|
||||
KNotification *notif = new KNotification("captured");
|
||||
notif->setComponentName(QStringLiteral("plasma_phone_components"));
|
||||
notif->setTitle(title);
|
||||
notif->setUrls({QUrl::fromLocalFile(filePath)});
|
||||
notif->setText(text);
|
||||
notif->sendEvent();
|
||||
}
|
||||
31
quicksettings/record/recordutil.h
Normal file
31
quicksettings/record/recordutil.h
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: 2022 by Devin Lin <devin@kde.org>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <QObject>
|
||||
#include <QVariantMap>
|
||||
|
||||
class RecordUtil : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
ScreenShotUtil(QObject *parent = nullptr);
|
||||
|
||||
/**
|
||||
* Allows us to get a filename in the standard videos directory (~/Videos by default)
|
||||
* with a name that starts with @p name
|
||||
*
|
||||
* @returns a non-existing path that can be written into
|
||||
*
|
||||
* @see QStandardPaths::writableLocation()
|
||||
* @see KFileUtil::suggestName()
|
||||
*/
|
||||
Q_INVOKABLE QString videoLocation(const QString &name);
|
||||
|
||||
Q_INVOKABLE void showNotification(const QString &title, const QString &text, const QString &filePath);
|
||||
};
|
||||
Loading…
Reference in a new issue