[GRASS] import icon

This commit is contained in:
Radim Blazek 2015-05-25 23:42:21 +02:00
parent d40d481bd3
commit b91e43af23
4 changed files with 76 additions and 1 deletions

View File

@ -326,6 +326,7 @@
<file>themes/default/mIconFirst.png</file>
<file>themes/default/mIconGeometryLayer.png</file>
<file>themes/default/mIconInfo.png</file>
<file>themes/default/mIconImport.gif</file>
<file>themes/default/mIconLabelQuadrantCenter.svg</file>
<file>themes/default/mIconLabelQuadrantOffset.svg</file>
<file>themes/default/mIconLast.png</file>

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -678,7 +678,40 @@ QIcon QgsGrassRasterItem::icon()
return QgsDataItem::icon();
}
//----------------------- QgsGrassImportItem ------------------------------
QgsGrassImportItemIcon::QgsGrassImportItemIcon()
: QObject()
, mCount( 0 )
, mMovie( 0 )
{
// QApplication as parent to ensure that it is deleted before QApplication
mMovie = new QMovie( QApplication::instance() );
mMovie->setFileName( QgsApplication::iconPath( "/mIconImport.gif" ) );
mMovie->setCacheMode( QMovie::CacheAll );
connect( mMovie, SIGNAL( frameChanged( int ) ), SLOT( onFrameChanged() ) );
}
void QgsGrassImportItemIcon::onFrameChanged()
{
mIcon = QIcon( mMovie->currentPixmap() );
}
void QgsGrassImportItemIcon::addListener()
{
mCount++;
mMovie->setPaused( mCount == 0 );
}
void QgsGrassImportItemIcon::removeListener()
{
mCount++;
mMovie->setPaused( mCount == 0 );
}
//----------------------- QgsGrassImportItem ------------------------------
QgsGrassImportItemIcon QgsGrassImportItem::mImportIcon;
QgsGrassImportItem::QgsGrassImportItem( QgsDataItem* parent, const QString& name, const QString& path, QgsGrassImport* import )
: QgsDataItem( QgsDataItem::Layer, parent, name, path )
@ -687,6 +720,14 @@ QgsGrassImportItem::QgsGrassImportItem( QgsDataItem* parent, const QString& name
{
setCapabilities( QgsDataItem::NoCapabilities ); // disable fertility
setState( Populating );
connect( &mImportIcon, SIGNAL( frameChanged( int ) ), SLOT( emitDataChanged() ) );
mImportIcon.addListener();
}
QgsGrassImportItem::~QgsGrassImportItem()
{
mImportIcon.removeListener();
}
QList<QAction*> QgsGrassImportItem::actions()
@ -710,6 +751,11 @@ void QgsGrassImportItem::cancel()
mImport->cancel();
}
QIcon QgsGrassImportItem::icon()
{
return mImportIcon.icon();
}
//-------------------------------------------------------------------------
QGISEXTERN int dataCapabilities()

View File

@ -157,17 +157,42 @@ class QgsGrassRasterItem : public QgsGrassObjectItem
bool mExternal;
};
// icon movie
class QgsGrassImportItemIcon : public QObject
{
Q_OBJECT
public:
QgsGrassImportItemIcon();
QIcon icon() { return mIcon; }
void addListener();
void removeListener();
public slots:
void onFrameChanged();
signals:
void frameChanged();
private:
void resetMovie();
int mCount;
QMovie * mMovie;
QIcon mIcon;
};
// item representing a layer being imported
class QgsGrassImportItem : public QgsDataItem, public QgsGrassObjectItemBase
{
Q_OBJECT
public:
QgsGrassImportItem( QgsDataItem* parent, const QString& name, const QString& path, QgsGrassImport* import );
~QgsGrassImportItem();
//virtual void setState( State state ) override {
// QgsDataItem::setState(state);
//} // do nothing to keep Populating
virtual QList<QAction*> actions() override;
virtual QIcon icon() override;
public slots:
virtual void refresh() override {}
@ -178,6 +203,9 @@ class QgsGrassImportItem : public QgsDataItem, public QgsGrassObjectItemBase
virtual void refresh( QVector<QgsDataItem*> children ) override { Q_UNUSED( children )};
//bool mDeleteAction;
QgsGrassImport* mImport;
private:
static QgsGrassImportItemIcon mImportIcon;
};
#endif // QGSGRASSPROVIDERMODULE_H