Helpviewer/Sync/DirectorySyncHandler.py

changeset 1700
40c911b8c0dd
parent 1695
7b115f986d48
child 1701
9eee32bac32e
diff -r 10706f6ad9d2 -r 40c911b8c0dd Helpviewer/Sync/DirectorySyncHandler.py
--- a/Helpviewer/Sync/DirectorySyncHandler.py	Sun Mar 11 13:04:30 2012 +0100
+++ b/Helpviewer/Sync/DirectorySyncHandler.py	Sun Mar 11 16:46:46 2012 +0100
@@ -9,7 +9,7 @@
 
 import os
 
-from PyQt4.QtCore import pyqtSignal, QByteArray, QFileInfo
+from PyQt4.QtCore import pyqtSignal, QByteArray, QFileInfo, QCoreApplication
 
 from .SyncHandler import SyncHandler
 
@@ -22,16 +22,16 @@
     """
     Class implementing a synchronization handler using a shared directory.
     
-    @signal syncStatus(type_, done, message) emitted to indicate the synchronization
-        status (string one of "bookmarks", "history", "passwords" or "useragents",
-        boolean, string)
+    @signal syncStatus(type_, message) emitted to indicate the synchronization
+        status (string one of "bookmarks", "history", "passwords", "useragents" or
+        "speeddial", string)
     @signal syncError(message) emitted for a general error with the error message (string)
     @signal syncMessage(message) emitted to send a message about synchronization (string)
     @signal syncFinished(type_, done, download) emitted after a synchronization has
-        finished (string one of "bookmarks", "history", "passwords" or "useragents",
-        boolean, boolean)
+        finished (string one of "bookmarks", "history", "passwords", "useragents" or
+        "speeddial", boolean, boolean)
     """
-    syncStatus = pyqtSignal(str, bool, str)
+    syncStatus = pyqtSignal(str, str)
     syncError = pyqtSignal(str)
     syncMessage = pyqtSignal(str)
     syncFinished = pyqtSignal(str, bool, bool)
@@ -72,31 +72,32 @@
         
         self.__initialSync()
     
-    def __downloadFile(self, type_, fileName):
+    def __downloadFile(self, type_, fileName, timestamp):
         """
         Private method to downlaod the given file.
         
         @param type_ type of the synchronization event (string one
             of "bookmarks", "history", "passwords" or "useragents")
         @param fileName name of the file to be downloaded (string)
+        @param timestamp time stamp in seconds of the file to be downloaded (int)
         """
+        self.syncStatus.emit(type_, self._messages[type_]["RemoteExists"])
         try:
             f = open(os.path.join(Preferences.getHelp("SyncDirectoryPath"),
                                   self._remoteFiles[type_]), "rb")
             data = f.read()
             f.close()
         except IOError as err:
-            self.syncStatus.emit(type_, False,
+            self.syncStatus.emit(type_, 
                 self.trUtf8("Cannot read remote file.\n{0}").format(str(err)))
             self.syncFinished(type_, False, True)
             return
         
-        ok, error = self.writeFile(QByteArray(data), fileName)
-        if ok:
-            self.syncStatus.emit(type_, True, self._messages[type_]["RemoteExists"])
-        else:
-            self.syncStatus.emit(type_, False, error)
-        self.syncFinished.emit(type_, True, True)
+        QCoreApplication.processEvents()
+        ok, error = self.writeFile(QByteArray(data), fileName,  timestamp)
+        if not ok:
+            self.syncStatus.emit(type_, error)
+        self.syncFinished.emit(type_, ok, True)
     
     def __uploadFile(self, type_, fileName):
         """
@@ -106,10 +107,12 @@
             of "bookmarks", "history", "passwords" or "useragents")
         @param fileName name of the file to be uploaded (string)
         """
+        QCoreApplication.processEvents()
         data = self.readFile(fileName)
         if data.isEmpty():
-            self.syncStatus.emit(type_, True,
-                self._messages[type_]["LocalMissing"])
+            self.syncStatus.emit(type_, self._messages[type_]["LocalMissing"])
+            self.syncFinished(type_, False, False)
+            return
         else:
             try:
                 f = open(os.path.join(Preferences.getHelp("SyncDirectoryPath"),
@@ -117,7 +120,7 @@
                 f.write(bytes(data))
                 f.close()
             except IOError as err:
-                self.syncStatus.emit(type_, False,
+                self.syncStatus.emit(type_,
                     self.trUtf8("Cannot write remote file.\n{0}").format(str(err)))
                 self.syncFinished(type_, False, False)
                 return
@@ -137,44 +140,52 @@
                                        self._remoteFiles[type_])) and \
            QFileInfo(fileName).lastModified() <= \
                 QFileInfo(os.path.join(Preferences.getHelp("SyncDirectoryPath"),
-                                       self._remoteFiles[type_]).lastModified()):
+                                       self._remoteFiles[type_])).lastModified():
             self.__downloadFile(type_, fileName,
                 QFileInfo(os.path.join(Preferences.getHelp("SyncDirectoryPath"),
-                    self._remoteFiles[type_]).lastModified()).toTime_t())
+                    self._remoteFiles[type_])).lastModified().toTime_t())
         else:
             if os.path.exists(os.path.join(Preferences.getHelp("SyncDirectoryPath"),
                                            self._remoteFiles[type_])):
-                self.syncStatus.emit(type_, True,
-                    self._messages[type_]["RemoteMissing"])
+                self.syncStatus.emit(type_, self._messages[type_]["RemoteMissing"])
             else:
-                self.syncStatus.emit(type_, True,
-                    self._messages[type_]["LocalNewer"])
+                self.syncStatus.emit(type_, self._messages[type_]["LocalNewer"])
             self.__uploadFile(type_, fileName)
     
     def __initialSync(self):
         """
         Private slot to do the initial synchronization.
         """
+        QCoreApplication.processEvents()
         # Bookmarks
         if Preferences.getHelp("SyncBookmarks"):
             self.__initialSyncFile("bookmarks",
                 Helpviewer.HelpWindow.HelpWindow.bookmarksManager().getFileName())
         
+        QCoreApplication.processEvents()
         # History
         if Preferences.getHelp("SyncHistory"):
             self.__initialSyncFile("history",
                 Helpviewer.HelpWindow.HelpWindow.historyManager().getFileName())
         
+        QCoreApplication.processEvents()
         # Passwords
         if Preferences.getHelp("SyncPasswords"):
             self.__initialSyncFile("passwords",
                 Helpviewer.HelpWindow.HelpWindow.passwordManager().getFileName())
         
+        QCoreApplication.processEvents()
         # User Agent Settings
         if Preferences.getHelp("SyncUserAgents"):
             self.__initialSyncFile("useragents",
                 Helpviewer.HelpWindow.HelpWindow.userAgentsManager().getFileName())
         
+        QCoreApplication.processEvents()
+        # Speed Dial Settings
+        if Preferences.getHelp("SyncSpeedDial"):
+            self.__initialSyncFile("speeddial",
+                Helpviewer.HelpWindow.HelpWindow.speedDial().getFileName())
+        
         self.__forceUpload = False
         self.syncMessage.emit(self.trUtf8("Synchronization finished"))
     
@@ -186,7 +197,7 @@
             of "bookmarks", "history", "passwords" or "useragents")
         @param fileName name of the file to be synchronized (string)
         """
-        self.syncStatus.emit(type_, True, self._messages[type_]["Uploading"])
+        self.syncStatus.emit(type_, self._messages[type_]["Uploading"])
         self.__uploadFile(type_, fileName)
     
     def syncBookmarks(self):
@@ -217,6 +228,13 @@
         self.__syncFile("useragents",
             Helpviewer.HelpWindow.HelpWindow.userAgentsManager().getFileName())
     
+    def syncSpeedDial(self):
+        """
+        Public method to synchronize the speed dial data.
+        """
+        self.__syncFile("speeddial",
+            Helpviewer.HelpWindow.HelpWindow.speedDial().getFileName())
+    
     def shutdown(self):
         """
         Public method to shut down the handler.

eric ide

mercurial