Add count type preference

This commit is contained in:
Ximi1970
2020-05-09 13:30:55 +02:00
parent f645f00789
commit 5f18bf3d39
8 changed files with 420 additions and 242 deletions

View File

@@ -40,6 +40,7 @@ Preferences::Preferences( QObject *parent ) : QObject( parent )
m_show_number = true;
m_number_color = "#000000";
m_count_type = PREF_COUNT_UNREAD;
m_minimize_type = PREF_DEFAULT_MINIMIZE;
m_start_minimized = false;
@@ -266,6 +267,31 @@ void Preferences::setNumberColor( QString color )
}
/*
* Get the count type.
*/
Preferences::CountType Preferences::getCountType() const
{
return m_count_type;
}
/*
* Set the count type.
*/
void Preferences::setCountType( CountType count_type )
{
if( m_count_type != count_type)
{
m_count_type = count_type;
/*
* Tell the world the new preference
*/
emit signalCountTypeChange();
}
}
/*
* Get the icon type.
*/

View File

@@ -39,6 +39,14 @@ class Preferences : public QObject
PREF_CUSTOM_ICON
};
/*
* Count types
*/
enum CountType {
PREF_COUNT_UNREAD = 0,
PREF_COUNT_NEW
};
/*
* Window states
*/
@@ -197,6 +205,20 @@ class Preferences : public QObject
*/
void setNumberColor( QString color );
/**
* @brief getCountType. Get the count type.
*
* @return The count type.
*/
CountType getCountType() const;
/**
* @brief setCountType. Set the count type.
*
* @param The count type.
*/
void setCountType( CountType count_type );
/**
* @brief getMinimizeType. Get the minimize type.
*
@@ -324,6 +346,11 @@ class Preferences : public QObject
*/
void signalNumberColorChange();
/**
* @brief signalCountTypeChange. Signal a count type change.
*/
void signalCountTypeChange();
/**
* @brief signalMinimizeTypeChange. Signal a minimize type change.
*/
@@ -396,6 +423,11 @@ class Preferences : public QObject
*/
QString m_number_color;
/**
* @brief m_count_type. Selected count type.
*/
CountType m_count_type;
/**
* @brief m_minimize_type. Selected minimize type.
*/

View File

@@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>583</width>
<height>261</height>
<width>676</width>
<height>313</height>
</rect>
</property>
<property name="windowTitle">
@@ -17,16 +17,257 @@
<iconset resource="SysTray-X.qrc">
<normaloff>:/files/icons/SysTray-X.png</normaloff>:/files/icons/SysTray-X.png</iconset>
</property>
<layout class="QGridLayout" name="gridLayout_4">
<item row="0" column="0">
<layout class="QGridLayout" name="gridLayout_3">
<item row="1" column="1" rowspan="2" colspan="2">
<widget class="QGroupBox" name="groupBox_3">
<property name="title">
<string>Number properties</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0" rowspan="2" colspan="2">
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>Windows</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_5">
<item>
<layout class="QVBoxLayout" name="verticalLayout_4">
<item>
<widget class="QGroupBox" name="groupBox_4">
<property name="title">
<string>Minimize</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QRadioButton" name="defaultMinimizeRadioButton">
<property name="text">
<string>Default minimize</string>
</property>
<property name="checked">
<bool>false</bool>
</property>
<attribute name="buttonGroup">
<string notr="true">minimizeTypeGroup</string>
</attribute>
</widget>
</item>
<item>
<widget class="QRadioButton" name="minimizeMethod1RadioButton">
<property name="text">
<string>Minimize to tray, method 1</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
<attribute name="buttonGroup">
<string notr="true">minimizeTypeGroup</string>
</attribute>
</widget>
</item>
<item>
<widget class="QRadioButton" name="minimizeMethod2RadioButton">
<property name="text">
<string>Minimize to tray, method 2</string>
</property>
<attribute name="buttonGroup">
<string notr="true">minimizeTypeGroup</string>
</attribute>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QCheckBox" name="startMinimizedCheckBox">
<property name="text">
<string>Start application minimized</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
<item row="0" column="2">
<widget class="QGroupBox" name="iconTypeGroupBox">
<property name="title">
<string>Mail notification icon</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<property name="sizeConstraint">
<enum>QLayout::SetFixedSize</enum>
</property>
<item>
<widget class="QRadioButton" name="blankRadioButton">
<property name="text">
<string>Blank icon</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
<attribute name="buttonGroup">
<string notr="true">iconTypeGroup</string>
</attribute>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<property name="sizeConstraint">
<enum>QLayout::SetFixedSize</enum>
</property>
<item>
<widget class="QRadioButton" name="newMailButton">
<property name="text">
<string>New mail icon</string>
</property>
<attribute name="buttonGroup">
<string notr="true">iconTypeGroup</string>
</attribute>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="sizeConstraint">
<enum>QLayout::SetMaximumSize</enum>
</property>
<item>
<widget class="QRadioButton" name="customRadioButton">
<property name="text">
<string>Custom icon</string>
</property>
<attribute name="buttonGroup">
<string notr="true">iconTypeGroup</string>
</attribute>
</widget>
</item>
<item>
<widget class="QLabel" name="imageLabel">
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="chooseCustomButton">
<property name="text">
<string>Choose</string>
</property>
<property name="flat">
<bool>false</bool>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item row="0" column="3">
<widget class="QGroupBox" name="groupBox_2">
<property name="title">
<string>Mail actions</string>
</property>
<layout class="QFormLayout" name="formLayout">
<item row="0" column="0">
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="0" colspan="2">
<widget class="QLabel" name="pollStartupDelayLabel">
<property name="text">
<string>Poll startup delay</string>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QSpinBox" name="pollStartupDelaySpinBox">
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>999</number>
</property>
<property name="value">
<number>60</number>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="pollIntervalLabel">
<property name="text">
<string>Poll interval</string>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QSpinBox" name="pollIntervalSpinBox">
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>999</number>
</property>
<property name="value">
<number>60</number>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item row="1" column="2" colspan="2">
<widget class="QGroupBox" name="groupBox_3">
<property name="title">
<string>Number properties</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_7">
<item>
<layout class="QVBoxLayout" name="verticalLayout_6">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_6">
<item>
<widget class="QCheckBox" name="showNumberCheckBox">
@@ -45,8 +286,8 @@
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
<width>30</width>
<height>37</height>
</size>
</property>
</spacer>
@@ -75,268 +316,78 @@
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
<width>31</width>
<height>37</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item row="0" column="2">
<widget class="QGroupBox" name="groupBox_2">
<property name="title">
<string>Mail actions</string>
</property>
<layout class="QFormLayout" name="formLayout">
<item row="0" column="0">
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="0" colspan="2">
<widget class="QLabel" name="pollStartupDelayLabel">
<property name="text">
<string>Poll startup delay</string>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QSpinBox" name="pollStartupDelaySpinBox">
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>999</number>
</property>
<property name="value">
<number>60</number>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="pollIntervalLabel">
<property name="text">
<string>Poll interval</string>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QSpinBox" name="pollIntervalSpinBox">
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>999</number>
</property>
<property name="value">
<number>60</number>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item row="0" column="0" rowspan="2">
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>Windows</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_5">
<item>
<layout class="QVBoxLayout" name="verticalLayout_4">
<layout class="QHBoxLayout" name="horizontalLayout_5">
<item>
<widget class="QGroupBox" name="groupBox_4">
<property name="title">
<string>Minimize</string>
<widget class="QLabel" name="label_2">
<property name="text">
<string>Message count type:</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QRadioButton" name="defaultMinimizeRadioButton">
<property name="text">
<string>Default minimize</string>
</property>
<property name="checked">
<bool>false</bool>
</property>
<attribute name="buttonGroup">
<string notr="true">minimizeTypeGroup</string>
</attribute>
</widget>
</item>
<item>
<widget class="QRadioButton" name="minimizeMethod1RadioButton">
<property name="text">
<string>Minimize to tray, method 1</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
<attribute name="buttonGroup">
<string notr="true">minimizeTypeGroup</string>
</attribute>
</widget>
</item>
<item>
<widget class="QRadioButton" name="minimizeMethod2RadioButton">
<property name="text">
<string>Minimize to tray, method 2</string>
</property>
<attribute name="buttonGroup">
<string notr="true">minimizeTypeGroup</string>
</attribute>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QCheckBox" name="startMinimizedCheckBox">
<property name="text">
<string>Start application minimized</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
<item row="0" column="1">
<widget class="QGroupBox" name="iconTypeGroupBox">
<property name="title">
<string>Mail notification icon</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<property name="sizeConstraint">
<enum>QLayout::SetFixedSize</enum>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
<widget class="QRadioButton" name="blankRadioButton">
<widget class="QRadioButton" name="unreadRadioButton">
<property name="text">
<string>Blank icon</string>
<string>Unread</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
<attribute name="buttonGroup">
<string notr="true">iconTypeGroup</string>
<string notr="true">countTypeGroup</string>
</attribute>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<property name="sizeConstraint">
<enum>QLayout::SetFixedSize</enum>
</property>
<item>
<widget class="QRadioButton" name="newMailButton">
<widget class="QRadioButton" name="newRadioButton">
<property name="text">
<string>New mail icon</string>
<string>New</string>
</property>
<attribute name="buttonGroup">
<string notr="true">iconTypeGroup</string>
<string notr="true">countTypeGroup</string>
</attribute>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="sizeConstraint">
<enum>QLayout::SetMaximumSize</enum>
</property>
<item>
<widget class="QRadioButton" name="customRadioButton">
<property name="text">
<string>Custom icon</string>
</property>
<attribute name="buttonGroup">
<string notr="true">iconTypeGroup</string>
</attribute>
</widget>
</item>
<item>
<widget class="QLabel" name="imageLabel">
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="chooseCustomButton">
<property name="text">
<string>Choose</string>
</property>
<property name="flat">
<bool>false</bool>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item row="2" column="0">
<widget class="QCheckBox" name="debugWindowCheckBox">
<property name="text">
<string>Display debug window</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item row="1" column="0">
<item row="2" column="0">
<widget class="QCheckBox" name="debugWindowCheckBox">
<property name="text">
<string>Display debug window</string>
</property>
</widget>
</item>
<item row="2" column="1" colspan="2">
<spacer name="horizontalSpacer_5">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="2" column="3">
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
<enum>Qt::Horizontal</enum>
@@ -370,7 +421,8 @@
</connection>
</connections>
<buttongroups>
<buttongroup name="iconTypeGroup"/>
<buttongroup name="countTypeGroup"/>
<buttongroup name="minimizeTypeGroup"/>
<buttongroup name="iconTypeGroup"/>
</buttongroups>
</ui>

View File

@@ -51,6 +51,12 @@ PreferencesDialog::PreferencesDialog( SysTrayXLink *link, Preferences *pref, QWi
m_ui->iconTypeGroup->setId( m_ui->newMailButton, Preferences::PREF_NEWMAIL_ICON );
m_ui->iconTypeGroup->setId( m_ui->customRadioButton, Preferences::PREF_CUSTOM_ICON );
/*
* Set count type button Ids
*/
m_ui->countTypeGroup->setId( m_ui->unreadRadioButton, Preferences::PREF_COUNT_UNREAD );
m_ui->countTypeGroup->setId( m_ui->newRadioButton, Preferences::PREF_COUNT_NEW );
/*
* Set defaults
*/
@@ -184,6 +190,15 @@ void PreferencesDialog::setNumberColor( QString color )
}
/*
* Set the count type
*/
void PreferencesDialog::setCountType( Preferences::CountType count_type )
{
( m_ui->countTypeGroup->button( count_type ) )->setChecked( true );
}
/*
* Handle the accept signal
*/
@@ -209,6 +224,7 @@ void PreferencesDialog::slotAccept()
m_pref->setShowNumber( m_ui->showNumberCheckBox->isChecked() );
m_pref->setNumberColor( m_number_color );
m_pref->setCountType( static_cast< Preferences::CountType >( m_ui->countTypeGroup->checkedId() ) );
m_pref->setDebug( m_ui->debugWindowCheckBox->isChecked() );
@@ -363,3 +379,12 @@ void PreferencesDialog::slotNumberColorChange()
{
setNumberColor( m_pref->getNumberColor() );
}
/*
* Handle the count type change signal
*/
void PreferencesDialog::slotCountTypeChange()
{
setCountType( m_pref->getCountType() );
}

View File

@@ -110,6 +110,13 @@ class PreferencesDialog : public QDialog
*/
void setNumberColor( QString color );
/**
* @brief setCountType. Set the count type.
*
* @param count_type The count type.
*/
void setCountType( Preferences::CountType count_type );
signals:
/**
@@ -171,6 +178,11 @@ class PreferencesDialog : public QDialog
*/
void slotNumberColorChange();
/**
* @brief slotCountTypeChange. Slot for handling count type change.
*/
void slotCountTypeChange();
private slots:
/**

View File

@@ -92,6 +92,7 @@ SysTrayX::SysTrayX( QObject *parent ) : QObject( parent )
connect( m_preferences, &Preferences::signalIconDataChange, m_pref_dialog, &PreferencesDialog::slotIconDataChange );
connect( m_preferences, &Preferences::signalShowNumberChange, m_pref_dialog, &PreferencesDialog::slotShowNumberChange );
connect( m_preferences, &Preferences::signalNumberColorChange, m_pref_dialog, &PreferencesDialog::slotNumberColorChange );
connect( m_preferences, &Preferences::signalCountTypeChange, m_pref_dialog, &PreferencesDialog::slotCountTypeChange );
connect( m_preferences, &Preferences::signalMinimizeTypeChange, m_pref_dialog, &PreferencesDialog::slotMinimizeTypeChange );
connect( m_preferences, &Preferences::signalStartMinimizedChange, m_pref_dialog, &PreferencesDialog::slotStartMinimizedChange );
connect( m_preferences, &Preferences::signalPollStartupDelayChange, m_pref_dialog, &PreferencesDialog::slotPollStartupDelayChange );
@@ -102,6 +103,7 @@ SysTrayX::SysTrayX( QObject *parent ) : QObject( parent )
connect( m_preferences, &Preferences::signalIconDataChange, m_link, &SysTrayXLink::slotIconDataChange );
connect( m_preferences, &Preferences::signalShowNumberChange, m_link, &SysTrayXLink::slotShowNumberChange );
connect( m_preferences, &Preferences::signalNumberColorChange, m_link, &SysTrayXLink::slotNumberColorChange );
connect( m_preferences, &Preferences::signalCountTypeChange, m_link, &SysTrayXLink::slotCountTypeChange );
connect( m_preferences, &Preferences::signalMinimizeTypeChange, m_link, &SysTrayXLink::slotMinimizeTypeChange );
connect( m_preferences, &Preferences::signalStartMinimizedChange, m_link, &SysTrayXLink::slotStartMinimizedChange );
connect( m_preferences, &Preferences::signalPollStartupDelayChange, m_link, &SysTrayXLink::slotPollStartupDelayChange );

View File

@@ -473,6 +473,17 @@ void SysTrayXLink::DecodePreferences( const QJsonObject& pref )
m_pref->setNumberColor( number_color );
}
if( pref.contains( "countType" ) && pref[ "countType" ].isString() )
{
Preferences::CountType count_type = static_cast< Preferences::CountType >( pref[ "countType" ].toString().toInt() );
/*
* Store the new icon type
*/
m_pref->setCountType( count_type );
}
if( pref.contains( "minimizeType" ) && pref[ "minimizeType" ].isString() )
{
Preferences::MinimizeType minimize_type = static_cast< Preferences::MinimizeType >( pref[ "minimizeType" ].toString().toInt() );
@@ -544,6 +555,7 @@ void SysTrayXLink::EncodePreferences( const Preferences& pref )
prefObject.insert("icon", QJsonValue::fromVariant( QString( pref.getIconData().toBase64() ) ) );
prefObject.insert("showNumber", QJsonValue::fromVariant( QString( pref.getShowNumber() ? "true" : "false" ) ) );
prefObject.insert("numberColor", QJsonValue::fromVariant( QString( pref.getNumberColor() ) ) );
prefObject.insert("countType", QJsonValue::fromVariant( QString::number( pref.getCountType() ) ) );
QJsonObject preferencesObject;
preferencesObject.insert("preferences", prefObject );
@@ -682,3 +694,15 @@ void SysTrayXLink::slotNumberColorChange()
sendPreferences();
}
}
/*
* Handle the count type change signal
*/
void SysTrayXLink::slotCountTypeChange()
{
if( m_pref->getAppPrefChanged() )
{
sendPreferences();
}
}

View File

@@ -230,6 +230,11 @@ class SysTrayXLink : public QObject
*/
void slotNumberColorChange();
/**
* @brief slotCountTypeChange. Slot for handling count type change signals.
*/
void slotCountTypeChange();
private slots:
/**