00001 #include "statusmail.h" 00002 00003 #include <opie2/odebug.h> 00004 00005 using namespace Opie::Core; 00006 00007 StatusMail::StatusMail(QList<Account>&list) 00008 { 00009 currentImapStat.message_count=0; 00010 currentImapStat.message_unseen=0; 00011 currentImapStat.message_recent=0; 00012 lastPop3Stat = currentImapStat; 00013 currentPop3Stat = currentImapStat; 00014 connectionList.setAutoDelete(true); 00015 connectionList.clear(); 00016 initAccounts(list); 00017 } 00018 00019 StatusMail::~StatusMail() 00020 { 00021 } 00022 00023 void StatusMail::initAccounts(QList<Account>&accounts) 00024 { 00025 00026 Account *it; 00027 folderStat currentStat; 00028 AbstractMail * current = 0; 00029 currentPop3Stat.message_count=0; 00030 currentPop3Stat.message_recent=0; 00031 currentPop3Stat.message_unseen=0; 00032 for ( it = accounts.first(); it; it = accounts.next() ) { 00033 if ( it->getType()==MAILLIB::A_IMAP && !it->getOffline() ) { 00034 IMAPaccount*ima = static_cast<IMAPaccount *>(it); 00035 current = AbstractMail::getWrapper(ima); 00036 connectionList.append(current); 00037 current->statusFolder(currentStat); 00038 currentImapStat.message_count+=currentStat.message_unseen; 00039 currentImapStat.message_count+=currentStat.message_recent; 00040 currentImapStat.message_count+=currentStat.message_count; 00041 } else if ( it->getType() == MAILLIB::A_POP3 && !it->getOffline() ) { 00042 POP3account *pop3 = static_cast<POP3account *>(it); 00043 current = AbstractMail::getWrapper(pop3); 00044 connectionList.append(current); 00045 current->statusFolder(currentStat); 00046 currentPop3Stat.message_count+=currentStat.message_count; 00047 } 00048 current->logout(); 00049 } 00050 odebug << "Pop3 init count: " << currentPop3Stat.message_count << "" << oendl; 00051 currentPop3Stat.message_recent = currentPop3Stat.message_unseen = 0; 00052 lastPop3Stat.message_unseen = currentPop3Stat.message_unseen; 00053 lastPop3Stat.message_recent = currentPop3Stat.message_recent; 00054 lastPop3Stat.message_count = currentPop3Stat.message_count; 00055 } 00056 00057 void StatusMail::reset_status() 00058 { 00059 lastPop3Stat = currentPop3Stat; 00060 } 00061 00062 void StatusMail::check_current_stat(folderStat&targetStat) 00063 { 00064 AbstractMail*it = 0; 00065 folderStat currentStat; 00066 currentPop3Stat.message_recent = 0; 00067 currentPop3Stat.message_count = 0; 00068 currentPop3Stat.message_unseen = 0; 00069 currentImapStat = currentPop3Stat; 00070 for ( it = connectionList.first(); it; it = connectionList.next() ) { 00071 it->statusFolder(currentStat); 00072 it->logout(); 00073 if (it->getType() == MAILLIB::A_IMAP) { 00074 currentImapStat.message_unseen+=currentStat.message_unseen; 00075 currentImapStat.message_recent+=currentStat.message_recent; 00076 currentImapStat.message_count+=currentStat.message_count; 00077 } else if (it->getType() == MAILLIB::A_POP3) { 00078 currentPop3Stat.message_count+=currentStat.message_count; 00079 odebug << "Pop3 count: " << currentPop3Stat.message_count << "" << oendl; 00080 } 00081 } 00082 odebug << "Pop3 last: " << lastPop3Stat.message_count << "" << oendl; 00083 00084 #if 0 00085 if (currentPop3Stat.message_count > lastPop3Stat.message_count) { 00086 currentPop3Stat.message_recent = currentPop3Stat.message_count - lastPop3Stat.message_count; 00087 currentPop3Stat.message_unseen = currentPop3Stat.message_recent; 00088 } else { 00089 lastPop3Stat.message_count = currentPop3Stat.message_count; 00090 currentPop3Stat.message_recent = currentPop3Stat.message_unseen = 0; 00091 } 00092 #else 00093 currentPop3Stat.message_recent = currentPop3Stat.message_unseen=currentPop3Stat.message_count; 00094 #endif 00095 00096 targetStat = currentImapStat; 00097 targetStat.message_unseen+=currentPop3Stat.message_unseen; 00098 targetStat.message_recent+=currentPop3Stat.message_recent; 00099 targetStat.message_count+=currentPop3Stat.message_count; 00100 }
1.4.2