9 changes: 7 additions & 2 deletions src/core/qgsbrowsermodel.h
Original file line number Diff line number Diff line change
Expand Up @@ -92,19 +92,24 @@ class CORE_EXPORT QgsBrowserModel : public QAbstractItemModel
public slots:
// Reload the whole model
void reload();

void beginInsertItems( QgsDataItem *parent, int first, int last );
void endInsertItems();
void beginRemoveItems( QgsDataItem *parent, int first, int last );
void endRemoveItems();

protected:
void addFavouriteDirectory( QString favDir );
void removeFavourite( const QModelIndex &index );

void updateProjectHome();

protected:
// populates the model
void addRootItems();
void removeRootItems();

QVector<QgsDataItem*> mRootItems;
QgsFavouritesItem *mFavourites;
QgsDirectoryItem *mProjectHome;
};

#endif // QGSBROWSERMODEL_H
36 changes: 29 additions & 7 deletions src/core/qgsdataitem.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,7 @@ void QgsDataItem::populate()

QApplication::setOverrideCursor( Qt::WaitCursor );

QVector<QgsDataItem*> children = createChildren( );
QVector<QgsDataItem*> children = createChildren();
foreach ( QgsDataItem *child, children )
{
// initialization, do not refresh! That would result in infinite loop (beginInsertItems->rowCount->populate)
Expand Down Expand Up @@ -301,7 +301,7 @@ void QgsDataItem::refresh()

QApplication::setOverrideCursor( Qt::WaitCursor );

QVector<QgsDataItem*> items = createChildren( );
QVector<QgsDataItem*> items = createChildren();

// Remove no more present items
QVector<QgsDataItem*> remove;
Expand Down Expand Up @@ -448,7 +448,7 @@ QgsDirectoryItem::~QgsDirectoryItem()
{
}

QVector<QgsDataItem*> QgsDirectoryItem::createChildren( )
QVector<QgsDataItem*> QgsDirectoryItem::createChildren()
{
QVector<QgsDataItem*> children;
QDir dir( mPath );
Expand Down Expand Up @@ -692,17 +692,16 @@ QgsFavouritesItem::~QgsFavouritesItem()
{
}

QVector<QgsDataItem*> QgsFavouritesItem::createChildren( )
QVector<QgsDataItem*> QgsFavouritesItem::createChildren()
{
QVector<QgsDataItem*> children;
QgsDataItem* item;

QSettings settings;
QStringList favDirs = settings.value( "/browser/favourites", QVariant() ).toStringList();

foreach ( QString favDir, favDirs )
{
item = new QgsDirectoryItem( this, favDir, favDir );
QgsDataItem *item = new QgsDirectoryItem( this, favDir, favDir );
if ( item )
{
children.append( item );
Expand All @@ -712,6 +711,29 @@ QVector<QgsDataItem*> QgsFavouritesItem::createChildren( )
return children;
}

void QgsFavouritesItem::addDirectory( QString favDir )
{
QSettings settings;
QStringList favDirs = settings.value( "/browser/favourites" ).toStringList();
favDirs.append( favDir );
settings.setValue( "/browser/favourites", favDirs );

addChildItem( new QgsDirectoryItem( this, favDir, favDir ), true );
}

void QgsFavouritesItem::removeDirectory( QgsDirectoryItem *item )
{
if ( !item )
return;

QSettings settings;
QStringList favDirs = settings.value( "/browser/favourites" ).toStringList();
favDirs.removeAll( item->path() );
settings.setValue( "/browser/favourites", favDirs );

deleteChildItem( item );
}

//-----------------------------------------------------------------------
QStringList QgsZipItem::mProviderNames = QStringList();
QVector<dataItem_t *> QgsZipItem::mDataItemPtr = QVector<dataItem_t*>();
Expand Down Expand Up @@ -849,7 +871,7 @@ char **VSIReadDirRecursive1( const char *pszPath )
return papszOFiles;
}

QVector<QgsDataItem*> QgsZipItem::createChildren( )
QVector<QgsDataItem*> QgsZipItem::createChildren()
{
QVector<QgsDataItem*> children;
QString tmpPath;
Expand Down
5 changes: 4 additions & 1 deletion src/core/qgsdataitem.h
Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,7 @@ class CORE_EXPORT QgsDirectoryItem : public QgsDataCollectionItem

virtual bool equal( const QgsDataItem *other );

virtual QWidget * paramWidget();
virtual QWidget *paramWidget();

/* static QVector<QgsDataProvider*> mProviders; */
//! @note not available via python bindings
Expand Down Expand Up @@ -290,6 +290,9 @@ class CORE_EXPORT QgsFavouritesItem : public QgsDataCollectionItem

QVector<QgsDataItem*> createChildren();

void addDirectory( QString favIcon );
void removeDirectory( QgsDirectoryItem *item );

static const QIcon &iconFavourites();
};

Expand Down
11 changes: 5 additions & 6 deletions src/core/qgsproject.h
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ class CORE_EXPORT QgsProject : public QObject
*/
//@{
bool read( const QFileInfo & file );
bool read( );
bool read();
//@}


Expand Down Expand Up @@ -166,7 +166,7 @@ class CORE_EXPORT QgsProject : public QObject
*/
//@{
bool write( const QFileInfo & file );
bool write( );
bool write();
//@}


Expand Down Expand Up @@ -307,12 +307,12 @@ class CORE_EXPORT QgsProject : public QObject
void setTopologicalEditing( bool enabled );

/**Convenience function to query topological editing status
@note added in version 1.9*/
@note added in version 1.9*/
bool topologicalEditing() const;

/** Return project's home path
@return home path of project (or QString::null if not set)
@note added in version 2.0 */
@return home path of project (or QString::null if not set)
@note added in version 2.0 */
QString homePath() const;

protected:
Expand All @@ -330,7 +330,6 @@ class CORE_EXPORT QgsProject : public QObject
bool addLayer( const QDomElement& layerElem, QList<QDomNode>& brokenNodes, QList< QPair< QgsVectorLayer*, QDomElement > >& vectorLayerList );

signals:

//! emitted when project is being read
void readProject( const QDomDocument & );

Expand Down