File indexing completed on 2024-03-24 17:11:28
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_COMMON_VAULT_INFO_H 0008 #define PLASMAVAULT_COMMON_VAULT_INFO_H 0009 0010 #include <QDBusArgument> 0011 #include <QDebug> 0012 #include <QString> 0013 0014 namespace PlasmaVault 0015 { 0016 /** 0017 * Class used to serialize the vault data for DBus communication 0018 */ 0019 class VaultInfo 0020 { 0021 public: 0022 enum Status { 0023 NotInitialized = 0, 0024 Opened = 1, 0025 Closed = 2, 0026 0027 Creating = 3, 0028 Opening = 4, 0029 Closing = 5, 0030 Dismantling = 6, 0031 Dismantled = 7, 0032 0033 DeviceMissing = 254, 0034 0035 Error = 255, 0036 }; 0037 // Q_ENUM(Status); // VaultInfo is not a QObject or anything like that 0038 0039 QString name; 0040 QString device; 0041 QString mountPoint; 0042 0043 Status status; 0044 QString message; 0045 0046 QStringList activities; 0047 bool isOfflineOnly; 0048 0049 inline bool isInitialized() const 0050 { 0051 return status == Closed || status == Opened || status == Closing || status == Opening; 0052 } 0053 0054 inline bool isOpened() const 0055 { 0056 return status == Opened; 0057 } 0058 0059 inline bool isBusy() const 0060 { 0061 return status == Creating || status == Opening || status == Closing || status == Dismantling; 0062 } 0063 }; 0064 0065 typedef QList<VaultInfo> VaultInfoList; 0066 0067 inline QDebug &operator<<(QDebug &debug, const VaultInfo &vaultInfo) 0068 { 0069 debug << vaultInfo.name << vaultInfo.device << vaultInfo.mountPoint 0070 0071 << (quint16)vaultInfo.status << vaultInfo.message 0072 0073 << vaultInfo.activities << vaultInfo.isOfflineOnly; 0074 return debug; 0075 } 0076 0077 inline QDBusArgument &operator<<(QDBusArgument &argument, const VaultInfo &vaultInfo) 0078 { 0079 argument.beginStructure(); 0080 argument << vaultInfo.name << vaultInfo.device << vaultInfo.mountPoint 0081 0082 << (quint16)vaultInfo.status << vaultInfo.message 0083 0084 << vaultInfo.activities << vaultInfo.isOfflineOnly; 0085 argument.endStructure(); 0086 return argument; 0087 } 0088 0089 inline const QDBusArgument &operator>>(const QDBusArgument &argument, VaultInfo &vaultInfo) 0090 { 0091 quint16 status; 0092 argument.beginStructure(); 0093 argument >> vaultInfo.name >> vaultInfo.device >> vaultInfo.mountPoint 0094 0095 >> status >> vaultInfo.message 0096 0097 >> vaultInfo.activities >> vaultInfo.isOfflineOnly; 0098 vaultInfo.status = (VaultInfo::Status)status; 0099 argument.endStructure(); 0100 return argument; 0101 } 0102 0103 } // namespace PlasmaVault 0104 0105 Q_DECLARE_METATYPE(PlasmaVault::VaultInfo) 0106 Q_DECLARE_METATYPE(PlasmaVault::VaultInfoList) 0107 0108 #endif // include guard