File indexing completed on 2024-04-28 05:34:29

0001 /*
0002  *   SPDX-FileCopyrightText: 2017, 2018, 2019 Ivan Cukic <ivan.cukic (at) kde.org>
0003  *
0004  *   SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0005  */
0006 
0007 #ifndef PLASMAVAULT_KDED_SERVICE_H
0008 #define PLASMAVAULT_KDED_SERVICE_H
0009 
0010 #include <KDEDModule>
0011 
0012 #include <QVariant>
0013 
0014 #include <common/vaultinfo.h>
0015 #include <engine/vault.h>
0016 
0017 class Q_DECL_EXPORT PlasmaVaultService : public KDEDModule
0018 {
0019     Q_CLASSINFO("D-Bus Interface", "org.kde.plasmavault")
0020     Q_OBJECT
0021 
0022 public:
0023     PlasmaVaultService(QObject *parent, const QVariantList &);
0024     ~PlasmaVaultService() override;
0025 
0026 public Q_SLOTS:
0027     Q_SCRIPTABLE void requestNewVault();
0028     Q_SCRIPTABLE void requestImportVault();
0029     Q_SCRIPTABLE void openVault(const QString &device);
0030     Q_SCRIPTABLE void closeVault(const QString &device);
0031     Q_SCRIPTABLE void forceCloseVault(const QString &device);
0032 
0033     Q_SCRIPTABLE void configureVault(const QString &device);
0034     Q_SCRIPTABLE void openVaultInFileManager(const QString &device);
0035 
0036     Q_SCRIPTABLE PlasmaVault::VaultInfoList availableDevices() const;
0037 
0038     Q_SCRIPTABLE bool hasOpenVaults() const;
0039     Q_SCRIPTABLE void closeAllVaults();
0040     Q_SCRIPTABLE void forceCloseAllVaults();
0041 
0042     Q_SCRIPTABLE void deleteVault(const QString &device, const QString &name);
0043 
0044     Q_SCRIPTABLE void updateStatus();
0045 
0046 Q_SIGNALS:
0047     void registered();
0048 
0049     Q_SCRIPTABLE void vaultAdded(const PlasmaVault::VaultInfo &vaultData);
0050     Q_SCRIPTABLE void vaultRemoved(const QString &device);
0051     Q_SCRIPTABLE void vaultChanged(const PlasmaVault::VaultInfo &vaultData);
0052 
0053     Q_SCRIPTABLE void hasOpenVaultsChanged(bool hasOpenVaults);
0054 
0055 private Q_SLOTS:
0056     void slotRegistered(const QDBusObjectPath &path);
0057 
0058     void registerVault(PlasmaVault::Vault *vault);
0059     void forgetVault(PlasmaVault::Vault *vault);
0060 
0061     void onVaultStatusChanged(PlasmaVault::VaultInfo::Status status);
0062     void onVaultMessageChanged(const QString &message);
0063     void onVaultInfoChanged();
0064 
0065     void onActivitiesChanged(const QStringList &knownActivities);
0066     void onCurrentActivityChanged(const QString &currentActivity);
0067     void onActivityRemoved(const QString &removedActivity);
0068 
0069 private:
0070     class Private;
0071     QScopedPointer<Private> d;
0072 };
0073 
0074 #endif // include guard