diff --git a/app/SysTray-X/SysTray-X-app/preferences.cpp b/app/SysTray-X/SysTray-X-app/preferences.cpp index 489dea3..0ac2a9c 100644 --- a/app/SysTray-X/SysTray-X-app/preferences.cpp +++ b/app/SysTray-X/SysTray-X-app/preferences.cpp @@ -59,6 +59,7 @@ Preferences::Preferences( QObject *parent ) : QObject( parent ) m_number_color = "#000000"; m_number_size = 10; m_count_type = PREF_COUNT_UNREAD; + m_startup_delay = 5; m_number_alignment = 4; m_number_margins = QMargins(); @@ -504,6 +505,32 @@ void Preferences::setCountType( CountType count_type ) } +/* + * Get the startup delay. + */ +int Preferences::getStartupDelay() const +{ + return m_startup_delay; +} + + +/* + * Set the startup delay. + */ +void Preferences::setStartupDelay( int delay ) +{ + if( m_startup_delay != delay ) + { + m_startup_delay = delay; + + /* + * Tell the world the new preference + */ + emit signalStartupDelayChange(); + } +} + + /* * Get the minimize type */ diff --git a/app/SysTray-X/SysTray-X-app/preferences.h b/app/SysTray-X/SysTray-X-app/preferences.h index 4890a94..5d5bc30 100644 --- a/app/SysTray-X/SysTray-X-app/preferences.h +++ b/app/SysTray-X/SysTray-X-app/preferences.h @@ -182,7 +182,7 @@ class Preferences : public QObject /** * @brief setDefaultIconType. Set the default icon type. * - * @param The icon type. + * @param icon_type The icon type. */ void setDefaultIconType( DefaultIconType icon_type ); @@ -196,7 +196,7 @@ class Preferences : public QObject /** * @brief setDefaultIconMime. Set the default icon mime. * - * @param The icon mime. + * @param icon_mime The icon mime. */ void setDefaultIconMime( const QString& icon_mime ); @@ -210,7 +210,7 @@ class Preferences : public QObject /** * @brief setDefaultIconData. Set the default icon data. * - * @param The icon data. + * @param icon_data The icon data. */ void setDefaultIconData( const QByteArray& icon_data ); @@ -224,7 +224,7 @@ class Preferences : public QObject /** * @brief setHideDefaultIcon. Set the hide default icon state. * - * @param The state. + * @param hide The state. */ void setHideDefaultIcon( bool hide ); @@ -238,7 +238,7 @@ class Preferences : public QObject /** * @brief setIconType. Set the icon type. * - * @param The icon type. + * @param icon_type The icon type. */ void setIconType( IconType icon_type ); @@ -252,7 +252,7 @@ class Preferences : public QObject /** * @brief setIconMime. Set the icon mime. * - * @param The icon mime. + * @param icon_mime The icon mime. */ void setIconMime( const QString& icon_mime ); @@ -266,7 +266,7 @@ class Preferences : public QObject /** * @brief setIconData. Set the icon data. * - * @param The icon data. + * @param icon_data The icon data. */ void setIconData( const QByteArray& icon_data ); @@ -280,7 +280,7 @@ class Preferences : public QObject /** * @brief setShowNumber. Set the show number state. * - * @param The state. + * @param state The state. */ void setShowNumber( bool state ); @@ -294,7 +294,7 @@ class Preferences : public QObject /** * @brief setNumberColor. Set the number color. * - * @param The color. + * @param color The color. */ void setNumberColor( QString color ); @@ -308,7 +308,7 @@ class Preferences : public QObject /** * @brief setNumberSize. Set the number size. * - * @param The size. + * @param size The size. */ void setNumberSize( int size ); @@ -322,7 +322,7 @@ class Preferences : public QObject /** * @brief setumberAlignment. Set the number alignment. * - * @param The alignment. + * @param alignment The alignment. */ void setNumberAlignment( int alignment ); @@ -336,7 +336,7 @@ class Preferences : public QObject /** * @brief setNumberMargins. Set the number margins. * - * @param The margins. + * @param margins The margins. */ void setNumberMargins( QMargins margins ); @@ -350,10 +350,24 @@ class Preferences : public QObject /** * @brief setCountType. Set the count type. * - * @param The count type. + * @param count_type The count type. */ void setCountType( CountType count_type ); + /** + * @brief getStartupDelay. Get the startup delay. + * + * @return The delay. + */ + int getStartupDelay() const; + + /** + * @brief setStartupDelay. Set the startup delay. + * + * @param delay The size. + */ + void setStartupDelay( int delay ); + /** * @brief getMinimizeType. Get the minimize type. * @@ -364,7 +378,7 @@ class Preferences : public QObject /** * @brief setMinimizeType. Set the minimize type. * - * @param The minimize type. + * @param icon_type The minimize type. */ void setMinimizeType( MinimizeType icon_type ); @@ -378,7 +392,7 @@ class Preferences : public QObject /** * @brief setStartMinimized. Set the start minimized state. * - * @param The state. + * @param state The state. */ void setStartMinimized( bool state ); @@ -392,7 +406,7 @@ class Preferences : public QObject /** * @brief setRestoreWindowPositions. Set the restore window positions state. * - * @param The state. + * @param state The state. */ void setRestoreWindowPositions( bool state ); @@ -406,7 +420,7 @@ class Preferences : public QObject /** * @brief setCloseType. Set the close type. * - * @param The close type. + * @param close_type The close type. */ void setCloseType( CloseType close_type ); @@ -420,7 +434,7 @@ class Preferences : public QObject /** * @brief setTheme. Set the theme state. * - * @param The state. + * @param theme The state. */ void setTheme( Theme theme ); @@ -434,7 +448,7 @@ class Preferences : public QObject /** * @brief setDebug. Set the debug windows state. * - * @param The state. + * @param state The state. */ void setDebug( bool state ); @@ -535,6 +549,11 @@ class Preferences : public QObject */ void signalCountTypeChange(); + /** + * @brief signalStartupDelayChange. Signal a startup delay change. + */ + void signalStartupDelayChange(); + /** * @brief signalMinimizeTypeChange. Signal a minimize type change. */ @@ -652,6 +671,11 @@ class Preferences : public QObject */ CountType m_count_type; + /** + * @brief m_startup_delay. The startup delay. + */ + int m_startup_delay; + /** * @brief m_minimize_type. Selected minimize type. */ diff --git a/app/SysTray-X/SysTray-X-app/preferences.ui b/app/SysTray-X/SysTray-X-app/preferences.ui index ec99ba9..3554dc9 100644 --- a/app/SysTray-X/SysTray-X-app/preferences.ui +++ b/app/SysTray-X/SysTray-X-app/preferences.ui @@ -7,7 +7,7 @@ 0 0 544 - 772 + 812 @@ -654,25 +654,49 @@ + + + + + + Startup delay + + + + + + + 0 + + + 99 + + + 5 + + + + + - - - - Qt::Vertical - - - - 20 - 13 - - - - - + + + + Qt::Vertical + + + + 20 + 37 + + + + + @@ -717,11 +741,11 @@ - - + + diff --git a/app/SysTray-X/SysTray-X-app/preferencesdialog.cpp b/app/SysTray-X/SysTray-X-app/preferencesdialog.cpp index a89fe7a..75fc2c5 100644 --- a/app/SysTray-X/SysTray-X-app/preferencesdialog.cpp +++ b/app/SysTray-X/SysTray-X-app/preferencesdialog.cpp @@ -113,6 +113,11 @@ PreferencesDialog::PreferencesDialog( SysTrayXLink *link, Preferences *pref, QWi */ setNumberSize( m_pref->getNumberSize() ); + /* + * Set startup delay + */ + setStartupDelay( m_pref->getStartupDelay() ); + /* * Set theme button Ids */ @@ -351,6 +356,15 @@ void PreferencesDialog::setCountType( Preferences::CountType count_type ) } +/* + * Set the startup delay + */ +void PreferencesDialog::setStartupDelay( int delay ) +{ + m_ui->startupDelaySpinBox->setValue( delay ); +} + + /* * Set the theme */ @@ -390,6 +404,7 @@ void PreferencesDialog::slotAccept() m_pref->setShowNumber( m_ui->showNumberCheckBox->isChecked() ); m_pref->setNumberSize( m_ui->numberSizeSpinBox->value() ); m_pref->setCountType( static_cast< Preferences::CountType >( m_ui->countTypeGroup->checkedId() ) ); + m_pref->setStartupDelay( m_ui->startupDelaySpinBox->value() ); m_pref->setNumberAlignment( m_ui->numberAlignmentComboBox->currentIndex() ); m_pref->setNumberMargins( QMargins( m_ui->numberMarginLeftSpinBox->value(), m_ui->numberMarginTopSpinBox->value(), @@ -457,6 +472,7 @@ void PreferencesDialog::slotReject() setNumberColor( m_pref->getNumberColor() ); setNumberSize( m_pref->getNumberSize()); setCountType( m_pref->getCountType() ); + setStartupDelay( m_pref->getStartupDelay()); setNumberAlignment( m_pref->getNumberAlignment() ); setNumberMargins( m_pref->getNumberMargins() ); setTheme( m_pref->getTheme() ); @@ -683,6 +699,15 @@ void PreferencesDialog::slotCountTypeChange() } +/* + * Handle the startup delay change + */ +void PreferencesDialog::slotStartupDelayChange() +{ + setStartupDelay( m_pref->getStartupDelay() ); +} + + /* * Handle the number alignment change */ diff --git a/app/SysTray-X/SysTray-X-app/preferencesdialog.h b/app/SysTray-X/SysTray-X-app/preferencesdialog.h index a9835c6..043da4a 100644 --- a/app/SysTray-X/SysTray-X-app/preferencesdialog.h +++ b/app/SysTray-X/SysTray-X-app/preferencesdialog.h @@ -179,6 +179,13 @@ class PreferencesDialog : public QDialog */ void setCountType( Preferences::CountType count_type ); + /** + * @brief setStartupDelay. Set the startup delay. + * + * @param delay The delay. + */ + void setStartupDelay( int size ); + /** * @brief setTheme. Set the theme. * @@ -287,6 +294,11 @@ class PreferencesDialog : public QDialog */ void slotCountTypeChange(); + /** + * @brief slotStartupDelayChange. Slot for handling startup delay change. + */ + void slotStartupDelayChange(); + /** * @brief slotThemeChange. Slot for handling theme change. */ diff --git a/app/SysTray-X/SysTray-X-app/systrayx.cpp b/app/SysTray-X/SysTray-X-app/systrayx.cpp index 453be5f..6561c50 100644 --- a/app/SysTray-X/SysTray-X-app/systrayx.cpp +++ b/app/SysTray-X/SysTray-X-app/systrayx.cpp @@ -123,6 +123,7 @@ SysTrayX::SysTrayX( QObject *parent ) : QObject( parent ) connect( m_preferences, &Preferences::signalNumberAlignmentChange, m_pref_dialog, &PreferencesDialog::slotNumberAlignmentChange ); connect( m_preferences, &Preferences::signalNumberMarginsChange, m_pref_dialog, &PreferencesDialog::slotNumberMarginsChange ); connect( m_preferences, &Preferences::signalCountTypeChange, m_pref_dialog, &PreferencesDialog::slotCountTypeChange ); + connect( m_preferences, &Preferences::signalStartupDelayChange, m_pref_dialog, &PreferencesDialog::slotStartupDelayChange ); connect( m_preferences, &Preferences::signalMinimizeTypeChange, m_pref_dialog, &PreferencesDialog::slotMinimizeTypeChange ); connect( m_preferences, &Preferences::signalStartMinimizedChange, m_pref_dialog, &PreferencesDialog::slotStartMinimizedChange ); connect( m_preferences, &Preferences::signalRestoreWindowPositionsChange, m_pref_dialog, &PreferencesDialog::slotRestoreWindowPositionsChange ); @@ -142,6 +143,7 @@ SysTrayX::SysTrayX( QObject *parent ) : QObject( parent ) connect( m_preferences, &Preferences::signalNumberMarginsChange, m_link, &SysTrayXLink::slotNumberMarginsChange ); connect( m_preferences, &Preferences::signalCountTypeChange, m_link, &SysTrayXLink::slotCountTypeChange ); connect( m_preferences, &Preferences::signalMinimizeTypeChange, m_link, &SysTrayXLink::slotMinimizeTypeChange ); + connect( m_preferences, &Preferences::signalStartupDelayChange, m_link, &SysTrayXLink::slotStartupDelayChange ); connect( m_preferences, &Preferences::signalStartMinimizedChange, m_link, &SysTrayXLink::slotStartMinimizedChange ); connect( m_preferences, &Preferences::signalRestoreWindowPositionsChange, m_link, &SysTrayXLink::slotRestoreWindowPositionsChange ); connect( m_preferences, &Preferences::signalCloseTypeChange, m_link, &SysTrayXLink::slotCloseTypeChange ); diff --git a/app/SysTray-X/SysTray-X-app/systrayxlink.cpp b/app/SysTray-X/SysTray-X-app/systrayxlink.cpp index 1ecfd9e..1b10a11 100644 --- a/app/SysTray-X/SysTray-X-app/systrayxlink.cpp +++ b/app/SysTray-X/SysTray-X-app/systrayxlink.cpp @@ -632,6 +632,7 @@ void SysTrayXLink::DecodePreferences( const QJsonObject& pref ) */ m_pref->setIconData( QByteArray::fromBase64( icon_base64.toUtf8() ) ); } + if( pref.contains( "showNumber" ) && pref[ "showNumber" ].isString() ) { bool show_number = pref[ "showNumber" ].toString() == "true"; @@ -692,6 +693,16 @@ void SysTrayXLink::DecodePreferences( const QJsonObject& pref ) m_pref->setCountType( count_type ); } + if( pref.contains( "startupDelay" ) && pref[ "startupDelay" ].isString() ) + { + int startup_delay = pref[ "startupDelay" ].toString().toInt(); + + /* + * Store the new startup delay + */ + m_pref->setStartupDelay( startup_delay ); + } + if( pref.contains( "minimizeType" ) && pref[ "minimizeType" ].isString() ) { Preferences::MinimizeType minimize_type = static_cast< Preferences::MinimizeType >( pref[ "minimizeType" ].toString().toInt() ); @@ -818,6 +829,7 @@ void SysTrayXLink::EncodePreferences( const Preferences& pref ) prefObject.insert("numberMargins", marginsObject ); prefObject.insert("countType", QJsonValue::fromVariant( QString::number( pref.getCountType() ) ) ); + prefObject.insert("startupDelay", QJsonValue::fromVariant( QString::number( pref.getStartupDelay() ) ) ); prefObject.insert("theme", QJsonValue::fromVariant( QString::number( pref.getTheme() ) ) ); QJsonObject preferencesObject; @@ -1043,6 +1055,18 @@ void SysTrayXLink::slotCountTypeChange() } +/* + * Handle a startup delay change signal + */ +void SysTrayXLink::slotStartupDelayChange() +{ + if( m_pref->getAppPrefChanged() ) + { + sendPreferences(); + } +} + + /* * Handle a positions change signal */ diff --git a/app/SysTray-X/SysTray-X-app/systrayxlink.h b/app/SysTray-X/SysTray-X-app/systrayxlink.h index 8b07c24..24e381b 100644 --- a/app/SysTray-X/SysTray-X-app/systrayxlink.h +++ b/app/SysTray-X/SysTray-X-app/systrayxlink.h @@ -323,6 +323,11 @@ class SysTrayXLink : public QObject */ void slotCountTypeChange(); + /** + * @brief slotStartupDelayChange. Handle a change in startup delay. + */ + void slotStartupDelayChange(); + /** * @brief slotPositions. Slot for handling a window positions change. */ diff --git a/webext/_locales/en-US/messages.json b/webext/_locales/en-US/messages.json index 0d03ae8..9218059 100644 --- a/webext/_locales/en-US/messages.json +++ b/webext/_locales/en-US/messages.json @@ -259,6 +259,14 @@ "description": "Count new mails" }, + + "icons_startup_delay": { + "message": "Startup delay", + "description": "Startup delay" + }, + + + "icons_theme": { "message": "Theme", "description": "The theme" diff --git a/webext/background.js b/webext/background.js index 6d9845b..b50996e 100644 --- a/webext/background.js +++ b/webext/background.js @@ -18,7 +18,7 @@ SysTrayX.Info = { console.debug("Info Addon version: " + this.version); console.debug("Info Platform: " + JSON.stringify(this.platformInfo)); console.debug("Info Browser: " + JSON.stringify(this.browserInfo)); -// console.debug("Info Storage: " + this.storageType); + // console.debug("Info Storage: " + this.storageType); }, }; @@ -64,6 +64,13 @@ SysTrayX.Messaging = { // Send preferences to app SysTrayX.Messaging.sendPreferences(); + // Let us wait until TB is ready, needed for TB91 and higher? + const startupDelay = await storage() + .get("startupDelay") + .then((result) => result.startupDelay || "5"); + const delay = (ms) => new Promise((res) => setTimeout(res, ms)); + await delay(startupDelay); + // Get all accounts if (SysTrayX.Info.browserInfo.majorVersion < 91) { SysTrayX.Messaging.accounts = await browser.accounts.list(); @@ -74,10 +81,6 @@ SysTrayX.Messaging = { SysTrayX.Info.browserInfo ); } else { - // Let us wait until TB is ready, needed for TB91 and higher? - const delay = (ms) => new Promise((res) => setTimeout(res, ms)); - await delay(5000); - SysTrayX.Messaging.accounts = await browser.accounts.list(false); // Fill the sub folders using the folders API, they are not same... @@ -468,6 +471,7 @@ SysTrayX.Messaging = { "numberAlignment", "numberMargins", "countType", + "startupDelay", "theme", ]) .then( @@ -501,6 +505,7 @@ SysTrayX.Messaging = { bottom: 0, }; const countType = result.countType || "0"; + const startupDelay = result.startupDelay || "5"; const theme = result.theme || "0"; if (theme == "0" && numberColor == "#ffffff") { @@ -531,6 +536,7 @@ SysTrayX.Messaging = { numberAlignment, numberMargins, countType, + startupDelay, theme, }, }); @@ -693,6 +699,13 @@ SysTrayX.Link = { }); } + const startupDelay = response["preferences"].startupDelay; + if (startupDelay) { + await storage().set({ + startupDelay: startupDelay, + }); + } + const minimizeType = response["preferences"].minimizeType; if (minimizeType) { await storage().set({ diff --git a/webext/js/defaults.js b/webext/js/defaults.js index b0c1ae7..de93c31 100644 --- a/webext/js/defaults.js +++ b/webext/js/defaults.js @@ -476,7 +476,6 @@ async function getFilters() { const filters = result.filters || undefined; if (filters !== undefined) { - console.debug("Stored filters length: " + JSON.stringify(filters).length); console.debug("Stored filters: " + JSON.stringify(filters)); } else { console.debug("Stored filters: undefined"); diff --git a/webext/options.html b/webext/options.html index fb66053..ae14ba2 100644 --- a/webext/options.html +++ b/webext/options.html @@ -307,7 +307,6 @@   - @@ -417,6 +416,24 @@ + +   + + + + + + + diff --git a/webext/options.js b/webext/options.js index 406791f..e9b12f9 100644 --- a/webext/options.js +++ b/webext/options.js @@ -300,6 +300,16 @@ SysTrayX.SaveOptions = { countType: countType, }); + // + // Save startup delay + // + const startupDelay = document.querySelector( + 'input[name="startupDelay"]' + ).value; + await storage().set({ + startupDelay: startupDelay, + }); + // Mark add-on preferences changed await storage().set({ addonprefchanged: true, @@ -489,6 +499,16 @@ SysTrayX.RestoreOptions = { SysTrayX.RestoreOptions.onCountTypeError ); + // + // Restore startup delay + // + await storage() + .get("startupDelay") + .then( + SysTrayX.RestoreOptions.setStartupDelay, + SysTrayX.RestoreOptions.ontartupDelayError + ); + // // Restore theme // @@ -869,6 +889,20 @@ SysTrayX.RestoreOptions = { console.log(`countType Error: ${error}`); }, + // + // Restore startup delay + // + setStartupDelay: function (result) { + const startupDelay = result.startupDelay || "5"; + + const input = document.querySelector(`input[name="startupDelay"]`); + input.value = startupDelay; + }, + + onStartupDelayError: function (error) { + console.log(`StartupDelay Error: ${error}`); + }, + // // Restore theme callbacks // @@ -1100,6 +1134,11 @@ SysTrayX.StorageChanged = { countType: changes[item].newValue, }); } + if (item === "startupDelay") { + SysTrayX.RestoreOptions.setStartupDelay({ + startupDelay: changes[item].newValue, + }); + } if (item === "minimizeType") { SysTrayX.RestoreOptions.setMinimizeType({ minimizeType: changes[item].newValue, @@ -1127,8 +1166,6 @@ SysTrayX.StorageChanged = { } if (item === "filters") { - console.debug("Filter changed"); - SysTrayX.RestoreOptions.setFilters({ filters: changes[item].newValue, });