Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37858230
en ru br
Репозитории 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
www.altlinux.org/Changes

Группа :: Графические оболочки/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
 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin