]> code.delx.au - offlineimap/commitdiff
Merge branch 'master' of http://git.complete.org/offlineimap master
authorJames Bunton <James Bunton jamesbunton@fastmail.fm>
Mon, 13 Jul 2009 12:29:43 +0000 (22:29 +1000)
committerJames Bunton <James Bunton jamesbunton@fastmail.fm>
Mon, 13 Jul 2009 12:29:43 +0000 (22:29 +1000)
1  2 
offlineimap/accounts.py

diff --combined offlineimap/accounts.py
index 7a20c37908168f59c19c8ee4959b2a102c2a9365,f0f19e4c8712baa2bbdbafac547844997d30c9e0..a4933960d817dbad4c813130af78c9ba874f1952
@@@ -37,9 -37,9 +37,9 @@@ class SigListener(Queue)
                      # folders haven't yet been added, or this account is once-only; drop signal
                      return
                  elif self.folders:
-                     for folder in self.folders:
+                     for foldernr in range(len(self.folders)):
                          # requeue folder
-                         self.folders[folder] = True
+                         self.folders[foldernr][1] = True
                      self.quick = False
                      return
                  # else folders have already been cleared, put signal...
      def addfolders(self, remotefolders, autorefreshes, quick):
          self.folderlock.acquire()
          try:
-             self.folders = {}
+             self.folders = []
              self.quick = quick
              self.autorefreshes = autorefreshes
              for folder in remotefolders:
                  # new folders are queued
-                 self.folders[folder] = True
+                 self.folders.append([folder, True])
          finally:
              self.folderlock.release()
      def clearfolders(self):
          self.folderlock.acquire()
          try:
-             for folder in self.folders:
-                 if self.folders[folder]:
+             for folder, queued in self.folders:
+                 if queued:
                      # some folders still in queue
                      return False
-             self.folders.clear()
+             self.folders[:] = []
              return True
          finally:
              self.folderlock.release()
              dirty = True
              while dirty:
                  dirty = False
-                 for folder in self.folders:
-                     if self.folders[folder]:
+                 for foldernr, (folder, queued) in enumerate(self.folders):
+                     if queued:
                          # mark folder as no longer queued
-                         self.folders[folder] = False
+                         self.folders[foldernr][1] = False
                          dirty = True
                          quick = self.quick
                          self.folderlock.release()
@@@ -109,6 -109,7 +109,7 @@@ class Account(CustomConfig.ConfigHelper
          self.localeval = config.getlocaleval()
          self.ui = UIBase.getglobalui()
          self.refreshperiod = self.getconffloat('autorefresh', 0.0)
+         self.quickrefreshcount = self.getconfint('quick', 0)
          self.quicknum = 0
          if self.refreshperiod == 0.0:
              self.refreshperiod = None
  
          for item in kaobjs:
              item.startkeepalive()
-         
-         refreshperiod = int(self.refreshperiod * 60)
+         sleeptime = int(self.refreshperiod * 60)
+         if (self.quickrefreshcount > 0):
+             sleeptime = int(sleeptime / self.quickrefreshcount)
  #         try:
  #             sleepresult = siglistener.get_nowait()
  #             # retrieved signal before sleep started
  #                 # catching signal 1 here means folders were cleared before signal was posted
  #                 pass
  #         except Empty:
- #             sleepresult = self.ui.sleep(refreshperiod, siglistener)
-         sleepresult = self.ui.sleep(refreshperiod, siglistener)
+ #             sleepresult = self.ui.sleep(sleeptime, siglistener)
+         sleepresult = self.ui.sleep(sleeptime, siglistener)
          if sleepresult == 1:
              self.quicknum = 0
  
@@@ -237,7 -241,6 +241,7 @@@ class AccountSynchronizationMixin
                  threadutil.threadsreset(folderthreads)
                  if siglistener.clearfolders():
                      break
 +            mbnames.sort(self.name, remoterepos.foldersort)
              mbnames.write()
              localrepos.forgetfolders()
              remoterepos.forgetfolders()