mirror of
https://github.com/Ximi1970/systray-x.git
synced 2026-05-07 02:06:53 +02:00
Add alignment and margins settings for the icon
This commit is contained in:
@@ -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.
|
||||
*/
|
||||
|
||||
@@ -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.
|
||||
*/
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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
|
||||
*/
|
||||
|
||||
@@ -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.
|
||||
*/
|
||||
|
||||
@@ -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 );
|
||||
|
||||
@@ -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
|
||||
*/
|
||||
|
||||
@@ -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.
|
||||
*/
|
||||
|
||||
@@ -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
|
||||
*/
|
||||
|
||||
@@ -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.
|
||||
*/
|
||||
|
||||
@@ -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
|
||||
*/
|
||||
|
||||
@@ -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.
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user