]> code.delx.au - offlineimap/blobdiff - offlineimap/accounts.py
Checkpointing work on mailbox deletion
[offlineimap] / offlineimap / accounts.py
index 9f224d03d943cf10747aec8cba692fa56429883d..fe536a7e54f01c2ac93aa9b24fd57089651caf1e 100644 (file)
@@ -95,6 +95,16 @@ class Account(CustomConfig.ConfigHelperMixin):
             return sleepresult
             
 class AccountSynchronizationMixin:
+    def __init__(self, config, name, folderhash, folderhashlock):
+        Account.__init__(self, config, name)
+        self.folderhash = folderhash
+        self.folderhashlock = folderhashlock
+        self.folderhashlock.acquire()
+        try:
+            self.folderhash[name] = {}
+        finally:
+            self.folderhashlock.release()
+
     def syncrunner(self):
         self.ui.registerthread(self.name)
         self.ui.acct(self.name)
@@ -109,6 +119,18 @@ class AccountSynchronizationMixin:
 
         # Connect to the local cache.
         self.statusrepos = offlineimap.repository.LocalStatus.LocalStatusRepository(self.getconf('localrepository'), self)
+
+        # FIXME: need new UI here?
+        self.ui.syncfolders(self.remoterepos, self.localrepos)
+        srcfolders = self.remoterepos.getfolders()
+        destfolders = self.localrepos.getfolders()
+
+        self.folderhashlock.acquire()
+        try:
+            self.folderhash[name] = {'src': srcfolders, 'dest': destfolders}
+            self.folderhash['___sem'].release()
+        finally:
+            self.folderhashlock.release()
             
         if not self.refreshperiod:
             self.sync()
@@ -145,7 +167,7 @@ class AccountSynchronizationMixin:
             localrepos = self.localrepos
             statusrepos = self.statusrepos
             self.ui.syncfolders(remoterepos, localrepos)
-            remoterepos.syncfoldersto(localrepos)
+            remoterepos.syncfoldersto(localrepos, [statusrepos])
 
             folderthreads = []
             for remotefolder in remoterepos.getfolders():