/* * SPDX-FileCopyrightText: 2015 Marco Martin * SPDX-FileCopyrightText: 2021-2022 Devin Lin * * SPDX-License-Identifier: GPL-2.0-or-later */ #pragma once #include #include #include #include /** * Miscellaneous class to put utility functions used in the shell. * * @author Devin Lin **/ class ShellUtil : public QObject { Q_OBJECT Q_PROPERTY(bool isSystem24HourFormat READ isSystem24HourFormat NOTIFY isSystem24HourFormatChanged); public: ShellUtil(QObject *parent = nullptr); static ShellUtil *instance(); /** * Change the stacking order to have the first item behind the second item. * * @param item1 The item to move behind. * @param item2 The item to move in front. */ Q_INVOKABLE void stackItemBefore(QQuickItem *item1, QQuickItem *item2); /** * Change the stacking order to have the first item in front of the second item. * * @param item1 The item to move in front. * @param item2 The item to move behind. */ Q_INVOKABLE void stackItemAfter(QQuickItem *item1, QQuickItem *item2); /** * Execute the command given. * * @param command The command to execute. */ Q_INVOKABLE void executeCommand(const QString &command); /** * Launch an application by name. * * @param app The name of the application to launch. */ Q_INVOKABLE void launchApp(const QString &app); /** * Whether the system is using 24 hour format. */ 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(); private: KConfigWatcher::Ptr m_localeConfigWatcher; KSharedConfig::Ptr m_localeConfig; };