From adf0f26da05e3a7ef59096a55ff04c49044e4468 Mon Sep 17 00:00:00 2001 From: Thomas Peterson Date: Thu, 5 Feb 2026 18:19:26 +0100 Subject: [PATCH] Fixes --- .../index/ArcWidget.cpp.C855CC6EB2D676E3.idx | Bin 0 -> 9560 bytes .../index/ArcWidget.hpp.6C1EF191718DCFF6.idx | Bin 0 -> 1160 bytes ...uttonMatrixWidget.cpp.13156E59C1946347.idx | Bin 0 -> 7400 bytes ...uttonMatrixWidget.hpp.580A8B6A2F8B776F.idx | Bin 0 -> 1098 bytes .../ChartWidget.cpp.344F8561CCF752B4.idx | Bin 7680 -> 7644 bytes .../ClockWidget.cpp.6053C0339E915CC8.idx | Bin 6246 -> 6706 bytes .../index/IconWidget.cpp.C804601C628F2FF0.idx | Bin 5408 -> 5876 bytes .../LabelWidget.cpp.86E5A1BF3C34B7BC.idx | Bin 11152 -> 11674 bytes .../index/LedWidget.cpp.3E101A9B7D9821AD.idx | Bin 3506 -> 3956 bytes .../PowerFlowWidget.cpp.8A280FD116CAAFED.idx | Bin 4428 -> 4814 bytes .../PowerNodeWidget.cpp.D068C7972720D9A3.idx | Bin 14662 -> 15096 bytes .../RectangleWidget.cpp.80D39D0F2AD3509D.idx | Bin 0 -> 3052 bytes .../RectangleWidget.hpp.C8D9E5E0438E507D.idx | Bin 0 -> 566 bytes ...mCardBubbleWidget.cpp.0672D353A93A1667.idx | Bin 6950 -> 7358 bytes ...oomCardTileWidget.cpp.4F5E3794B098F0B3.idx | Bin 10574 -> 8404 bytes .../TabPageWidget.cpp.8BA3B0713CBB6420.idx | Bin 3748 -> 4322 bytes .../index/Widget.cpp.63DB7B9186B85891.idx | Bin 7784 -> 8280 bytes .../WidgetConfig.cpp.FD56F9F36C29A5DA.idx | Bin 14862 -> 15718 bytes .../WidgetConfig.hpp.CAEFE2EEEB2A6996.idx | Bin 19156 -> 20130 bytes .../WidgetFactory.cpp.1026CAEFCA630F22.idx | Bin 3794 -> 4132 bytes .../WidgetManager.cpp.D8CE609DC911F13E.idx | Bin 62870 -> 66234 bytes main/CMakeLists.txt | 2 + main/WidgetConfig.cpp | 63 ++++ main/WidgetConfig.hpp | 16 +- main/WidgetManager.cpp | 58 +++- main/widgets/ArcWidget.cpp | 247 +++++++++++++++ main/widgets/ArcWidget.hpp | 23 ++ main/widgets/ButtonMatrixWidget.cpp | 157 ++++++++++ main/widgets/ButtonMatrixWidget.hpp | 22 ++ main/widgets/WidgetFactory.cpp | 6 + web-interface/src/components/SidebarLeft.vue | 8 + web-interface/src/components/SidebarRight.vue | 6 +- web-interface/src/components/TreeItem.vue | 41 ++- .../src/components/WidgetElement.vue | 6 +- .../widgets/elements/ArcElement.vue | 295 ++++++++++++++++++ .../widgets/elements/ButtonMatrixElement.vue | 107 +++++++ .../widgets/settings/ArcSettings.vue | 101 ++++++ .../widgets/settings/ButtonMatrixSettings.vue | 80 +++++ web-interface/src/constants.js | 78 ++++- web-interface/src/stores/editor.js | 55 +++- web-interface/src/utils.js | 2 + 41 files changed, 1359 insertions(+), 14 deletions(-) create mode 100644 .cache/clangd/index/ArcWidget.cpp.C855CC6EB2D676E3.idx create mode 100644 .cache/clangd/index/ArcWidget.hpp.6C1EF191718DCFF6.idx create mode 100644 .cache/clangd/index/ButtonMatrixWidget.cpp.13156E59C1946347.idx create mode 100644 .cache/clangd/index/ButtonMatrixWidget.hpp.580A8B6A2F8B776F.idx create mode 100644 .cache/clangd/index/RectangleWidget.cpp.80D39D0F2AD3509D.idx create mode 100644 .cache/clangd/index/RectangleWidget.hpp.C8D9E5E0438E507D.idx create mode 100644 main/widgets/ArcWidget.cpp create mode 100644 main/widgets/ArcWidget.hpp create mode 100644 main/widgets/ButtonMatrixWidget.cpp create mode 100644 main/widgets/ButtonMatrixWidget.hpp create mode 100644 web-interface/src/components/widgets/elements/ArcElement.vue create mode 100644 web-interface/src/components/widgets/elements/ButtonMatrixElement.vue create mode 100644 web-interface/src/components/widgets/settings/ArcSettings.vue create mode 100644 web-interface/src/components/widgets/settings/ButtonMatrixSettings.vue diff --git a/.cache/clangd/index/ArcWidget.cpp.C855CC6EB2D676E3.idx b/.cache/clangd/index/ArcWidget.cpp.C855CC6EB2D676E3.idx new file mode 100644 index 0000000000000000000000000000000000000000..042a7b2c6440449d87af72bf7e50bd9f1eb0356b GIT binary patch literal 9560 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 A=Kufz literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/ArcWidget.hpp.6C1EF191718DCFF6.idx b/.cache/clangd/index/ArcWidget.hpp.6C1EF191718DCFF6.idx new file mode 100644 index 0000000000000000000000000000000000000000..0da1f0f9a008486a60a9e5aae3182f5ecb03d656 GIT binary patch literal 1160 zcmWIYbaQK9VPJ4h@vO*AElC728H9njxTGj^36Pd!WMHV6v-HevzC#8)t%>%6V%g?m zVmG=H*7&> z7r_Z8^O;1?Bv*YpEz#Tk_M_&{(oEA{>Wozv((XBRy;<|XKf|dzn}ST&4+uNn)wSnGqsB=bCb$| z?liyouri5z8n*xwClk==K)}kw$s@wR0pTbG`tygYw=3~6aWFBkigJmHfC-rNiGA_S zqEk<(2r#k3bo2A@E5M}JG0)uC9idSq#>5DdX5(cOgGqB-lri|1^}9%bi3=vp&B-kc zlNOOui*V95Y!+bRg-Hu=3P{4Fmm~=0zpIFxEX2eElNJ;gRD?+fT|J%jea5Zb0!%D0 zX%0RPxW^1XOBEP5emEq+#0-<>M&zrq0Yz!4sDn)EVO~DL7@y2W-h9>wmkgIo{@)@pM{?rrs~@b?^(ggCtQKTERrnp zFx4$vw%*vMy`q4Hhn0hcg9jE&K%OXvEP^M@BFqEx1P`kSiwF-aNMMl)bOk6fVdlaj z6DSOdM3^uv5`n^?$b$*D|2Xn8B=CC+&~buFf|{_ngwa6NptyvozEJo!c6n>xLZE6k zSvF0W3t+AVss=?ZOf@WOfx@6Dg$cvl4-8aLe8PlbG!qvj3L)v90caDF=U^cL)C-DB zm>!0r)SSdnpbj>d?IlLl#kPzvC&2=r0j6~6aU*e^M%xBPScX$6oj*_I=({b9Fz33i oI<|h6XXpt=SV%Gy7bO>qgWSUgbrg_dU1nfEgmH+?% literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/ButtonMatrixWidget.cpp.13156E59C1946347.idx b/.cache/clangd/index/ButtonMatrixWidget.cpp.13156E59C1946347.idx new file mode 100644 index 0000000000000000000000000000000000000000..3092e2c4198cc5c155266dfc6b6280909e660645 GIT binary patch literal 7400 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 literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/ButtonMatrixWidget.hpp.580A8B6A2F8B776F.idx b/.cache/clangd/index/ButtonMatrixWidget.hpp.580A8B6A2F8B776F.idx new file mode 100644 index 0000000000000000000000000000000000000000..36f64b580c203d6def726a70de755307204844cd GIT binary patch literal 1098 zcmWIYbaQiJVPJ4h@vO*AElC728H9njxTGla6_7S%VqmD4b2P{?>#%{qmGq*X>tWGc zc2>_F6x!v^x<%bymFk&sJ+J2FZSN?JrRUbR&ufz`YfqH8dPd1mCUDd4eHOPTuUH#$ zoh$g$>&P(wQz=f0S1tWb8F&hnCMf!y2oPBAb7mcL=SAa`<7t%_svm7pzkiT-^>HWh z)Yaa9LqeZ^e)i0~{NRt9LNn&(mF;R=U!QPN@5_I=WJP7e`@Iv3YL*6av_xo09KLGh zCl@~B0&B(ZH`5Ytmm4nmB7R(6Pk32yiK9kwwQ_o=WOY{PveR$&*w%SxIoe-NJaA#M z?Sk*(CX1`~8&BY$C4P*(xH30Ml97So-1OyNtQT+N5ny5l`W*z=c{zE788{#uT_uHU zIs22u#h4gj(ww}U@-XR)>Gyfna=wVOGXafaXJ=!V022(HVBL)DtjoB?rkOtcq{7F< z$;7}eA}gW^CSdx{DjNJK-oDyGh=~Vgynuj!3QXEIlb_|OVvjo?6Bkgou&l5Kn1D%p z*W9&g+vMUW&cqAT&BemS3X^ufn!Nb<(bowAOe`>I9zGrsnDl?WzMMO58#W6tal@nq zIR&L)(hNnZX~h$P-U{&(QhzbghLwqjU6@mtALb?=b`eeyewhDY!N|x74nA18z=97b z3<@@wFpOsAf&>>NtQmMv6!EZgv2uySl)@}xd28Q7pfINz zrx7gFU@-)A04Qc)4gkhXPNEAi%-CGEml#zS+cLszg?XC+rZg&S)7z3u%hoc&yr@z- wf1b+GcUu@?5msE3T&xcYe`taSF~AGC`f0gO!Z|0JRB9I{*Lx literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/ChartWidget.cpp.344F8561CCF752B4.idx b/.cache/clangd/index/ChartWidget.cpp.344F8561CCF752B4.idx index f12d307dd5b3c9b9560be4f30cf5e8d0d342d930..2cf07f510ce3c421b630680062a6184298f66af9 100644 GIT binary patch delta 2120 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 X7e16*P2G*0p8fP`e8a?7xjOhC8CNiS diff --git a/.cache/clangd/index/ClockWidget.cpp.6053C0339E915CC8.idx b/.cache/clangd/index/ClockWidget.cpp.6053C0339E915CC8.idx index f0067e662b995288b81a646aa722a9845a4e81be..717de59260cef9a6bd37c1d4f00da339f8224070 100644 GIT binary patch delta 2270 zcmY+FZA?>V6vsXG0?(kfr7ucB-h`Hy)^{iraJ<>uTj{OgVrv?}WD|``#3;lMPR#{{ zH~|gq18kCYYiP4FNnAF!4=%=-Y#~{)Wpf{vX_jp!!z^32#4RqHF4>-o-g?Rx^8252 z{?FUFrw_J$P?s(Fc)qsq{p?qAxD*&ubU3G+i-0jg-^gif)8(&O6LqCVzrSM#PP+`v z8=H$0bBn(mzIXfNv9OX}1{(B_TW7l1>>%L>rvbylr=544_Xb>6^iaW(Rgwj?ioy=Rz{7OOR z2GC|J{&guj`NAp90dj!m-4%2`kj7^-9_EiDB4rlQ>Ee~&$X*l z0l7xQErYC+^{UQr1au>Sg;CIrGC_WJmDRz>O6~1;9NBC;qFKaOEY^rSR3|0+qUc2^ z86+!4o3sUElhmo=+TG#&B(TJ4z0_!)*xXft!cC z)!l4)+8;6CV$YPPLL9jGb0Oxtwp9G;!;TXAwsu+e5KsEbl|xr}YLPkbE#(<0geN$iFaIW#D#hU%;5vAdL#8;v2jA4KT(x`sykgI&2Z2o+q z@6?0~!_;JGv0n!6^7HS8WhjFQiZ`dS96z3PH!`b5;1=mggU!x9r%@fmZb~IK#GDb3Jx{G zgjq1pLLm}jV2x#%#bIY0+-k<_hiD?-%1r_{NpI)ddHua!PFzRXOw zMxhCr&H^_}Pnc|WHWNoO-Yfwmk@02;a3|=;rd_?VUM^7YhMgh_BnkP*GYJhzXj26p zogV0(mflltpquN~p~@bv2V>Y5rjpq!E17}XfD2{z+xzk49S7$)qz`Bqt{RxHr#F;3 z!7QXlp@I$p+Xx+ksJh<#fjB02zk6f#7pAXI|lq0J$B+hS>mLT)r;g3o|?CZjFq!8)JOmNBS_QSEwJJ`dzP7?J51 zY#M{~NMV~Ahq7@q;_{eUND8+z%7u9|^`^Iv0Oz8g+>-i>QfNOw`5bxzpRdy?<_==Y5{% zp7);jocBBKwCy<(@cWNdUD@+O8OehoPa|b@Bmss5O_y~a?AMi)B)cvweS6&rs=YhV z^Jq`a`8O{9G1i)xe`O_tlAIR%TU3LBCEf_k71xX(15B#wjmd-)tE+jJ#R%k@8BQD(8~`XDCh+&790W=3tnM> zUe-KsPC#h_^hN!a=BaD%M0}hZKY;RLT&w_9GYdVQPwqU$u~tMPYLF~Qf*6jF5e!33 zp@T>q@`U;jOae)Q=Kr-c%RfH_BvoK!A`K+{ka#=r?pDpqza6&F){31t&+$5x#@Fz6 z4BL4Rf&wRCu}~vmvCuAHv8Wd<$Sc}KH-bTZP_Al}i3>V{^scrMDyc#DLzA!G=R{(E zy}tmnv(713?44m?jYYT!ozx#UjB#UiNWRD|(i{3Zy)u8GmM4-O0e9tqDr5`Mla;;B zGeFKjp&O=<&j!@ATqt#a|B|PhrEdb+q&F%Z_NXpuL-85lGGIizp8-#X?l%mR(?Cws zX~Vww5|E{b;Ver6lLQBlXBEgQ=oDfQ-a6agyLDC`a|s+0xRnYc*1)s|HbkVrnkouQ z!=W^I6vdlisxn&13Xm0AYjnhyfh>bsY2ZZE^w-qgbFayVF$3ldbSpkaWWk&*B648N zL6@TN#BNHLAM0F|y%O|Ez$+C-tb<`4tcXZMbsFj?>9)~mmS9MNF;rX!vQB?Cb{NDe z5#Kywvq;-bZ8TwenweT9@FLS1kTv>;$zh+@&Ep-(0+%h?kt}$!bin-N#GG!fO6i=f zF$Y`@Dp6t%p2$I;LTKs6bD@nR@5%iINI;96Lu3fUP#{FVHuJ-eFy**&yd5cH&9QC; ze)JvZetq!LhYxPP!#((_;Rku2B4Z)Kpg_0x`MhB+Y*Ogi!F!+8Z8vuU;Q^@YN_Y~TLsf<(TpX*nk<^J z6f~yjHA_6cz%3Y*O!kSz`o(4hW3{m+1**Te=AF`R{U{&RS#Gw#-*bI%|MT15?8Tbouj|XypQ+_NBZWg(_*c8`A?bmyNJI~D47Yr_-qM#A~VM$UF;1z@XCs% O&mQ^m%GJNCI^kbcea)8u diff --git a/.cache/clangd/index/IconWidget.cpp.C804601C628F2FF0.idx b/.cache/clangd/index/IconWidget.cpp.C804601C628F2FF0.idx index d6d477f10f716f0d8f7342940c51813d1200eb58..c2fbeacebd6a7787842c71666814b1d487165612 100644 GIT binary patch delta 1514 zcmYk6TSydP6vtb))v;Fh-re=Gy6Uc$xw>9R%T-s+HN~3UnWV`5VjLKWb)t4)KiG)q zr6}urDIdB(W>OI;MS%|?Q3<~E5Ml^r=u;6924y}pvo^zd{GIbZXU=WDJD!#D^xlqO z@Y|NB>9;cUF-we$Wz?iiXOYht1xbVPoi4O1lyl}Trt9Yo8)Rhin0$c9iE;r-PAPXY z`?zH;{ns;DjGb7+wJ&3QVB|`cUbYVy2P`0p_wls=1)s2vM5K-$>!mCcE8-1mA~|oOBB5akeQnwE>b^Hqwj(=&+e4+O5+p&5s4a!b_2o)-DF-B#N~KDO zjZzyxY{yWH%dsDNgScD8w0l2i@x!&UG`S$!Oz#90gsZ~)Wi+JDi!5xK(zz#ZZno$O zXo@xg9qpn$0K;WrAGvMZnRGGG%+xbYK*f4kcn!#iY`}~1Q3*spg7f8eaPZE#y&POV z*TQuwu_yok6(S{?)NbV_C8K16m@jEdSG;~n+m(#ih@lu4;W7}58!_q6>d~3VMAm3X zmWSP8*mA@jfyfrJu&F+GpXMbky~CF`EOjYoczok=JL%58xb1xHlw*7PYhE$36zft4 zLOx`_(u-!1+%WCaa}-DBOp)BdnIQ6>iwvjs=%wL6*h+RkahosdV}=-cV!oi~LLBj1 zP*Q$TcCAi~XB^pbcG!Hn_~b}6d8s@BjGciG2jgY@>bDhdfay|k>J#O?)H41u^-Bgq z&8l6I9b&oxqIT2)P->Stvf(IuFj=%Dth|wT1DRkH$SG?gAk+)3s=2z>K5^iObxG-z zE8w&lDp<#9HzxFq&Mv%Vmz3%8^*r&~@{_IB_aB?whrcVKVJcjtrj)Ud>eI04;P08x ziRUXy=zwj&smkWho$AVSod2WPBUD7w>#o;LH_fd6Rc05ZqS~Tlj8k!!)}}#z3#bIS UX6vPfJ%f*C9m3$`S6j92A4^9T^Z)<= delta 1017 zcmY+DOK1~87{^W5HXE~TUb|YPO-LJU9=4`Un$}EJGsvC4y4OAxp8UcgN+Qv0Ktj~7L%|s*dDRN(GPkvI40&NsSaeyR7 z;+?G4V8$V-fkgD* z{zGUAB%u^q1V}_O3^YiHOhHVMMSxVKFqn?h1oURaVL$!??axGVEK9i;`{{X6}W19c~ diff --git a/.cache/clangd/index/LabelWidget.cpp.86E5A1BF3C34B7BC.idx b/.cache/clangd/index/LabelWidget.cpp.86E5A1BF3C34B7BC.idx index 6a300011e435ac067e5b0f65de9ed86718666a2d..9261bf63bde6648c4ff78d87053520a0d52c089a 100644 GIT binary patch delta 3292 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 L3?2f|1z`UJ9AcrF diff --git a/.cache/clangd/index/PowerFlowWidget.cpp.8A280FD116CAAFED.idx b/.cache/clangd/index/PowerFlowWidget.cpp.8A280FD116CAAFED.idx index 43aafcdd6f32481dc0d44deb9a841d863f71b9a1..6e5b7a16ea2ad1d1262905556fdd0e2c1bcca835 100644 GIT binary patch delta 1130 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 diff --git a/.cache/clangd/index/RectangleWidget.cpp.80D39D0F2AD3509D.idx b/.cache/clangd/index/RectangleWidget.cpp.80D39D0F2AD3509D.idx new file mode 100644 index 0000000000000000000000000000000000000000..aa2b8a008b5f53c96c2c7132401a0fc12c7f0f0f GIT binary patch literal 3052 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 Y3^xx}P)L{)iFyKBKsBfX;5mT(7k9Nj*8l(j literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/RectangleWidget.hpp.C8D9E5E0438E507D.idx b/.cache/clangd/index/RectangleWidget.hpp.C8D9E5E0438E507D.idx new file mode 100644 index 0000000000000000000000000000000000000000..48a6e48065d61252cb1bea01c828bbfc1348932e GIT binary patch literal 566 zcmWIYbaT^VVqkDi@vO*AElFfyU|OS3WzJ_EInh$cgR41#bJMk=-T;= ztY0;69#KpGEizx^PqoS_4c(_E!g6zBUahKmTDi2nJDDeG+2fbalFQ~k;_(i1V^}GA zC|LVaVs&+K@u8c4`_|SyyW^X>z+;_7UG(v#`&BpB@4EbnHTk61REFZp+@w07jrr5u zivyAtv$8WWGBB{Ru(61O2?kD}90LO*E9?J@QjSK|k9h@{n1PN50ai{#^PRKWx6yAKJC{tp zIQqN?7UPpn6h`a8T>kPIFL4kB)&F;sU$(>*0q8&4bLt$!Qq`GU(ulEP`1WOLdn4 zEB#R)wy|V#mrUKxv);MrOHZ?HGX=&eL%JjKwnca8E9UiRSH!4q>~|1~h(?j+l;wX=J*NarWR(-HNyVZs^8RFI}%DlN0hq(?kVN6vvEfo)pHI zBoeXClo*r*iH|1>G7puY($1M@>Sh`_m=@Au`l>M@WI!@#<&+#qu7)Ur6lthwL0AM? ztZ6uhK(40YJc4=pv1!w-g|t)LP8}y$(lu{5u13{CQV??Ji$_0ZPtpKAYEkSzAU5=P`f a@-;*Wq(mPy-zUbef@Allf6DN*IPo8M9dP~t delta 578 zcmY+A-z!657{`0IrPs0KY^K@7ejFn?tPy4_KUoT^|<_e`aVzJ=edtphUyk(QmJ+2a$|_#UW0u{OfZ;u0d*C8L z6T&8_L=-_OLLU(&2$gW#UBSubq@x6^ghumeZEwh~Ftnf>=432lmuiKLjO zxF~SnBe0`o1iaRA%Nn51n^bhBhe*l*W&jl?FcWpJ8Oa07|0`}l*!Wkx07?OSS|43n zmlh*CMYlkkPi^BPeEd&m=FeZ=o>$(X)|+?ne%$h{Md2X+Fj4*d`aLGca^b&l4GX{u YKt&N)5fy))#bfEC-MiT{>&h>~4_D>Yr~m)} diff --git a/.cache/clangd/index/RoomCardTileWidget.cpp.4F5E3794B098F0B3.idx b/.cache/clangd/index/RoomCardTileWidget.cpp.4F5E3794B098F0B3.idx index 09d0921dcd9d777d8f2f49bbf05ffe07ecef9496..d301aba7744226a547d9f95643256f4bd749577e 100644 GIT binary patch literal 8404 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 hv=S~-sC@hafWS=k$s95qR5&pS=y#j zL#jzyeodJsCR+Z_lh5_u_wUnozW3a7&pq3{_dNNzyScgP^6|N@caPp09Jz+Y$Hyl@ z|K1U~eUsUAKE6Lq`1qo;d$N}Acwr+R|82SVgP1H+5wGpNA?Kn^uC|)RFa2%Bu9b^# zY(6T!+|S)qc!(-!b zSTnBM|63pRbBpYcDBT65xh9=|>A_MDZt z=}GR){BQqU2|1%2Q>(SjGn?J=M#bCh%%FnT^3oj=Gh#Q&?o2cJ;$!GK5N&tpg0Ees z+lcJvlN#Q>HVg7cmel&c))vgt_~slrXc6V7cKgHJ`UKtbZyo>SN8H``<$%YxuLp<6 z_8$GK_cxomL%WV$mME{^`XE1cwrtWHbB}`DZ=+ux53N#oW99a|XZFm*`=!Yjk|MMf z^EYODw?th1@TLCw`v;r_FV-K?I>||FdA-^0?eUWLA@5dwzF(W9BOi6pvfja?;O_d3 z-EM2fTdt+Lja=I^8aW!(VU^JyG+TZk&pkRga^L8mzm3Ld_Uk#ek^sa_?LF}o~dCyF+%4RBE1N&h&SG3wHPCub;WTPBI(r>jmEKh>uTA zT{ELK$z}Ocr=|XjS)nFb0gsXH>LZ@obyCItioR$~+WV?B2}PZeD$U-UOZ_IZZ(8?y zm#nWdu&&${GO&#@J6hp4KfrFkSwQIu-@j9eHf;(yu8{p+BQDYJf-k?7Y@vdG=HVr8 zgtRUh^nWh8d3sm7c%PIiWf7Zib~-sIqUGGB zNQ)*tb5|jaHvZjrtgg22U)g7t@oe=<<15m|n|GG3?^>q1M6kI?gz7%0DA>8-ndI`d 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 diff --git a/.cache/clangd/index/TabPageWidget.cpp.8BA3B0713CBB6420.idx b/.cache/clangd/index/TabPageWidget.cpp.8BA3B0713CBB6420.idx index 5f70b51a08e98b7ffaac26d5263b57448e686a3f..461abf92570006d3c51f1792c5cb8e2331fd69f0 100644 GIT binary patch literal 4322 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 MK{aRq;4VP@2OFQ_z5oCK literal 3748 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 delta 1013 zcmZ9LT}V@57{~p?JKfx-E!+Iq&eEwf6O{6+EX(HHGL>i&LUti|RTo;>Mbw3KAzj!- z>_wD;U>}%L1Tl!Tc0xI;yx2?oI0xOJh@!j*tS%&qsIz45th>YS`9IHj{?GHgt8MFt zvpt`e(b1_f@c*INy_1dk&;t=GHgJ^c?NqD7=Lc?*RCYy#{l{dDJ}2i(|co{9<2%>pg=&00t8_U{@1vgAzz_jC}pV100$V3Du9R@5&NmLYTLbp z8YxM(K5MIugUF%f; zvr)mPXCwmwW&vf2+#tAMhI57;3?_wwVGl!X8nnnOYGZJv2}IP3IH&*;>ZLRoZokyu zKjiH$_Ma%I#(5rU9y*0O3|lz88M(^{N+YOHD59`MGZZnD$1-LsqEbY)B1J-_M9YjO z<08l+c1=F>jYK_v`f^v0yjWLUmIBGTECeVXU*)HUPI`2`iVn3Ip7 zhtVtM5h9^Qq8nzDRf7DzZ9JqM`q22jOWaz24S%=X0&4<06W~(IZhcYfd+42bpOi#F zqVyPNB0*FHX+PIzO}uh%M diff --git a/.cache/clangd/index/WidgetConfig.cpp.FD56F9F36C29A5DA.idx b/.cache/clangd/index/WidgetConfig.cpp.FD56F9F36C29A5DA.idx index b1ae1f0835168fe2d8a0e843a7b8f10e1bbcefd3..2bed32f180341a1668863fe2972a085442cbd26f 100644 GIT binary patch literal 15718 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%0D`0{?-VP z&SqQMfpI(d^W=d6-T~ux1W*g5wFG^?g~o581;*zepz#L+h(gjRg1+;SaX!QG|Nkb7 z`AQ)&F606E11|aUPiOp6NKR7@4>TKrRwI!;dk^b;v_ZsU42FKe#YxiOEm;~c#?_ydTqK=PG;UBZ-q1tY(LNtou{ zK(Cv>S>*I%^K!qR=y7&r+V(< zU9v9ydUfJ1^1wbOb`wv)M2V-w3lmLdnasvSH%mACWVzgGIUWG4vRH*1JrEcL60c5z zfi(DkUY(4|0?wSh7&B#q;n`pW2IPS8Ilv7A3c$nyV&WbH{l~q@avK0pC^5sKe3DG_rpu>{gWQNG_dr`p?}#RL0O=TpShJSm2t}) z0n`!V%zYoy_lYxi1fnDOGxv<|-{QPWZ(e76UTm}&k7RtLK6p-SiF64rE|o6D#Xu+w zotpe|U18_01BbRD!g*-EepK7P}!*X%R~Y_0X~&+Ho$=0I|q27TIxJa;Epj z8K>jWfypZT#(Su_}g9R2Z+~+4o(DLuW4SPpk`1I(i7;O^h7w|2m_TVIP!i5}2j#Vi zd;U39%?{!wqHZEhZU)xgyzGB&%iU_$c&Y+bJiV`Kt%~0TqyQ>~NV`9T^g|-;9*O8k zK11H^v|sPd;aRuYZv&CN*ch~maZ#do*anXwXB;RCn=s4K+rJ`2%V{Au2N_E>>JQp6p$rBo!vch@|i zl*iu;G39AUEsft9SMHG0U*Y-b9&6naM3o?#o6%~ewND*BOnk@=*;HhT_gM&(3W+|S zL$&9`_InJe9pgVT)@j($SBHZhvWswm%>q146aWPQ@XwW+=>F^LKW;yL$ZB&RQTKUf zd7SuKBgeS#5gR|u7R<)A`2y%K0DqwH6)1lNc>M4c^#4lS)qV%`ccRH>NPi{n_y0%fHl{XBlcUEGytKJG6bE|2|-k?Q4Zlt&qR7=+;}FbHg&M zo~^o8cP)O}h=hVje(Sg!{hvv`W5W}+;t0VA+^?$vRn70=J=BckOEbPVu#3*q%oDe3 z7ofWc2Y(0XcLeYO(jN$qFGO@9@9{sJ??zt>Bp;!ygOMNh5=C+aRqS^s$Jw`*pg*> zu5}GQ?^s*SRh^5^c@Lm_2xpCgno;o2)i`%RV)^9vpI~s8y(2AEsf?DR-K-S{2nOJM zQUs_Xf=@aj-ASYiPb2y?PcW0Z0%YYYBbZ}gC0K2=8ux|>D2(9aplx2W#@nwf>|wvD zCQ!q-(4&AlO5{!+LHZG~V;(^C0e;66xqV#ZTD9RPYmyzJ9euE=+9}?N@8f5n+8O@9 z@VtFpVfvn$UUtU&3;N@3XRTq4Glz|a4KCVh*y7?fKwTqz^d+QU5($k{h(5(Tt<3tR zs~53<#I#|(&jv^Kmn!BDpSYh2{&!FbM$b)&vh;qv3RQs$P!436f83AHnkB0NBVGaj zGKn1o)dd=wS|YKop1#Du&`4?=&OFwS1_5Bz>NU$(tX%6lZv0p`mkER+#b$`vDJ8w?k1&bDX?*WUq_-*yywR79{9iF4d44>tg3Nn}&Cmp1L2yhfc zf&;*-kBO<-Y-0>_xw8^@V@vXdYaN&M~q0 pc~Af@fD_;!P{<6Cl9f|bQdUt_)7BBn(+U^CEszf`0dN(_{2yd#hvxtQ literal 14862 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 AJOBUy diff --git a/.cache/clangd/index/WidgetConfig.hpp.CAEFE2EEEB2A6996.idx b/.cache/clangd/index/WidgetConfig.hpp.CAEFE2EEEB2A6996.idx index d2ca4890918cd08c20fdb3bb1a72bcb27a967dbf..bf327c09eff614dc4c28f5b569b0b43b3979abea 100644 GIT binary patch literal 20130 zcmY*g2VBnG7ysSsr#wB+^LrXnC?&}zd++tyn~+s_t=G!lh3t`RLU<)a6t9tyRf+5w zB3rUE!~dS&?fVxW?>(M#&hOlH?z!jQ`+YmMXx40PTSaNyzr}=q28`*aDvIJD{tFm0 zda%)2Q5M=M%7pb7x@8Q{IB55D%k~rHm*#mjuR@D)?Pd?(yYGCBA^nq9tPbt}D_?Ar zG%b*s|Hsk#yVksU^tPIdmf-$Y&3qX=p;3{-=__{a+`e^J zo`wa2n%dS2YC6CD;RBoJKCD~lW7!^c-J>ToD%ob2k9Elfy-#dj+`~7t>dv`4zt{6| z+1kHX`?sV=+b&lzM`^lAAizrCeTR%shk+3TL#Z&vT-TD()0TXoNjDl*X4tM7{V z1~pU8oov0Y)}^ImYxh{P_RY*WA4`=P*!BFP^=XAB`k!{4d$J1akaXDW;8jSp`hi=! z4D*E6y{}#D>DMA|=M$@mF}JhE)cQWg&+eZ&E05PIw{>f|;c=6Fclck*9Dnobi?G4L zt`D;=k2`W`L&|W|@uG2_VJ?}OBMX0O_Nrt|YQ~Fu7lTvMwwL|9(k;qvaMoA1gT2^}R|@>*v>o_>~*~(Zg_KIR_E{A`r6_2 zl7Yo)b+6Yv*|AAYpNLlbH&kh8Ib+)OuJ%8csGF{L$~`>ya765mdHLN9$C{OS^2oEz zHS619o?mK5b$Qj|>AYnQS6JqM-)l^**2AUvl4h;06j#@k?O}bpOk&@;LH!*Y_pRi! za$AOX;!5{9=d8~)d9vPp@w7R~9!sXpac|D%H(I*Iv|~$Rp8)md)5os8zNh(Z$run> zHfBp!pnuqm-JfkKu?sotBl$ZZ3Syr;!BG*al zLh78q9lo>Khs=IQ{+T;I>q&o)Y43->`T1dl<@4%R<85Ppg+~mjF?n2;|U|ImkgcUZ$piC3r9Vy_&Uwg`^R7#sMe=iJWOi+8-4xjCWBzeDmlJXE@^7;L?I z)zIwSc{7(Metwm?^Y9RxI%7KrmAjSxe%}eTYHe%PY_|cXFWA8j#cCOg1 zYS!9;h23VQmhVx&>d@s6=NFlk_hRg_$?d<@&$gN#kX$wS;P?~mhd&umFrxk8zOOnI z`m}4A_wvxIWk-#AQ~uV1*ZvC^eHqsB*^HL;dGV(!A`@HgUy$&+ZuI3IhmUle)V4

Q=Rj(m0= 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 literal 19156 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%0A3S51 zUVXK)_f(zpM|7KodQe)Io}E6wZd}fQ@P&ebq5Xv%-OT-1KJW@H<6TMMRbSNi5Nltl0Qv5~7_fn03!pk~ZQLS@COWp{s+G{YW7H%w)^YRsITBkNT~~ZRK;j zh6r}@74`{UV);0Y(YUwip29~S9(jdb%Owl0sb_dZQTg%5t&C|~A4(WFS^Y))oH>>E@e$}ZTYLfTC z_uR(t%7em58#-ohKcZ*PO&y*#Ewn}ipYZ!jY3==(@SHK3bI~sl#rGII0*F3R*rjaK&EN1)nC`wL!M5g)4AR| zYZR&M`yB&$CXvbD`XRKu#nsZ~KVBXuugLXI?oCRVuFqtsUV*5f#r54~oGXvt*r`HZ zi>Rf?^|S8JnU$T_4Oc6AyTMZfBROS z^R#B!AFqg0^Y;M^8Y9K6Uqc)k2S*vS3>@Xqa&S~YE5H$t#=}tw ztprCBngmBOnhZx(v??4aXbK#u7^*aEky>ai_$VDshodf97miFclZX9IN5zWbH<*a6 zHA)I8#cS*uVv$%lN+YG=D2tSZqdZa`j*3V{I1-QqI1-UWI4UER;i!UCfukBy4UXza zbvSAxwc)6P)PW-d$>8C_Yl|FP_coJ1TSXkj>wr+LuVReIkR9ZuaniEft~&Uam%s0Q z<;1tP2hfUWGS{!6K3bpG{K~`}=XedX0O)iToQgcRjQb0O|9_)#cWRuGLqS{kwh*XZ z8>da+)(wZY{J?tA!XVGUF?c(9Lt<~gL`m}r$P;lyUVV+dbp^7F6$N=L4y(YuPRvpM zj2sD4G~_ign!FwUwA9KUxl8b@_?pLHF-qL}HN;_YaFoHyz)=n>2S)|00vz#JJRFs< zN^m4$NpK`%$#7J~s=|?irNEIYOXc-^ZIN17E%+!MONXN_Ru_&;ER%tGWz4OAF%vtdW18Ctc^RUN2G=j;s@pu*tA7f45|PAv6esp?Yh>!4?uNW7QI)rz z2~x7a_Z!)LkSE{>ygm%8Uh1gE9~po=RfTH6y?*PDu(;nlN?$=<3Ma+e*z7rszpDo4 z4dj)GO1ycGf1=m!OH&<#ye?6fx6VsiCgSfK^u{4iCX#vee0{crw6WQ5kXOg4mUJa+loA;!H<8HdogFhZEj^^FhYws*yH|X6JeB3>F84Aw<^!@*%2bS5e z+ycwbV3`HW?XcVd%U!Vi6qegy`2{R@!gA|>8T0|?U@AXW*)@053(y9h0TyTly?_nc zK_}<{&p`|520fq)JOOLdbpLlI;t4GG{+HeTJbb|#HiCzs0j%Q_--JR-U~$qivU2hY zig-c-NCAI?Sa8hO&-t<8 literal 3794 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%0AR7!uvqJW1b~ie<)d0O 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 8) & 0xFF; + buf[pos++] = arcMax & 0xFF; buf[pos++] = (arcMax >> 8) & 0xFF; + buf[pos++] = arcUnit; + buf[pos++] = arcShowValue ? 1 : 0; + buf[pos++] = static_cast(arcScaleOffset); + buf[pos++] = arcScaleColor.r; + buf[pos++] = arcScaleColor.g; + buf[pos++] = arcScaleColor.b; + buf[pos++] = arcValueColor.r; + buf[pos++] = arcValueColor.g; + buf[pos++] = arcValueColor.b; + buf[pos++] = arcValueFontSize; } void WidgetConfig::deserialize(const uint8_t* buf) { @@ -310,6 +324,39 @@ void WidgetConfig::deserialize(const uint8_t* buf) { sb = SubButtonConfig{}; } } + + // Arc properties + if (pos + 6 <= SERIALIZED_SIZE) { + arcMin = static_cast(buf[pos] | (buf[pos + 1] << 8)); pos += 2; + arcMax = static_cast(buf[pos] | (buf[pos + 1] << 8)); pos += 2; + arcUnit = buf[pos++]; + arcShowValue = buf[pos++] != 0; + } else { + arcMin = 0; + arcMax = 100; + arcUnit = 0; + arcShowValue = true; + } + + if (pos + 4 <= SERIALIZED_SIZE) { + arcScaleOffset = static_cast(buf[pos++]); + arcScaleColor.r = buf[pos++]; + arcScaleColor.g = buf[pos++]; + arcScaleColor.b = buf[pos++]; + } else { + arcScaleOffset = 0; + arcScaleColor = textColor; + } + + if (pos + 4 <= SERIALIZED_SIZE) { + arcValueColor.r = buf[pos++]; + arcValueColor.g = buf[pos++]; + arcValueColor.b = buf[pos++]; + arcValueFontSize = buf[pos++]; + } else { + arcValueColor = textColor; + arcValueFontSize = fontSize; + } } WidgetConfig WidgetConfig::createLabel(uint8_t id, int16_t x, int16_t y, const char* labelText) { @@ -334,6 +381,14 @@ WidgetConfig WidgetConfig::createLabel(uint8_t id, int16_t x, int16_t y, const c cfg.borderWidth = 0; cfg.borderColor = {255, 255, 255}; cfg.borderOpacity = 0; + cfg.arcMin = 0; + cfg.arcMax = 100; + cfg.arcUnit = 0; + cfg.arcShowValue = true; + cfg.arcScaleOffset = 0; + cfg.arcScaleColor = cfg.textColor; + cfg.arcValueColor = cfg.textColor; + cfg.arcValueFontSize = cfg.fontSize; cfg.shadow.enabled = false; // Icon defaults cfg.iconCodepoint = 0; @@ -387,6 +442,14 @@ WidgetConfig WidgetConfig::createButton(uint8_t id, int16_t x, int16_t y, cfg.borderWidth = 0; cfg.borderColor = {255, 255, 255}; cfg.borderOpacity = 0; + cfg.arcMin = 0; + cfg.arcMax = 100; + cfg.arcUnit = 0; + cfg.arcShowValue = true; + cfg.arcScaleOffset = 0; + cfg.arcScaleColor = cfg.textColor; + cfg.arcValueColor = cfg.textColor; + cfg.arcValueFontSize = cfg.fontSize; cfg.shadow.enabled = true; cfg.shadow.offsetX = 2; cfg.shadow.offsetY = 2; diff --git a/main/WidgetConfig.hpp b/main/WidgetConfig.hpp index 05794a9..3e5af61 100644 --- a/main/WidgetConfig.hpp +++ b/main/WidgetConfig.hpp @@ -30,6 +30,8 @@ enum class WidgetType : uint8_t { CLOCK = 10, ROOMCARD = 11, RECTANGLE = 12, + ARC = 13, + BUTTONMATRIX = 14, }; enum class IconPosition : uint8_t { @@ -283,9 +285,19 @@ struct WidgetConfig { uint8_t textLineCount; TextLineConfig textLines[MAX_TEXTLINES]; + // Arc properties + int16_t arcMin; + int16_t arcMax; + uint8_t arcUnit; // 0=none, 1=percent, 2=C + bool arcShowValue; // Show center value label + int8_t arcScaleOffset; // Radial offset for scale (ticks/labels) + Color arcScaleColor; // Scale (tick/label) color + Color arcValueColor; // Center value text color + uint8_t arcValueFontSize; // Center value font size index + // Serialization size (fixed for NVS storage) - // 326 + 5 (borderWidth + borderColor + borderOpacity) = 331 - static constexpr size_t SERIALIZED_SIZE = 331; + // 331 + 14 (arcMin + arcMax + arcUnit + arcShowValue + arcScaleOffset + arcScaleColor + arcValueColor + arcValueFontSize) = 345 + static constexpr size_t SERIALIZED_SIZE = 345; void serialize(uint8_t* buf) const; void deserialize(const uint8_t* buf); diff --git a/main/WidgetManager.cpp b/main/WidgetManager.cpp index 3a8d0f6..f91908f 100644 --- a/main/WidgetManager.cpp +++ b/main/WidgetManager.cpp @@ -561,8 +561,8 @@ void WidgetManager::handleButtonAction(const WidgetConfig& cfg, lv_obj_t* target printf("WM: handleButtonAction btn=%d act=%d type=%d\n", cfg.id, (int)cfg.action, (int)cfg.type); fflush(stdout); - if (cfg.type != WidgetType::BUTTON) { - printf("WM: Not a button!\n"); + if (cfg.type != WidgetType::BUTTON && cfg.type != WidgetType::BUTTONMATRIX) { + printf("WM: Not a clickable widget!\n"); fflush(stdout); return; } @@ -1552,6 +1552,20 @@ void WidgetManager::getConfigJson(char* buf, size_t bufSize) const { cJSON_AddNumberToObject(widget, "iconGap", w.iconGap); cJSON_AddNumberToObject(widget, "iconPositionX", w.iconPositionX); cJSON_AddNumberToObject(widget, "iconPositionY", w.iconPositionY); + cJSON_AddNumberToObject(widget, "arcMin", w.arcMin); + cJSON_AddNumberToObject(widget, "arcMax", w.arcMax); + cJSON_AddNumberToObject(widget, "arcUnit", w.arcUnit); + cJSON_AddBoolToObject(widget, "arcShowValue", w.arcShowValue); + cJSON_AddNumberToObject(widget, "arcScaleOffset", w.arcScaleOffset); + char arcScaleColorStr[8]; + snprintf(arcScaleColorStr, sizeof(arcScaleColorStr), "#%02X%02X%02X", + w.arcScaleColor.r, w.arcScaleColor.g, w.arcScaleColor.b); + cJSON_AddStringToObject(widget, "arcScaleColor", arcScaleColorStr); + char arcValueColorStr[8]; + snprintf(arcValueColorStr, sizeof(arcValueColorStr), "#%02X%02X%02X", + w.arcValueColor.r, w.arcValueColor.g, w.arcValueColor.b); + cJSON_AddStringToObject(widget, "arcValueColor", arcValueColorStr); + cJSON_AddNumberToObject(widget, "arcValueFontSize", w.arcValueFontSize); cJSON_AddNumberToObject(widget, "parentId", w.parentId); @@ -1748,6 +1762,14 @@ bool WidgetManager::updateConfigFromJson(const char* json) { w.chartTextSource[i] = TextSource::KNX_DPT_TEMP; w.chartSeriesColor[i] = defaultChartColor(i); } + w.arcMin = 0; + w.arcMax = 100; + w.arcUnit = 0; + w.arcShowValue = true; + w.arcScaleOffset = 0; + w.arcScaleColor = w.textColor; + w.arcValueColor = w.textColor; + w.arcValueFontSize = w.fontSize; cJSON* id = cJSON_GetObjectItem(widget, "id"); if (cJSON_IsNumber(id)) w.id = id->valueint; @@ -1871,6 +1893,38 @@ bool WidgetManager::updateConfigFromJson(const char* json) { cJSON* iconPositionY = cJSON_GetObjectItem(widget, "iconPositionY"); if (cJSON_IsNumber(iconPositionY)) w.iconPositionY = iconPositionY->valueint; + + cJSON* arcMin = cJSON_GetObjectItem(widget, "arcMin"); + if (cJSON_IsNumber(arcMin)) w.arcMin = arcMin->valueint; + + cJSON* arcMax = cJSON_GetObjectItem(widget, "arcMax"); + if (cJSON_IsNumber(arcMax)) w.arcMax = arcMax->valueint; + + cJSON* arcUnit = cJSON_GetObjectItem(widget, "arcUnit"); + if (cJSON_IsNumber(arcUnit)) w.arcUnit = arcUnit->valueint; + + cJSON* arcShowValue = cJSON_GetObjectItem(widget, "arcShowValue"); + if (cJSON_IsBool(arcShowValue)) { + w.arcShowValue = cJSON_IsTrue(arcShowValue); + } else if (cJSON_IsNumber(arcShowValue)) { + w.arcShowValue = arcShowValue->valueint != 0; + } + + cJSON* arcScaleOffset = cJSON_GetObjectItem(widget, "arcScaleOffset"); + if (cJSON_IsNumber(arcScaleOffset)) w.arcScaleOffset = static_cast(arcScaleOffset->valueint); + + cJSON* arcScaleColor = cJSON_GetObjectItem(widget, "arcScaleColor"); + if (cJSON_IsString(arcScaleColor)) { + w.arcScaleColor = Color::fromHex(parseHexColor(arcScaleColor->valuestring)); + } + + cJSON* arcValueColor = cJSON_GetObjectItem(widget, "arcValueColor"); + if (cJSON_IsString(arcValueColor)) { + w.arcValueColor = Color::fromHex(parseHexColor(arcValueColor->valuestring)); + } + + cJSON* arcValueFontSize = cJSON_GetObjectItem(widget, "arcValueFontSize"); + if (cJSON_IsNumber(arcValueFontSize)) w.arcValueFontSize = arcValueFontSize->valueint; cJSON* parentId = cJSON_GetObjectItem(widget, "parentId"); if (cJSON_IsNumber(parentId)) { diff --git a/main/widgets/ArcWidget.cpp b/main/widgets/ArcWidget.cpp new file mode 100644 index 0000000..039d4f5 --- /dev/null +++ b/main/widgets/ArcWidget.cpp @@ -0,0 +1,247 @@ +#include "ArcWidget.hpp" + +#include +#include +#include +#include + +ArcWidget::ArcWidget(const WidgetConfig& config) + : Widget(config) +{ +} + +static int32_t clampToRange(float value, int32_t minValue, int32_t maxValue) { + if (maxValue < minValue) std::swap(maxValue, minValue); + if (value < minValue) value = static_cast(minValue); + if (value > maxValue) value = static_cast(maxValue); + return static_cast(std::lround(value)); +} + +int32_t ArcWidget::initialValueFromText() const { + if (config_.text[0] == '\0') return 75; + + char* end = nullptr; + long parsed = strtol(config_.text, &end, 10); + if (end == config_.text) return 75; + + return static_cast(parsed); +} + +lv_obj_t* ArcWidget::create(lv_obj_t* parent) { + obj_ = lv_arc_create(parent); + if (!obj_) return nullptr; + + lv_obj_set_pos(obj_, config_.x, config_.y); + lv_obj_set_size(obj_, + config_.width > 0 ? config_.width : 180, + config_.height > 0 ? config_.height : 180); + lv_obj_clear_flag(obj_, LV_OBJ_FLAG_SCROLLABLE); + lv_obj_remove_flag(obj_, LV_OBJ_FLAG_CLICKABLE); + lv_obj_add_flag(obj_, LV_OBJ_FLAG_OVERFLOW_VISIBLE); + lv_obj_set_style_pad_all(obj_, 0, 0); + + lv_arc_set_rotation(obj_, 0); + lv_arc_set_mode(obj_, LV_ARC_MODE_NORMAL); + lv_arc_set_bg_angles(obj_, 135, 45); + + int32_t minValue = config_.arcMin; + int32_t maxValue = config_.arcMax; + if (maxValue <= minValue) { + minValue = 0; + maxValue = 100; + } + lv_arc_set_range(obj_, minValue, maxValue); + + lastValue_ = static_cast(initialValueFromText()); + lv_arc_set_value(obj_, clampToRange(lastValue_, minValue, maxValue)); + + // Create scale as child of arc + scale_ = lv_scale_create(obj_); + if (scale_) { + lv_obj_clear_flag(scale_, LV_OBJ_FLAG_SCROLLABLE); + lv_obj_remove_flag(scale_, LV_OBJ_FLAG_CLICKABLE); + lv_obj_add_flag(scale_, LV_OBJ_FLAG_OVERFLOW_VISIBLE); + lv_obj_set_style_bg_opa(scale_, LV_OPA_TRANSP, 0); + lv_obj_set_style_border_width(scale_, 0, 0); + lv_obj_set_style_pad_all(scale_, 0, 0); + } + + valueLabel_ = lv_label_create(obj_); + if (valueLabel_) { + lv_obj_center(valueLabel_); + updateValueLabel(lastValue_); + } + + return obj_; +} + +void ArcWidget::applyStyle() { + if (!obj_) return; + + applyCommonStyle(); + lv_obj_set_style_bg_opa(obj_, LV_OPA_TRANSP, 0); + + int32_t minValue = config_.arcMin; + int32_t maxValue = config_.arcMax; + if (maxValue <= minValue) { + minValue = 0; + maxValue = 100; + } + lv_arc_set_range(obj_, minValue, maxValue); + + int16_t arcWidth = config_.borderRadius > 0 ? static_cast(config_.borderRadius) : 12; + if (arcWidth < 2) arcWidth = 2; + if (arcWidth > 48) arcWidth = 48; + + lv_color_t trackColor = lv_color_make(config_.bgColor.r, config_.bgColor.g, config_.bgColor.b); + uint8_t trackOpa = config_.bgOpacity > 0 ? config_.bgOpacity : static_cast(LV_OPA_40); + + lv_color_t indicatorColor = lv_color_make( + config_.textColor.r, config_.textColor.g, config_.textColor.b); + + lv_obj_set_style_arc_width(obj_, arcWidth, LV_PART_MAIN); + lv_obj_set_style_arc_color(obj_, trackColor, LV_PART_MAIN); + lv_obj_set_style_arc_opa(obj_, trackOpa, LV_PART_MAIN); + lv_obj_set_style_arc_rounded(obj_, true, LV_PART_MAIN); + + lv_obj_set_style_arc_width(obj_, arcWidth, LV_PART_INDICATOR); + lv_obj_set_style_arc_color(obj_, indicatorColor, LV_PART_INDICATOR); + lv_obj_set_style_arc_opa(obj_, LV_OPA_COVER, LV_PART_INDICATOR); + lv_obj_set_style_arc_rounded(obj_, true, LV_PART_INDICATOR); + + int16_t knobSize = std::max(8, static_cast(arcWidth + 6)); + lv_obj_set_style_arc_width(obj_, knobSize, LV_PART_KNOB); + lv_obj_set_style_bg_color(obj_, indicatorColor, LV_PART_KNOB); + lv_obj_set_style_bg_opa(obj_, LV_OPA_COVER, LV_PART_KNOB); + + if (scale_) { + // Use config dimensions directly, not from arc object (which may have content area limitations) + int16_t scaleWidth = config_.width > 0 ? static_cast(config_.width) : 180; + int16_t scaleHeight = config_.height > 0 ? static_cast(config_.height) : 180; + + lv_obj_set_size(scale_, scaleWidth, scaleHeight); + lv_obj_set_pos(scale_, 0, 0); + lv_obj_set_align(scale_, LV_ALIGN_CENTER); + + lv_scale_set_mode(scale_, LV_SCALE_MODE_ROUND_INNER); + lv_scale_set_angle_range(scale_, 270); + lv_scale_set_rotation(scale_, 135); + lv_scale_set_range(scale_, minValue, maxValue); + lv_scale_set_total_tick_count(scale_, 21); + lv_scale_set_major_tick_every(scale_, 5); + lv_scale_set_label_show(scale_, true); + + int16_t majorLen = std::max(3, static_cast(arcWidth / 3 + 1)); + int16_t minorLen = std::max(2, static_cast(arcWidth / 4 + 1)); + lv_obj_set_style_length(scale_, majorLen, LV_PART_INDICATOR); + lv_obj_set_style_length(scale_, minorLen, LV_PART_ITEMS); + + // Use radial_offset to position ticks at inner edge of arc stroke. + // Positive arcScaleOffset should move the scale outward. + int16_t scaleOffset = static_cast(-config_.arcScaleOffset); + int16_t tickOffset = static_cast(-arcWidth + scaleOffset); + lv_obj_set_style_radial_offset(scale_, tickOffset, LV_PART_INDICATOR); + lv_obj_set_style_radial_offset(scale_, tickOffset, LV_PART_ITEMS); + + lv_obj_set_style_arc_width(scale_, 1, LV_PART_MAIN); + lv_obj_set_style_arc_opa(scale_, LV_OPA_TRANSP, LV_PART_MAIN); + + lv_color_t scaleColor = lv_color_make( + config_.arcScaleColor.r, config_.arcScaleColor.g, config_.arcScaleColor.b); + lv_obj_set_style_line_color(scale_, scaleColor, LV_PART_INDICATOR); + lv_obj_set_style_line_color(scale_, scaleColor, LV_PART_ITEMS); + lv_obj_set_style_line_width(scale_, 2, LV_PART_INDICATOR); + lv_obj_set_style_line_width(scale_, 1, LV_PART_ITEMS); + lv_obj_set_style_line_opa(scale_, LV_OPA_80, LV_PART_INDICATOR); + lv_obj_set_style_line_opa(scale_, LV_OPA_40, LV_PART_ITEMS); + + uint8_t scaleFont = config_.fontSize > 0 ? static_cast(config_.fontSize - 1) : config_.fontSize; + lv_obj_set_style_text_color(scale_, scaleColor, LV_PART_INDICATOR); + lv_obj_set_style_text_opa(scale_, LV_OPA_80, LV_PART_INDICATOR); + lv_obj_set_style_text_font(scale_, getFontBySize(scaleFont), LV_PART_INDICATOR); + lv_obj_set_style_transform_rotation(scale_, LV_SCALE_LABEL_ROTATE_MATCH_TICKS | LV_SCALE_LABEL_ROTATE_KEEP_UPRIGHT, + LV_PART_INDICATOR); + int16_t labelPad = static_cast(-(arcWidth / 2 + 4) + scaleOffset); + lv_obj_set_style_pad_radial(scale_, labelPad, LV_PART_INDICATOR); + } + + if (valueLabel_) { + lv_color_t valueColor = lv_color_make( + config_.arcValueColor.r, config_.arcValueColor.g, config_.arcValueColor.b); + lv_obj_set_style_text_color(valueLabel_, valueColor, 0); + lv_obj_set_style_text_font(valueLabel_, getFontBySize(config_.arcValueFontSize), 0); + lv_obj_center(valueLabel_); + updateValueLabel(lastValue_); + } +} + +void ArcWidget::onKnxValue(float value) { + if (!obj_) return; + + switch (config_.textSource) { + case TextSource::KNX_DPT_TEMP: + case TextSource::KNX_DPT_PERCENT: + case TextSource::KNX_DPT_POWER: + case TextSource::KNX_DPT_ENERGY: + case TextSource::KNX_DPT_DECIMALFACTOR: + lastValue_ = value; + lv_arc_set_value(obj_, clampToRange(value, config_.arcMin, config_.arcMax)); + updateValueLabel(value); + break; + default: + break; + } +} + +void ArcWidget::onKnxSwitch(bool value) { + if (!obj_) return; + if (config_.textSource != TextSource::KNX_DPT_SWITCH) return; + + int32_t minValue = config_.arcMin; + int32_t maxValue = config_.arcMax; + if (maxValue <= minValue) { + minValue = 0; + maxValue = 100; + } + lastValue_ = value ? static_cast(maxValue) : static_cast(minValue); + lv_arc_set_value(obj_, value ? maxValue : minValue); + updateValueLabel(lastValue_); +} + +const char* ArcWidget::unitSuffix(uint8_t unit) { + switch (unit) { + case 1: return "%"; + case 2: return "C"; + default: return ""; + } +} + +void ArcWidget::updateValueLabel(float value) { + if (!valueLabel_) return; + if (!config_.arcShowValue) { + lv_obj_add_flag(valueLabel_, LV_OBJ_FLAG_HIDDEN); + return; + } + lv_obj_clear_flag(valueLabel_, LV_OBJ_FLAG_HIDDEN); + + int32_t minValue = config_.arcMin; + int32_t maxValue = config_.arcMax; + if (maxValue <= minValue) { + minValue = 0; + maxValue = 100; + } + + float clamped = value; + if (clamped < minValue) clamped = static_cast(minValue); + if (clamped > maxValue) clamped = static_cast(maxValue); + + char buf[24]; + const char* suffix = unitSuffix(config_.arcUnit); + bool useDecimal = (config_.textSource == TextSource::KNX_DPT_TEMP); + if (useDecimal) { + std::snprintf(buf, sizeof(buf), "%.1f%s", clamped, suffix); + } else { + std::snprintf(buf, sizeof(buf), "%.0f%s", clamped, suffix); + } + lv_label_set_text(valueLabel_, buf); +} diff --git a/main/widgets/ArcWidget.hpp b/main/widgets/ArcWidget.hpp new file mode 100644 index 0000000..2bf085e --- /dev/null +++ b/main/widgets/ArcWidget.hpp @@ -0,0 +1,23 @@ +#pragma once + +#include "Widget.hpp" + +class ArcWidget : public Widget { +public: + explicit ArcWidget(const WidgetConfig& config); + + lv_obj_t* create(lv_obj_t* parent) override; + void applyStyle() override; + + void onKnxValue(float value) override; + void onKnxSwitch(bool value) override; + +private: + int32_t initialValueFromText() const; + void updateValueLabel(float value); + static const char* unitSuffix(uint8_t unit); + + lv_obj_t* scale_ = nullptr; + lv_obj_t* valueLabel_ = nullptr; + float lastValue_ = 0.0f; +}; diff --git a/main/widgets/ButtonMatrixWidget.cpp b/main/widgets/ButtonMatrixWidget.cpp new file mode 100644 index 0000000..0955a2b --- /dev/null +++ b/main/widgets/ButtonMatrixWidget.cpp @@ -0,0 +1,157 @@ +#include "ButtonMatrixWidget.hpp" + +#include "../WidgetManager.hpp" + +#include +#include + +namespace { +std::string trimToken(const std::string& token) { + size_t start = 0; + size_t end = token.size(); + + while (start < end && std::isspace(static_cast(token[start])) != 0) { + start++; + } + while (end > start && std::isspace(static_cast(token[end - 1])) != 0) { + end--; + } + + return token.substr(start, end - start); +} +} + +ButtonMatrixWidget::ButtonMatrixWidget(const WidgetConfig& config) + : Widget(config) +{ +} + +ButtonMatrixWidget::~ButtonMatrixWidget() { + if (obj_) { + lv_obj_remove_event_cb(obj_, valueChangedCallback); + } +} + +void ButtonMatrixWidget::rebuildMapStorage() { + mapStorage_.clear(); + mapPointers_.clear(); + + auto addButton = [&](const std::string& token) { + std::string trimmed = trimToken(token); + if (!trimmed.empty()) { + mapStorage_.push_back(trimmed); + } + }; + + if (config_.text[0] != '\0') { + std::string token; + for (size_t i = 0; config_.text[i] != '\0'; ++i) { + const char ch = config_.text[i]; + if (ch == ';' || ch == ',') { + addButton(token); + token.clear(); + } else if (ch == '\n' || ch == '\r') { + addButton(token); + token.clear(); + if (!mapStorage_.empty() && mapStorage_.back() != "\n") { + mapStorage_.push_back("\n"); + } + if (ch == '\r' && config_.text[i + 1] == '\n') { + ++i; + } + } else { + token.push_back(ch); + } + } + addButton(token); + + while (!mapStorage_.empty() && mapStorage_.back() == "\n") { + mapStorage_.pop_back(); + } + } + + if (mapStorage_.empty()) { + mapStorage_ = {"1", "2", "3", "\n", "4", "5", "6", "\n", "7", "8", "9"}; + } + + mapPointers_.reserve(mapStorage_.size() + 1); + for (const std::string& entry : mapStorage_) { + mapPointers_.push_back(entry.c_str()); + } + mapPointers_.push_back(""); +} + +lv_obj_t* ButtonMatrixWidget::create(lv_obj_t* parent) { + obj_ = lv_buttonmatrix_create(parent); + if (!obj_) return nullptr; + + lv_obj_set_pos(obj_, config_.x, config_.y); + lv_obj_set_size(obj_, + config_.width > 0 ? config_.width : 220, + config_.height > 0 ? config_.height : 140); + lv_obj_clear_flag(obj_, LV_OBJ_FLAG_SCROLLABLE); + + rebuildMapStorage(); + lv_buttonmatrix_set_map(obj_, mapPointers_.data()); + lv_buttonmatrix_set_button_ctrl_all(obj_, LV_BUTTONMATRIX_CTRL_CLICK_TRIG); + + if (config_.isToggle) { + lv_buttonmatrix_set_button_ctrl_all(obj_, LV_BUTTONMATRIX_CTRL_CHECKABLE); + } + + lv_obj_add_event_cb(obj_, valueChangedCallback, LV_EVENT_VALUE_CHANGED, this); + + return obj_; +} + +void ButtonMatrixWidget::applyStyle() { + if (!obj_) return; + + applyCommonStyle(); + + lv_color_t textColor = lv_color_make( + config_.textColor.r, config_.textColor.g, config_.textColor.b); + lv_color_t buttonColor = lv_color_make( + config_.bgColor.r, config_.bgColor.g, config_.bgColor.b); + + uint8_t buttonOpa = config_.bgOpacity > 0 ? config_.bgOpacity : static_cast(LV_OPA_30); + + lv_obj_set_style_text_font(obj_, getFontBySize(config_.fontSize), LV_PART_ITEMS); + lv_obj_set_style_text_color(obj_, textColor, LV_PART_ITEMS); + lv_obj_set_style_bg_color(obj_, buttonColor, LV_PART_ITEMS); + lv_obj_set_style_bg_opa(obj_, buttonOpa, LV_PART_ITEMS); + + if (config_.borderRadius > 0) { + lv_obj_set_style_radius(obj_, config_.borderRadius, LV_PART_ITEMS); + } + + if (config_.borderWidth > 0 && config_.borderOpacity > 0) { + lv_obj_set_style_border_width(obj_, config_.borderWidth, LV_PART_ITEMS); + lv_obj_set_style_border_color(obj_, lv_color_make( + config_.borderColor.r, config_.borderColor.g, config_.borderColor.b), LV_PART_ITEMS); + lv_obj_set_style_border_opa(obj_, config_.borderOpacity, LV_PART_ITEMS); + } else { + lv_obj_set_style_border_width(obj_, 0, LV_PART_ITEMS); + } + + lv_style_selector_t pressedSel = static_cast(LV_PART_ITEMS) | + static_cast(LV_STATE_PRESSED); + lv_style_selector_t checkedSel = static_cast(LV_PART_ITEMS) | + static_cast(LV_STATE_CHECKED); + + lv_obj_set_style_bg_color(obj_, textColor, pressedSel); + lv_obj_set_style_bg_opa(obj_, LV_OPA_40, pressedSel); + lv_obj_set_style_text_color(obj_, lv_color_white(), pressedSel); + + lv_obj_set_style_bg_color(obj_, textColor, checkedSel); + lv_obj_set_style_bg_opa(obj_, LV_OPA_50, checkedSel); + lv_obj_set_style_text_color(obj_, lv_color_white(), checkedSel); +} + +void ButtonMatrixWidget::valueChangedCallback(lv_event_t* e) { + ButtonMatrixWidget* widget = static_cast(lv_event_get_user_data(e)); + if (!widget) return; + + lv_obj_t* target = static_cast(lv_event_get_target(e)); + WidgetManager::instance().handleButtonAction(widget->getConfig(), target); +} diff --git a/main/widgets/ButtonMatrixWidget.hpp b/main/widgets/ButtonMatrixWidget.hpp new file mode 100644 index 0000000..3d06a22 --- /dev/null +++ b/main/widgets/ButtonMatrixWidget.hpp @@ -0,0 +1,22 @@ +#pragma once + +#include "Widget.hpp" + +#include +#include + +class ButtonMatrixWidget : public Widget { +public: + explicit ButtonMatrixWidget(const WidgetConfig& config); + ~ButtonMatrixWidget() override; + + lv_obj_t* create(lv_obj_t* parent) override; + void applyStyle() override; + +private: + static void valueChangedCallback(lv_event_t* e); + void rebuildMapStorage(); + + std::vector mapStorage_; + std::vector mapPointers_; +}; diff --git a/main/widgets/WidgetFactory.cpp b/main/widgets/WidgetFactory.cpp index e000247..6bc123a 100644 --- a/main/widgets/WidgetFactory.cpp +++ b/main/widgets/WidgetFactory.cpp @@ -13,6 +13,8 @@ #include "RoomCardBubbleWidget.hpp" #include "RoomCardTileWidget.hpp" #include "RectangleWidget.hpp" +#include "ArcWidget.hpp" +#include "ButtonMatrixWidget.hpp" std::unique_ptr WidgetFactory::create(const WidgetConfig& config) { if (!config.visible) return nullptr; @@ -48,6 +50,10 @@ std::unique_ptr WidgetFactory::create(const WidgetConfig& config) { return std::make_unique(config); case WidgetType::RECTANGLE: return std::make_unique(config); + case WidgetType::ARC: + return std::make_unique(config); + case WidgetType::BUTTONMATRIX: + return std::make_unique(config); default: return nullptr; } diff --git a/web-interface/src/components/SidebarLeft.vue b/web-interface/src/components/SidebarLeft.vue index d2e0050..1b56367 100644 --- a/web-interface/src/components/SidebarLeft.vue +++ b/web-interface/src/components/SidebarLeft.vue @@ -46,6 +46,14 @@ Rechteck Form + +