From 4a63606c8446420c85c656ce29e61d4ddf8f7d35 Mon Sep 17 00:00:00 2001 From: Leo Franchi Date: Thu, 20 Oct 2011 23:11:35 -0400 Subject: [PATCH] Draw a speaker next to the currently playing playlist --- data/images/now-playing-speaker-dark.png | Bin 0 -> 2926 bytes resources.qrc | 1 + src/sourcetree/items/genericpageitems.cpp | 10 ++++++++++ src/sourcetree/items/genericpageitems.h | 1 + src/sourcetree/items/playlistitems.cpp | 17 +++++++++++++++++ src/sourcetree/items/playlistitems.h | 2 ++ src/sourcetree/items/sourcetreeitem.h | 1 + src/sourcetree/sourcedelegate.cpp | 18 ++++++++++++++++++ src/sourcetree/sourcedelegate.h | 2 +- 9 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 data/images/now-playing-speaker-dark.png diff --git a/data/images/now-playing-speaker-dark.png b/data/images/now-playing-speaker-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..33a36fe496c9c97a2abc62ad7a28407cdaf30179 GIT binary patch literal 2926 zcmV-!3z77RP)EX>4Tx0C?J+Q+HUC_ZB|i_hk=OLfG)Jmu!ImA|tE_$Pihg5Rw34gb)%y#f69p zRumNxoJdu~g4GI0orvO~D7a@qiilc^Ra`jkAKa(4eR}Wh?fcjJyyu+f{LXpL4}cL8 zCXwc%Y5+M>g*-agACFH+#L2yY0u@N$1RxOR%fe>`#Q*^C19^CUbg)1C0k3ZW0swH; zE+i7i;s1lWP$pLZAdvvzA`<5d0gzGv$SzdK6adH=0I*ZDWC{S3003-xd_p1ssto|_ z^hrJi0NAOM+!p}Yq8zCR0F40vnJ7mj0zkU}U{!%qECRs70HCZuA}$2Lt^t5qwlYTo zfV~9(c8*w(4?ti5fSE!p%m5%b0suoE6U_r4Oaq`W(!b!TUvP!ENC5!A%azTSOVTqG zxRuZvck=My;vwR~Y_URN7by^C3FIQ2mzyIKNaq7g&I|wm8u`(|{y0C7=jP<$=4R(? z@ASo@{%i1WB0eGU-~POe0t5gMPS5Y!U*+Z218~Oyuywy{sapWrRsd+<`CT*H37}dE z(0cicc{uz)9-g64$UGe!3JVMEC1RnyFyo6p|1;rl;ER6t{6HT5+j{T-ahgDxt-zy$ z{c&M#cCJ#6=gR~_F>d$gBmT#QfBlXr(c(0*Tr3re@mPttP$EsodAU-NL?OwQ;u7h9 zGVvdl{RxwI4FIf$Pry#L2er#=z<%xl0*ek<(slqqe)BDi8VivC5N9+pdG`PSlfU_o zKq~;2Moa!tiTSO!5zH77Xo1hL_iEAz&sE_ z2IPPo3ZWR5K^auQI@koYumc*P5t`u;w81er4d>tzT!HIw7Y1M$p28Tsh6w~g$Osc* zAv%Z=Vvg7%&IlKojszlMNHmgwq#)^t6j36@$a16tsX}UzT}UJHEpik&ja)$bklV;0 zGK&0)yhkyVfwEBp)B<%txu_o+ipHRG(R4HqU4WLNYtb6C9zB4zqNmYI=yh}eeTt4_ zfYC7yW{lZkT#ScBV2M~7CdU?I?5=ix(HVZgM=}{CnA%mPqZa^68Xe5gFH?u96Et<2 zCC!@_L(8Nsqt(!wX=iEoXfNq>x(VHb9z~bXm(pwK2kGbOgYq4YG!XMxcgB zqf}$J#u<$v7REAV@mNCEa#jQDENhreVq3EL>`ZnA`x|yIdrVV9bE;;nW|3x{=5fsd z4#u(I@HyF>O3oq94bFQl11&!-vDRv>X03j$H`;pIzS?5#a_tuF>)P*iaGgM%ES>c_ zZ94aL3A#4AQM!e?+jYlFJ5+DSzi0S9#6BJCZ5(XZOGfi zTj0IRdtf>~J!SgN=>tB-J_4V5pNGDtz9Qc}z9W9tewls;{GR(e`pf-~_`l(K@)q$< z1z-We0p$U`ff|9c18V~x1epY-2Q>wa1-k|>3_cY?3<(WcA99m#z!&lx`C~KOXDpi0 z70L*m6G6C?@k ziR8rC#65}Qa{}jVnlqf_npBo_W3J`gqPZ95>CVfZcRX1&S&)1jiOPpx423?lIEROmG(H@JAFg?XogQlb;dIZPf{y+kr|S? zBlAsGMAqJ{&)IR=Ejg5&l$@hd4QZCNE7vf$D7Q~$D=U)?Nn}(WA6du22pZOfRS_cv~1-c(_QtNLti0-)8>m`6CO07JR*suu!$(^sg%jf zZm#rNxnmV!m1I@#YM0epR(~oNm0zrItf;Q|utvD%;#W>z)qM4NZQ9!2O1H}G>qzUQ z>u#*~S--DJy=p<#(1!30tsC);y-IHSJr>wyfLop*ExT zdYyk=%U1oZtGB+{Cfe4&-FJKQ4uc&PJKpb5^_C@dOYIJXG+^@gCvI%WcHjN%gI&kHifN$EH?V5MBa9S!3!a?Q1 zC*P)gd*e{(q0YnH!_D8Bf4B7r>qvPk(mKC&tSzH$pgp0z@92!9ogH2sN4~fJe(y2k zV|B+hk5`_cohUu=`Q(C=R&z?UQbnZ;IU-!xL z-sg{9@Vs#JBKKn3CAUkhJ+3`ResKNaNUvLO>t*-L?N>ambo5Q@JJIjcfBI^`)pOVQ z*DhV3dA;w(>>IakCfyvkCA#(acJ}QTcM9%I++BK)c(44v+WqPW`VZ=VwEnSWz-{38 zV8CF{!&wjS4he^z{*?dIhvCvk%tzHDMk9@nogW_?4H~`jWX_Y}r?RIL&&qyQ|9R_k ztLNYS;`>X_Sp3-V3;B!BzpitVu*cR5;6}Q_&HHAPh@- zuHzt%;Dn68Anen;pNChgczEWEk|w1`3p~Kx0RWQl3R%#N;@REd?pW@sk^}&h+5`Y* z#?G4=N^LSTN;(@z0?9*|jm_+cOKl>_lfg(FE9d)VBzVHUtt_>v)F!?$=)%*>W`!fp z@DWo6Pi;=O5c`iUai&@qWNzP9-VM_2&vY&uT?XktahJqC-m&^{$ube+R~y=s;x=ad Y02%LpxbBr#zyJUM07*qoM6N<$f;Fd@VgLXD literal 0 HcmV?d00001 diff --git a/resources.qrc b/resources.qrc index 47fcac6de..f994d9456 100644 --- a/resources.qrc +++ b/resources.qrc @@ -13,6 +13,7 @@ data/images/track-placeholder.png data/images/now-playing-panel.png data/images/now-playing-speaker.png + data/images/now-playing-speaker-dark.png data/images/pause-pressed.png data/images/pause-rest.png data/images/play-pressed.png diff --git a/src/sourcetree/items/genericpageitems.cpp b/src/sourcetree/items/genericpageitems.cpp index 9c859dbb8..d901fe4dc 100644 --- a/src/sourcetree/items/genericpageitems.cpp +++ b/src/sourcetree/items/genericpageitems.cpp @@ -21,6 +21,7 @@ #include "utils/tomahawkutils.h" #include "utils/logger.h" #include "viewmanager.h" +#include "audio/audioengine.h" using namespace Tomahawk; @@ -81,3 +82,12 @@ GenericPageItem::setText( const QString &text ) emit updated(); } +bool +GenericPageItem::isBeingPlayed() const +{ + if ( dynamic_cast< PlaylistInterface* >( m_get() ) ) + { + return AudioEngine::instance()->currentTrackPlaylist() == dynamic_cast< PlaylistInterface* >( m_get() ); + } + return false; +} diff --git a/src/sourcetree/items/genericpageitems.h b/src/sourcetree/items/genericpageitems.h index 72612b48a..a262b5d31 100644 --- a/src/sourcetree/items/genericpageitems.h +++ b/src/sourcetree/items/genericpageitems.h @@ -38,6 +38,7 @@ public: virtual bool willAcceptDrag( const QMimeData* data ) const; virtual QIcon icon() const; virtual int peerSortValue() const { return m_sortValue; } // How to sort relative to peers in the tree. + virtual bool isBeingPlayed() const; void setText( const QString& text ); void setSortValue( int value ) { m_sortValue = value; } diff --git a/src/sourcetree/items/playlistitems.cpp b/src/sourcetree/items/playlistitems.cpp index 613ab76ff..7785eceef 100644 --- a/src/sourcetree/items/playlistitems.cpp +++ b/src/sourcetree/items/playlistitems.cpp @@ -30,6 +30,7 @@ #include "utils/logger.h" #include "dropjob.h" #include "source.h" +#include "audio/audioengine.h" using namespace Tomahawk; @@ -96,6 +97,14 @@ PlaylistItem::IDValue() const return m_playlist->createdOn(); } +bool +PlaylistItem::isBeingPlayed() const +{ + if ( ViewManager::instance()->pageForPlaylist( m_playlist ) ) + return AudioEngine::instance()->currentTrackPlaylist() == ViewManager::instance()->pageForPlaylist( m_playlist )->playlistInterface(); + return false; +} + Qt::ItemFlags PlaylistItem::flags() const @@ -419,3 +428,11 @@ DynamicPlaylistItem::activateCurrent() return 0; } +bool +DynamicPlaylistItem::isBeingPlayed() const +{ + if ( ViewManager::instance()->pageForDynPlaylist( m_dynplaylist ) ) + return AudioEngine::instance()->currentTrackPlaylist() == ViewManager::instance()->pageForDynPlaylist( m_dynplaylist )->playlistInterface(); + return false; +} + diff --git a/src/sourcetree/items/playlistitems.h b/src/sourcetree/items/playlistitems.h index f3d41acce..dad5da151 100644 --- a/src/sourcetree/items/playlistitems.h +++ b/src/sourcetree/items/playlistitems.h @@ -39,6 +39,7 @@ public: virtual bool setData(const QVariant& v, bool role); virtual int peerSortValue() const; virtual int IDValue() const; + virtual bool isBeingPlayed() const; virtual SourceTreeItem* activateCurrent(); @@ -74,6 +75,7 @@ public: virtual QIcon icon() const; virtual SourceTreeItem* activateCurrent(); + virtual bool isBeingPlayed() const; private slots: void onDynamicPlaylistLoaded( Tomahawk::DynamicPlaylistRevision revision ); diff --git a/src/sourcetree/items/sourcetreeitem.h b/src/sourcetree/items/sourcetreeitem.h index 8b9dcbfb8..814cc0f2d 100644 --- a/src/sourcetree/items/sourcetreeitem.h +++ b/src/sourcetree/items/sourcetreeitem.h @@ -68,6 +68,7 @@ public: virtual DropTypes supportedDropTypes( const QMimeData* mimeData ) const { Q_UNUSED( mimeData ); return DropTypesNone; } virtual void setDropType( DropType type ) { m_dropType = type; } virtual DropType dropType() const { return m_dropType; } + virtual bool isBeingPlayed() const { return false; } /// don't call me unless you are a sourcetreeitem. i prefer this to making everyone a friend void beginRowsAdded( int from, int to ) { emit beginChildRowsAdded( from, to ); } diff --git a/src/sourcetree/sourcedelegate.cpp b/src/sourcetree/sourcedelegate.cpp index 3bb852677..f24ba7080 100644 --- a/src/sourcetree/sourcedelegate.cpp +++ b/src/sourcetree/sourcedelegate.cpp @@ -33,6 +33,7 @@ #include #include #include +#include