1 /***************************************************************************
2                          qgsinbuiltdataitemproviders.h
3                          --------------------------
4     begin                : October 2018
5     copyright            : (C) 2018 by Nyall Dawson
6     email                : nyall dot dawson at gmail dot com
7  ***************************************************************************/
8 
9 /***************************************************************************
10  *                                                                         *
11  *   This program is free software; you can redistribute it and/or modify  *
12  *   it under the terms of the GNU General Public License as published by  *
13  *   the Free Software Foundation; either version 2 of the License, or     *
14  *   (at your option) any later version.                                   *
15  *                                                                         *
16  ***************************************************************************/
17 
18 #ifndef QGSINBUILTDATAITEMPROVIDERS_H
19 #define QGSINBUILTDATAITEMPROVIDERS_H
20 
21 #include "qgis_app.h"
22 #include "qgsdataitemguiprovider.h"
23 #include <QObject>
24 
25 class QgsDirectoryItem;
26 class QgsFavoriteItem;
27 class QgsLayerItem;
28 class QgsFieldsItem;
29 class QgsFieldItem;
30 
31 class QgsAppDirectoryItemGuiProvider : public QObject, public QgsDataItemGuiProvider
32 {
33     Q_OBJECT
34 
35   public:
36 
37     QgsAppDirectoryItemGuiProvider() = default;
38 
39     QString name() override;
40 
41     void populateContextMenu( QgsDataItem *item, QMenu *menu,
42                               const QList<QgsDataItem *> &selectedItems, QgsDataItemGuiContext context ) override;
43 
44   private:
45 
46     void addFavorite( QgsDirectoryItem *item );
47     void removeFavorite( QgsFavoriteItem *favorite );
48     void renameFavorite( QgsFavoriteItem *favorite );
49     void hideDirectory( QgsDirectoryItem *item );
50     void toggleFastScan( QgsDirectoryItem *item );
51     void showProperties( QgsDirectoryItem *item, QgsDataItemGuiContext context );
52 };
53 
54 
55 class QgsProjectHomeItemGuiProvider : public QObject, public QgsDataItemGuiProvider
56 {
57     Q_OBJECT
58 
59   public:
60 
61     QgsProjectHomeItemGuiProvider() = default;
62 
63     QString name() override;
64 
65     void populateContextMenu( QgsDataItem *item, QMenu *menu,
66                               const QList<QgsDataItem *> &selectedItems, QgsDataItemGuiContext context ) override;
67 
68 };
69 
70 
71 class QgsFavoritesItemGuiProvider : public QObject, public QgsDataItemGuiProvider
72 {
73     Q_OBJECT
74 
75   public:
76 
77     QgsFavoritesItemGuiProvider() = default;
78 
79     QString name() override;
80 
81     void populateContextMenu( QgsDataItem *item, QMenu *menu,
82                               const QList<QgsDataItem *> &selectedItems, QgsDataItemGuiContext context ) override;
83 
84 };
85 
86 
87 class QgsLayerItemGuiProvider : public QObject, public QgsDataItemGuiProvider
88 {
89     Q_OBJECT
90 
91   public:
92 
93     QgsLayerItemGuiProvider() = default;
94 
95     QString name() override;
96 
97     void populateContextMenu( QgsDataItem *item, QMenu *menu,
98                               const QList<QgsDataItem *> &selectedItems, QgsDataItemGuiContext context ) override;
99     bool handleDoubleClick( QgsDataItem *item, QgsDataItemGuiContext context ) override;
100 
101   private:
102 
103     void addLayersFromItems( const QList<QgsDataItem *> &items );
104     void showPropertiesForItem( QgsLayerItem *item, QgsDataItemGuiContext context );
105     void deleteLayers( const QStringList &itemPath, QgsDataItemGuiContext context );
106 
107 };
108 
109 
110 class QgsFieldsItemGuiProvider : public QObject, public QgsDataItemGuiProvider
111 {
112     Q_OBJECT
113 
114   public:
115 
116     QgsFieldsItemGuiProvider() = default;
117 
118     QString name() override;
119 
120     void populateContextMenu( QgsDataItem *item, QMenu *menu,
121                               const QList<QgsDataItem *> &selectedItems, QgsDataItemGuiContext context ) override;
122 
123 };
124 
125 
126 class QgsFieldItemGuiProvider : public QObject, public QgsDataItemGuiProvider
127 {
128     Q_OBJECT
129 
130   public:
131 
132     QgsFieldItemGuiProvider() = default;
133 
134     QString name() override;
135 
136     void populateContextMenu( QgsDataItem *item, QMenu *menu,
137                               const QList<QgsDataItem *> &selectedItems, QgsDataItemGuiContext context ) override;
138 
139 };
140 
141 
142 class QgsDatabaseItemGuiProvider : public QObject, public QgsDataItemGuiProvider
143 {
144     Q_OBJECT
145 
146   public:
147 
148     QgsDatabaseItemGuiProvider() = default;
149 
150     QString name() override;
151 
152     void populateContextMenu( QgsDataItem *item, QMenu *menu,
153                               const QList<QgsDataItem *> &selectedItems, QgsDataItemGuiContext context ) override;
154 
155 };
156 
157 
158 
159 class QgsProjectItemGuiProvider : public QObject, public QgsDataItemGuiProvider
160 {
161     Q_OBJECT
162 
163   public:
164 
165     QgsProjectItemGuiProvider() = default;
166 
167     QString name() override;
168 
169     void populateContextMenu( QgsDataItem *item, QMenu *menu,
170                               const QList<QgsDataItem *> &selectedItems, QgsDataItemGuiContext context ) override;
171     bool handleDoubleClick( QgsDataItem *item, QgsDataItemGuiContext context ) override;
172 
173 };
174 
175 #endif // QGSINBUILTDATAITEMPROVIDERS_H
176 
177 
178