From ed090d24930db88325ce8e9c5e0b94ec6d84a65a Mon Sep 17 00:00:00 2001 From: Rodrigo Mendez Date: Fri, 27 Oct 2023 01:05:39 -0600 Subject: [PATCH] WIP --- assets/background.png | Bin 18897 -> 20829 bytes assets/balanceHandle.png | Bin 931 -> 936 bytes assets/balanceHandle_p.png | Bin 935 -> 940 bytes assets/eq_off.png | Bin 1092 -> 1096 bytes assets/eq_off_p.png | Bin 967 -> 970 bytes assets/eq_on.png | Bin 993 -> 993 bytes assets/eq_on_p.png | Bin 966 -> 970 bytes assets/next.png | Bin 1030 -> 1021 bytes assets/next_p.png | Bin 974 -> 970 bytes assets/open.png | Bin 1002 -> 997 bytes assets/open_p.png | Bin 972 -> 971 bytes assets/pause.png | Bin 1086 -> 1090 bytes assets/pause_p.png | Bin 949 -> 948 bytes assets/pl_add.png | Bin 1018 -> 1016 bytes assets/pl_add_p.png | Bin 1028 -> 1025 bytes assets/pl_close.png | Bin 1022 -> 1027 bytes assets/pl_close_p.png | Bin 1035 -> 1041 bytes assets/pl_off.png | Bin 1090 -> 1090 bytes assets/pl_off_p.png | Bin 965 -> 969 bytes assets/pl_on.png | Bin 987 -> 989 bytes assets/pl_on_p.png | Bin 969 -> 971 bytes assets/play.png | Bin 1099 -> 1107 bytes assets/play_p.png | Bin 959 -> 966 bytes assets/posHandle.png | Bin 963 -> 963 bytes assets/posHandle_p.png | Bin 985 -> 983 bytes assets/prev.png | Bin 1113 -> 1117 bytes assets/prev_p.png | Bin 971 -> 967 bytes assets/repeat_off.png | Bin 1184 -> 1183 bytes assets/repeat_off_p.png | Bin 965 -> 970 bytes assets/repeat_on.png | Bin 1184 -> 1183 bytes assets/repeat_on_p.png | Bin 965 -> 970 bytes assets/scroll_handle.png | Bin 930 -> 938 bytes assets/scroll_handle_p.png | Bin 931 -> 938 bytes assets/shuffle_off.png | Bin 1272 -> 1286 bytes assets/shuffle_off_p.png | Bin 1005 -> 1013 bytes assets/shuffle_on.png | Bin 1272 -> 1286 bytes assets/shuffle_on_p.png | Bin 1005 -> 1013 bytes assets/status_paused.png | Bin 884 -> 879 bytes assets/status_playing.png | Bin 936 -> 934 bytes assets/status_stopped.png | Bin 880 -> 879 bytes assets/stop.png | Bin 1066 -> 1079 bytes assets/stop_p.png | Bin 934 -> 944 bytes assets/visualizationBackground.png | Bin 1062 -> 1131 bytes assets/volumeHandle.png | Bin 929 -> 934 bytes assets/volumeHandle_p.png | Bin 935 -> 940 bytes controlbuttonswidget.cpp | 51 +++++++++ controlbuttonswidget.h | 1 + controlbuttonswidget.ui | 92 +++++++-------- desktopbasewindow.cpp | 16 +++ desktopbasewindow.h | 3 + desktopbasewindow.ui | 30 ++--- desktopplayerwindow.cpp | 28 +++++ desktopplayerwindow.h | 3 + desktopplayerwindow.ui | 52 ++++----- playerview.cpp | 88 +++++++++++++++ playerview.h | 1 + playerview.ui | 175 ++++++++++++++++------------- scale-skin.sh | 2 +- 58 files changed, 374 insertions(+), 168 deletions(-) diff --git a/assets/background.png b/assets/background.png index 2a7b24ac963a1a8d7e9323f10e34f764c49cfabd..b30efdbdf69d2c5a283ed8afed9733b4ee16b30b 100644 GIT binary patch literal 20829 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 diff --git a/assets/balanceHandle.png b/assets/balanceHandle.png index c5338f7a9a601ba75e62870f55de2cca9573c010..5f6565f195c99792a068c12b33de229b932b9c8d 100644 GIT binary patch delta 144 zcmZ3?zJgt`Gr-TCmrII^fq{Y7)59eQNLv804hu7oJoG+o!A38q_8=HF;Su1k7@qbnKXym!5=ziHYvn8xM^JWD#bxHK0syE;yC>Fu2oGodj%BWlyfh7PW-wx$UuE{M5) oj9#R$a?!#S4IzP!8%;_a7HJ&K6k_n%GHKgWaaoSdtxU>{0B0*IXaE2J diff --git a/assets/balanceHandle_p.png b/assets/balanceHandle_p.png index a0bc2fa3adfdc22da3234e306bc4659beeb6e2a0..907b3f58dcbf286216f38abe16857039c910ba6a 100644 GIT binary patch delta 175 zcmZ3^zJ^_~Gr-TCmrII^fq{Y7)59eQNLv804hu7oJoG+o!A38q_8=HF-raM$B@XbnKXy*D;9$M_FC?+)rKzV3C`;WSvUY zf#pjddL}pr1O;4R)oyrZG|R)tpka-lH}gaeskm7eoP-!=oO~{6>pWK!Xu4#HYeb22 Yer|4RUI~M9QEFmIYKp?qEC2ui delta 146 zcmZ3(zMNgLGr-TCmrII^fq{Y7)59eQNNWMHA`3H+jMY+Ey-|^oDTz~@RhnlZ!^!DD zL0?Z7#}JM4$q5M}F6>M^JWD#bxHK0sF0k-ibj;1`*ogy2SUq?;GBONAcryc2_AgcC vx)d1_aDOR*t90)Gk{ z1REm;Wm}N|006H^L_t(o!|m3|4udcZMNv9X(t*-aI{yEM_F3}6ijp))W>dYhf(4g_ zmB>xAfEBD^iT1z5H;$yYg%%hu$9E2-)j@zgFkTlA5&Q8$<=$=l2#nXqPpStSihmS8 z+j#O2F+MwP2gtZ@yf=OgG9|B? vSr5(_&&Mxtg;Cui6Wn1^4|u{$y_GEct@;4t+4vVcg>NCiBL{Q4GJ0x0000DNk~Le0000*0000a2m=5B0OZ0LhmC0065=L_t(Y$JLcV62c%1MOy>`5ef=ax&J}U#F1f&E-WtMTV=t2i-eg! zO=HaS%orP#{M>Tb3uHOxLI{GEg-38a)l%<=#kQa*z(&CUw5B?BV?_oriW diff --git a/assets/eq_off_p.png b/assets/eq_off_p.png index c8f98fc08fa2980261d58e0be5dfebc2b7fbdc02..67837ea973a364fe772efe9532081f67100dde25 100644 GIT binary patch delta 175 zcmX@keu`bOGr-TCmrII^fq{Y7)59eQNXG!N0Shyb%=^yZwNa6ssh&%kMOv9HHF_dY zFw4`$F~s9|a)JaaGYbpr)G0lk40?Lafjc)AY6u>0Se8t2-eXZRWqLE?uJA&)%L+k#Tmqgv?cwaLMXIWkHho(V#HahB ZbL}a%?jnY%_C^9nZN(pLUc#iz2mr<0HFE#} delta 175 zcmX@bew#0{17DF~s9|a)N>s2bY$n;QCp1r+Pb?czE>mngc5}91k3rFfA<3E@J9*XGWJ@%p4P5 z9$Z(WCa@-oHIU^pi*oyC$j;c}&2Cqf6&_7~Ghm%{P&SZE6ui)4kB+IX526-n@@VnGpbIg+ciM delta 190 zcmV;v073uZ2jK@HiBL{Q4GJ0x0000DNk~Le0000*0000a1Oos704)pZ<*^|U0)Gh? z1se>Z0LhmC004MNL_t(I%VS``4;TfN6d0(chS?YoU|?~fu9{F>Ab=q)y`1W5%E166 z9?{X!3L|NxrgG-YS*w5ykQ9WB=%Bfp4volnw|2s;L10w#`uqojwY!v%Uf&0ewhBQ~&?~ diff --git a/assets/eq_on_p.png b/assets/eq_on_p.png index 04a98ec99e5bc1131f64156231cce5ad32016af1..d40d4c37ca390ee80f9c5d3d2a7cfad6d8ca0069 100644 GIT binary patch delta 175 zcmX@ceu`bOGr-TCmrII^fq{Y7)59eQNXG!N4hu7olzMz<)kZ~jrg|=E7HMU+)aZ#o z!7NV~#}JR>$q5MpA}I>2JVsBwypFjrh)+Mb;?50=DI5toHW5>WAKyHJ*&$yl9Ii~|y<4>H_cZLv60K+~PIL#6HT>Sm{%lY~4Ys{=Hb Y=bm*pe#&r)!Jwj6vNCM*VkTuq02|&o+5i9m delta 175 zcmX@bevDnQGr-TCmrII^fq{Y7)59eQNV@{DA`3H+tUXp8wo#Ftsh(4uRhnlZ!^!DD z!8A`7#}JFt$q5M}DGD4bmb-c0lu$P)T)0ju`EtM1nZ8hYqudsNno Z&^!hPwiCk~kiBL{Q4GJ0x0000DNk~Le000130000;1Oos70Dx^ToUtJm0)Gk{ z1REm;Wm}N|0053jL_t(Y$L-cZ4Zt7_h2dJj!Yp6`3$=g+EX)EHurLb~H5x+7Vaa;f zlGkMa?XmB&6A+mT!EV3Cn<=6gk#KrUevkRb?_lmJVAf5PGb%1cxvcpO8!PvOC-;R1 z_lD)n7ak{`@Z5gz{ldj^p{KMiTqJCHPGMoW#IqqB972q23Z0LhmC005UsL_t(I%VS``4;Td*sG@>N2@hakHl~&e7hJ%BK~OYwD5?kz4TVa$ zhCZEY1Z7iI1)k!RYAq@l7zD-AZ~`i+5EM2J#S5sSqNAf@=B!mSVPH25 XoPhyqr~m*Wch2`zeCZ^!+5#g1(xyo| diff --git a/assets/next_p.png b/assets/next_p.png index 55fd2fdebdbf793dc2c1caf7867b477a442417fa..e64eaf51a9e8b1af27c8440adde3fa1f7d47ff42 100644 GIT binary patch delta 182 zcmV;n07?JO2g(N_iBL{Q4GJ0x0000DNk~Le000130000;1Oos70Dx^ToUtJR0)Gk{ z1REm;Wm}N|003}FL_t(Y$L-e93BVu>1W;GF6|#aWbOrZcrIcW!P)G}^!@l_ zQp(C_0W1knD;GA~(wOn#?1>A%i@nc)AGa3#X#I{G2Uo(KYhmYV*gr!h>?cY%fC|2D kyx52O*f=rpU}%!ybHTfl|M3o>um*EzYOa0|v#SCl0glQ@fdBvi delta 186 zcmX@bevVzSGr-TCmrII^fq{Y7)59eQNILzSU2SgqhFT-eMduI{vNX$-4R(=siGz6Be(0v0keJ_zdE krN!dPF_rI10Hf}#j|^U+K-XoSyztXtRpz|S%bAoJ0h2H~oB#j- diff --git a/assets/open.png b/assets/open.png index aff40487ebe54921133a7aad125c86b94c23e476..5ae2062e96edf9cc68efeeeac83b7030c811e4de 100644 GIT binary patch delta 194 zcmV;z06qWe2jvGLiBL{Q4GJ0x0000DNk~Le000130000$1Oos70Bk<3@v$Kg0)Gk{ z1REm;Wm}N|004YRL_t(Y$JN$B4Zt7_K+#&j!Yp867O+qYSik}nP`UK5WH2^*S@QSK z@7AWNh`SK{_G`Sk5{Z$7_hlj}sgkkk->_=VBWGiyR?o@!q$B6zEA2TI&yNcmzeUA5 wjgIrJ$Du$lWJR6W^O~@*y-LXu2NIW3Yio6x83;ZADuubH{X36Av&RA>0U?o3J^%m! delta 199 zcmaFL{)%0(Gr-TCmrII^fq{Y7)59eQNIL4drj-o zrPGZJ4@II@Fjz4$J@8xD$km~&!0<|B)#?H#|9X=^#~Q6AF0Ij0QVS+_6{Q3$aS;~X z(l2hqDtk4=z<{Hx?Ga0ec+ka*mc>_3&D_Bd&?TkC@OEOy-PP{R(>5PsQf34I%~eAx diff --git a/assets/open_p.png b/assets/open_p.png index e0579c4a022eac3634c444a7ddd5dbb501476e02..2cc828b25f02dc2ef966dd0b5c3c2659266ccbba 100644 GIT binary patch delta 183 zcmV;o07(DL2g?T`iBL{Q4GJ0x0000DNk~Le000130000$1Oos70Bk<3@v$KR0)Gk{ z1REm;Wm}N|0041GL_t(Y$L-d^4S*mFM&YjTuh11(!4=ql71M)8st8{69el^;yAU8? z_V-$n50Xk@VfSU2I}hh2#WYXY*sRvf**Iv_ax&g%=3IQFEvMq%WhLXgsQCKLq2qe0 lyD1P1IieF-dT@{+c>j3J^gUhyp9gAA!04t*KC`I;BLU$CO8Wo+ delta 184 zcmX@jeuiDKGr-TCmrII^fq{Y7)59eQNILM#jv*GOlM^K390EKztph|%%ofbzQWX`Caqw)Mr8OZpJ;CYG1&>xH=L`nswV?(Z z+L#y*X>JK%EMZ|eFxQD$RKVSV;fiKRc;iH`j73b^3wCj_e!1hNEV}T7!jV=rtqd9c jCZ(1`Q>3&O9F>%FSjok}apnG=c?Pn@`!=s&Qf34IRo9wOpV{OtN=7UGKw zB~F|;@jvmbKQ7`M`&x(-C%$I*oQ5U7+IEtL2d zE~s2GTICu(Jn6?H*9y1DM?f&B9s^g@NJ3=;Trh=|YOZ*|y}(P-X*S+g4hBLOcy BYI*~c0)Gh? z1se>Z0LhmC006N`L_t(Y$L-e34#FT11<-;ZATJT*|36iPpj|XHLN$}fU34+YoW-S! zS(dRNgfPZ~$l=PVH))p;LMa8PoIg(~g)zoCpUN*4wn}@L7KIRLvhmWuluOR;@TF|` zGL@-(Q#t0}g`_}gcPjs)NGTyJ>qk?mJ#6&?K}>0Qwo#Fhsh&%kMOv9HHF_dY zFv`=#F~s9|a)JaaGaC!*R1PLb$K=NcSHyUpY~@(6#3W*>@V7TBif(D9H*_a_V%z^I zK;ghS=}@~>H6cG&d4oh|6S;&sNW+ ZfVN1MxJHyX=jZ08=9MsPUc@BK2ms)#J30UW delta 175 zcmdnOzLj0EGr-TCmrII^fq{Y7)59eQNV@{D84ELzOcwPl-KfaORL?2SD$TQy;pB9n zV6>-;V~EA+pGadRl7O6XqU=n~M2Ua|DpjfR4~&b+1!kAxl+ol7=_? diff --git a/assets/pl_add.png b/assets/pl_add.png index 14e0f3addba82f4398cc2f1cc6998833204739f6..b917ac11a335eb0b8bd9b8463f819ce2798acef4 100644 GIT binary patch delta 210 zcmV;@04@Le2lxjeiBL{Q4GJ0x0000DNk~Le0001F0000;1Oos70P>pS7O+qYvw#IG%mU^Hhi1vLWZk%Y z7XF1Ec!xHGl!!uLj_!yMFiEMCaGu2)o7igISIy!GGO3l?2t-t~GqB_UO&iWM MYtWk(v)2M60g*9P+5i9m delta 212 zcmeyt{)=6)Gr-TCmrII^fq{Y7)59eQNP7dZ84ELzti4ltY@?zuQ$43Rt2EC-hLh8Q zf_Egyy zr($9_H8;<(T-C#MYE{_UC_c6DwM?g)Ry;KcXA5L@da7VH#XCDS!684D`BCr;Bcv L1KG`2nUom;vdTxF diff --git a/assets/pl_add_p.png b/assets/pl_add_p.png index 3e2267c0c70fe827eb573ff0581483e64d585e1f..9ab2feee2c005343d85da8b818e0eb7e614d8305 100644 GIT binary patch delta 213 zcmZqSXyj1r4DfU3<&xrJU|`_&^l%9R(kVdf!NLqAKP~dr+NdbWRL>>NBCX7p8a)vx z*zf7$7~*j}IUzwnBqYd4jnRN7NmozL%WI)Z!@{@mIES*>Aa@82Iu+Mb(_s5 zXkK!1+awbb#a6h`WYHGY1G5SaJ94kdoIB0z%ho%4Paj~o#FS+seA8EAO%%hD4;{OW NYu^TLe#oTE2mnn^MUemi delta 216 zcmV;}04M)}2!seBiBL{Q4GJ0x0000DNk~Le0000>0000s1Oos70Datf#<3w80)Gh? z1se>Z0LhmC005FnL_t(Y$75h%6jV|+CIAc=sH}{|MM*W300^M6G9?v|vb6MaTp%r@ zgX+p=P5~(^uUdr@EH9^>vfVfU(0MdewjF1fj4Gp!vYInzj)TcFXMnOG>Nw4nLDYay zIfxDA(pni9&|BGn_!Op$$XK9?vM52F$SGC^DWd7D3{n}TWzkjH-3tsrWgV>qYCx(g S0|4U7wg>@;u8XtY0wVz=T2Cqf diff --git a/assets/pl_close.png b/assets/pl_close.png index 0b6a3185114920f81dc0a7e2fd3298f0a16454ac..c78cf65ea26398bc8e4d1981008f68a5a503cc85 100644 GIT binary patch delta 224 zcmV<603ZMU2ZIP9iBL{Q4GJ0x0000DNk~Le0001F0000;1Oos70P>1<AQmPg%3u0wV#wnN@lK delta 219 zcmV<103`o|2>u5liBL{Q4GJ0x0000DNk~Le0000>0000s1Oos70Datf#<3v~0)Gh? z1se>Z0LhmC005OqL_t(Y$75h%6jV|+#t&Q^7^tj_H58~U6b}eCPD`M&G9^{8vhZ?T zz}Up4qk+oGTwDn$vz$p=WmT(IEr-gkTD6LP${@0E1|5`vodk3qgru7?h^ycZqm#07 z6o=7C*+BSo0OE8&QtyD|Q*2<^C@X^&(ZRT@A{r=zR7SwUeERLtq*H*{gM}GLep=+KwNX)$sh&%kMOv9HHF_dY zaK5LDV~EG`tJfWQ8w_|@FGS5~jXJ<2wjqFfYeQ=!h-IL^VM1!pgq){W{`>2^w9biL zAP~rLX0qaw8E1??Cw0Uhsu31^>y{F0J6R%s(Jo#W(bhL}pC}(t{9CqY;$tt}tniK{ zQ*7r8dg|6Ny99OJXP9hSlPf!Qhi!^+VfD|mN8WnBRL`8<<#>uC{l}hNs;OJV4ytPk drcP>qcJMyS`X?-Tj0+Z@+go{P^9v?rMgWk~S>XTx delta 223 zcmV<503iR72#W|IiBL{Q4GJ0x0000DNk~Le0000>0000s1Oos70Datf#<3w80)Gh? z1se>Z0LhmC005auL_t(Y$75h%6jV|+CIAc=sH}{|MM*W300^M6G9?v|vb6MaTp%r@ zgX+p=P5~(^uUdr@EH9^>vfVfU(0MdewjF1f&|2A7@+fDkO)|M;V&K=%Z`^d@ni>aXKKWmp=IvQbZFhL#V3^QW>RX(N)>q3k*PI Z9jydvK&mPO0C3U6>xvmEF|+OhBLPjcO+f$v diff --git a/assets/pl_off.png b/assets/pl_off.png index 7d1c3118d2bb14d158447f128af788ba8aa8f99d..91ab2969a02c604b1391ca8c08a132ab105a9d25 100644 GIT binary patch delta 239 zcmVOR*t90)Gk{ z1REm;Wm}N|005~;L_t(o!|m3&4udcdgkf@F5=h8>z5jz|R$3$rt%)5iO*CJFOz}6< zY*o!*0ZW*p{V(yABk8Sy@$d1C18LO|paI77;$dX?zl{vZ0LhmC005~;L_t(Y$JLd~4#FT1MGGRJP-*2Q{r?Y@454YLiCSEYXF(<;a~5|o zcNqF0giuO5B|o>Ej*@p7V>m76@5zgtb0LJ360JpSC_k4V+DZLQp$-R0-+`E=VlTejN^#Pas!Mp6EM&7 p9kA9q=e+kJgc#!kNGZumKK&Y4mIagL3FBclqd>;j{<9wgBLT0NV3_~_ diff --git a/assets/pl_off_p.png b/assets/pl_off_p.png index ecb265bceb15a1365f327babd2cab055278dc6f6..91dced6cde227026dd877d9a6c58a9747e5bd96b 100644 GIT binary patch delta 175 zcmX@gev)0WGr-TCmrII^fq{Y7)59eQNXG!N0Shyb%=^yZwNa6ssh&%kMOv9HHF_dY zFw@h;F~s9|a)JaaGZPD|q{NgdJ)BIcs^ZfRuDElj!nc=;cssqgzs$X2qyl#&SPePpQGWOj?DGdR9A3r68u3O>~bWJYg)InC; akD)gc0{Iwz#u~4<621Kn!{)_IN{j%8FgkJo delta 175 zcmX@few1CYGr-TCmrII^fq{Y7)59eQNV@{D3JWuk)a8ElbfY3WQ$43Rt2EC-hLh8Q zf~lS^jv*GOlM^JCIRrE~dft=}4+tt;xK1kha=;vg8#7*I^%OEkt!QM?oS?|Ta_E?Y zi?eA?X6DPM3Z{pSeF=8%sn!TN9LL8Z@cn?N)XGNY6;c~kuUO~iIkn)|!f8_C?1z5N amC9n!Si0irv2M2WKno>HHm_!qV*~)@a6B;p diff --git a/assets/pl_on.png b/assets/pl_on.png index fb5383e8e4db95274f0a2354df6e1eb100a7b5d3..25bff37d264ef5978a83a02565f1aa12de8278ea 100644 GIT binary patch delta 186 zcmcc3ewSUbGr-TCmrII^fq{Y7)59eQNXG!N0Shyb%=^yZwNX)ksh&%kMOv9HHF_dY zu*B2FF~s9|a)N>s2bY$n;QCp1r+Pb?czE>mngc5}91k3rFfA<3E@J9*XU2}ZjBE;3 zD>UYFvaAksoTB{ULa^VWaQ2v=S_Tc3qBG^*oSMk!WO?LtbEKsq>#GMLd|EFqcQ7>j l?_98;+uL$t!UoN7B~BhKuBQz9?*vU>#9@%Mc?Xj+BLL{KJXHVy delta 184 zcmV;p07w7b2ipfBiBL{Q4GJ0x0000DNk~Le0000*0000a1Oos704)pZ<*^|U0)Gh? z1se>Z0LhmC0044HL_t(I%VS``4;TfN6d0(chS?YoU|?~fu9{F>Ab=q)y`1W5%E180 z=m3J&P#~hAn#!3oXRQLMX$_^H8e-f-p_-~yKmc(MoTQN&IDo1FyNVWS@MH@rt6^Xe m6idSisH#R##HAcBprRTjf`Dpj00{5WQCjq8Z^yH`0wV#AlR&~UWF!@)IPbBEn5wNgamrTqsYL;f b{!XE05mT5MUi}DF5Ioe*cy{wLCS^tdXaYA2 delta 175 zcmX@jev)0WGr-TCmrII^fq{Y7)59eQNV@{D3JWuk)a8ElbfY3WQ$43Rt2EC-hLh8Q zf|;H!jv*GOlM@m|R2Wz!+Ez%ZrY6TYcph!tmDS_xT-cP5ylS=KG2V=YY(gs>*q8+j zq?rYIuXZe5x^#N;6$9zZ{=A0o76$ZISPD4YVOGyv!p65C>%h82yQEY@54~)U%8HTU Zd|sZlf{`I1WfyOw43`SS=9NrJi~x?!Hl+Xn diff --git a/assets/play.png b/assets/play.png index 5725278306657b4d389fb00b598724be38882186..fa3bdb487c970a2bd7e7c0f2521f23916e62c38c 100644 GIT binary patch delta 268 zcmV+n0rURL2-655iBL{Q4GJ0x0000DNk~Le000170000;2m=5B08Dmb=dmF)0)Gk{ z1REm;Wm}N|0072GL_t(o!|mAH3c@fDMbTI_t@peC|EZpl2}DfOq)b5M?DwvD7+T6W z*PsRJPz(EC@TFnmtq}2Pd~Hxzrbj&@PW;z#uhrrMlIJ#vcs;&FHA7;2a-qaW@leT- z>V*=|;w3|7FO+x|&kZ5o77st3V_f(S5x2opsM$h^`%*N8?-B8NcnM0}2CqR=c=p3Z z+=U~IMa0W+Ne%*oQ6Dc6@h@CZIWl_V-U}t3#1H6*PEluc(XQG}yK7xkuL=0jo``r7 Se*rO{iDARR2Vk=(10w<7eQ>e> delta 260 zcmV+f0sH>b2+If|iBL{Q4GJ0x0000DNk~Le0000*0000s2m=5B0H)=nbg>~c0)Gh? z1se>Z0LhmC006#8L_t(Y$L-eH4#FT1KvBTT)`Gb4|DP%jsU{S=fYHHtpF8Ja+B8E* zU6fMBSS9jyWmj65?Ya)9vfo}@3g=u1@mD^qaA=Jpr3_ChrSL0S>qYCKyxa>iB{pNN z+6z8q#@etKd`i~(0VV$Tr%K=V%~UDLeBoYjDB1Z$8HS+=WoEuPWpO@H^55>am9k?O ztwP``l0`k=G#Vw$hbx>{bl(dm#Ta9)J&ZZ$j?f7@Ll=mR2`CI-A@4mV}>0Qwo#Fhsh&%kMOv9HHF_dY zFvruyF~sBe+iM3o4=9KE9>jv*e$lM@uUIk+Y*&tG7oHIbvImz6a(rft@-3l~flHEt}d{26eCp9wa ZfVN1MxJHyX=jZ08=9MsP-oPZx2mk{nIc@*| delta 175 zcmX@iewbacGr-TCmrII^fq{Y7)59eQNQVHiGz&A36!6~ay-`tssh(4uRhnlZ!^!DD z!6;7`#}JFt$q5QV23$g`CxtBa@oH(@v~fWP_uDCLZA%}rAA9!HBy`raoF4flOD{)c zy0OD>nAoCBMDX;+R>LKG`nS zni8UC99){dG?`^iq?-EN&6)fclx}1m{CK(L@zPM=-xo5n4TCrD{b-sRR(PrS*VjA8 bJ^vb7{bJUVoUs3-#%E>6X^J43U%sZ{uV9 zXD+>1T%lHH(CgQA`eU=vEbV!gffE{U&T!yKTf3+^Df#u?r!5E0cy0-;dA4AIP+`Ni buKpbY+!-q*7}#SggSkU5t=znYNtqDVWg=4!o*AzTypu#&JQTqbn)8p+6gwKQ93xvnwxv6mS z&V;AoSx~~q;fx;wbx_22NVty^?xqLg=Q~$^+EgY! Zo+o+_RJez~0Q+;5QC#gVr?WN#BLNc|e8d0% delta 271 zcmV+q0r39a2-yfBiBL{Q4GJ0x0000DNk~Le0000*0000s2m=5B0H)=nbg>~f0)Gh? z1se>Z0LhmC007BJL_t(Y$L-fm4}%~K24G<-A0ivV^#A|UbsC5xGi0zVmFzwA(4^0y zTuRfFg%Cn1EkwSqTyg`mZQFKThfwK1&$blC80Y-2{8(W=(OA@kK_LWm-oG?5MM{}$ z2IX)sh?T8VjS`3>Wf+DNDSIM+FJG7xs7WQg7feb7)uHU6YLoz-R0*e2|C*?YT**6j z(JIY)6^X2XqLf0Vz&u>xtRUk!qEfWhSD)J&W6U&7)>`M>-DjR>_)S5DTaf#}8!yZ9 V+zTS*0r#F${-l|xle0PlBLSZna&Q0u diff --git a/assets/prev_p.png b/assets/prev_p.png index 72f1a9a126b2abf228b39485f053307b8cf2dac6..12b5214538f08e1344faa666f6eb0baed8a87b6e 100644 GIT binary patch delta 179 zcmV;k08IbO2ge5?iBL{Q4GJ0x0000DNk~Le000170000;1Oos70Evc==CL6G0)Gk{ z1REm;Wm}N|003=CL_t(Y$L-d!4Zt7}13*^r3SNN~eg*blC5q4|G!dkTVoSKf=)R!h zOWFA?0H*5&zrIP@YbH24?oYIykke6*pWy0@_WFM=YS{g13o<0 hg|RDh;MF%Q#jk~OEh_u~zaf=qWCLJ0KeMO;BLOtG4BJMc^UNBQ$k7m*(1JF+$E*-K5V8om5V0N$Ea*Mhhe1V#U_t-E5zxa}88s$gLEYd~3C$lv z0v4<$m^fJQ|AI3i1^F?(pXab({eOeBi54voSJZ;K!3DU2X@;DzXn|O;`e4}&xF}}9 z-vnKY=2K9HOaHtr=sj4AgRlj^3d%*Jd7)rI{UD(OQmn{=dO-@&rA<-+3;GW(Va3)! z<3`xR4)*N8j&K4R&v0Q^xUoAt;3-(pd+-GhE1m#xKLl+6000?uMObu0Z?lI3838){ BeRKc- delta 303 zcmV+~0nq-R37`ofiBL{Q4GJ0x0000DNk~Le0000~0000j2m=5B00)@7`mrHr0)Gh? z1se>Z0LhmC007`gL_t(Y$K}?`4uUWcKvCpXH$&bWq>-1FeN&NC=Ih2(EUT0xFJU zis=6Dz~P(=A?Tvwy%nMdm6Wo78h`E|C#?j9Jz{or1qkn4yX3LKpOguV!&X_}s}EX!a$tMWWA zisFJ@v9c_ys)Dty>l@ZI%^hpow(GiwiVpe&Eyd{A^BaMi0000PbVXQnL$ieg8Ue!Z Bf1v;X diff --git a/assets/repeat_off_p.png b/assets/repeat_off_p.png index dfc214aeaf3473c069a060640feb0796e6e4730f..8e98d2a4e018929a64aa1e23f6dcc8bff1470508 100644 GIT binary patch delta 179 zcmX@geu`bOGr-TCmrII^fq{Y7)59eQNEZOH4GS}n^a)YU->AsKRL>>NBCX7p8a)vx znCt1{7~*j}IYEN;FdGM#)p7-vO^#7g z9qm(Q81hK#N%i(#WKOBb@M&ghc~Wq>W9EcTo;iwZ1TC{4`#y0FQ?@f$RcMeUA|mro dDo|To=)i>w91LQ{Q3X-VJAC$SUc{u#2mm%-I8Fcn delta 175 zcmX@bew1CYGr-TCmrII^fq{Y7)59eQNQVHiE(FH6}yk_z|uc^Hg=X%&L&B;`lz#_VIf6$bU#2~4Nr2(8V8(p)PMjYG_rlnzYz)SGw aWQ7I$f*ABz4)4%Dy)c4-Ve?8RMMePZL^y^3 diff --git a/assets/repeat_on.png b/assets/repeat_on.png index 14cf25e0118eb787d78f56c060b94f04d9f2e62c..394bc728308b32b47e586153b04d278d55e098de 100644 GIT binary patch delta 303 zcmV+~0nq-S37-ieiBL{Q4GJ0x0000DNk~Le0001R0000y2m=5B0Ewi|Zm}U}0)Gk{ z1REm;Wm}N|007@fL_t(o!|mAF3WG2Zg<-o`ySG}q@B90|Vb8!628kAF##)%~CWx5- zCYX>Q$k7m*(1JF+$E*-K5V8om5V0N$Ea*Mhhe1V#U_t-E5zxa}88s$gLEYd~3C$lv z0v4<$m^fJQ|AI3i1^F?(pXab({eOeBi54voSJZ;K!3DU2X@;DzXn|O;`e4}&xF}}9 z-vnKY=2K9HOaHtr=sj4AgRlj^3d%*Jd7)rI{UD(OQmn{=dO-@&rA<-+3;GW(Va3)! z<3`xR4)*N8j&K4R&v0Q^xUoAt;3-(pd+-GhE1m#xKLl+6000?uMObu0Z?lI3838){ BeRKc- delta 303 zcmV+~0nq-R37`ofiBL{Q4GJ0x0000DNk~Le0000~0000j2m=5B00)@7`mrHr0)Gh? z1se>Z0LhmC007`gL_t(Y$K}?`4uUWcKvCpXH$&bWq>-1FeN&NC=Ih2(EUT0xFJU zis=6Dz~P(=A?Tvwy%nMdm6Wo78h`E|C#?j9Jz{or1qkn4yX3LKpOguV!&X_}s}EX!a$tMWWA zisFJ@v9c_ys)Dty>l@ZI%^hpow(GiwiVpe&Eyd{A^BaMi0000PbVXQnL$ieg8Ue!Z Bf1v;X diff --git a/assets/repeat_on_p.png b/assets/repeat_on_p.png index b7416818552bba29f72c6b1e7071753aea449b08..80a786da36a616136be79d89bc65e7fda643064a 100644 GIT binary patch delta 179 zcmX@geu`bOGr-TCmrII^fq{Y7)59eQNEZOH4GS}n^a)YU->AsKRL>>NBCX7p8a)vx znCt1{7~*j}IYEN;FdGM#)p7-vO^#7g z9qm(Q81hK#N%i(#WKOBb@M&ghc~Wq>W9EcTo;iwZ1TC{4`#y0FQ?@f$RcMeUA|mro dDo|To=)i>w91LQ{Q3X-VJAC$SUc{u#2mm%-I8Fcn delta 175 zcmX@bew1CYGr-TCmrII^fq{Y7)59eQNQVHiE(FH6}yk_z|uc^Hg=X%&L&B;`lz#_VIf6$bU#2~4Nr2(8V8(p)PMjYG_rlnzYz)SGw aWQ7I$f*ABz4)4%Dy)c4-Ve?8RMMePZL^y^3 diff --git a/assets/scroll_handle.png b/assets/scroll_handle.png index 359b104debb378e54c05480215ba669d58d16626..ff33fa2460014acc27963788ccd4eea5250fa506 100644 GIT binary patch delta 140 zcmZ3)zKUJ3Gr-TCmrII^fq{Y7)59eQNGkxb2MaThO#S@o!$w6erWh`17HMU+)aZ#o zL3d9V#}JFt$q5U%1X`F?Rg;s8SYu+G8XY_}b$e?XFI@QaY0H)i7XllBkns?cm)8QG nD;FL2F=%{tbf~nfWNKCS^tdV>K(o delta 132 zcmZ3*zKC71Gr-TCmrII^fq{Y7)59eQNJ{{*84ELz)c^0&yHSygDTGs;RhnlZ!^!DD zL3>XZ#}JM4$q5QV23$@JlQtRF^>t@wWK0N(GGg@0sHlv}dZCeSQ8*>U*;(0&qhQ9A gO9vM0k&t%}xFNw;P|VQCKgVs?&*S}@+nJOZ0eEmHod5s; diff --git a/assets/scroll_handle_p.png b/assets/scroll_handle_p.png index 6005d3e0bc5cb8627b7416bddf4aa79429373343..2db429ba4e2cbc248c703fd4ea1dd3fe0c66f289 100644 GIT binary patch delta 143 zcmZ3?zKUJ3Gr-TCmrII^fq{Y7)59eQNGkxb2MaThO#S@o!$w7Rrg$!C7HMU+)aZ#o zK`&1i#}JFt$q5dOO-(#0oEirkHyZwA($ib$kdQNHn%h2yj1`lDqM|ZhtT+IK42g`% q$pLIy`s(ovQ+_Hqcy`(}ekyVlacE;;aJleeW5F`-9h)1NloxNT!$F*_!xW+cAednvgzsOb|z&;02sC;RsaA1 diff --git a/assets/shuffle_off.png b/assets/shuffle_off.png index 3fe26fa123a6a48683ed6be4bd7ec88172cfd313..5aa4c274dc77124d9d17d8aedfea6a545180bf08 100644 GIT binary patch delta 379 zcmV->0fhee35E(GiBL{Q4GJ0x0000DNk~Le0002I0000y2m=5B0P80pL9rou0)Gk{ z1REm;Wm}N|00A^fL_t(&-tF4kPQpMGh2a8<;sFl`cmyhfqVoQ)$J)uBWM|Sg)9FZU zvc4NqhPMCBz92JMrh2Lm1LMSV3PW|K&ecd=s7rOFuGLuGz^%Gd_b^cpFol_#8;_7N zp79a!Pw?C^FTi-lH;sSo2x)x-#(y(DHhuvve)-Qy=L&LQJmXWw=LOmhXFTKoI{w{Q zgIoJB+_hb+`p&^Vj2jAwkC@%~FfTJ6(2jWZD2g(Q^ebWJ@&>}3`@o{K2^Ms z&Dm84FrM*E<0V=)X7dhVJmZ_hi;ddCCw#%yvjg`jzKtK_7xv&Ez7qqFJ9KCHhwny) ZJAB7@#z)2<0ANP*?FKEXPqWnnBLQ`ut?vK; delta 365 zcmV-z0h0cP3it^jiBL{Q4GJ0x0000DNk~Le0001u0000j2m=5B0HmB4d9fjR0)Gh? z1se>Z0LhmC00AaRL_t(o!|mAHa)K}rfMG17^?k2zItx>c+-@G|o6ZYGZaPzqvE~m;naMJ| LH==&C;{ziBC{L!p diff --git a/assets/shuffle_off_p.png b/assets/shuffle_off_p.png index 5ea333d96be82374ab4cb9ac81731bd1b35197e9..ca5d94bf5684559729e35fd187c7b86e09a8dd2c 100644 GIT binary patch delta 219 zcmV<103`qI2lWRbiBL{Q4GJ0x0000DNk~Le0002I0000y1Oos704~?fK(QeQ0)Gk{ z1REm;Wm}N|005OqL_t(o!|mA14S*mJ1W;Po7PbXiumxM71=}}(#w9EXKR<~x7hI5c znRw9{1o>%*cyfrW1z*E6FVn*ezLuX|F8DUyh#l}x^J|E6e%eC(8mIK>Jd^KSGx$;d zyrS{)EMLL5^X^DmtyXeZwcv|W_fN! diff --git a/assets/shuffle_on.png b/assets/shuffle_on.png index de92dd7c28cec9937176ae01661c7ae42b0d5732..4e7cc315946128789a3193787cb897253f98cc45 100644 GIT binary patch delta 379 zcmV->0fhee35E(GiBL{Q4GJ0x0000DNk~Le0002I0000y2m=5B0P80pL9rou0)Gk{ z1REm;Wm}N|00A^fL_t(&-tF4kPQpMGh2a8<;sFl`cmyhfqVoQ)$J)uBWM|Sg)9FZU zvc4NqhPMCBz92JMrh2Lm1LMSV3PW|K&ecd=s7rOFuGLuGz^%Gd_b^cpFol_#8;_7N zp79a!Pw?C^FTi-lH;sSo2x)x-#(y(DHhuvve)-Qy=L&LQJmXWw=LOmhXFTKoI{w{Q zgIoJB+_hb+`p&^Vj2jAwkC@%~FfTJ6(2jWZD2g(Q^ebWJ@&>}3`@o{K2^Ms z&Dm84FrM*E<0V=)X7dhVJmZ_hi;ddCCw#%yvjg`jzKtK_7xv&Ez7qqFJ9KCHhwny) ZJAB7@#z)2<0ANP*?FKEXPqWnnBLQ`ut?vK; delta 365 zcmV-z0h0cP3it^jiBL{Q4GJ0x0000DNk~Le0001u0000j2m=5B0HmB4d9fjR0)Gh? z1se>Z0LhmC00AaRL_t(o!|mAHa)K}rfMG17^?k2zItx>c+-@G|o6ZYGZaPzqvE~m;naMJ| LH==&C;{ziBC{L!p diff --git a/assets/shuffle_on_p.png b/assets/shuffle_on_p.png index f47a99dcb9ba38c4aaf243812749ef1420006cb0..100f0d4b0b8bbc95c4c516d3738e466d1cbfe622 100644 GIT binary patch delta 219 zcmV<103`qI2lWRbiBL{Q4GJ0x0000DNk~Le0002I0000y1Oos704~?fK(QeQ0)Gk{ z1REm;Wm}N|005OqL_t(o!|mA14S*mJ1W;Po7PbXiumxM71=}}(#w9EXKR<~x7hI5c znRw9{1o>%*cyfrW1z*E6FVn*ezLuX|F8DUyh#l}x^J|E6e%eC(8mIK>Jd^KSGx$;d zyrS{)EMLL5^X^DmtyXeZwcv|W_fN! diff --git a/assets/status_paused.png b/assets/status_paused.png index 036fba8977a39ef9d080f2434f3c085815bf7db0..2084cc565afa07db6cb221af7d857997f500957b 100644 GIT binary patch delta 88 zcmeyu_MT0#Gr-TCmrII^fq{Y7)59eQNb3Nx3KKJs?B8kdf1@HZlLnVGi?lLZYV<^) nps=TlV~E7%Wmg?cE&6q|68aG*lDa delta 93 zcmaFQ_JvKcGr-TCmrII^fq{Y7)59eQNGk%dG!rwB?9b*i->AsUq{}JJD$TQy;pB9n spoFK3V~E7%t2EC-hLh8Q zVve3Jjv*44lMUFInAsE>CMd9ZDjhraq?19iiOHq&K%=3Afx!f2rgBS9C6`-InOOKV iAsUq{%7HD$TQy;pB9n opopi7V~E7%mtG0 w5eff{pU^q!g08U}x}!(ziTaaq5OayZvx)Hm3IB?B!uX7lds7$;vj+ns0U?uTqyPW_ delta 233 zcmV~W0)Gh? z1se>Z0LhmC005&&L_t(Y$L*H84#OY}MS&7Sd6Yu=|8K2DhB73P3Q^=B&fp230kCx$ z>w|MHgy@uRyE$YntfV5{#BUnOSg;>cICS8gBW3a4zbZlq??Q|* jrSvJ}oY#urHo@?O)fDiViCMn*tWOfsQgv~&6aymxw;W_q diff --git a/assets/stop_p.png b/assets/stop_p.png index 208597eec29b2e6b26fc672a4d3e6563f21a9c67..96628bdf9f7102ed4fd59e0ed4396ad1467c528d 100644 GIT binary patch delta 175 zcmZ3+zJXn_Gr-TCmrII^fq{Y7)59eQNXG!N2MaTh>}>0Qwo#Fhsh&%kMOv9HHF_dY zFwE1%F~s9|a)JaaGaC!*R1PLb$K=NcSHyUpY~@(6#3W*>@V7TBilVfRPm^!!`xIc( zka%Uqr@*I+Pq|O+*OG5Kwb5LTZGDlWY6T uR!N3ByP9UCO6XqU=n~M2Ua|DpjfR4~&b+1!=0(2({R@RGH}^6rGXek;4=JSp diff --git a/assets/visualizationBackground.png b/assets/visualizationBackground.png index d532043b2ab95bbe5cd9a2f43f29d0fd909f28d3..dfc56989b8369a31b5536601d169b0fc20670eb2 100644 GIT binary patch delta 340 zcmZ3+@tQ-iGr-TCmrII^fq{Y7)59f*fq^jx$X>$23?vw9HE8+!f~|x%KjQv9Is4l1W(kxbR8# z1clvyo0qO~*Up}7;=ysMZ7nj>?bVm;J8BbcHKez#k~;bM=X>7UDx26-4~IGXYu?=S zHa97>zW2%W^^Q$%zVT06CAW5s?f7#ky|2pO52{Vny?syZ(B}JptJccz z`0^{YI`38P u-(GwF`&m|v=x@qEd+j>^ePojPAf>{RdN|15cYU0D!@bwvH#0LUGXenm8pXTkmf43CO>5tzktg<=QPw#pEvByzwSx!F5(NW)Z`Dn!) zxWdOD74B-Lmae%SS88W4=Y=2Z>SWt@pCg~Tlxv;18R1v5yn9YBkh6;*=Y4PNqD_0& jKaamZKl?oAB+2;FPwz`Uu|*%)F8q_8=HF;Su1k7@qbnKXym!5=ziHYvn8#Ar}#W`%WEWfB4 qDof`xEsih};a;$G$$|taJ_qZQj2i6>%dG!?tbcdDb8{V&G9v&V*egf? delta 137 zcmZ3+zK~t9Gr-TCmrII^fq{Y7)59eQNNWMHA`3H+jMY+Ey-|^cDUws1RhnlZ!^!DD zK^IRK#}JM4$q5M}F6>M^JWD#bxHK0syE;yC>Fu2oGodj%BWjbOXqN+EE{BNI-B!@0fRm+eTA+1$*e%m@IRBqv1x diff --git a/assets/volumeHandle_p.png b/assets/volumeHandle_p.png index 7151e3353d9fe6e14607d5a2e2c42e3095243331..3fde3ef430c27381fcb2c3fbe5fe4153f29ea4fa 100644 GIT binary patch delta 175 zcmZ3^zJ^_~Gr-TCmrII^fq{Y7)59eQNLv804hu7oJoG+o!A38q_8=HF-raM$B@XbnKXy*D;9$M_FC?+)rKzV3C`;WSvUY zf#pjddL}pr1O;4R)oyrZG|R)tpka-lH}gaeskm7eoP-!=oO~{6>pWK!Xu4#HYeb22 Yer|4RUI~M9QEFmIYKp?qEC2ui delta 146 zcmZ3(zMNgLGr-TCmrII^fq{Y7)59eQNNWMHA`3H+jMY+Ey-|^oDTz~@RhnlZ!^!DD zL0?Z7#}JM4$q5M}F6>M^JWD#bxHK0sF0k-ibj;1`*ogy2SUq?;GBONAcryc2_AgcC vx)d1_aDsetupUi(this); + scale(); connect(ui->playButton, &QPushButton::clicked, this, &ControlButtonsWidget::playClicked); connect(ui->pauseButton, &QPushButton::clicked, this, &ControlButtonsWidget::pauseClicked); @@ -21,3 +23,52 @@ ControlButtonsWidget::~ControlButtonsWidget() { delete ui; } + +void ControlButtonsWidget::scale() +{ + ui->backButton->setMaximumWidth(ui->backButton->maximumWidth() * UI_SCALE); + ui->backButton->setMinimumWidth(ui->backButton->minimumWidth() * UI_SCALE); + ui->backButton->setMaximumHeight(ui->backButton->maximumHeight() * UI_SCALE); + ui->backButton->setMinimumHeight(ui->backButton->minimumHeight() * UI_SCALE); + + ui->playButton->setMaximumWidth(ui->playButton->maximumWidth() * UI_SCALE); + ui->playButton->setMinimumWidth(ui->playButton->minimumWidth() * UI_SCALE); + ui->playButton->setMaximumHeight(ui->playButton->maximumHeight() * UI_SCALE); + ui->playButton->setMinimumHeight(ui->playButton->minimumHeight() * UI_SCALE); + + ui->pauseButton->setMaximumWidth(ui->pauseButton->maximumWidth() * UI_SCALE); + ui->pauseButton->setMinimumWidth(ui->pauseButton->minimumWidth() * UI_SCALE); + ui->pauseButton->setMaximumHeight(ui->pauseButton->maximumHeight() * UI_SCALE); + ui->pauseButton->setMinimumHeight(ui->pauseButton->minimumHeight() * UI_SCALE); + + ui->stopButton->setMaximumWidth(ui->stopButton->maximumWidth() * UI_SCALE); + ui->stopButton->setMinimumWidth(ui->stopButton->minimumWidth() * UI_SCALE); + ui->stopButton->setMaximumHeight(ui->stopButton->maximumHeight() * UI_SCALE); + ui->stopButton->setMinimumHeight(ui->stopButton->minimumHeight() * UI_SCALE); + + ui->nextButton->setMaximumWidth(ui->nextButton->maximumWidth() * UI_SCALE); + ui->nextButton->setMinimumWidth(ui->nextButton->minimumWidth() * UI_SCALE); + ui->nextButton->setMaximumHeight(ui->nextButton->maximumHeight() * UI_SCALE); + ui->nextButton->setMinimumHeight(ui->nextButton->minimumHeight() * UI_SCALE); + + ui->openButton->setMaximumWidth(ui->openButton->maximumWidth() * UI_SCALE); + ui->openButton->setMinimumWidth(ui->openButton->minimumWidth() * UI_SCALE); + ui->openButton->setMaximumHeight(ui->openButton->maximumHeight() * UI_SCALE); + ui->openButton->setMinimumHeight(ui->openButton->minimumHeight() * UI_SCALE); + + ui->shuffleButton->setMaximumWidth(ui->shuffleButton->maximumWidth() * UI_SCALE); + ui->shuffleButton->setMinimumWidth(ui->shuffleButton->minimumWidth() * UI_SCALE); + ui->shuffleButton->setMaximumHeight(ui->shuffleButton->maximumHeight() * UI_SCALE); + ui->shuffleButton->setMinimumHeight(ui->shuffleButton->minimumHeight() * UI_SCALE); + + ui->repeatButton->setMaximumWidth(ui->repeatButton->maximumWidth() * UI_SCALE); + ui->repeatButton->setMinimumWidth(ui->repeatButton->minimumWidth() * UI_SCALE); + ui->repeatButton->setMaximumHeight(ui->repeatButton->maximumHeight() * UI_SCALE); + ui->repeatButton->setMinimumHeight(ui->repeatButton->minimumHeight() * UI_SCALE); + // TODO Stylesheets + + this->setMaximumWidth(this->maximumWidth() * UI_SCALE); + this->setMinimumWidth(this->minimumWidth() * UI_SCALE); + this->setMaximumHeight(this->maximumHeight() * UI_SCALE); + this->setMinimumHeight(this->minimumHeight() * UI_SCALE); +} diff --git a/controlbuttonswidget.h b/controlbuttonswidget.h index c9ab706..2010ba9 100644 --- a/controlbuttonswidget.h +++ b/controlbuttonswidget.h @@ -17,6 +17,7 @@ class ControlButtonsWidget : public QWidget private: Ui::ControlButtonsWidget *ui; + void scale(); signals: void playClicked(); diff --git a/controlbuttonswidget.ui b/controlbuttonswidget.ui index 2b4628f..d406e15 100644 --- a/controlbuttonswidget.ui +++ b/controlbuttonswidget.ui @@ -6,20 +6,20 @@ 0 0 - 666 - 51 + 222 + 18 - 666 - 51 + 222 + 17 - 666 - 51 + 222 + 18 @@ -91,14 +91,14 @@ - 66 - 54 + 22 + 18 - 66 - 54 + 22 + 18 @@ -122,14 +122,14 @@ - 66 - 54 + 22 + 18 - 66 - 54 + 22 + 18 @@ -153,14 +153,14 @@ - 66 - 54 + 22 + 18 - 66 - 54 + 22 + 18 @@ -184,14 +184,14 @@ - 66 - 54 + 22 + 18 - 66 - 54 + 22 + 18 @@ -215,14 +215,14 @@ - 66 - 54 + 22 + 18 - 66 - 54 + 22 + 18 @@ -252,8 +252,8 @@ - 18 - 20 + 6 + 17 @@ -262,14 +262,14 @@ - 66 - 48 + 22 + 16 - 66 - 48 + 22 + 16 @@ -299,8 +299,8 @@ - 21 - 20 + 7 + 17 @@ -309,14 +309,14 @@ - 141 - 45 + 47 + 15 - 141 - 45 + 47 + 15 @@ -325,8 +325,8 @@ } QCheckBox::indicator { - width: 141px; - height: 45px; + width: 47px; + height: 15px; } QCheckBox::indicator:unchecked { @@ -370,14 +370,14 @@ QCheckBox::indicator:indeterminate:pressed { - 84 - 45 + 28 + 15 - 64 - 45 + 28 + 15 @@ -386,8 +386,8 @@ QCheckBox::indicator:indeterminate:pressed { } QCheckBox::indicator { - width: 85px; - height: 45px; + width: 28px; + height: 15px; } QCheckBox::indicator:unchecked { diff --git a/desktopbasewindow.cpp b/desktopbasewindow.cpp index 69e5c35..6362130 100644 --- a/desktopbasewindow.cpp +++ b/desktopbasewindow.cpp @@ -1,14 +1,30 @@ #include "desktopbasewindow.h" #include "ui_desktopbasewindow.h" +#include "scale.h" DesktopBaseWindow::DesktopBaseWindow(QWidget *parent) : QWidget(parent), ui(new Ui::DesktopBaseWindow) { ui->setupUi(this); + scale(); } DesktopBaseWindow::~DesktopBaseWindow() { delete ui; } + +void DesktopBaseWindow::scale() +{ + this->setBaseSize(this->baseSize() * UI_SCALE); + this->layout()->setContentsMargins(this->layout()->contentsMargins() * UI_SCALE); + + ui->bodyContainer->layout()->setContentsMargins(ui->bodyContainer->layout()->contentsMargins() * UI_SCALE); + ui->bodyOuterFrame->layout()->setContentsMargins(ui->bodyOuterFrame->layout()->contentsMargins() * UI_SCALE); + + ui->titlebarContainer->setMaximumHeight(ui->titlebarContainer->maximumHeight() * UI_SCALE); + ui->titlebarContainer->setMinimumHeight(ui->titlebarContainer->minimumHeight() * UI_SCALE); + + // TODO Stylesheets +} diff --git a/desktopbasewindow.h b/desktopbasewindow.h index 2725b10..09c2aef 100644 --- a/desktopbasewindow.h +++ b/desktopbasewindow.h @@ -15,6 +15,9 @@ class DesktopBaseWindow : public QWidget explicit DesktopBaseWindow(QWidget *parent = nullptr); ~DesktopBaseWindow(); Ui::DesktopBaseWindow *ui; + +private: + void scale(); }; #endif // DESKTOPBASEWINDOW_H diff --git a/desktopbasewindow.ui b/desktopbasewindow.ui index b5713ec..519b442 100644 --- a/desktopbasewindow.ui +++ b/desktopbasewindow.ui @@ -6,8 +6,8 @@ 0 0 - 831 - 351 + 277 + 117 @@ -115,16 +115,16 @@ 0 - 3 + 1 - 3 + 1 - 3 + 1 - 3 + 1 @@ -163,13 +163,13 @@ 0 - 24 + 8 16777215 - 24 + 8 @@ -187,16 +187,16 @@ 0 - 6 + 2 0 - 6 + 2 - 6 + 2 @@ -220,16 +220,16 @@ 0 - 3 + 1 - 3 + 1 - 3 + 1 - 3 + 1 diff --git a/desktopplayerwindow.cpp b/desktopplayerwindow.cpp index f2eb5a5..96a1108 100644 --- a/desktopplayerwindow.cpp +++ b/desktopplayerwindow.cpp @@ -1,14 +1,42 @@ #include "desktopplayerwindow.h" #include "ui_desktopplayerwindow.h" +#include "scale.h" DesktopPlayerWindow::DesktopPlayerWindow(QWidget *parent) : QWidget(parent), ui(new Ui::DesktopPlayerWindow) { ui->setupUi(this); + scale(); } DesktopPlayerWindow::~DesktopPlayerWindow() { delete ui; } + +void DesktopPlayerWindow::scale() +{ + this->setBaseSize(this->baseSize() * UI_SCALE); + this->setMinimumSize(this->minimumSize() * UI_SCALE); + this->setMaximumSize(this->maximumSize() * UI_SCALE); + this->layout()->setContentsMargins(this->layout()->contentsMargins() * UI_SCALE); + + ui->bodyContainer->layout()->setContentsMargins(ui->bodyContainer->layout()->contentsMargins() * UI_SCALE); + ui->bodyOuterFrame->layout()->setContentsMargins(ui->bodyOuterFrame->layout()->contentsMargins() * UI_SCALE); + ui->bodyInnerFrame->layout()->setContentsMargins(ui->bodyInnerFrame->layout()->contentsMargins() * UI_SCALE); + + QSize sh = ui->horizontalSpacer->sizeHint(); + QSizePolicy sp = ui->horizontalSpacer->sizePolicy(); + ui->horizontalSpacer->changeSize(sh.width()*UI_SCALE, sh.height(), sp.horizontalPolicy(), sp.verticalPolicy()); + + QSize vsh = ui->verticalSpacer_2->sizeHint(); + QSizePolicy vsp = ui->verticalSpacer_2->sizePolicy(); + ui->verticalSpacer_2->changeSize(vsh.width(), vsh.height()*UI_SCALE, vsp.horizontalPolicy(), vsp.verticalPolicy()); + + ui->titlebarContainer->setMaximumHeight(ui->titlebarContainer->maximumHeight() * UI_SCALE); + ui->titlebarContainer->setMinimumHeight(ui->titlebarContainer->minimumHeight() * UI_SCALE); + + // TODO Stylesheets + +} diff --git a/desktopplayerwindow.h b/desktopplayerwindow.h index fbde769..91f4ab8 100644 --- a/desktopplayerwindow.h +++ b/desktopplayerwindow.h @@ -15,6 +15,9 @@ class DesktopPlayerWindow : public QWidget explicit DesktopPlayerWindow(QWidget *parent = nullptr); ~DesktopPlayerWindow(); Ui::DesktopPlayerWindow *ui; + +private: + void scale(); }; #endif // DESKTOPPLAYERWINDOW_H diff --git a/desktopplayerwindow.ui b/desktopplayerwindow.ui index bd4ec73..2f90d26 100644 --- a/desktopplayerwindow.ui +++ b/desktopplayerwindow.ui @@ -6,20 +6,20 @@ 0 0 - 831 - 351 + 277 + 128 - 831 - 351 + 277 + 117 - 831 - 351 + 277 + 128 @@ -127,16 +127,16 @@ 0 - 3 + 1 - 3 + 1 - 3 + 1 - 3 + 1 @@ -175,13 +175,13 @@ 0 - 24 + 8 16777215 - 24 + 8 @@ -199,16 +199,16 @@ 0 - 6 + 2 0 - 6 + 2 - 6 + 2 @@ -232,16 +232,16 @@ 0 - 3 + 1 - 3 + 1 - 3 + 1 - 3 + 1 @@ -265,16 +265,16 @@ 0 - 9 + 4 - 21 + 7 - 6 + 2 - 15 + 5 @@ -285,7 +285,7 @@ Qt::Vertical - QSizePolicy::Expanding + QSizePolicy::Fixed @@ -310,8 +310,8 @@ - 18 - 20 + 6 + 1 diff --git a/playerview.cpp b/playerview.cpp index 3cdb9a8..a4d55d6 100644 --- a/playerview.cpp +++ b/playerview.cpp @@ -3,6 +3,7 @@ #include "playlistmodel.h" #include "qmediaplaylist.h" +#include "scale.h" #include #include @@ -25,6 +26,7 @@ PlayerView::PlayerView(QWidget *parent, PlaylistModel *playlistModel) : // Setup UI ui->setupUi(this); + scale(); //! [create-objs] m_player = new MediaPlayer(this); @@ -92,6 +94,92 @@ PlayerView::~PlayerView() delete ui; } +void PlayerView::scale() +{ + this->setMaximumSize(this->maximumSize() * UI_SCALE); + this->setMinimumSize(this->minimumSize() * UI_SCALE); + + ui->posBarContainer->layout()->setContentsMargins(ui->posBarContainer->layout()->contentsMargins() * UI_SCALE); + + ui->posBar->setMaximumHeight(ui->posBar->maximumHeight() * UI_SCALE); + ui->posBar->setMinimumHeight(ui->posBar->minimumHeight() * UI_SCALE); + // TODO stylesheet + + ui->infoContainer->setContentsMargins(ui->infoContainer->contentsMargins() * UI_SCALE); + ui->visualizationContainer->setContentsMargins(ui->visualizationContainer->contentsMargins() * UI_SCALE); + + ui->codecDetailsContainer->layout()->setContentsMargins(ui->codecDetailsContainer->layout()->contentsMargins() * UI_SCALE); + + ui->kHzLabel->setMaximumHeight(ui->kHzLabel->maximumHeight() * UI_SCALE); + ui->kHzLabel->setMinimumHeight(ui->kHzLabel->minimumHeight() * UI_SCALE); + // TODO font + + ui->kbpsLabel->setMaximumHeight(ui->kbpsLabel->maximumHeight() * UI_SCALE); + ui->kbpsLabel->setMinimumHeight(ui->kbpsLabel->minimumHeight() * UI_SCALE); + // TODO font + + ui->kbpsFrame->setMinimumSize(ui->kbpsFrame->minimumSize() * UI_SCALE); + ui->kbpsFrame->setMaximumHeight(ui->kbpsFrame->maximumHeight() * UI_SCALE); + ui->kbpsFrame->layout()->setContentsMargins(ui->kbpsFrame->layout()->contentsMargins() * UI_SCALE); + ui->kbpsFrame->layout()->setSpacing(ui->kbpsFrame->layout()->spacing() * UI_SCALE); + // TODO stylesheet + + ui->khzFrame->setMinimumSize(ui->khzFrame->minimumSize() * UI_SCALE); + ui->khzFrame->setMaximumHeight(ui->khzFrame->maximumHeight() * UI_SCALE); + ui->khzFrame->layout()->setContentsMargins(ui->khzFrame->layout()->contentsMargins() * UI_SCALE); + ui->khzFrame->layout()->setSpacing(ui->khzFrame->layout()->spacing() * UI_SCALE); + // TODO stylesheet + + + //ui->kbpsValueLabel; + //ui->khzValueLabel; + // TODO font + + // Volume and balance sliders and buttons container + ui->horizontalWidget_2->setMinimumHeight(ui->horizontalWidget_2->minimumHeight() * UI_SCALE); + ui->horizontalWidget_2->setMaximumHeight(ui->horizontalWidget_2->maximumHeight() * UI_SCALE); + ui->horizontalWidget_2->layout()->setContentsMargins(ui->horizontalWidget_2->layout()->contentsMargins() * UI_SCALE); + + ui->eqButton->setMinimumSize(ui->eqButton->minimumSize() * UI_SCALE); + ui->eqButton->setMaximumSize(ui->eqButton->maximumSize() * UI_SCALE); + // TODO stylesheet + + ui->playlistButton->setMinimumSize(ui->playlistButton->minimumSize() * UI_SCALE); + ui->playlistButton->setMaximumSize(ui->playlistButton->maximumSize() * UI_SCALE); + // TODO stylesheet + + ui->balanceSlider->setMinimumSize(ui->balanceSlider->minimumSize() * UI_SCALE); + // TODO stylesheet + + ui->volumeSlider->setMinimumSize(ui->volumeSlider->minimumSize() * UI_SCALE); + ui->volumeSlider->setMaximumSize(ui->volumeSlider->maximumSize() * UI_SCALE); + // TODO stylesheet + + ui->songInfoContainer->setMinimumHeight(ui->songInfoContainer->minimumHeight() * UI_SCALE); + ui->songInfoContainer->setMaximumHeight(ui->songInfoContainer->maximumHeight() * UI_SCALE); + ui->songInfoContainer->layout()->setContentsMargins(ui->songInfoContainer->layout()->contentsMargins() * UI_SCALE); + // TODO stylesheet + + //ui->songInfoLabel; + // TODO font + + ui->visualizationFrame->setMaximumSize(ui->visualizationFrame->maximumSize() * UI_SCALE); + ui->visualizationFrame->setMinimumSize(ui->visualizationFrame->minimumSize() * UI_SCALE); + // TODO stylesheet + + ui->playStatusIcon->setMaximumSize(ui->playStatusIcon->maximumSize() * UI_SCALE); + ui->playStatusIcon->setMinimumSize(ui->playStatusIcon->minimumSize() * UI_SCALE); + QRect psiGeo = ui->playStatusIcon->geometry(); + ui->playStatusIcon->setGeometry(psiGeo.x()*UI_SCALE, psiGeo.y()*UI_SCALE, psiGeo.width(), psiGeo.height()); + + QRect ptlGeo = ui->playStatusIcon->geometry(); + ui->progressTimeLabel->setGeometry(ptlGeo.x()*UI_SCALE, ptlGeo.y()*UI_SCALE, ptlGeo.width()*UI_SCALE, ptlGeo.height()*UI_SCALE); + // TODO fontsize + + QRect scGeo = ui->spectrumContainer->geometry(); + ui->spectrumContainer->setGeometry(scGeo.x()*UI_SCALE, scGeo.y()*UI_SCALE, scGeo.width()*UI_SCALE, scGeo.height()*UI_SCALE); +} + bool PlayerView::isPlayerAvailable() const { return true; //m_player->isAvailable(); diff --git a/playerview.h b/playerview.h index 6701da5..d467a96 100644 --- a/playerview.h +++ b/playerview.h @@ -68,6 +68,7 @@ private slots: private: Ui::PlayerView *ui; + void scale(); SpectrumWidget *spectrum = nullptr; void setTrackInfo(const QString &info); void setStatusInfo(const QString &info); diff --git a/playerview.ui b/playerview.ui index 61b6459..ba60610 100644 --- a/playerview.ui +++ b/playerview.ui @@ -6,8 +6,8 @@ 0 0 - 768 - 180 + 577 + 86 @@ -18,14 +18,14 @@ - 768 - 180 + 256 + 60 - 768 - 180 + 577 + 86 @@ -77,7 +77,7 @@ 0 - 8 + 2 0 @@ -86,14 +86,14 @@ - 279 - 129 + 93 + 43 - 279 - 129 + 93 + 43 @@ -134,10 +134,10 @@ - 118 - 9 - 150 - 61 + 39 + 3 + 50 + 20 @@ -288,22 +288,22 @@ - 36 - 15 - 33 - 27 + 12 + 5 + 11 + 9 - 33 - 27 + 11 + 9 - 33 - 27 + 11 + 9 @@ -412,10 +412,10 @@ - 33 - 57 - 231 - 51 + 11 + 19 + 77 + 17 @@ -451,7 +451,7 @@ 0 - 5 + 2 0 @@ -464,13 +464,13 @@ 0 - 41 + 14 16777215 - 22 + 14 @@ -483,14 +483,17 @@ } + + 2 + - 8 + 3 0 - 8 + 3 0 @@ -555,30 +558,33 @@ + + 2 + 0 - 18 + 6 - 15 + 5 - 8 + 3 - 58 - 34 + 19 + 11 16777215 - 34 + 11 @@ -591,14 +597,17 @@ } + + 2 + - 4 + 1 0 - 4 + 1 0 @@ -656,13 +665,13 @@ 0 - 34 + 11 16777215 - 34 + 11 @@ -727,14 +736,14 @@ - 45 - 34 + 15 + 11 16777215 - 34 + 11 @@ -747,14 +756,17 @@ } + + 2 + - 4 + 1 0 - 4 + 1 0 @@ -812,13 +824,13 @@ 0 - 34 + 11 16777215 - 34 + 11 @@ -1002,6 +1014,9 @@ 0 + + 3 + 0 @@ -1009,14 +1024,14 @@ - 180 - 33 + 60 + 11 - 180 - 33 + 60 + 11 @@ -1075,7 +1090,7 @@ QSlider::add-page:horizontal { 16 - 20 + 1 @@ -1084,8 +1099,8 @@ QSlider::add-page:horizontal { - 110 - 33 + 37 + 11 @@ -1144,7 +1159,7 @@ QSlider::add-page:horizontal { 14 - 20 + 1 @@ -1153,14 +1168,14 @@ QSlider::add-page:horizontal { - 69 - 36 + 23 + 12 - 69 - 36 + 23 + 12 @@ -1169,8 +1184,8 @@ QSlider::add-page:horizontal { } QCheckBox::indicator { - width: 69px; - height: 36px; + width: 23px; + height: 12px; } QCheckBox::indicator:unchecked { @@ -1214,14 +1229,14 @@ QCheckBox::indicator:indeterminate:pressed { - 69 - 36 + 23 + 12 - 69 - 36 + 23 + 12 @@ -1230,8 +1245,8 @@ QCheckBox::indicator:indeterminate:pressed { } QCheckBox::indicator { - width: 69px; - height: 36px; + width: 23px; + height: 12px; } QCheckBox::indicator:unchecked { @@ -1297,10 +1312,10 @@ QCheckBox::indicator:indeterminate:pressed { 0 - 15 + 5 - 6 + 2 0 @@ -1310,19 +1325,19 @@ QCheckBox::indicator:indeterminate:pressed { 0 - 27 + 9 16777215 - 27 + 9 QSlider::handle:horizontal { - width: 84px; - height: 27px; + width: 28px; + height: 9px; background-color: transparent; border-image: url(:assets/posHandle.png); background: none; @@ -1339,11 +1354,11 @@ QSlider::groove:horizontal { #posBar { background-color: #2c2b43; - border-top: 3px solid #26253c; - border-right: 3px solid #6d6d7f; - border-bottom: 3px solid #6d6d7f; - border-left: 3px solid #26253c; - padding: -3px; + border-top: 1px solid #26253c; + border-right: 1px solid #6d6d7f; + border-bottom: 1px solid #6d6d7f; + border-left: 1px solid #26253c; + padding: -1px; } diff --git a/scale-skin.sh b/scale-skin.sh index 331855d..6c45a20 100755 --- a/scale-skin.sh +++ b/scale-skin.sh @@ -7,7 +7,7 @@ for filePath in skin/*.png; do if [ -f "$filePath" ]; then fileName="${filePath##*/}" echo "$fileName" - convert -scale 300% "$filePath" "assets/$fileName" + convert -scale 400% "$filePath" "assets/$fileName" fi done