From 54e89e412ae18ea9ba17141db37724dffb56ee5d Mon Sep 17 00:00:00 2001 From: "PANIK\\chris" Date: Wed, 31 Dec 2025 17:27:50 +0100 Subject: [PATCH] Added more demo stuff. --- bcdrivertinycan.cpp | 8 +- bctransmitter.cpp | 4 +- doc/BF_BikeInformation.docx | Bin 15519 -> 16804 bytes .../.qtcreator/fancy_switch.pro.user | 224 ++++++++++++++ doc/fancy_switch/fancy_switch.pro | 26 ++ doc/fancy_switch/main.cpp | 54 ++++ doc/fancy_switch/mainwindow.cpp | 1 + doc/fancy_switch/mainwindow.h | 122 ++++++++ doc/fancy_switch/mainwindow.ui | 31 ++ doc/fancy_switch/themetogglewidget.cpp | 2 + doc/fancy_switch/themetogglewidget.h | 278 ++++++++++++++++++ doc/~$_ConsoleInformation.docx | Bin 162 -> 0 bytes 12 files changed, 742 insertions(+), 8 deletions(-) create mode 100644 doc/fancy_switch/.qtcreator/fancy_switch.pro.user create mode 100644 doc/fancy_switch/fancy_switch.pro create mode 100644 doc/fancy_switch/main.cpp create mode 100644 doc/fancy_switch/mainwindow.cpp create mode 100644 doc/fancy_switch/mainwindow.h create mode 100644 doc/fancy_switch/mainwindow.ui create mode 100644 doc/fancy_switch/themetogglewidget.cpp create mode 100644 doc/fancy_switch/themetogglewidget.h delete mode 100644 doc/~$_ConsoleInformation.docx diff --git a/bcdrivertinycan.cpp b/bcdrivertinycan.cpp index ee50659..d9e6edd 100644 --- a/bcdrivertinycan.cpp +++ b/bcdrivertinycan.cpp @@ -146,11 +146,7 @@ uint32_t BCDriverTinyCan::readRawByte( uint32_t deviceID, uint8_t registerID ) c if( getState() != DriverState::Ready) throw BCException( "readRawValue error: driver not loaded." ); - //uint32_t result = transmitter.readRawValue( deviceID, registerID ); - - //value.fromValue( myRandomByte ); - - TCanMsg msg; + ::TCanMsg msg; // msg verpacken msg.MsgFlags = 0L; @@ -218,7 +214,7 @@ void BCDriverTinyCan::writeRawByte( uint32_t deviceID, uint8_t registerID ,uint8 qDebug() << " --- BCDriverTinyCan writeRawValue: " << value; return; - struct TCanMsg msg; + ::TCanMsg msg; int timeout_count = cTIMEOUT_COUNT; msg.MsgFlags = 0L; diff --git a/bctransmitter.cpp b/bctransmitter.cpp index 29db2d3..9ed82b6 100644 --- a/bctransmitter.cpp +++ b/bctransmitter.cpp @@ -38,8 +38,8 @@ BCTransmitter::BCTransmitter(QObject *parent) : QObject(parent), _isBusy(false) { - //_canDriver = new BCDriverTinyCan{this}; - _canDriver = new BCDriverDummy{this}; + _canDriver = new BCDriverTinyCan{this}; + //_canDriver = new BCDriverDummy{this}; } diff --git a/doc/BF_BikeInformation.docx b/doc/BF_BikeInformation.docx index 1f6a6a1dd7f1a3eb5c20a2e2e73e22928f709efe..791d50d44ac3b0e58f32ced76df540fde0836709 100644 GIT binary patch delta 11442 zcmb7qbx<8o)9yioy9Jlv9^BpCCAho09U!>FL4v!xySoPqPOyW!2EX~epS)jvx9%Tz zwzg__y8G$govD$hC)c~^J49VSEHK>~k$VOe0Kip*0H6Z^08d93GiEbKQ+IoF2R9}! zd%H7z9oIeXq=4TMZ>UI0Q>NeA;1Z%}XK&7qkB%dvYSR5nX;*f!P+=t2!Eg77%HfpJ zbYkK5va&)eIFu!UQ_Q{c0Qf6M;D^foufnQQ9gTqYf#su#By-)^hMV_E;8O1g_Q$TC z&H@#!l#D^j&E!&JmciTGLGQ<@qtc*CiXc{l9Rp=S7D_JFaayJGf_&Kbes-cs@^k}S z9bK)3lbUwLN)zSHP4jX>evNx8VKm8eAgDtY>{ijkEIl!5=EH%T_Ra$0tN>BFH{y)J z9&?uyJnc!qZs|k_IDMJ{mXJ1tlP-w`b4ko)OI!yzEQOJ_q>(OFAj>=iB=Pc&K7zzK zDI?#$%qhss1SD~8tJ^_#WsIqIduuI8%$KFzzvW4vT%v*ulecB&&02MGIA&$3b`e=+ zGy{GYN}SXbhXluYq>{o)a3t{%F&3#C))1e#aQA+sf!{ig2Up*Kw?dPAW)2U{C#M@h zuXFng7S4|L1)ZzsJ6YPg)yOvK^a7e-w=9L!GvzaSg>D`LIPceVNaAR}>-JK3PPbCk=%&aMshE^C?V9~)ALr5%*ePK zyc?s+#V;CP+KYDWxw-v!7O6kYHN;fR^9_SVZx5o8O1wO)BEL5BHM9MEv`u?rL6IgC zk@f_FU<%6DX9Vv z6UWafZqGNs2J9qi@Y^nd+0$fgPY?eOL=uKfRZovIQ{8KJI|oSYNV?+asx0*4D0#8B zAd8239W^dw8fC(yvC?jq?aQz9AGGHB)TqO&I!@2PXilS^HVi9k+vTl>MvKrLx1^$p zNb2USiDwmqO>NuMcR!YjSGT+5MHklK#+pMRF~oHsY*|r&o$D-F;KVE^7^mxayK%TL zivVwBBtkOzD~pp7a#q=f$ZT!V`~8$b=Qj`Ma;k?{GB|l?XMGPFXq_2Jo z%QcI6|MbF3+rx1Ja;?6vrv{7V-w0M(qO-JT_ij}zml58JR@%!opP*5Wec@a;z#Bms zI@khsc>Ee0$mkpnZpK}Vg=VW~m1M#ucVgZe**p=6K^!^*=;f6%DSr{F;-_yINh;2{ z!n_o?!XH~aRn1{j(Fx?Zg1|wH zVc|X1S)*8FxhFz!bZ(LzzUh(*D#q84RJf4STjd=(`J=;Zh2+ zHjgIwd@l1PXSnrpLAzRb;rSa@JvW>vQqGpGl8`7i(+(skLDJ~h9>1Xw&UG2MAOK-_ zRLe}*P5Ahxy{6G*cE9De z>MXoyAq-5Qd#(J3VrUnTKc);*f-1BN5TOPb3Zm>~h#^mF(4wD|UuW`wKrIaqr@;F3 z*cpE7GG-6)3N7!3pzyo&wY~NHH~MdS?_&}Toi~2h&DWv#)tu|&@hNjwRQc55peCiD zrg-H;MyKscgO0$+O^fa96_le>Mx_`82DDod`)>DQ{&Y^@gv%G8EzfhthFovz_~XOK zcf_$-$~b>@0tKZ!9FGv|A}u;iy;yEeQIDe8cqpyY@*vc*n9E+~pw`QybH1gA+aKZ% zfeMOxp-pBI_QcM3yS}x@0Ih&j->&6f028&@(P}UN{V+I!!j8NybhZ%hG#_DmAj`;^ za1_E*;UO!CFFP2>*F8!clH>VQcQUuN4;rD4#T225lULM+O%tF^6Sy;TA;cUK#WOv_ zgM=da6a;0%hYRF=Z;99%ir{1w1X;BX!bSm%GeeZC8VTyjxXd;znaa-f!X~6vfFkw- z>RbwOVi(ZEmC+=SQG&@obLcF#5O5sr=8hD)xZQqBUXB9mh=d&N4z#apwmPOCi23;J z&g*zwX>SY}(;=G_*G$y=~i);RlNBgliM z>%>TLp~QjRIt{UP@C9WP`GgLa-G_K+?wS!kRX0@aX_;cX`Q{6@G4IP?VliUc>Q{U% z;e=1BNZt8J)~hd(?8!nC4NN%Fc__JW#Da|v?wWOG2>ES)9$Eg@W1*jcOw$l*})Mzt3jvKCKY`5YA1(zmo)RuC<5)N?x!QroB%v zm*eZtg?~Y)`;n_NfH1u9y#8Q$d9_xpP~}hr;~mV;+Nc^^DqWgVBmHW12dYyueFPSw*GnHE+uA{?LPga+S2=42eNY0#TSHvVy zrU)5^Q&^Z<1)+pvjO=`sw}Igv_3{d5FjfId>=_=_`eTTCt0v5-;?R0_NS=n%qFdJD z+9;$Sjfd6VD%0;yWOu7cV9M@o;GhzV|XfVQSB28-3s>)X%2i zk~^Mh@S5GzPYg*^9A|&(FYjBQY#_2`5EMO8dFjvllJSr5@?_9b2a>EIvl8l=CeuSQ=u+t^FN~NgWqmKDYXM~ zU{WuB!95gRVFK4-o|WA)hj@EL2uPFn$!SS)H+Cz3n38q%2tPKR?s!ob#Af#D*3K@h z9`AQ8aPo@&_>9Kl(iQ;^Qvs+rDnNi#cSct?PI@sVRt|=)N`cUDQ-Oi0XoIU@@lm8k zMY}eofra@;4_4h7UOh;jsw{Ha8i?k@sSKkm@kwJv7+V;7vhb@I4hYbIkQc>Nu`P^^ zD}qgBjuipFtA?QSR|{7IE-xxN4*>)PvbHn*jY3xWFUOzCcFD^I%<7Y2d&1GDGyocI zs-cMg3Z}t4vYopLCTxH+FAAli53UTd%!F0T*q0sWDo`>n3Wo!zu=J(<9=EcC@9OhN z=>R&LLzeC`ZXXucGZ}5%xVD%$!;Kw^Z_cAxs6#bI{2%hXgj9&-nTOgk0yUj)4e}1I zJo7JFVZR#ngr+J9WC__&hXuKhREX4#4#b(Vco9(6c#n3|sm^tTfFfQ8d1v^n7B}iN zb_?A5On+$d%Apj1W|35J3O|QL8LT39iarUeeabk(P-ro|8|qkzOy3iwL$Ep##`F~d z*@jRN8>7P#=fVGMilp+5q%y`jX1OmTQW?txC=glg%CYlECMt#yf=Ce{6aq^W*duWr z3M4m%)PunzPSD8z_?kh?h-r&d9lhU~nL}lB-B4(&wKFh)$D5wiQYmyM=d@DDpPJ=+TDdL)zgo;_2kdu< z_YK+y*0&gq6YH)Z$+aA^VknPIJPxV0YPK7VA=+)eJTB9f@Q>_xRBuiAWc+IxZYwL0 zTH6J)o+(sOQc+#iRe3^g-B6+To4JJ&n2Zoicrp-2OUk3*vR6bbKpC||jGciUqM0Kq zqM!&s=PXUU90gDZf`S*CI&53|;0dy6zT2;hY(VitV{4=Jf$ltbZ4xMmPJmJFE9^3~%NxVbCk>c<-ex9U*PQRTMK>Fl7X31!! zi|@3vo~YH*-rk&P3SzZ3^gvH`%SNM<#f?+cB;Y=Inf}I%f*dk2yyW&Gvl6wVUR-5E zyMx~$SNrblblT`_d-q&!irAV1oM?LLINSU7zIJl@p6Rd)vO)4l+(P|IcpApDnBMH^ z@*y>E)0k0qYIC(QF)!ff?fs2ILBk6DykeCl&6EBz&irfAi7$*z`F>4BMoQWv>a)&7 zg+^noT%}&6WewC@`om3`EU>yUF*Q5o#`afHMM`oj7c$P9!$3fMOCluT%(;S5 zURGvd;Dzo5r3!{zuwlD>_tQox-4X^`s~ZoAOIU2>&|EHnXNCMXileNMZEOHoDYD*z zx3blzi;o%x7;%fCWil{EWM8E44ZtIZ(t@1#EVx~g85YSZ-H(N&c)mojKfGhB=HpDp zteHYFLOH3*X%I3%7ds65JOST8p<@J!boK(zNh}c}>J>%JE_Scgc7W74vln2Yf*p^m zPbUkvX(u1qb^mVGRg4Iugko|q)b13Fbmf-wYw*$b3#6atwi;3JrR zZfd34y&oQgg4)El%CEdR*FoVAk;tQthzAkE#<7!H_2NvmJ@pd!Dbhq0V=PI_Fe!vb z4_&i~CWq<@h?@)Ys1R2PJ}FF~f2k0W?Y~RUGrei4_?v7JP~`aFFqxZWQR@20LGV!Ga(;c6^ z1I@<_c4;SCr!9Ly5~18hyE?ev;N|7_V~Y-R(^>1b#Bldzq#${lihl6_pwK=Qppb(L zQ0PspL;yM@m-JbAz6+86Q2``qUA@9Y9T*#eC`CGg*t zx>(}DPzcR!!8Zk}XLi6GNB992yx-%Fg=2d0P`nqTwTO~_2sMeH`tL{pk5El zR=rDft?1Ern=1(3RkL|Xo1et+QhVlY+@azsU-dV#M0bsDb~-xaXA{R28n|QSaSJ8< z=9Ne?fh$l-(|K=V9VzW_P+Pis6ge_cu=H$E{)LI-qde7wIq1M6&wV@{u5_sIK^$d5 z)|LX^?26MC&PE09 zTfEI=UUqQN4l-~MH`9NdQzcviCt7!^CvW2nsi{+fIXdf1+Hv2k&;W-|XJZnBTFz&6 zWqd>uRv=dzk0{ic9&> z003x^5GfT9E3%-bhK5$AMXP2k&U9QxV=JsrISURN50G5tH~BvOzA}USWo!g+Bodw2 z_^qZv8sLB6@_Z+cDm>Nt8<;-a4>jwONM-qbhs*bSAhj`mBg<=MNm<@axir1F_;$4ET4EYt9%5#GY9% z8Zdp~Vad>GIORFu#%URf7p;w@)cNA;D+PrJau<=I#zenawr=}zUG(#z^K(3#SVUD3evZHO_P+`@T05fj~6!R!pQBJR3him<`>+I!7_e(ah8?mOYuBwI5USKC5}zlJE0D^DT^qfNq%cE^h{x-Ur7cp(2B7-UnoXlW@KdzcyZ>;lqa~Y!+aS9-&ep3R^ zn2wyw13n`<$V(?#KJD`&UwXT#jbU0s>8JAldDZCJwplyz(6{#x3~>$U=A+#$VxICq`+5X>FFpyVX?(qqJ)LoNGbg z-O?1HUZ;~DKz4D5b$TK~>L zye!`w?5S!YGxyCL#Lk%1v@O!#dnaWYIW$j8hn$0d=OsBW4T*=jdM3OF`3aww8X&?I!W%#pAbuac%EX@g`f&~ z7HOPD)*#23Rie*0O60p2^gwi(;DPyk^LKs?a&%}#0aN4Dhg#i`NUXS@IyUX!m9X&Wi^rIwO7u`ku@jq<@j5wrw- z9z~Vgt`ifjJ7-g*SkP^JJs@xOQW=Z=CSXSy*h)S*Zl;VXx7|;&=%zU*gZ`x1d}dgW ztqIhzm!zCO(UA_;1&&yIDPe}y<{a>YtXKUVi(0J-OXK+q#JXr37XRpK+`MEYDJB8g zGL>|g+-jO&=lsi&)aiFwI1}%oj*D#wdl0OUF z<~rivA6WMe;PZkp$+qfNH{^NYnke^n3uAvBh5@#BqT z6!+ffG0{JN#*c}DN0yZM4qLb@{5=ul=LdW?g7(L#8=cWx?h>n!xLP0rUP^8v%7?h8 zH=U7sKuLeutNeGBr*zoDo5s1*KqV>{40*00b<%Rb8c3iF*Uv97xzh_V=1SrTjwS)4 za5&P)YoiR=Ww~KRk=_xR0M%-h(GZY5l$68`v!A>sN2r7jb1=3F&ZxC)Q%eiJQxo{P z(bnGLIgPNp@`}}hEVsmYh)pVUqvfk%53A7RN>xvdWU2YAtuq&6aOSZ~b1#Bx)3S{Y z)tRluISlaE{gcX*Zz^x&BR@v8j*iM7)2KofPt)@`+mTP_BbDhx8DL{6Iqd_LPOwdC zmxcGn97d}5{G95k+jN5rYORik;VImx!h7S?HQ|is#=eBy-kM1!p|!QnVeqJeK@(NV zHb2tRCghkR*L2%?XXL1TyhxQ$K8;Y<)gks{DbsU0> zL-I`hIPx5ibUWG4IfOX4HY=EO=Q)J67jgQCUCe5qDaZ}9>{2KPxF%&XXx%aa3j_za zWM#~t_B3TO1l=+;NJe$IARM}^z#ULL4Jl5=;l`Hr1*LjKFb-XaFe0{SUTDQ(G$@XS z4QQ30k&FL~h`qKKf^hC1f}rB}_x>pwie{BB`k(0kfrdfH@`ynvF7hvH1hSu^OI(P) zaR1+S8Ltal1#SWsLPNDaytymD%Yf4f%@eiz(hZF=70$Jg-Mgm2uuZ?y}JtiFGw!})GHC%rKh*d}*R`++9 zcO6Faa8l#1!6SyH<95^~@i;3j1m6||^2dqj;YJ-os9HnxQg-kV3hAvKLTb+1(L3gk zB!#b!L;5jK!$jH6!fp!jCy?ZtdzClgv@6JhahCuixi)ZM1&)xv5?D!wB{T@RW}uS? zg_jDl(QA2_@|L<7jS#S6M>(t*pWLWC?5~+G%9tV^u!1a^YYA;4-iEtmi;39 zG)4~9*vVA<@)2`6hYIIaRidRfyYe`jkL@$btAhWhSg%E0%6%4M75;DNOy6w&!D;^o z!d?BZf8Gjb-Twd@m-#R0zr1Yxr}V$Q{9hql7DtkL!7NV4m`eyh_O#KbDk1**0Egs) zVh*ie`w9bF%9lY@^du0`AW8Z!KzaEnG8*IN!4xL5DYJzDb^U@_Ci)U3s*|^fX3ONi z7hUliz9Ob;|AhVIWEG26wU1v4n4C`O@;v(jSt-sQuAU%$(^c?;ls-ScoH>a;=hU%M zU}ogx&7^@@(gMWR30{rVaI)Fjc6&o(mTO>N`-;yMW7^AMhgYiDQ$NbG_|z=0_lrTx zccgp}cT!+awD?bh!HXj*s$%oO{V*?n7V?icm^J@9;PL^RZ|bIC z?NZ|e;2QU~N@Y4A>_8hhi_ar4Dfma^M5pi{(UymoX6A?8pxndxhQ0l=oPSks8XzJtHKzbkxoleE^Sg^#>oju!yiFOhs@^wTWqfGyq<>mw~_O4{Cpb=j==j3ZXr$rb?$RE zf9gT_x=w@7x6P}DQ>iHr)SPh+A3^ly5nW}cE^nE&J>8pgxq}i+orjY8bvmQd!z4S~yqGSl_XR2ev&@735f8N@FIQ@vO6U534otKPyjHGRm3;GzudelK4RxZUfd4lS6cq7WSOl9o)?1bSqv2@3hH8;}k)n&DjI>+pWD z7_X7&Axt$OXSU#}PE4aPF*vK(*2*V-ZpPr3urRMoEHE{RvisDleB1@CIz_HVK}$VU zw4!o7I`%VR2uYSfFMS#em7|KDIjV^1GVG3yF8D>jqd@Q|XWM@l6v?;gA$%0v7O%X)P>@?-=i`aBG(@3L{@@c^m*Y6i(a2>NbMh!83p}Y z&RV(z_p2R=7cQ7KMSn|{D~LGlg94_Q$={YY#+H`B^WA3-`@k|wxTR0WZgh)Q3O11Z zT4!mke!0N*FU82~4K29|WsW2LbOU@m^UZUfdDC3}GQXX7l=OqDU5kCFHJ72?_J&Jb zbYCBbhrg$?WV}r^N->01yKO0AT&s z;UG_Q6SeE?K+R>b__twXMC~cY2)g z`qledyI5b2>d#N5@f8*-IT_?DtXknU!c`5)uPRJz8EAd~9PNk3iHXlxR0TVm3XGnN z_D)f+3kX6xk|Rkp@i#G>h(enPab-qi89=RvmSc8xlY~at3?tYPYyk@w&`K!V7HgC} zamSU~&9=E>O}SF;z=D4TBHIgk=E;bkB5FK;*UT=|IBJ;BhrTQ)DFpIUBnx~kti&9n zIsR!%9JV;sQ;=G4r?N2<^A1Dx1`NE0XGy6$wVZl@EuE?0zPFVv%lxctz8> zi9Ha|&n?Mj1o8Cz$Y(S94n_YWGU)wcSOS)%jA$@H2;izA0m;O^RhV>R7$( z97#y1+HnL=M@mB$u^RXXDYtF-@%HiZ0%bv--V!}V%Y$we>2M}xfu@1sFljA^sXf@J zB(?~}V45>&(QiG4OMWtmw;nyzsg#DyEW|d(8(zXP-RQN@f^R$pagSmUk<`ZARb`Fs z{0d`DB(sSbcR^tA4l59zQRfwa)CrMI-q zp1@R(jU3N=9Nn60rfetTF8H=%SPx)#GT((s$@7B$RKGZvwf34c*2!qIvaLAp`(^dc zxUwlf6H>bF6pj-Grmk1){T)5y70)dfGG|!|f~X`)7O%Z1bOjF`l2T*s2G7J-cZy}d zj!JCTRc0*k?hQyJ)k85^UcVt$5m%JNMknFSTlqj*RSj9}#2|F)YZGGVj@@8_7?i!4 z@Yw(vPDb;Tqb3pMbW8K1d#XINJPEus0vq zzGfgqrSgK066LNt)#?Ik2cUD_ZyuRSg$JMyv~ok`3BA`Iz+#o+eKZX@RX{-~10<%` zRSavtrz-fAfXSXkWWEoSf5)LvYydbmc}q1#D0w9vywS_`^ul=?EJK~I8N{lif&8cQ;A4PQHn5!yv3CkJcZ*;;_#>$I;hEI}Luuh&6Yjz(0ZGH9=;dZGf={gksQGQOj?dec>xk0?pg|Z6YQYDT_hDLYcEk zJ~9M54$MLMACNT6wYfWC5rHt@i0`0V?D=dD1@KQT@0Q;-O+OaZGi$Ukq;+VGw=mVXbxFE7;VPyYU-`|wGa9io zZ*SRh%zLR1;jlYpkS`%qhEQ&eiA@i@1Khhi$UyP>RoWxBc31v9y||p66(57#@z_jW zJ=_TFal!eW;k{k2(En;47Nn4g?Z3_Q8>;au7YPJVt>0mt1*sc#MF_8l%VnN{9#V2R z!Q{yJ8`O~fY=%7bfSF8!dg1DFd;@{fsz-)Wd_4R8opk@XZD};Izw$4;iKi+$MD}^k z2|`Y=>D$vu34OhSD9(E2bsD#7-hJ#jH2|M;U*BP$Bw+RzR}ga=Nnk8mi_}hN%s#2%hB`@* zIkcaPB0Vj6`eZNNv3;FA12OEdgbjd!8KMI?Obm|Jx=s$+C-YMY!(yljij8RUcD@=Q zf-d%zNRQU+Y85x7be@cu~qT zj5e_1)p?Nl7*s~!uVA6FFi+O&QsGKD>2O1ThaE^eIf9Pe$uI6421aBbntVboT$I;S ztU2==A<=JbaUDqLw-YtHioZIt@l8wJn;w+=n)%WgHQJ4tWZ}}SU2}sxrdmghLx6wG zo*WtI+Y!8c40v89tm9dJ&6ei7XYbJxG@Pb;4x{9CZGvAA+wBE_26z$>|HtuNkUp;> zWE~EunpYa~01x!YOHKH{vw44~kN+&EBp_Zs3c~;9-pc@hzlVVTM=}2b^5!EW{NF2p ze``#$gIf5g2>wK@ECBE~4e&ooD<8;{ MpB#2t@SnQ>1C)iWH2?qr delta 10142 zcmaia1ymi)(%{A2-6eQ%cL?t8?iM5vJirBlJ6!zY?ruSY2Z!M9?(VRB|J#4x+ugHg zd(K#CPgi$UPjwgkgvj=)>4pWOXNfWwA^`yHw*UYJ008iCa;5g5_AkeGU)kx5{NN1#^9U*E@4&l$((oJQ^9IMg|cDb&1UV0DOG zd_{cWP5=3Jx59C_K%ETySfG$zUA_xv>6zyG=wP(7`m-*)Z(Jck+n7Zrp8u;;Zoy(C z(*me&+~P}pX42EP&8)`s=_A?Q{&9ga&%TrKo%Nrdle#09GoZwphvf3O5erw{UIqYt0 z%v_nQba&_WkOVFdp}|C=a9uc?#UMB6rZ5><1fLAMLg44~=j|sWeLZt29)_~k%6hohRt?~K?IF8u!a8zHD&{bB>f!hr zIk@U-2C2XPbiA%tM4j-$;6#MNmHa*8cA3|2zr+mEu$`!jue3kgIT%oLwr^4*{Pp!v zcl&gGre_5}D;xmIBU%Q=)x?%)nL(kH~fY>f=7suhv89U>j#rvTa)s-?eAD$@=`FcF7E7a7knIjY z`8N>cxW`y%W+OiHY1P_3D(?0NpDw-$wHf9wh!}|Sd2HY&Mkob@VcteX$HV^YeYnWx z%(XLcJ%DyY_L@@%q9g}68r_(^+!IzQXtQ#L?rtyKE*F_-J z-d+$Ng`__=d10J)6{&izr)v8vf7`fSen#gd!}E|)Xh2u#E;&DLtEMG6kpXK8C0U4x zaiiZpT@+=uSgBDO{`!OL{LtQJ;RqaScsLP87+mg^pVgy3IV>;5j#rc^ zCLh?Y-4nyX?7t>PG`*Pf)khi!QF*=?O2pTM`)eI6OT6|gbPchEU>#h`i36PyE6Kb? zH=i6=wTi1Y=SXC0%^CU^Zp}wY!uUla*2Azz3Lr^fN&JxbU+PLyu_kJN;y?Xe*DUUd z6nd2&4eEYq8jqEmWqTGtV_oDAt08v}R1rtK=puSBO;~Eqv=V+d#-ft+d%i30pHDBd zYMD+Q>0pgA(L?^zk2BP7xCG?tPmx@8E&j?>t;0IH6DS2w5vv-96c>3MADQRlzWaKs z7=ULE=SA~10>L@Bmq0-Ra%_^fa9H(*p@M3xEp(dAk9}YTo?e24@DiVYnMJ~`MZ+N= zQ>F%84u@D%;E2+8@9)u-+G=8}?LCo{BGVo(O*f@Estc>VHJqT(o-7bem}D&81I5NH zO9dqsJ)Kl^8bk3=T<;HP?W)w0NT{a!HZ$&_W}R@Oz&X9rRfGR`qTK=hqy^TpvkElU zrGJs%qf$rmm_PR+H)=DAXAkF|!f#UW@9ClT2c_f@Kjnw~;h6M3rI~Pg)Ep$(Z~TMw zA~AgkT;ct}4&PG{br67eWv?tjUV?q3&=?zq(o7j+dL=+z_-xe4%JpNK01^G-XD`9{ zse8VKKy)iu$S7jd!Jt45e+^_=7>Lpq#8TGq*IIbGFWgZ{0sp{Y{tM8gY!C6La_710w9bozwL0m})Y zxX(%Q)ML0T1E%D0HG^D&=0urnI7b=`N}ZGt!}&R=G7X_9&UyOW!^ZZPMvOJW7QjU^ zIinl^+EwG0ZMG{Y?0hMc_AACUbu;;$K!Rk|Mtb6j%qY~2$z~M}%>u zCXa23_lOZy3XoT>=^J$e4#gUzEL^~YkIhPDmd;poE$iYJt#KTmqZK;uXgmGcg&S)K zELX1a5$Gg#@zl5t%6hE+AhnDOB_83-Lh%6S3|Do$xXQuohgYrqhJ^PLGbUI&DtNe| zUuJS{ed0M6`BlyQXf?Brw&5IAKx0bw%r-mEY#Y$L^chRub3y??Ebb*ixbJ7=n-I#s zr?%?&fo4a`CEvCEOFrP~$k#VX zTIWj4pN0h~oeFsTrl@Y*hlbs!xagvYg?YNr@9!6SukxslfTuunX%n-xkTTwX;E`$;bu9;I^BIIprG z!_MdCX1BY^F4f`+IbAoNcQ{b30Cs&Rt^fkC5%@gM0}TKmA^*n&|GTBDtF5E;_kSk% z4O*&B%iQRGWHs+52VOCZ{RudgN*IHe36zeJ{Js7is+5*k6q11jCoTPN&oPNMeDW$( z1XpJ2_p81hf~4mUo7+&XqU#Grpff3pX$c z^i-tAgrlVMIS*|5IBhgCJ+Q@<foozNeNJE5@hp2~9Wn-0Fksoj z^qfj&vZA|^P<}_#F1`WnvGm8=*O&=AOxgr;FS@s=H+7*(C1e{ypteTgWRBM^9}uRx z?-3r(nhr{S3ljdCb>0~|hTo!vwv{C{8jN=%rqCh1R(aviy7?{s+$VLo9LPsGxv()- zu49%xKe<@dwJWLYt!Cm`AycJ7nI&N!Wuvl3K$Z!aF!QQ1iFP0nlg;#|i ziuW}ja{NsU^E6vO0gkrW3w}IT+6ONX&HWcuSx_V-3Qa`dB&14Ko*sdPKjnM^>mI+- z5IkgTn@=TrsL>|%I4lT}Yjh>o%rXeNkSQ=)QA!ud>CQ#m&LjUl#Ax@@Iitbz*B8X3 zkdh<`YR@+8M%6%|mk^^c(su-3+3vS#=+fIdsE`5` zplrQqt5a?o&e@00wCN zO`^aFE$r<;(4chB z{GQfS8^sXh$WzVGyH*0{cG!%5GK|!f7pvYaqlwJ_dn42(6PJ z9RLso`B2dSEyDAvs_5uto93z(V$6nQHP=FZt4KhbwE*aJACq6fueF&(GI7xmlRt6u zTbc|k;{i{jyElhvr2eVreh>WefpA&7wK5a1z1ly1`WNShZQY#NU+mu5?OUMlz{r0} z4ol2N$?_C_*nIAKKW!VF_qt5H5R3!ZzIo$jp%h61*?=8w;81m8^T*F@`=x?>7>iLj zS6|(m1voABCxLf#bv9Yyar?jQZy4D;IdF^RQ#T<1>HVfOE^PEhLjwzhwsf|_E7RFlLx>yb za5ZQ^K#bTMPN=gPn|q-p4sFagUTOIZ-m;Ac%_7J+X-Q7W+>?~o)^dB@?jpu)EeyUY zwNUw%;x{OFbACIiPOVO-NMwapG)Y+_zGPFkPp7s*r z&aiyXnsT|(_c&TI9T)C}b(UCzGQtWHc^z+U(#VH#aPw?>28w6v^{x~Nq5Mic#E84& zc+zH-L+Ycx?U~OtnAvl@M<=D11}24_jP#U#l1fX}^8KRW<;p9UKbr~B6ln^uca8~k z$Gd6K=!$~jp`jY8_qqBKbT8OSzY|^`z${Pta`na^DM`~izPO>0LXWm~q5HxdLz$(; ztWfOS2h6;>ksr^Wz09t5J*a^btCiW^pSp~{3#5u&^Fw(wfT8r_wu}HN50k5EvutT@ zF1@T%FHEwlT8r!|NN$_7AmoV4|BeC%c;v`B${QNG~%S zc7AP5MHP|S z=3T)KP!F5j4aTu1<7@9AX!eb|=yf2&eEGI44G>wm^FI$=CS8C1w%q%R%<%{C=C0QP zZO+qxV-|5uKCMvFDM>MiPEGY9XT$h8zgENS5IYH08O2-hlPwiQRJgr6`B^kB`)kLl zc!SLA;I){gcR(sM=)p1mvfZQK>*+TZ+df1jWwZMscpLgG2F^BLbfwH*L;eu-p z0~Ye%etU%t@OO9VkpAhgmS;JjL_$uDt4*4Sa*~W0WN}t4E7of{4Zg0=1N#2!vs?f) zUL@6~gif}Nfr9z%1PZ6Z`;2Js%>?qtLtjo0fhL|VXI@sFjRc9+RM^wl1FdG)2f(l1 zM&i|K>gj&j!GMatPurTL_w1`jO1KISj`#dFO{aWX2H=Lw@g&{$o7EV*drIvir%L(X z+nQN!^O0ZZQ|jO3*@~FrOZIM;B$+MCw_T^Y#OEhV`WpK_CCp>S%9zNvzhOSp6%W}3 z-o?;l|I&?$)SI#^P|E8t9qLiAc`lE}c@?s!_Aloh8M078li%phPM{|M(onV+BlMnU z?FoWx7k!-yKF3pS#Y?+}@kr7{RclgrRns3*JvP@rChpdbC(V(!qTTLp!*@$_pReW| z2ldmVI5~M(F)Bf}67;n#$C3r=vuWEF9pMxHMpDH#lM1obhJ3&LO!f{c3fyN$P|6O| z`=QhzSkTRE9{6Q|JUk2@D67P=%}GNb&b1c%V#}z5JC$Q-y&?#q@r|;Nh#L%+g$ro1 zFz`vd3^m~{xb!pCt(Xfgk#LiT)Y9c1#oJ!@S`eA>#e^6do>Yz$s}?ybt!gUzc`Tx+ z^Kp@!v>)F5^2qYVe17AJ#~mf6tTqK<=!ku+mB};Ef80kiW1C-*^0^t zG2~qXO?505&uC?VFGVD2AMS*Cm0H;)E&jSA8Tnyij&cDTb8VwI+-jp5Vk!%C==?5FzS7c(9

0bdA6)ri_nR&lVYilAVWdWC@jYL%+AK_CYx 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 diff --git a/doc/fancy_switch/.qtcreator/fancy_switch.pro.user b/doc/fancy_switch/.qtcreator/fancy_switch.pro.user new file mode 100644 index 0000000..88025fa --- /dev/null +++ b/doc/fancy_switch/.qtcreator/fancy_switch.pro.user @@ -0,0 +1,224 @@ + + + + + + EnvironmentId + {350f6538-4791-42f9-b43d-6ea1a7b22b7b} + + + ProjectExplorer.Project.ActiveTarget + 0 + + + ProjectExplorer.Project.EditorSettings + + true + true + true + + Cpp + + CppGlobal + + + + QmlJS + + QmlJSGlobal + + + 2 + UTF-8 + false + 4 + false + 1 + 80 + true + true + 1 + 0 + false + true + false + 2 + true + true + 0 + 8 + true + false + 1 + true + true + true + *.md, *.MD, Makefile + false + true + true + + + + ProjectExplorer.Project.PluginSettings + + + true + false + true + true + true + true + + false + + + 0 + true + + true + true + Builtin.DefaultTidyAndClazy + 16 + true + + + + true + + 0 + + + + ProjectExplorer.Project.Target.0 + + Desktop + true + Desktop Qt 6.10.1 MinGW 64-bit + Desktop Qt 6.10.1 MinGW 64-bit + qt.qt6.6101.win64_mingw_kit + 0 + 0 + 0 + + 0 + C:\syncMePlease\projects.now\fancy_switch\build\Desktop_Qt_6_10_1_MinGW_64_bit-Debug + C:/syncMePlease/projects.now/fancy_switch/build/Desktop_Qt_6_10_1_MinGW_64_bit-Debug + + + true + QtProjectManager.QMakeBuildStep + false + + + + true + Qt4ProjectManager.MakeStep + + 2 + Build + Build + ProjectExplorer.BuildSteps.Build + + + + true + Qt4ProjectManager.MakeStep + clean + + 1 + Clean + Clean + ProjectExplorer.BuildSteps.Clean + + 2 + false + + false + + Debug + Qt4ProjectManager.Qt4BuildConfiguration + 0 + 0 + + + 0 + Deploy + Deploy + ProjectExplorer.BuildSteps.Deploy + + 1 + + false + ProjectExplorer.DefaultDeployConfiguration + + 1 + + true + true + 0 + true + + 2 + + false + -e cpu-cycles --call-graph "dwarf,4096" -F 250 + + Qt4ProjectManager.Qt4RunConfiguration: + C:/syncMePlease/projects.now/fancy_switch/fancy_switch.pro + false + + true + true + true + %{RunConfig:Executable:Path} + + 1 + 2 + + 1 + + + 0 + Deploy + Deploy + ProjectExplorer.BuildSteps.Deploy + + 1 + + false + ProjectExplorer.DefaultDeployConfiguration + + 1 + + true + true + 0 + true + + 2 + + false + -e cpu-cycles --call-graph "dwarf,4096" -F 250 + + Qt4ProjectManager.Qt4RunConfiguration: + C:/syncMePlease/projects.now/fancy_switch/fancy_switch.pro + false + + true + true + true + %{RunConfig:Executable:Path} + + 1 + + + + ProjectExplorer.Project.TargetCount + 1 + + + Version + 22 + + diff --git a/doc/fancy_switch/fancy_switch.pro b/doc/fancy_switch/fancy_switch.pro new file mode 100644 index 0000000..02d18d9 --- /dev/null +++ b/doc/fancy_switch/fancy_switch.pro @@ -0,0 +1,26 @@ +QT += core gui + +greaterThan(QT_MAJOR_VERSION, 4): QT += widgets + +CONFIG += c++17 + +# You can make your code fail to compile if it uses deprecated APIs. +# In order to do so, uncomment the following line. +#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 + +SOURCES += \ + main.cpp \ + mainwindow.cpp \ + themetogglewidget.cpp + +HEADERS += \ + mainwindow.h \ + themetogglewidget.h + +FORMS += \ + mainwindow.ui + +# Default rules for deployment. +qnx: target.path = /tmp/$${TARGET}/bin +else: unix:!android: target.path = /opt/$${TARGET}/bin +!isEmpty(target.path): INSTALLS += target diff --git a/doc/fancy_switch/main.cpp b/doc/fancy_switch/main.cpp new file mode 100644 index 0000000..02e873c --- /dev/null +++ b/doc/fancy_switch/main.cpp @@ -0,0 +1,54 @@ +// ============================================================================ +// main.cpp - Vollständiges Beispiel +// ============================================================================ + + +#include +#include +#include +#include +#include + +#include +#include + +int main(int argc, char *argv[]) +{ + QApplication app(argc, argv); + + QMainWindow window; + window.setWindowTitle("Theme Toggle Demo"); + window.resize(600, 400); + + // Central Widget + QWidget* central = new QWidget(); + QVBoxLayout* layout = new QVBoxLayout(central); + + QLabel* label = new QLabel("Toggle theme using the button in the status bar →"); + label->setAlignment(Qt::AlignCenter); + label->setStyleSheet("font-size: 14pt;"); + layout->addWidget(label); + + window.setCentralWidget(central); + + // StatusBar mit Theme Toggle + QStatusBar* statusBar = window.statusBar(); + statusBar->showMessage("Ready"); + + ThemeToggleWidget* themeToggle = new ThemeToggleWidget(); + statusBar->addPermanentWidget(themeToggle); + + // Optional: Speichere Theme-Einstellung + QObject::connect(themeToggle, &ThemeToggleWidget::themeChanged, + [](bool isDark) { + // Settings speichern + // QSettings settings; + // settings.setValue("theme/darkMode", isDark); + qDebug() << "Theme:" << (isDark ? "Dark" : "Light"); + }); + + window.show(); + + return app.exec(); +} + diff --git a/doc/fancy_switch/mainwindow.cpp b/doc/fancy_switch/mainwindow.cpp new file mode 100644 index 0000000..0a4a1cf --- /dev/null +++ b/doc/fancy_switch/mainwindow.cpp @@ -0,0 +1 @@ +#include "mainwindow.h" diff --git a/doc/fancy_switch/mainwindow.h b/doc/fancy_switch/mainwindow.h new file mode 100644 index 0000000..01e2c23 --- /dev/null +++ b/doc/fancy_switch/mainwindow.h @@ -0,0 +1,122 @@ +#ifndef MAINWINDOW_H +#define MAINWINDOW_H + +// MainWindow.h +#include +#include +#include +#include "ThemeToggleWidget.h" + +#include + + + +class MainWindow : public QMainWindow { + Q_OBJECT + +public: + MainWindow(QWidget* parent = nullptr) : QMainWindow(parent) { + setupUI(); + setupStatusBar(); + } + +private: + void setupUI() { + // Dein UI Setup + setWindowTitle("My Application"); + resize(800, 600); + } + + void setupStatusBar() { + QStatusBar* statusBar = this->statusBar(); + statusBar->setSizeGripEnabled(true); + + // Theme Toggle Widget rechts hinzufügen + ThemeToggleWidget* themeToggle = new ThemeToggleWidget(this); + statusBar->addPermanentWidget(themeToggle); + + // Optional: Reagiere auf Theme-Änderungen + connect(themeToggle, &ThemeToggleWidget::themeChanged, + this, &MainWindow::onThemeChanged); + + // Status-Message links + statusBar->showMessage("Ready"); + } + +private slots: + void onThemeChanged(bool isDarkMode) { + qDebug() << "Theme changed to:" << (isDarkMode ? "Dark" : "Light"); + + // Hier kannst du zusätzliche Aktionen durchführen: + // - Icons aktualisieren + // - Custom Widgets neu zeichnen + // - Settings speichern + } +}; + + +// ============================================================================ +// Alternative: Mit QAction für Menu/Toolbar +// ============================================================================ + +/* +class MainWindowB : public MainWindow +{ + Q_OBJECT + +public: + MainWindowB(QWidget* parent = nullptr) : MainWindow(parent) + { + //setupUI(); + setupThemeToggle(); + } + +private: + void setupThemeToggle() + { + // Als QAction (kann in Menu UND StatusBar) + m_themeAction = new QAction(this); + m_themeAction->setText("🌙"); // Initial: Dark Mode Icon + m_themeAction->setToolTip("Toggle Dark/Light Mode"); + + connect(m_themeAction, &QAction::triggered, this, &MainWindowB::toggleTheme); + + // In Toolbar + QToolBar* toolbar = addToolBar("Main"); + toolbar->addAction(m_themeAction); + + // UND in StatusBar + QPushButton* statusBarThemeBtn = new QPushButton("🌙", this); + statusBarThemeBtn->setFixedSize(32, 24); + statusBarThemeBtn->setFlat(true); + statusBarThemeBtn->setCursor(Qt::PointingHandCursor); + connect(statusBarThemeBtn, &QPushButton::clicked, this, &MainWindowB::toggleTheme); + + statusBar()->addPermanentWidget(statusBarThemeBtn); + } + +private slots: + void toggleTheme() + { + m_isDarkMode = !m_isDarkMode; + + QString icon = m_isDarkMode ? "☀️" : "🌙"; + m_themeAction->setText(icon); + + // Theme anwenden... + if (m_isDarkMode) + { + applyDarkTheme(); + } else { + applyLightTheme(); + } + } + +private: + bool m_isDarkMode = true; + QAction* m_themeAction; +}; +*/ + + +#endif // MAINWINDOW_H diff --git a/doc/fancy_switch/mainwindow.ui b/doc/fancy_switch/mainwindow.ui new file mode 100644 index 0000000..becc91c --- /dev/null +++ b/doc/fancy_switch/mainwindow.ui @@ -0,0 +1,31 @@ + + + MainWindow + + + + 0 + 0 + 800 + 600 + + + + MainWindow + + + + + + 0 + 0 + 800 + 18 + + + + + + + + diff --git a/doc/fancy_switch/themetogglewidget.cpp b/doc/fancy_switch/themetogglewidget.cpp new file mode 100644 index 0000000..e265e8b --- /dev/null +++ b/doc/fancy_switch/themetogglewidget.cpp @@ -0,0 +1,2 @@ +#include "themetogglewidget.h" + diff --git a/doc/fancy_switch/themetogglewidget.h b/doc/fancy_switch/themetogglewidget.h new file mode 100644 index 0000000..c525fcc --- /dev/null +++ b/doc/fancy_switch/themetogglewidget.h @@ -0,0 +1,278 @@ +// ThemeToggleWidget.h +#ifndef THEMETOGGLEWIDGET_H +#define THEMETOGGLEWIDGET_H + +#include +#include +#include +#include +#include +#include +#include +#include + +class ThemeToggleWidget : public QWidget +{ + Q_OBJECT + Q_PROPERTY(int position READ position WRITE setPosition) + +public: + + explicit ThemeToggleWidget(QWidget* parent = nullptr) + : QWidget(parent), m_isDarkMode(true), m_position(0) { + + setupUI(); + applyDarkTheme(); + + } + + bool isDarkMode() const { return m_isDarkMode; } + + void setDarkMode(bool dark) + { + if (m_isDarkMode != dark) + { + m_isDarkMode = dark; + animateToggle(); + applyTheme(); + emit themeChanged(m_isDarkMode); + } + } + +signals: + + void themeChanged(bool isDarkMode); + +private slots: + + void toggleTheme() + { + setDarkMode(!m_isDarkMode); + } + +public: + + void setupUI() + { + QHBoxLayout* layout = new QHBoxLayout(this); + layout->setContentsMargins(0, 0, 0, 0); + layout->setSpacing(0); + + // Toggle Button + m_toggleButton = new QPushButton(this); + m_toggleButton->setFixedSize(64, 28); + m_toggleButton->setCursor(Qt::PointingHandCursor); + m_toggleButton->setFlat(true); + + connect(m_toggleButton, &QPushButton::clicked, this, &ThemeToggleWidget::toggleTheme); + + layout->addWidget(m_toggleButton); + + setFixedSize(64, 28); + } + + void paintEvent(QPaintEvent*) override + { + qDebug() << " --- paint!"; + + QPainter painter(this); + painter.setRenderHint(QPainter::Antialiasing); + + int thumbX = 2 + m_position; + /* + // Track background + QColor trackColor = m_isDarkMode ? QColor(0x3A3A3A) : QColor(0xE1DFDD); + painter.setPen(Qt::NoPen); + painter.setBrush(trackColor); + painter.drawRoundedRect(rect(), 14, 14); + + // Animated thumb + int thumbX = 2 + m_position; + QColor thumbColor = m_isDarkMode ? QColor(0x1F1F1F) : QColor(0xFFFFFF); + + // Shadow + painter.setBrush(QColor(0, 0, 0, 30)); + painter.drawEllipse(thumbX + 1, 3, 22, 22); + + // Thumb + painter.setBrush(thumbColor); + painter.drawEllipse(thumbX, 2, 24, 24); + + + // Icon on thumb + painter.setPen(m_isDarkMode ? QColor(0xFFD700) : QColor(0xFFA500)); + QFont iconFont = font(); + iconFont.setPointSize(12); + painter.setFont(iconFont); +*/ + + QString icon = "FITZ!";// m_isDarkMode ? "🌙" : "☀️"; + painter.drawText(QRect(0, 2, 24, 24), Qt::AlignLeft, icon); + } + + int position() const { return m_position; } + void setPosition(int pos) { + m_position = pos; + update(); + } + + void animateToggle() + { + QPropertyAnimation* anim = new QPropertyAnimation(this, "position"); + anim->setDuration(200); + anim->setEasingCurve(QEasingCurve::InOutQuad); + anim->setStartValue(m_position); + anim->setEndValue(m_isDarkMode ? 36 : 0); + anim->start(QAbstractAnimation::DeleteWhenStopped); + } + + void applyTheme() + { + if (m_isDarkMode) { + applyDarkTheme(); + } else { + applyLightTheme(); + } + } + + void applyDarkTheme() + { + QFile file(":/styles/fluent_dark.qss"); + if (file.open(QFile::ReadOnly)) { + qApp->setStyleSheet(file.readAll()); + } else { + // Fallback: Inline Dark Theme + qApp->setStyleSheet(R"( + * { + background-color: #202020; + color: #FFFFFF; + } + QPushButton { + background-color: #2B2B2B; + border: 1px solid #3F3F3F; + border-radius: 4px; + padding: 6px 16px; + } + QPushButton:hover { + background-color: #3A3A3A; + } + QStatusBar { + background-color: #2B2B2B; + color: #B0B0B0; + border-top: 1px solid #3F3F3F; + } + )"); + } + } + + void applyLightTheme() { + QFile file(":/styles/fluent_light.qss"); + if (file.open(QFile::ReadOnly)) { + qApp->setStyleSheet(file.readAll()); + } else { + // Fallback: Inline Light Theme + qApp->setStyleSheet(R"( + * { + background-color: #F3F3F3; + color: #000000; + } + QPushButton { + background-color: #FFFFFF; + border: 1px solid #E1DFDD; + border-radius: 4px; + padding: 6px 16px; + } + QPushButton:hover { + background-color: #F9F9F9; + } + QStatusBar { + background-color: #FFFFFF; + color: #605E5C; + border-top: 1px solid #E1DFDD; + } + )"); + } + } + + bool m_isDarkMode; + int m_position; + QPushButton* m_toggleButton; +}; + +// ============================================================================ +// Alternative: Kompaktere Version ohne Animation +// ============================================================================ + +class SimpleThemeToggle : public QPushButton +{ + Q_OBJECT + +public: + explicit SimpleThemeToggle(QWidget* parent = nullptr) + : QPushButton(parent), m_isDarkMode(true) { + + setFixedSize(48, 28); + setCursor(Qt::PointingHandCursor); + setFlat(true); + updateIcon(); + + connect(this, &QPushButton::clicked, this, &SimpleThemeToggle::toggleTheme); + + // Tooltip + setToolTip("Toggle Dark/Light Mode"); + } + + bool isDarkMode() const { return m_isDarkMode; } + +signals: + void themeChanged(bool isDarkMode); + +private slots: + void toggleTheme() { + m_isDarkMode = !m_isDarkMode; + updateIcon(); + applyTheme(); + emit themeChanged(m_isDarkMode); + } + +private: + + void updateIcon() + { + QString icon = m_isDarkMode ? "☀️" : "🌙"; + setText(icon); + + // Style + QString style = QString( + "QPushButton {" + " background-color: %1;" + " border: 1px solid %2;" + " border-radius: 14px;" + " font-size: 16pt;" + " padding: 0px;" + "}" + "QPushButton:hover {" + " background-color: %3;" + "}" + ).arg(m_isDarkMode ? "#2B2B2B" : "#FFFFFF") + .arg(m_isDarkMode ? "#3F3F3F" : "#E1DFDD") + .arg(m_isDarkMode ? "#3A3A3A" : "#F9F9F9"); + + setStyleSheet(style); + } + + void applyTheme() + { + if (m_isDarkMode) { + // Dark theme + qApp->setStyleSheet("* { background-color: #202020; color: #FFFFFF; }"); + } else { + // Light theme + qApp->setStyleSheet("* { background-color: #F3F3F3; color: #000000; }"); + } + } + + bool m_isDarkMode; +}; + +#endif diff --git a/doc/~$_ConsoleInformation.docx b/doc/~$_ConsoleInformation.docx deleted file mode 100644 index fcd1843a562b49575c42c2c2c6c5ea80c63b3dc7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 162 zcmZQg&M3+(W*`x;G9)u(FcdLlGJv#Rx>a@NsN3zYp(~o&Zfj+1S=+?7J@mrGZCqCO z!W`9aYk3^DNp~!iI(cCI`u3v?SIlJEr7l|VZCqF=6Xo>SVoB4nLJh{=$1k4#o)lBB V#+uHZiqeDKg`+}!mt9{@gdH1+@h