16 #include <QApplication>
18 #include <QtConcurrentMap>
150 Q_FOREACH (
int key, providerMap.
uniqueKeys() )
153 if ( providerGroup.
size() > 1 )
186 flags |= Qt::ItemIsDragEnabled;
189 flags |= Qt::ItemIsDropEnabled;
203 else if ( role == Qt::DisplayRole )
205 if ( index.
column() == 0 )
216 else if ( role == Qt::ToolTipRole )
220 else if ( role == Qt::DecorationRole && index.
column() == 0 )
238 if ( orientation == Qt::Horizontal && role == Qt::DisplayRole )
281 return findPath(
this, path, matchFlag );
290 bool foundChild =
true;
296 for (
int i = 0; i < model->
rowCount( theIndex ); i++ )
301 if ( itemPath == path )
317 if ( matchFlag == Qt::MatchStartsWith )
354 for (
int i = 0; i < items.
size(); i++ )
356 if ( items[i] == item )
371 if ( !idx.isValid() )
386 if ( !idx.isValid() )
435 types <<
"application/x-vnd.qgis.qgis.uri";
Contains various Favourites directories.
virtual int rowCount(const QModelIndex &parent) const =0
void removeDirectory(QgsDirectoryItem *item)
static bool cmpByDataItemName_(QgsDataItem *a, QgsDataItem *b)
static QgsDataItemProviderRegistry * instance()
virtual QModelIndex index(int row, int column, const QModelIndex &parent) const =0
bool canFetchMore(const QModelIndex &parent) const override
int localeAwareCompare(const QString &other) const
QVector< QgsDataItem * > children() const
QList< T > values() const
QgsDataItem * parent() const
Get item parent.
virtual QgsDataItem * createDataItem(const QString &path, QgsDataItem *parentItem)=0
Create a new instance of QgsDataItem (or null) for given path and parent item.
virtual int rowCount(const QModelIndex &parent=QModelIndex()) const override
Provides the number of rows of data exposed by the model.
void fetchMore(const QModelIndex &parent) override
virtual QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const override
Used to supply item data to views and delegates.
int indexOf(const T &value, int from) const
void removeFavourite(const QModelIndex &index)
virtual bool handleDrop(const QMimeData *, Qt::DropAction)
QgsFavouritesItem * mFavourites
QModelIndex findPath(const QString &path, Qt::MatchFlag matchFlag=Qt::MatchExactly)
Return index of item with given path.
void beginRemoveItems(QgsDataItem *parent, int first, int last)
void connectItem(QgsDataItem *item)
void insert(int i, const T &value)
static QMimeData * encodeUriList(const UriList &layers)
void setIcon(const QIcon &icon)
void itemStateChanged(QgsDataItem *item, QgsDataItem::State oldState)
virtual QStringList mimeTypes() const override
Returns a list of mime that can describe model indexes.
QString homePath() const
Return project's home path.
virtual void refresh(QVector< QgsDataItem * > children)
QString tr(const char *sourceText, const char *disambiguation, int n)
bool hasChildren(const QModelIndex &parent=QModelIndex()) const override
QgsDirectoryItem * mProjectHome
void append(const T &value)
iterator insertMulti(const Key &key, const T &value)
void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight)
QgsBrowserModel(QObject *parent=0)
#define QgsDebugMsgLevel(str, level)
QgsDataItem * dataItem(const QModelIndex &idx) const
void beginRemoveRows(const QModelIndex &parent, int first, int last)
bool startsWith(const QString &s, Qt::CaseSensitivity cs) const
Children not yet created.
Creating children in separate thread (populating or refreshing)
void * internalPointer() const
virtual int capabilities()=0
Return combination of flags from QgsDataProvider::DataCapabilities.
virtual QVariant data(const QModelIndex &index, int role) const =0
QgsBrowserWatcher(QgsDataItem *item)
A directory: contains subdirectories and layers.
QModelIndex findItem(QgsDataItem *item, QgsDataItem *parent=0) const
QModelIndex createIndex(int row, int column, void *ptr) const
Base class for all items in the model.
void addDirectory(const QString &favIcon)
void beginInsertRows(const QModelIndex &parent, int first, int last)
virtual QVariant headerData(int section, Qt::Orientation orientation, int role=Qt::DisplayRole) const override
Provides views with information to show in their headers.
void addFavouriteDirectory(const QString &favDir)
virtual void populate(const QVector< QgsDataItem * > &children)
void beginInsertItems(QgsDataItem *parent, int first, int last)
virtual QModelIndex index(int row, int column, const QModelIndex &parent=QModelIndex()) const override
Returns the index of the item in the model specified by the given row, column and parent index...
virtual QString comments() const
Returns comments of the layer.
static QgsProject * instance()
access to canonical QgsProject instance
int count(const T &value) const
virtual int columnCount(const QModelIndex &parent=QModelIndex()) const override
Provides the number of columns of data exposed by the model.
virtual bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) override
Handles the data supplied by a drag and drop operation that ended with the given action.
void stateChanged(const QModelIndex &index, QgsDataItem::State oldState)
Emitted when item children fetch was finished.
void refresh(const QString &path)
virtual QMimeData * mimeData(const QModelIndexList &indexes) const override
Returns an object that contains serialized items of data corresponding to the list of indexes specifi...
Item that represents a layer that can be opened with one of the providers.
virtual QString name()=0
Human-readable name of the provider name.
void itemDataChanged(QgsDataItem *item)
virtual Qt::ItemFlags flags(const QModelIndex &index) const override
Used by other components to obtain information about each item provided by the model.
QString absolutePath() const
virtual bool acceptDrop()
bool connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
virtual QPixmap standardPixmap(StandardPixmap standardPixmap, const QStyleOption *option, const QWidget *widget) const =0
QString arg(qlonglong a, int fieldWidth, int base, const QChar &fillChar) const
This is the interface for those who want to add custom data items to the browser tree.
QList< Key > uniqueKeys() const
QVector< QgsDataItem * > mRootItems