eric6/WebBrowser/Sync/SyncManager.py

changeset 6942
2602857055c5
parent 6645
ad476851d7e0
child 7229
53054eb5b15a
equal deleted inserted replaced
6941:f99d60d6b59b 6942:2602857055c5
1 # -*- coding: utf-8 -*-
2
3 # Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
4 #
5
6 """
7 Module implementing the synchronization manager class.
8 """
9
10 from __future__ import unicode_literals
11
12 from PyQt5.QtCore import QObject, pyqtSignal
13
14 import Preferences
15
16 from WebBrowser.WebBrowserWindow import WebBrowserWindow
17
18
19 class SyncManager(QObject):
20 """
21 Class implementing the synchronization manager.
22
23 @signal syncError(message) emitted for a general error with the error
24 message (string)
25 @signal syncMessage(message) emitted to give status info about the sync
26 process (string)
27 @signal syncStatus(type_, message) emitted to indicate the synchronization
28 status (string one of "bookmarks", "history", "passwords",
29 "useragents" or "speeddial", string)
30 @signal syncFinished(type_, done, download) emitted after a
31 synchronization has finished (string one of "bookmarks", "history",
32 "passwords", "useragents" or "speeddial", boolean, boolean)
33 """
34 syncError = pyqtSignal(str)
35 syncMessage = pyqtSignal(str)
36 syncStatus = pyqtSignal(str, str)
37 syncFinished = pyqtSignal(str, bool, bool)
38
39 def __init__(self, parent=None):
40 """
41 Constructor
42
43 @param parent reference to the parent object (QObject)
44 """
45 super(SyncManager, self).__init__(parent)
46
47 self.__handler = None
48
49 def handler(self):
50 """
51 Public method to get a reference to the sync handler object.
52
53 @return reference to the sync handler object (SyncHandler)
54 """
55 return self.__handler
56
57 def showSyncDialog(self):
58 """
59 Public method to show the synchronization dialog.
60 """
61 from .SyncAssistantDialog import SyncAssistantDialog
62 dlg = SyncAssistantDialog()
63 dlg.exec_()
64
65 def loadSettings(self, forceUpload=False):
66 """
67 Public method to load the settings.
68
69 @keyparam forceUpload flag indicating a forced upload of the files
70 (boolean)
71 """
72 if self.__handler is not None:
73 self.__handler.syncError.disconnect(self.__syncError)
74 self.__handler.syncFinished.disconnect(self.__syncFinished)
75 self.__handler.syncStatus.disconnect(self.__syncStatus)
76 self.__handler.syncMessage.disconnect(self.syncMessage)
77 self.__handler.shutdown()
78
79 if self.syncEnabled():
80 from . import SyncGlobals
81 if Preferences.getWebBrowser("SyncType") == \
82 SyncGlobals.SyncTypeFtp:
83 from .FtpSyncHandler import FtpSyncHandler
84 self.__handler = FtpSyncHandler(self)
85 elif Preferences.getWebBrowser("SyncType") == \
86 SyncGlobals.SyncTypeDirectory:
87 from .DirectorySyncHandler import DirectorySyncHandler
88 self.__handler = DirectorySyncHandler(self)
89 self.__handler.syncError.connect(self.__syncError)
90 self.__handler.syncFinished.connect(self.__syncFinished)
91 self.__handler.syncStatus.connect(self.__syncStatus)
92 self.__handler.syncMessage.connect(self.syncMessage)
93
94 self.__handler.initialLoadAndCheck(forceUpload=forceUpload)
95
96 # connect sync manager to bookmarks manager
97 if Preferences.getWebBrowser("SyncBookmarks"):
98 WebBrowserWindow.bookmarksManager()\
99 .bookmarksSaved.connect(self.__syncBookmarks)
100 else:
101 try:
102 WebBrowserWindow.bookmarksManager()\
103 .bookmarksSaved.disconnect(self.__syncBookmarks)
104 except TypeError:
105 pass
106
107 # connect sync manager to history manager
108 if Preferences.getWebBrowser("SyncHistory"):
109 WebBrowserWindow.historyManager().historySaved\
110 .connect(self.__syncHistory)
111 else:
112 try:
113 WebBrowserWindow.historyManager()\
114 .historySaved.disconnect(self.__syncHistory)
115 except TypeError:
116 pass
117
118 # connect sync manager to passwords manager
119 if Preferences.getWebBrowser("SyncPasswords"):
120 WebBrowserWindow.passwordManager()\
121 .passwordsSaved.connect(self.__syncPasswords)
122 else:
123 try:
124 WebBrowserWindow.passwordManager()\
125 .passwordsSaved.disconnect(self.__syncPasswords)
126 except TypeError:
127 pass
128
129 # connect sync manager to user agent manager
130 if Preferences.getWebBrowser("SyncUserAgents"):
131 WebBrowserWindow.userAgentsManager()\
132 .userAgentSettingsSaved.connect(self.__syncUserAgents)
133 else:
134 try:
135 WebBrowserWindow.userAgentsManager()\
136 .userAgentSettingsSaved.disconnect(
137 self.__syncUserAgents)
138 except TypeError:
139 pass
140
141 # connect sync manager to speed dial
142 if Preferences.getWebBrowser("SyncSpeedDial"):
143 WebBrowserWindow.speedDial()\
144 .speedDialSaved.connect(self.__syncSpeedDial)
145 else:
146 try:
147 WebBrowserWindow.speedDial()\
148 .speedDialSaved.disconnect(self.__syncSpeedDial)
149 except TypeError:
150 pass
151 else:
152 self.__handler = None
153
154 try:
155 WebBrowserWindow.bookmarksManager()\
156 .bookmarksSaved.disconnect(self.__syncBookmarks)
157 except TypeError:
158 pass
159 try:
160 WebBrowserWindow.historyManager().historySaved\
161 .disconnect(self.__syncHistory)
162 except TypeError:
163 pass
164 try:
165 WebBrowserWindow.passwordManager()\
166 .passwordsSaved.disconnect(self.__syncPasswords)
167 except TypeError:
168 pass
169 try:
170 WebBrowserWindow.userAgentsManager()\
171 .userAgentSettingsSaved.disconnect(self.__syncUserAgents)
172 except TypeError:
173 pass
174 try:
175 WebBrowserWindow.speedDial()\
176 .speedDialSaved.disconnect(self.__syncSpeedDial)
177 except TypeError:
178 pass
179
180 def syncEnabled(self):
181 """
182 Public method to check, if synchronization is enabled.
183
184 @return flag indicating enabled synchronization
185 """
186 from . import SyncGlobals
187 return Preferences.getWebBrowser("SyncEnabled") and \
188 Preferences.getWebBrowser("SyncType") != SyncGlobals.SyncTypeNone
189
190 def __syncBookmarks(self):
191 """
192 Private slot to synchronize the bookmarks.
193 """
194 if self.__handler is not None:
195 self.__handler.syncBookmarks()
196
197 def __syncHistory(self):
198 """
199 Private slot to synchronize the history.
200 """
201 if self.__handler is not None:
202 self.__handler.syncHistory()
203
204 def __syncPasswords(self):
205 """
206 Private slot to synchronize the passwords.
207 """
208 if self.__handler is not None:
209 self.__handler.syncPasswords()
210
211 def __syncUserAgents(self):
212 """
213 Private slot to synchronize the user agent settings.
214 """
215 if self.__handler is not None:
216 self.__handler.syncUserAgents()
217
218 def __syncSpeedDial(self):
219 """
220 Private slot to synchronize the speed dial settings.
221 """
222 if self.__handler is not None:
223 self.__handler.syncSpeedDial()
224
225 def __syncError(self, message):
226 """
227 Private slot to handle general synchronization issues.
228
229 @param message error message (string)
230 """
231 self.syncError.emit(message)
232
233 def __syncFinished(self, type_, status, download):
234 """
235 Private slot to handle a finished synchronization event.
236
237 @param type_ type of the synchronization event (string one
238 of "bookmarks", "history", "passwords", "useragents" or
239 "speeddial")
240 @param status flag indicating success (boolean)
241 @param download flag indicating a download of a file (boolean)
242 """
243 if status and download:
244 if type_ == "bookmarks":
245 WebBrowserWindow.bookmarksManager().reload()
246 elif type_ == "history":
247 WebBrowserWindow.historyManager().reload()
248 elif type_ == "passwords":
249 WebBrowserWindow.passwordManager().reload()
250 elif type_ == "useragents":
251 WebBrowserWindow.userAgentsManager().reload()
252 elif type_ == "speeddial":
253 WebBrowserWindow.speedDial().reload()
254 self.syncFinished.emit(type_, status, download)
255
256 def __syncStatus(self, type_, message):
257 """
258 Private slot to handle a status update of a synchronization event.
259
260 @param type_ type of the synchronization event (string one
261 of "bookmarks", "history", "passwords", "useragents" or
262 "speeddial")
263 @param message status message for the event (string)
264 """
265 self.syncMessage.emit(message)
266 self.syncStatus.emit(type_, message)
267
268 def close(self):
269 """
270 Public slot to shut down the synchronization manager.
271 """
272 if not self.syncEnabled():
273 return
274
275 if self.__handler is not None:
276 self.__handler.shutdown()

eric ide

mercurial