File indexing completed on 2024-05-19 11:30: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 CLOUDSYNCMANAGER_H 0007 #define CLOUDSYNCMANAGER_H 0008 0009 #include <QObject> 0010 #include <QUrl> 0011 0012 #include "marble_export.h" 0013 0014 namespace Marble { 0015 0016 class BookmarkSyncManager; 0017 class RouteSyncManager; 0018 0019 class MARBLE_EXPORT CloudSyncManager : public QObject 0020 { 0021 Q_OBJECT 0022 0023 Q_PROPERTY( bool workOffline READ workOffline WRITE setWorkOffline NOTIFY workOfflineChanged ) 0024 Q_PROPERTY( bool syncEnabled READ isSyncEnabled WRITE setSyncEnabled NOTIFY syncEnabledChanged ) 0025 0026 Q_PROPERTY( QString owncloudUsername READ owncloudUsername WRITE setOwncloudUsername NOTIFY owncloudUsernameChanged ) 0027 Q_PROPERTY( QString owncloudPassword READ owncloudPassword WRITE setOwncloudPassword NOTIFY owncloudPasswordChanged ) 0028 Q_PROPERTY( QString owncloudServer READ owncloudServer WRITE setOwncloudServer NOTIFY owncloudServerChanged ) 0029 Q_PROPERTY( QUrl apiUrl READ apiUrl NOTIFY apiUrlChanged ) 0030 0031 Q_PROPERTY( BookmarkSyncManager* bookmarkSyncManager READ bookmarkSyncManager NOTIFY bookmarkSyncManagerChanged ) 0032 Q_PROPERTY( RouteSyncManager* routeSyncManager READ routeSyncManager NOTIFY routeSyncManagerChanged ) 0033 0034 public: 0035 explicit CloudSyncManager( QObject *parent = nullptr ); 0036 ~CloudSyncManager() override; 0037 0038 /** 0039 * Status enumeration 0040 */ 0041 enum Status { Unknown, Success, Error }; 0042 0043 /** 0044 * Getter for offline mode. 0045 * @return true if offline mode enabled 0046 */ 0047 bool workOffline() const; 0048 0049 /** 0050 * Setter for offline mode. 0051 * @param offline Status of offline mode 0052 */ 0053 void setWorkOffline( bool offline ); 0054 0055 /** 0056 * Checks if the user enabled synchronization. 0057 * @return true if synchronization enabled 0058 */ 0059 bool isSyncEnabled() const; 0060 0061 /** 0062 * Gets ownCloud server from settings. 0063 * @return ownCloud server 0064 */ 0065 QString owncloudServer() const; 0066 0067 /** 0068 * Gets ownCloud username from settings. 0069 * @return ownCloud username 0070 */ 0071 QString owncloudUsername() const; 0072 0073 /** 0074 * Gets ownCloud password from settings 0075 * @return ownCloud password 0076 */ 0077 QString owncloudPassword() const; 0078 0079 /** 0080 * Setter for enabling/disabling synchronization. 0081 * @param enabled Status of synchronization. 0082 */ 0083 void setSyncEnabled( bool enabled ); 0084 0085 /** 0086 * Change owncloud server URL, username and password at once without emitting change 0087 * signals like setOwncloudServer, setOwncloudUsername, setOwncloudPassword do. 0088 * The apiUrlChanged signal is emitted, if needed, however. 0089 * @brief setOwncloudCredentials 0090 * @param server 0091 * @param user 0092 * @param password 0093 */ 0094 void setOwncloudCredentials( const QString &server, const QString &user, const QString &password ); 0095 0096 /** 0097 * Setter for ownCloud server. 0098 * @param server ownCloud server 0099 */ 0100 void setOwncloudServer( const QString &owncloudServer ); 0101 0102 /** 0103 * Setter for ownCloud username. 0104 * @param username ownCloud username 0105 */ 0106 void setOwncloudUsername( const QString &owncloudUsername ); 0107 0108 /** 0109 * Setter for ownCloud password. 0110 * @param password ownCloud password 0111 */ 0112 void setOwncloudPassword( const QString &owncloudPassword ); 0113 0114 /** 0115 * Setter for authentication error. 0116 * @param error authentication error 0117 */ 0118 void setStatus( const QString &status, CloudSyncManager::Status status_type ); 0119 0120 /** 0121 * @return Last synchronization status 0122 */ 0123 CloudSyncManager::Status status() const; 0124 0125 /** 0126 * @return A human readable description of the last synchronization status 0127 */ 0128 QString statusDescription() const; 0129 0130 /** 0131 * Returns API path as a QString. 0132 * @return API path 0133 */ 0134 QString apiPath() const; 0135 0136 /** 0137 * Returns an API url ready for use. 0138 * @return API url as QString 0139 */ 0140 QUrl apiUrl() const; 0141 0142 /** 0143 * @return A ready to use BookmarkSyncManager instance 0144 */ 0145 RouteSyncManager* routeSyncManager(); 0146 0147 /** 0148 * @return A ready to use BookmarkSyncManager instance 0149 */ 0150 BookmarkSyncManager* bookmarkSyncManager(); 0151 0152 Q_SIGNALS: 0153 void workOfflineChanged(bool workOffline); 0154 void syncEnabledChanged(bool enabled); 0155 0156 void owncloudUsernameChanged(const QString &username); 0157 void owncloudPasswordChanged(const QString &password); 0158 void owncloudServerChanged(const QString &server); 0159 void statusChanged(const QString &status); 0160 0161 void apiUrlChanged(const QUrl &url); 0162 void routeSyncManagerChanged(); 0163 void bookmarkSyncManagerChanged(); 0164 0165 private: 0166 class Private; 0167 Private *d; 0168 }; 0169 0170 } 0171 0172 #endif // CLOUDSYNCMANAGER_H