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^fbH-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
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
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) {