File indexing completed on 2024-05-12 15:29:06
0001 // SPDX-License-Identifier: LGPL-2.1-or-later 0002 // 0003 // SPDX-FileCopyrightText: 2013 Utku Aydın <utkuaydin34@gmail.com> 0004 // 0005 0006 #ifndef BOOKMARKSYNCMANAGER_H 0007 #define BOOKMARKSYNCMANAGER_H 0008 0009 #include "MergeItem.h" 0010 #include "marble_export.h" 0011 0012 #include <QObject> 0013 0014 namespace Marble { 0015 0016 class CloudSyncManager; 0017 class BookmarkManager; 0018 0019 class MARBLE_EXPORT BookmarkSyncManager : public QObject 0020 { 0021 Q_OBJECT 0022 0023 Q_PROPERTY( bool bookmarkSyncEnabled READ isBookmarkSyncEnabled WRITE setBookmarkSyncEnabled NOTIFY bookmarkSyncEnabledChanged ) 0024 0025 public: 0026 explicit BookmarkSyncManager( CloudSyncManager *cloudSyncManager ); 0027 ~BookmarkSyncManager() override; 0028 0029 /** 0030 * Last time Marble synced everything up 0031 */ 0032 QDateTime lastSync() const; 0033 0034 /** 0035 * Checks if the user enabled bookmark synchronization. 0036 * @return true if bookmark synchronization enabled 0037 */ 0038 bool isBookmarkSyncEnabled() const; 0039 0040 /** 0041 * Setter for enabling/disabling bookmark synchronization. 0042 * @param enabled Status of bookmark synchronization 0043 */ 0044 void setBookmarkSyncEnabled( bool enabled ); 0045 0046 void setBookmarkManager(BookmarkManager *manager); 0047 0048 Q_SIGNALS: 0049 void bookmarkSyncEnabledChanged(bool enabled); 0050 void uploadProgress( qint64 sent, qint64 total ); 0051 void downloadProgress( qint64 received, qint64 total ); 0052 void mergeConflict( MergeItem *item ); 0053 void syncComplete(); 0054 0055 public Q_SLOTS: 0056 /** 0057 * Initiates running of synchronization "method chain". 0058 */ 0059 void startBookmarkSync(); 0060 0061 /** 0062 * 0063 * @param item 0064 */ 0065 void resolveConflict( MergeItem *item ); 0066 0067 private: 0068 Q_PRIVATE_SLOT(d, void saveDownloadedToCache( const QByteArray &kml ) ) 0069 Q_PRIVATE_SLOT(d, void parseTimestamp() ) 0070 Q_PRIVATE_SLOT(d, void copyLocalToCache() ) 0071 0072 Q_PRIVATE_SLOT(d, void continueSynchronization() ) 0073 Q_PRIVATE_SLOT(d, void completeSynchronization() ) 0074 Q_PRIVATE_SLOT(d, void completeMerge() ) 0075 Q_PRIVATE_SLOT(d, void completeUpload() ) 0076 0077 private: 0078 class Private; 0079 Private *d; 0080 }; 0081 0082 } 0083 0084 #endif // BOOKMARKSYNCMANAGER_H