Add alignment and margins settings for the icon

This commit is contained in:
Ximi1970
2020-12-09 23:02:18 +01:00
parent c2de095bec
commit 44b50c23ac
12 changed files with 647 additions and 12 deletions

View File

@@ -49,6 +49,8 @@ Preferences::Preferences( QObject *parent ) : QObject( parent )
m_number_color = "#000000";
m_number_size = 10;
m_count_type = PREF_COUNT_UNREAD;
m_number_alignment = 4;
m_number_margins = QMargins();
m_minimize_type = PREF_DEFAULT_MINIMIZE;
m_start_minimized = false;
@@ -400,6 +402,58 @@ void Preferences::setNumberSize( int size )
}
/*
* Get the count type.
*/
int Preferences::getNumberAlignment() const
{
return m_number_alignment;
}
/*
* Set the count type.
*/
void Preferences::setNumberAlignment( int alignment )
{
if( m_number_alignment != alignment)
{
m_number_alignment = alignment;
/*
* Tell the world the new preference
*/
emit signalNumberAlignmentChange();
}
}
/*
* Get the count type.
*/
QMargins Preferences::getNumberMargins() const
{
return m_number_margins;
}
/*
* Set the count type.
*/
void Preferences::setNumberMargins( QMargins margins )
{
if( m_number_margins != margins)
{
m_number_margins = margins;
/*
* Tell the world the new preference
*/
emit signalNumberMarginsChange();
}
}
/*
* Get the count type.
*/

View File

@@ -11,6 +11,7 @@
#include <QObject>
#include <QString>
#include <QByteArray>
#include <QMargins>
/**
* @brief The Preferences class. Class to hold the preferences.
@@ -300,6 +301,34 @@ class Preferences : public QObject
*/
void setNumberSize( int size );
/**
* @brief getNumberAlignment. Get the number alignment.
*
* @return The alignment.
*/
int getNumberAlignment() const;
/**
* @brief setumberAlignment. Set the number alignment.
*
* @param The alignment.
*/
void setNumberAlignment( int alignment );
/**
* @brief getNumberMargins. Get the number margins.
*
* @return The margins.
*/
QMargins getNumberMargins() const;
/**
* @brief setNumberMargins. Set the number margins.
*
* @param The margins.
*/
void setNumberMargins( QMargins margins );
/**
* @brief getCountType. Get the count type.
*
@@ -475,6 +504,16 @@ class Preferences : public QObject
*/
void signalNumberSizeChange();
/**
* @brief signalNumberAlignmmentChange. Signal a number alignment change.
*/
void signalNumberAlignmentChange();
/**
* @brief signalNumberMarginsChange. Signal a number margins change.
*/
void signalNumberMarginsChange();
/**
* @brief signalCountTypeChange. Signal a count type change.
*/
@@ -582,6 +621,16 @@ class Preferences : public QObject
*/
int m_number_size;
/**
* @brief m_number_alignment. Number alignment within the icon.
*/
int m_number_alignment;
/**
* @brief m_number_margins. Margins for the number.
*/
QMargins m_number_margins;
/**
* @brief m_count_type. Selected count type.
*/

View File

@@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>541</width>
<height>648</height>
<height>768</height>
</rect>
</property>
<property name="windowTitle">
@@ -491,6 +491,78 @@
</item>
</layout>
</item>
<item>
<widget class="QComboBox" name="numberAlignmentComboBox">
<property name="currentIndex">
<number>4</number>
</property>
<item>
<property name="text">
<string>Top left</string>
</property>
</item>
<item>
<property name="text">
<string>Top centre</string>
</property>
</item>
<item>
<property name="text">
<string>Top right</string>
</property>
</item>
<item>
<property name="text">
<string>Middle left</string>
</property>
</item>
<item>
<property name="text">
<string>Middle centre</string>
</property>
</item>
<item>
<property name="text">
<string>Middle right</string>
</property>
</item>
<item>
<property name="text">
<string>Bottom left</string>
</property>
</item>
<item>
<property name="text">
<string>Bottom centre</string>
</property>
</item>
<item>
<property name="text">
<string>Bottom right</string>
</property>
</item>
</widget>
</item>
<item>
<widget class="QLabel" name="numberMarginsLabel">
<property name="text">
<string>Margins (left, top, right, bottom):</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="numberMarginsLineEdit">
<property name="inputMask">
<string notr="true"/>
</property>
<property name="text">
<string>0,0,0,0</string>
</property>
<property name="maxLength">
<number>16</number>
</property>
</widget>
</item>
<item>
<widget class="QGroupBox" name="countTypeGroupBox">
<property name="title">
@@ -592,11 +664,11 @@
</resources>
<connections/>
<buttongroups>
<buttongroup name="minimizeTypeGroup"/>
<buttongroup name="closeTypeGroup"/>
<buttongroup name="countTypeGroup"/>
<buttongroup name="themeGroup"/>
<buttongroup name="defaultIconTypeGroup"/>
<buttongroup name="iconTypeGroup"/>
<buttongroup name="themeGroup"/>
<buttongroup name="minimizeTypeGroup"/>
</buttongroups>
</ui>

View File

@@ -16,6 +16,8 @@
#include <QMimeDatabase>
#include <QJsonDocument>
#include <QJsonObject>
#include <QRegExpValidator>
#include <QTextStream>
/*
* Constructor
@@ -124,6 +126,19 @@ PreferencesDialog::PreferencesDialog( SysTrayXLink *link, Preferences *pref, QWi
*/
m_ui->themeGroup->setId( m_ui->lightRadioButton, Preferences::PREF_THEME_LIGHT);
m_ui->themeGroup->setId( m_ui->darkRadioButton, Preferences::PREF_THEME_DARK );
/*
* Set number alignment
*/
setNumberAlignment( m_pref->getNumberAlignment() );
/*
* Set number margins
*/
QRegExpValidator *number_margins_validator = new QRegExpValidator( QRegExp("[0-9]*,[0-9]*,[0-9]*,[0-9]*") );
m_ui->numberMarginsLineEdit->setValidator(number_margins_validator);
setNumberMargins( m_pref->getNumberMargins() );
}
@@ -326,6 +341,42 @@ void PreferencesDialog::setCountType( Preferences::CountType count_type )
}
/*
* Set the number alignment
*/
void PreferencesDialog::setNumberAlignment( int alignment )
{
( m_ui->numberAlignmentComboBox->setCurrentIndex( alignment ) );
}
/*
* Set the number alignment
*/
void PreferencesDialog::setNumberMargins( QMargins margins )
{
( m_ui->numberMarginsLineEdit->setText( QString("%1,%2,%3,%4").arg(margins.left() ).arg(margins.top() ).arg(margins.right() ).arg(margins.bottom() ) ) );
}
/*
* Set the number alignment
*/
QMargins PreferencesDialog::getNumberMargins() const
{
QString margins_text = m_ui->numberMarginsLineEdit->text();
margins_text.replace( ",", " " );
int left;
int top;
int right;
int bottom;
QTextStream( &margins_text ) >> left >> top >> right >> bottom;
return QMargins( left, top, right, bottom );
}
/*
* Set the theme
*/
@@ -366,6 +417,9 @@ void PreferencesDialog::slotAccept()
m_pref->setNumberSize( m_ui->numberSizeSpinBox->value() );
m_pref->setCountType( static_cast< Preferences::CountType >( m_ui->countTypeGroup->checkedId() ) );
m_pref->setNumberAlignment( m_ui->numberAlignmentComboBox->currentIndex() );
m_pref->setNumberMargins( getNumberMargins() );
Preferences::Theme theme = static_cast< Preferences::Theme >( m_ui->themeGroup->checkedId() );
m_pref->setTheme( theme );
@@ -428,7 +482,8 @@ void PreferencesDialog::slotReject()
setNumberColor( m_pref->getNumberColor() );
setNumberSize( m_pref->getNumberSize());
setCountType( m_pref->getCountType() );
setNumberAlignment( m_pref->getNumberAlignment() );
setNumberMargins( m_pref->getNumberMargins() );
setTheme( m_pref->getTheme() );
setDebug( m_pref->getDebug());
@@ -636,6 +691,24 @@ void PreferencesDialog::slotCountTypeChange()
}
/*
* Handle the number size change
*/
void PreferencesDialog::slotNumberAlignmentChange()
{
setNumberAlignment( m_pref->getNumberAlignment() );
}
/*
* Handle the number size change
*/
void PreferencesDialog::slotNumberMarginsChange()
{
setNumberMargins( m_pref->getNumberMargins() );
}
/*
* Handle the theme change signal
*/

View File

@@ -151,6 +151,27 @@ class PreferencesDialog : public QDialog
*/
void setNumberSize( int size );
/**
* @brief setNumberAlignment. Set the number alignment.
*
* @param alignment The alignment.
*/
void setNumberAlignment( int alignment );
/**
* @brief setNumberMargins. Set the number margins.
*
* @param margins The margins.
*/
void setNumberMargins( QMargins margins );
/**
* @brief getNumberMargins. Get the number margins.
*
* @return The margins.
*/
QMargins getNumberMargins() const;
/**
* @brief setCountType. Set the count type.
*
@@ -246,6 +267,16 @@ class PreferencesDialog : public QDialog
*/
void slotNumberSizeChange();
/**
* @brief slotNumberAlignmentChange. Slot for handling number alignment change.
*/
void slotNumberAlignmentChange();
/**
* @brief slotNumberMarginsChange. Slot for handling number margins change.
*/
void slotNumberMarginsChange();
/**
* @brief slotCountTypeChange. Slot for handling count type change.
*/

View File

@@ -118,6 +118,8 @@ SysTrayX::SysTrayX( QObject *parent ) : QObject( parent )
connect( m_preferences, &Preferences::signalShowNumberChange, m_pref_dialog, &PreferencesDialog::slotShowNumberChange );
connect( m_preferences, &Preferences::signalNumberColorChange, m_pref_dialog, &PreferencesDialog::slotNumberColorChange );
connect( m_preferences, &Preferences::signalNumberSizeChange, m_pref_dialog, &PreferencesDialog::slotNumberSizeChange );
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::signalMinimizeTypeChange, m_pref_dialog, &PreferencesDialog::slotMinimizeTypeChange );
connect( m_preferences, &Preferences::signalStartMinimizedChange, m_pref_dialog, &PreferencesDialog::slotStartMinimizedChange );
@@ -134,6 +136,8 @@ SysTrayX::SysTrayX( QObject *parent ) : QObject( parent )
connect( m_preferences, &Preferences::signalShowNumberChange, m_link, &SysTrayXLink::slotShowNumberChange );
connect( m_preferences, &Preferences::signalNumberColorChange, m_link, &SysTrayXLink::slotNumberColorChange );
connect( m_preferences, &Preferences::signalNumberSizeChange, m_link, &SysTrayXLink::slotNumberSizeChange );
connect( m_preferences, &Preferences::signalNumberAlignmentChange, m_link, &SysTrayXLink::slotNumberAlignmentChange );
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::signalStartMinimizedChange, m_link, &SysTrayXLink::slotStartMinimizedChange );
@@ -174,14 +178,16 @@ SysTrayX::SysTrayX( QObject *parent ) : QObject( parent )
*/
getPreferences();
/*
//slotLoadLanguage( "en-US" );
///*
slotLoadLanguage( "en-US" );
//slotLoadLanguage( "it" );
slotLoadLanguage( "nl" );
//slotLoadLanguage( "nl" );
//slotLoadLanguage( "pt-BR" );
//slotLoadLanguage( "ru" );
slotSelectIconObject( false );
*/
slotSetUnreadMail( 10 );
//*/
}
@@ -290,6 +296,8 @@ 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::signalNumberAlignmentChange, m_tray_icon, &SysTrayXIcon::slotNumberAlignmentChange );
connect( m_preferences, &Preferences::signalNumberMarginsChange, m_tray_icon, &SysTrayXIcon::slotNumberMarginsChange );
connect( m_preferences, &Preferences::signalThemeChange, m_tray_icon, &SysTrayXIcon::slotThemeChange );
connect( m_link, &SysTrayXLink::signalUnreadMail, m_tray_icon, &SysTrayXIcon::slotSetUnreadMail );
@@ -325,6 +333,8 @@ 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::signalNumberAlignmentChange, m_tray_icon, &SysTrayXIcon::slotNumberAlignmentChange );
disconnect( m_preferences, &Preferences::signalNumberMarginsChange, m_tray_icon, &SysTrayXIcon::slotNumberMarginsChange );
disconnect( m_preferences, &Preferences::signalThemeChange, m_tray_icon, &SysTrayXIcon::slotThemeChange );
disconnect( m_link, &SysTrayXLink::signalUnreadMail, m_tray_icon, &SysTrayXIcon::slotSetUnreadMail );
@@ -398,6 +408,8 @@ 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::signalNumberAlignmentChange, m_kde_tray_icon, &SysTrayXStatusNotifier::slotNumberAlignmentChange );
connect( m_preferences, &Preferences::signalNumberMarginsChange, m_kde_tray_icon, &SysTrayXStatusNotifier::slotNumberMarginsChange );
connect( m_preferences, &Preferences::signalThemeChange, m_kde_tray_icon, &SysTrayXStatusNotifier::slotThemeChange );
connect( m_link, &SysTrayXLink::signalUnreadMail, m_kde_tray_icon, &SysTrayXStatusNotifier::slotSetUnreadMail );
@@ -432,6 +444,8 @@ 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::signalNumberAlignmentChange, m_kde_tray_icon, &SysTrayXStatusNotifier::slotNumberAlignmentChange );
disconnect( m_preferences, &Preferences::signalNumberMarginsChange, m_kde_tray_icon, &SysTrayXStatusNotifier::slotNumberMarginsChange );
disconnect( m_preferences, &Preferences::signalThemeChange, m_kde_tray_icon, &SysTrayXStatusNotifier::slotThemeChange );
disconnect( m_link, &SysTrayXLink::signalUnreadMail, m_kde_tray_icon, &SysTrayXStatusNotifier::slotSetUnreadMail );

View File

@@ -33,6 +33,9 @@ SysTrayXIcon::SysTrayXIcon( SysTrayXLink* link, Preferences* pref, QObject* pare
m_show_number = m_pref->getShowNumber();
m_number_color = m_pref->getNumberColor();
m_number_size = m_pref->getNumberSize();
m_number_alignment = Qt::AlignHCenter | Qt::AlignVCenter;
setNumberAlignment( m_pref->getNumberAlignment() );
m_number_margins = m_pref->getNumberMargins();
connect( this, &QSystemTrayIcon::activated, this, &SysTrayXIcon::slotIconActivated );
}
@@ -207,6 +210,69 @@ void SysTrayXIcon::setNumberSize( int size )
}
}
/*
* Set number alignment
*/
void SysTrayXIcon::setNumberAlignment( int alignment )
{
int alignment_qt;
switch( alignment )
{
case 0: alignment_qt = Qt::AlignTop | Qt::AlignLeft; break;
case 1: alignment_qt = Qt::AlignTop | Qt::AlignHCenter; break;
case 2: alignment_qt = Qt::AlignTop | Qt::AlignRight; break;
case 3: alignment_qt = Qt::AlignVCenter | Qt::AlignLeft; break;
case 4: alignment_qt = Qt::AlignVCenter | Qt::AlignHCenter; break;
case 5: alignment_qt = Qt::AlignVCenter | Qt::AlignRight; break;
case 6: alignment_qt = Qt::AlignBottom | Qt::AlignLeft; break;
case 7: alignment_qt = Qt::AlignBottom | Qt::AlignHCenter; break;
case 8: alignment_qt = Qt::AlignBottom | Qt::AlignRight; break;
default:
{
alignment_qt = Qt::AlignHCenter | Qt::AlignVCenter;
break;
}
}
if( m_number_alignment != alignment_qt )
{
/*
* Store the new value
*/
m_number_alignment = alignment_qt;
/*
* Render and set a new icon in the tray
*/
renderIcon();
}
}
/*
* Set number alignment
*/
void SysTrayXIcon::setNumberMargins( QMargins margins )
{
if( m_number_margins != margins )
{
/*
* Store the new value
*/
m_number_margins = margins;
/*
* Render and set a new icon in the tray
*/
renderIcon();
}
}
/*
* Set the number of unread mails
*/
@@ -318,10 +384,12 @@ void SysTrayXIcon::renderIcon()
font.setPointSizeF( font.pointSizeF() * ( factor * m_number_size / 10 ) );
font.setBold( true );
painter.setFont( font );
painter.setPen( QColor( m_number_color ) );
painter.drawText( pixmap.rect(), Qt::AlignCenter, QString::number( m_unread_mail ) );
QRect bounding = pixmap.rect().adjusted( m_number_margins.left(), m_number_margins.top(),
-m_number_margins.right(), -m_number_margins.bottom());
painter.drawText( bounding, m_number_alignment, QString::number( m_unread_mail ) );
}
/*
@@ -405,6 +473,24 @@ void SysTrayXIcon::slotNumberSizeChange()
}
/*
* Handle the number alignment change signal
*/
void SysTrayXIcon::slotNumberAlignmentChange()
{
setNumberAlignment( m_pref->getNumberAlignment() );
}
/*
* Handle the number margins change signal
*/
void SysTrayXIcon::slotNumberMarginsChange()
{
setNumberMargins( m_pref->getNumberMargins() );
}
/*
* Handle the theme change signal
*/

View File

@@ -96,6 +96,20 @@ class SysTrayXIcon : public QSystemTrayIcon
*/
void setNumberSize( int size );
/**
* @brief setNumberAlignment. Set the number alignment.
*
* @param alignment The alignment.
*/
void setNumberAlignment( int alignment );
/**
* @brief setNumberMargins. Set the number margins.
*
* @param margins The margins.
*/
void setNumberMargins( QMargins margins );
/**
* @brief setUnreadMail. Set the number of unread mails.
*
@@ -161,6 +175,16 @@ class SysTrayXIcon : public QSystemTrayIcon
*/
void slotNumberSizeChange();
/**
* @brief slotNumberAlignmentChange. Slot for handling number alignment change signals.
*/
void slotNumberAlignmentChange();
/**
* @brief slotNumberMarginsChange. Slot for handling number margins change signals.
*/
void slotNumberMarginsChange();
/**
* @brief slotThemeChange. Slot for handling theme change signals.
*/
@@ -232,6 +256,16 @@ class SysTrayXIcon : public QSystemTrayIcon
*/
int m_number_size;
/**
* @brief m_number_alignment. The number alignment.
*/
int m_number_alignment;
/**
* @brief m_margins. The number margins.
*/
QMargins m_number_margins;
/**
* @brief m_unread_mail. Storage for the number of unread mails.
*/

View File

@@ -662,6 +662,26 @@ void SysTrayXLink::DecodePreferences( const QJsonObject& pref )
m_pref->setNumberSize( number_size );
}
if( pref.contains( "numberAlignment" ) && pref[ "numberAlignment" ].isString() )
{
int number_size = pref[ "numberAlignment" ].toString().toInt();
/*
* Store the new number size
*/
m_pref->setNumberAlignment( number_size );
}
if( pref.contains( "numberMargins" ) && pref[ "numberMargins" ].isObject() )
{
QMargins margins = DecodeMargins( pref[ "numberMargins" ].toObject() );
/*
* Store the new number size
*/
m_pref->setNumberMargins( margins );
}
if( pref.contains( "countType" ) && pref[ "countType" ].isString() )
{
Preferences::CountType count_type = static_cast< Preferences::CountType >( pref[ "countType" ].toString().toInt() );
@@ -734,6 +754,36 @@ void SysTrayXLink::DecodePreferences( const QJsonObject& pref )
}
/*
* Decode preferences from JSON message
*/
QMargins SysTrayXLink::DecodeMargins( const QJsonObject& marginsJson )
{
QMargins margins;
if( marginsJson.contains( "left" ) && marginsJson[ "left" ].isString() )
{
margins.setLeft( marginsJson[ "left" ].toString().toInt() );
}
if( marginsJson.contains( "top" ) && marginsJson[ "top" ].isString() )
{
margins.setTop( marginsJson[ "top" ].toString().toInt() );
}
if( marginsJson.contains( "right" ) && marginsJson[ "right" ].isString() )
{
margins.setRight( marginsJson[ "right" ].toString().toInt() );
}
if( marginsJson.contains( "bottom" ) && marginsJson[ "bottom" ].isString() )
{
margins.setBottom( marginsJson[ "bottom" ].toString().toInt() );
}
return margins;
}
/*
* Encode preferences to JSON message
*/
@@ -758,6 +808,15 @@ void SysTrayXLink::EncodePreferences( const Preferences& pref )
prefObject.insert("showNumber", QJsonValue::fromVariant( QString( pref.getShowNumber() ? "true" : "false" ) ) );
prefObject.insert("numberColor", QJsonValue::fromVariant( QString( pref.getNumberColor() ) ) );
prefObject.insert("numberSize", QJsonValue::fromVariant( QString::number( pref.getNumberSize() ) ) );
prefObject.insert("numberAlignment", QJsonValue::fromVariant( QString::number( pref.getNumberAlignment() ) ) );
QJsonObject marginsObject;
marginsObject.insert("left", QJsonValue::fromVariant( QString::number( pref.getNumberMargins().left() ) ) );
marginsObject.insert("top", QJsonValue::fromVariant( QString::number( pref.getNumberMargins().top() ) ) );
marginsObject.insert("right", QJsonValue::fromVariant( QString::number( pref.getNumberMargins().right() ) ) );
marginsObject.insert("bottom", QJsonValue::fromVariant( QString::number( pref.getNumberMargins().bottom() ) ) );
prefObject.insert("numberMargins", marginsObject );
prefObject.insert("countType", QJsonValue::fromVariant( QString::number( pref.getCountType() ) ) );
prefObject.insert("theme", QJsonValue::fromVariant( QString::number( pref.getTheme() ) ) );
@@ -948,6 +1007,30 @@ void SysTrayXLink::slotNumberSizeChange()
}
/*
* Handle a number alignment change signal
*/
void SysTrayXLink::slotNumberAlignmentChange()
{
if( m_pref->getAppPrefChanged() )
{
sendPreferences();
}
}
/*
* Handle a number margins change signal
*/
void SysTrayXLink::slotNumberMarginsChange()
{
if( m_pref->getAppPrefChanged() )
{
sendPreferences();
}
}
/*
* Handle the count type change signal
*/

View File

@@ -158,6 +158,15 @@ class SysTrayXLink : public QObject
*/
void DecodePreferences( const QJsonObject& pref );
/**
* @brief DecodeMargins. Decode the margins object.
*
* @param margins The JSON margins.
*
* @return The margins.
*/
QMargins DecodeMargins( const QJsonObject& margins );
/**
* @brief DecodePositions
*
@@ -299,6 +308,16 @@ class SysTrayXLink : public QObject
*/
void slotNumberSizeChange();
/**
* @brief slotNumberAlignmentChange. Handle a change in number alignment.
*/
void slotNumberAlignmentChange();
/**
* @brief slotNumberMarginsChange. Handle a change in number margins.
*/
void slotNumberMarginsChange();
/**
* @brief slotCountTypeChange. Slot for handling count type change signals.
*/

View File

@@ -38,6 +38,9 @@ SysTrayXStatusNotifier::SysTrayXStatusNotifier( SysTrayXLink* link, Preferences*
m_show_number = m_pref->getShowNumber();
m_number_color = m_pref->getNumberColor();
m_number_size = m_pref->getNumberSize();
m_number_alignment = Qt::AlignHCenter | Qt::AlignVCenter;
setNumberAlignment( m_pref->getNumberAlignment() );
m_number_margins = m_pref->getNumberMargins();
/*
* Setup notifier
@@ -242,6 +245,69 @@ void SysTrayXStatusNotifier::setNumberSize( int size )
}
}
/*
* Set number alignment
*/
void SysTrayXStatusNotifier::setNumberAlignment( int alignment )
{
int alignment_qt;
switch( alignment )
{
case 0: alignment_qt = Qt::AlignTop | Qt::AlignLeft; break;
case 1: alignment_qt = Qt::AlignTop | Qt::AlignHCenter; break;
case 2: alignment_qt = Qt::AlignTop | Qt::AlignRight; break;
case 3: alignment_qt = Qt::AlignVCenter | Qt::AlignLeft; break;
case 4: alignment_qt = Qt::AlignVCenter | Qt::AlignHCenter; break;
case 5: alignment_qt = Qt::AlignVCenter | Qt::AlignRight; break;
case 6: alignment_qt = Qt::AlignBottom | Qt::AlignLeft; break;
case 7: alignment_qt = Qt::AlignBottom | Qt::AlignHCenter; break;
case 8: alignment_qt = Qt::AlignBottom | Qt::AlignRight; break;
default:
{
alignment_qt = Qt::AlignHCenter | Qt::AlignVCenter;
break;
}
}
if( m_number_alignment != alignment_qt )
{
/*
* Store the new value
*/
m_number_alignment = alignment_qt;
/*
* Render and set a new icon in the tray
*/
renderIcon();
}
}
/*
* Set number alignment
*/
void SysTrayXStatusNotifier::setNumberMargins( QMargins margins )
{
if( m_number_margins != margins )
{
/*
* Store the new value
*/
m_number_margins = margins;
/*
* Render and set a new icon in the tray
*/
renderIcon();
}
}
/*
* Set the number of unread mails
*/
@@ -352,10 +418,12 @@ void SysTrayXStatusNotifier::renderIcon()
font.setPointSizeF( font.pointSizeF() * ( factor * m_number_size / 10 ) );
font.setBold( true );
painter.setFont( font );
painter.setPen( QColor( m_number_color ) );
painter.drawText( pixmap.rect(), Qt::AlignCenter, QString::number( m_unread_mail ) );
QRect bounding = pixmap.rect().adjusted( m_number_margins.left(), m_number_margins.top(),
-m_number_margins.right(), -m_number_margins.bottom());
painter.drawText( bounding, m_number_alignment, QString::number( m_unread_mail ) );
}
/*
@@ -469,6 +537,24 @@ void SysTrayXStatusNotifier::slotNumberSizeChange()
}
/*
* Handle the number alignment change signal
*/
void SysTrayXStatusNotifier::slotNumberAlignmentChange()
{
setNumberAlignment( m_pref->getNumberAlignment() );
}
/*
* Handle the number margins change signal
*/
void SysTrayXStatusNotifier::slotNumberMarginsChange()
{
setNumberMargins( m_pref->getNumberMargins() );
}
/*
* Handle the theme change signal
*/

View File

@@ -107,6 +107,20 @@ class SysTrayXStatusNotifier : public KStatusNotifierItem
*/
void setNumberSize( int size );
/**
* @brief setNumberAlignment. Set the number alignment.
*
* @param alignment The alignment.
*/
void setNumberAlignment( int alignment );
/**
* @brief setNumberMargins. Set the number margins.
*
* @param margins The margins.
*/
void setNumberMargins( QMargins margins );
/**
* @brief setUnreadMail. Set the number of unread mails.
*
@@ -182,6 +196,16 @@ class SysTrayXStatusNotifier : public KStatusNotifierItem
*/
void slotNumberSizeChange();
/**
* @brief slotNumberAlignmentChange. Slot for handling number alignment change signals.
*/
void slotNumberAlignmentChange();
/**
* @brief slotNumberMarginsChange. Slot for handling number margins change signals.
*/
void slotNumberMarginsChange();
/**
* @brief slotThemeChange. Slot for handling theme change signals.
*/
@@ -266,6 +290,16 @@ class SysTrayXStatusNotifier : public KStatusNotifierItem
*/
int m_number_size;
/**
* @brief m_number_alignment. The number alignment.
*/
int m_number_alignment;
/**
* @brief m_margins. The number margins.
*/
QMargins m_number_margins;
/**
* @brief m_unread_mail. Storage for the number of unread mails.
*/