From 3fdbb0ed192c94bdb56313afbe396136f8286603 Mon Sep 17 00:00:00 2001 From: Ximi1970 Date: Sun, 6 Dec 2020 00:36:31 +0100 Subject: [PATCH] Add light and dark themes --- app/SysTray-X/SysTray-X.qrc | 1 + app/SysTray-X/files/icons/blank-icon-dark.png | Bin 0 -> 26171 bytes app/SysTray-X/preferences.cpp | 28 ++++++++ app/SysTray-X/preferences.h | 28 ++++++++ app/SysTray-X/preferences.ui | 67 ++++++++++++------ app/SysTray-X/preferencesdialog.cpp | 44 +++++++++++- app/SysTray-X/preferencesdialog.h | 12 ++++ app/SysTray-X/systrayx.cpp | 6 ++ app/SysTray-X/systrayxicon.cpp | 21 +++++- app/SysTray-X/systrayxicon.h | 5 ++ app/SysTray-X/systrayxlink.cpp | 23 ++++++ app/SysTray-X/systrayxlink.h | 5 ++ app/SysTray-X/systrayxstatusnotifier.cpp | 20 +++++- app/SysTray-X/systrayxstatusnotifier.h | 5 ++ webext/_locales/de/messages.json | 15 ++++ webext/_locales/el/messages.json | 15 ++++ webext/_locales/en-US/messages.json | 15 ++++ webext/_locales/it/messages.json | 15 ++++ webext/_locales/nl/messages.json | 15 ++++ webext/_locales/pt-BR/messages.json | 15 ++++ webext/_locales/ru/messages.json | 15 ++++ webext/background.js | 18 ++++- webext/css/options.css | 8 +++ webext/icons/blank-icon-dark.png | Bin 0 -> 26171 bytes webext/options.html | 22 ++++++ webext/options.js | 53 +++++++++++++- 26 files changed, 446 insertions(+), 25 deletions(-) create mode 100644 app/SysTray-X/files/icons/blank-icon-dark.png create mode 100644 webext/icons/blank-icon-dark.png diff --git a/app/SysTray-X/SysTray-X.qrc b/app/SysTray-X/SysTray-X.qrc index 00f0cd2..b704796 100644 --- a/app/SysTray-X/SysTray-X.qrc +++ b/app/SysTray-X/SysTray-X.qrc @@ -28,5 +28,6 @@ languages/SysTray-X.pt-BR.ts languages/SysTray-X.zh-CN.qm languages/SysTray-X.zh-TW.qm + files/icons/blank-icon-dark.png diff --git a/app/SysTray-X/files/icons/blank-icon-dark.png b/app/SysTray-X/files/icons/blank-icon-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..1ba18db2856e0be0ee4498c3d41f3d1a9709bb4b GIT binary patch literal 26171 zcmV)gK%~EkP) zaB^>EX>4U6ba`-PAZ2)IW&i+q+O1kylH|G#{O2ir1nwY?!!^P;@bR4>skN$m<~iIo z-6e5nCXfK7QT;#v9_nBC@x)g7Kq+#J8b6*r+l-5(*U$Pk+RwkokJ*18FnnRq8 z-}jyXMhhr(R@v^1)AO%gGr9Gfr38Pq3-&76<)8Se-vImxKV5gZyWm&@9ovd8oOZbh z-|?F$-B)DnIkUa52!vg0d*L@mOJnr4yX>O^Tybye*vh;@!vZ+n>=yAM{03ap{4hQV zGgScJu+^e;!3`S=9Eb6ynQVsX^ShdgC3@Q};oI73-7HIvEZYj;jq~y`!;*6BnoD4% zf;op`d#=UId0FPeWC=4jgO=7{Fk$rZQSXBP_462L3^8*6oKCE;E-O}pWe9Wf7p*{u z85`3u@il6F>GzKi>%d@`Fehv<>#~L@!CbcGCeKa>g{EFFlQ-1%0DuT{2Q0=oFrcGx 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 eyrlQfUjHBX;v)-jV0 0 541 - 664 + 648 @@ -19,15 +19,15 @@ - + - + Default icon - + Icon @@ -112,19 +112,6 @@ Mail notification icon - - - - Qt::Vertical - - - - 20 - 40 - - - - @@ -256,6 +243,45 @@ + + + + Theme + + + + + + + + Light + + + true + + + themeGroup + + + + + + + Dark + + + false + + + themeGroup + + + + + + + + @@ -264,7 +290,7 @@ 20 - 113 + 78 @@ -559,10 +585,11 @@ - + - + + diff --git a/app/SysTray-X/preferencesdialog.cpp b/app/SysTray-X/preferencesdialog.cpp index 7bbb467..c33ba8b 100644 --- a/app/SysTray-X/preferencesdialog.cpp +++ b/app/SysTray-X/preferencesdialog.cpp @@ -131,6 +131,12 @@ PreferencesDialog::PreferencesDialog( SysTrayXLink *link, Preferences *pref, QWi * Set number size */ setNumberSize( m_pref->getNumberSize() ); + + /* + * Set theme button Ids + */ + m_ui->themeGroup->setId( m_ui->lightRadioButton, Preferences::PREF_THEME_LIGHT); + m_ui->themeGroup->setId( m_ui->darkRadioButton, Preferences::PREF_THEME_DARK ); } @@ -324,6 +330,15 @@ void PreferencesDialog::setCountType( Preferences::CountType count_type ) } +/* + * Set the theme + */ +void PreferencesDialog::setTheme( Preferences::Theme theme ) +{ + ( m_ui->themeGroup->button( theme ) )->setChecked( true ); +} + + /* * Handle the accept signal */ @@ -351,10 +366,26 @@ void PreferencesDialog::slotAccept() m_pref->setCloseType( static_cast< Preferences::CloseType >( m_ui->closeTypeGroup->checkedId() ) ); m_pref->setShowNumber( m_ui->showNumberCheckBox->isChecked() ); - m_pref->setNumberColor( m_number_color ); m_pref->setNumberSize( m_ui->numberSizeSpinBox->value() ); m_pref->setCountType( static_cast< Preferences::CountType >( m_ui->countTypeGroup->checkedId() ) ); + Preferences::Theme theme = static_cast< Preferences::Theme >( m_ui->themeGroup->checkedId() ); + m_pref->setTheme( theme ); + + /* + * Force different color? + */ + if( theme == Preferences::PREF_THEME_LIGHT && m_number_color == "#ffffff" ) + { + setNumberColor( "#000000" ); + } + else + if( theme == Preferences::PREF_THEME_DARK && m_number_color == "#000000" ) + { + setNumberColor( "#ffffff" ); + } + m_pref->setNumberColor( m_number_color ); + m_pref->setDebug( m_ui->debugWindowCheckBox->isChecked() ); /* @@ -400,6 +431,8 @@ void PreferencesDialog::slotReject() setNumberSize( m_pref->getNumberSize()); setCountType( m_pref->getCountType() ); + setTheme( m_pref->getTheme() ); + setDebug( m_pref->getDebug()); } @@ -595,3 +628,12 @@ void PreferencesDialog::slotCountTypeChange() { setCountType( m_pref->getCountType() ); } + + +/* + * Handle the theme change signal + */ +void PreferencesDialog::slotThemeChange() +{ + setTheme( m_pref->getTheme() ); +} diff --git a/app/SysTray-X/preferencesdialog.h b/app/SysTray-X/preferencesdialog.h index 5212b1b..fede283 100644 --- a/app/SysTray-X/preferencesdialog.h +++ b/app/SysTray-X/preferencesdialog.h @@ -151,6 +151,13 @@ class PreferencesDialog : public QDialog */ void setCountType( Preferences::CountType count_type ); + /** + * @brief setTheme. Set the theme. + * + * @param theme The theme. + */ + void setTheme( Preferences::Theme theme ); + signals: /** @@ -232,6 +239,11 @@ class PreferencesDialog : public QDialog */ void slotCountTypeChange(); + /** + * @brief slotThemeChange. Slot for handling theme change. + */ + void slotThemeChange(); + private slots: /** diff --git a/app/SysTray-X/systrayx.cpp b/app/SysTray-X/systrayx.cpp index f509a89..f5683b1 100644 --- a/app/SysTray-X/systrayx.cpp +++ b/app/SysTray-X/systrayx.cpp @@ -122,6 +122,7 @@ SysTrayX::SysTrayX( QObject *parent ) : QObject( parent ) connect( m_preferences, &Preferences::signalMinimizeTypeChange, m_pref_dialog, &PreferencesDialog::slotMinimizeTypeChange ); connect( m_preferences, &Preferences::signalStartMinimizedChange, m_pref_dialog, &PreferencesDialog::slotStartMinimizedChange ); connect( m_preferences, &Preferences::signalCloseTypeChange, m_pref_dialog, &PreferencesDialog::slotCloseTypeChange ); + connect( m_preferences, &Preferences::signalThemeChange, m_pref_dialog, &PreferencesDialog::slotThemeChange ); connect( m_preferences, &Preferences::signalDebugChange, m_pref_dialog, &PreferencesDialog::slotDebugChange ); connect( m_preferences, &Preferences::signalDefaultIconTypeChange, m_link, &SysTrayXLink::slotDefaultIconTypeChange ); @@ -136,6 +137,7 @@ SysTrayX::SysTrayX( QObject *parent ) : QObject( parent ) connect( m_preferences, &Preferences::signalMinimizeTypeChange, m_link, &SysTrayXLink::slotMinimizeTypeChange ); connect( m_preferences, &Preferences::signalStartMinimizedChange, m_link, &SysTrayXLink::slotStartMinimizedChange ); connect( m_preferences, &Preferences::signalCloseTypeChange, m_link, &SysTrayXLink::slotCloseTypeChange ); + connect( m_preferences, &Preferences::signalThemeChange, m_link, &SysTrayXLink::slotThemeChange ); connect( m_preferences, &Preferences::signalDebugChange, m_link, &SysTrayXLink::slotDebugChange ); connect( m_preferences, &Preferences::signalHideDefaultIconChange, this, &SysTrayX::slotSelectIconObjectPref ); @@ -278,6 +280,7 @@ void SysTrayX::showTrayIcon() connect( m_preferences, &Preferences::signalShowNumberChange, m_tray_icon, &SysTrayXIcon::slotShowNumberChange ); connect( m_preferences, &Preferences::signalNumberColorChange, m_tray_icon, &SysTrayXIcon::slotNumberColorChange ); connect( m_preferences, &Preferences::signalNumberSizeChange, m_tray_icon, &SysTrayXIcon::slotNumberSizeChange ); + connect( m_preferences, &Preferences::signalThemeChange, m_tray_icon, &SysTrayXIcon::slotThemeChange ); connect( m_link, &SysTrayXLink::signalUnreadMail, m_tray_icon, &SysTrayXIcon::slotSetUnreadMail ); @@ -312,6 +315,7 @@ void SysTrayX::hideTrayIcon() disconnect( m_preferences, &Preferences::signalShowNumberChange, m_tray_icon, &SysTrayXIcon::slotShowNumberChange ); disconnect( m_preferences, &Preferences::signalNumberColorChange, m_tray_icon, &SysTrayXIcon::slotNumberColorChange ); disconnect( m_preferences, &Preferences::signalNumberSizeChange, m_tray_icon, &SysTrayXIcon::slotNumberSizeChange ); + disconnect( m_preferences, &Preferences::signalThemeChange, m_tray_icon, &SysTrayXIcon::slotThemeChange ); disconnect( m_link, &SysTrayXLink::signalUnreadMail, m_tray_icon, &SysTrayXIcon::slotSetUnreadMail ); @@ -384,6 +388,7 @@ void SysTrayX::showKdeTrayIcon() connect( m_preferences, &Preferences::signalShowNumberChange, m_kde_tray_icon, &SysTrayXStatusNotifier::slotShowNumberChange ); connect( m_preferences, &Preferences::signalNumberColorChange, m_kde_tray_icon, &SysTrayXStatusNotifier::slotNumberColorChange ); connect( m_preferences, &Preferences::signalNumberSizeChange, m_kde_tray_icon, &SysTrayXStatusNotifier::slotNumberSizeChange ); + connect( m_preferences, &Preferences::signalThemeChange, m_kde_tray_icon, &SysTrayXStatusNotifier::slotThemeChange ); connect( m_link, &SysTrayXLink::signalUnreadMail, m_kde_tray_icon, &SysTrayXStatusNotifier::slotSetUnreadMail ); @@ -417,6 +422,7 @@ void SysTrayX::hideKdeTrayIcon() disconnect( m_preferences, &Preferences::signalShowNumberChange, m_kde_tray_icon, &SysTrayXStatusNotifier::slotShowNumberChange ); disconnect( m_preferences, &Preferences::signalNumberColorChange, m_kde_tray_icon, &SysTrayXStatusNotifier::slotNumberColorChange ); disconnect( m_preferences, &Preferences::signalNumberSizeChange, m_kde_tray_icon, &SysTrayXStatusNotifier::slotNumberSizeChange ); + disconnect( m_preferences, &Preferences::signalThemeChange, m_kde_tray_icon, &SysTrayXStatusNotifier::slotThemeChange ); disconnect( m_link, &SysTrayXLink::signalUnreadMail, m_kde_tray_icon, &SysTrayXStatusNotifier::slotSetUnreadMail ); diff --git a/app/SysTray-X/systrayxicon.cpp b/app/SysTray-X/systrayxicon.cpp index 7629088..6e71a0f 100644 --- a/app/SysTray-X/systrayxicon.cpp +++ b/app/SysTray-X/systrayxicon.cpp @@ -240,7 +240,17 @@ void SysTrayXIcon::renderIcon() { case Preferences::PREF_BLANK_ICON: { - pixmap = QPixmap( ":/files/icons/blank-icon.png" ); + Preferences::Theme theme = m_pref->getTheme(); + + if( theme == Preferences::PREF_THEME_LIGHT ) + { + pixmap = QPixmap( ":/files/icons/blank-icon.png" ); + } + else + { + pixmap = QPixmap( ":/files/icons/blank-icon-dark.png" ); + } + break; } @@ -395,6 +405,15 @@ void SysTrayXIcon::slotNumberSizeChange() } +/* + * Handle the theme change signal + */ +void SysTrayXIcon::slotThemeChange() +{ + renderIcon(); +} + + /* * Handle activation of the tray icon */ diff --git a/app/SysTray-X/systrayxicon.h b/app/SysTray-X/systrayxicon.h index 63ad480..cbb41b5 100644 --- a/app/SysTray-X/systrayxicon.h +++ b/app/SysTray-X/systrayxicon.h @@ -161,6 +161,11 @@ class SysTrayXIcon : public QSystemTrayIcon */ void slotNumberSizeChange(); + /** + * @brief slotThemeChange. Slot for handling theme change signals. + */ + void slotThemeChange(); + private slots: /** diff --git a/app/SysTray-X/systrayxlink.cpp b/app/SysTray-X/systrayxlink.cpp index 966046e..192b121 100644 --- a/app/SysTray-X/systrayxlink.cpp +++ b/app/SysTray-X/systrayxlink.cpp @@ -630,6 +630,16 @@ void SysTrayXLink::DecodePreferences( const QJsonObject& pref ) m_pref->setCloseType( close_type ); } + if( pref.contains( "theme" ) && pref[ "theme" ].isString() ) + { + Preferences::Theme theme = static_cast< Preferences::Theme >( pref[ "theme" ].toString().toInt() ); + + /* + * Store the new theme + */ + m_pref->setTheme( theme ); + } + if( pref.contains( "debug" ) && pref[ "debug" ].isString() ) { bool debug = pref[ "debug" ].toString() == "true"; @@ -666,6 +676,7 @@ void SysTrayXLink::EncodePreferences( const Preferences& pref ) prefObject.insert("numberColor", QJsonValue::fromVariant( QString( pref.getNumberColor() ) ) ); prefObject.insert("numberSize", QJsonValue::fromVariant( QString::number( pref.getNumberSize() ) ) ); prefObject.insert("countType", QJsonValue::fromVariant( QString::number( pref.getCountType() ) ) ); + prefObject.insert("theme", QJsonValue::fromVariant( QString::number( pref.getTheme() ) ) ); QJsonObject preferencesObject; preferencesObject.insert("preferences", prefObject ); @@ -852,3 +863,15 @@ void SysTrayXLink::slotCountTypeChange() sendPreferences(); } } + + +/* + * Handle a theme change signal + */ +void SysTrayXLink::slotThemeChange() +{ + if( m_pref->getAppPrefChanged() ) + { + sendPreferences(); + } +} diff --git a/app/SysTray-X/systrayxlink.h b/app/SysTray-X/systrayxlink.h index 5917db3..81e4b30 100644 --- a/app/SysTray-X/systrayxlink.h +++ b/app/SysTray-X/systrayxlink.h @@ -277,6 +277,11 @@ class SysTrayXLink : public QObject */ void slotCountTypeChange(); + /** + * @brief slotThemeChange. Slot for handling theme change signals. + */ + void slotThemeChange(); + private slots: /** diff --git a/app/SysTray-X/systrayxstatusnotifier.cpp b/app/SysTray-X/systrayxstatusnotifier.cpp index c24eb0a..8447ba1 100644 --- a/app/SysTray-X/systrayxstatusnotifier.cpp +++ b/app/SysTray-X/systrayxstatusnotifier.cpp @@ -275,7 +275,16 @@ void SysTrayXStatusNotifier::renderIcon() { case Preferences::PREF_BLANK_ICON: { - pixmap = QPixmap( ":/files/icons/blank-icon.png" ); + Preferences::Theme theme = m_pref->getTheme(); + + if( theme == Preferences::PREF_THEME_LIGHT ) + { + pixmap = QPixmap( ":/files/icons/blank-icon.png" ); + } + else + { + pixmap = QPixmap( ":/files/icons/blank-icon-dark.png" ); + } break; } @@ -460,6 +469,15 @@ void SysTrayXStatusNotifier::slotNumberSizeChange() } +/* + * Handle the theme change signal + */ +void SysTrayXStatusNotifier::slotThemeChange() +{ + renderIcon(); +} + + /* * Handle activate request of the notification icon */ diff --git a/app/SysTray-X/systrayxstatusnotifier.h b/app/SysTray-X/systrayxstatusnotifier.h index 4f1beb5..1804639 100644 --- a/app/SysTray-X/systrayxstatusnotifier.h +++ b/app/SysTray-X/systrayxstatusnotifier.h @@ -182,6 +182,11 @@ class SysTrayXStatusNotifier : public KStatusNotifierItem */ void slotNumberSizeChange(); + /** + * @brief slotThemeChange. Slot for handling theme change signals. + */ + void slotThemeChange(); + private slots: /** diff --git a/webext/_locales/de/messages.json b/webext/_locales/de/messages.json index b226d9d..eb8f911 100644 --- a/webext/_locales/de/messages.json +++ b/webext/_locales/de/messages.json @@ -199,6 +199,21 @@ "description": "Count new mails" }, + "icons_theme": { + "message": "Thema", + "description": "The theme" + }, + + "icons_theme_light": { + "message": "Licht", + "description": "The light theme" + }, + + "icons_theme_dark": { + "message": "Dunkel", + "description": "The dark theme" + }, + "accounts": { "message": "Konten", "description": "Title for Accounts options" diff --git a/webext/_locales/el/messages.json b/webext/_locales/el/messages.json index b462be5..8f317d7 100644 --- a/webext/_locales/el/messages.json +++ b/webext/_locales/el/messages.json @@ -199,6 +199,21 @@ "description": "Count new mails" }, + "icons_theme": { + "message": "θέμα", + "description": "The theme" + }, + + "icons_theme_light": { + "message": "φως", + "description": "The light theme" + }, + + "icons_theme_dark": { + "message": "σκοτάδι", + "description": "The dark theme" + }, + "accounts": { "message": "Λογαριασμοί", "description": "Title for Accounts options" diff --git a/webext/_locales/en-US/messages.json b/webext/_locales/en-US/messages.json index e43ac7d..46c256d 100644 --- a/webext/_locales/en-US/messages.json +++ b/webext/_locales/en-US/messages.json @@ -199,6 +199,21 @@ "description": "Count new mails" }, + "icons_theme": { + "message": "Theme", + "description": "The theme" + }, + + "icons_theme_light": { + "message": "Light", + "description": "The light theme" + }, + + "icons_theme_dark": { + "message": "Dark", + "description": "The dark theme" + }, + "accounts": { "message": "Accounts", "description": "Title for Accounts options" diff --git a/webext/_locales/it/messages.json b/webext/_locales/it/messages.json index 625fb76..095eb4c 100644 --- a/webext/_locales/it/messages.json +++ b/webext/_locales/it/messages.json @@ -199,6 +199,21 @@ "description": "Count new mails" }, + "icons_theme": { + "message": "Tema", + "description": "The theme" + }, + + "icons_theme_light": { + "message": "Leggero", + "description": "The light theme" + }, + + "icons_theme_dark": { + "message": "Scuro", + "description": "The dark theme" + }, + "accounts": { "message": "Account", "description": "Title for Accounts options" diff --git a/webext/_locales/nl/messages.json b/webext/_locales/nl/messages.json index 81a54b7..8a824d9 100644 --- a/webext/_locales/nl/messages.json +++ b/webext/_locales/nl/messages.json @@ -198,6 +198,21 @@ "message": "Nieuw", "description": "Count new mails" }, + + "icons_theme": { + "message": "Thema", + "description": "The theme" + }, + + "icons_theme_light": { + "message": "Licht", + "description": "The light theme" + }, + + "icons_theme_dark": { + "message": "Donker", + "description": "The dark theme" + }, "accounts": { "message": "Accounts", diff --git a/webext/_locales/pt-BR/messages.json b/webext/_locales/pt-BR/messages.json index 2a77190..6eeb27e 100644 --- a/webext/_locales/pt-BR/messages.json +++ b/webext/_locales/pt-BR/messages.json @@ -199,6 +199,21 @@ "description": "Count new mails" }, + "icons_theme": { + "message": "Tema", + "description": "The theme" + }, + + "icons_theme_light": { + "message": "Claro", + "description": "The light theme" + }, + + "icons_theme_dark": { + "message": "Escuro", + "description": "The dark theme" + }, + "accounts": { "message": "Contas", "description": "Title for Accounts options" diff --git a/webext/_locales/ru/messages.json b/webext/_locales/ru/messages.json index 0922822..0c60bc7 100644 --- a/webext/_locales/ru/messages.json +++ b/webext/_locales/ru/messages.json @@ -199,6 +199,21 @@ "description": "Count new mails" }, + "icons_theme": { + "message": "Tема", + "description": "The theme" + }, + + "icons_theme_light": { + "message": "светлая", + "description": "The light theme" + }, + + "icons_theme_dark": { + "message": "темная", + "description": "The dark theme" + }, + "accounts": { "message": "Аккаунты", "description": "Title for Accounts options" diff --git a/webext/background.js b/webext/background.js index 9dca769..51cedb8 100644 --- a/webext/background.js +++ b/webext/background.js @@ -293,6 +293,7 @@ SysTrayX.Messaging = { "numberColor", "numberSize", "countType", + "theme", ]); getter.then(this.sendPreferencesStorage, this.onSendPreferecesStorageError); }, @@ -310,9 +311,16 @@ SysTrayX.Messaging = { const iconMime = result.iconMime || "image/png"; const icon = result.icon || []; const showNumber = result.showNumber || "true"; - const numberColor = result.numberColor || "#000000"; + let numberColor = result.numberColor || "#000000"; const numberSize = result.numberSize || "10"; const countType = result.countType || "0"; + const theme = result.theme || "0"; + + if (theme == "0" && numberColor == "#ffffff") { + numberColor = "#000000"; + } else if (theme == "1" && numberColor == "#000000") { + numberColor = "#ffffff"; + } // Send it to the app SysTrayX.Link.postSysTrayXMessage({ @@ -332,6 +340,7 @@ SysTrayX.Messaging = { numberColor: numberColor, numberSize: numberSize, countType: countType, + theme: theme, }, }); @@ -493,6 +502,13 @@ SysTrayX.Link = { }); } + const theme = response["preferences"].theme; + if (theme) { + browser.storage.sync.set({ + theme: theme, + }); + } + const debug = response["preferences"].debug; if (debug) { browser.storage.sync.set({ diff --git a/webext/css/options.css b/webext/css/options.css index 207f524..f95409f 100644 --- a/webext/css/options.css +++ b/webext/css/options.css @@ -114,6 +114,14 @@ body { padding: 10px 10px 10px 10px; } +#themeselect { + width: 25em; + border-style: solid; + border-width: 1px; + margin: 10px 10px 10px 10px; + padding: 10px 10px 10px 10px; +} + ul, #accountsTree { list-style-type: none; diff --git a/webext/icons/blank-icon-dark.png b/webext/icons/blank-icon-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..1ba18db2856e0be0ee4498c3d41f3d1a9709bb4b GIT binary patch literal 26171 zcmV)gK%~EkP) zaB^>EX>4U6ba`-PAZ2)IW&i+q+O1kylH|G#{O2ir1nwY?!!^P;@bR4>skN$m<~iIo z-6e5nCXfK7QT;#v9_nBC@x)g7Kq+#J8b6*r+l-5(*U$Pk+RwkokJ*18FnnRq8 z-}jyXMhhr(R@v^1)AO%gGr9Gfr38Pq3-&76<)8Se-vImxKV5gZyWm&@9ovd8oOZbh z-|?F$-B)DnIkUa52!vg0d*L@mOJnr4yX>O^Tybye*vh;@!vZ+n>=yAM{03ap{4hQV zGgScJu+^e;!3`S=9Eb6ynQVsX^ShdgC3@Q};oI73-7HIvEZYj;jq~y`!;*6BnoD4% zf;op`d#=UId0FPeWC=4jgO=7{Fk$rZQSXBP_462L3^8*6oKCE;E-O}pWe9Wf7p*{u z85`3u@il6F>GzKi>%d@`Fehv<>#~L@!CbcGCeKa>g{EFFlQ-1%0DuT{2Q0=oFrcGx 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 eyrlQfUjHBX;v)-jV + + + + + + + + + +
+ __MSG_icons_theme__ +
+ + +
+ + +