From c8984cb3efb7cf249f52565e7dc8e79f070dbd62 Mon Sep 17 00:00:00 2001 From: zhaominyong Date: Mon, 27 Jun 2022 11:19:34 +0800 Subject: [PATCH] =?UTF-8?q?125640=20=E3=80=90=E8=AE=BE=E8=AE=A1=E3=80=91?= =?UTF-8?q?=E3=80=90UKUI=E6=94=BB=E5=85=B3=E3=80=91=E3=80=90=E5=A4=87?= =?UTF-8?q?=E4=BB=BD=E8=BF=98=E5=8E=9F=E3=80=91=E7=B3=BB=E7=BB=9F=E5=A4=87?= =?UTF-8?q?=E4=BB=BD=E3=80=81=E6=95=B0=E6=8D=AE=E5=A4=87=E4=BB=BD=E7=95=8C?= =?UTF-8?q?=E9=9D=A2=E7=9A=84=E7=AE=A1=E7=90=86=E5=A4=87=E4=BB=BD=E6=96=87?= =?UTF-8?q?=E5=AD=97=E4=B8=BB=E9=A2=98=E9=AB=98=E4=BA=AE=E4=B8=8D=E5=8F=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/kybackup/kybackup.png | Bin 2042 -> 2406 bytes kybackup/component/circlelabel.cpp | 8 +++++++- kybackup/component/linelabel.cpp | 7 ++++++- kybackup/component/mylabel.cpp | 15 ++++++++++++++- kybackup/component/mylabel.h | 2 ++ kybackup/component/ringsprogressbar.cpp | 12 ++++++------ kybackup/globalsignals.h | 3 +++ kybackup/gsettingswrapper.cpp | 3 +++ kybackup/gsettingswrapper.h | 1 + kybackup/maindialog.cpp | 4 ++-- kybackup/module/databackup.cpp | 10 +++++++++- kybackup/module/managebackuppointlist.cpp | 4 ++-- kybackup/module/systembackup.cpp | 8 ++++++++ kybackup/qt_zh_CN.ts | 2 +- kybackup/resource/language/qt_zh_CN.qm | Bin 30187 -> 30193 bytes 15 files changed, 64 insertions(+), 15 deletions(-) diff --git a/data/kybackup/kybackup.png b/data/kybackup/kybackup.png index 317c4c418a29524d6fd9f227cf639bbde2719409..94df50ef436bd19b42e0b81043abdc4326d6f8fd 100644 GIT binary patch literal 2406 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.highlight().color())); + } else { + painter.setBrush(QBrush(m_backgroundColor)); + } painter.setPen(Qt::NoPen); QRect rect = this->rect(); // 也可用QPainterPath 绘制代替 painter.drawRoundedRect(rect, 15, 15); { QPainterPath painterPath; painterPath.addRoundedRect(rect, 15, 15); p.drawPath(painterPath); } diff --git a/kybackup/component/linelabel.cpp b/kybackup/component/linelabel.cpp index cd953ea..ea02653 100755 --- a/kybackup/component/linelabel.cpp +++ b/kybackup/component/linelabel.cpp @@ -34,7 +34,12 @@ void LineLabel::paintEvent(QPaintEvent *event) } } QPen pen = painter.pen(); - pen.setColor(m_color); + // 如果设置的是蓝色,则使用调色板里的高亮色 + if (m_color == QColor(COLOR_BLUE)) { + pen.setColor(this->palette().highlight().color()); + } else { + pen.setColor(m_color); + } pen.setWidth(2); painter.setPen(pen); QRect rect = this->rect(); diff --git a/kybackup/component/mylabel.cpp b/kybackup/component/mylabel.cpp index 2f1c95f..b93e101 100755 --- a/kybackup/component/mylabel.cpp +++ b/kybackup/component/mylabel.cpp @@ -3,6 +3,7 @@ #include #include #include +#include "../../common/mydefine.h" #include "../globalbackupinfo.h" #include "../gsettingswrapper.h" @@ -125,9 +126,21 @@ void MyLabel::setFontColor(QColor color) } else { m_bAutoTheme = true; } + m_fontColor = color; QPalette palette = this->palette(); - palette.setColor(QPalette::WindowText, color); + if (m_fontColor == QColor(COLOR_BLUE)) { + palette.setColor(QPalette::WindowText, palette.highlight().color()); + + connect(GlobelBackupInfo::inst().getGlobalSignals(), &GlobalSignals::themeColorChanged, this, [=]() { + // 强调色更换,高亮等颜色已经改变,所以要重新加载图标。 + QPalette pal(this->palette()); + pal.setColor(QPalette::WindowText, this->palette().highlight().color()); + this->setPalette(pal); + }); + } else { + palette.setColor(QPalette::WindowText, color); + } this->setPalette(palette); } diff --git a/kybackup/component/mylabel.h b/kybackup/component/mylabel.h index ff6c66f..e7836d1 100755 --- a/kybackup/component/mylabel.h +++ b/kybackup/component/mylabel.h @@ -3,6 +3,7 @@ #include #include +#include class MyLabel : public QLabel { @@ -32,6 +33,7 @@ private: bool m_isOriginal = false; bool m_needResize = false; QRect m_rect; + QColor m_fontColor; // 背景及字体颜色是否自动跟随主题 bool m_bAutoTheme; diff --git a/kybackup/component/ringsprogressbar.cpp b/kybackup/component/ringsprogressbar.cpp index 78d1148..15be50b 100755 --- a/kybackup/component/ringsprogressbar.cpp +++ b/kybackup/component/ringsprogressbar.cpp @@ -33,7 +33,6 @@ void RingsProgressbar::paintEvent(QPaintEvent *) else p.setBrush(QBrush(QColor(COLOR_LIGHT_BLUE))); p.drawEllipse(outRect); - p.setBrush(QBrush(QColor(COLOR_BLUE))); //画遮罩 p.setPen(Qt::NoPen); @@ -45,7 +44,8 @@ void RingsProgressbar::paintEvent(QPaintEvent *) //画圆弧 pen.setCapStyle(Qt::RoundCap); - pen.setColor(QColor(COLOR_BLUE)); + // pen.setColor(QColor(COLOR_BLUE)); + pen.setColor(this->palette().highlight().color()); qreal penWidth = 5; pen.setWidthF(penWidth); p.setPen(pen); @@ -57,15 +57,15 @@ void RingsProgressbar::paintEvent(QPaintEvent *) p.save(); QPainterPath path; path.moveTo(inRect.center()); - path.arcTo(QRectF(5 + penWidth/2 , 5 + penWidth/2, side - 10 - penWidth, side - 10 - penWidth), 90, -m_rotateAngle); + path.arcTo(QRectF(5 + penWidth/2 , 5 + penWidth/2, side - 10 - penWidth, side - 10 - penWidth), 90, -1 * m_rotateAngle); QPointF currentPosition = path.currentPosition(); - QColor color(QColor(COLOR_BLUE)); + QColor color(this->palette().highlight().color()); color.setAlphaF(0.5); p.setPen(color); p.setBrush(QBrush(QColor(Qt::white))); p.drawEllipse(currentPosition, 6, 6); p.setPen(Qt::NoPen); - p.setBrush(QBrush(QColor(COLOR_BLUE))); + p.setBrush(QBrush(this->palette().highlight().color())); p.drawEllipse(currentPosition, 3.5, 3.5); p.restore(); @@ -74,7 +74,7 @@ void RingsProgressbar::paintEvent(QPaintEvent *) f.setBold(true); f.setPixelSize(25); p.setFont(f); - p.setPen(QColor(COLOR_BLUE)); + p.setPen(this->palette().highlight().color()); p.drawText(inRect, Qt::AlignCenter, valueStr); p.restore(); diff --git a/kybackup/globalsignals.h b/kybackup/globalsignals.h index a23368c..1857131 100755 --- a/kybackup/globalsignals.h +++ b/kybackup/globalsignals.h @@ -25,6 +25,9 @@ signals: // 字体(家族或大小)变化 void fontChanged(int fontSize); + + // 强调色变化 + void themeColorChanged(); }; #endif // GLOBALSIGNALS_H diff --git a/kybackup/gsettingswrapper.cpp b/kybackup/gsettingswrapper.cpp index 2894280..ae55f2e 100755 --- a/kybackup/gsettingswrapper.cpp +++ b/kybackup/gsettingswrapper.cpp @@ -43,6 +43,9 @@ GSettingsWrapper::GSettingsWrapper(token) // 字体大小或字体类型发生变化 int fontSize = m_pGsettingThemeData->get("system-font-size").toInt(); emit GlobelBackupInfo::inst().getGlobalSignals()->fontChanged(fontSize); + } else if (key == COLOR_QT_KEY) { + // 强调色变化 + emit GlobelBackupInfo::inst().getGlobalSignals()->themeIconChanged(); } }); } diff --git a/kybackup/gsettingswrapper.h b/kybackup/gsettingswrapper.h index bb6c493..7adb8b1 100755 --- a/kybackup/gsettingswrapper.h +++ b/kybackup/gsettingswrapper.h @@ -19,6 +19,7 @@ class QWidget; #define STYLE_NAME_VALUE_WHITE "ukui-white" #define ICON_THEME_NAME "iconThemeName" #define TRANSPARENCY_NAME "transparency" +#define COLOR_QT_KEY "theme-color" // 颜色 // 浅灰 diff --git a/kybackup/maindialog.cpp b/kybackup/maindialog.cpp index acd3c6a..c492b3a 100755 --- a/kybackup/maindialog.cpp +++ b/kybackup/maindialog.cpp @@ -34,9 +34,9 @@ MainDialog::MainDialog(QWidget *parent) // 使得窗口无边框 // w.setWindowFlag(Qt::FramelessWindowHint); // 指示窗口管理器模糊给定窗口后面指定区域的背景(毛玻璃化背景) - KWindowEffects::enableBlurBehind(this->winId(), true); + // KWindowEffects::enableBlurBehind(this->winId(), true); // 或使用设置毛玻璃属性的方式实现毛玻璃背景(两者都行,可使用其一) - // this->setProperty("useSystemStyleBlur", true); + this->setProperty("useSystemStyleBlur", true); this->setAutoFillBackground(true); // 添加窗管协议 diff --git a/kybackup/module/databackup.cpp b/kybackup/module/databackup.cpp index 1d6749c..4b837cc 100755 --- a/kybackup/module/databackup.cpp +++ b/kybackup/module/databackup.cpp @@ -202,7 +202,7 @@ void DataBackup::initFirstWidget() backupPointManage->setFlat(true); backupPointManage->setProperty("useButtonPalette", true); QPalette pal(backupPointManage->palette()); - pal.setColor(QPalette::ButtonText, this->palette().link().color()); + pal.setColor(QPalette::ButtonText, this->palette().highlight().color()); pal.setColor(QPalette::Button, this->palette().base().color()); backupPointManage->setPalette(pal); bottomHBoxLayout->addWidget(backupPointManage); @@ -223,6 +223,14 @@ void DataBackup::initFirstWidget() Q_UNUSED(isDark) // 深浅主题切换时,因为调色板已经更换,高亮等颜色已经改变,所以要重新加载图标。 QPalette pal(backupPointManage->palette()); + pal.setColor(QPalette::ButtonText, this->palette().highlight().color()); + pal.setColor(QPalette::Button, this->palette().base().color()); + backupPointManage->setPalette(pal); + }); + connect(GlobelBackupInfo::inst().getGlobalSignals(), &GlobalSignals::themeColorChanged, this, [=]() { + // 强调色更换,高亮等颜色已经改变,所以要重新加载图标。 + QPalette pal(backupPointManage->palette()); + pal.setColor(QPalette::ButtonText, this->palette().highlight().color()); pal.setColor(QPalette::Button, this->palette().base().color()); backupPointManage->setPalette(pal); }); diff --git a/kybackup/module/managebackuppointlist.cpp b/kybackup/module/managebackuppointlist.cpp index d14b841..064e7dc 100755 --- a/kybackup/module/managebackuppointlist.cpp +++ b/kybackup/module/managebackuppointlist.cpp @@ -119,8 +119,8 @@ void ManageBackupPointList::insertLines(const QListpalette()); + pal.setColor(QPalette::ButtonText, this->palette().highlight().color()); + pal.setColor(QPalette::Button, this->palette().base().color()); + backupPointManage->setPalette(pal); + }); + connect(GlobelBackupInfo::inst().getGlobalSignals(), &GlobalSignals::themeColorChanged, this, [=]() { + // 强调色更换,高亮等颜色已经改变,所以要重新加载图标。 + QPalette pal(backupPointManage->palette()); + pal.setColor(QPalette::ButtonText, this->palette().highlight().color()); pal.setColor(QPalette::Button, this->palette().base().color()); backupPointManage->setPalette(pal); }); diff --git a/kybackup/qt_zh_CN.ts b/kybackup/qt_zh_CN.ts index 6886040..21ab53f 100755 --- a/kybackup/qt_zh_CN.ts +++ b/kybackup/qt_zh_CN.ts @@ -37,7 +37,7 @@ File drag and drop area - 拖放文件夹识别路径 + 拖放文件或文件夹识别路径 diff --git a/kybackup/resource/language/qt_zh_CN.qm b/kybackup/resource/language/qt_zh_CN.qm index 009b79921bf20de9c33bc607682ac08c6d764626..d3c1ec6991f9878c2ea31990e20efa214a857a13 100644 GIT binary patch delta 2887 zcmXZed014}6#($_=Dpe9FtUYx6O?^N_N@ZKu&*LJ4BLQ#S|QpBaS-AM`J&MlAy^e5 zO5&DSio{Q(Mp7**8Wo8agM3De8Yu}j#70PB4;=pby?5u$yZ4@Z&V6@!nt3tJ>^0X$ z00?scq6$gXj{wm}0l0DCnh#)G0%;sdI(Cq8L1f-};I82FuKR(z$pHj<0QVmcG!umJ za{zolX&FPhN0F(2AhpG7L3n%&J4_`*20&c#6~16QM7Li82v9 z*F~YHAi1Liz(_&b>68AAWNrgl`6g@_*$w(qqu_R{&U10iDmz z0hrg3MO|>U0Xx)lA-#@}>mA_k)TbD^M);;0|M$jiGFQ&9lTv_n#~9IgDL|+Nqvwhb z$QDS~b!75MMt@>liye(FUH}xmV$4(4091UzxV*{&u;0SCD*gtb5|Ozo#?`qCKwnN~ z3Yi4834lWhQ(uB3k2y-lo@TldS^(AzGTnzR1IV|N78gjj<@OXWyw~Cb>d%;C25A7M zVzR)385Vov+Wm=4^=8I=e*lPBU}pcj55Or^VBS9o5V=v{UHcn=xR-PeA`|Tdd0939 zHme1Bb2wl{m_QxA6TtcfSr#C8(-W6Gaz;?2%@_g*Qwr*L^k4+a1sASi(io4Ec~1p* z^|0f$QG$n&_=5Fgf~SY`0qkB1o;|h%$Z8h6Y>dR2N?BJWMk+FZO=VgEM879Za!Dsk zGJb;0uV&wJ=*P$;vf8B!i)?Ce+eM}TsZM0Kjh@De_>isNm5j+2O!`lfxxH+QIYvZu zgiO$5Tc6-S9evo3(^q0H{hjoTA=AHRj|JKSNIxOXc53OuC6!FdBnzw9D|r_%>z}X_ zd@(>!FUQ?!05BXRb5?Rz;pqUu-CSI@F@V7*afn=dg^aJ`_E%%s3BM!b9&o2zaH)cvxYJG85d@R$ z$E4jqxw8ufm^)%J$ssx9I#ClS@u6}xE6CnTUyTDu)z*Onz$PdvpC~3 zqEUdc&AhKf=Cm4(s8*x{-dRPE#&(N4?5!r^?HO|(W`Kz=H&Y2`!cEUQr}lNqe;?oGwEJU zrXD1VtA*3^bGSs&q^$$#yN%2?CM#GGJM~b78B#Twz z;_+(Cg)L-UnYghJHyVSV$t+)S^I-{=V~MzD0w)lYBJmjh63cb7q|gOBEc;wi)?I*0 zH7}{^&;c;{v!qJ9c#+>DIX69mYdT6=wUb^dGUFOq;wYK+oWjt}N@g4$;+7jOb-Q#1 zH0^Kl4<)mpH>D)#pHjo9a(y>mQvC%Au#EOjO$n-rjjq@ekiU(ws z{^j^u9n$P6>C#6gE&pD4TUN6IlU%=v%seY=e~gid*GgoE{BfgM*)99*XY9}}f~@S6 z4Nv31_!u%3WG^H3;|qQzeX__6YvjT|;)`q^k>%BLv&#vXygBmN8VtFwK&}~d!sNV4 zsx|qry+dl#X61VeH({tgB?GL=Rgbkp-UH#xrvX`+`^DQ z<%=91ks+;P6@F8L5M3D%QunaAV|$>8_I*kQ!O7RCB6zri1B*ovY0fj@r+%O$*yznITqk~Q&Dh84KB z-DGkS|9E~9KSps1$LqUsM=VmfhF`&YZc%K$cpncOK4h%5qNe&H-fI-^CL3WH-cy{u zjZ38QRGh8F2`VNO^AL^)lY=^@$yz)(M7irEZN;pHUY!BcdzgeDlD1Q%e;S!{pR5d2 zT6}@~f^HOP<*0OLe*`cCvfzm_AP|>q#S7AMj9k5z^lT^;huf7b&1E=gH=;sXHxUS-VzIi7U7mCZd5@kHdW+^s6adq*-eP}$yqGvZ#8u`|k( z-I&zg*OmRYc#x4gkcp$p^CKAHz;RO5qck5~z^{Z+j5maZmhmr8d}<%_)`5w--yCm^M6-{AYcFh delta 2881 zcmXZed014}6#($_mKkPw!^kF!?4W||`y!icvJ1$*3BxuJ;j;x2KZHIdUy6QFV?&@A zWJ@$^urYpu#%L2vNzi~+0;1+47Q|KybxA@@z%=cF!(YGm?!0;T-gD2n?|whe%+E7N z%*9{;NiINC4jKCdVC!)JejNDb4s6>>n)s8BZAby@(HJK4wlC zZU-=9$Q{Pau#Ok5T@9J)!c6!+1Bm#EdH%yY0Gkq6^MU&Sk)^Cx?QZ}&eWa5QnPkc4 zXWIbSShM*HIAB!(s|kApzuvOvq#ISgQAVmNW-!Xk|tT>nTWFOixUuKt^|SP{p#hJ(qNY`&!bT{5qa+i#8$ zk#>@a0@v~{9H^r!cQVZubLkA}5l*Jv=1v9L0mx61>qL<*oD;}xDP&S3^5Xzrb^O&z9I#C}S@u0YTx$a$mKO0hY_NmiM*fDwbDZ%< zDco}%>-kkOeW#>oE(st^kQ~su0=WMyIjCg;N*+pD zdvTyrAJWu@bX;vu=vlcJp}<3O%n3)R-!19cx*kWmmdseaFXJRb=WpYT?vj=}NjEK- z+C~;@CG$%QxI|k>J6qDXmdw#7wf~iJSL?96`MM!NP{0iV2EOi>h zWDC6^b*_I3u%TV*mBa(+{)t>)NxEGpQx~PVj1iV+hqU1qJ{OcDJ@g6=#BdAg-AQKc zk@oaqgm``FcZyQ1s<)*J55#u>EZ)EiRI^9=@b%4*hR({>NK6ljmGc?GTU9Jxm$+iSfF!a3MUW~FLNKhiRHReR_Kf!mR*vS_3pr> zT98$>>jId*DXS8fFABP4m*z)sO-D(qBcx{pnLb38*vaNSW-)YgvL_DHxa9`QU5EN{ zV@Z_fkB8!n9?P|}A-E6p%io;CeZ}vY{C#6@fc4+XKRAL*YxIJ&YbQ6%%f*!+{Q9UN zw}7mullOf+jv-$p-95}WGqg`pxYwF@^AQ!@HDGVOpu>okO0alfL{ zzZ_pHBiGH4&VM1dt^Qs(qNrJeNp8?cW}Z{DJ;cZ)h^(U1A2%A?4#kCEutWP`va($< zJdXnt!pW2+#fyle_=2BF@9kukn^LkHUt}{ymTQ&kzD&gAO;^U%V90%bRcfzn!sPrL z8LLs&&v3Xw{ecv>&nb@-?!r)=A_L6Gd>dtVn}E3|D$le!VtMW&tuK?FkI0N_vUE&2 z)-;6!{DjPWs(j#Af*&V)GO<;;aQG5{$8CXmwI86=M9}M601*uQS1us4Qi#&t!jR7h zMGklhDytMUMp*Y|UkSw@ng2%VPbP4-1`pUjy*{w{W>1%O$K%7%bp1$r^=OqY7Nx z4l+4bc(`;QKSoh1$I(N$Bj&1H!meRGH>rL<_$?kdT*){yRZaCE-fL6`l8vzp$5dy> zaEY`|s*ANaLDi&c3BvGT(xz*cEaJf-%29XQYnat=PWMx@JD7yWNW1Sy|3or(f~@pb zTYQ20f?gGlE>gE&Ecp~ytABru+dpk1ITiv!7XT&d(agWq} zy_nQqU#SP|@E{|%C6h+gmq#$df#YOsx7z%hm-rRZzovfD;Eo~5Q7>`0afD1@+$*oQ gJd1Q|8Bpo9+|XTjzEK&=O7u08r6K3XRMy)610ysY^8f$<