File indexing completed on 2024-03-24 17:22:45
0001 /* 0002 * SPDX-FileCopyrightText: 2018 Kai Uwe Broulik <kde@privat.broulik.de> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #ifndef DOLPHINPLACESMODELSINGLETON_H 0008 #define DOLPHINPLACESMODELSINGLETON_H 0009 0010 #include <QScopedPointer> 0011 #include <QString> 0012 0013 #include <KFilePlacesModel> 0014 0015 /** 0016 * @brief Dolphin's special-cased KFilePlacesModel 0017 * 0018 * It returns the trash's icon based on whether 0019 * it is full or not. 0020 */ 0021 class DolphinPlacesModel : public KFilePlacesModel 0022 { 0023 Q_OBJECT 0024 0025 public: 0026 explicit DolphinPlacesModel(QObject *parent = nullptr); 0027 ~DolphinPlacesModel() override; 0028 0029 bool panelsLocked() const; 0030 void setPanelsLocked(bool locked); 0031 0032 QStringList mimeTypes() const override; 0033 bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) override; 0034 0035 protected: 0036 QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; 0037 0038 private Q_SLOTS: 0039 void slotTrashEmptinessChanged(bool isEmpty); 0040 0041 private: 0042 bool isTrash(const QModelIndex &index) const; 0043 0044 bool m_isEmpty = false; 0045 bool m_panelsLocked = true; // common-case, panels are locked 0046 }; 0047 0048 /** 0049 * @brief Provides a global KFilePlacesModel instance. 0050 */ 0051 class DolphinPlacesModelSingleton 0052 { 0053 public: 0054 static DolphinPlacesModelSingleton &instance(); 0055 0056 DolphinPlacesModel *placesModel() const; 0057 0058 DolphinPlacesModelSingleton(const DolphinPlacesModelSingleton &) = delete; 0059 DolphinPlacesModelSingleton &operator=(const DolphinPlacesModelSingleton &) = delete; 0060 0061 private: 0062 DolphinPlacesModelSingleton(); 0063 0064 QScopedPointer<DolphinPlacesModel> m_placesModel; 0065 }; 0066 0067 #endif // DOLPHINPLACESMODELSINGLETON_H