New unified mail count message

This commit is contained in:
Ximi1970
2023-08-25 15:48:27 +02:00
parent 617a0e412c
commit 8ae37bf704
13 changed files with 229 additions and 212 deletions

View File

@@ -52,11 +52,12 @@ void DebugWidget::changeEvent( QEvent* event )
/*
* Set the number of unread mail
* Set the number of unread/new mails
*/
void DebugWidget::setUnreadMail( int unread )
void DebugWidget::setMailCount( int unread_mail, int new_mail )
{
m_ui->unreadMailLabel->setText( QString::number( unread ) );
m_ui->unreadMailLabel->setText( QString::number( unread_mail ) );
m_ui->newMailLabel->setText( QString::number( new_mail ) );
}
@@ -72,9 +73,9 @@ void DebugWidget::slotDebugChange()
/*
* Handle unread mail signal
*/
void DebugWidget::slotUnreadMail( int unread_mail )
void DebugWidget::slotMailCount( int unread_mail, int new_mail )
{
setUnreadMail( unread_mail );
setMailCount( unread_mail, new_mail );
}

View File

@@ -46,11 +46,12 @@ class DebugWidget : public QWidget
void changeEvent( QEvent *event );
/**
* @brief setUnreadMail. Set the number of unread mails.
* @brief setMailCount. Set the number of unread/new mails.
*
* @param unread The number of unread mails.
* @param unread_mail The number of unread mails.
* @param new_mail The number of new mails.
*/
void setUnreadMail( int unread );
void setMailCount( int unread_mail, int new_mail );
signals:
@@ -82,11 +83,12 @@ class DebugWidget : public QWidget
void slotDebugChange();
/**
* @brief slotSetUnreadMail. Slot for handling unread mail signals.
* @brief slotMailCount. Slot for handling unread/new mail signals.
*
* @param unread_mail The number of unread mails.
* @param unread_mail The number of unread mails.
* @param new_mail The number of new mails.
*/
void slotUnreadMail( int unread_mail );
void slotMailCount( int unread_mail, int new_mail );
/**
* @brief slotHandleTest1Button. Handle a click on the test 1 button.

View File

@@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>368</width>
<height>280</height>
<width>358</width>
<height>290</height>
</rect>
</property>
<property name="windowTitle">
@@ -19,18 +19,44 @@
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QLabel" name="unreadMailTextLabel">
<property name="text">
<string>Unread mail:</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLabel" name="unreadMailLabel">
<property name="text">
<string>0</string>
</property>
</widget>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QLabel" name="unreadMailTextLabel">
<property name="text">
<string>Unread mail:</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="unreadMailLabel">
<property name="text">
<string>0</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QLabel" name="newMailTextLabel">
<property name="text">
<string>New mail:</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="newMailLabel">
<property name="text">
<string>0</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
<item row="1" column="0">
<spacer name="verticalSpacer">
@@ -45,7 +71,7 @@
</property>
</spacer>
</item>
<item row="1" column="2">
<item row="1" column="1">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
@@ -58,10 +84,10 @@
</property>
</spacer>
</item>
<item row="2" column="0" colspan="3">
<item row="2" column="0" colspan="2">
<widget class="QTextEdit" name="textEdit"/>
</item>
<item row="3" column="0" colspan="3">
<item row="3" column="0" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QPushButton" name="test1PushButton">

View File

@@ -39,6 +39,7 @@ SysTrayX::SysTrayX( QObject *parent ) : QObject( parent )
m_tray_icon_menu = nullptr;
m_unread_mail = 0;
m_new_mail = 0;
m_locale = QString();
/*
@@ -84,7 +85,7 @@ SysTrayX::SysTrayX( QObject *parent ) : QObject( parent )
/*
* Connect debug link signals
*/
connect( m_link, &SysTrayXLink::signalUnreadMail, m_debug, &DebugWidget::slotUnreadMail );
connect( m_link, &SysTrayXLink::signalMailCount, m_debug, &DebugWidget::slotMailCount );
connect( this, &SysTrayX::signalConsole, m_debug, &DebugWidget::slotConsole );
connect( m_preferences, &Preferences::signalConsole, m_debug, &DebugWidget::slotConsole );
@@ -163,7 +164,7 @@ SysTrayX::SysTrayX( QObject *parent ) : QObject( parent )
connect( m_link, &SysTrayXLink::signalAddOnShutdown, this, &SysTrayX::slotAddOnShutdown );
connect( m_link, &SysTrayXLink::signalErrorAddOnShutdown, this, &SysTrayX::slotErrorAddOnShutdown );
connect( m_link, &SysTrayXLink::signalWindowState, m_win_ctrl, &WindowCtrl::slotWindowState );
connect( m_link, &SysTrayXLink::signalUnreadMail, this, &SysTrayX::slotSetUnreadMail );
connect( m_link, &SysTrayXLink::signalMailCount, this, &SysTrayX::slotMailCount );
connect( m_link, &SysTrayXLink::signalVersion, this, &SysTrayX::slotVersion );
connect( m_link, &SysTrayXLink::signalKdeIntegration, this, &SysTrayX::slotSelectIconObject );
connect( m_link, &SysTrayXLink::signalLocale, this, &SysTrayX::slotLoadLanguage );
@@ -194,7 +195,7 @@ SysTrayX::SysTrayX( QObject *parent ) : QObject( parent )
//slotLoadLanguage( "ru" );
slotSelectIconObject( false );
slotSetUnreadMail( 10 );
slotMailCount( 10, 1 );
*/
}
@@ -308,16 +309,16 @@ void SysTrayX::showTrayIcon()
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 );
connect( m_link, &SysTrayXLink::signalMailCount, m_tray_icon, &SysTrayXIcon::slotMailCount );
connect( this, &SysTrayX::signalUnreadMail, m_tray_icon, &SysTrayXIcon::slotSetUnreadMail );
connect( this, &SysTrayX::signalMailCount, m_tray_icon, &SysTrayXIcon::slotMailCount );
/*
* Show it
*/
m_tray_icon->show();
QTimer::singleShot(500, this, &SysTrayX::resendUnreadMail);
QTimer::singleShot(500, this, &SysTrayX::resendMailCount);
}
}
@@ -345,9 +346,9 @@ void SysTrayX::hideTrayIcon()
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 );
disconnect( m_link, &SysTrayXLink::signalMailCount, m_tray_icon, &SysTrayXIcon::slotMailCount );
disconnect( this, &SysTrayX::signalUnreadMail, m_tray_icon, &SysTrayXIcon::slotSetUnreadMail );
disconnect( this, &SysTrayX::signalMailCount, m_tray_icon, &SysTrayXIcon::slotMailCount );
/*
* Hide the icon first to prevent "ghosts"
@@ -420,14 +421,14 @@ void SysTrayX::showKdeTrayIcon()
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 );
connect( m_link, &SysTrayXLink::signalMailCount, m_kde_tray_icon, &SysTrayXStatusNotifier::slotMailCount );
connect( this, &SysTrayX::signalUnreadMail, m_kde_tray_icon, &SysTrayXStatusNotifier::slotSetUnreadMail );
connect( this, &SysTrayX::signalMailCount, m_kde_tray_icon, &SysTrayXStatusNotifier::slotMailCount );
/*
* Show
*/
QTimer::singleShot(500, this, &SysTrayX::resendUnreadMail);
QTimer::singleShot(500, this, &SysTrayX::resendMailCount);
}
}
@@ -456,9 +457,9 @@ void SysTrayX::hideKdeTrayIcon()
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 );
disconnect( m_link, &SysTrayXLink::signalMailCount, m_kde_tray_icon, &SysTrayXStatusNotifier::slotMailCount );
disconnect( this, &SysTrayX::signalUnreadMail, m_kde_tray_icon, &SysTrayXStatusNotifier::slotSetUnreadMail );
disconnect( this, &SysTrayX::signalMailCount, m_kde_tray_icon, &SysTrayXStatusNotifier::slotMailCount );
/*
* Remove the notifier icon
@@ -526,11 +527,11 @@ void SysTrayX::slotSelectIconObject( bool state )
/*
* Resend unread mail
* Resend unread/new mail
*/
void SysTrayX::resendUnreadMail()
void SysTrayX::resendMailCount()
{
emit signalUnreadMail( m_unread_mail );
emit signalMailCount( m_unread_mail, m_new_mail );
}
@@ -674,11 +675,12 @@ void SysTrayX::slotVersion( QString version )
/*
* Handle unread mail signal
* Handle mail count signal
*/
void SysTrayX::slotSetUnreadMail( int unread )
void SysTrayX::slotMailCount( int unread_mail, int new_mail )
{
m_unread_mail = unread;
m_unread_mail = unread_mail;
m_new_mail = new_mail;
}

View File

@@ -90,18 +90,19 @@ class SysTrayX : public QObject
#endif
/**
* @brief resendUnreadMail. Send another unread mail signal to the icon.
* @brief resendMailCount. Send another unread/new mail signal to the icon.
*/
void resendUnreadMail();
void resendMailCount();
signals:
/**
* @brief signalUnreadMail. Signal numder of unread mails.
* @brief signalMailCount. Signal numder of unread/new mails.
*
* @param unreadMail The number of unread mails.
* @param unread_mail The number of unread mails.
* @param new_mail The number of new mails.
*/
void signalUnreadMail( int unread_mail );
void signalMailCount( int unread_mail, int new_mail );
/**
* @brief signalWriteMessage
@@ -125,11 +126,12 @@ class SysTrayX : public QObject
public slots:
/**
* @brief slotSetUnreadMail. Handle the unred mail signal.
* @brief slotMailCount. Handle the mail count signal.
*
* @param unread Number of unread mail.
* @param unread_mail Number of unread mail.
* @param new_mail Number of new mail.
*/
void slotSetUnreadMail( int unread );
void slotMailCount( int unread_mail, int new_mail );
/**
* @brief slotLoadLanguage. Handle locale change signal.
@@ -228,6 +230,11 @@ class SysTrayX : public QObject
*/
int m_unread_mail;
/**
* @brief m_new_mail. Number of new mails
*/
int m_new_mail;
/**
* @brief m_translator. The translator object.
*/

View File

@@ -29,6 +29,7 @@ SysTrayXIcon::SysTrayXIcon( SysTrayXLink* link, Preferences* pref, QObject* pare
m_pref = pref;
m_unread_mail = 0;
m_new_mail = 0;
m_show_number = m_pref->getShowNumber();
m_number_color = m_pref->getNumberColor();
@@ -276,16 +277,17 @@ void SysTrayXIcon::setNumberMargins( QMargins margins )
/*
* Set the number of unread mails
* Set the number of unread/new mails
*/
void SysTrayXIcon::setUnreadMail( int unread_mail )
void SysTrayXIcon::setMailCount( int unread_mail, int new_mail )
{
if( m_unread_mail != unread_mail )
if( m_unread_mail != unread_mail || m_new_mail != new_mail )
{
/*
* Store the new value
*/
m_unread_mail = unread_mail;
m_new_mail = new_mail;
/*
* Render and set a new icon in the tray
@@ -302,7 +304,7 @@ void SysTrayXIcon::renderIcon()
{
QPixmap pixmap;
if( m_unread_mail > 0 )
if( m_unread_mail > 0 || m_new_mail > 0 )
{
switch( m_icon_type )
{
@@ -392,7 +394,7 @@ void SysTrayXIcon::renderIcon()
}
}
if( m_show_number && ( m_unread_mail > 0 ) )
if( m_show_number && ( m_unread_mail > 0 || m_new_mail > 0 ) )
{
/*
* Paint the number
@@ -415,6 +417,8 @@ void SysTrayXIcon::renderIcon()
QRect bounding = pixmap.rect().adjusted( m_number_margins.left(), m_number_margins.top(),
-m_number_margins.right(), -m_number_margins.bottom());
// TODO: check pref for type
painter.drawText( bounding, m_number_alignment, QString::number( m_unread_mail ) );
}
@@ -426,11 +430,11 @@ void SysTrayXIcon::renderIcon()
/*
* Handle unread mail signal
* Handle mail count signal
*/
void SysTrayXIcon::slotSetUnreadMail( int unread_mail )
void SysTrayXIcon::slotMailCount( int unread_mail, int new_mail )
{
setUnreadMail( unread_mail );
setMailCount( unread_mail, new_mail );
}

View File

@@ -111,11 +111,12 @@ class SysTrayXIcon : public QSystemTrayIcon
void setNumberMargins( QMargins margins );
/**
* @brief setUnreadMail. Set the number of unread mails.
* @brief setMailCount. Set the number of unread/new mails.
*
* @param unread_mail The number of unread mails.
* @param new_mail The number of new mails.
*/
void setUnreadMail( int unread_mail );
void setMailCount( int unread_mail, int new_mail );
private:
@@ -134,11 +135,12 @@ class SysTrayXIcon : public QSystemTrayIcon
public slots:
/**
* @brief slotSetUnreadMail. Slot for handling unread mail signals.
* @brief slotMailCount. Slot for handling unread/new mail signals.
*
* @param unread_mail The number of unread mails.
* @param new_mail The number of new mails.
*/
void slotSetUnreadMail( int unread_mail );
void slotMailCount( int unread_mail, int new_mail );
/**
* @brief slotDefaultIconTypeChange. Slot for handling default icon type change signals.
@@ -242,17 +244,17 @@ class SysTrayXIcon : public QSystemTrayIcon
QByteArray m_icon_data;
/**
* @brief m_show_number. Show the unread mail count.
* @brief m_show_number. Show the unread/new mail count.
*/
bool m_show_number;
/**
* @brief m_number_color. Color of the unread mail number.
* @brief m_number_color. Color of the unread/new mail number.
*/
QString m_number_color;
/**
* @brief m_number_size. Size of the unread mail number.
* @brief m_number_size. Size of the unread/new mail number.
*/
int m_number_size;
@@ -270,6 +272,11 @@ class SysTrayXIcon : public QSystemTrayIcon
* @brief m_unread_mail. Storage for the number of unread mails.
*/
int m_unread_mail;
/**
* @brief m_new_mail. Storage for the number of new mails.
*/
int m_new_mail;
};
#endif // SYSTRAYXICON_H

View File

@@ -79,7 +79,7 @@ void SysTrayXLinkReader::startThread()
/*
* Start the work
*/
m_doWork = true;
m_do_work = true;
/*
* Start the worker
@@ -96,7 +96,7 @@ void SysTrayXLinkReader::stopThread()
/*
* Stop working
*/
m_doWork = false;
m_do_work = false;
}
@@ -107,7 +107,7 @@ void SysTrayXLinkReader::slotWorker()
{
int error_count = 0;
while( m_doWork )
while( m_do_work )
{
qint32 data_len;
std::cin.read( reinterpret_cast< char* >( &data_len ), sizeof( qint32 ) );
@@ -317,10 +317,30 @@ void SysTrayXLink::DecodeMessage( const QByteArray& message )
}
*/
if( jsonObject.contains( "unreadMail" ) && jsonObject[ "unreadMail" ].isDouble() )
if( jsonObject.contains( "mailCount" ) && jsonObject[ "mailCount" ].isObject() )
{
int unreadMail = jsonObject[ "unreadMail" ].toInt();
emit signalUnreadMail( unreadMail );
QJsonObject mailCount = jsonObject[ "mailCount" ].toObject();
/*
* Check the received object
*/
int unreadMail = 0;
int newMail = 0;
if( mailCount.contains( "unread" ) && mailCount[ "unread" ].isDouble() )
{
unreadMail = mailCount[ "unread" ].toInt();
emit signalConsole( QString("Unread %1").arg( unreadMail ) );
}
if( mailCount.contains( "new" ) && mailCount[ "new" ].isDouble() )
{
newMail = mailCount[ "new" ].toInt();
emit signalConsole( QString("New %1").arg( newMail ) );
}
emit signalMailCount( unreadMail, newMail );
}
if( jsonObject.contains( "version" ) && jsonObject[ "version" ].isString() )

View File

@@ -78,9 +78,9 @@ class SysTrayXLinkReader : public QObject
QTimer* m_timer;
/**
* @brief m_doWork. Status of the worker thread.
* @brief m_do_work. Status of the worker thread.
*/
bool m_doWork;
bool m_do_work;
};
@@ -228,11 +228,12 @@ class SysTrayXLink : public QObject
void signalLocale( QString locale );
/**
* @brief signalUnreadMail. Signal numder of unread mails.
* @brief signalMailCount. Signal numder of unread/new mails.
*
* @param unreadMail The number of unread mails.
* @param unread_mail The number of unread mails.
* @param new_mail The number of new mails.
*/
void signalUnreadMail( int unread_mail );
void signalMailCount( int unread_mail, int new_mail );
/**
* @brief signalWindowPositions. Signal the startup positions.

View File

@@ -34,6 +34,7 @@ SysTrayXStatusNotifier::SysTrayXStatusNotifier( SysTrayXLink* link, Preferences*
m_pref = pref;
m_unread_mail = 0;
m_new_mail = 0;
m_show_number = m_pref->getShowNumber();
m_number_color = m_pref->getNumberColor();
@@ -322,16 +323,17 @@ void SysTrayXStatusNotifier::setNumberMargins( QMargins margins )
/*
* Set the number of unread mails
* Set the number of unread/new mails
*/
void SysTrayXStatusNotifier::setUnreadMail( int unread_mail )
void SysTrayXStatusNotifier::setMailCount( int unread_mail, int new_mail )
{
if( m_unread_mail != unread_mail )
if( m_unread_mail != unread_mail || m_new_mail != new_mail )
{
/*
* Store the new value
*/
m_unread_mail = unread_mail;
m_new_mail = new_mail;
/*
* Render and set a new icon in the tray
@@ -348,7 +350,7 @@ void SysTrayXStatusNotifier::renderIcon()
{
QPixmap pixmap;
if( m_unread_mail > 0 )
if( m_unread_mail > 0 || m_new_mail > 0 )
{
switch( m_icon_type )
{
@@ -437,7 +439,7 @@ void SysTrayXStatusNotifier::renderIcon()
}
}
if( m_show_number && ( m_unread_mail > 0 ) )
if( m_show_number && ( m_unread_mail > 0 || m_new_mail > 0 ) )
{
/*
* Paint the number
@@ -460,6 +462,7 @@ void SysTrayXStatusNotifier::renderIcon()
QRect bounding = pixmap.rect().adjusted( m_number_margins.left(), m_number_margins.top(),
-m_number_margins.right(), -m_number_margins.bottom());
// TODO pref to get the type
painter.drawText( bounding, m_number_alignment, QString::number( m_unread_mail ) );
}
@@ -471,7 +474,7 @@ void SysTrayXStatusNotifier::renderIcon()
/*
* Hide the icon?
*/
if( m_hide_default_icon && m_unread_mail == 0 )
if( m_hide_default_icon && m_unread_mail == 0 && m_new_mail == 0 )
{
setStatus( KStatusNotifierItem::ItemStatus::Passive );
}
@@ -484,7 +487,7 @@ void SysTrayXStatusNotifier::renderIcon()
void SysTrayXStatusNotifier::showIcon()
{
if( !m_hide_default_icon || m_unread_mail > 0 )
if( !m_hide_default_icon || m_unread_mail > 0 || m_new_mail > 0 )
{
setStatus( KStatusNotifierItem::ItemStatus::Active );
}
@@ -492,11 +495,11 @@ void SysTrayXStatusNotifier::showIcon()
/*
* Handle unread mail signal
* Handle mail count signal
*/
void SysTrayXStatusNotifier::slotSetUnreadMail( int unread_mail )
void SysTrayXStatusNotifier::slotMailCount( int unread_mail, int new_mail )
{
setUnreadMail( unread_mail );
setMailCount( unread_mail, new_mail );
}

View File

@@ -122,11 +122,12 @@ class SysTrayXStatusNotifier : public KStatusNotifierItem
void setNumberMargins( QMargins margins );
/**
* @brief setUnreadMail. Set the number of unread mails.
* @brief setMailCount. Set the number of unread/new mails.
*
* @param unread_mail The number of unread mails.
* @param new_mail The number of new mails.
*/
void setUnreadMail( int unread_mail );
void setMailCount( int unread_mail, int new_mail );
private:
@@ -150,11 +151,12 @@ class SysTrayXStatusNotifier : public KStatusNotifierItem
public slots:
/**
* @brief slotSetUnreadMail. Slot for handling unread mail signals.
* @brief slotMailCount. Slot for handling unread/new mail signals.
*
* @param unread_mail The number of unread mails.
* @param new_mail The number of new mails.
*/
void slotSetUnreadMail( int unread_mail );
void slotMailCount( int unread_mail, int new_mail );
/**
* @brief slotDefaultIconTypeChange. Slot for handling default icon type change signals.
@@ -276,17 +278,17 @@ class SysTrayXStatusNotifier : public KStatusNotifierItem
QByteArray m_icon_data;
/**
* @brief m_show_number. Show the unread mail count.
* @brief m_show_number. Show the unread/new mail count.
*/
bool m_show_number;
/**
* @brief m_number_color. Color of the unread mail number.
* @brief m_number_color. Color of the unread/new mail number.
*/
QString m_number_color;
/**
* @brief m_number_size. Size of the unread mail number.
* @brief m_number_size. Size of the unread/new mail number.
*/
int m_number_size;
@@ -304,6 +306,11 @@ class SysTrayXStatusNotifier : public KStatusNotifierItem
* @brief m_unread_mail. Storage for the number of unread mails.
*/
int m_unread_mail;
/**
* @brief m_new_mail. Storage for the number of new mails.
*/
int m_new_mail;
};
#endif // SYSTRAYXSTATUSNOTIFIER_H

View File

@@ -147,17 +147,10 @@ SysTrayX.Messaging = {
SysTrayX.Messaging.listenerFolderDeleted
);
if (SysTrayX.Messaging.countType === "0") {
// Get the unread count
const getCountUnreadPromise = () =>
new Promise((res) => res(SysTrayX.Messaging.countUnread()));
await getCountUnreadPromise();
} else {
// Update new count
const getCountNewPromise = () =>
new Promise((res) => res(SysTrayX.Messaging.countNew()));
await getCountNewPromise();
}
// Get the mail count
const getCountPromise = () =>
new Promise((res) => res(SysTrayX.Messaging.countMail()));
await getCountPromise();
// Set count listener
browser.folders.onFolderInfoChanged.addListener(
@@ -200,10 +193,7 @@ SysTrayX.Messaging = {
// );
}
if (SysTrayX.Messaging.countType === "1") {
getNewMailCount();
// console.debug("listenerNewMail: New count");
}
getMailCount();
},
listenerFolderCreated: function (createdFolder) {
@@ -248,38 +238,32 @@ SysTrayX.Messaging = {
SysTrayX.Messaging.unread[folder.accountId][folder.path] =
folderInfo.unreadMessageCount;
if (SysTrayX.Messaging.countType === "0") {
getUnreadMailCount();
// console.debug("listenerFolderInfoChanged: Unread count");
} else {
// Check if the new mails have been read, remove from new storage
const messages = SysTrayX.Messaging.new[folder.accountId][folder.path];
// Check if the new mails have been read, remove from new storage
const messages = SysTrayX.Messaging.new[folder.accountId][folder.path];
if (messages.length > 0) {
const newMessages = [];
for (let i = 0; i < messages.length; ++i) {
const message = messages[i];
if (messages.length > 0) {
const newMessages = [];
for (let i = 0; i < messages.length; ++i) {
const message = messages[i];
const getHeaderPromise = (messageId) =>
new Promise((res) => res(messenger.messages.get(messageId)));
const header = await getHeaderPromise(message.id);
const getHeaderPromise = (messageId) =>
new Promise((res) => res(messenger.messages.get(messageId)));
const header = await getHeaderPromise(message.id);
if (!header.read) {
newMessages.push(message);
}
if (!header.read) {
newMessages.push(message);
}
SysTrayX.Messaging.new[folder.accountId][folder.path] = [
...newMessages,
];
getNewMailCount();
// console.debug("listenerFolderInfoChanged: New count");
}
SysTrayX.Messaging.new[folder.accountId][folder.path] = [
...newMessages,
];
}
getMailCount();
}
},
countUnread: async function () {
countMail: async function () {
for (const filter of SysTrayX.Messaging.filters) {
for (const path of filter.folders) {
const folder = {
@@ -300,40 +284,6 @@ SysTrayX.Messaging = {
SysTrayX.Messaging.unread[folder.accountId] = {};
}
SysTrayX.Messaging.unread[folder.accountId][folder.path] =
mailFolderInfo.unreadMessageCount;
}
}
}
let count = 0;
Object.keys(SysTrayX.Messaging.unread).forEach((key) =>
Object.keys(SysTrayX.Messaging.unread[key]).forEach(
(path) => (count = count + SysTrayX.Messaging.unread[key][path])
)
);
//console.debug("countUnread: " + count);
SysTrayX.Link.postSysTrayXMessage({ unreadMail: count });
},
countNew: async function () {
for (const filter of SysTrayX.Messaging.filters) {
for (const path of filter.folders) {
const folder = {
accountId: filter.accountId,
path: path,
};
let mailFolderInfo = {};
try {
mailFolderInfo = await browser.folders.getFolderInfo(folder);
} catch (err) {
console.debug("Filter error: " + err);
console.debug("Filter error: " + JSON.stringify(folder));
}
if (mailFolderInfo.unreadMessageCount !== undefined) {
if (SysTrayX.Messaging.new[folder.accountId] === undefined) {
SysTrayX.Messaging.new[folder.accountId] = {};
}
@@ -344,21 +294,29 @@ SysTrayX.Messaging = {
SysTrayX.Messaging.new[folder.accountId][folder.path] = [];
}
// SysTrayX.Messaging.unread[folder.accountId][folder.path] =
// mailFolderInfo.unreadMessageCount;
SysTrayX.Messaging.unread[folder.accountId][folder.path] =
mailFolderInfo.unreadMessageCount;
}
}
}
let count = 0;
Object.keys(SysTrayX.Messaging.new).forEach((key) =>
Object.keys(SysTrayX.Messaging.new[key]).forEach(
(path) => (count = count + SysTrayX.Messaging.new[key][path].length)
let unreadCount = 0;
Object.keys(SysTrayX.Messaging.unread).forEach((key) =>
Object.keys(SysTrayX.Messaging.unread[key]).forEach(
(path) => (unreadCount = unreadCount + SysTrayX.Messaging.unread[key][path])
)
);
//console.debug("countNew: " + count);
SysTrayX.Link.postSysTrayXMessage({ unreadMail: count });
let newCount = 0;
Object.keys(SysTrayX.Messaging.new).forEach((key) =>
Object.keys(SysTrayX.Messaging.new[key]).forEach(
(path) => (newCount = newCount + SysTrayX.Messaging.new[key][path].length)
)
);
//console.debug("countMail: " + unreadCount + ", " + newCount);
SysTrayX.Link.postSysTrayXMessage( { mailCount: { unread: unreadCount, new: newCount } } );
},
onCloseButton: function () {
@@ -384,11 +342,7 @@ SysTrayX.Messaging = {
if (SysTrayX.Info.browserInfo.majorVersion < 91) {
browser.folderChange.setFilters(SysTrayX.Messaging.filters);
} else {
if (SysTrayX.Messaging.countType === "0") {
getUnreadMailCount();
} else {
getNewMailCount();
}
getMailCount();
}
}
@@ -414,11 +368,7 @@ SysTrayX.Messaging = {
if (SysTrayX.Info.browserInfo.majorVersion < 91) {
browser.folderChange.setCountType(Number(SysTrayX.Messaging.countType));
} else {
if (SysTrayX.Messaging.countType === "0") {
getUnreadMailCount();
} else {
getNewMailCount();
}
getMailCount();
}
}
@@ -440,7 +390,7 @@ SysTrayX.Messaging = {
//
unreadCb: function (count) {
//console.debug("unreadCb: " + count);
SysTrayX.Link.postSysTrayXMessage({ unreadMail: count });
SysTrayX.Link.postSysTrayXMessage( { mailCount: { unread: count, new: 0 } } );
},
//
@@ -707,7 +657,7 @@ SysTrayX.Link = {
postSysTrayXMessage: function (object) {
// Send object (will be stringified by postMessage)
//console.debug("postSysTrayXMessage: " + JSON.stringify(object));
console.debug("postSysTrayXMessage: " + JSON.stringify(object));
SysTrayX.Link.portSysTrayX.postMessage(object);
},
@@ -914,9 +864,7 @@ SysTrayX.Window = {
] = [];
}
if (SysTrayX.Messaging.countType === "1") {
getNewMailCount();
}
getMailCount();
}
SysTrayX.Messaging.displayedFolder = displayedFolder;

View File

@@ -371,33 +371,22 @@ async function addFolderToFilters(newFolder) {
}
}
// Count the unread mail
const getUnreadMailCount = () => {
let count = 0;
// Count the unread and new mails
const getMailCount = () => {
let unreadCount = 0;
let newCount = 0;
SysTrayX.Messaging.filters.forEach((filter) => {
const accountId = filter.accountId;
filter.folders.forEach((path) => {
if (SysTrayX.Messaging.unread[accountId] !== undefined) {
if (SysTrayX.Messaging.unread[accountId][path] !== undefined) {
count = count + SysTrayX.Messaging.unread[accountId][path];
unreadCount = unreadCount + SysTrayX.Messaging.unread[accountId][path];
}
}
});
});
//console.debug("getUnreadMailCount: " + count);
SysTrayX.Link.postSysTrayXMessage({ unreadMail: count });
};
// Count the new mail
const getNewMailCount = () => {
let count = 0;
SysTrayX.Messaging.filters.forEach((filter) => {
const accountId = filter.accountId;
filter.folders.forEach((path) => {
if (SysTrayX.Messaging.new[accountId] !== undefined) {
if (SysTrayX.Messaging.new[accountId][path] !== undefined) {
count = count + SysTrayX.Messaging.new[accountId][path].length;
newCount = newCount + SysTrayX.Messaging.new[accountId][path].length;
}
}
});
@@ -406,6 +395,6 @@ const getNewMailCount = () => {
//console.debug("Filters: " + JSON.stringify(SysTrayX.Messaging.filters));
//console.debug("New: " + JSON.stringify(SysTrayX.Messaging.new));
//console.debug("getNewMailCount: " + count);
SysTrayX.Link.postSysTrayXMessage({ unreadMail: count });
//console.debug("getMailCount: " + unreadCount + ", " + newCount);
SysTrayX.Link.postSysTrayXMessage( { mailCount: { unread: unreadCount, new: newCount } } );
};