#! /bin/sh /usr/share/dpatch/dpatch-run ## imap_unseen.dpatch by Alexander Galanin ## ## DP: Debian Bug report logs - #539956 ## DP: [icewm] support for unseen messages on IMAP ## DP: with minor changes by Eduard Bloch @DPATCH@ Index: icewm-1.3.7~pre2/src/amailbox.cc =================================================================== --- icewm-1.3.7~pre2.orig/src/amailbox.cc 2010-04-28 21:00:30.000000000 +0200 +++ icewm-1.3.7~pre2/src/amailbox.cc 2010-04-29 22:11:16.950092518 +0200 @@ -278,14 +278,27 @@ 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 * unseen(cstrJoin("0002 STATUS ", + (fURL->path() == null || fURL->path().equals("/")) ? "INBOX" : cstring(fURL->path()).c_str() + 1, + " (UNSEEN)\r\n", NULL)); + char folder[128] = ""; if (sscanf(bf, "* STATUS %127s (MESSAGES %lu)", folder, &fCurCount) != 2) { fCurCount = 0; } fCurUnseen = 0; - sk.write(logout, strlen(logout)); + sk.write(unseen, strlen(unseen)); + state = WAIT_UNSEEN; + delete [] unseen; + } else if (state == WAIT_UNSEEN) { + MSG(("imap: logout")); + const char logout[] = "0003 LOGOUT\r\n", folder[128] = ""; + if (sscanf(bf, "* STATUS %127s (UNSEEN %lu)", + folder, &fCurUnseen) != 2) { + fCurUnseen = 0; + } + sk.write(logout, sizeof(logout)/sizeof(char)-1); state = WAIT_QUIT; } else if (state == WAIT_QUIT) { MSG(("imap: done")); @@ -294,10 +307,11 @@ state = SUCCESS; if (fCurCount == 0) fMbx->mailChecked(MailBoxStatus::mbxNoMail, fCurCount); - else if (fCurCount > fLastCount && fLastCount != -1) - fMbx->mailChecked(MailBoxStatus::mbxHasNewMail, fCurCount); + // A.Galanin: I think that 'has unseen' flag has priority higher that 'has new' flag else if (fCurUnseen != 0) fMbx->mailChecked(MailBoxStatus::mbxHasUnreadMail, fCurCount); + else if (fCurCount > fLastCount && fLastCount != -1) + fMbx->mailChecked(MailBoxStatus::mbxHasNewMail, fCurCount); else fMbx->mailChecked(MailBoxStatus::mbxHasMail, fCurCount); fLastUnseen = fCurUnseen; Index: icewm-1.3.7~pre2/src/amailbox.h =================================================================== --- icewm-1.3.7~pre2.orig/src/amailbox.h 2010-04-28 21:00:30.000000000 +0200 +++ icewm-1.3.7~pre2/src/amailbox.h 2010-04-29 22:11:16.950092518 +0200 @@ -25,6 +25,7 @@ WAIT_USER, WAIT_PASS, WAIT_STAT, + WAIT_UNSEEN, WAIT_QUIT, ERROR, SUCCESS