Skip to content

Commit b91e43a

Browse files
committed
[GRASS] import icon
1 parent d40d481 commit b91e43a

File tree

4 files changed

+76
-1
lines changed

4 files changed

+76
-1
lines changed

images/images.qrc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -326,6 +326,7 @@
326326
<file>themes/default/mIconFirst.png</file>
327327
<file>themes/default/mIconGeometryLayer.png</file>
328328
<file>themes/default/mIconInfo.png</file>
329+
<file>themes/default/mIconImport.gif</file>
329330
<file>themes/default/mIconLabelQuadrantCenter.svg</file>
330331
<file>themes/default/mIconLabelQuadrantOffset.svg</file>
331332
<file>themes/default/mIconLast.png</file>

images/themes/default/mIconImport.gif

2.9 KB
Loading

src/providers/grass/qgsgrassprovidermodule.cpp

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -678,15 +678,56 @@ QIcon QgsGrassRasterItem::icon()
678678
return QgsDataItem::icon();
679679
}
680680

681+
682+
//----------------------- QgsGrassImportItem ------------------------------
683+
QgsGrassImportItemIcon::QgsGrassImportItemIcon()
684+
: QObject()
685+
, mCount( 0 )
686+
, mMovie( 0 )
687+
{
688+
// QApplication as parent to ensure that it is deleted before QApplication
689+
mMovie = new QMovie( QApplication::instance() );
690+
mMovie->setFileName( QgsApplication::iconPath( "/mIconImport.gif" ) );
691+
mMovie->setCacheMode( QMovie::CacheAll );
692+
connect( mMovie, SIGNAL( frameChanged( int ) ), SLOT( onFrameChanged() ) );
693+
}
694+
695+
void QgsGrassImportItemIcon::onFrameChanged()
696+
{
697+
mIcon = QIcon( mMovie->currentPixmap() );
698+
}
699+
700+
void QgsGrassImportItemIcon::addListener()
701+
{
702+
mCount++;
703+
mMovie->setPaused( mCount == 0 );
704+
}
705+
706+
void QgsGrassImportItemIcon::removeListener()
707+
{
708+
mCount++;
709+
mMovie->setPaused( mCount == 0 );
710+
}
711+
681712
//----------------------- QgsGrassImportItem ------------------------------
682713

714+
QgsGrassImportItemIcon QgsGrassImportItem::mImportIcon;
715+
683716
QgsGrassImportItem::QgsGrassImportItem( QgsDataItem* parent, const QString& name, const QString& path, QgsGrassImport* import )
684717
: QgsDataItem( QgsDataItem::Layer, parent, name, path )
685718
, QgsGrassObjectItemBase( import->grassObject() )
686719
, mImport( import )
687720
{
688721
setCapabilities( QgsDataItem::NoCapabilities ); // disable fertility
689722
setState( Populating );
723+
724+
connect( &mImportIcon, SIGNAL( frameChanged( int ) ), SLOT( emitDataChanged() ) );
725+
mImportIcon.addListener();
726+
}
727+
728+
QgsGrassImportItem::~QgsGrassImportItem()
729+
{
730+
mImportIcon.removeListener();
690731
}
691732

692733
QList<QAction*> QgsGrassImportItem::actions()
@@ -710,6 +751,11 @@ void QgsGrassImportItem::cancel()
710751
mImport->cancel();
711752
}
712753

754+
QIcon QgsGrassImportItem::icon()
755+
{
756+
return mImportIcon.icon();
757+
}
758+
713759
//-------------------------------------------------------------------------
714760

715761
QGISEXTERN int dataCapabilities()

src/providers/grass/qgsgrassprovidermodule.h

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,17 +157,42 @@ class QgsGrassRasterItem : public QgsGrassObjectItem
157157
bool mExternal;
158158
};
159159

160+
// icon movie
161+
class QgsGrassImportItemIcon : public QObject
162+
{
163+
Q_OBJECT
164+
public:
165+
QgsGrassImportItemIcon();
166+
167+
QIcon icon() { return mIcon; }
168+
void addListener();
169+
void removeListener();
170+
171+
public slots:
172+
void onFrameChanged();
173+
174+
signals:
175+
void frameChanged();
176+
177+
private:
178+
void resetMovie();
179+
int mCount;
180+
QMovie * mMovie;
181+
QIcon mIcon;
182+
};
183+
160184
// item representing a layer being imported
161185
class QgsGrassImportItem : public QgsDataItem, public QgsGrassObjectItemBase
162186
{
163187
Q_OBJECT
164188
public:
165189
QgsGrassImportItem( QgsDataItem* parent, const QString& name, const QString& path, QgsGrassImport* import );
166-
190+
~QgsGrassImportItem();
167191
//virtual void setState( State state ) override {
168192
// QgsDataItem::setState(state);
169193
//} // do nothing to keep Populating
170194
virtual QList<QAction*> actions() override;
195+
virtual QIcon icon() override;
171196

172197
public slots:
173198
virtual void refresh() override {}
@@ -178,6 +203,9 @@ class QgsGrassImportItem : public QgsDataItem, public QgsGrassObjectItemBase
178203
virtual void refresh( QVector<QgsDataItem*> children ) override { Q_UNUSED( children )};
179204
//bool mDeleteAction;
180205
QgsGrassImport* mImport;
206+
207+
private:
208+
static QgsGrassImportItemIcon mImportIcon;
181209
};
182210

183211
#endif // QGSGRASSPROVIDERMODULE_H

0 commit comments

Comments
 (0)