File indexing completed on 2024-05-05 03:49:14

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