libquentier  0.5.0
The library for rich desktop clients of Evernote service
SynchronizationManager.h
1 /*
2  * Copyright 2016-2020 Dmitry Ivanov
3  *
4  * This file is part of libquentier
5  *
6  * libquentier is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU Lesser General Public License as published by
8  * the Free Software Foundation, version 3 of the License.
9  *
10  * libquentier is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public License
16  * along with libquentier. If not, see <http://www.gnu.org/licenses/>.
17  */
18 
19 #ifndef LIB_QUENTIER_SYNCHRONIZATION_SYNCHRONIZATION_MANAGER_H
20 #define LIB_QUENTIER_SYNCHRONIZATION_SYNCHRONIZATION_MANAGER_H
21 
22 #include <quentier/synchronization/ForwardDeclarations.h>
23 #include <quentier/types/Account.h>
24 #include <quentier/types/ErrorString.h>
25 #include <quentier/types/LinkedNotebook.h>
26 #include <quentier/utility/ForwardDeclarations.h>
27 #include <quentier/utility/Linkage.h>
28 
29 #include <QObject>
30 
31 namespace quentier {
32 
33 QT_FORWARD_DECLARE_CLASS(LocalStorageManagerAsync)
34 QT_FORWARD_DECLARE_CLASS(SynchronizationManagerPrivate)
35 
36 
42 class QUENTIER_EXPORT SynchronizationManager : public QObject
43 {
44  Q_OBJECT
45 public:
82  QString host, LocalStorageManagerAsync & localStorageManagerAsync,
83  IAuthenticationManager & authenticationManager,
84  QObject * parent = nullptr, INoteStorePtr pNoteStore = {},
85  IUserStorePtr pUserStore = {},
86  IKeychainServicePtr pKeychainService = {},
87  ISyncStateStoragePtr pSyncStateStorage = {});
88 
89  virtual ~SynchronizationManager();
90 
95  bool active() const;
96 
104 
105 public Q_SLOTS:
120  void setAccount(Account account);
121 
130  void authenticate();
131 
144 
148  void synchronize();
149 
154  void stop();
155 
162  void revokeAuthentication(const qevercloud::UserID userId);
163 
175  void setDownloadNoteThumbnails(bool flag);
176 
185  void setDownloadInkNoteImages(bool flag);
186 
204  void setInkNoteImagesStoragePath(QString path);
205 
206 Q_SIGNALS:
212  void started();
213 
219  void stopped();
220 
227  void failed(ErrorString errorDescription);
228 
249  void finished(
250  Account account, bool somethingDownloaded, bool somethingSent);
251 
264  bool success, ErrorString errorDescription, qevercloud::UserID userId);
265 
280  bool success, ErrorString errorDescription, Account account);
281 
287 
293 
305 
318 
328  void rateLimitExceeded(qint32 secondsToWait);
329 
343  void remoteToLocalSyncDone(bool somethingDownloaded);
344 
361  qint32 highestDownloadedUsn, qint32 highestServerUsn,
362  qint32 lastPreviousUsn);
363 
369 
394  qint32 highestDownloadedUsn, qint32 highestServerUsn,
395  qint32 lastPreviousUsn, LinkedNotebook linkedNotebook);
396 
402 
412  quint32 notesDownloaded, quint32 totalNotesToDownload);
413 
423  quint32 notesDownloaded, quint32 totalNotesToDownload);
424 
436  quint32 resourcesDownloaded, quint32 totalResourcesToDownload);
437 
449  quint32 resourcesDownloaded, quint32 totalResourcesToDownload);
450 
457 
464 
470  void setAccountDone(Account account);
471 
477 
483 
489 
490 private:
491  SynchronizationManager() = delete;
492  Q_DISABLE_COPY(SynchronizationManager)
493 
494  SynchronizationManagerPrivate * d_ptr;
495  Q_DECLARE_PRIVATE(SynchronizationManager)
496 };
497 
498 } // namespace quentier
499 
500 #endif // LIB_QUENTIER_SYNCHRONIZATION_SYNCHRONIZATION_MANAGER_H
quentier::SynchronizationManager::revokeAuthentication
void revokeAuthentication(const qevercloud::UserID userId)
quentier::SynchronizationManager::linkedNotebooksSyncChunksDownloaded
void linkedNotebooksSyncChunksDownloaded()
quentier::SynchronizationManager::setInkNoteImagesStoragePathDone
void setInkNoteImagesStoragePathDone(QString path)
quentier::Account
The Account class encapsulates some details about the account: its name, whether it is local or synch...
Definition: Account.h:39
quentier::SynchronizationManager::setDownloadInkNoteImages
void setDownloadInkNoteImages(bool flag)
quentier::SynchronizationManager::willRepeatRemoteToLocalSyncAfterSendingChanges
void willRepeatRemoteToLocalSyncAfterSendingChanges()
quentier::SynchronizationManager::setDownloadNoteThumbnailsDone
void setDownloadNoteThumbnailsDone(bool flag)
quentier::SynchronizationManager::stop
void stop()
quentier::SynchronizationManager::authenticateCurrentAccount
void authenticateCurrentAccount()
quentier::SynchronizationManager::active
bool active() const
quentier::SynchronizationManager::resourcesDownloadProgress
void resourcesDownloadProgress(quint32 resourcesDownloaded, quint32 totalResourcesToDownload)
quentier::SynchronizationManager::syncChunksDownloadProgress
void syncChunksDownloadProgress(qint32 highestDownloadedUsn, qint32 highestServerUsn, qint32 lastPreviousUsn)
quentier::SynchronizationManager::rateLimitExceeded
void rateLimitExceeded(qint32 secondsToWait)
quentier::SynchronizationManager::setDownloadInkNoteImagesDone
void setDownloadInkNoteImagesDone(bool flag)
quentier::SynchronizationManager::preparedDirtyObjectsForSending
void preparedDirtyObjectsForSending()
quentier::ErrorString
The ErrorString class encapsulates two (or more) strings which are meant to contain translatable (bas...
Definition: ErrorString.h:44
quentier::SynchronizationManager::linkedNotebooksNotesDownloadProgress
void linkedNotebooksNotesDownloadProgress(quint32 notesDownloaded, quint32 totalNotesToDownload)
quentier::SynchronizationManager::linkedNotebooksResourcesDownloadProgress
void linkedNotebooksResourcesDownloadProgress(quint32 resourcesDownloaded, quint32 totalResourcesToDownload)
quentier::SynchronizationManager::failed
void failed(ErrorString errorDescription)
quentier::SynchronizationManager::authenticate
void authenticate()
quentier::SynchronizationManager::setAccount
void setAccount(Account account)
quentier::SynchronizationManager::notesDownloadProgress
void notesDownloadProgress(quint32 notesDownloaded, quint32 totalNotesToDownload)
quentier::SynchronizationManager::synchronize
void synchronize()
quentier::SynchronizationManager::remoteToLocalSyncDone
void remoteToLocalSyncDone(bool somethingDownloaded)
quentier::SynchronizationManager::preparedLinkedNotebooksDirtyObjectsForSending
void preparedLinkedNotebooksDirtyObjectsForSending()
quentier::SynchronizationManager::setInkNoteImagesStoragePath
void setInkNoteImagesStoragePath(QString path)
quentier::SynchronizationManager::detectedConflictDuringLocalChangesSending
void detectedConflictDuringLocalChangesSending()
quentier::IAuthenticationManager
Definition: IAuthenticationManager.h:37
quentier::SynchronizationManager::finished
void finished(Account account, bool somethingDownloaded, bool somethingSent)
quentier::SynchronizationManager::remoteToLocalSyncStopped
void remoteToLocalSyncStopped()
quentier::SynchronizationManager::sendLocalChangesStopped
void sendLocalChangesStopped()
quentier::SynchronizationManager::downloadNoteThumbnailsOption
bool downloadNoteThumbnailsOption() const
quentier::LinkedNotebook
Definition: LinkedNotebook.h:33
quentier::SynchronizationManager::started
void started()
quentier::SynchronizationManager::syncChunksDownloaded
void syncChunksDownloaded()
quentier::SynchronizationManager::authenticationFinished
void authenticationFinished(bool success, ErrorString errorDescription, Account account)
quentier::SynchronizationManager::authenticationRevoked
void authenticationRevoked(bool success, ErrorString errorDescription, qevercloud::UserID userId)
quentier::SynchronizationManager::linkedNotebookSyncChunksDownloadProgress
void linkedNotebookSyncChunksDownloadProgress(qint32 highestDownloadedUsn, qint32 highestServerUsn, qint32 lastPreviousUsn, LinkedNotebook linkedNotebook)
quentier::SynchronizationManager::stopped
void stopped()
quentier::SynchronizationManager::setDownloadNoteThumbnails
void setDownloadNoteThumbnails(bool flag)
quentier::LocalStorageManagerAsync
Definition: LocalStorageManagerAsync.h:44
quentier::SynchronizationManager::setAccountDone
void setAccountDone(Account account)
quentier::SynchronizationManager::SynchronizationManager
SynchronizationManager(QString host, LocalStorageManagerAsync &localStorageManagerAsync, IAuthenticationManager &authenticationManager, QObject *parent=nullptr, INoteStorePtr pNoteStore={}, IUserStorePtr pUserStore={}, IKeychainServicePtr pKeychainService={}, ISyncStateStoragePtr pSyncStateStorage={})
quentier::SynchronizationManager
The SynchronizationManager class encapsulates methods and signals & slots required to perform the ful...
Definition: SynchronizationManager.h:43