File indexing completed on 2024-04-21 05:27:34

0001 /*
0002 SPDX-FileCopyrightText: 2019 Kevin Ottens <kevin.ottens@enioka.com>
0003 SPDX-License-Identifier: GPL-2.0-or-later
0004 */
0005 #pragma once
0006 
0007 #include <QKeySequence>
0008 
0009 #include "kscreensaversettingsbase.h"
0010 
0011 class QAction;
0012 class KActionCollection;
0013 
0014 class KScreenSaverSettingsStore;
0015 
0016 struct WallpaperInfo {
0017     Q_PROPERTY(QString name MEMBER name CONSTANT)
0018     Q_PROPERTY(QString id MEMBER id CONSTANT)
0019     QString name;
0020     QString id;
0021     Q_GADGET
0022 };
0023 
0024 class KScreenSaverSettings : public KScreenSaverSettingsBase
0025 {
0026     Q_OBJECT
0027     Q_PROPERTY(QKeySequence shortcut READ shortcut WRITE setShortcut NOTIFY shortcutChanged)
0028 public:
0029     static KScreenSaverSettings &getInstance();
0030 
0031     static QList<QKeySequence> defaultShortcuts();
0032     static QString defaultWallpaperPlugin();
0033 
0034     ~KScreenSaverSettings() override;
0035 
0036     QList<WallpaperInfo> availableWallpaperPlugins() const;
0037 
0038     QKeySequence shortcut() const;
0039     void setShortcut(const QKeySequence &sequence);
0040 
0041     KScreenSaverSettings(KScreenSaverSettings const &) = delete;
0042     void operator=(KScreenSaverSettings const &) = delete;
0043 
0044 Q_SIGNALS:
0045     void shortcutChanged();
0046 
0047 protected:
0048     KScreenSaverSettings(QObject *parent = nullptr);
0049 
0050 private:
0051     QList<WallpaperInfo> m_availableWallpaperPlugins;
0052     KScreenSaverSettingsStore *m_store;
0053 };