From b91e43af23d56e2c33cb726e062dd9a94e78ef1c Mon Sep 17 00:00:00 2001 From: Radim Blazek Date: Mon, 25 May 2015 23:42:21 +0200 Subject: [PATCH] [GRASS] import icon --- images/images.qrc | 1 + images/themes/default/mIconImport.gif | Bin 0 -> 2966 bytes .../grass/qgsgrassprovidermodule.cpp | 46 ++++++++++++++++++ src/providers/grass/qgsgrassprovidermodule.h | 30 +++++++++++- 4 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 images/themes/default/mIconImport.gif diff --git a/images/images.qrc b/images/images.qrc index 662537fe45a..8807413f9cc 100644 --- a/images/images.qrc +++ b/images/images.qrc @@ -326,6 +326,7 @@ themes/default/mIconFirst.png themes/default/mIconGeometryLayer.png themes/default/mIconInfo.png + themes/default/mIconImport.gif themes/default/mIconLabelQuadrantCenter.svg themes/default/mIconLabelQuadrantOffset.svg themes/default/mIconLast.png diff --git a/images/themes/default/mIconImport.gif b/images/themes/default/mIconImport.gif new file mode 100644 index 0000000000000000000000000000000000000000..be37ec959b13e27b1a31154a312f94c0ac88a712 GIT binary patch literal 2966 zcmb`}`BRg39tZGm!V~gfPO?c*2HgZPJncA)w$3iK*2N?w5km+h;V9uqIT8?<)N&so z0YX9ucmxoTaEOLW@!$rwJUlWoa`x=m z(b3WQ`FXe7y|lFS?Af#D&!4}3{rb(DH><0wYyYQ*yGD{lDiwl#^2iUucKG1X@8SLf z0tB!IwqqZMeJ1eLN3`fA+XD|TpE`6iZ+DNJI~d*&HY@Ji>KLHm7ifoaH@BS<0I2 zujt|v)9QI%#eF=Ub^7Y+-yj3@*3n=yRp+q}Q7yPxd zfidEDdwMyn+@Fo*gtAgX2!AtyNbs=}?4|i8mY~{X^r6DXuvB{c`c9N0^vo8Sj*Y09 zY2X|}VkAu{6^Lr)(&hOpZnsxYiKpipeOHuP>blqGV>A`a4Z`3^86P&@;qBxVTKn&c zMn}h%N(*tjzIn1%4b|x0dTfN+8l#b2b@(uq3IiRAX?3=e+uHe`0anZ@eljx^jG&gp z3raVm(( zl5uvCosslhR=y~eiDYPyETNWp_WJ5-k5@Z*Jjte%Fy7*@yaG)GaokrvJ=93YbH>m_^fI(4 zh1RXI(7S!BYlQ>_zsgtySsM(w*b<>#X~?ZNvIT){lrAR)UO!p7onm?+D_@ez)MR`n z)M7Ili{dKBV>I*btJkhC$h?|rJxv2V_@Pp2`%3eh2OwScM3K|@{(DBzPy8mND>t@tP%aGpgrg}*A@gX4fb z3ngl_&Hp5F1eI0TUC>}F&MhXQn@+Ssb=AiKtJV-q>+YeEY3uWI_C)#Tb}II#X_%QQ zSy3d$r`gdpBCTBQMrU_p(YxxM>A6BTWZL(#e$}TMv3E+Fz@qZu$=f&4jsNIVao2QL z|DQtcnP~o7#5u2wCLB@8uRe&N`vo;MLnahvvm0vKaV&uahXhmlPEyDexHLf6+jk(h zvp|lr(z11u4GgtlN@5mXj=LI%?bx!&Yg$H+v>dJhdWikxnJ;gA7qt)^9jov$;!2$U zfRnM%{7YJU7k(=qj9p#JEryhpx!BgDttzf2hFBWR#@6BhK^5Q!Q@VRFR1s(wI4RN` zz{;0vGML$dR5UI1L`>aW+_@`Q({G5qqN?6OeNPwKqhcEy&=Gc?O!EbbzlNbzcS(aj z|5jg$R$c$Fq>qPIil!_F|G7qsa*Bv`NWGxK(3-P1J#xGq#*YAo~(K{t~h5GNZN0}S_zOvan=hKK_taUGJly-zaoqqfh0xvWQ zbD+`i<>P>#kU+HE*p&g<8Y^_QX7mT6s->KD482KdR40|}#7@Z$nHC&Z$x}6ec~C}T zT##{9>IDAGEOwoG_q>~s)<47^WwG5{+0fKE&l7{O%Obo<`apms)Lid~Al|=@R}EfR zUBi_NOzR-j164z21c&}?7~5DXhX56ksXe_^xHuqzPt&!lQc}}~m|1Zo#>F`9nE|1C z7P)j8P00H(@NU5ecGlUVEUp_uommu}t{B3(_2v#O1SAQuKIm`Q(4!ZAZq8l8#t1=R zUTs~TkHM%npfF#euaEE1W3?7vdmh_lcGj|Ev7>W{I4OfeLvSA-uny**k7bHA f8e|)iHKCRzGW79$<@LyU>GI;O+jnm710VkzPkSSM literal 0 HcmV?d00001 diff --git a/src/providers/grass/qgsgrassprovidermodule.cpp b/src/providers/grass/qgsgrassprovidermodule.cpp index 1574a3e2e93..48d80365cf1 100644 --- a/src/providers/grass/qgsgrassprovidermodule.cpp +++ b/src/providers/grass/qgsgrassprovidermodule.cpp @@ -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 QgsGrassImportItem::actions() @@ -710,6 +751,11 @@ void QgsGrassImportItem::cancel() mImport->cancel(); } +QIcon QgsGrassImportItem::icon() +{ + return mImportIcon.icon(); +} + //------------------------------------------------------------------------- QGISEXTERN int dataCapabilities() diff --git a/src/providers/grass/qgsgrassprovidermodule.h b/src/providers/grass/qgsgrassprovidermodule.h index 836cea5de88..f52f29ee460 100644 --- a/src/providers/grass/qgsgrassprovidermodule.h +++ b/src/providers/grass/qgsgrassprovidermodule.h @@ -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 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 children ) override { Q_UNUSED( children )}; //bool mDeleteAction; QgsGrassImport* mImport; + + private: + static QgsGrassImportItemIcon mImportIcon; }; #endif // QGSGRASSPROVIDERMODULE_H