From dd1778ab3cda894f638a1bd277ea5e766ddc6cb2 Mon Sep 17 00:00:00 2001 From: Karim Abou Zeid Date: Thu, 23 Jul 2015 17:21:14 +0200 Subject: [PATCH] Brought back the shuffle button in the to the song list. --- .../song/ShuffleButtonSongAdapter.java | 116 ++++++++++++++++++ .../SongViewFragment.java | 8 +- .../drawable-hdpi/ic_shuffle_white_24dp.png | Bin 0 -> 361 bytes .../drawable-hdpi/ic_shuffle_white_48dp.png | Bin 627 -> 0 bytes .../drawable-mdpi/ic_shuffle_white_24dp.png | Bin 0 -> 256 bytes .../drawable-mdpi/ic_shuffle_white_48dp.png | Bin 424 -> 0 bytes .../drawable-xhdpi/ic_shuffle_white_24dp.png | Bin 0 -> 378 bytes .../drawable-xhdpi/ic_shuffle_white_48dp.png | Bin 712 -> 0 bytes .../drawable-xxhdpi/ic_shuffle_white_24dp.png | Bin 0 -> 603 bytes .../drawable-xxhdpi/ic_shuffle_white_48dp.png | Bin 1056 -> 0 bytes .../ic_shuffle_white_24dp.png | Bin 0 -> 660 bytes .../ic_shuffle_white_48dp.png | Bin 1428 -> 0 bytes 12 files changed, 120 insertions(+), 4 deletions(-) create mode 100644 app/src/main/java/com/kabouzeid/gramophone/adapter/song/ShuffleButtonSongAdapter.java create mode 100644 app/src/main/res/drawable-hdpi/ic_shuffle_white_24dp.png delete mode 100644 app/src/main/res/drawable-hdpi/ic_shuffle_white_48dp.png create mode 100644 app/src/main/res/drawable-mdpi/ic_shuffle_white_24dp.png delete mode 100644 app/src/main/res/drawable-mdpi/ic_shuffle_white_48dp.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_shuffle_white_24dp.png delete mode 100644 app/src/main/res/drawable-xhdpi/ic_shuffle_white_48dp.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_shuffle_white_24dp.png delete mode 100644 app/src/main/res/drawable-xxhdpi/ic_shuffle_white_48dp.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ic_shuffle_white_24dp.png delete mode 100755 app/src/main/res/drawable-xxxhdpi/ic_shuffle_white_48dp.png diff --git a/app/src/main/java/com/kabouzeid/gramophone/adapter/song/ShuffleButtonSongAdapter.java b/app/src/main/java/com/kabouzeid/gramophone/adapter/song/ShuffleButtonSongAdapter.java new file mode 100644 index 00000000..e4730728 --- /dev/null +++ b/app/src/main/java/com/kabouzeid/gramophone/adapter/song/ShuffleButtonSongAdapter.java @@ -0,0 +1,116 @@ +package com.kabouzeid.gramophone.adapter.song; + +import android.graphics.Typeface; +import android.support.annotation.LayoutRes; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import android.support.v7.app.AppCompatActivity; +import android.view.View; + +import com.afollestad.materialdialogs.ThemeSingleton; +import com.kabouzeid.gramophone.R; +import com.kabouzeid.gramophone.helper.MusicPlayerRemote; +import com.kabouzeid.gramophone.interfaces.CabHolder; +import com.kabouzeid.gramophone.model.Song; + +import java.util.ArrayList; + +/** + * @author Karim Abou Zeid (kabouzeid) + */ +public class ShuffleButtonSongAdapter extends SongAdapter { + private static final int SHUFFLE_BUTTON = 0; + private static final int SONG = 1; + + public ShuffleButtonSongAdapter(AppCompatActivity activity, ArrayList dataSet, @LayoutRes int itemLayoutRes, boolean usePalette, @Nullable CabHolder cabHolder) { + super(activity, dataSet, itemLayoutRes, usePalette, cabHolder); + } + + @Override + protected SongAdapter.ViewHolder createViewHolder(View view) { + return new ViewHolder(view); + } + + @Override + public long getItemId(int position) { + position--; + if (position < 0) return -2; + return super.getItemId(position); + } + + @Override + protected Song getIdentifier(int position) { + position--; + if (position < 0) return new Song(); + return super.getIdentifier(position); + } + + @Override + public int getItemViewType(int position) { + return position == 0 ? SHUFFLE_BUTTON : SONG; + } + + @Override + public void onBindViewHolder(@NonNull final SongAdapter.ViewHolder holder, int position) { + if (holder.getItemViewType() == SHUFFLE_BUTTON) { + if (holder.title != null) { + holder.title.setText(activity.getResources().getString(R.string.action_shuffle_all).toUpperCase()); + holder.title.setTextColor(ThemeSingleton.get().positiveColor); + holder.title.setTypeface(Typeface.create("sans-serif-medium", Typeface.NORMAL)); + } + if (holder.text != null) { + holder.text.setVisibility(View.GONE); + } + if (holder.menu != null) { + holder.menu.setVisibility(View.GONE); + } + if (holder.image != null) { + final int padding = activity.getResources().getDimensionPixelSize(R.dimen.default_item_margin) / 2; + holder.image.setPadding(padding, padding, padding, padding); + holder.image.setColorFilter(ThemeSingleton.get().positiveColor); + holder.image.setImageResource(R.drawable.ic_shuffle_white_24dp); + } + if (holder.separator != null) { + holder.separator.setVisibility(View.VISIBLE); + } + if (holder.shortSeparator != null) { + holder.shortSeparator.setVisibility(View.GONE); + } + } else { + super.onBindViewHolder(holder, position - 1); + } + } + + public class ViewHolder extends SongAdapter.ViewHolder { + + public ViewHolder(@NonNull View itemView) { + super(itemView); + } + + @Override + protected Song getSong() { + if (getItemViewType() == SHUFFLE_BUTTON) return new Song(); + return dataSet.get(getAdapterPosition() - 1); + } + + @Override + public void onClick(View v) { + if (getItemViewType() == SHUFFLE_BUTTON) { + MusicPlayerRemote.openAndShuffleQueue(dataSet, true); + return; + } + if (isInQuickSelectMode()) { + toggleChecked(getAdapterPosition()); + } else { + MusicPlayerRemote.openQueue(dataSet, getAdapterPosition() - 1, true); + } + } + + @Override + public boolean onLongClick(View view) { + if (getItemViewType() == SHUFFLE_BUTTON) return false; + toggleChecked(getAdapterPosition()); + return true; + } + } +} diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/SongViewFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/SongViewFragment.java index 7a17507c..20be0321 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/SongViewFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/SongViewFragment.java @@ -4,14 +4,14 @@ import android.support.annotation.NonNull; import android.support.v7.widget.GridLayoutManager; import com.kabouzeid.gramophone.R; -import com.kabouzeid.gramophone.adapter.song.SongAdapter; +import com.kabouzeid.gramophone.adapter.song.ShuffleButtonSongAdapter; import com.kabouzeid.gramophone.loader.SongLoader; import com.kabouzeid.gramophone.util.PreferenceUtil; /** * @author Karim Abou Zeid (kabouzeid) */ -public class SongViewFragment extends AbsMainActivityRecyclerViewLayoutModeFragment { +public class SongViewFragment extends AbsMainActivityRecyclerViewLayoutModeFragment { public static final String TAG = SongViewFragment.class.getSimpleName(); @@ -23,8 +23,8 @@ public class SongViewFragment extends AbsMainActivityRecyclerViewLayoutModeFragm @NonNull @Override - protected SongAdapter createAdapter() { - return new SongAdapter( + protected ShuffleButtonSongAdapter createAdapter() { + return new ShuffleButtonSongAdapter( getMainActivity(), SongLoader.getAllSongs(getActivity()), getItemLayout(), diff --git a/app/src/main/res/drawable-hdpi/ic_shuffle_white_24dp.png b/app/src/main/res/drawable-hdpi/ic_shuffle_white_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..e7cea3295c33ca4d95db0d7eedc2382a9621e849 GIT binary patch literal 361 zcmeAS@N?(olHy`uVBq!ia0y~yU{C>J4mJh`hKCF@W-u@?8hE-mhE&{od)=F_$v}WD z;Q;UUi*wn7@{^P9EDSq(UADz|=LeQ+ewWmIgSVvC2?=`}X)ma8ur@xsWXer_*J%!% zU-B2Uc6qtVSr)8(q-QUGQQ^>@FK2Hv23%ZlN-}}n&9%AcZ>q(LiCxlMS6YP{H4ep0 z+~3puDUt8o`()i}`Kf#iad`4?p$&)LYEb>a4cEycbISe%YX=Y_sJ%EOm* Rf`Ng7!PC{xWt~$(696>!nYjP} literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/ic_shuffle_white_48dp.png b/app/src/main/res/drawable-hdpi/ic_shuffle_white_48dp.png deleted file mode 100644 index 5b3d814afe3ff62267181a68305f2316beafb022..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 627 zcmeAS@N?(olHy`uVBq!ia0y~yVDJE84i*LmhW}5h&oD4BC?tCX`7$t6sWC7#v@kII zVqjosc)`F>YQVtoDuIE)Y6b&?c)^@qfi?^b3`|Mh?k)`f+xyS#XJBC9EbxddW?hnk zhP!@6hU5z0-uQSXC+o?1xk>e#(qvBi@xRL7y4ssrNTX3mqfw97Lm~5mM{lUxi|ql{ ztobIU@1vF9F#1ezbaii(tyz0g@(II%EzChCFV4Jd6XC5gwVJ^>d6A=}nwTf|Bo51z z$@6vwP*6C7oN-aRyM&pd=&Z;rRICqcyyIPn~_(W-1<=$oTcCg^)rZpS;SM zhfO(rxwExdUL~uZeb`|2@Peak;fe(Y&)M`()N@}se(6yPTRL}wuVU$O#@;Kc$KAD3 z91{BuP5#)@t+K^&v*kMDiP?KtJ)CFiuE{&fIl1iz+Yg1_O{&NJt%_zWu<$c}`Rzzz z<0H$wOX01D88UTx`fkfL-BS7BSmM{=!t~LiPKa@dVR{kYl9@anZHu#}9%Y&t{MYXh zkF*8Lh1jpd9XO|e(0`dP a%y)c!H*$Q-UBtk^z~JfX=d#Wzp$P!~iuA4k diff --git a/app/src/main/res/drawable-mdpi/ic_shuffle_white_24dp.png b/app/src/main/res/drawable-mdpi/ic_shuffle_white_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..1b8351cf5bd2cc28a8d9e67e1a692be25b76943e GIT binary patch literal 256 zcmeAS@N?(olHy`uVBq!ia0y~yV2}V|4mJh`h6m-gKNuJoj(fT|hE&{2{_+36J+rRi z;T5b;A{KBTscwvz(vZfgQ1?MzSYS(ne8|I8BVEOeMvW^4Njei59=%=?#jyDaR|s>5 zm~z68RF(MxvL}-&bR5n82wid9@IXmZ^q|g9wj*T~JnntMlP0f}nDy{_frMY7ox;t6 zARPhq;{{2&2U2%%_g!(F#QKBhKj)F~i#m#$lRmO`bA-IHpQPHgL?yUzg5Hn!&&zUNC1@pbY~915=W>y9>kr_Wm>b85kHi3p^r=85p>Q zL70(Y)*J~221W%>7srr@!*8$q^Br`MIr>rFcSmch@xt!7wq2Y`=TsC6`ReDf-ZBdQ zd@n(9=F75YzbBf_l$5=Z?|xlqLc@L*qv%M#HFKqG&c7~5OS!>dq1etkU-Qn#SC-vj z-#a(D2%ISV)xp7}75HEg6IWn}v1)_rt3Q#f5{u5s8?M^N%G=WMyyovt)(5f=pUJnd zm~`q^HU8-pXk_1bxZ%X_GCqSNW@hIZ-S*DuXNa#mv-W3U9OI%-HUcx#8SD4`*F7*_ zKI!}%@u<2>C**g0R?@qFd|zt6&~~o+eYMhaGH1tD-}9extL(4cd!gdD2RNV4@9Zv1 z5$nBgrg)y4@xfJqgQu6=U7}(Y9B{!>YdfczK;+TV=kmsGGp>LAEjImcy2-UDH8W^ z;Rn+`9Nd3_DMrZd2m94y#cB%Tkv%T*d)_A;&U<7iH_xBY;(zB{dy0C-6pluDVFvD$8Pd%1N`Xp`OL+bWblPrO_^{#q7Bn`GLjEnkH7xa?#3G8 gz#8(Pp7q|u2VRbLU#Fj7U|?YIboFyt=akR{0OH7-umAu6 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ic_shuffle_white_48dp.png b/app/src/main/res/drawable-xhdpi/ic_shuffle_white_48dp.png deleted file mode 100644 index 02ea7875172c9e78b9714bf811da2bc501aacf53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 712 zcmeAS@N?(olHy`uVBq!ia0y~yU`POA4i*Lm29JsRH#0CWC?tCX`7$t6sWC7#v@kII zVqjosc)`F>YQVtoDuIE)Y6b&?c)^@qfi?^b3`|Mh?k)`f+xyS#XJBC9EbxddW?P9T^vIyZoR$j=yxbU;Mm85z1j~M-25BE^b#H|yrRUtKE;2*M;s0^4D1o? z76+^x_%|%*;<^y&{pdw*j?(<}gYsu$iUsSR9bEh5hU90}C!0AL88SZWa@=gl+h?aJ z9q`p=rJAC2KtZn83APAf28K+hgZnQrcsd=7{#owOXE2SQ#Y5oO=YcSap69~C_MXf|9FKp-HVGtXDeBFi@gq{opjBZ0 zeIXXc#6zj?7r&qMsdM)F%0&%zPMoLmISw^AGa1<@on|lLJoQt;!8_o*JEK&SqaB~a z2JL=H1=as-<$c2Er?aeha+-0ls_=hm_C8xRhpf6{5vL8O+6CWyYL{EeapGjZ;*?DdTmHO0;5);>@y9l=D7(TJ zc0n(KcBf5aS@Xl%(7t!WJy~HUpVR&7d;Z7^GWwjCSJJ8eM5cxndhee+46Dq`VCLsoHdbWnDKdcqTQ3}JG?KPWshx*YAUmPQ=G6b z`p??A{C`y93Q{N7bIthqU)cHp<8oWR4RY)e{mg5QGhTbl@Y=HSfc)=wi&x#`%Us03 Pz`)??>gTe~DWM4f#W^8^ diff --git a/app/src/main/res/drawable-xxhdpi/ic_shuffle_white_24dp.png b/app/src/main/res/drawable-xxhdpi/ic_shuffle_white_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..e79444c4385c1d28cf9255dc034cb718c4e4a12a GIT binary patch literal 603 zcmeAS@N?(olHy`uVBq!ia0y~yVDJE84mJh`hS0a0-5D5|lssJ=Ln>~)z3uIH*g%B! zf}cmwuFh$1KST-&F|+BgwXpDtoO0J$s?!`;pyJ*YVCR>!zr1(dQuEx&i%*>2S11-5 zsvGgwm4!*L!+}LfppnBxL9CI3g`*_#)wK|{l7rd7?WgiP7_VB`fAg0Yb`oODdTf$B zn@c6BaSw?TvBZ>=TjI*j#*0B8aa`#fW{Uf-R?_?Cf7oZ<6#p&QF|}HHZI- z*?ooFsS}<(=wQxN)J=c1f?=o9TOUy;i+pC`?YH92u)aJhe3CUieg3t5@0RU~Je$)k zFSXuy;<5)kx{O!KKO0WSn)AKWqSiy8(A`5tevY2X44V_IFRd8*vfFbeEMVGP!;txg zGwN2JNYT#?ZayNrCzNqnT$q?Go%!ZiLctQ_m%rNdWDCA2%ud*GL5`1|bA`hZN5-b3 zjtou5F0vIJ)HE$LY2?}+&~oe|lNXyivxcTj<^ll=?O^k=vtQOXaLrcxwWlCvYux)c zOD6;!S*bEH=;+LD7SZyS11n!=Ju#1&xPZx6T;}>@1@~p|Y$uv|Ow5)OP-hA1{oE^b z>$#aOPv_(2FXHZ^8fxccmQ3c8F;(E4qvSw-?Uy^gIOG#Z3xoCLU=p zDXf{`(oi(}OXj036TMUvROTFY*dD|zRlP)>rO-^c(51m|^}psPFD#OZFGR9WGC9Y% z_w4-b6I2Q({g}}@-+3d4ivm0@k0=Q=F1o6JsCU^O*@Mfh85kHCJYD@<);T3K0RV(g B@EHIA literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ic_shuffle_white_48dp.png b/app/src/main/res/drawable-xxhdpi/ic_shuffle_white_48dp.png deleted file mode 100644 index aaea4dc0e91ae79f73031865bad74d2c6e3b0c14..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1056 zcmeAS@N?(olHy`uVBq!ia0y~yV3+{H94rhB48Hza#taM$3dtTpz6=aiY77hwEes65 z7#J8DUNA6}8Za=tN?>5Hn!&&zUNC1@pbY~915=W>y9>kr_Wm>b85kHi3p^r=85p>Q zL70(Y)*J~22Id)_E{-7;x8C0M&J%VNXn1Jf#N80F@WG9~Bc>bpnbue`O*rDmbVn(D zrX^Dnr=kbrCa0W4_U;p2b9!uz-@dDI35~9P_$$RX{Q8t#+y4n})Z50S(SU@MaBvdN zaOzu%|K3}iHaks+(_~rF0m)!@mnMhlHVxWJh6}Xi;$55^PTS1uaB0Z<{6kTQA?w*k zrx2M8(|-O%j~qlNZ=D~luEl4vAnDBvj|Y-ZW_zTFe)drbVZW(#>zOeBn$SyS9otsk z+`2=2v*VS1_X_j%{#T~EOL)v)Vc%~tK`oH0pJ{?vpj1EC1hzn}exV5_f!62s4a$i8;K7MUBCBLEP1|!{m$(j?|z9pCOZJzSqf3FrGH?M2I&yx<7+21NF)uB`KcmAN@btmUOCi>& zhtBuew7Grw^x=uJ)sqKC$(SFVae{Ak{>@&z!u}b=1 zb?lZyYQ-)g-yIRB7xRVmsrSB6>o*FBocGV=_?x@uBKTL>_?s^}@3S-F;9?Gy!mpZiT{`Wu$%ao)E>i8&;l(9C zC(6rxth+EnIL_kH!COBa-zg(!hz2F3tb)XO=kkZWd2yV)k>USX1_lNOPgg&ebxsLQ E01vgg4*&oF diff --git a/app/src/main/res/drawable-xxxhdpi/ic_shuffle_white_24dp.png b/app/src/main/res/drawable-xxxhdpi/ic_shuffle_white_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..da327b9f4ba78e92e16c44f7f5659a5926de3966 GIT binary patch literal 660 zcmeAS@N?(olHy`uVBq!ia0y~yU`POA4mJh`hDS5XEf^S>qCH(4Ln>~)z2ob5C_vh7DgW~wyw{&uwQ5%8 zsa_=x2L>rd4hLlh#taq(hF%7i1%eF>CQJeiZ6Xi0&8xN5-eA6a<)=T6j3yuX-!{t5 zRXD)#<#BkQfC9t0qu-kXWD+#?v9~;8_&t$5OLU>dfmOY)MHwF%A24P*6DeTqRIIaK zY#pjXz(xk_nf5+r;fb0FV}1^`uI@5=2(BN?qr6gkCrT@T?A}Is zo%>-}?Y?mN=ICcf*Qos~fA+&taNC*Hox#V>H-0#^XHK+Ioz9_}lp3jqNgsn1-muAW z^EU|mmuk7&dfbs&;b_03#OM2;H!yU3Ocu~!bb37fN1U1{lMI9NpD7#x3_c%&6%Q~N z95er1Y&wTzh;tmfeJd-TkBD z`j*}E*MAq7|83p|HwLB)91aXj0W6sDfBCGu$^i|2!CQ7S7#J8BJYD@<);T3K0RVl% B7H0qe literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ic_shuffle_white_48dp.png b/app/src/main/res/drawable-xxxhdpi/ic_shuffle_white_48dp.png deleted file mode 100755 index 08b8ba5a0c31d22f98d45223f40f86897472ecf1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1428 zcmeAS@N?(olHy`uVBq!ia0y~yU^oE694rhB3_q?e>0w}CP)PO&@?~JCQe$9fXklRZ z#lXPO@PdJ%)PRBERRRNp)eHs(@q#(K0&N%=7?_g0-CY>|xA&jf&%nUIS>O>_%)r1c z48n{Iv*t)JFtGA?x;TbZ+_WVWQl3e>T2jXY8LUv z+sVQ0h~fdEqx_dxzX+37!`h#x6%?2x&c!n^@*a5c=cn)lhMx2Dtr=MlJo!^8 zEWqG%e!j8eV}{L7&re@a*r3;U?#~SwPAT?`h23QbSy;|9rV0n_;nJGf@TAsZCyUAZ zmaUv(A4GR=VVuG#_Ccoo>VM`E&Q(vA@0MHO9-wRgP}ESjY1L27^_;H-LeBehE^rc1 zw%2T6a-8#L3&R_hjh}>>4TNH>A3^9joa~sq+9zA7m5WRDiZN+SbygG)6qq4aTR-BKX%c}{ntmszo ztz(EdoSWNV#c}B=d&BD;OL-^EQpl}i*wHxq7Q;f8=O0U+9e;PE`^ZmrmO~7REc^w% zI`#}}7BA*C&}K}pV|cM(F|PqPWBxym!yBScr8KSiyg4V_c%H)NKQ_Nvd(}?Z*e82+?m zJS3Lq@%;H7UDeos-4$-z(oJ9XMrMApKc-r9$Vi;=_1ezNPs|C*5B6G?->NyZ(ehJ! zeYzn-=~H#(2XPA~s@Y%7R{y5zmHA0n@Pqy(@5%BXl=ilLo-AOpKVWzJ(zZ|EIj4PG zedxXZzJT2?|AcZ{MO?qPMj2$2(dXp*kAK9l{9U}hW&3K+>Goe{rph&)oqRmSJjZLM z{hSA~ek_7_j`W^w>SB2LdAX{@6Y;xS*7yB+$dX@Jq}KHRGdGjYqUhj%CM?mPPcvSb zT`$)p{KNL)>+J=#)sCtSzdj#Vl{lx*dco&k19pE?dLq;_2U!lIj7HjA?M#K zmhBtO)-7Oi`26!QXWZi}_Dvsusxnx7I`40wxu4;HQq>LjiS~0Ii25a`Ce>9jto!qj z<^IO%D91F0eSaRZTwr~0Mt*jKn1V_D-tViADl4!)I43{3L8!sL-iFDEq4&>5ju#9i zpN=akFkd(&-`v2JAgI4FT&up6Nr~a?pHR*WhLX?UIrk+@H)<&Rck%fWF2)tlnruE#-orJ^@4)o>0;K{r zh66&oggHK)_5b2mVZ#{z@9g0jo0%A