QGIS API Documentation  3.21.0-Master (909859188c)
qgsbrowserdockwidget_p.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgsbrowserdockwidget_p.h
3 
4  Private classes for QgsBrowserDockWidget
5 
6  ---------------------
7  begin : May 2017
8  copyright : (C) 2017 by Alessandro Pasotti
9  real work done by : (C) 2011 by Martin Dobias
10  email : a dot pasotti at itopen dot it
11  ***************************************************************************
12  * *
13  * This program is free software; you can redistribute it and/or modify *
14  * it under the terms of the GNU General Public License as published by *
15  * the Free Software Foundation; either version 2 of the License, or *
16  * (at your option) any later version. *
17  * *
18  ***************************************************************************/
19 
20 
21 #ifndef QGSBROWSERDOCKWIDGET_P_H
22 #define QGSBROWSERDOCKWIDGET_P_H
23 
25 
26 //
27 // W A R N I N G
28 // -------------
29 //
30 // This file is not part of the QGIS API. It exists purely as an
31 // implementation detail. This header file may change from version to
32 // version without notice, or even be removed.
33 //
34 
35 #include <QSortFilterProxyModel>
36 
37 #include "ui_qgsbrowserlayerpropertiesbase.h"
38 #include "ui_qgsbrowserdirectorypropertiesbase.h"
39 #include "ui_qgsbrowserpropertiesdialogbase.h"
40 
41 #include "qgsbrowsertreeview.h"
42 #include "qgsdockwidget.h"
43 #include "qgsdataitemguiprovider.h"
44 
45 class QgsBrowserGuiModel;
46 class QModelIndex;
47 class QgsDockBrowserTreeView;
48 class QgsLayerItem;
49 class QgsDataItem;
51 
52 #define SIP_NO_FILE
53 
57 class QgsBrowserPropertiesWrapLabel : public QTextEdit
58 {
59  Q_OBJECT
60  public:
61 
67  QgsBrowserPropertiesWrapLabel( const QString &text, QWidget *parent = nullptr );
68 
69  private slots:
70  void adjustHeight( QSizeF size );
71 };
72 
76 class QgsBrowserPropertiesWidget : public QWidget
77 {
78  Q_OBJECT
79  public:
80 
85  explicit QgsBrowserPropertiesWidget( QWidget *parent = nullptr );
87  static QgsBrowserPropertiesWidget *createWidget( QgsDataItem *item, const QgsDataItemGuiContext &context, QWidget *parent = nullptr );
89  virtual void setItem( QgsDataItem *item ) { Q_UNUSED( item ); }
91  virtual void setWidget( QWidget *widget );
92 
99  virtual void setCondensedMode( bool condensedMode ) { Q_UNUSED( condensedMode ) }
100 };
101 
105 class QgsBrowserLayerProperties : public QgsBrowserPropertiesWidget, private Ui::QgsBrowserLayerPropertiesBase
106 {
107  Q_OBJECT
108  public:
109 
114  explicit QgsBrowserLayerProperties( QWidget *parent = nullptr );
116  void setItem( QgsDataItem *item ) override;
117 
124  void setCondensedMode( bool condensedMode ) override;
125 
126  private slots:
127 
128  void urlClicked( const QUrl &url );
129 
130  private:
131 
132  void loadAttributeTable();
133 
134  std::unique_ptr<QgsMapLayer> mLayer;
135  QgsAttributeTableFilterModel *mAttributeTableFilterModel = nullptr;
136 
137 };
138 
142 class QgsBrowserDirectoryProperties : public QgsBrowserPropertiesWidget, private Ui::QgsBrowserDirectoryPropertiesBase
143 {
144  Q_OBJECT
145  public:
146 
151  explicit QgsBrowserDirectoryProperties( QWidget *parent = nullptr );
152 
154  void setItem( QgsDataItem *item ) override;
155  private:
156  QgsDirectoryParamWidget *mDirectoryWidget = nullptr;
157  QgsBrowserPropertiesWrapLabel *mPathLabel = nullptr;
158 };
159 
163 class GUI_EXPORT QgsBrowserPropertiesDialog : public QDialog, private Ui::QgsBrowserPropertiesDialogBase
164 {
165  Q_OBJECT
166  public:
167 
173  QgsBrowserPropertiesDialog( const QString &settingsSection, QWidget *parent = nullptr );
174 
176  void setItem( QgsDataItem *item, const QgsDataItemGuiContext &context );
177 
178  private:
179  QgsBrowserPropertiesWidget *mPropertiesWidget = nullptr;
180  QString mSettingsSection;
181 };
182 
183 
192 class QgsDockBrowserTreeView : public QgsBrowserTreeView
193 {
194  Q_OBJECT
195 
196  public:
197 
202  explicit QgsDockBrowserTreeView( QWidget *parent );
204  void dragEnterEvent( QDragEnterEvent *e ) override;
206  void dragMoveEvent( QDragMoveEvent *e ) override;
208  void dropEvent( QDropEvent *e ) override;
209 
210  private:
211  void setAction( QDropEvent *e );
212 };
213 
215 
216 #endif // QGSBROWSERDOCKWIDGET_P_H
A model for showing available data sources and other items in a structured tree.
The QgsBrowserTreeView class extends QTreeView with save/restore tree state functionality.
Encapsulates the context in which a QgsDataItem is shown within the application GUI.
Base class for all items in the model.
Definition: qgsdataitem.h:46
Browser parameter widget implementation for directory items.
Item that represents a layer that can be opened with one of the providers.
Definition: qgslayeritem.h:30