File indexing completed on 2024-04-14 05:39:30
0001 // SPDX-FileCopyrightText: 2020 Simon Persson <simon.persson@mykolab.com> 0002 // 0003 // SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0004 0005 #ifndef DRIVESELECTION_H 0006 #define DRIVESELECTION_H 0007 0008 #include <QListView> 0009 #include <QStringList> 0010 0011 class QStandardItem; 0012 class QStandardItemModel; 0013 0014 class BackupPlan; 0015 0016 class DriveSelection : public QListView 0017 { 0018 Q_OBJECT 0019 Q_PROPERTY(QString selectedDrive READ selectedDrive WRITE setSelectedDrive NOTIFY selectedDriveChanged USER true) 0020 Q_PROPERTY(bool driveIsSelected READ driveIsSelected NOTIFY driveIsSelectedChanged) 0021 Q_PROPERTY(bool selectedDriveIsAccessible READ selectedDriveIsAccessible NOTIFY selectedDriveIsAccessibleChanged) 0022 public: 0023 enum DataType { 0024 UUID = Qt::UserRole + 1, 0025 UDI, 0026 TotalSpace, 0027 UsedSpace, 0028 Label, 0029 DeviceDescription, 0030 PartitionNumber, 0031 PartitionsOnDrive, 0032 FileSystem, 0033 PermissionLossWarning, 0034 SymlinkLossWarning 0035 }; 0036 0037 public: 0038 explicit DriveSelection(BackupPlan *pBackupPlan, QWidget *parent=nullptr); 0039 QString selectedDrive() const {return mSelectedUuid;} 0040 bool driveIsSelected() const {return !mSelectedUuid.isEmpty();} 0041 bool selectedDriveIsAccessible() const {return mSelectedAndAccessible;} 0042 QString mountPathOfSelectedDrive() const; 0043 0044 public slots: 0045 void setSelectedDrive(const QString &pUuid); 0046 void saveExtraData(); 0047 void updateSyncWarning(bool pSyncBackupSelected); 0048 0049 signals: 0050 void selectedDriveChanged(const QString &pSelectedDrive); 0051 void driveIsSelectedChanged(bool pDriveIsSelected); 0052 void selectedDriveIsAccessibleChanged(bool pDriveIsSelectedAndAccessible); 0053 0054 protected slots: 0055 void deviceAdded(const QString &pUdi); 0056 void delayedDeviceAdded(); 0057 void deviceRemoved(const QString &pUdi); 0058 void accessabilityChanged(bool pAccessible, const QString &pUdi); 0059 void updateSelection(const QItemSelection &pSelected, const QItemSelection &pDeselected); 0060 0061 protected: 0062 void paintEvent(QPaintEvent *pPaintEvent) override; 0063 int findItem(const DataType pField, const QString &pSearchString, QStandardItem **pReturnedItem = nullptr) const; 0064 0065 QStandardItemModel *mDrivesModel; 0066 QString mSelectedUuid; 0067 BackupPlan *mBackupPlan; 0068 QStringList mDrivesToAdd; 0069 bool mSelectedAndAccessible; 0070 bool mSyncedBackupType; 0071 }; 0072 0073 #endif