From ab22d42206da7d02d540dfa74367e09c43b9299a Mon Sep 17 00:00:00 2001 From: MingoMGx Date: Fri, 6 Mar 2026 10:31:00 +0100 Subject: [PATCH 1/4] Add Icons for upcoming Mobile navigation bar --- res/+theme_light/icons/navbar_appconf.png | Bin 0 -> 2052 bytes res/+theme_light/icons/navbar_appui.png | Bin 0 -> 885 bytes res/+theme_light/icons/navbar_bms.png | Bin 0 -> 1831 bytes res/+theme_light/icons/navbar_customconf.png | Bin 0 -> 1685 bytes res/+theme_light/icons/navbar_hwui.png | Bin 0 -> 1767 bytes res/+theme_light/icons/navbar_lispbm.png | Bin 0 -> 2139 bytes res/+theme_light/icons/navbar_mcconf.png | Bin 0 -> 1826 bytes res/+theme_light/icons/navbar_profiles.png | Bin 0 -> 1607 bytes res/+theme_light/icons/navbar_rtdata.png | Bin 0 -> 2049 bytes res/+theme_light/icons/navbar_start.png | Bin 0 -> 1395 bytes res/+theme_light/icons/navbar_terminal.png | Bin 0 -> 1379 bytes res/icons/navbar_appconf.png | Bin 0 -> 2022 bytes res/icons/navbar_appui.png | Bin 0 -> 883 bytes res/icons/navbar_bms.png | Bin 0 -> 1877 bytes res/icons/navbar_customconf.png | Bin 0 -> 1700 bytes res/icons/navbar_hwui.png | Bin 0 -> 1800 bytes res/icons/navbar_lispbm.png | Bin 0 -> 2202 bytes res/icons/navbar_mcconf.png | Bin 0 -> 1835 bytes res/icons/navbar_profiles.png | Bin 0 -> 1631 bytes res/icons/navbar_rtdata.png | Bin 0 -> 2064 bytes res/icons/navbar_start.png | Bin 0 -> 1396 bytes res/icons/navbar_terminal.png | Bin 0 -> 1359 bytes 22 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 res/+theme_light/icons/navbar_appconf.png create mode 100644 res/+theme_light/icons/navbar_appui.png create mode 100644 res/+theme_light/icons/navbar_bms.png create mode 100644 res/+theme_light/icons/navbar_customconf.png create mode 100644 res/+theme_light/icons/navbar_hwui.png create mode 100644 res/+theme_light/icons/navbar_lispbm.png create mode 100644 res/+theme_light/icons/navbar_mcconf.png create mode 100644 res/+theme_light/icons/navbar_profiles.png create mode 100644 res/+theme_light/icons/navbar_rtdata.png create mode 100644 res/+theme_light/icons/navbar_start.png create mode 100644 res/+theme_light/icons/navbar_terminal.png create mode 100644 res/icons/navbar_appconf.png create mode 100644 res/icons/navbar_appui.png create mode 100644 res/icons/navbar_bms.png create mode 100644 res/icons/navbar_customconf.png create mode 100644 res/icons/navbar_hwui.png create mode 100644 res/icons/navbar_lispbm.png create mode 100644 res/icons/navbar_mcconf.png create mode 100644 res/icons/navbar_profiles.png create mode 100644 res/icons/navbar_rtdata.png create mode 100644 res/icons/navbar_start.png create mode 100644 res/icons/navbar_terminal.png diff --git a/res/+theme_light/icons/navbar_appconf.png b/res/+theme_light/icons/navbar_appconf.png new file mode 100644 index 0000000000000000000000000000000000000000..1e87cf6fef58e708a92c71eb614b32b0b2f65ffa GIT binary patch literal 2052 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 literal 0 HcmV?d00001 diff --git a/res/+theme_light/icons/navbar_bms.png b/res/+theme_light/icons/navbar_bms.png new file mode 100644 index 0000000000000000000000000000000000000000..1b38fc6fa1234f92fe268e1b65b7e69bca30568e GIT binary patch literal 1831 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 JPDHLkV1jm69>xFw literal 0 HcmV?d00001 diff --git a/res/+theme_light/icons/navbar_lispbm.png b/res/+theme_light/icons/navbar_lispbm.png new file mode 100644 index 0000000000000000000000000000000000000000..ae67780dae7e080c4b3f4d3c8fd2d76369213389 GIT binary patch literal 2139 zcmb7G`9IYA7k#l8p6c%QlvY>vAVqKHL(i$d*W{ zVUTqwjjl{l#+EEu3gOG-B4#p}JKsOy{&3Fo{Pg^A&U2pE$#8NwD}|It0sy3lwgeXu z`ux8TlA``4|B8_aV9_pTEdirfVG#fXmPoL0i}T_Zk%JCf%dk1$yM~f8nf-oCdmxf? z|M32X#sdRq3L!-1myM3hh@?K;9i(+)cP=hD)pY2oWAcV7Nha0cH%>rsS(D#Zg=Dp< zhR48w0g?OP+}0~G-BO;n+D-*h16RUp+G>mwdhZD%dPhe`nP?}^dzwloZ+MBP!_B*L zOMw%3<9_w}U$WSLL7EdKs>p3r=Iyo06@j|$aBDEXNrDEwgt4SibInw=Qo|XIik`#aS{FrEG$5gTN!F9jy?6Jo+ z1w348eOz%n4+}!^Aq#uZemi3Cuq zvY=(rGT2O$LlrB%Y?l3aPvk||0+&nnpnu2;F=34pzCZKLv;FWqOcS85h_S8}Y`Vf} z9#1pnO(N8RtfwHj@POMBHxqR=wMY875$fnOzD5?VhK|+nErCFGd9*(81TJGc}mzTEu1!0saj=h2OJ5A>G+xNl;#gxHRuDf`Z8zCVI` z3u4UjT@3dAQO~F{x82L46s@G9s&o z#))IYy6Kq9Bn*D;;e7lhhD|7dj3hyGFVnKnVz2R7#V%jKM)e$UX|WJkzW4ndmk6{+A3eiXY)T! z18Y9B0|))I(E2+awzCNUmjna*qjT+}stKe z4^HJYL1wA^G%o2U@WQ!$(0#Yba@+lQkb~;7jOFRxiX)HhBU7LmL(M>kcWHwC7_@-) z>QhVIQJ-NnE~#vv8AZt!?-*CoobOK$71^yVV?mkWSWK=L>Yyo(RZY2kIc-B_3_`8` z1Eq+Ug5ua@h}I`P#k;wfGPgV7v#F?r+vMG<t>9qsK3H#Drp&J`@|j20V7+& zvQ@A%r5fgBVT3v-?hjE?pphy1aairi^}y&lWNEtza>DwKOZe*P2#hO&JNXjj_lxMf zdREzu{h{U_ShH14jZi0u4+E!l=U1lC{fUy6L5_;~ZWzPxL}~p~V)_I^R)%6$^#(Fu zs^I(C@avnH_%WI;U!!mfxh#RdRNdAlC~k1zS4b*l08v~hceaK!ZaLpFif=Kj0lk2w z>I|>=kmMnyS_5KsyoZ|&JgW0H;+SH6IgYn=N_tVv<}ixk^vr>pt32>q|R) z#I{+({h_-Lhyh6d4ga0IyTmp7-y#^Aw0fRa#qU$=&)?KPAX*2{?J(gq$ot8R&>7ya z_OsVf^I0ic_{JcKtA2$8$ih6ATl4Wb*n!LomvwC>HO-5kc^x!hDIpjeiQc@#kw>Oa z1l?F#dwct93zR~HK?r`%n6nd768%O KfxxizN&W|`P~<=W literal 0 HcmV?d00001 diff --git a/res/+theme_light/icons/navbar_mcconf.png b/res/+theme_light/icons/navbar_mcconf.png new file mode 100644 index 0000000000000000000000000000000000000000..8a4d4db7c66a36202d29095afdb4204ebe75d109 GIT binary patch literal 1826 zcmb7FdpHw%AOFp58q+9|5G$SLuDQ&uZ5m=(+gj#w#^|_p+=(fd9WAX6N~qj5mtq!0 zZm&D(JyA%~>!f*ggrSl~$I!d?pZEXw^E}`0=Xt)*_xXOF=ll8NbB#=Lg~PO9006k# zNdi^M%>S06g0#=xO~gnE5=V7)0uNtmF9M+O&W(VlvHVs_Jhx&;M1f)$@T2Z**{YewnI1wUz7PE^t(%h__&|b3BcKJyCnMv!g&Z58$q0$R8t+ zhQpO%n$RAaEiqMvZJ_Vbj{()sy}!l*<6U7|gAntxFK?B}GTly&o2#&EVsCG01EN!5 z#{VNB*P{vEg`&DCck`}zUjj2K73EJcDR{z(m>Nk!L}(SYt=g|Xt+bMkt$Q~fLAZY&B3 z_a!eG#i`YdHmKn4eKl)PAC&(!pD4Ac?Vq&=UqePG4K;{RJq>U1WkZPGECYO*D(F)8 zu#*o?#ksdJe(b%}NEm1VGq*n-6?hKWN6+*;>vTT8D7c6yg0QQs)x5J~in+0$HIS(= zFgYkLDQIy=l`V-oULB{1HcsRG4R}{Cs_VV*7dMrxiz_0#H#ZMhOt`&8=%KEDmhd@< z?n-g5ODa?kA3(?)+z#D39j=0V4jru(QIs9WT7T>;zj!8p9V1>`T+D***4-MiEaS6H z=aPj&6sPqWc{l)B8zQ~{K+nc@fd0Tv-R#r1Bd0t(;M#Wa3kRpYsvt9x9WG+F-!$OU z5#BWSq^c~VH-4FeDALLrwC8F%Vy7q9ZLKjF)?!zRgy$=1^MnEJcT*7lTGcG-fc`+C zOT}v3Pa{0&Xll*3#P@x{*Mun>O$*Xb9R%h#oy)UL&{$Me@;XhJlamvKMx*ULghcdO zKlM4C*BS(FCY`%sJg$sKB=-#41j!|HxNq!$MXkk}4{9#QI9&nXkW)}0+&^vI;?7f6 z|1zCVx>PI&T^^nz7FG(s8%&^_J!|Oovu+cTfrcA zo1gX_U_boxPu-iw`qSU;}!JS~Xer!2DdA$0F zdx}P7EBs0Gu))f``X*o<{x&**KVf$};R@X_e`ra(`ES2kshWusHv(mWQSSF?{8y&6 zE_Q6+HiE;wBioax)fX!v?t_oB_PjvtKKiEwtSp8G?|8T;b?y2s^T73}L%h(hrfo8t zOvxrq=Wf!SJZf7yexr8T-P(f?vg8z+W+<+InDS?&>DBWQ57sAgAIUlvEs;w11B|V; z(yCX*7)xJJ!EMz5kye<3e!^aOmdNqDYK#UT7*$HDI^775Hr8Tv2m_&zl|7E}$BP+O ztGm#-h(Kq{f55@gB`$P0`BC1n!gf#D1p`X=cVyt&>t8*3pSqc{k9X>51~_hX8uFAV6YPANs&DCvtzR;M?%t(>?E zL0JOp)4vEe%4FF20?(zn;Kn4MQYwVJRW9lv(eM|Gxux{|7Y-(Z_Sat=qROc?TY4Of z&F@@LzSZ4O$x^|kAHyTU&wVrr)9W+uI2`Hqhs+4%Bw0z-2H-@g>g^-QFq}49?t;UJ zJ>N%AZHi6=k6*X{CJ>>fAm#|G-<6OG03n$m3Os!an&DZIx;ApCJS`m^0qNAKj+eue zyYzV}X}lj-l6~mR{1Vx6>e2ZRD!7+2{62eNcqR7u4mNBKovnh@n39GbaC0UR9y&48 F{{y(eGeZCX literal 0 HcmV?d00001 diff --git a/res/+theme_light/icons/navbar_profiles.png b/res/+theme_light/icons/navbar_profiles.png new file mode 100644 index 0000000000000000000000000000000000000000..c15cfaf9f1fac12b87e378dd40beeec688017041 GIT binary patch literal 1607 zcmZ{lZB){E7RP^o3`1rtP*55i#s8Y2wHo4RK4aknZbymK49w8Bq*2rk$A`>ZmO3Mn znpusOXg<_hGZvvzKF2s_Ic3O>f{!PL3DGIiW(X&>-DO_xp0h9R{l59$bI-Y-d(SOr z#>d#BKSKim>>06imQ}fb1j^Q$^>u}NtO5yGF?+$i7cNTx*g_0?WMWa8Ny_259LGIT z1=f4=aU7eO@TA0X{l~{Mv8;keoxYbAZV^_Rw~EA3{mrN-k6pvgNaRk|6<93hVIsXw zKW&`mOT^BYev-uLahp?RGH+sHUiIl4O?SY8^x9}CwJ)<#_5RXi!nIQc&Cgkh;T=YAGLq6J{bq+q8E7ZCIOf1E)4e!~_OM*Sf5woV>P0rYIdeYayFFgnyy`(XkGni*9k zB@orOCK2CrT$2XM61~408XD@NEJ(U3y{`&u#El5BV{`|EA!Y1y=;w#{`T6Y*3E62; zXj~~HE)|!5Y*qPV$MSybgh={MutE;ZE1OS;i&OMjcjx&PADH^fc#d(7pH3(pzEfte zWcU5GVtUA~7^)Z0{mJj5h9dwsR)5)@V>#nS1hC{SzaayI4LS6x-v34}VXkz##RGqy z!{l_|{7{TlhJq`{0t!T8OI!)|ojWK>vsTX5mM@0KhrO{Q*FFnr5JcpO3TFK4$Bro2 zrmQ=@aP)_QxR0T;7Y2nLP}kdM&%k}g6!)0nw|ByEV}B4_Wuwdj)l19Ji=JgjSHAnx zm(^x(#O^P?NJ>df-S|sQlbVqu!Rb}OoV1NIvr`aW&u?-nBmRr{d z%5M_9)XtS0Ez?AWdwYEG_<+xew2+I60vTl?+9d%tXg zxs-A+D2~4R4<_g6c`>pn(c83Dr2AXoOR1o2Xm?4kZ{q&(n*;z4ZU*ahK@sjP3fC#h zKJ$ZXC;+?iKJI}J7$|UYyna040Sm|j{&X|q=|iZZsw!ujt82JDa5irG!3&;ozjM_d zV3#3bYmM&PY&TMi^R2m3Se4yyHsB%^9~@1ed*bxGdf>RHEk==h zS203h$4Ji6&8*zftEGW*(DjTLhCh3J@@R7Xi=G(k9Nj;%&QLR8FyO@~>|=rX$@Pe7 zoDi|nE;O2hA+)j+(fH%*O=O@#7sbmQs|DbMVSm{^kmm^K#@Lc+p8pAt1e>tc<*>8u zc6CyzOB$Okd4Ts}x1L+%T{qFqovT}@X+i?+PGWEP8r8K;Mna7&7>%uN+V|{z5LTEW z@9treH+&8V^78Ut&&|!{I@~Djz(b1`-wZ4&%Tz&G7?sknxljj`k|hfmDIp#dXO%A! ztvf#wRKNGSC;yE4r^IX^CLm~D@roBcKc^F%whwA%z8|UEyghtd$JsKmMexfdF#dQ~ zRm-1=Z($JvBlf1uqky{Y##jxUJl(NXp0!TWGeEcBiSXqdB18%f-xVCaza+?5bw0i5 z(eSB^41JBkV4ynOXrBtG9}82kEAwA@t~*VzYl5BI7^A(GUw(gXy0B+E|EB5)-Rv0% z5otIKHUcT+bbrSwaC21WG^-vx$G-c_n5sE6nebJ5H_3ExQxh`s*XdC8=~Mqa@hi{Q zc3h-9eQx8V;V7lnaNtUg#^n=QB3GU=mqf-{@7M4-GDdaQf>oF21k`9#<J^^lDEsP8fEzqgkw`VX5E&^rJC literal 0 HcmV?d00001 diff --git a/res/+theme_light/icons/navbar_rtdata.png b/res/+theme_light/icons/navbar_rtdata.png new file mode 100644 index 0000000000000000000000000000000000000000..28ae7d754c3df43c2c184329102e42dae5b02f29 GIT binary patch literal 2049 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 literal 0 HcmV?d00001 diff --git a/res/icons/navbar_appui.png b/res/icons/navbar_appui.png new file mode 100644 index 0000000000000000000000000000000000000000..f10a86acfba97d147f30ad76956d3e84255789c4 GIT binary patch literal 883 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGojKx9jP7LeL$-HD>VAl0?aSW-5 zdpp;#OT(mt7h?kz&C9af zQqq?#DZF~&|JKhMZ|a2i*VSMBUix*@8y#7n`O8?GF29t@6T0w2Z2|*lhR=eJ6?4() zhX0Wc=YAeJ6F2MT*<-&mO#dyOxz|H;ujKBAK=lRhe`m*Dua&hfS#*Iau2M4Tey)@!SmPHEzq5xwnNRqfWOo%8u7G|c(jI#c%5c9Sgu8DGsXoinZq*SKvlNt z0q?FUlNp2}^4GFdcup)5a$tJBb}ECuW{@9~N5bB%LJw43PszqIWX|2ZzVyFs!nY+J z41~z=bq;&G0$2Vt0JDiJ*Kl4do?-`lD=82pPFJ8|sl+baDQg3h+eKCcB zK}=bTk!O{|au$XS5`mlv0jyT43=Ky+ycn9bE@(0`=(vS2NrW`|aWW(rE)qJhfUCrd zfuUP)Dg#^Sf?y_wh@KTJ1}m863Nai=a#5wFkyRx?e|_J2&AsQS-&*6A0=eWpZ*NZj zy66oN}9s&mNJOuGo@) z@2@jc+ogT)-MMdshx#SBd1=e6|Cj4kw^RaPLL+@sj?{)L%4 z=MU4A-FNTZdjEZS+BY6qo7S4OU#})@tk@T$cmDXh=kr;5WLLfZCorMmSa~yxheI+` f@A20-=>H4_vuz8u?oH+a<{}19S3j3^P6Px+4@pEpRCr$Pom+?;MHGgscE=^V)TzwQu1mm6u82Ma6!RhqfyBMPUWSCs7blA;u(bMB=i__Nl#Prsp^vvLPFSzO z-PP^%YoBxK)cuCb;`u^|zs_!kh@R70Kjyh<>+qEYFgZC1 zt5&UwmQzAXc|a+(%~~aohLr_?h;%O903e9I2ayE#1r|loK`G@;DRFlLz$@HsXN^}m z0Q2+n8=KAMuNFeQ0056#*m*Un9DuZ;XHiWe+NHJL>s4Kg;FSUpMbS@E%F8VJEn2PC z`r+Z>qc*laZ7Ku67;`-lePJtB?;&ifl%<{R(6bn>2f$KT8#6@wM+i~3vF!oKqLPIz zB0eI7c+tZ2KPJ69Agf}_*b`CB7}LxeiinPCt=DJu^I>1=hcF_xgb@8%g(0H7TI*d| z{e0M$762k9Z?O-$h|;+Oc6RQ7w_JR=eM$)+ilR{|<)o_^tyXK@@bK_4SAR~wQUb_2 zEk*_c4yp(=!n*OL$`6b{7dl+n3i)divu&pk08>*_dSGB++BV6+?B?d?=Elax#tcVZg#gH7 z%E=+lxnd}#`lXb~f?-!j?f{H22Z<%E@^e05W}%yJGkylKC z`&}=sAjYflg`NRtVM0`~U@j$3zI^=a70E|2MrMj>K=yv~BYR35+ zyaWKrUSux^JAjH!Ie!5FtKuK7bXWl(;#We5Yh05F$xlkzQc9iYJ0~^(#+b{A=zHG@ z=M~?_jAyyr*#J~&=!xUFQLopN0wCTG766Ete8Zo7%U}AV^KsZ#rPSwnb%YB53L#Wp zN&9Mth+flL=Q@4n0+1BR3+k)mtdNTOYJvqo6h&7{DZkFz>45BG0H_s_4-0@K@w`4S z^dVASGaj$ApwkeNmCrpsMDi7rh(@*6Q@-M-#bvt#(i%!TZ;W}Gh@MEZ<2+A9+qBjP zIAdmw6$}7GOp0)@{m_vn1QG4iTJK1+^L;)f0Ou^W%_&5uYVNU4)!eS@PH^P(e+1A5 zfXsE~IK=k;5bh?)yp}SGobdz;Ag_G_Qpz<-sT18?DBQk53_)4zKD&s}-`{`R(9jS| z$s3pUSMmu3z_Uc;^M7651Ax0Yh2x491OP<*NeJQVm#50MN%R z8fUyp15ir!Nhy87W#Ld+01FEX7mkjO{=uS>#~_6RAfkR_Oj3lK^SBcLKHv=KD^}qE zj4?M5(I<=@{0IQiCTt<`E91_uX^_zJ8!zli&~|R!tQ`YRae+s zyuGtQ`u$2Pf4Xyp14!~1A0Mx6*|Oy!Ddi!hRHZ6wrCmfp07y%+%IE(Ddp>J_O_j?h P00000NkvXXu0mjfA>(K4 literal 0 HcmV?d00001 diff --git a/res/icons/navbar_customconf.png b/res/icons/navbar_customconf.png new file mode 100644 index 0000000000000000000000000000000000000000..7ccc2bdfa5619e6d01371041136d980e4d96a7c8 GIT binary patch literal 1700 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 literal 0 HcmV?d00001 diff --git a/res/icons/navbar_lispbm.png b/res/icons/navbar_lispbm.png new file mode 100644 index 0000000000000000000000000000000000000000..4673a3ff7f5c53898f387ab929b12205bf653da8 GIT binary patch literal 2202 zcma);`#;l<9>+hM$&ho{Ca9vyS(B8@J#kVY)2Nm3u!x~wy#PqAxTZ5uk#i-(LX=6^5rlB_k#2^!}K!em|8UUa{M4Wrj>F~MZ$8t>Y`mXd;mrl!+*hn6a zt>u2ZHu@3d_ns2gZ&_8ik!)Q0QkFYX54Q%o3e|Fzye_1sd*$N3Znr7WSb#ACFB+dG zML3-Zk=4CC8ZmL`;kH!jk(y4wtezMv2A{MPnhjXXvx>TO zz7iCmZy&d(EL$jpt4F>WN>{+d{f_}LzJ({MWVIHvSt4_>;gSWiVG8nfaBy&#!{L;c zlMkFH0=r)8C+EY5w%)}cs(yv{j?69#g`o)yBQY-MCOgE4fF1CnHK;KgpwP>;HKv3W zw(yoYZ*N5`1HMqdxmG^wB8wF^nnVk%c)ky}&(yUyLaCD|p#6RFPPeAYHBU_FcgEEc zXM6E^yjZ1D@iq>3$FwLyR|{l6h%an7^`{jlfn5s#bN}!l*;~gfVpj<6V9|Fts3vS> zx(s$wa0`wfQe5k6%VW(imsdT^`B)5+jfLvt^FbKjoy$hZie6hIT80i_N_?q^-fhrd z>2`rUb5WQ|?YThmPQXg8B;U_J?f`LGN(I`_74LA<9V&8_5~I}192@6rUY;;TX57Bf z5inC2;C6k*5V%Ca~ z6OG<=7G$U6Ndfu-p^RU#b}UXFEqKSre05q%1k40W1lH66&IF{oVZ;9Oz^S5<%)u6g zVWchx+ql>CsBYQ()l2;wCj1L%_tX-R?_FU@-`oqTd~kd>J6cSj`xJBEi5^>;%mz=6 zrO=Q}?su@*xtg))X{p+pi=wF`Gq{r;Eu-V;efx~sinykIU?5^{pkSUP-yd37$+aR7hJ#2dA8cSZGUQfK>F(e)Z`ZAnDVxZuPpo0^sTQHTrywM z$^s~#i^v|VQf<|)oCN}K>Rc%E%t?x=Ia-rCSqUh~nq^Ig-YT^_E0xBg*7@F=!g~17 z&)uKM8|#a}^^QTIZHV`PyQGlZ+}ul)t_y^SXu-lW9>uxG3VvUBU+DL!=7txr>w*R# z_cpo7UFkkkvC=jmmV=ZhvMC>RhuTNJ+a^IVuc@;CI@n!)BR0%f(B@e z?y0G%3r=%hV(G2@8YPYthwww^g0sv!hr^2yF)p&hS^M@_$K;&)X~9+*xRdj=_v)y( z_&x&7$Q&~r=PX5*ylaTuJFV3L`sbqsU4b+46$#N@;gpd2S8r2QNeI0z+hv#fax0Yv z-z}#D*;mZiao7M>Ix2A-8OF@wR~8|PQC+kqOHGQwe!dNLS8`vh-{qQpt_~}L{|tP? z8EHpNu1(Kwn|Kq|+udGQS660~*YjJ9$WnM_Sam$<408dGvHRqMtyM$yal9%%SUG;~ z((LuZ$`iZIf%kZ(B=y)g)-%6zt!y9CYSm`$b?zlLoBd~ZclYD{-V*+FOXYHd^TcYW zm1>nW6-zPZLQDHD&9Ts{>vZ1Qea8>nl}Mo7-u^*TQ`25oV}hnv7vL7C8JkwYZ3Br9 z7BC~Yc2QU`&Y&yC)hE6+PvMW7(AH|1qe+>?NLt1}0U4BNShT6re4NIM>QQKgt^Ed^vNZ`L7oU7n2!x7QLE?4r_EI*t!-lJz&F;O%NWDn(-rK@a=E|k?#JU0<+ ztS(2HE9tmLs$Zmxq&SaGu3grb!egtWd5WV?i*3~Se7=E;k&b-yR~hbohw;rV`4#!L zTQ*Wz6BxgF1?!kNv7D9Htfzc*PT@F5&l!K2$Mk1g|L$=X73VQ#Z46qppZ)6&;9rjZ z_mlrz)((rqd8H@GgZF?Z+M)<>p2I6d!<7hr5Jckc>*p7K5RGo9A7&ERQ{yD}5~BY! zG+N`SVGAj4jm`zM=X~lkq1)oOE(b&O`@Ql12ZMt*1wr(4F;6Bps0g(-%*+}H*-CN( a{Q}!=MqJw;h}GSAHUJ{t57&UDX8jFq*8pPx literal 0 HcmV?d00001 diff --git a/res/icons/navbar_mcconf.png b/res/icons/navbar_mcconf.png new file mode 100644 index 0000000000000000000000000000000000000000..cc3149d9c5db5c3a543477e3f82c2e6d0cc46512 GIT binary patch literal 1835 zcma)7dpHyN8~?6ZliC=OGM6(#r7}Y<9oJEYxun=cqITR)H@B>0>7*@@gf@PN4q1$_ zGLB9(x8IK_x01_7V`hzVDRJbt^ZcIY_s8$A-yiS$dEWPVpZ9&A_w#w4m*Gu3f>7F} z1OPy|9mV^~G30Mk+${H#%mgbrKw^B4IDx7jv;=_7Q*L-izste00(Uz4`1aIZiG)a* zx$*?({Etop>|U%^8!cn&p-G(Ga};L9K~+$l{!kCq(&6gpZJw8@*g`jM56adwn0=M5 z?03>Q%p>%U!gkly(Y&3wu{e*Lk{aBQG+sb_?J@RYh`m^}`m(XU;@ntZy72i)?dFq% z1y)wT`ji5a2F*bUej0oNuAPx0=HGhej00c^(3po#>~tN^|-ei0cN@??9_rV zx0kKs;kcI&pv+VxWgzIreIb-4 z2(TP5FMx*3GN&%Xn`?{9BxrD~!=%F&x~KSZkH8wZ_yyG%_wgc(1ZZ6Xk!XUr^=t4_;C-}tg)U7nHGZF=et zi#d6?Jc2hNfmj^s5-06##Ebb(x_K>bxHzDJ$Cj z@P5sBKZsvyNZ+I?=g#Z)(YDmg*J%2CZ^ClZ0m=_mP<4l$v=8;-jVy8ZexJN|?hX)P z9ESRPAT%q(>&gcrd7b&JD)EJ@iOe8cQ{^!hi>;|0j{Z^TcLR|G*K0pbL9VSo-MBl3 zru_zc6TvZxNPZFgQWa&dK#MuHfc7T*ipS6S^**CnikXRUFgn6u(Rq%0;+mHN-~e!k zwD4zMvJ+!IqP~b$R#s{UEBw7Eua9ejKj#H#g_a}x!|)=V-o^L`j=lQ5sJdOb*mG*A z7rosRi~Z}k4zxcZNYg2@*GCa_{{;cj-QmGr{IbW7-)%!6)`wI{OMnu*S5nv*$!uDm zi+BqSnZ5`DC^J6${))g*ug%qjg@w8MR|eEPO8eG#SM_bw>2VC05%G0cw{~)e*6<Z zxX>8rHnJ!S@Og)II3F5;X~3C<4cuL<_-KW&d9v0$Cu6THmZo3vpKrr@gJ@B364 zho$K8%1>0R_j!Knx5;JALuoQ(GaAmcMoWh?2bsjv9v&W*k(T)#wX@sHV5TwQ|9Vo{ z9;>9suGp7D*e4gDuB;(VL1+sC1W{nZcIk5vHM>V7GC(LR7hz3&H33;#?;^?whROwI zu9#9SZ?l;;zxDv;_}McXi&@}_6Avcz%eZ56bIz@u#SA9_taLQhlIV%8F?+pRQe6F1 zzN+q)6yfDQbsdG4Ml#28$a7!FG#nBV=!Enk?B61`cowRWw8PxO;@LSWbyd8rT?v(A z*4mbOX6J&U@_`R);QqvnJtLf_rkJX`UEqqJ5C%=I(VFZ}6;1Pr7(ziy=JJzhwR}v; zb@MMnKUk%{8)wps82N+D`n07!qOnv+f&-$v{-hd#{UB>LWcp`t;R=}(^DV8DDNdBC z20BRfILk!TaOmDX{z?Mfc;T8I;XaGMh3ggP{&|w_Z#}y|rd1IBLLRyy89!TNY+!W@7O_%|n{YbktWq zvfpJt;EIuAg*~M`0Vnbs9UdKNo63r(ypmDy+r+VjbApbJj(6EzQ~DZPZQSs6hDECg zsw+M+hcGpG{rdF{$#x}&tbdZFk1$zZZLs(5(+^7$$I}c=wP}|1uM!KAl9FCxCLb~w znA(oTrq+$EXAjEi*@D`05$ponfjk#V+WLVI0OH4F;xEjfSU^uU*!~% F@^3yPV)p<5 literal 0 HcmV?d00001 diff --git a/res/icons/navbar_profiles.png b/res/icons/navbar_profiles.png new file mode 100644 index 0000000000000000000000000000000000000000..cacc764ba68aac91f18674ce62e63306ff360f16 GIT binary patch literal 1631 zcmai#YgChU9LN7-V-m99L5kr8c9!ClOx6%2Zrgk|km9C62(m3fF2ezWOd+5t8V|H_ z$xxUCYbG47bLHHGK@^A_8RJYYf*5v4XRrpsfaIb^ol|c*r(S%2-*Z0a{9b)td<#Q^ z{c)C?Edcad}S1tfbP(gOd!mGrcq$GQuX&ZC<0RNhExk1VcNAoU;h*rMdMG zj@e;Ei1df+br?TBYw@?1Rq_+>3S8e8nQg77YZLe@Ul|^SFTM(Dugn@8v{(+D2G0G} z7Y|@dpEF8PaiDNpK$UL@6fO#Le3*>}}ty$98J=fZ02vbh!Ndi^W{-8zBBA1X{xQixep4+E5kFzN{!C z#hS>nZDsB~MNGekHxY?N&NUu_Vkkp=`)Ta>1rb3S)u&lSaXt#ro)`PTH|~3U?;((q zShViCTzi(CvIMCfO57sq840{LFJcbvl{ZHiYO~w(9@aUg0*yBc7;@h9@z+>EU)AZ} zHQ9kGnQkGh>Gw}+u!8A{o1<35d2Kki(sMVPi|=@meZ@8zNu`;3ZtJ5(z}H;RX12wP z2`iIsXx1=5UAzAJTQt0Yg!oKsa`p7QmBi;SeK{cgJQj}oPO)U)JmPse5Oz<>Ec_*$ zO>IY=n&}$^*O_BKZ-qppeFoi*^@H?k7&D&Y$$N(Jgjy z8)|1cV59Flmuga4jNTG28q7|##4n8|g02+KiB}HPru?!ME5g0b$Skalf%A*(j)oV~PJG-YwKnV2{C?BP zZ*5lV0gdsRbCV*4R>s3P38^T==44w49a`2#wGE-YYIa2A3M~a0DRs!!A=No#03XX5 zPW)_FggIfMAl+y^Zvs6%JtLyx;%XG25JH1D>6k&y6F}UrKd>%N5I<)wFM)JhqIje< zUUhk~U(WMqy~W$S)O@pSG^uFP3ATD*6e2;f!s&30hK=g%ci{z>jF_r1sX#7c8hIpl zc8QSnt|;|;2kPa3OmycgNISx5Pe2m$nTD#>NO(q#ef8(kq5x8}sh>y3QZ)1NzHt{&Itf@dn`pugM+3cHn`Gxk23 zFpY6BTARLBwjKAH2^0LKPH+lMU7kwdaoQ&eM*C&6RbIP@m$CZy-!WhX^Utr(q%kt7i3ta>UVa{H=Vk3%*n0{xCH& m0TdSghp&GL{09`G);63uGLSY_O-No}3~-PU47boZ=l%e@m*kiL literal 0 HcmV?d00001 diff --git a/res/icons/navbar_rtdata.png b/res/icons/navbar_rtdata.png new file mode 100644 index 0000000000000000000000000000000000000000..1e256ecb38cd34be4ce8e2214fb3e431f5b0f592 GIT binary patch literal 2064 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 Ri+BJ4002ovPDHLkV1iuPYuo?; literal 0 HcmV?d00001 From 5eddfc4e8e726f3a9edd879b1242fc6c549dc4b3 Mon Sep 17 00:00:00 2001 From: MingoMGx Date: Fri, 6 Mar 2026 10:59:49 +0100 Subject: [PATCH 2/4] Update res file for navbar icons --- res.qrc | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/res.qrc b/res.qrc index c59721028..a4bddaa33 100644 --- a/res.qrc +++ b/res.qrc @@ -187,6 +187,28 @@ res/icons_textedit/Align Center-96.png res/icons_textedit/Add Image-96.png res/logo_vertical.png + res/icons/navbar_start.png + res/icons/navbar_rtdata.png + res/icons/navbar_bms.png + res/icons/navbar_profiles.png + res/icons/navbar_terminal.png + res/icons/navbar_lispbm.png + res/icons/navbar_motorcfg.png + res/icons/navbar_appcfg.png + res/icons/navbar_customcfg.png + res/icons/navbar_hwui.png + res/icons/navbar_appui.png + res/+theme_light/icons/navbar_start.png + res/+theme_light/icons/navbar_rtdata.png + res/+theme_light/icons/navbar_bms.png + res/+theme_light/icons/navbar_profiles.png + res/+theme_light/icons/navbar_terminal.png + res/+theme_light/icons/navbar_lispbm.png + res/+theme_light/icons/navbar_motorcfg.png + res/+theme_light/icons/navbar_appcfg.png + res/+theme_light/icons/navbar_customcfg.png + res/+theme_light/icons/navbar_hwui.png + res/+theme_light/icons/navbar_appui.png res/+theme_light/icons/Wizard-96.png res/+theme_light/icons/Wii-96.png res/+theme_light/icons/Waypoint Map-96.png From 33bef6fd50d6bb6ff8973dbf91a0249dae66deb5 Mon Sep 17 00:00:00 2001 From: MingoMGx Date: Fri, 6 Mar 2026 11:06:38 +0100 Subject: [PATCH 3/4] fix file names: update res file for navbar icons --- res.qrc | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/res.qrc b/res.qrc index a4bddaa33..330700b36 100644 --- a/res.qrc +++ b/res.qrc @@ -193,9 +193,9 @@ res/icons/navbar_profiles.png res/icons/navbar_terminal.png res/icons/navbar_lispbm.png - res/icons/navbar_motorcfg.png - res/icons/navbar_appcfg.png - res/icons/navbar_customcfg.png + res/icons/navbar_mcconf.png + res/icons/navbar_appconf.png + res/icons/navbar_customconf.png res/icons/navbar_hwui.png res/icons/navbar_appui.png res/+theme_light/icons/navbar_start.png @@ -204,9 +204,9 @@ res/+theme_light/icons/navbar_profiles.png res/+theme_light/icons/navbar_terminal.png res/+theme_light/icons/navbar_lispbm.png - res/+theme_light/icons/navbar_motorcfg.png - res/+theme_light/icons/navbar_appcfg.png - res/+theme_light/icons/navbar_customcfg.png + res/+theme_light/icons/navbar_mcconf.png + res/+theme_light/icons/navbar_appconf.png + res/+theme_light/icons/navbar_customconf.png res/+theme_light/icons/navbar_hwui.png res/+theme_light/icons/navbar_appui.png res/+theme_light/icons/Wizard-96.png From 0804ab5f7986aed1d8fa9f4bbcdbd57f66cb328c Mon Sep 17 00:00:00 2001 From: MingoMGx Date: Fri, 6 Mar 2026 15:32:44 +0100 Subject: [PATCH 4/4] Improve mobile navigation by switching to a bottom navigation bar, status bar moved up, always show motor and app cfg like desktop --- mobile/main.qml | 436 +++++++++++++++++++++++++++++++----------------- 1 file changed, 279 insertions(+), 157 deletions(-) diff --git a/mobile/main.qml b/mobile/main.qml index 512d0bfec..1f15543d7 100644 --- a/mobile/main.qml +++ b/mobile/main.qml @@ -16,12 +16,13 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ - + import QtQuick 2.10 import QtQuick.Controls 2.10 import QtQuick.Controls.Material 2.2 import QtQuick.Layouts 1.3 import QtQuick.Window 2.10 +import QtGraphicalEffects 1.0 import Vedder.vesc.vescinterface 1.0 import Vedder.vesc.commands 1.0 @@ -48,7 +49,6 @@ ApplicationWindow { property int notchRight: 0 property int notchBot: 0 property int notchTop: 0 - property bool mainIsHorizontal: appWindow.width > appWindow.height // https://github.com/ekke/c2gQtWS_x/blob/master/qml/main.qml flags: Qt.platform.os === "ios" ? (Qt.Window | Qt.MaximizeUsingFullscreenGeometryHint) : Qt.Window @@ -67,22 +67,28 @@ ApplicationWindow { Timer { id: oriTimer - interval: 100 - running: true - repeat: true - + interval: 100; running: true; repeat: false onTriggered: { updateNotch() } } Screen.orientationUpdateMask: Qt.LandscapeOrientation | Qt.PortraitOrientation + Screen.onPrimaryOrientationChanged: { + oriTimer.start() + } Component.onCompleted: { if (!VescIf.isIntroDone()) { introWizard.openDialog() } updateNotch() + mainSwipeView.insertItem(4, confPageApp) + tabBar.insertItem(4, confAppButton) + mainSwipeView.insertItem(4, confPageMotor) + tabBar.insertItem(4, confMotorButton) + confPageMotor.visible = true + confPageApp.visible = true Utility.keepScreenOn(VescIf.keepScreenOn()) Utility.allowScreenRotation(VescIf.getAllowScreenRotation()) Utility.stopGnssForegroundService() @@ -302,7 +308,6 @@ ApplicationWindow { anchors.fill: parent anchors.leftMargin: 10 anchors.rightMargin: 10 - isHorizontal: mainIsHorizontal onRequestOpenControls: { controls.openDialog() @@ -368,7 +373,6 @@ ApplicationWindow { sourceComponent: RtData { anchors.fill: parent updateData: tabBar.currentIndex == (1 + indexOffset()) && rtSwipeView.currentIndex == 0 - isHorizontal: mainIsHorizontal } } } @@ -382,7 +386,6 @@ ApplicationWindow { anchors.fill: parent dialogParent: mainSwipeView updateData: tabBar.currentIndex == (1 + indexOffset()) && rtSwipeView.currentIndex == 1 - isHorizontal: mainIsHorizontal } } } @@ -435,7 +438,6 @@ ApplicationWindow { sourceComponent: StatPage { anchors.fill: parent - isHorizontal: mainIsHorizontal } } } @@ -450,7 +452,6 @@ ApplicationWindow { visible: status == Loader.Ready sourceComponent: BMS { anchors.fill: parent - isHorizontal: mainIsHorizontal } } } @@ -496,15 +497,128 @@ ApplicationWindow { } } + // --- HEADER: Connection status bar (moved from footer) --- header: Rectangle { id: headerBar + clip: true + color: Utility.getAppHexColor("lightBackground") + width: parent.width + height: 35 + notchTop + Rectangle { + anchors.left: parent.left + anchors.right: parent.right + anchors.top: parent.top + height: parent.height/2.0 + gradient: Gradient { + GradientStop { position: 0.0; color: "#15ffffff"} + GradientStop { position: 0.3; color: "#04ffffff"} + GradientStop { position: 1.0; color: "transparent" } + } + } + Behavior on color { + ColorAnimation { + duration: 200; + easing.type: Easing.OutBounce + easing.overshoot: 3 + } + } + + RowLayout { + enabled: true + anchors.fill: parent + spacing: 0 + ToolButton { + id: settingsButton + Layout.fillHeight: true + Layout.preferredWidth: 70 + Image { + anchors.centerIn: parent + anchors.verticalCenterOffset: notchTop/2 + antialiasing: true + height: parent.width*0.35 + width: height + source: "qrc" + Utility.getThemePath() + "icons/Settings-96.png" + } + onClicked: { + if (drawer.visible) { + drawer.close() + } else { + drawer.open() + } + } + } + Rectangle{ + Layout.fillHeight: true + Layout.preferredWidth: 1 + color: "#33000000" + } + Rectangle{ + Layout.fillHeight: true + Layout.preferredWidth: 1 + color: "#33ffffff" + } + ColumnLayout{ + spacing: 0 + Layout.fillWidth: true + Layout.fillHeight: true + Rectangle{ + Layout.fillWidth: true + Layout.preferredHeight: notchTop + opacity: 0 + } + Text { + id: connectedText + Layout.fillWidth: true + Layout.fillHeight: true + color: Utility.getAppHexColor("lightText") + text: VescIf.getConnectedPortName() + verticalAlignment: Text.AlignVCenter + horizontalAlignment: Text.AlignHCenter + wrapMode: Text.Wrap + } + } + Rectangle{ + Layout.fillHeight: true + Layout.preferredWidth: 1 + color: "#33000000" + } + Rectangle{ + Layout.fillHeight: true + Layout.preferredWidth: 1 + color: "#33ffffff" + } + ToolButton { + Layout.fillHeight: true + Layout.preferredWidth: 70 + Image { + anchors.centerIn: parent + anchors.verticalCenterOffset: notchTop/2 + antialiasing: true + height: parent.width*0.35 + width: height + source: "qrc" + Utility.getThemePath() + "icons/can_off.png" + } + onClicked: { + if (canDrawerLoader.item.visible) { + canDrawerLoader.item.close() + } else { + canDrawerLoader.item.open() + } + } + } + } + } + + // --- FOOTER: Tab navigation bar (moved from header) --- + footer: Rectangle { + id: connectedRect color: Utility.getAppHexColor("lightestBackground") - height: tabBar.implicitHeight + notchTop // iPhone X Workaround + height: tabBar.implicitHeight + notchBot RowLayout { anchors.left: parent.left anchors.right: parent.right - anchors.bottom: parent.bottom + anchors.top: parent.top spacing: 0 TabBar { @@ -512,6 +626,7 @@ ApplicationWindow { currentIndex: mainSwipeView.currentIndex Layout.fillWidth: true implicitWidth: 0 + implicitHeight: 48 clip: true background: Rectangle { @@ -519,7 +634,19 @@ ApplicationWindow { color: Utility.getAppHexColor("lightBackground") } - property int buttonWidth: Math.max(120, + // Disable touch-scrolling and all programmatic scrolling + contentItem: ListView { + model: tabBar.contentModel + interactive: false + spacing: tabBar.spacing + orientation: ListView.Horizontal + boundsBehavior: Flickable.StopAtBounds + highlightRangeMode: ListView.NoHighlightRange + highlightMoveDuration: 0 + clip: true + } + + property int buttonWidth: Math.max(50, tabBar.width / (rep.model.length + (uiHwPage.visible ? 1 : 0) + @@ -530,11 +657,38 @@ ApplicationWindow { Repeater { id: rep - model: ["Start", "RT Data", "BMS", "Profiles", "Terminal", "LispBM"] + model: [ + "icons/navbar_start.png", + "icons/navbar_rtdata.png", + "icons/navbar_bms.png", + "icons/navbar_profiles.png", + "icons/navbar_terminal.png", + "icons/navbar_lispbm.png" + ] TabButton { - text: modelData width: tabBar.buttonWidth + implicitHeight: 48 + background: Rectangle { color: "transparent" } + contentItem: Item { + anchors.fill: parent + Image { + id: repImg + anchors.centerIn: parent + source: "qrc:/res/" + modelData + sourceSize.width: 96 + sourceSize.height: 96 + width: 28 + height: 28 + fillMode: Image.PreserveAspectFit + visible: false + } + ColorOverlay { + anchors.fill: repImg + source: repImg + color: parent.parent.checked ? Material.accent : Utility.getAppHexColor("lightText") + } + } } } } @@ -544,8 +698,28 @@ ApplicationWindow { TabButton { id: uiHwButton visible: uiHwPage.visible - text: "HwUi" width: tabBar.buttonWidth + implicitHeight: 48 + background: Rectangle { color: "transparent" } + contentItem: Item { + anchors.fill: parent + Image { + id: imgHw + anchors.centerIn: parent + source: "qrc:/res/icons/navbar_hwui.png" + sourceSize.width: 96 + sourceSize.height: 96 + width: 28 + height: 28 + fillMode: Image.PreserveAspectFit + visible: false + } + ColorOverlay { + anchors.fill: imgHw + source: imgHw + color: parent.parent.checked ? Material.accent : Utility.getAppHexColor("lightText") + } + } } Page { @@ -563,8 +737,28 @@ ApplicationWindow { TabButton { id: uiAppButton visible: uiAppPage.visible - text: "AppUi" width: tabBar.buttonWidth + implicitHeight: 48 + background: Rectangle { color: "transparent" } + contentItem: Item { + anchors.fill: parent + Image { + id: imgApp + anchors.centerIn: parent + source: "qrc:/res/icons/navbar_appui.png" + sourceSize.width: 96 + sourceSize.height: 96 + width: 28 + height: 28 + fillMode: Image.PreserveAspectFit + visible: false + } + ColorOverlay { + anchors.fill: imgApp + source: imgApp + color: parent.parent.checked ? Material.accent : Utility.getAppHexColor("lightText") + } + } } Page { @@ -582,22 +776,82 @@ ApplicationWindow { TabButton { id: confMotorButton visible: confPageMotor.visible - text: "Motor Cfg" width: tabBar.buttonWidth + implicitHeight: 48 + background: Rectangle { color: "transparent" } + contentItem: Item { + anchors.fill: parent + Image { + id: imgMotor + anchors.centerIn: parent + source: "qrc:/res/icons/navbar_mcconf.png" + sourceSize.width: 96 + sourceSize.height: 96 + width: 28 + height: 28 + fillMode: Image.PreserveAspectFit + visible: false + } + ColorOverlay { + anchors.fill: imgMotor + source: imgMotor + color: parent.parent.checked ? Material.accent : Utility.getAppHexColor("lightText") + } + } } TabButton { id: confAppButton visible: confPageApp.visible - text: "App Cfg" width: tabBar.buttonWidth + implicitHeight: 48 + background: Rectangle { color: "transparent" } + contentItem: Item { + anchors.fill: parent + Image { + id: imgAppConf + anchors.centerIn: parent + source: "qrc:/res/icons/navbar_appconf.png" + sourceSize.width: 96 + sourceSize.height: 96 + width: 28 + height: 28 + fillMode: Image.PreserveAspectFit + visible: false + } + ColorOverlay { + anchors.fill: imgAppConf + source: imgAppConf + color: parent.parent.checked ? Material.accent : Utility.getAppHexColor("lightText") + } + } } TabButton { id: confCustomButton visible: confCustomPage.visible - text: "Custom Cfg" width: tabBar.buttonWidth + implicitHeight: 48 + background: Rectangle { color: "transparent" } + contentItem: Item { + anchors.fill: parent + Image { + id: imgCustom + anchors.centerIn: parent + source: "qrc:/res/icons/navbar_customconf.png" + sourceSize.width: 96 + sourceSize.height: 96 + width: 28 + height: 28 + fillMode: Image.PreserveAspectFit + visible: false + } + ColorOverlay { + anchors.fill: imgCustom + source: imgCustom + color: parent.parent.checked ? Material.accent : Utility.getAppHexColor("lightText") + } + } } Page { @@ -613,7 +867,6 @@ ApplicationWindow { dialogParent: mainSwipeView anchors.leftMargin: 10 anchors.rightMargin: 10 - isHorizontal: mainIsHorizontal } } } @@ -631,7 +884,6 @@ ApplicationWindow { anchors.fill: parent anchors.leftMargin: 10 anchors.rightMargin: 10 - isHorizontal: mainIsHorizontal } } } @@ -648,119 +900,6 @@ ApplicationWindow { anchors.fill: parent anchors.leftMargin: 10 anchors.rightMargin: 10 - isHorizontal: mainIsHorizontal - } - } - } - - footer: Rectangle { - id: connectedRect - clip: true - color: Utility.getAppHexColor("lightBackground") - width: parent.width - height: 35 + notchBot - Rectangle { - anchors.left: parent.left - anchors.right: parent.right - anchors.top:parent.top - height: parent.height/2.0 - gradient: Gradient { - GradientStop { position: 0.0; color: "#15ffffff"} - GradientStop { position: 0.3; color: "#04ffffff"} - GradientStop { position: 1.0; color: "transparent" } - } - } - Behavior on color { - ColorAnimation { - duration: 200; - easing.type: Easing.OutBounce - easing.overshoot: 3 - } - } - - RowLayout{ - enabled:true - anchors.fill: parent - spacing: 0 - ToolButton { - id:settingsButton - Layout.fillHeight: true - Layout.preferredWidth: 70 - Image { - anchors.centerIn: parent - anchors.verticalCenterOffset: -notchBot/2 - antialiasing: true - height: parent.width*0.35 - width: height - source: "qrc" + Utility.getThemePath() + "icons/Settings-96.png" - } - onClicked: { - if (drawer.visible) { - drawer.close() - } else { - drawer.open() - } - } - - } - Rectangle{ - Layout.fillHeight: true - Layout.preferredWidth: 1 - color: "#33000000" - } - Rectangle{ - Layout.fillHeight: true - Layout.preferredWidth: 1 - color: "#33ffffff" - } - ColumnLayout{ - spacing: 0 - Layout.fillWidth: true - Layout.fillHeight: true - Text { - id: connectedText - Layout.fillWidth: true - Layout.fillHeight: true - color: Utility.getAppHexColor("lightText") - text: VescIf.getConnectedPortName() - verticalAlignment: Text.AlignVCenter - horizontalAlignment: Text.AlignHCenter - wrapMode: Text.Wrap - } - Rectangle{ - Layout.fillWidth: true - Layout.preferredHeight: notchBot - opacity: 0 - } - } - Rectangle{ - Layout.fillHeight: true - Layout.preferredWidth: 1 - color: "#33000000" - } - Rectangle{ - Layout.fillHeight: true - Layout.preferredWidth: 1 - color: "#33ffffff" - } - ToolButton { - Layout.fillHeight: true - Layout.preferredWidth: 70 - Image { - anchors.centerIn: parent - anchors.verticalCenterOffset: -notchBot/2 - antialiasing: true - height: parent.width*0.35 - width: height - source: "qrc" + Utility.getThemePath() + "icons/can_off.png" - } - onClicked: { - if (canDrawerLoader.item.visible) { - canDrawerLoader.item.close() - } else { - canDrawerLoader.item.open() - } - } } } } @@ -806,7 +945,7 @@ ApplicationWindow { repeat: false onTriggered: { connectedText.text = VescIf.getConnectedPortName() - connectedRect.color = Utility.getAppHexColor("lightBackground") + headerBar.color = Utility.getAppHexColor("lightBackground") } } @@ -983,7 +1122,7 @@ ApplicationWindow { tabBar.insertItem(1, uiHwButton) uiHwPage.visible = true - uiHwButton.text = "HwUi" + uiHwButton.text = "" if (hwUiObj.tabTitle) { uiHwButton.text = hwUiObj.tabTitle } @@ -1010,7 +1149,7 @@ ApplicationWindow { tabBar.insertItem(1, uiAppButton) uiAppPage.visible = true - uiAppButton.text = "AppUi" + uiAppButton.text = "" if (appUiObj.tabTitle) { uiAppButton.text = appUiObj.tabTitle } @@ -1094,7 +1233,7 @@ ApplicationWindow { function onStatusMessage(msg, isGood) { connectedText.text = msg - connectedRect.color = isGood ? Utility.getAppHexColor("lightAccent") : Utility.getAppHexColor("red") + headerBar.color = isGood ? Utility.getAppHexColor("lightAccent") : Utility.getAppHexColor("red") statusTimer.restart() } @@ -1113,23 +1252,6 @@ ApplicationWindow { function onFwRxChanged(rx, limited) { if (rx) { - if (VescIf.getFwSupportsConfiguration()) { - confPageMotor.visible = true - confPageApp.visible = true - - mainSwipeView.insertItem(4, confPageApp) - tabBar.insertItem(4, confAppButton) - mainSwipeView.insertItem(4, confPageMotor) - tabBar.insertItem(4, confMotorButton) - } else { - confPageMotor.visible = false - confPageApp.visible = false - confPageMotor.parent = null - confPageApp.parent = null - confMotorButton.parent = null - confAppButton.parent = null - } - if (VescIf.getFwSupportsConfiguration()) { confTimer.restart() confTimer.mcConfRx = false