]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphinplacesmodelsingleton.h
GIT_SILENT Sync po/docbooks with svn
[dolphin.git] / src / dolphinplacesmodelsingleton.h
index 645947aaa0c190cb189cd75dbb5e67a0c69dd46b..13e1193423d23a6655717344d6ff8d89e99b2703 100644 (file)
 #include <QString>
 #include <QScopedPointer>
 
-class KFilePlacesModel;
+#include <KFilePlacesModel>
+
+/**
+ * @brief Dolphin's special-cased KFilePlacesModel
+ *
+ * It returns the trash's icon based on whether
+ * it is full or not.
+ */
+class DolphinPlacesModel : public KFilePlacesModel
+{
+    Q_OBJECT
+
+public:
+    explicit DolphinPlacesModel(const QString &alternativeApplicationName, QObject *parent = nullptr);
+    ~DolphinPlacesModel() override;
+
+    bool panelsLocked() const;
+    void setPanelsLocked(bool locked);
+
+    QStringList mimeTypes() const override;
+    bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) override;
+
+protected:
+    QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
+
+private Q_SLOTS:
+    void slotTrashEmptinessChanged(bool isEmpty);
+
+private:
+    bool isTrash(const QModelIndex &index) const;
+
+    bool m_isEmpty = false;
+    bool m_panelsLocked = true; // common-case, panels are locked
+};
 
 /**
  * @brief Provides a global KFilePlacesModel instance.
@@ -21,7 +54,7 @@ class DolphinPlacesModelSingleton
 public:
     static DolphinPlacesModelSingleton& instance();
 
-    KFilePlacesModel *placesModel() const;
+    DolphinPlacesModel *placesModel() const;
     /** A suffix to the application-name of the stored bookmarks is
      added, which is only read by PlacesItemModel. */
     static QString applicationNameSuffix();
@@ -32,7 +65,7 @@ public:
 private:
     DolphinPlacesModelSingleton();
 
-    QScopedPointer<KFilePlacesModel> m_placesModel;
+    QScopedPointer<DolphinPlacesModel> m_placesModel;
 };
 
 #endif // DOLPHINPLACESMODELSINGLETON_H