From 084146995b5eec2c32e1ed5a700970788976773a Mon Sep 17 00:00:00 2001 From: luisangelsm Date: Fri, 27 Feb 2026 15:18:51 +0100 Subject: [PATCH] Replace the info shadow pngs with svg versions and make them themable --- YACReaderLibrary/folder_content_view.cpp | 3 -- YACReaderLibrary/grid_comics_view.cpp | 3 -- YACReaderLibrary/info_comics_view.cpp | 6 ++-- YACReaderLibrary/qml.qrc | 10 ++----- YACReaderLibrary/qml/info-indicator-light.png | Bin 361 -> 0 bytes .../qml/info-indicator-light@2x.png | Bin 526 -> 0 bytes YACReaderLibrary/qml/info-indicator.png | Bin 652 -> 0 bytes YACReaderLibrary/qml/info-indicator.svg | 24 ++++++++++++++++ YACReaderLibrary/qml/info-shadow-light.png | Bin 120 -> 0 bytes YACReaderLibrary/qml/info-shadow-light@2x.png | Bin 125 -> 0 bytes YACReaderLibrary/qml/info-shadow.png | Bin 135 -> 0 bytes YACReaderLibrary/qml/info-shadow.svg | 24 ++++++++++++++++ YACReaderLibrary/qml/info-top-shadow.png | Bin 121 -> 0 bytes YACReaderLibrary/qml/info-top-shadow.svg | 19 +++++++++++++ YACReaderLibrary/themes/theme.h | 6 ++-- YACReaderLibrary/themes/theme_factory.cpp | 26 ++++++++---------- 16 files changed, 87 insertions(+), 34 deletions(-) delete mode 100644 YACReaderLibrary/qml/info-indicator-light.png delete mode 100644 YACReaderLibrary/qml/info-indicator-light@2x.png delete mode 100644 YACReaderLibrary/qml/info-indicator.png create mode 100644 YACReaderLibrary/qml/info-indicator.svg delete mode 100644 YACReaderLibrary/qml/info-shadow-light.png delete mode 100644 YACReaderLibrary/qml/info-shadow-light@2x.png delete mode 100644 YACReaderLibrary/qml/info-shadow.png create mode 100644 YACReaderLibrary/qml/info-shadow.svg delete mode 100644 YACReaderLibrary/qml/info-top-shadow.png create mode 100644 YACReaderLibrary/qml/info-top-shadow.svg diff --git a/YACReaderLibrary/folder_content_view.cpp b/YACReaderLibrary/folder_content_view.cpp index 79d87fa3..485032bf 100644 --- a/YACReaderLibrary/folder_content_view.cpp +++ b/YACReaderLibrary/folder_content_view.cpp @@ -283,9 +283,6 @@ void FolderContentView::applyTheme(const Theme &theme) // Info panel colors ctxt->setContextProperty("infoBackgroundColor", qv.infoBackgroundColor); - ctxt->setContextProperty("topShadow", qv.topShadow.isEmpty() ? QUrl() : QUrl(qv.topShadow)); - ctxt->setContextProperty("infoShadow", qv.infoShadow); - ctxt->setContextProperty("infoIndicator", qv.infoIndicator); ctxt->setContextProperty("infoTextColor", qv.infoTextColor); ctxt->setContextProperty("infoTitleColor", qv.infoTitleColor); diff --git a/YACReaderLibrary/grid_comics_view.cpp b/YACReaderLibrary/grid_comics_view.cpp index f30e4f90..262fb1cc 100644 --- a/YACReaderLibrary/grid_comics_view.cpp +++ b/YACReaderLibrary/grid_comics_view.cpp @@ -501,9 +501,6 @@ void GridComicsView::applyTheme(const Theme &theme) // Info panel colors ctxt->setContextProperty("infoBackgroundColor", qv.infoBackgroundColor); - ctxt->setContextProperty("topShadow", qv.topShadow.isEmpty() ? QUrl() : QUrl(qv.topShadow)); - ctxt->setContextProperty("infoShadow", qv.infoShadow); - ctxt->setContextProperty("infoIndicator", qv.infoIndicator); ctxt->setContextProperty("infoTextColor", qv.infoTextColor); ctxt->setContextProperty("infoTitleColor", qv.infoTitleColor); diff --git a/YACReaderLibrary/info_comics_view.cpp b/YACReaderLibrary/info_comics_view.cpp index 87e35a53..ce442f1f 100644 --- a/YACReaderLibrary/info_comics_view.cpp +++ b/YACReaderLibrary/info_comics_view.cpp @@ -228,9 +228,9 @@ void InfoComicsView::applyTheme(const Theme &theme) // Info panel colors ctxt->setContextProperty("infoBackgroundColor", qv.infoBackgroundColor); - ctxt->setContextProperty("topShadow", qv.topShadow.isEmpty() ? QUrl() : QUrl(qv.topShadow)); - ctxt->setContextProperty("infoShadow", qv.infoShadow); - ctxt->setContextProperty("infoIndicator", qv.infoIndicator); + ctxt->setContextProperty("topShadow", QUrl::fromLocalFile(qv.topShadow)); + ctxt->setContextProperty("infoShadow", QUrl::fromLocalFile(qv.infoShadow)); + ctxt->setContextProperty("infoIndicator", QUrl::fromLocalFile(qv.infoIndicator)); ctxt->setContextProperty("infoTextColor", qv.infoTextColor); ctxt->setContextProperty("infoTitleColor", qv.infoTitleColor); diff --git a/YACReaderLibrary/qml.qrc b/YACReaderLibrary/qml.qrc index d216b4f8..2d767d06 100644 --- a/YACReaderLibrary/qml.qrc +++ b/YACReaderLibrary/qml.qrc @@ -11,13 +11,9 @@ qml/reading.svg qml/star.svg qml/page.svg - qml/info-indicator.png - qml/info-shadow.png - qml/info-indicator-light.png - qml/info-shadow-light.png - qml/info-indicator-light@2x.png - qml/info-shadow-light@2x.png - qml/info-top-shadow.png + qml/info-indicator.svg + qml/info-shadow.svg + qml/info-top-shadow.svg qml/ComicInfoView.qml qml/info-favorites.svg qml/info-rating.svg diff --git a/YACReaderLibrary/qml/info-indicator-light.png b/YACReaderLibrary/qml/info-indicator-light.png deleted file mode 100644 index b08a8ead6088a2ecb22b8981ff0fa104a6f884e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 361 zcmV-v0ha!WP)pzj>j+n0002s zkIky88W_W9dp*bXI~(=BoxYWf@M6GdZQBkySmhgG+{j+s%y}ipQ%cFT(*aX2gmD#y z;a2wIhCqHuk|c)j`v)B~=ZP>bf*@$(IA(AJayms(IF@A{9)!_xUAM`y%wb{#a#E&g z8hM_pOHsMYw(V`2rb^a=Ku*r{JUPD0dnHFoOcX_>tO0@iYRRF*JZC0Vn=wqIuIp3R zbxV2HCFZD)bN(CoLVmyG$VG|a3;7fJzQ6ukf6U|9y^y%(CiBST;w?>u# zKtKWrNB{u|ARqw*B!GYf5Rd=@5};omR;$&)GSC8V;kWp5kBP&)oA6kA1=vB-R?84n zHxH>W=c{n!><;n}SO)H`s;XqS+r{Bi2(9Wy;rJXLmUWt@ z`FuXN;0Q>%BZT8IB$F$ZHnEfmb1Y*x#<@U1(kbDXeLQXln-FM?T@co#%sL*c;~XF$ z>7=Gh8>I{al3r=5v{A|+AnB!sN*kpN0+RmuZ)u~HK|s=Le=Tj4G6+Zp;kTuYQU(FZ zpj=woC}j|k4AOoL?}&f|aKr|L!_ssyE?5Y2##^GTm} z?VW8te%?Q5rIZ0{u%rG+lSMBpWi5JbwW(F3Sf-lUv081_?wwrl0k}Y+I1EfK0rUwh z{+t1rP(NYL#(8!bcm-yMS`OykW{*I6;3D-4TfSBSauZ0tG9r8{@FRJ}tf_{>=rR{2 z`%NGZY1=jwPWI&rh%bX_!x)2?%rRw`uz6XoMcS1N^T8`n?iG+eLFq9l9qUXf+FT)R z7$3+HwVGB;hpmv9ZHcljQ|oPka&K2iJsb{GVQn`>QFJ?*OnyN3o;e~|SJrtQL9ApR z3#celoWQ9F=o{3_3ozA=}&8id9Z-=2*e}sCzx}Yrs+t2gXgzC(T-X! zm#R{!T(#Tnb9fBERf5iEtD#Tta4f)DoP%>k&(Dye_t~~ptJS)m&*$N6Hv2^%yGz@) zqU{>b>PJBkoMP=_v5??oh0GO7uhZ$=c%F9*kF{;aF|5H_Nlbvu_Zpt2DvsmN-EQ|A zJl4St%XJ*X8mtuwkhv>K66Lz?8GtvophOtQIEFPM0rEpHIn`?QYopQlk^$LlHqY># zTw(;se|E`%v*ML8rs@0s3FrdfiT*C#@Au^}lUKM}t5T^HuGeckTh`><_`2k8pZqU5 mwX81^ApeU?j_B?BEx-V$gtq!VC4%_?0000 + + + + + + + + + + + + + + \ No newline at end of file diff --git a/YACReaderLibrary/qml/info-shadow-light.png b/YACReaderLibrary/qml/info-shadow-light.png deleted file mode 100644 index e52f2c7adc9c18c721468d254e5dfbf68d116418..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 120 zcmeAS@N?(olHy`uVBq!ia0vp^j6f{N!3HE{4j&T&Qj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS>JiljVU978H@B_$kSm6DSBXZ(kqNll<%g-PK6LsA3Vgs%q- R`hlt#JYD@<);T3K0RW_cAdUb4 diff --git a/YACReaderLibrary/qml/info-shadow-light@2x.png b/YACReaderLibrary/qml/info-shadow-light@2x.png deleted file mode 100644 index 3abb75afe4aa0de03b37b22e5c2bc9ccd3bac58b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 125 zcmeAS@N?(olHy`uVBq!ia0vp^OhBx}!3HEtr8tCulw^r(L`iUdT1k0gQ7VIDN`6wR zf@f}GdTLN=VoGJ<$y6JlB6&|2$B>F!NeK%?6LK;#e()z59CZE1%-D4zAccWNg268U}fi7AzZCsS>JiZnf4978H@B_$*zJV;~`x})I4;L_2+!O6zX-u~a`{k^@( g427P`3`{%>Lfcq=>s0O!25MsPboFyt=akR{0L+Uei2wiq diff --git a/YACReaderLibrary/qml/info-shadow.svg b/YACReaderLibrary/qml/info-shadow.svg new file mode 100644 index 00000000..67957428 --- /dev/null +++ b/YACReaderLibrary/qml/info-shadow.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/YACReaderLibrary/qml/info-top-shadow.png b/YACReaderLibrary/qml/info-top-shadow.png deleted file mode 100644 index 1fd60281510ee5b3e065c60f6f2824a35cd796f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 121 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrF!3HE-TH59VDajJoh?3y^w370~qErUQl>DSr z1<%~X^wgl##FWaylc_d9Mbe%wjv*Ddk`fXUIM|ZdvIQ3MDIIZS;df|YWZ=2Ya5Lb8 RZ#7UEgQu&X%Q~loCIH7%ARGVy diff --git a/YACReaderLibrary/qml/info-top-shadow.svg b/YACReaderLibrary/qml/info-top-shadow.svg new file mode 100644 index 00000000..f8092b2a --- /dev/null +++ b/YACReaderLibrary/qml/info-top-shadow.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/YACReaderLibrary/themes/theme.h b/YACReaderLibrary/themes/theme.h index bf3b7a1d..11dd94ad 100644 --- a/YACReaderLibrary/themes/theme.h +++ b/YACReaderLibrary/themes/theme.h @@ -226,9 +226,9 @@ struct QmlViewTheme { // Info panel colors QColor infoBackgroundColor; - QString topShadow; // Image filename - QString infoShadow; // Image filename - QString infoIndicator; // Image filename + QString topShadow; // Recolored SVG path + QString infoShadow; // Recolored SVG path + QString infoIndicator; // Recolored SVG path QColor infoTextColor; QColor infoTitleColor; diff --git a/YACReaderLibrary/themes/theme_factory.cpp b/YACReaderLibrary/themes/theme_factory.cpp index f6fda6ca..75cb914a 100644 --- a/YACReaderLibrary/themes/theme_factory.cpp +++ b/YACReaderLibrary/themes/theme_factory.cpp @@ -149,9 +149,8 @@ struct QmlViewParams { // Info panel colors QColor infoBackgroundColor; - QString topShadow; // Image filename - QString infoShadow; // Image filename - QString infoIndicator; // Image filename + QColor infoBorderColor; + QColor infoShadowColor; QColor infoTextColor; QColor infoTitleColor; @@ -494,9 +493,9 @@ Theme makeTheme(const ThemeParams ¶ms) theme.qmlView.textColor = qv.textColor; theme.qmlView.showDropShadow = qv.showDropShadow; theme.qmlView.infoBackgroundColor = qv.infoBackgroundColor; - theme.qmlView.topShadow = qv.topShadow; - theme.qmlView.infoShadow = qv.infoShadow; - theme.qmlView.infoIndicator = qv.infoIndicator; + theme.qmlView.topShadow = recoloredSvgToThemeFile(":/qml/info-top-shadow.svg", qv.infoBackgroundColor, qv.infoBorderColor, qv.infoShadowColor, params.themeName); + theme.qmlView.infoShadow = recoloredSvgToThemeFile(":/qml/info-shadow.svg", qv.infoBackgroundColor, qv.infoBorderColor, qv.infoShadowColor, params.themeName); + theme.qmlView.infoIndicator = recoloredSvgToThemeFile(":/qml/info-indicator.svg", qv.infoBackgroundColor, qv.infoBorderColor, qv.infoShadowColor, params.themeName); theme.qmlView.infoTextColor = qv.infoTextColor; theme.qmlView.infoTitleColor = qv.infoTitleColor; theme.qmlView.ratingUnselectedColor = qv.ratingUnselectedColor; @@ -991,9 +990,8 @@ ThemeParams classicThemeParams() qv.textColor = QColor(0xA8A8A8); qv.showDropShadow = true; qv.infoBackgroundColor = QColor(0x2E2E2E); - qv.topShadow = "info-top-shadow.png"; - qv.infoShadow = "info-shadow.png"; - qv.infoIndicator = "info-indicator.png"; + qv.infoBorderColor = QColor(0x404040); + qv.infoShadowColor = Qt::black; qv.infoTextColor = QColor(0xB0B0B0); qv.infoTitleColor = QColor(0xFFFFFF); qv.ratingUnselectedColor = QColor(0x1C1C1C); @@ -1244,9 +1242,8 @@ ThemeParams lightThemeParams() qv.textColor = QColor(0x636363); qv.showDropShadow = true; qv.infoBackgroundColor = QColor(0xFFFFFF); - qv.topShadow = ""; - qv.infoShadow = "info-shadow-light.png"; - qv.infoIndicator = "info-indicator-light.png"; + qv.infoBorderColor = QColor(0x808080); + qv.infoShadowColor = QColor(0x444444); qv.infoTextColor = QColor(0x404040); qv.infoTitleColor = QColor(0x2E2E2E); qv.ratingUnselectedColor = QColor(0xDEDEDE); @@ -1497,9 +1494,8 @@ ThemeParams darkThemeParams() qv.textColor = QColor(0xA8A8A8); qv.showDropShadow = true; qv.infoBackgroundColor = QColor(0x2E2E2E); - qv.topShadow = "info-top-shadow.png"; - qv.infoShadow = "info-shadow.png"; - qv.infoIndicator = "info-indicator.png"; + qv.infoBorderColor = QColor(0x404040); + qv.infoShadowColor = Qt::black; qv.infoTextColor = QColor(0xB0B0B0); qv.infoTitleColor = QColor(0xFFFFFF); qv.ratingUnselectedColor = QColor(0x1C1C1C);