Make startup delay an option

This commit is contained in:
Ximi1970
2021-09-05 17:04:13 +02:00
parent 692c8f218f
commit 0bc95cc106
13 changed files with 262 additions and 45 deletions

View File

@@ -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
*/

View File

@@ -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.
*/

View File

@@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>544</width>
<height>772</height>
<height>812</height>
</rect>
</property>
<property name="windowTitle">
@@ -654,25 +654,49 @@
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_12">
<item>
<widget class="QLabel" name="label_3">
<property name="text">
<string>Startup delay</string>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="startupDelaySpinBox">
<property name="minimum">
<number>0</number>
</property>
<property name="maximum">
<number>99</number>
</property>
<property name="value">
<number>5</number>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item>
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>13</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item row="1" column="0" colspan="2">
<item row="1" column="1">
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>37</height>
</size>
</property>
</spacer>
</item>
<item row="2" column="0" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout_7">
<item>
<widget class="QCheckBox" name="debugWindowCheckBox">
@@ -717,11 +741,11 @@
</resources>
<connections/>
<buttongroups>
<buttongroup name="minimizeTypeGroup"/>
<buttongroup name="defaultIconTypeGroup"/>
<buttongroup name="closeTypeGroup"/>
<buttongroup name="themeGroup"/>
<buttongroup name="countTypeGroup"/>
<buttongroup name="themeGroup"/>
<buttongroup name="minimizeTypeGroup"/>
<buttongroup name="iconTypeGroup"/>
</buttongroups>
</ui>

View File

@@ -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
*/

View File

@@ -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.
*/

View File

@@ -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 );

View File

@@ -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
*/

View File

@@ -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.
*/

View File

@@ -259,6 +259,14 @@
"description": "Count new mails"
},
"icons_startup_delay": {
"message": "Startup delay",
"description": "Startup delay"
},
"icons_theme": {
"message": "Theme",
"description": "The theme"

View File

@@ -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({

View File

@@ -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");

View File

@@ -307,7 +307,6 @@
<tr>
<td>&emsp;</td>
</tr>
<tr></tr>
<tr>
<td>
<label for="numberColor">__MSG_icons_number_color__</label>
@@ -417,6 +416,24 @@
<label for="numberNew">__MSG_icons_number_count_new__</label>
</td>
</tr>
<tr>
<td>&emsp;</td>
</tr>
<tr>
<td>
<label for="startupDelay">__MSG_icons_startup_delay__</label>
<input
type="number"
id="startupDelay"
name="startupDelay"
value="5"
min="0"
max="99"
step="1"
size="2"
/>
</td>
</tr>
</table>
<table id="themeselect">

View File

@@ -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,
});