void QgsBrowserModel::addRootItems() { updateProjectHome(); // give the home directory a prominent second place QgsDirectoryItem *item = new QgsDirectoryItem( NULL, tr( "Home" ), QDir::homePath(), "home:" + QDir::homePath() ); QStyle *style = QApplication::style(); QIcon homeIcon( style->standardPixmap( QStyle::SP_DirHomeIcon ) ); item->setIcon( homeIcon ); connectItem( item ); mRootItems << item; // add favourite directories mFavourites = new QgsFavouritesItem( NULL, tr( "Favourites" ) ); if ( mFavourites ) { connectItem( mFavourites ); mRootItems << mFavourites; } // add drives foreach ( QFileInfo drive, QDir::drives() ) { QString path = drive.absolutePath(); QgsDirectoryItem *item = new QgsDirectoryItem( NULL, path, path ); connectItem( item ); mRootItems << item; }
void QgsBrowserModel::addRootItems() { updateProjectHome(); // give the home directory a prominent third place QgsDirectoryItem *item = new QgsDirectoryItem( nullptr, tr( "Home" ), QDir::homePath(), QStringLiteral( HOME_PREFIX ) + QDir::homePath() ); item->setSortKey( QStringLiteral( " 2" ) ); QStyle *style = QApplication::style(); QIcon homeIcon( style->standardPixmap( QStyle::SP_DirHomeIcon ) ); item->setIcon( homeIcon ); connectItem( item ); mRootItems << item; // add favorite directories mFavorites = new QgsFavoritesItem( nullptr, tr( "Favorites" ) ); if ( mFavorites ) { connectItem( mFavorites ); mRootItems << mFavorites; } // add drives Q_FOREACH ( const QFileInfo &drive, QDir::drives() ) { QString path = drive.absolutePath(); if ( QgsDirectoryItem::hiddenPath( path ) ) continue; QgsDirectoryItem *item = new QgsDirectoryItem( nullptr, path, path ); item->setSortKey( QStringLiteral( " 3 %1" ).arg( path ) ); connectItem( item ); mRootItems << item; }
void QgsBrowserDockWidget::showEvent( QShowEvent * e ) { // delayed initialization of the model if ( !mModel ) { mModel = new QgsBrowserModel( mBrowserView ); connect( QgisApp::instance(), SIGNAL( newProject() ), mModel, SLOT( updateProjectHome() ) ); mProxyModel = new QgsBrowserTreeFilterProxyModel( this ); mProxyModel->setBrowserModel( mModel ); mBrowserView->setSettingsSection( objectName().toLower() ); // to distinguish 2 instances ow browser mBrowserView->setModel( mProxyModel ); // provide a horizontal scroll bar instead of using ellipse (...) for longer items mBrowserView->setTextElideMode( Qt::ElideNone ); mBrowserView->header()->setResizeMode( 0, QHeaderView::ResizeToContents ); mBrowserView->header()->setStretchLastSection( false ); // selectionModel is created when model is set on tree connect( mBrowserView->selectionModel(), SIGNAL( selectionChanged( const QItemSelection &, const QItemSelection & ) ), this, SLOT( selectionChanged( const QItemSelection &, const QItemSelection & ) ) ); // objectName used by settingsSection() is not yet set in constructor QSettings settings; mPropertiesWidgetEnabled = settings.value( settingsSection() + "/propertiesWidgetEnabled", false ).toBool(); mActionPropertiesWidget->setChecked( mPropertiesWidgetEnabled ); mPropertiesWidget->setVisible( false ); // false until item is selected mPropertiesWidgetHeight = settings.value( settingsSection() + "/propertiesWidgetHeight" ).toFloat(); QList<int> sizes = mSplitter->sizes(); int total = sizes.value( 0 ) + sizes.value( 1 ); int height = ( int )total * mPropertiesWidgetHeight; sizes.clear(); sizes << total - height << height; mSplitter->setSizes( sizes ); }
void QgsBrowserModel::addRootItems() { updateProjectHome(); // give the home directory a prominent third place QgsDirectoryItem *item = new QgsDirectoryItem( nullptr, tr( "Home" ), QDir::homePath(), QStringLiteral( HOME_PREFIX ) + QDir::homePath() ); item->setSortKey( QStringLiteral( " 2" ) ); setupItemConnections( item ); mRootItems << item; // add favorite directories mFavorites = new QgsFavoritesItem( nullptr, tr( "Favorites" ) ); if ( mFavorites ) { setupItemConnections( mFavorites ); mRootItems << mFavorites; } // add drives Q_FOREACH ( const QFileInfo &drive, QDir::drives() ) { const QString path = drive.absolutePath(); if ( QgsDirectoryItem::hiddenPath( path ) ) continue; QgsDirectoryItem *item = new QgsDirectoryItem( nullptr, path, path ); item->setSortKey( QStringLiteral( " 3 %1" ).arg( path ) ); mDriveItems.insert( path, item ); setupItemConnections( item ); mRootItems << item; } #ifdef Q_OS_MAC QString path = QString( "/Volumes" ); QgsDirectoryItem *vols = new QgsDirectoryItem( nullptr, path, path ); mRootItems << vols; #endif // container for displaying providers as sorted groups (by QgsDataProvider::DataCapability enum) QMap<int, QgsDataItem *> providerMap; Q_FOREACH ( QgsDataItemProvider *pr, QgsApplication::dataItemProviderRegistry()->providers() ) { int capabilities = pr->capabilities(); if ( capabilities == QgsDataProvider::NoDataCapabilities ) { QgsDebugMsgLevel( pr->name() + " does not have any dataCapabilities", 4 ); continue; } QgsDataItem *item = pr->createDataItem( QString(), nullptr ); // empty path -> top level if ( item ) { // Forward the signal from the root items to the model (and then to the app) connect( item, &QgsDataItem::connectionsChanged, this, &QgsBrowserModel::connectionsChanged ); QgsDebugMsgLevel( "Add new top level item : " + item->name(), 4 ); setupItemConnections( item ); providerMap.insertMulti( capabilities, item ); } }