]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphinplacesmodelsingleton.h
DolphinView: Conform to global scroll speed
[dolphin.git] / src / dolphinplacesmodelsingleton.h
index 6bce25d1633d168a6d2f5ad5715a80c3b6b529f9..161a19cbc82beae5a4a5fdb92ec1edfe5396245d 100644 (file)
@@ -1,51 +1,67 @@
-/***************************************************************************
- *   Copyright (C) 2018 Kai Uwe Broulik <kde@privat.broulik.de>            *
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- *   This program is distributed in the hope that it will be useful,       *
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
- *   GNU General Public License for more details.                          *
- *                                                                         *
- *   You should have received a copy of the GNU General Public License     *
- *   along with this program; if not, write to the                         *
- *   Free Software Foundation, Inc.,                                       *
- *   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA            *
- ***************************************************************************/
+/*
+ * SPDX-FileCopyrightText: 2018 Kai Uwe Broulik <kde@privat.broulik.de>
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
 
 #ifndef DOLPHINPLACESMODELSINGLETON_H
 #define DOLPHINPLACESMODELSINGLETON_H
 
-#include <QString>
 #include <QScopedPointer>
+#include <QString>
+
+#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(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;
 
-class KFilePlacesModel;
+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.
  */
 class DolphinPlacesModelSingleton
 {
-
 public:
-    static DolphinPlacesModelSingletoninstance();
+    static DolphinPlacesModelSingleton &instance();
 
-    KFilePlacesModel *placesModel() const;
-    /** A suffix to the application-name of the stored bookmarks is
-     added, which is only read by PlacesItemModel. */
-    static QString applicationNameSuffix();
+    DolphinPlacesModel *placesModel() const;
 
-    DolphinPlacesModelSingleton(const DolphinPlacesModelSingleton&) = delete;
-    DolphinPlacesModelSingleton& operator=(const DolphinPlacesModelSingleton&) = delete;
+    DolphinPlacesModelSingleton(const DolphinPlacesModelSingleton &) = delete;
+    DolphinPlacesModelSingleton &operator=(const DolphinPlacesModelSingleton &) = delete;
 
 private:
     DolphinPlacesModelSingleton();
 
-    QScopedPointer<KFilePlacesModel> m_placesModel;
+    QScopedPointer<DolphinPlacesModel> m_placesModel;
 };
 
 #endif // DOLPHINPLACESMODELSINGLETON_H