diff --git a/app/SysTray-X/SysTray-X.pro b/app/SysTray-X/SysTray-X.pro index f1dcb87..fe7e278 100644 --- a/app/SysTray-X/SysTray-X.pro +++ b/app/SysTray-X/SysTray-X.pro @@ -33,8 +33,8 @@ TEMPLATE = app # Translations # TRANSLATIONS = \ - languages/$${TARGET}_en.ts \ - languages/$${TARGET}_nl.ts + languages/$${TARGET}.en_US.ts \ + languages/$${TARGET}.nl.ts # The following define makes your compiler emit warnings if you use # any feature of Qt which has been marked as deprecated (the exact warnings @@ -218,7 +218,7 @@ HEADERS += \ FORMS += \ debugwidget.ui \ preferences.ui \ - aboutdialog.ui + aboutdialog.ui # Default rules for deployment. qnx: target.path = /tmp/$${TARGET}/bin diff --git a/app/SysTray-X/SysTray-X.qrc b/app/SysTray-X/SysTray-X.qrc index 31354b2..f4df356 100644 --- a/app/SysTray-X/SysTray-X.qrc +++ b/app/SysTray-X/SysTray-X.qrc @@ -12,5 +12,7 @@ files/icons/mail-unread.png files/icons/help-about.png files/icons/dialog-warning.png + languages/SysTray-X.en_US.qm + languages/SysTray-X.nl.qm diff --git a/app/SysTray-X/debugwidget.cpp b/app/SysTray-X/debugwidget.cpp index 6a159e9..f186a76 100644 --- a/app/SysTray-X/debugwidget.cpp +++ b/app/SysTray-X/debugwidget.cpp @@ -36,6 +36,18 @@ DebugWidget::DebugWidget( Preferences* pref, QWidget* parent ) : QWidget( parent } +/* + * Handle the language change event + */ +void DebugWidget::changeEvent( QEvent* event ) +{ + if( event->type() == QEvent::LanguageChange ) + { + m_ui->retranslateUi( this ); + } +} + + /* * Set the number of unread mail */ diff --git a/app/SysTray-X/debugwidget.h b/app/SysTray-X/debugwidget.h index 825cac8..0797c07 100644 --- a/app/SysTray-X/debugwidget.h +++ b/app/SysTray-X/debugwidget.h @@ -38,6 +38,13 @@ class DebugWidget : public QWidget */ explicit DebugWidget( Preferences* pref, QWidget* parent = nullptr ); + /** + * @brief changeEvent. Override the change event. + * + * @param event The event. + */ + void changeEvent( QEvent *event ); + /** * @brief setUnreadMail. Set the number of unread mails. * diff --git a/app/SysTray-X/languages/SysTray-X_en.qm b/app/SysTray-X/languages/SysTray-X.en_US.qm similarity index 62% rename from app/SysTray-X/languages/SysTray-X_en.qm rename to app/SysTray-X/languages/SysTray-X.en_US.qm index d072705..f633bc9 100644 Binary files a/app/SysTray-X/languages/SysTray-X_en.qm and b/app/SysTray-X/languages/SysTray-X.en_US.qm differ diff --git a/app/SysTray-X/languages/SysTray-X_en.ts b/app/SysTray-X/languages/SysTray-X.en_US.ts similarity index 91% rename from app/SysTray-X/languages/SysTray-X_en.ts rename to app/SysTray-X/languages/SysTray-X.en_US.ts index 58d385f..1128f87 100644 --- a/app/SysTray-X/languages/SysTray-X_en.ts +++ b/app/SysTray-X/languages/SysTray-X.en_US.ts @@ -227,14 +227,24 @@ Display debug window - - + + Save + Save + + + + Cancel + Cancel + + + + Open Image Open Image - - + + Image Files (*.png *.jpg *.bmp) Image Files (*.png *.jpg *.bmp) @@ -242,24 +252,29 @@ SysTrayX - + &Show/Hide &Show/Hide - + &Preferences &Preferences - + &About &About - + &Quit &Quit + + + Close + Close + diff --git a/app/SysTray-X/languages/SysTray-X_nl.qm b/app/SysTray-X/languages/SysTray-X.nl.qm similarity index 74% rename from app/SysTray-X/languages/SysTray-X_nl.qm rename to app/SysTray-X/languages/SysTray-X.nl.qm index 39b8ba9..04369b2 100644 Binary files a/app/SysTray-X/languages/SysTray-X_nl.qm and b/app/SysTray-X/languages/SysTray-X.nl.qm differ diff --git a/app/SysTray-X/languages/SysTray-X_nl.ts b/app/SysTray-X/languages/SysTray-X.nl.ts similarity index 91% rename from app/SysTray-X/languages/SysTray-X_nl.ts rename to app/SysTray-X/languages/SysTray-X.nl.ts index e44ea2e..ba6e297 100644 --- a/app/SysTray-X/languages/SysTray-X_nl.ts +++ b/app/SysTray-X/languages/SysTray-X.nl.ts @@ -227,14 +227,24 @@ Toon debug venster - - + + Save + Bewaren + + + + Cancel + Annnuleren + + + + Open Image Open afbeelding - - + + Image Files (*.png *.jpg *.bmp) Afbeeldingsbestanden (*.png *.jpg *.bmp) @@ -242,24 +252,29 @@ SysTrayX - + &Show/Hide &Tonen/Verbergen - + &Preferences &Opties - + &About O&ver - + &Quit &Afsluiten + + + Close + Sluiten + diff --git a/app/SysTray-X/preferencesdialog.cpp b/app/SysTray-X/preferencesdialog.cpp index fd72867..1bd6a58 100644 --- a/app/SysTray-X/preferencesdialog.cpp +++ b/app/SysTray-X/preferencesdialog.cpp @@ -111,8 +111,8 @@ PreferencesDialog::PreferencesDialog( SysTrayXLink *link, Preferences *pref, QWi */ connect( m_ui->chooseCustomDefaultIconButton, &QPushButton::clicked, this, &PreferencesDialog::slotDefaultFileSelect ); connect( m_ui->chooseCustomButton, &QPushButton::clicked, this, &PreferencesDialog::slotFileSelect ); - connect( m_ui->buttonBox, &QDialogButtonBox::accepted, this, &PreferencesDialog::slotAccept ); - connect( m_ui->buttonBox, &QDialogButtonBox::rejected, this, &PreferencesDialog::slotReject ); + connect( m_ui->savePushButton, &QPushButton::clicked, this, &PreferencesDialog::slotAccept ); + connect( m_ui->cancelPushButton, &QPushButton::clicked, this, &PreferencesDialog::slotReject ); connect( m_ui->numberColorPushButton, &QPushButton::clicked, this, &PreferencesDialog::slotColorSelect ); /* @@ -127,6 +127,18 @@ PreferencesDialog::PreferencesDialog( SysTrayXLink *link, Preferences *pref, QWi } +/* + * Handle the language change event + */ +void PreferencesDialog::changeEvent( QEvent* event ) +{ + if( event->type() == QEvent::LanguageChange ) + { + m_ui->retranslateUi( this ); + } +} + + /* * Set the debug state */ @@ -358,6 +370,31 @@ void PreferencesDialog::slotReject() * Close it */ // QDialog::reject(); + + /* + * Restore values + */ + setDefaultIconType( m_pref->getDefaultIconType() ); + setDefaultIcon( m_pref->getDefaultIconMime(), m_pref->getDefaultIconData() ); + setHideDefaultIcon( m_pref->getHideDefaultIcon() ); + + setIconType( m_pref->getIconType() ); + setIcon( m_pref->getIconMime(), m_pref->getIconData() ); + + setMinimizeType( m_pref->getMinimizeType() ); + setStartMinimized( m_pref->getStartMinimized() ); + setMinimizeOnClose( m_pref->getMinimizeOnClose() ); + + setShowNumber( m_pref->getShowNumber() ); + setNumberColor( m_pref->getNumberColor() ); + setNumberSize( m_pref->getNumberSize() ); + setCountType( m_pref->getCountType() ); + + setDebug( m_pref->getDebug() ); + + /* + * Hide it + */ hide(); } diff --git a/app/SysTray-X/preferencesdialog.h b/app/SysTray-X/preferencesdialog.h index 17171c9..44481b2 100644 --- a/app/SysTray-X/preferencesdialog.h +++ b/app/SysTray-X/preferencesdialog.h @@ -39,6 +39,13 @@ class PreferencesDialog : public QDialog */ PreferencesDialog( SysTrayXLink *link, Preferences *pref, QWidget *parent = nullptr ); + /** + * @brief changeEvent. Override the change event. + * + * @param event The event. + */ + void changeEvent( QEvent *event ); + private: /** diff --git a/app/SysTray-X/systrayx.cpp b/app/SysTray-X/systrayx.cpp index 2d41a71..a0437ed 100644 --- a/app/SysTray-X/systrayx.cpp +++ b/app/SysTray-X/systrayx.cpp @@ -18,6 +18,7 @@ #include #include + /* * Constants */ @@ -38,6 +39,7 @@ SysTrayX::SysTrayX( QObject *parent ) : QObject( parent ) m_tray_icon_menu = nullptr; m_unread_mail = 0; + m_locale = QString(); /* * Setup preferences storage @@ -149,6 +151,7 @@ SysTrayX::SysTrayX( QObject *parent ) : QObject( parent ) connect( m_link, &SysTrayXLink::signalTitle, m_win_ctrl, &WindowCtrl::slotWindowTitle ); connect( m_link, &SysTrayXLink::signalVersion, this, &SysTrayX::slotVersion ); connect( m_link, &SysTrayXLink::signalKdeIntegration, this, &SysTrayX::slotSelectIconObject ); + connect( m_link, &SysTrayXLink::signalLocale, this, &SysTrayX::slotLoadLanguage ); /* * SysTrayX @@ -159,6 +162,12 @@ SysTrayX::SysTrayX( QObject *parent ) : QObject( parent ) * Request preferences from add-on */ getPreferences(); + +/* + slotLoadLanguage( "nl" ); + //slotLoadLanguage( "en_US" ); + slotSelectIconObject( false ); +*/ } @@ -587,6 +596,11 @@ void SysTrayX::slotAbout() ui.hash->setText( m_preferences->getHash() ); ui.branch->setText( m_preferences->getBranch() ); + /* + * Set the translation for the button box + */ + ui.buttonBox->button( QDialogButtonBox::Close )->setText( tr( "Close" ) ); + dialog.exec(); } @@ -624,3 +638,27 @@ void SysTrayX::slotSetUnreadMail( int unread ) { m_unread_mail = unread; } + + +/* + * Handle a change in locale + */ +void SysTrayX::slotLoadLanguage( QString locale ) +{ + if( m_locale != locale) + { + m_locale = locale; + + if (!m_translator.isEmpty()) + { + qApp->removeTranslator( &m_translator ); + } + + QString locale_path = "SysTray-X."+ locale; + bool status = m_translator.load( locale_path, ":/languages/" ); + qApp->installTranslator( &m_translator ); + + + emit signalConsole( QString( "Language loaded %1").arg(status)); + } +} diff --git a/app/SysTray-X/systrayx.h b/app/SysTray-X/systrayx.h index 6a3a6b4..209007f 100644 --- a/app/SysTray-X/systrayx.h +++ b/app/SysTray-X/systrayx.h @@ -12,6 +12,7 @@ * Qt includes */ #include +#include #include /* @@ -130,6 +131,13 @@ class SysTrayX : public QObject */ void slotSetUnreadMail( int unread ); + /** + * @brief slotLoadLanguage. Handle locale change signal. + * + * @param locale The requested locale. + */ + void slotLoadLanguage( QString locale ); + private slots: /** @@ -219,6 +227,16 @@ class SysTrayX : public QObject * @brief m_unread_mail. Number of unread mails */ int m_unread_mail; + + /** + * @brief m_translator. The translator object. + */ + QTranslator m_translator; + + /** + * @brief m_locale. Storage for the current locale. + */ + QString m_locale; }; #endif // SYSTRAYX_H diff --git a/app/SysTray-X/systrayxlink.cpp b/app/SysTray-X/systrayxlink.cpp index ac438c2..8615015 100644 --- a/app/SysTray-X/systrayxlink.cpp +++ b/app/SysTray-X/systrayxlink.cpp @@ -374,6 +374,13 @@ void SysTrayXLink::DecodeMessage( const QByteArray& message ) #endif } + if( jsonObject.contains( "locale" ) && jsonObject[ "locale" ].isString() ) + { + QString locale = jsonObject[ "locale" ].toString(); + + emit signalLocale( locale ); + } + if( jsonObject.contains( "platformInfo" ) && jsonObject[ "platformInfo" ].isObject() ) { DecodePlatform( jsonObject[ "platformInfo" ].toObject() ); diff --git a/app/SysTray-X/systrayxlink.h b/app/SysTray-X/systrayxlink.h index 0092c05..5917db3 100644 --- a/app/SysTray-X/systrayxlink.h +++ b/app/SysTray-X/systrayxlink.h @@ -198,6 +198,11 @@ class SysTrayXLink : public QObject */ void signalKdeIntegration( bool state ); + /** + * @brief signalLocale. Signal the locale. + */ + void signalLocale( QString locale ); + /** * @brief signalUnreadMail. Signal numder of unread mails. * diff --git a/webext/background.js b/webext/background.js index f1c42a7..bca6081 100644 --- a/webext/background.js +++ b/webext/background.js @@ -22,6 +22,9 @@ SysTrayX.Messaging = { // Lookout for storage changes browser.storage.onChanged.addListener(SysTrayX.Messaging.storageChanged); + // Send the platform info to app + SysTrayX.Messaging.sendLocale(); + // Send the platform info to app SysTrayX.Messaging.sendPlatformInfo(); @@ -154,6 +157,16 @@ SysTrayX.Messaging = { }); }, + sendLocale: function () { + const locale = browser.i18n.getUILanguage(); + + console.log("Locale: " + locale); + + SysTrayX.Link.postSysTrayXMessage({ + locale: locale, + }); + }, + sendPreferences: function () { const getter = browser.storage.sync.get([ "debug",