Update of /cvsroot/mahogany/M/src/mail
In directory usw-pr-cvs1:/tmp/cvs-serv741/src/mail
Modified Files:
ASMailFolder.cpp MailFolder.cpp MailFolderCC.cpp
MailFolderCmn.cpp
Added Files:
VFolder.cpp
Log Message:
more MailFolder refactoring and added (untested and unused) VirtualFolder class
***** Error reading new file: [Errno 2] No such file or directory: 'VFolder.cpp'
Index: ASMailFolder.cpp
===================================================================
RCS file: /cvsroot/mahogany/M/src/mail/ASMailFolder.cpp,v
retrieving revision 1.63
retrieving revision 1.64
diff -b -u -2 -r1.63 -r1.64
--- ASMailFolder.cpp 14 Jul 2002 23:41:22 -0000 1.63
+++ ASMailFolder.cpp 16 Jul 2002 20:21:43 -0000 1.64
@@ -227,11 +227,35 @@
{
public:
- // passing empty sequence string means that we set flag for all messages
- MT_SetSequenceFlag(ASMailFolder *mf, UserData ud,
- const String &sequence,
+ MT_SetSequenceFlag(ASMailFolder *mf,
+ UserData ud,
+ MailFolder::SequenceKind kind,
+ const Sequence& sequence,
+ int flag, bool set)
+ : MailThread(mf, ud), m_Sequence(sequence)
+ {
+ m_Kind = kind;
+ m_Flag = flag;
+ m_Set = set;
+ }
+ virtual void WorkFunction(void)
+ {
+ m_MailFolder->SetSequenceFlag(m_Kind, m_Sequence, m_Flag, m_Set);
+ }
+
+protected:
+ const Sequence m_Sequence;
+ MailFolder::SequenceKind m_Kind;
+ int m_Flag;
+ bool m_Set;
+};
+
+class MT_SetFlagForAll : public MailThread
+{
+public:
+ MT_SetFlagForAll(ASMailFolder *mf,
+ UserData ud,
int flag, bool set)
: MailThread(mf, ud)
{
- m_Sequence = sequence;
m_Flag = flag;
m_Set = set;
@@ -239,12 +263,8 @@
virtual void WorkFunction(void)
{
- if ( m_Sequence.empty() )
m_MailFolder->SetFlagForAll(m_Flag, m_Set);
- else
- m_MailFolder->SetSequenceFlag(m_Sequence, m_Flag, m_Set);
}
protected:
- String m_Sequence;
int m_Flag;
bool m_Set;
@@ -721,6 +741,5 @@
virtual Ticket SetFlagForAll(int flag, bool set = true)
{
- // passing empty string means that we set it for all messages
- return (new MT_SetSequenceFlag(this, NULL, "", flag, set))->Start();
+ return (new MT_SetFlagForAll(this, NULL, flag, set))->Start();
}
@@ -730,10 +749,11 @@
@param set if true, set the flag, if false, clear it
*/
- virtual Ticket SetSequenceFlag(const UIdArray *sequence,
+ virtual Ticket SetSequenceFlag(MailFolder::SequenceKind kind,
+ const Sequence& sequence,
int flag,
bool set)
{
return (new MT_SetSequenceFlag(this, NULL,
-
GetSequenceString(sequence),flag,set))->Start();
+ kind,sequence,flag,set))->Start();
}
@@ -782,5 +802,4 @@
bool read)
{
- //return SetFlag(selections, MailFolder::MSG_STAT_SEEN, read);
return (new MT_MarkRead(this, ud, selections, read))->Start();
}
@@ -825,8 +844,8 @@
int flag, bool set)
{
- UIdArray *ia = new UIdArray;
- ia->Add(uid);
- SetSequenceFlag(ia, flag, set);
- delete ia;
+ UIdArray ua;
+ ua.Add(uid);
+
+ SetFlag(&ua, flag, set);
}
//@}
Index: MailFolder.cpp
===================================================================
RCS file: /cvsroot/mahogany/M/src/mail/MailFolder.cpp,v
retrieving revision 1.285
retrieving revision 1.286
diff -b -u -2 -r1.285 -r1.286
--- MailFolder.cpp 15 Jul 2002 16:32:14 -0000 1.285
+++ MailFolder.cpp 16 Jul 2002 20:21:44 -0000 1.286
@@ -1075,4 +1075,35 @@
// ----------------------------------------------------------------------------
+// MailFolder flags
+// ----------------------------------------------------------------------------
+
+bool
+MailFolder::SetFlagForAll(int flag, bool set)
+{
+ unsigned long nMessages = GetMessageCount();
+
+ if ( !nMessages )
+ {
+ // no messages to set the flag for
+ return true;
+ }
+
+ Sequence sequence;
+ sequence.AddRange(1, nMessages);
+
+ return SetSequenceFlag(SEQ_MSGNO, sequence, flag, set);
+}
+
+bool MailFolder::SetFlag(const UIdArray *sequence, int flag, bool set)
+{
+ CHECK( sequence, false, "NULL sequence in MailFolder::SetFlag" );
+
+ Sequence seq;
+ seq.AddArray(*sequence);
+
+ return SetSequenceFlag(SEQ_UID, seq, flag, set);
+}
+
+// ----------------------------------------------------------------------------
// misc static MailFolder methods
// ----------------------------------------------------------------------------
Index: MailFolderCC.cpp
===================================================================
RCS file: /cvsroot/mahogany/M/src/mail/MailFolderCC.cpp,v
retrieving revision 1.632
retrieving revision 1.633
diff -b -u -2 -r1.632 -r1.633
--- MailFolderCC.cpp 16 Jul 2002 13:15:48 -0000 1.632
+++ MailFolderCC.cpp 16 Jul 2002 20:21:44 -0000 1.633
@@ -185,7 +185,4 @@
#define TRACE_MF_CALLS "mfcall"
-// turn on logging of events sent by MailFolderCC
-#define TRACE_MF_EVENTS "mfevent"
-
// ----------------------------------------------------------------------------
// global functions prototypes
@@ -3532,11 +3529,16 @@
CHECK( m_MailStream, 0, "SearchByFlag: folder is closed" );
- set->last = mail_uid(m_MailStream, m_nMessages);
if ( flags & SEARCH_UID )
+ {
+ set->last = mail_uid(m_MailStream, m_nMessages);
pgm->uid = set;
- else
+ }
+ else // msgno search
+ {
+ set->last = m_nMessages;
pgm->msgno = set;
}
+ }
return DoSearch(pgm, flags & (SEARCH_UID | SEARCH_MSGNO));
@@ -3631,14 +3633,17 @@
bool
-MailFolderCC::SetSequenceFlag(const String& sequence,
+MailFolderCC::SetMessageFlag(unsigned long uid,
int flag,
bool set)
{
- return DoSetSequenceFlag(SEQ_UID, sequence, flag, set);
+ Sequence seq;
+ seq.Add(uid);
+
+ return SetSequenceFlag(SEQ_UID, seq, flag, set);
}
bool
-MailFolderCC::DoSetSequenceFlag(SequenceKind kind,
- const String& sequence,
+MailFolderCC::SetSequenceFlag(SequenceKind kind,
+ const Sequence& seq,
int flag,
bool set)
@@ -3656,4 +3661,6 @@
String flags = GetImapFlags(flag);
+ const String sequence = seq.GetString();
+
if(PY_CALLBACKVA((set ? MCB_FOLDERSETMSGFLAG : MCB_FOLDERCLEARMSGFLAG,
1, this, this->GetClassName(),
@@ -3668,5 +3675,5 @@
opFlags |= ST_UID;
- CHECK( m_MailStream, 0, "DoSetSequenceFlag: folder is closed" );
+ CHECK( m_MailStream, 0, "SetSequenceFlag: folder is closed" );
wxLogTrace(TRACE_MF_CALLS, "MailFolderCC(%s)::SetFlags(%s) = %s",
@@ -3683,25 +3690,4 @@
}
-bool
-MailFolderCC::SetFlag(const UIdArray *selections, int flag, bool set)
-{
- return SetSequenceFlag(BuildSequence(*selections), flag, set);
-}
-
-bool
-MailFolderCC::SetFlagForAll(int flag, bool set)
-{
- if ( !m_nMessages )
- {
- // no messages to set the flag for
- return true;
- }
-
- Sequence sequence;
- sequence.AddRange(1, m_nMessages);
-
- return DoSetSequenceFlag(SEQ_MSGNO, sequence.GetString(), flag, set);
-}
-
void
MailFolderCC::OnMsgStatusChanged()
@@ -4488,17 +4474,4 @@
m_expungedMsgnos =
m_expungedPositions = NULL;
-}
-
-void
-MailFolderCC::RequestUpdate()
-{
- if ( IsUpdateSuspended() )
- return;
-
- wxLogTrace(TRACE_MF_EVENTS, "Sending FolderUpdate event for folder '%s'",
- GetName().c_str());
-
- // tell all interested that the folder changed
- MEventManager::Send(new MEventFolderUpdateData(this));
}
Index: MailFolderCmn.cpp
===================================================================
RCS file: /cvsroot/mahogany/M/src/mail/MailFolderCmn.cpp,v
retrieving revision 1.98
retrieving revision 1.99
diff -b -u -2 -r1.98 -r1.99
--- MailFolderCmn.cpp 14 Jul 2002 23:41:23 -0000 1.98
+++ MailFolderCmn.cpp 16 Jul 2002 20:21:44 -0000 1.99
@@ -1323,4 +1323,21 @@
// ----------------------------------------------------------------------------
+// MailFolderCmn misc
+// ----------------------------------------------------------------------------
+
+void
+MailFolderCmn::RequestUpdate()
+{
+ if ( IsUpdateSuspended() )
+ return;
+
+ wxLogTrace(TRACE_MF_EVENTS, "Sending FolderUpdate event for folder '%s'",
+ GetName().c_str());
+
+ // tell all interested that the folder changed
+ MEventManager::Send(new MEventFolderUpdateData(this));
+}
+
+// ----------------------------------------------------------------------------
// MFCmnOptions
// ----------------------------------------------------------------------------
@@ -1434,18 +1451,15 @@
-/** Delete a message.
- @param uid mesage uid
- @return true if ok
- */
bool
MailFolderCmn::DeleteMessage(unsigned long uid)
{
- UIdArray a;
- a.Add(uid);
-
- // delete without expunging
- return DeleteMessages(&a);
+ return SetMessageFlag(uid, MSG_STAT_DELETED, true);
}
+bool
+MailFolderCmn::UnDeleteMessage(unsigned long uid)
+{
+ return SetMessageFlag(uid, MSG_STAT_DELETED, false);
+}
bool
@@ -1492,12 +1506,11 @@
MailFolderCmn::DeleteMessages(const UIdArray *selections, bool expunge)
{
- String seq = GetSequenceString(selections);
- if ( seq.empty() )
- {
- // nothing to do
- return true;
- }
+ CHECK( selections, false,
+ "NULL selections in MailFolderCmn::DeleteMessages" );
+
+ Sequence seq;
+ seq.AddArray(*selections);
- bool rc = SetSequenceFlag(seq, MailFolder::MSG_STAT_DELETED);
+ bool rc = SetSequenceFlag(SEQ_UID, seq, MailFolder::MSG_STAT_DELETED);
if ( rc && expunge )
ExpungeMessages();
-------------------------------------------------------
This sf.net email is sponsored by: Jabber - The world's fastest growing
real-time communications platform! Don't just IM. Build it in!
http://www.jabber.com/osdn/xim
_______________________________________________
Mahogany-cvsupdates mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/mahogany-cvsupdates