From 28b365b7453892aeaeb57cf30df1128089e1ac35 Mon Sep 17 00:00:00 2001 From: JackLee <809262979@qq.com> Date: Mon, 3 Mar 2025 17:45:18 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=83=A8=E5=88=86=E6=8C=89?= =?UTF-8?q?=E9=92=AEico=E5=9B=BE=E6=A0=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vscode/settings.json | 7 +++- 3rdparty/cmark-gfm | 1 - 3rdparty/md4qt | 1 - CMakeLists.txt | 7 +++- res.qrc | 6 ++-- res/img/btn/btn_history_to_send.png | Bin 0 -> 1271 bytes res/img/btn/btn_info_delete.png | Bin 2565 -> 2594 bytes res/img/btn/btn_info_down.png | Bin 763 -> 927 bytes res/img/btn/btn_info_up.png | Bin 761 -> 906 bytes res/img/btn/btn_msg_menu.png | Bin 831 -> 981 bytes res/img/btn/btn_restart_to_send.png | Bin 0 -> 1942 bytes res/qss/light_style.qss | 40 +++++++++++++++++++++-- src/ctai_history_textedit.cpp | 48 ++++++++++++++++++++-------- src/ctai_history_textedit.h | 5 ++- src/ctai_parsestring.cpp | 3 +- 15 files changed, 94 insertions(+), 24 deletions(-) delete mode 160000 3rdparty/cmark-gfm delete mode 160000 3rdparty/md4qt create mode 100644 res/img/btn/btn_history_to_send.png create mode 100644 res/img/btn/btn_restart_to_send.png diff --git a/.vscode/settings.json b/.vscode/settings.json index e92d9b7..7c204da 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -95,7 +95,12 @@ "set": "cpp", "qmenu": "cpp", "qstandarditemmodel": "cpp", - "qscrollbar": "cpp" + "qscrollbar": "cpp", + "qtmath": "cpp", + "qclipboard": "cpp", + "qfiledialog": "cpp", + "qtimer": "cpp", + "qstring": "cpp" }, "editor.gotoLocation.alternativeDeclarationCommand": "editor.action.revealDefinition", "editor.gotoLocation.alternativeDefinitionCommand": "editor.action.revealDefinition", diff --git a/3rdparty/cmark-gfm b/3rdparty/cmark-gfm deleted file mode 160000 index 587a12b..0000000 --- a/3rdparty/cmark-gfm +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 587a12bb54d95ac37241377e6ddc93ea0e45439b diff --git a/3rdparty/md4qt b/3rdparty/md4qt deleted file mode 160000 index ef2c5e7..0000000 --- a/3rdparty/md4qt +++ /dev/null @@ -1 +0,0 @@ -Subproject commit ef2c5e745c66c3e1b2b170a4f33de4891e1a5a7a diff --git a/CMakeLists.txt b/CMakeLists.txt index 9a067fc..822636d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -135,7 +135,12 @@ configure_file (version.h.in version.h @ONLY) SET(CMAKE_EXE_LINKER_FLAGS -static) target_link_libraries( - ${PROJECT_NAME} PRIVATE Qt6::Core Qt6::Gui Qt6::Widgets CURL::libcurl cmark::cmark + ${PROJECT_NAME} PRIVATE + Qt6::Core + Qt6::Gui + Qt6::Widgets + cmark::cmark + CURL::libcurl ) diff --git a/res.qrc b/res.qrc index 6c51289..f2ca1d7 100644 --- a/res.qrc +++ b/res.qrc @@ -21,8 +21,10 @@ res/img/btn/btn_info_down.png res/img/btn/btn_info_save.png res/img/btn/btn_info_up.png - res/img/btn/btn_info_tokens.png - + res/img/btn/btn_info_tokens.png + res/img/btn/btn_history_to_send.png + res/img/btn/btn_restart_to_send.png + res/img/btn/btn_update.png res/img/btn/btn_download.png res/img/btn/net_ok.png diff --git a/res/img/btn/btn_history_to_send.png b/res/img/btn/btn_history_to_send.png new file mode 100644 index 0000000000000000000000000000000000000000..491680876a06dde122b849d01b9196dd4ff6793a GIT binary patch literal 1271 zcmV*vQ-4)zwv5S69~( zNN2wukeQj8=yWF9Xd3eItJ_2B^f&#bH-yfo9T5WCZ^DyXOdK2JV3cg1=1E0m43mgQ! zg?xCS({erRTsK|wFe(5Eg^+MUZW1F;bMT>r4+kXocmXr1{O=88|E4#^n#Kj-w6Ue->BXo>G3K8ln1CG zpkjaug7S=`W&t$~s&#-`2>DxuvR)7;!$)`)46;gn$%bl|cH*MRnq6Pg!zbt)UJ0^i z_`;rHy1^y-Yl7)qS=Q|O;UM501SA?EfFq~3oGB#f2r#vN$OH%%23RR1%pZh=28O_1 ze?!2``XLiw#PW8KQM*Ci-p6ndw1ahx=%_qEd4TWkR}BGmBBV}))QM1Jp9rx@X=8ai zUYkR^ySwAL5&vmqPPLm%Mn*<_TwL6DN$)msGxQ1q26k?&;}@}xe`YsuM)b|g%Ui;J zYYWj<_XKYwL35rFl#1OAMRiT`u76q&OAgrdIh5Fl=h)9{3s zqk#nSgqCsb|4?V-s~CAxz$7VzMYI&DGCp~Ab|XY&zoGL5d8QLNgAkHJ;^gOn6JTP& zIs`?6q|XoGH&iZTcDUnmxf;kFkf#yL@xfF#EjBhb6@cOp*VCWgtJgCJ!+J%bK2g#q zUuZb!g54|;Zzd9NiXe3-ip3A7{ZQ-B_cmProYs!NRM`!DyvP$foX-3aAb?|$LfR_= z_~hZV8)_Zl_BU&p!0)t zz9Y~W=ex+=Ki<*Nak{>~{)ZVZA@><}0s;ZD8t{NYaHtm1dw{-vKkyS+{FD_eKBO36 zgp5E0SRMF?d4OGjhn)a`w~B1+_V)IZR&@11-W+leWUbv|N8n-e0P=4qS$%&HES81r h0Y(C)m1QEHfPWHcxnWAc56S=l002ovPDHLkV1mHFP=x>h literal 0 HcmV?d00001 diff --git a/res/img/btn/btn_info_delete.png b/res/img/btn/btn_info_delete.png index 6d1bdc5f97151cca9af1cf3e5fe005a0f6f78d50..3d9d3c6e1be75392a41fdb3068390a6f8c81a330 100644 GIT binary patch delta 2585 zcmV+!3g-2N6rvQ6B!B5iL_t(|UhSI+Y!*cn$0;oZRESkB!zGs*jc5pJ1jM3<(iUl{ z1*@Pa-h!fnf)Wl1M3Ez2XySp&C8AJhD@OoJg12Cdw}MAS4mpYl*rq`Jy=Hea-*%7L z{q`#u*kpt5_s;)&^JeDFG^x%B{v@5?{?|DPz{w1#1qAx{?|y@Rs^+L{ z!h05PGeiAf{JV{J4>UXZ_Yd9;OP4NPmuT}6HUzHcNls3_6$dhS8-#HLunxgj1SoR= zV`Uf_ems!^ke8R&u(Gmp1O|^ZBJ8JM`**-7MeYoMcut#1gD^4xa&mGWM&B6TrW$%f zlK{jvfS3pnuYZIVqA%A}ehF_6=(|GO z&O_!8M~@yIxop|8Rq+538i4fl^pv!;wC7QNkBb52e4l&d$dPHwmoMKO#z@M@xpnK- z9RmuQYz!*ITo(;S)g%0O80!sFhB}=vj zQ682yH-9&`6B!{Hc%BV}p8%&DLt>AvY;6D-kIg~ewE#fLQj}!d1U?y0_0=&>mj?UZz&=@Zs(;T^?0dpbhA#jJzZc=NZIOSS$Pe=q zUYoyT=Su9n)@Elf>@4xJ!xI3;eItt7?+8v)gnUv~R(1tb&f(g0&`+096TZgQHVW-G zWI<>Czsil@69B5dtnfye%oIG?t(}ih*}WZi4*}~;q5jHd*ih_!GcW*ISy?UX)vNa_ zjDPhM=DVU=gC`0-hoJqz(_!Prjg?M1T{8edve~#pVfqT^FV;1jXmn(n+Oc@?;sd%o zPISybr?J3k&RE`}BZtM(DP(~RTj@EN&v0yiQ5yhbsk>KYVBv8i8;?agMgZO<=*BZ- z%HYdoFYtj5pPdE}dr^Z5aHcV`CIP}k9e+8der4!xfw!YJ094drD1B8CP>KMr-JT^o zBO{{)k>9Q;`65sc_LYi9CgXtL}!&pL2TNfL4%k&g$-S>L3X4ukK+&kfHeSc zwL&=-#ZT#=Z`2O^k~k0uMDQwf71^Axlai8hCPOMFGu>>$hXweMuLN-#L43>?0Dl>C ztor^@3CqjNn+4g~;lR!C&$B7h0>N-zA|JEsV<_Fs5L}=W1fel9NbM=glz5>p02nX; zqW2WS&tbe&SFuUQu5l0%SjcN-8RNJ@7AweG?<5c1S36`#~9{~EAM5JCG=)W5V09_Dp{#vQ_cIN@AhQUGX00605>bM_A z_D%5vU^4)8Pyo090KN;N*dY?KU0!Jaj)T2;Q*i!$ep44*NBDjN(GpNXKYwKNP<)xA zWWbw<9O?-Gs7Wv08aE*3yJ6C?5Mu^njC~y;Ei9)NS6q=d?J=6HA1U^&$Dee+45-A= z6q6__07M=jWFuRKQ?d(akwo5EtAh24{rGKTRscstyoz%C}cw|B30I;S>WlbagR6jBeQv+g#oYO3@ zo3uGoVM>dt%Ujz+fNT~&b}K>HMFyA$veloRhJft4td=(jwk<3yEDaNFmB*t93Rz54 z;+_6Xy>yS;GmTrjNaX%RFwgZH0@O@CH;F{?jxMKT;% zUt}=F%Cg!V0&4-Fw;up8eE^Ib0n-a%0dUzD$n=+Kp8vb8|Dnl;=IuCiOE*ipS|$K5 z;foxqSdUW;c$BC-tuW1lX-F6&beuQkCISS8-MjdbtJwaa{dm0w0PLc=vk#Zk9}~6T z0Kn^%))AYiHbe0Y2Y*176QVOr1D$#TZvBA$AZN{&Fm?)Z!VB{G@Y}bpaczf#7Df(K zyU3B95}h4HU#{iEJZ=Ci!hwM%C57-A3gM$V!@y{zZ-@U>l^zhU((MWX;MMTk3-1AD zq~^>>vQ+ndi2lnE-K}KuYh<$8}{X?Xn9FynxozA#9B!v+fax5oJ z(HY3G&M3Sik9Osbpx@9 z!_mu*)5FnCYB!5uZ8p~aN8O_3+wHNpl?*{|F{j$kdHR}Q0V}3itGzRHQe`w>d)hoe(aGR{v)B7djo$DK~41jr>R3XI(JJlmEDp*KtM03(YXY>~y9)%Q2#Z8~`HU{BrYR~rBW zgpO>Kq<_n5Ulo3iG5xtFryh#NCQTY1tQmR)ImQbFfLMj{HYi`G zR$KXQtomkhsbW^VcLLnJH*So|9Dk>Jd}ipEjZg2O?YqDLh%#f5BoXN5VC>(3Ay?WX zyD zrz`xUjiyG8vjpj-A$I~%pBzTM@Px_$RT;%-2nJ5&TPqJEzA^UZa?|uP3|9B))ojM1 zORmaa0cZOP%7>2M_;EZS&W%EN+!>%6 zVSik%7|u8O>k+N~fvyucz6Ee)-C-Se>hgNgMGAmzXh<_s?iy(=NL-AR8)nORUynD{ z-9Shf0H#7&MM^u2b@^p{YsuRJP^3{={bzGVA=}BfZT$Bx{;mGAIe1Fw0el!ml#fXU vB--$(qB1m5a!vw}C}jUHa{mLa+Y-}#LEhaN00000NkvXXu0mjfq3X7f delta 2555 zcmV*LQB+V0qauU^3>7nNX>qT%IBuw@SQiS#0VO3dB2h**c6LE)YwN*qejwN3eDBZqulc;0&tG!i!gqb%(9+UUQ(ayCuRT3JdxU_Z zqM}}Td3oi4DF(o30QHIpqFRlO8ZM@F$k2`DcwKM>F}0eqE(v!BuTbNcq+ zekk|8nPlj*fqy_)84z{#E|*4N|wpZWbou8q5Q@BX}|rsm&% z9-?Cap?_FTPR?LthSR6WhnUysGmYu-iZ#j%9b*$vQBhHXv-32kQ|weXH#gr6*uTbc zw6wJJQq~Ve)SwhSi*s{xuUNWt=~r>|$0C3cyN?mN+<)r;WGn*std%QQz8A-_R9T2P z16#Ln{nY&%w!R=5#>XK!5&`4JjqBai)U*a?hIyQM2WKYX%s-L@?$w3e9H!8f0Ke5U z)mrFtK5N4hQS62$pt!jB;O^bK{|RHqcnr?Of!{}QAc_pr?g+?U1PQPs zFp)ma$m82K{5%#Cwgk!P?^Xl=UeDuNV_-Y0{C{z*@*mq6*js%d;kVej#n@X10p9f? zts8*^6c!fd<>%)Mta5m@F(_ZPw}6GPlg&WA#y|}<12v8H;Qk=_Kmt%Y2c_2&b~<}lQsev{U2cP3j}*}Z34`IAjA4Q#+PzC!}Pr*4hd%cc@|y2 zl0K535;j53Vw|ZlaFZcyff=}~SPSkAO@9E-*C{+-=NrL`0OEemXdJogk-Oc~$y(N{ zSm68g>9YzTBhBx-n1;s!Mxz_pAmL+VHE8eQyEkiXC!00`7|B=Zc>>q2`uh5QYu2o( z5437JU|b=4ff<2TK2O1k$86;Z`)=g?tKE_3-oRCY4yE8$&HGp+az+q2FZv1k5`REN zryms^H<5_4^6QcGND2w(0Kl8E`2sQEtNG(-(;+l?$yHWX4g&c5W)OZy?`q zU%tsI?!Mb8n^0WD&q`I*(vrZO&wnN1TIm^ifiK1JKSs2j1rF^PmA5pYr$-n9o=5N$ z1U4ghNK^-mTo*{tUcHS3Lh~%)=^qGbEsAbEReUOU9 zcMU*LrRjrMb?cZrr^Y0}u@4DPad#h&&5&@mNJs^b&E42mx*d7sU4Owb5`SHFPUy9? zRA8^liU6E#RY#n800J&cfPgGh&3Q6~go%vI1b5^G9!D!lTvQ5=-6)(Kj!x&@0(akh zz%K$cZ#7pXbTX9z*ccd@T3q z)tWHQZ;r;bO*DUoj>Cws$G~!-6#)osr(U1{@# zBuQ`=bRuj95jM+;0EE`jaRk?ToEaRK00UmTI_Hrp@Bl9(!FtxL399Fv?IB@u#O$-3 ztE9sN0lv}vD4ma65kLeiU?e8vXd_{h7l#1$72VlaD8qB}39T>X0`JkQC(n`;5-zsg zfu{2h9A(&Yp8cw0`hUH&@lAwqMpcwMjAB(--;F|oDQ2jYUTEa?bkVNvc^`cuVIjYt z>-k%xt+Xretqx(+7i+pqa2QTIZ(oUmD~JLooea|q_&W5QX!JCi49^d|t6C&H#Fw_m z751%)n|{7Qfb5S%$LnA?-mg#EdH}*Z5blNWa|pXzQ!5Ste}4dFtmjQx?P4K1 zC0#)x9U(q%o~Hw1jtzn81BvHxTd2?Y^Ap}(n4 zs)TMSC3$Vle}B&6`Lc~7WM5DO5_ublydS5N$ygQ#jEbV#4sW4AI)IAot{~&csCGC7 z!vcRQ;A5Tb@sfbf;eb)8E@PuIJ%q~i8>Umng)}1p7@r1+xl%+J-#{484l-`4Iuq$% zm((dQNYxs&(>9XmuQx*4#co07piDjoz8Ui5(*Fh2Ab*~vii%F%@VOKR=Mgd25izPr zrEP%(q`ZEvhS9Q4jXtDvfdojOCpFeom`G?VYx`a_D*}{LlS;m6c2#=KG=$J{bL{_X zBCH57QE)nU<@BBIfJB@TuqMEepqC3eh@iHfBQm2q`iM*%@RAKhfFVI!SEt0Sf+N%7 zw5Xe#R zHgfJyZ9zoo2l<1stId+L*9emy``L?3fFa>b?(?;4^eCT4+I$0P^NuJ0)5+)vKD)b_ zRFc|Gd=PoDtJbjykh40q$y%Tjn%*k!R({jzl7B^nsMT?`bimDtldJi=c6Uy73f+I_ zHkC*5KjV@dn*i4V^Isu%0lHn`0cUkg{%?%dD_pPJOcAor;f%E2O==JD3)hAgU9Q_n z#2$zX+?7v^09T=2t@HUtKs(3PQX2sN!*3cn9lp}OB8RIFzvuHkpZoDCQ_2}}t~mhL z`*g)bTjB(`-kAf`(S diff --git a/res/img/btn/btn_info_down.png b/res/img/btn/btn_info_down.png index e44756a9c795a22061856b242c9a441244243657..5f2bd8595c4b93b160b3921400df3bb5b1cfc0af 100644 GIT binary patch delta 906 zcmV;519klS1)m3yBYy*CNkllF<0mZU6cZp0)H5v1bwY%j=`xCP$i&BfNeF% zQD(k&QF8##8~|$LNbBZ)q!vrz_jq?#5!E;IY7h=D@IK(Er~$CHgH>n+5DoysCsyBX z_RIkAK7i2QB%*Te9Qhu^vr z1gtm>>_D5H*FyooE`=-jzTFJ~vVRwKf4SQ=4K*~43v-k;v=L_CdmUn+?G(=k%TU5p zyMH}`Uq$eHoZ29NnCSZf2@Gxq5FXJ6>STxcU>oLxkASelw)q19y8+;vBLFCXtiwmW zcJ9Sr6o#E$L4^?TZ=_HJ8&Q-+Fr?X!zhEII zSj0{tXdp%Gw9r`j8}6+k0#V3X>~7u(Gca6d0mlWv zw?HZjRIAmcUaxo2YPBw(gM!NC@>roz*!4WGR zt0Xjiwo<9QLgU}?j3V~WPNy^7Zntk`^C$tpn*(>VLeG$)yV5Ba&@K1N#v0yAq`LLnfiAGf?6EmILdWxBE-e6lFx(8=@c(-u@O`)2Eq|GUkkmYu;7+5_Sd{^obVeHh zH3Z7$wRV6=ltKxx*c9>{i?TN{`LKQ?3J8NGLBQV^a7CW0NHu8w1n-OpSFX0~jV-~r zh7utB#o2jT2w636)B;f$fba#2@vQ(z3Idv+!+UM&$&*+>7lPkB{Cxy?LzJ>7wSXjq zH?YH5^ndIV&F|x?d#AELRL&Y*f(bj}ksUDQ2Tb{O2qCZL$#y`@6&be^{C{0bcm@IE zFh=&IlPBK+k`OvLHyop!J*Z@@PIc0Dj`=m!-U#&lNxbVH=-!xaT+0E?qI*_cC3Ay2Vnw&j2W>+7y!&VAHfH zYGnmbP_-#0E5N2{QPj!`prC3~OjdwR)1s)A6+l7NrkJb%o2ErkD=UD4s!cJSSHM3R W(^*hIcH4OX0000B-w!QgT)!PjkB8m}k^fb8EQ`*&pk zU>M9R2Ot~{4~Igb@eTkk0qB%7@jAg~Dg$0Jvoyg**VjH3z^P<9w=&Z7iBaq=;JST2g#IuG1K$o8Gzj)H!1tsQ;+oAx_|@Zzl8k%2$;4s5dt8q@qX}Q zRspjNntg!T2$`Lr*$SJpfH@4A(;x&mW0>QxxqlCEyAa{k(nzUPI)`F5%Ay%jdM=K=UHK%`wDze-n delta 738 zcmV<80v-K|2l)k%BYy(GNklDj+BUfXX)@cGo4i4kx^q z4M92pRQ?Al|HexwobVG)*p>-FDu89;7oufDkOlza>!`dt=i|BXhpOTr1%R{RIfbIy z1wg@Rc7*c-*MBuBjgcIHmv{)ihu{q~y@3#orkGa+ffPU(@r$aff@f+uSv)Q~3J6~h~ zV&HPQyo1vT#9xG+i1I!G0plNx$Kx&Aw*N$#D_a(TC==*@F9XoMLe%SH2T&8%eSCI+ z?iHe5A3K1Wu)02Gs|UB!8SqL_t(|UhSJtNK{c2#vMh*Wq+v5{t?uoFcUYmZBseHFk`uh zgo>ox7%f_~$QIeAO+nZ~FiQ+dCYn((YttgCMG!$MM74<2A|%CDf;!Xhg2DLSy>A#_ zPwt($Z!_b&_nh~A-}&zIao(L!Ns%9+BIjRX1+We%as{MIAb%2xREERhu1qF#Q0Nm1 zh2G4~%{31X4^I`EUM>Na$bW!nWj0yF7%wj`uT3Np(<%{SvDjV4P9oS^orD7WA29VL zlgaZ=TrL41(aYo}1%XbIw8+MYyG`6BorpWJAVfzhm1@mC?-C#$kNB`K_7@;D5p|6JP=oTNFelaKJW&0Pi_pr?~*{DBuB42VmvY?;jc(n(?>^iW^`fNTK0-{jPK2FU z!2cZqc7J#ZfCDD!0ahu9Oww4C_Wp?*BW|ze0(?V&ow)>f01>f{T?Yzwli-|e3<27R zyRNwa?cl%WDL{RF{f3H)icuylYm4)@cwthD1AePWBElU+sL@dbiZ|kXEhcbEp95@L zT*ndygvmY$1|+O8X{`f{DOEr~tpfrQ)|j-`0e{AnDj=ZN0RahXOj_#zV@eeeQ0stz zgf%9u(g8F%FK6u*e@i3emNBgI04fy#@-NA8C_4{gyr83U)GId~q2qLfM0Z%bjgsJh z4E{$>{IcER?U1-CBg$6OD{M8rDH}tyvz+hFL;O{r3jP-GcV=H$))xQFgxv~sqb!Ae z3V#8-;#Qrk?1H%9D=t{ZP3C}U)ejy>Fhc^Vy|Mon;&y4lR1M-21>EE50Ej$?$PtBt z&k*34Y>YVN($Pf}3fKnz8=e9*G&IyPQSAM99SaK!)q{hBV=6+3Al6r-jz5_JR}bVb z=DZ1t2@pBVM;}DiECo!lTl@sO#b4=C%{c#s!}Cdy_X9P&?M<_8#EX)GJnW-zL6$WS hQq}=^h*gkN{{rx9Sx~3Qv2XwY002ovPDHLkV1jNswr&6b delta 808 zcmV+@1K0f32fqf8B!31;L_t(|UhP^U#Fa8JxO9%-`j8LRE z4~kTZ7tdDwIJ6=~4?^)^d-0M(K1m>Fg+j6FMMUaF^imNOv0*n~J}U~bnVFO^%kIp+ z3xSZ?cjkSb_n9|44{MD0{4#uwe}o7i1^Ao++5$co05w7G7Jo>m)8`DsIMwZTC!vxp ze4bmDRj<`*rcSD15|B!z<^zGi$(=w!#)n3ual2lx|I~$qJ^}!K3g9pD0D^?IVzKy; zH=fC49${?1M+y2;C=}*;bL%4j0OoN+U-f%~Ow+uEt?-!z67f$x3jTLmAYf(?0lTT- zeN6O1O9IgR7Jt$F#zj@cHn@Xr@J34lAmQ@>W`CGhr_=cniA3gdxtygX0r7ZzZ#W!Y zfC~1p0JhuhrE6Da_$&@H$^Z*?W$5(qfMBLI!$D;mjF-Z%)nf_UK;a;rh^ zstLjcIuHy7@BRJzVGA}7Wl}b64Cn>-w zW>uMY=$>FQnLLWa6!YZ@w@JY<{yTh(PeMz~9{e9qPDHU+RB1y3eT_}wjHG*Mri;AEk62%3H3J4+wh>bvq zKnh&|si_Jr5PKyEAXzn@8zQCeyyT_niOy_nf<& zd*j+%;wA19x4%s*0j(Zzi8J6^2xMerT#=BF(Ea@R^WEr!zj}@a{_X6a|gF=+jcI>Zuc52L>z>O*C1krSF$}LVD#wGy#P25 zV1-_Rvyy|JuP$7;Fp)81Pq?}~Apm!uLeI?60Rwo6=N&w|c+Ld2LB;^S-^u%GO<6O` z%F15VscTgyECMjR3t(3wJj)IQMtx1aH9TLIl$40!wk1D5|2lej7@?FGN;coO@Z3jO z{1Hm7r(*yhuR`D#JU7@VUd=a&*`M5ilQyCU0-u4r$^4sOCWr3_m`+D**s$Sx^?>_VtIg2V->kfBE&@3Nq&2u=Z(g15KsgG zFJ#)2N2L*5we#-CY7GA^NRq{izig@y2lCw97n&g@QdjCy& z|3y^*qwaw6^70>jHvS1C=IvlC!2=$3ML=O;Vdrz_&Yhrf(C!UZr^D)Ozl={wNr_KN zN-Cmb9@47#`n`u9FZ!_0^P_Ze1h;)9R=Y10KDQU%}U6H z5bl4{WNkhcMwja-k3=1IoHsJ%PBroiNg6s9f%i$r1jwEq<3Cq=zXmoXixU&2prD{P zV^JDpqyZ=myv+#V+d?ou<%WPI2%M-8Fc)D{W5Rk95IH$HeesUF3^IoEmX+W>m3{*DTDP4C$N*TRD14eR;61NF z_$kkhfS~}}u6TfDa?wvC!qII>0Ev*xNrcF`eN$l?{FM+0+8czUJQmv8<^xy@>|`7m z+>)n4TLM@OO3G`R;stNx1uw)x@0nqs({7>DWb9hS^C@H24|Z5>31BNZNDe|20%|w| zNcKAuY-JRkR>rs7#_xpfQ3x4nwSdz}iS1X<09g=CBPZ}yta*VPn}Jnbr<|#;ukTe+ zQE|!)uMPpvBQ(fZSp5?(=wp>+@QWA-kOSK^MZfJ9J|qEhD3X|%cnrZ^6v4A_s~LV7 ztLnx03@~mo!P8F;ORaE*BtRM>dlTO(Ip4)VkJ0d_XNRTO( zjL`Ka!pmV?E;U7^nB^=D#V5|5J)635xND68+7{mMeJtJ|xuYFHo;z0;I8=8L&c>dqQSs1a$zJU0YlGPE}P^y&EH~+Tik% zp_0Q|xuMpqpx1G}!W99c*|@c}*&-a;$PB?Z88hT|Mp)P6Sb2^^&IF!j7qbKly8hzZ z81#JRlyKJsh$6PkR}yclP@Wz_@h(8F!H{a5l$u=>O~miUGGhcQxCm`C}$8-FLuLdJM^(lnx&`V$#*YBlROtL6y-BGovimPBgP zPRuPRjduG<(2l3qw`$b2t>PI0jat}34`+aUm;Y}L7o6Ij-j=JdbLjDfUdi^HfPk>b z7HKNixIWE|Z<#)$R(v5KYSw8eY9&B}q!wMJ)dN~| c_i7mTKc5EtUn>qLB>(^b07*qoM6N<$f*Hnq>i_@% literal 0 HcmV?d00001 diff --git a/res/qss/light_style.qss b/res/qss/light_style.qss index b1048b3..d2189c8 100644 --- a/res/qss/light_style.qss +++ b/res/qss/light_style.qss @@ -64,6 +64,7 @@ QTableWidget::item:focus#m_session_systeam_info QLineEdit#m_msg_header{ height:25px; + width:25px; border:none; background-color: #FFFFFF; } @@ -72,36 +73,71 @@ QTextEdit#m_msg_history{ background-color: #FFFFFF; } -QPushButton#m_msg_header_ico{ +QPushButton#m_msg_system_header_ico, +QPushButton#m_msg_user_header_ico{ + height:50px; + width:50px; border:none; background-color: #FFFFFF; image:url(":/res/img/btn/default_header.png"); } + QPushButton#m_msg_user_del, QPushButton#m_msg_system_del{ + height:25px; + width:25px; border:none; background-color: #FFFFFF; image:url(":/res/img/btn/btn_info_delete.png"); } QPushButton#m_msg_copy{ + height:25px; + width:25px; border:none; background-color: #FFFFFF; image:url(":/res/img/btn/btn_info_copy.png"); } QPushButton#m_msg_save{ + height:25px; + width:25px; border:none; background-color: #FFFFFF; image:url(":/res/img/btn/btn_info_save.png"); } QPushButton#m_msg_menu{ + height:25px; + width:25px; border:none; background-color: #FFFFFF; image:url(":/res/img/btn/btn_msg_menu.png"); } -QPushButton#m_msg_fold,QPushButton#m_msg_tokens{ +QPushButton#m_msg_fold{ + height:25px; + width:25px; border:none; background-color: #FFFFFF; } +QPushButton#m_msg_tokens{ + height:25px; + width:25px; + border:none; + background-color: #FFFFFF; + image:url(":res/img/btn/btn_info_tokens.png"); +} +QPushButton#m_history_to_send{ + height:25px; + width:25px; + border:none; + background-color: #FFFFFF; + image:url(":res/img/btn/btn_history_to_send.png"); +} +QPushButton#m_restart_to_send{ + height:25px; + width:25px; + border:none; + background-color: #FFFFFF; + image:url(":res/img/btn/btn_restart_to_send.png"); +} QPushButton#BTN_DOWNLOAD{ width:25px; diff --git a/src/ctai_history_textedit.cpp b/src/ctai_history_textedit.cpp index 6a2abfd..0e991af 100644 --- a/src/ctai_history_textedit.cpp +++ b/src/ctai_history_textedit.cpp @@ -13,23 +13,25 @@ void ctai_history_textedit::init_layout(msg_type msg_type_mode) mainLayout = new QVBoxLayout(); // 1. 消息头垂直 headerLayout = new QVBoxLayout(); - // 消息头水平 header_info_Layout = new QHBoxLayout(); - m_msg_header_ico = new QPushButton(); - m_msg_header_ico->setObjectName("m_msg_header_ico"); m_msg_header = new QLineEdit(); m_msg_header->setObjectName("m_msg_header"); m_msg_header->setReadOnly(true); - header_info_Layout->addWidget(m_msg_header_ico); - header_info_Layout->addWidget(m_msg_header); - header_info_Layout->setContentsMargins(0, 0, 0, 0); - headerLayout->addLayout(header_info_Layout); - if (msg_type_mode == SYSTEM) { + //SYSTEM消息头水平 + m_msg_system_header_ico = new QPushButton(); + m_msg_system_header_ico->setObjectName("m_msg_system_header_ico"); + header_info_Layout->addWidget(m_msg_system_header_ico); + header_info_Layout->addWidget(m_msg_header); + header_info_Layout->setContentsMargins(0, 0, 0, 0); + headerLayout->addLayout(header_info_Layout); // 2.tokens功能按钮 - m_msg_tokens = new QPushButton(QIcon(":res/img/btn/btn_info_tokens.png"), NULL); + m_msg_tokens = new QPushButton(); m_msg_tokens->setObjectName("m_msg_tokens"); + m_history_to_send=new QPushButton(); + m_history_to_send->setObjectName("m_history_to_send"); + header_info_Layout->addWidget(m_history_to_send); header_info_Layout->addWidget(m_msg_tokens); // 3.消息功能区 @@ -39,13 +41,17 @@ void ctai_history_textedit::init_layout(msg_type msg_type_mode) m_msg_save = new QPushButton(); m_msg_menu = new QPushButton(); m_msg_fold = new QPushButton(); + m_restart_to_send= new QPushButton(); m_msg_system_del->setObjectName("m_msg_system_del"); + m_restart_to_send->setObjectName("m_restart_to_send"); m_msg_copy->setObjectName("m_msg_copy"); m_msg_save->setObjectName("m_msg_save"); m_msg_menu->setObjectName("m_msg_menu"); m_msg_fold->setObjectName("m_msg_fold"); m_msg_fold->setIcon(QIcon(":res/img/btn/btn_info_up.png")); - header_opts_Layout->addItem(sparcer_item); + m_msg_fold->setMinimumSize(QSize(25,25)); + header_opts_Layout->addItem(sparcer_item); + header_opts_Layout->addWidget(m_restart_to_send); header_opts_Layout->addWidget(m_msg_system_del); header_opts_Layout->addWidget(m_msg_copy); header_opts_Layout->addWidget(m_msg_save); @@ -57,14 +63,29 @@ void ctai_history_textedit::init_layout(msg_type msg_type_mode) } else { + //SYSTEM MSG ICO + m_msg_user_header_ico = new QPushButton(); + m_msg_user_header_ico->setObjectName("m_msg_system_header_ico"); + header_info_Layout->addWidget(m_msg_user_header_ico); + header_info_Layout->addWidget(m_msg_header); + header_info_Layout->setContentsMargins(0, 0, 0, 0); + headerLayout->addLayout(header_info_Layout); + //USER DELETE BUTTON m_msg_user_del = new QPushButton(); m_msg_user_del->setObjectName("m_msg_user_del"); + m_history_to_send=new QPushButton(); + m_history_to_send->setObjectName("m_history_to_send"); + m_restart_to_send= new QPushButton(); + m_restart_to_send->setObjectName("m_restart_to_send"); + header_info_Layout->addWidget(m_restart_to_send); + header_info_Layout->addWidget(m_history_to_send); header_info_Layout->addWidget(m_msg_user_del); } // 4.分割线区域 hLine = new QFrame; - hLine->setFrameShape(QFrame::HLine); // 关键属性 - hLine->setLineWidth(1); // 线宽 + hLine->setFrameShape(QFrame::HLine); // 关键属性 + hLine->setFrameShadow(QFrame::Sunken); // 凹陷效果 + hLine->setLineWidth(2); // 线宽 // 5. 历史信息QTextEdit historyLayout = new QVBoxLayout(); m_msg_history = new QTextEdit(); @@ -72,7 +93,7 @@ void ctai_history_textedit::init_layout(msg_type msg_type_mode) m_msg_history->setLineWrapMode(QTextEdit::WidgetWidth); m_msg_history->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); // 添加性能优化设置 - m_msg_history->setUndoRedoEnabled(false); // 禁用撤销重做 + m_msg_history->setUndoRedoEnabled(false); // 禁用撤销重做 m_msg_history->setTextInteractionFlags(Qt::TextSelectableByMouse | Qt::TextSelectableByKeyboard); m_msg_history->setObjectName("m_msg_history"); m_msg_history->setReadOnly(true); @@ -90,6 +111,7 @@ void ctai_history_textedit::init_layout(msg_type msg_type_mode) setLayout(mainLayout); connect_signals(msg_type_mode); } + void ctai_history_textedit::connect_signals(msg_type msg_type_mode) { if (msg_type_mode == SYSTEM) diff --git a/src/ctai_history_textedit.h b/src/ctai_history_textedit.h index c9ddaf9..d9a64f9 100644 --- a/src/ctai_history_textedit.h +++ b/src/ctai_history_textedit.h @@ -71,7 +71,8 @@ private: QVBoxLayout *historyLayout={}; QHBoxLayout *header_opts_Layout={}; - QPushButton *m_msg_header_ico={}; + QPushButton *m_msg_system_header_ico={}; + QPushButton *m_msg_user_header_ico={}; QLineEdit *m_msg_header={}; QTextEdit *m_msg_history={}; QPushButton *m_msg_user_del={}; @@ -81,6 +82,8 @@ private: QPushButton *m_msg_menu={}; QPushButton *m_msg_fold={}; // 折叠按钮 QPushButton *m_msg_tokens={}; + QPushButton *m_history_to_send={}; + QPushButton *m_restart_to_send={}; //tokens消耗显示 QMenu *m_msg_tokens_menu={}; QAction *m_menu_prompt_tokens={}; diff --git a/src/ctai_parsestring.cpp b/src/ctai_parsestring.cpp index cf9e32c..f9fb489 100644 --- a/src/ctai_parsestring.cpp +++ b/src/ctai_parsestring.cpp @@ -16,8 +16,7 @@ QString markdown_to_html(const QString& text) { // 转换回QString并处理代码块 QString result = QString::fromUtf8(html); free(html); - - return process_code_blocks(result); + return process_code_blocks(result.toUtf8()); } QString escape_html(const QString& text) {