QGIS API Documentation 4.1.0-Master (3b8ef1f72a3)
Loading...
Searching...
No Matches
qgsbrowserdockwidget.cpp
Go to the documentation of this file.
1/***************************************************************************
2 qgsbrowserdockwidget.cpp
3 ---------------------
4 begin : July 2011
5 copyright : (C) 2011 by Martin Dobias
6 email : wonder dot sk at gmail dot com
7 ***************************************************************************
8 * *
9 * This program is free software; you can redistribute it and/or modify *
10 * it under the terms of the GNU General Public License as published by *
11 * the Free Software Foundation; either version 2 of the License, or *
12 * (at your option) any later version. *
13 * *
14 ***************************************************************************/
16
18#include "qgsbrowserguimodel.h"
20#include "qgsbrowserwidget.h"
21#include "qgsdirectoryitem.h"
22#include "qgslayeritem.h"
23#include "qgsprojectitem.h"
26
27#include <QFileDialog>
28#include <QString>
29#include <QVBoxLayout>
30
31#include "moc_qgsbrowserdockwidget.cpp"
32
33using namespace Qt::StringLiterals;
34
35QgsBrowserDockWidget::QgsBrowserDockWidget( const QString &name, QgsBrowserGuiModel *browserModel, QWidget *parent )
36 : QgsDockWidget( parent )
37{
38 QVBoxLayout *layout = new QVBoxLayout();
39 layout->setContentsMargins( 0, 0, 0, 0 );
40 layout->setSpacing( 0 );
41 QWidget *container = new QWidget();
42 container->setLayout( layout );
43 setWidget( container );
44
45 setWindowTitle( name );
46
47 mWidget = new QgsBrowserWidget( browserModel );
48 layout->addWidget( mWidget );
49
53}
54
56
61
63{
64 mWidget->showContextMenu( pt );
65}
66
68{
69 const QModelIndex index = mWidget->mProxyModel->mapToSource( mWidget->mBrowserView->currentIndex() );
70 QgsDataItem *item = mWidget->mModel->dataItem( index );
71 if ( !item )
72 return;
73
74 QgsDirectoryItem *dirItem = qobject_cast<QgsDirectoryItem *>( item );
75 if ( !dirItem )
76 return;
77
79 addFavoriteDirectory( dirItem->dirPath() );
81}
82
84{
85 const QString directory = QFileDialog::getExistingDirectory( this, tr( "Add directory to favorites" ) );
86 if ( !directory.isEmpty() )
87 {
89 addFavoriteDirectory( directory );
91 }
92}
93
94void QgsBrowserDockWidget::addFavoriteDirectory( const QString &favDir, const QString &name )
95{
96 mWidget->mModel->addFavoriteDirectory( favDir, name );
97}
98
100{
101 mWidget->setMessageBar( bar );
102}
103
105{
106 return mWidget->messageBar();
107}
108
110{
111 mWidget->setMapCanvas( canvas );
112}
113
115{
116 return mWidget->mapCanvas();
117}
118
119void QgsBrowserDockWidget::setDisabledDataItemsKeys( const QStringList &filter )
120{
121 mWidget->setDisabledDataItemsKeys( filter );
122}
123
125{
126 mWidget->mModel->removeFavorite( mWidget->mProxyModel->mapToSource( mWidget->mBrowserView->currentIndex() ) );
127}
128
130{
131 mWidget->refreshModel( QModelIndex() );
132}
133
134bool QgsBrowserDockWidget::addLayerAtIndex( const QModelIndex &index )
135{
136 QgsDebugMsgLevel( u"rowCount() = %1"_s.arg( mWidget->mModel->rowCount( mWidget->mProxyModel->mapToSource( index ) ) ), 2 );
137 QgsDataItem *item = mWidget->mModel->dataItem( mWidget->mProxyModel->mapToSource( index ) );
138
139 if ( item && item->type() == Qgis::BrowserItemType::Project )
140 {
141 QgsProjectItem *projectItem = qobject_cast<QgsProjectItem *>( item );
142 if ( projectItem )
143 {
144 QApplication::setOverrideCursor( Qt::WaitCursor );
145 emit openFile( projectItem->path(), u"project"_s );
146 QApplication::restoreOverrideCursor();
147 }
148 return true;
149 }
150 else if ( item && item->type() == Qgis::BrowserItemType::Layer )
151 {
152 QgsLayerItem *layerItem = qobject_cast<QgsLayerItem *>( item );
153 if ( layerItem )
154 {
155 QApplication::setOverrideCursor( Qt::WaitCursor );
156 mWidget->addLayer( layerItem );
157 QApplication::restoreOverrideCursor();
158 }
159 return true;
160 }
161 return false;
162}
163
165{
166 mWidget->addSelectedLayers();
167}
168
170{
171 mWidget->hideItem();
172}
173
175{
176 mWidget->showProperties();
177}
178
180{
181 const QModelIndex index = mWidget->mProxyModel->mapToSource( mWidget->mBrowserView->currentIndex() );
182 QgsDataItem *item = mWidget->mModel->dataItem( index );
183 if ( !item )
184 return;
185
186 if ( item->type() == Qgis::BrowserItemType::Directory )
187 {
188 QStringList fastScanDirs = QgsSettingsRegistryCore::settingsScanItemsFastScanUris->value();
189 const int idx = fastScanDirs.indexOf( item->path() );
190 if ( idx != -1 )
191 {
192 fastScanDirs.removeAt( idx );
193 }
194 else
195 {
196 fastScanDirs << item->path();
197 }
199 }
200}
201
203{
204 mWidget->showFilterWidget( visible );
205}
206
208{
209 mWidget->setFilter();
210}
211
213{
214 mWidget->updateProjectHome();
215}
216
218{
219 mWidget->setFilterSyntax( action );
220}
221
223{
224 mWidget->setCaseSensitive( caseSensitive );
225}
226
227void QgsBrowserDockWidget::selectionChanged( const QItemSelection &selected, const QItemSelection &deselected )
228{
229 mWidget->selectionChanged( selected, deselected );
230}
231
233{
234 mWidget->enablePropertiesWidget( enable );
235}
236
237void QgsBrowserDockWidget::setActiveIndex( const QModelIndex &index )
238{
239 mWidget->setActiveIndex( index );
240}
241
@ Layer
Represents a map layer.
Definition qgis.h:969
@ Project
Represents a QGIS project.
Definition qgis.h:972
@ Directory
Represents a file directory.
Definition qgis.h:968
void refresh()
Refresh the browser model and view.
Q_DECL_DEPRECATED void enablePropertiesWidget(bool enable)
Enable/disable properties widget.
Q_DECL_DEPRECATED void addSelectedLayers()
Add selected layers to the project.
Q_DECL_DEPRECATED void toggleFastScan()
Toggle fast scan.
QgsMapCanvas * mapCanvas()
Returns the map canvas associated with the dock.
~QgsBrowserDockWidget() override
QgsBrowserDockWidget(const QString &name, QgsBrowserGuiModel *browserModel, QWidget *parent=nullptr)
Constructor for QgsBrowserDockWidget.
void connectionsChanged()
Connections changed in the browser.
Q_DECL_DEPRECATED void addFavoriteDirectory()
Add directory from file dialog to favorite.
Q_DECL_DEPRECATED void showContextMenu(QPoint)
Show context menu.
Q_DECL_DEPRECATED void showProperties()
Show the layer properties.
Q_DECL_DEPRECATED void setActiveIndex(const QModelIndex &index)
Sets the selection to index and expand it.
void setMapCanvas(QgsMapCanvas *canvas)
Sets a map canvas to use alongside the dock.
Q_DECL_DEPRECATED void removeFavorite()
Remove from favorite.
Q_DECL_DEPRECATED void setFilter()
Apply filter to the model.
QgsBrowserWidget * browserWidget()
Returns a pointer to the QgsBrowserWidget used by the dock widget.
QgsMessageBar * messageBar()
Returns the message bar associated with the dock.
Q_DECL_DEPRECATED void setCaseSensitive(bool caseSensitive)
Sets filter case sensitivity.
void handleDropUriList(const QgsMimeDataUtils::UriList &uris)
Emitted when drop uri list needs to be handled.
Q_DECL_DEPRECATED void hideItem()
Hide current item.
void setMessageBar(QgsMessageBar *bar)
Sets a message bar to use alongside the dock widget.
Q_DECL_DEPRECATED void addFavorite()
Add current item to favorite.
Q_DECL_DEPRECATED void showFilterWidget(bool visible)
Show/hide filter widget.
Q_DECL_DEPRECATED void selectionChanged(const QItemSelection &selected, const QItemSelection &deselected)
Selection has changed.
Q_DECL_DEPRECATED void setFilterSyntax(QAction *)
Sets filter syntax.
Q_DECL_DEPRECATED void updateProjectHome()
Update project home directory.
void openFile(const QString &fileName, const QString &fileTypeHint=QString())
Emitted when a file needs to be opened.
Q_DECL_DEPRECATED void splitterMoved()
Splitter has been moved.
Q_DECL_DEPRECATED bool addLayerAtIndex(const QModelIndex &index)
Adds the layer corresponding to the specified model index.
void setDisabledDataItemsKeys(const QStringList &filter)
Sets the customization for data items based on item's data provider key.
A model for showing available data sources and other items in a structured tree.
A widget showing a browser tree view along with toolbar and toggleable properties pane.
void connectionsChanged()
Connections changed in the browser.
void handleDropUriList(const QgsMimeDataUtils::UriList &)
Emitted when drop uri list needs to be handled.
void openFile(const QString &fileName, const QString &fileTypeHint=QString())
Emitted when a file needs to be opened.
Base class for all items in the model.
Definition qgsdataitem.h:50
Qgis::BrowserItemType type() const
QString path() const
A browser item for directories: contains subdirectories and layers.
QString dirPath() const
Returns the full path to the directory the item represents.
QgsDockWidget(QWidget *parent=nullptr, Qt::WindowFlags flags=Qt::WindowFlags())
Constructor for QgsDockWidget.
A browser item that represents a layer that can be opened with one of the providers.
Map canvas is a class for displaying all GIS data types on a canvas.
A bar for displaying non-blocking messages to the user.
Data item that can be used to represent QGIS projects.
static const QgsSettingsEntryStringList * settingsScanItemsFastScanUris
Settings entry for fast scan URIs in browser.
#define Q_NOWARN_DEPRECATED_POP
Definition qgis.h:7621
#define Q_NOWARN_DEPRECATED_PUSH
Definition qgis.h:7620
#define QgsDebugMsgLevel(str, level)
Definition qgslogger.h:63