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