Helpviewer/Sync/SyncManager.py

changeset 1626
a77c8ea8582c
child 1638
cd2f9e526710
diff -r 4f03e45703e9 -r a77c8ea8582c Helpviewer/Sync/SyncManager.py
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Helpviewer/Sync/SyncManager.py	Fri Feb 17 19:39:37 2012 +0100
@@ -0,0 +1,212 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2012 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing the synchronization manager class.
+"""
+
+from PyQt4.QtCore import QObject, pyqtSignal
+
+from .FtpSyncHandler import FtpSyncHandler
+from .SyncAssistantDialog import SyncAssistantDialog
+
+import Preferences
+
+import Helpviewer.HelpWindow
+
+
+class SyncManager(QObject):
+    """
+    Class implementing the synchronization manager.
+    
+    @signal syncError(message) emitted for a general error with the error message (string)
+    """
+    syncError = pyqtSignal(str)
+    
+    def __init__(self, parent=None):
+        """
+        Constructor
+        
+        @param parent reference to the parent object (QObject)
+        """
+        super().__init__(parent)
+        
+        self.__handler = None
+        
+        self.loadSettings()
+    
+    def handler(self):
+        """
+        Public method to get a reference to the sync handler object.
+        
+        @return reference to the sync handler object (SyncHandler)
+        """
+        return self.__handler
+    
+    def showSyncDialog(self):
+        """
+        Public method to show the synchronization dialog.
+        """
+        dlg = SyncAssistantDialog()
+        dlg.exec_()
+    
+    def loadSettings(self):
+        """
+        Public method to load the settings.
+        """
+        if self.syncEnabled():
+            if Preferences.getHelp("SyncType") == 0:
+                if self.__handler is not None:
+                    self.__handler.syncError.disconnect(self.__syncError)
+                    self.__handler.syncFinished.disconnect(self.__syncFinished)
+                self.__handler = FtpSyncHandler(self)
+                self.__handler.syncError.connect(self.__syncError)
+                self.__handler.syncFinished.connect(self.__syncFinished)
+            
+            self.__handler.initialLoadAndCheck()
+            
+            # connect sync manager to bookmarks manager
+            if Preferences.getHelp("SyncBookmarks"):
+                Helpviewer.HelpWindow.HelpWindow.bookmarksManager().bookmarksSaved\
+                    .connect(self.__syncBookmarks)
+            else:
+                try:
+                    Helpviewer.HelpWindow.HelpWindow.bookmarksManager().bookmarksSaved\
+                        .disconnect(self.__syncBookmarks)
+                except TypeError:
+                    pass
+            
+            # connect sync manager to history manager
+            if Preferences.getHelp("SyncHistory"):
+                Helpviewer.HelpWindow.HelpWindow.historyManager().historySaved\
+                    .connect(self.__syncHistory)
+            else:
+                try:
+                    Helpviewer.HelpWindow.HelpWindow.historyManager().historySaved\
+                        .disconnect(self.__syncHistory)
+                except TypeError:
+                    pass
+            
+            # connect sync manager to passwords manager
+            if Preferences.getHelp("SyncPasswords"):
+                Helpviewer.HelpWindow.HelpWindow.passwordManager().passwordsSaved\
+                    .connect(self.__syncPasswords)
+            else:
+                try:
+                    Helpviewer.HelpWindow.HelpWindow.passwordManager().passwordsSaved\
+                        .disconnect(self.__syncPasswords)
+                except TypeError:
+                    pass
+            
+            # connect sync manager to user agent manager
+            if Preferences.getHelp("SyncUserAgents"):
+                Helpviewer.HelpWindow.HelpWindow.userAgentsManager()\
+                    .userAgentSettingsSaved.connect(self.__syncUserAgents)
+            else:
+                try:
+                    Helpviewer.HelpWindow.HelpWindow.userAgentsManager()\
+                        .userAgentSettingsSaved.disconnect(self.__syncUserAgents)
+                except TypeError:
+                    pass
+        else:
+            if self.__handler is not None:
+                self.__handler.syncError.disconnect(self.__syncError)
+                self.__handler.syncFinished.disconnect(self.__syncFinished)
+            self.__handler = None
+            
+            try:
+                Helpviewer.HelpWindow.HelpWindow.bookmarksManager().bookmarksSaved\
+                    .disconnect(self.__syncBookmarks)
+            except TypeError:
+                pass
+            try:
+                Helpviewer.HelpWindow.HelpWindow.historyManager().historySaved\
+                    .disconnect(self.__syncHistory)
+            except TypeError:
+                pass
+            try:
+                Helpviewer.HelpWindow.HelpWindow.passwordManager().passwordsSaved\
+                    .disconnect(self.__syncPasswords)
+            except TypeError:
+                pass
+            try:
+                Helpviewer.HelpWindow.HelpWindow.userAgentsManager()\
+                    .userAgentSettingsSaved.disconnect(self.__syncUserAgents)
+            except TypeError:
+                pass
+    
+    def syncEnabled(self):
+        """
+        Public method to check, if synchronization is enabled.
+        
+        @return flag indicating enabled synchronization
+        """
+        return Preferences.getHelp("SyncEnabled") and \
+               Preferences.getHelp("SyncType") > -1
+    
+    def __syncBookmarks(self):
+        """
+        Private slot to synchronize the bookmarks.
+        """
+        if self.__handler is not None:
+            self.__handler.syncBookmarks()
+    
+    def __syncHistory(self):
+        """
+        Private slot to synchronize the history.
+        """
+        if self.__handler is not None:
+            self.__handler.syncHistory()
+    
+    def __syncPasswords(self):
+        """
+        Private slot to synchronize the passwords.
+        """
+        if self.__handler is not None:
+            self.__handler.syncPasswords()
+    
+    def __syncUserAgents(self):
+        """
+        Private slot to synchronize the user agent settings.
+        """
+        if self.__handler is not None:
+            self.__handler.syncUserAgents()
+    
+    def __syncError(self, message):
+        """
+        Private slot to handle general synchronization issues.
+        
+        @param message error message (string)
+        """
+        self.syncError.emit(message)
+    
+    def __syncFinished(self, type_, status, download):
+        """
+        Private slot to handle a finished synchronization event.
+        
+        @param type_ type of the synchronization event (string one
+            of "bookmarks", "history", "passwords" or "useragents")
+        @param status flag indicating success (boolean)
+        @param download flag indicating a download of a file (boolean)
+        """
+        if status and download:
+            if type_ == "bookmarks":
+                Helpviewer.HelpWindow.HelpWindow.bookmarksManager().reload()
+            elif type_ == "history":
+                Helpviewer.HelpWindow.HelpWindow.historyManager().reload()
+            elif type_ == "passwords":
+                Helpviewer.HelpWindow.HelpWindow.passwordManager().reload()
+            elif type_ == "useragents":
+                Helpviewer.HelpWindow.HelpWindow.userAgentsManager().reload()
+    
+    def close(self):
+        """
+        Public slot to shut down the synchronization manager.
+        """
+        if not self.syncEnabled():
+            return
+        
+        if self.__handler is not None:
+            self.__handler.shutdown()

eric ide

mercurial