/*************************************************************************** qgsbrowsertreeview.h -------------------------------------- Date : January 2015 Copyright : (C) 2015 by Radim Blazek Email : radim.blazek@gmail.com *************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef QGSBROWSERTREEVIEW_H #define QGSBROWSERTREEVIEW_H #include <QTreeView> #include "qgis_sip.h" #include "qgis_gui.h" class QgsBrowserGuiModel; /** * \ingroup gui * The QgsBrowserTreeView class extends QTreeView with save/restore tree state functionality. * * \see QgsBrowserModel * \since QGIS 2.8 */ class GUI_EXPORT QgsBrowserTreeView : public QTreeView { Q_OBJECT public: //! Constructor for QgsBrowserTreeView QgsBrowserTreeView( QWidget *parent SIP_TRANSFERTHIS = nullptr ); void setModel( QAbstractItemModel *model ) override; //! Sets the browser model void setBrowserModel( QgsBrowserGuiModel *model ); //! Returns the browser model QgsBrowserGuiModel *browserModel() { return mBrowserModel; } void showEvent( QShowEvent *e ) override; void hideEvent( QHideEvent *e ) override; // returns true if at least one descendat is expanded, used in refresh bool hasExpandedDescendant( const QModelIndex &index ) const; // Set section where to store settings (because we have 2 browser dock widgets) void setSettingsSection( const QString §ion ) { mSettingsSection = section; } protected slots: void rowsInserted( const QModelIndex &parentIndex, int start, int end ) override; private: QString mSettingsSection; // initial expanded paths QStringList mExpandPaths; void saveState(); void restoreState(); QString expandedPathsKey() const; // Get list of expanded items paths recursively QStringList expandedPathsList( const QModelIndex &index ); // Expand path recursively to root void expandTree( const QModelIndex &index ); // returns true if expanded from root to item bool treeExpanded( const QModelIndex &index ); QgsBrowserGuiModel *mBrowserModel = nullptr; }; #endif // QGSBROWSERTREEVIEW_H