From 6d70309136b64e4e0253ec48511906963bb9a96d Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Mon, 7 Aug 2023 11:08:12 +0300 Subject: [PATCH] Use icons from icon theme. --- src/app/tape/tmainwindow.ui | 4 +- src/app/valentina/dialogs/vwidgetdetails.cpp | 38 +++++++++++++----- src/app/valentina/dialogs/vwidgetdetails.ui | 6 +-- src/app/valentina/mainwindow.ui | 4 +- src/libs/vmisc/share/resources/icon.qrc | 7 ---- .../resources/icon/16x16/allow_detail.png | Bin 487 -> 0 bytes .../resources/icon/16x16/allow_detail@2x.png | Bin 1227 -> 0 bytes .../share/resources/icon/16x16/broom.png | Bin 743 -> 0 bytes .../share/resources/icon/16x16/broom@2x.png | Bin 1653 -> 0 bytes .../resources/icon/16x16/forbid_detail.png | Bin 762 -> 0 bytes .../resources/icon/16x16/forbid_detail@2x.png | Bin 2350 -> 0 bytes .../vmisc/share/resources/icon/16x16/info.png | Bin 886 -> 0 bytes .../actions/22x22/edit-clear-all.svg | 14 ++++++- .../actions/22x22/edit-clear-history.svg | 14 ++++++- src/libs/vmisc/theme/vtheme.cpp | 35 ++++++++++++---- src/libs/vmisc/theme/vtheme.h | 2 + 16 files changed, 90 insertions(+), 34 deletions(-) delete mode 100644 src/libs/vmisc/share/resources/icon/16x16/allow_detail.png delete mode 100644 src/libs/vmisc/share/resources/icon/16x16/allow_detail@2x.png delete mode 100644 src/libs/vmisc/share/resources/icon/16x16/broom.png delete mode 100644 src/libs/vmisc/share/resources/icon/16x16/broom@2x.png delete mode 100644 src/libs/vmisc/share/resources/icon/16x16/forbid_detail.png delete mode 100644 src/libs/vmisc/share/resources/icon/16x16/forbid_detail@2x.png delete mode 100644 src/libs/vmisc/share/resources/icon/16x16/info.png diff --git a/src/app/tape/tmainwindow.ui b/src/app/tape/tmainwindow.ui index 34db69408..c1d8773b4 100644 --- a/src/app/tape/tmainwindow.ui +++ b/src/app/tape/tmainwindow.ui @@ -824,8 +824,8 @@ - - :/tapeicon/16x16/info.png:/tapeicon/16x16/info.png + + .. Information diff --git a/src/app/valentina/dialogs/vwidgetdetails.cpp b/src/app/valentina/dialogs/vwidgetdetails.cpp index d3d54b0e0..57a165a8b 100644 --- a/src/app/valentina/dialogs/vwidgetdetails.cpp +++ b/src/app/valentina/dialogs/vwidgetdetails.cpp @@ -28,6 +28,7 @@ #include "vwidgetdetails.h" #include "../ifc/xml/vabstractpattern.h" +#include "../vmisc/theme/vtheme.h" #include "../vmisc/vabstractapplication.h" #include "../vpatterndb/vcontainer.h" #include "../vtools/tools/vtoolseamallowance.h" @@ -61,14 +62,6 @@ enum PieceColumn InLayout = 0, PieceName = 1 }; - -QT_WARNING_PUSH -QT_WARNING_DISABLE_CLANG("-Wunused-member-function") - -Q_GLOBAL_STATIC_WITH_ARGS(const QString, allowDetailIcon, (QLatin1String("://icon/16x16/allow_detail.png"))) // NOLINT -Q_GLOBAL_STATIC_WITH_ARGS(const QString, forbidDetailIcon, (QLatin1String("://icon/16x16/forbid_detail.png"))) // NOLINT - -QT_WARNING_POP } // namespace //--------------------------------------------------------------------------------------------------------------------- @@ -148,6 +141,7 @@ void VWidgetDetails::changeEvent(QEvent *event) { ui->retranslateUi(this); } + // remember to call base class implementation QWidget::changeEvent(event); } @@ -235,7 +229,18 @@ void VWidgetDetails::ToggledPieceItem(QTableWidgetItem *item) if (details->contains(id)) { const bool inLayout = details->value(id).IsInLayout(); - inLayout ? item->setIcon(QIcon(*allowDetailIcon)) : item->setIcon(QIcon(*forbidDetailIcon)); + if (inLayout) + { + item->setIcon( + QIcon::fromTheme(QStringLiteral("gtk-ok"), + VTheme::GetFallbackThemeIcon(QStringLiteral("16/actions/gtk-ok"), QSize(16, 16)))); + } + else + { + item->setIcon( + QIcon::fromTheme(QStringLiteral("gtk-no"), + VTheme::GetFallbackThemeIcon(QStringLiteral("16/actions/gtk-no"), QSize(16, 16)))); + } VToolSeamAllowance *tool = nullptr; try @@ -255,7 +260,20 @@ auto VWidgetDetails::PrepareInLayoutColumnCell(const VPiece &det, quint32 id) -> { auto *item = new QTableWidgetItem(); item->setTextAlignment(Qt::AlignHCenter); - item->setIcon(det.IsInLayout() ? QIcon(*allowDetailIcon) : QIcon(*forbidDetailIcon)); + + if (det.IsInLayout()) + { + item->setIcon( + QIcon::fromTheme(QStringLiteral("gtk-ok"), + VTheme::GetFallbackThemeIcon(QStringLiteral("16/actions/gtk-ok"), QSize(16, 16)))); + } + else + { + item->setIcon( + QIcon::fromTheme(QStringLiteral("gtk-no"), + VTheme::GetFallbackThemeIcon(QStringLiteral("16/actions/gtk-no"), QSize(16, 16)))); + } + item->setData(Qt::UserRole, id); // set the item non-editable (view only), and non-selectable diff --git a/src/app/valentina/dialogs/vwidgetdetails.ui b/src/app/valentina/dialogs/vwidgetdetails.ui index dbee6c673..81cc807ef 100644 --- a/src/app/valentina/dialogs/vwidgetdetails.ui +++ b/src/app/valentina/dialogs/vwidgetdetails.ui @@ -56,12 +56,12 @@ false - - false - 10 + + false + diff --git a/src/app/valentina/mainwindow.ui b/src/app/valentina/mainwindow.ui index 581ebd7d3..8e8629423 100644 --- a/src/app/valentina/mainwindow.ui +++ b/src/app/valentina/mainwindow.ui @@ -421,8 +421,8 @@ - - :/icon/16x16/broom@2x.png:/icon/16x16/broom@2x.png + + .. diff --git a/src/libs/vmisc/share/resources/icon.qrc b/src/libs/vmisc/share/resources/icon.qrc index c7a6d3e20..f1a503361 100644 --- a/src/libs/vmisc/share/resources/icon.qrc +++ b/src/libs/vmisc/share/resources/icon.qrc @@ -24,7 +24,6 @@ icon/32x32/arrowLeftUp.png icon/32x32/putHereLeft.png icon/path_config.png - icon/16x16/info.png icon/16x16/measurement.png icon/16x16/landscape.png icon/16x16/portrait.png @@ -36,10 +35,6 @@ icon/32x32/syncM.png icon/16x16/operations.png icon/16x16/operations@2x.png - icon/16x16/allow_detail.png - icon/16x16/allow_detail@2x.png - icon/16x16/forbid_detail.png - icon/16x16/forbid_detail@2x.png icon/32x32/grainline.png icon/32x32/grainline@2x.png icon/32x32/labels.png @@ -52,8 +47,6 @@ icon/32x32/passmark@2x.png icon/32x32/button.png icon/32x32/button@2x.png - icon/16x16/broom.png - icon/16x16/broom@2x.png icon/16x16/font_preferences@2x.png icon/16x16/font_preferences.png icon/32x32/font_preferences@2x.png diff --git a/src/libs/vmisc/share/resources/icon/16x16/allow_detail.png b/src/libs/vmisc/share/resources/icon/16x16/allow_detail.png deleted file mode 100644 index a472d28c758c85e8503043c4de80bdab499b21dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 487 zcmVA{|ze@J{QlDFToqiKtn`;ik>aGp!OSN2nc{& zG`-=5dMaEAPsuwwB%Am0>-je%GPh?PL{gbV;VS4qo~$3WAZTNB6z dWmy4SiUHpV$u94BEOGz<002ovPDHLkV1lga?34fi diff --git a/src/libs/vmisc/share/resources/icon/16x16/allow_detail@2x.png b/src/libs/vmisc/share/resources/icon/16x16/allow_detail@2x.png deleted file mode 100644 index d4c3f64fb910445af4574556cab84a591886ac3a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1227 zcmV;+1T_1JP)!wu0?6q2X3Q&Inx|DUD&esIZwm)7TAQdSpRmR8OTFAoi4|6Xvwk=R3R?KH z2;b*1xU7j1%Pj(@Za5A~ZgA%0O+1yy;CYQgvCP7E>K*Z*8486w6Mr&CFMQr3@LZE1 zO5VtG>Te%_`ftNPZYF1>4Z?WOz>R`P8Nv;>6F_%|1D}7neJ)o|YCHtzBb>Ry~iB((vJXs_#X$m8 z1AdTIANEk9;T~Mt!qG=<%hX1Use4|1WFFlI?GH{s`{XtAe~0X zThKHb3#vf|DgX*wgXhyPbF@oNeR>UNT=~_WM>XGsxPvg@`sBON_Ta=UZQ`H4Nvq`v zGV3Co#^JZYJh~r8{Rh0XD-a|a&i5%QE@R0CQq?4sb+R!)5C$S#!7dF2po#b4+P$P7 zGOqCcVnTA6D@eaWI!%saU>!>Ul^x-BKU6Tzd+6+ERpj!n*~)%mLkgNu_5?!Jz&5C| z6DS6#2U*a5{{v{5NSu&VlP(ij3vh8cO~XlG8$0NF&!xea;7s%OUr${MH$2fER(2EK zDODtt_ilyC{$MD+N#G%ZCI(p0cJD*5-96;U*TzGxRy<>J9Eaxdqxc>J&b9kMNoNq0 zcJ6>wHD@}xf+W12w4ezFZK9$t1PZRQ;cTlfJ~QAVnz(U4*|j_77N((fBFP26fF@5j zGcj{vkX94=)29^?i7P(M(8QKx+C={@$T0;#wvh>C-Six@pm#bG+Qv`1OewKVZt;Wj zH+Mln^Nxj7Rd~~?9jR!7o2?P)YK=jo-V}{9uMOW)&c+#DXgezDq=zlZH=ZCl5Oq&|a`D5KRH zRUrT{3={Htnfr^}9~+#xRHwXMf7xj=<&)WB#luuiWKiX4h1QvPuH#!8D^+ER$ml46 z!{M;IJ+5<)D)V2Hkp>Ep|9k6=LSsUFTzTe3ZI+NH;OTWDL+l}Qx4Y@510%scHa(=# zY)TCTLnQ!y88n*$AmE3J&r?a7j|9o1UZBPfTW|L*snuyh6VF}3_G~KLCLVK zcv%K*4Th6)ndmCZ26el(r6GojT6WU0iRr1nPY#2js`V`Z2qK%u%3Cb9aqmu^=U)ZG z;Sd1$`~l4QSOCDB&mXi6P2O3Amu(PP?YE9s$!NN4jhKp0*RMk$80M|L{g#5WPl_US zf|U#kFSOQ7I%oIKdHr3!d6u{K3_PFsIDBfU?yuk2)@hr{Q;`B|L4B!+ugmJ-DKHpHrXU3WCMwY1Q1fDz&Obk zil8$J`awqpKR6w0OAE9V$=p(OtfV93OsgXsEJ>2WNRq^v4Z;`G zDyFlIgUv{k@ILlK{X`5VtIc6iO)oK$b&F zhGhqD2MPcNJ=0QJT5RJu4wM4D{R3V$fi0u!?5U%NA~WYNl>2)7r}y^u$?;@b+Pdla zBew&6@P$JSIXU9m;^JaG0Qh`9#q0O)d3RI8Uq^Fp>mDy%yT3pq2(M6zS_U6 z$f&$I2KHQSZHqA?zd8qF;dtG9FD-PB)@C))Po>vH3i7O?C@223@n;`r%lXOr zKNNY?!qEz+(_zpHBq+;Md%AlX`DD^xT3T!yh0382lBx9ZYoP#;eSk3B&MA}2UealV zeJj^D7iUY+@~Ok3PF&Dk-Ju#t# zQUG++apPjgrU#xYvYofYO$KIfr%%bXmBDJWGlUR`MsX}J7KactTxPzkFHA+(+9k9^DfhTgwK{7Lp_}CG3e;azx#V>ZoW+d1Elm$cMq13jhcu zIkcR#(MusKbyVEL2s+(ZZ8RD~S65d*qPS<@?;C?RJ@NQ>V}0YyJZ|VCXPLd>2X#)- zP;Q3WBEb9E05b73v~~m3tb#d3GMR4mkz-u}Wyl+)dZUT3EDN6J!SlS}3wnpXIj(4_w#k*VZkvFeFi=;Z(C!Dt-xtQfJT4(@iV4 z8;zncVMj8F3<9SH5x(ey{ozV*!WC0f3bcQngZ&o@6{tiS^AA1w&dZPO2Ci|n3h7y3 z`M)>{E&6JwgE1O(H^BgMI0mhn2hU$AXVoln>+Mimbm)Kk9F$ZBrrLa%XBWUVC4f51 zAhYcg+Fx_&{M+yRPh+gr2aa`Lbj_`3NhD&k(;3B7Fv+YTN^zmb4Xs)Qy`Z^a zLn^Ztrn-EXXV@@utRKW?Cuo^NbU=eylTJdeHM}cltl-MC&7eY+HHl+D)(1)^)B*wZQ+) zSyE6EkRzIY_XzHvdoOI0Ot%CD0KXhT`;pV9g|oUD%lGZe+!7c7_DaiCG6`>EKpv}~ z;Z!>c^0MY-6a|!0aO~Afl1ioV!AB?E!DyuZxfc)jj<30;0kVBV<6KUy+EricEG)F; zUN>fgas=K$7?T~=s~;&v`>``4Bi_J@XEuKLK{m}>8X)f<>F%FD&%VPmDA&oMXl_Bi zSxZ3h)z<^)=^H}Lv{GE_!;UYzgO`VW%`2rtEjQEr&i~^#H!gl$&9Ti4%UD^KfotA$ z@Z8n?U;4%!?da-hf4b@5LlfzI=Xdprrh~iuk?`zjJaMtWW(xD{Rf*oqo@B?_?oL6` zE&n#1|N8|(0n+-r#V_b|>gN~Csm}8S!>QvP|L*kp{PTbD>hak31|E%V8y3z|soA|$ zfpCW!w6}NBN diff --git a/src/libs/vmisc/share/resources/icon/16x16/forbid_detail.png b/src/libs/vmisc/share/resources/icon/16x16/forbid_detail.png deleted file mode 100644 index 7f24813ad3ee0219a1c75c5c0e2fd744d2c31d09..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 762 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 M07*qoM6N<$g4l8m)c^nh diff --git a/src/libs/vmisc/share/resources/icons/La-Sierra-Light/actions/22x22/edit-clear-all.svg b/src/libs/vmisc/share/resources/icons/La-Sierra-Light/actions/22x22/edit-clear-all.svg index 9daad9868..24f6786d3 100644 --- a/src/libs/vmisc/share/resources/icons/La-Sierra-Light/actions/22x22/edit-clear-all.svg +++ b/src/libs/vmisc/share/resources/icons/La-Sierra-Light/actions/22x22/edit-clear-all.svg @@ -1 +1,13 @@ - \ No newline at end of file + + + + + + diff --git a/src/libs/vmisc/share/resources/icons/La-Sierra-Light/actions/22x22/edit-clear-history.svg b/src/libs/vmisc/share/resources/icons/La-Sierra-Light/actions/22x22/edit-clear-history.svg index 9daad9868..24f6786d3 100644 --- a/src/libs/vmisc/share/resources/icons/La-Sierra-Light/actions/22x22/edit-clear-history.svg +++ b/src/libs/vmisc/share/resources/icons/La-Sierra-Light/actions/22x22/edit-clear-history.svg @@ -1 +1,13 @@ - \ No newline at end of file + + + + + + diff --git a/src/libs/vmisc/theme/vtheme.cpp b/src/libs/vmisc/theme/vtheme.cpp index 07c2150fc..3e81b5944 100644 --- a/src/libs/vmisc/theme/vtheme.cpp +++ b/src/libs/vmisc/theme/vtheme.cpp @@ -68,6 +68,8 @@ using namespace bpstd::literals::chrono_literals; #include "../vabstractapplication.h" #include "vscenestylesheet.h" +#include + namespace { #if QT_VERSION < QT_VERSION_CHECK(5, 9, 0) @@ -336,11 +338,21 @@ auto VTheme::ColorSheme() -> VColorSheme } //--------------------------------------------------------------------------------------------------------------------- -void VTheme::SetIconTheme() +auto VTheme::DefaultThemeName() -> QString { VColorSheme colorScheme = ColorSheme(); QString themePrefix = (colorScheme == VColorSheme::Light ? QStringLiteral("Light") : QStringLiteral("Dark")); +#if defined(Q_OS_MACX) + return QStringLiteral("La-Sierra-%1").arg(themePrefix); +#else + return QStringLiteral("Eleven-%1").arg(themePrefix); +#endif +} + +//--------------------------------------------------------------------------------------------------------------------- +void VTheme::SetIconTheme() +{ static const char *GENERIC_ICON_TO_CHECK = "document-open"; if (not QIcon::hasThemeIcon(GENERIC_ICON_TO_CHECK)) { @@ -348,12 +360,7 @@ void VTheme::SetIconTheme() // use an icon theme that we provide via a .qrc file // This case happens under Windows and Mac OS X // This does not happen under GNOME or KDE - -#if defined(Q_OS_MACX) - QIcon::setThemeName(QStringLiteral("La-Sierra-%1").arg(themePrefix)); -#else - QIcon::setThemeName(QStringLiteral("Eleven-%1").arg(themePrefix)); -#endif + QIcon::setThemeName(DefaultThemeName()); } else { @@ -362,7 +369,7 @@ void VTheme::SetIconTheme() if ((themeMode == VThemeMode::Dark && !ShouldApplyDarkTheme()) || (themeMode == VThemeMode::Light && ShouldApplyDarkTheme())) { - QIcon::setThemeName(QStringLiteral("Eleven-%1").arg(themePrefix)); + QIcon::setThemeName(DefaultThemeName()); } } } @@ -506,6 +513,18 @@ void VTheme::ResetThemeSettings() const emit Instance()->ThemeSettingsChanged(); } +//--------------------------------------------------------------------------------------------------------------------- +auto VTheme::GetFallbackThemeIcon(const QString &iconName, QSize iconSize) -> QIcon +{ + QString filePath = QStringLiteral(":icons/%1/%2.svg").arg(DefaultThemeName(), iconName); + + QIcon icon; + icon.addFile(filePath, iconSize, QIcon::Normal, QIcon::On); + iconSize *= 2; + icon.addFile(filePath, iconSize, QIcon::Normal, QIcon::On); + return icon; +} + //--------------------------------------------------------------------------------------------------------------------- auto VTheme::GetIconResource(const QString &root, const QString &iconName) -> QIcon { diff --git a/src/libs/vmisc/theme/vtheme.h b/src/libs/vmisc/theme/vtheme.h index 5df569ec6..34812247d 100644 --- a/src/libs/vmisc/theme/vtheme.h +++ b/src/libs/vmisc/theme/vtheme.h @@ -56,6 +56,7 @@ public: void SetToAutoTheme() const; void ResetThemeSettings() const; + static auto GetFallbackThemeIcon(const QString &iconName, QSize iconSize) -> QIcon; static auto GetIconResource(const QString &root, const QString &iconName) -> QIcon; static auto GetPixmapResource(const QString &root, const QString &iconName) -> QPixmap; static auto GetResourceName(const QString &root, const QString &iconName) -> QString; @@ -64,6 +65,7 @@ public: static auto IsInDarkTheme() -> bool; static auto ShouldApplyDarkTheme() -> bool; static auto ColorSheme() -> VColorSheme; + static auto DefaultThemeName() -> QString; static void SetIconTheme(); static void InitThemeMode(); static auto ThemeStylesheet() -> QString;