]> err.no Git - scalable-opengroupware.org/commitdiff
implemented getMail
authorhelge <helge@d1b88da0-ebda-0310-925b-ed51d893ca5b>
Tue, 9 Nov 2004 14:21:22 +0000 (14:21 +0000)
committerhelge <helge@d1b88da0-ebda-0310-925b-ed51d893ca5b>
Tue, 9 Nov 2004 14:21:22 +0000 (14:21 +0000)
git-svn-id: http://svn.opengroupware.org/SOGo/trunk@447 d1b88da0-ebda-0310-925b-ed51d893ca5b

SOGo/SoObjects/Mailer/ChangeLog
SOGo/SoObjects/Mailer/SOGoMailBaseObject.h
SOGo/SoObjects/Mailer/SOGoMailBaseObject.m
SOGo/SoObjects/Mailer/SOGoMailConnectionEntry.h
SOGo/SoObjects/Mailer/SOGoMailConnectionEntry.m
SOGo/SoObjects/Mailer/SOGoMailManager.h
SOGo/SoObjects/Mailer/SOGoMailManager.m
SOGo/SoObjects/Mailer/Version
SOGo/UI/Mailer/ChangeLog
SOGo/UI/Mailer/UIxMailListView.m
SOGo/UI/Mailer/Version

index 76e292407fc2dbf6b7ea10e99b1737f297f257af..1d7f9be3c9c225470b6c99bfd5b68cb735db87f1 100644 (file)
@@ -1,3 +1,12 @@
+2004-11-09  Helge Hess  <helge.hess@skyrix.com>
+
+       * SOGoMailBaseObject.m, SOGoMailManager.m, SOGoMailConnectionEntry.m:
+         added cache flush operations for getmail (v0.9.49)
+
+2004-11-08  Helge Hess  <helge.hess@skyrix.com>
+
+       * SOGoMailManager.m: improved a log message (v0.9.48)
+
 2004-10-30  Helge Hess  <helge.hess@skyrix.com>
 
        * v0.9.47
index 1ca8d15ea4cfa8443e076db469f52e316e04642f..4be1129d166c153649d495db68de974ba4267367 100644 (file)
@@ -55,6 +55,8 @@
 - (NSString *)imap4FolderName;
 - (NGImap4Client *)imap4Client;
 
+- (void)flushMailCaches;
+
 /* UI navigation */
 
 - (NSArray *)treeNavigationNodes;
index a6b8f63150b6c193f5dc28f6dec96eee60142f47..37a3a5558534ea79e5e4846bdcde8e50767de97c 100644 (file)
@@ -140,6 +140,10 @@ static BOOL debugTree = NO;
               password:[self imap4Password]];
 }
 
+- (void)flushMailCaches {
+  [[self mailManager] flushCachesForURL:[self imap4URL]];
+}
+
 /* UI navigation */
 
 - (NSString *)treeNavigationLinkAtDepth:(int)_depth {
index c8fd0f394b6168055edfe13cbe54fbeb6bb69c5c..4b8a90175198d12e2c8255ca04785f2275d19bf4 100644 (file)
@@ -64,6 +64,8 @@
 - (void)cacheUIDs:(NSArray *)_uids forURL:(NSURL *)_url
   qualifier:(id)_q sortOrdering:(id)_so;
 
+- (void)flushMailCaches;
+
 @end
 
 #endif /* __SOGo_SOGoMailConnectionEntry_H__ */
index 1ea7e948a26755667b4ddce18a08c5f521c12d10..9875bd9d4def0fc3ba49660cfe28e17cd0b1e19e 100644 (file)
   ASSIGNCOPY(self->cachedUIDs,      _uids);
 }
 
+- (void)flushMailCaches {
+  ASSIGNCOPY(self->uidSortOrdering, nil);
+  ASSIGNCOPY(self->uidFolderURL,    nil);
+  ASSIGNCOPY(self->cachedUIDs,      nil);
+}
+
 @end /* SOGoMailConnectionEntry */
index 8395caa22ed9345acb8c427b17b9901c56ee6adc..4c5acedff5e6e424f693f66b11cfc22473592c28 100644 (file)
@@ -46,6 +46,7 @@
 /* client object */
 
 - (NGImap4Client *)imap4ClientForURL:(NSURL *)_url password:(NSString *)_pwd;
+- (void)flushCachesForURL:(NSURL *)_url;
 
 /* folder hierarchy */
 
index 82e5ecd9217c809938c33714a541eb670aea0ec5..0234180a4274f851ef5acf69fad864e644e23b69 100644 (file)
@@ -47,7 +47,8 @@ static NSString       *imap4Separator  = nil;
   imap4Separator = [[ud stringForKey:@"SOGoIMAP4StringSeparator"] copy];
   if ([imap4Separator length] == 0)
     imap4Separator = @"/";
-  NSLog(@"Note: using '%@' as the IMAP4 folder separator.", imap4Separator);
+  NSLog(@"Note(SOGoMailManager): using '%@' as the IMAP4 folder separator.", 
+       imap4Separator);
 }
 
 + (id)defaultMailManager {
@@ -197,6 +198,16 @@ static NSString       *imap4Separator  = nil;
   return client;
 }
 
+- (void)flushCachesForURL:(NSURL *)_url {
+  SOGoMailConnectionEntry *entry;
+  
+  if ((entry = [self entryForURL:_url]) == nil) /* nothing cached */
+    return;
+  
+  [entry flushFolderHierarchyCache];
+  [entry flushMailCaches];
+}
+
 /* folder hierarchy */
 
 - (NSArray *)_getDirectChildren:(NSArray *)_array folderName:(NSString *)_fn {
@@ -564,7 +575,7 @@ static NSString       *imap4Separator  = nil;
     return [NSException exceptionWithHTTPStatus:500 /* server error */
                        reason:[result valueForKey:@"reason"]];
   }
-
+  
   [entry flushFolderHierarchyCache];
   // [self debugWithFormat:@"created mailbox: %@: %@", newPath, result];
   return nil;
index 89add11fbed14907b7ddc2902b28b5e27088e181..e3b5ed0933aed736c8e21133ed4b317b083f1404 100644 (file)
@@ -1,6 +1,6 @@
 # Version file
 
-SUBMINOR_VERSION:=46
+SUBMINOR_VERSION:=49
 
 # v0.9.44 requires NGMime    v4.3.194
 # v0.9.41 requires NGMime    v4.3.190
index 743d3e079bcfefd999111bd21a6f13eabb0a6f89..cb81e431bb4a3dc917ffc8971b8b073b65a7697a 100644 (file)
@@ -1,3 +1,7 @@
+2004-11-09  Helge Hess  <helge.hess@skyrix.com>
+
+       * UIxMailListView.m: flush mail caches in the getMail action (v0.9.58)
+
 2004-10-29  Helge Hess  <helge.hess@skyrix.com>
 
        * UIxMailEditor.m: reenabled deletion of temporary mail files (v0.9.57)
index dfd8d395b241b0189d852ba8aa244b1dae795df7..afc2e65983c33259010e61c85923a282026c2856 100644 (file)
 */
 // $Id$
 
-
 #include <SOGoUI/UIxComponent.h>
 
+/*
+  UIxMailListView
+  
+  This component represent a list of mails and is attached to an SOGoMailFolder
+  object.
+*/
+
 @interface UIxMailListView : UIxComponent
 {
   NSArray  *sortedUIDs; /* we always need to retrieve all anyway! */
@@ -361,6 +367,20 @@ static int attachmentFlagSize = 8096;
 
 - (id)getMailAction {
   // TODO: we might want to flush the caches?
+  id client;
+  
+  if ((client = [self clientObject]) == nil) {
+    return [NSException exceptionWithHTTPStatus:404 /* Not Found */
+                       reason:@"did not find mail folder"];
+  }
+  
+  if (![client respondsToSelector:@selector(flushMailCaches)]) {
+    return [NSException exceptionWithHTTPStatus:500 /* Server Error */
+                       reason:
+                         @"invalid client object (does not support flush)"];
+  }
+  
+  [client flushMailCaches];
   return [self redirectToLocation:@"view"];
 }
 
index 120c434f6b15cf8b768e3d778837660059cc0d0a..6b08a245bb66937668b4d318d5f2bf86f347d608 100644 (file)
@@ -1,6 +1,6 @@
 # $Id$
 
-SUBMINOR_VERSION:=57
+SUBMINOR_VERSION:=58
 
 # v0.9.50 requires NGMime   v4.3.190
 # v0.9.43 requires NGObjWeb v4.3.73