Репозитории ALT
S: | 3.4.2-alt1 |
5.1: | 1.2.38pre1-alt1 |
4.1: | 1.2.35-alt2.1 |
4.0: | 1.2.32-alt2.1 |
3.0: | 1.2.23-alt1 |
+backports: | 1.2.30-alt1.M30.1 |
Группа :: Графические оболочки/Icewm
Пакет: icewm
Главная Изменения Спек Патчи Sources Загрузить Gear Bugs and FR Repocop
Патч: icewm-alt-mailbox.patch
Скачать
Скачать
icewm/src/amailbox.cc | 26 ++++++++++++++++++++------
icewm/src/amailbox.h | 1 +
2 files changed, 21 insertions(+), 6 deletions(-)
diff --git a/icewm/src/amailbox.cc b/icewm/src/amailbox.cc
index 201495c..b7d2675 100644
--- a/icewm/src/amailbox.cc
+++ b/icewm/src/amailbox.cc
@@ -265,7 +265,7 @@ void MailCheck::socketDataRead(char *buf, int len) {
state = WAIT_USER;
delete[] login;
} else if (state == WAIT_USER) {
- MSG(("imap: status"));
+ MSG(("imap: messagecount"));
char * status(strJoin("0001 STATUS ",
fURL.path() ? fURL.path() + 1 : "INBOX",
" (MESSAGES)\r\n", NULL));
@@ -273,15 +273,29 @@ void MailCheck::socketDataRead(char *buf, int len) {
state = WAIT_STAT;
delete[] status;
} else if (state == WAIT_STAT) {
- MSG(("imap: logout"));
- char logout[] = "0002 LOGOUT\r\n", folder[128];
+ MSG(("imap: unseen"));
+ char folder[128];
if (sscanf(bf, "* STATUS %127s (MESSAGES %lu)",
folder, &fCurCount) != 2) {
fCurCount = 0;
}
- fCurUnseen = 0;
+ char * unseen(strJoin("0002 STATUS ",
+ fURL.path() ? fURL.path() + 1 : "INBOX",
+ " (UNSEEN)\r\n", NULL));
+ sk.write(unseen, strlen(unseen));
+ state = WAIT_UNSEEN;
+ delete[] unseen;
+ } else if (state == WAIT_UNSEEN) {
+ MSG(("imap: logout"));
+ char * logout(strJoin("0003 LOGOUT\r\n", NULL));
+ char folder[128];
+ if (sscanf(bf, "* STATUS %127s (UNSEEN %lu)",
+ folder, &fCurUnseen) != 2) {
+ fCurUnseen = 0;
+ }
sk.write(logout, strlen(logout));
state = WAIT_QUIT;
+ delete[] logout;
} else if (state == WAIT_QUIT) {
MSG(("imap: done"));
//app->exit(0);
@@ -289,9 +303,9 @@ void MailCheck::socketDataRead(char *buf, int len) {
state = SUCCESS;
if (fCurCount == 0)
fMbx->mailChecked(MailBoxStatus::mbxNoMail, fCurCount);
- else if (fCurCount > fLastCount && fLastCount != -1)
+ else if (fCurCount > 0 && fCurUnseen > 0)
fMbx->mailChecked(MailBoxStatus::mbxHasNewMail, fCurCount);
- else if (fCurUnseen != 0)
+ else if (fCurUnseen > 0)
fMbx->mailChecked(MailBoxStatus::mbxHasUnreadMail, fCurCount);
else
fMbx->mailChecked(MailBoxStatus::mbxHasMail, fCurCount);
diff --git a/icewm/src/amailbox.h b/icewm/src/amailbox.h
index af8dc7a..6e67344 100644
--- a/icewm/src/amailbox.h
+++ b/icewm/src/amailbox.h
@@ -25,6 +25,7 @@ public:
WAIT_USER,
WAIT_PASS,
WAIT_STAT,
+ WAIT_UNSEEN,
WAIT_QUIT,
ERROR,
SUCCESS