Skip to content

Commit 785f9ae

Browse files
etienneskytimlinux
authored andcommitted
group favourites in top-level item (when there are 5 or more favourites) and add favourites icon
Signed-off-by: Tim Sutton <tim@linfiniti.com>
1 parent 6768e6a commit 785f9ae

File tree

5 files changed

+77
-4
lines changed

5 files changed

+77
-4
lines changed

images/images.qrc

+1
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,7 @@
160160
<file>themes/default/mIconDbSchema.png</file>
161161
<file>themes/default/mIconDelete.png</file>
162162
<file>themes/default/mIconEditable.png</file>
163+
<file>themes/default/mIconFavourites.png</file>
163164
<file>themes/default/mIconFirst.png</file>
164165
<file>themes/default/mIconGeometryLayer.png</file>
165166
<file>themes/default/mIconLast.png</file>
1.25 KB
Loading

src/core/qgsbrowsermodel.cpp

+22-4
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,29 @@ void QgsBrowserModel::addRootItems()
3737
// add favourite directories
3838
QSettings settings;
3939
QStringList favDirs = settings.value( "/browser/favourites", QVariant() ).toStringList();
40-
foreach( QString favDir, favDirs )
40+
// if there are 5 or more items, create a "Favourites" Root item
41+
// perhaps this should be the default?
42+
if ( favDirs.count() >= 5 )
4143
{
42-
QgsDirectoryItem *item = new QgsDirectoryItem( NULL, favDir, favDir );
43-
connectItem( item );
44-
mRootItems << item;
44+
QgsFavouritesItem *item = new QgsFavouritesItem( NULL, tr( "Favourites" ), "" );
45+
if ( item )
46+
{
47+
connectItem( item );
48+
mRootItems << item;
49+
}
50+
}
51+
else
52+
{
53+
foreach( QString favDir, favDirs )
54+
{
55+
item = new QgsDirectoryItem( NULL, favDir, favDir );
56+
if ( item )
57+
{
58+
item->setIcon( QgsFavouritesItem::iconFavourites() );
59+
mRootItems << item;
60+
connectItem( item );
61+
}
62+
}
4563
}
4664

4765
foreach( QFileInfo drive, QDir::drives() )

src/core/qgsdataitem.cpp

+42
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,17 @@ const QIcon &QgsDataCollectionItem::iconDir()
122122
return icon;
123123
}
124124

125+
const QIcon &QgsFavouritesItem::iconFavourites()
126+
{
127+
static QIcon icon;
128+
129+
if ( icon.isNull() )
130+
icon = QIcon( getThemePixmap( "/mIconFavourites.png" ) );
131+
// this icon added by ET, modfied mIconNew and set colour to that of folder icon
132+
133+
return icon;
134+
}
135+
125136
QgsDataItem::QgsDataItem( QgsDataItem::Type type, QgsDataItem* parent, QString name, QString path )
126137
: QObject( parent ), mType( type ), mParent( parent ), mPopulated( false ), mName( name ), mPath( path )
127138
{
@@ -627,3 +638,34 @@ QgsErrorItem::QgsErrorItem( QgsDataItem* parent, QString error, QString path )
627638
QgsErrorItem::~QgsErrorItem()
628639
{
629640
}
641+
642+
QgsFavouritesItem::QgsFavouritesItem( QgsDataItem* parent, QString name, QString path )
643+
: QgsDataCollectionItem( parent, name, path )
644+
{
645+
mType = Collection; //favourites?
646+
mIcon = iconFavourites();
647+
}
648+
649+
QgsFavouritesItem::~QgsFavouritesItem()
650+
{
651+
}
652+
653+
QVector<QgsDataItem*> QgsFavouritesItem::createChildren( )
654+
{
655+
QVector<QgsDataItem*> children;
656+
QgsDataItem* item;
657+
658+
QSettings settings;
659+
QStringList favDirs = settings.value( "/browser/favourites", QVariant() ).toStringList();
660+
661+
foreach( QString favDir, favDirs )
662+
{
663+
item = new QgsDirectoryItem( this, favDir, favDir );
664+
if ( item )
665+
{
666+
children.append( item );
667+
}
668+
}
669+
670+
return children;
671+
}

src/core/qgsdataitem.h

+12
Original file line numberDiff line numberDiff line change
@@ -272,5 +272,17 @@ class QgsDirectoryParamWidget : public QTreeWidget
272272
void showHideColumn();
273273
};
274274

275+
/** Contains various Favourites directories */
276+
class CORE_EXPORT QgsFavouritesItem : public QgsDataCollectionItem
277+
{
278+
Q_OBJECT
279+
public:
280+
QgsFavouritesItem( QgsDataItem* parent, QString name, QString path );
281+
~QgsFavouritesItem();
282+
283+
QVector<QgsDataItem*> createChildren();
284+
static const QIcon &iconFavourites();
285+
};
286+
275287
#endif // QGSDATAITEM_H
276288

0 commit comments

Comments
 (0)