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 #include "CloudSyncManager.h" 0007 #include "BookmarkSyncManager.h" 0008 #include "RouteSyncManager.h" 0009 0010 namespace Marble 0011 { 0012 0013 class Q_DECL_HIDDEN CloudSyncManager::Private { 0014 0015 public: 0016 Private(); 0017 ~Private(); 0018 0019 bool m_workOffline; 0020 0021 bool m_syncEnabled; 0022 0023 QString m_owncloudProtocol; 0024 QString m_ownloudServer; 0025 QString m_owncloudUsername; 0026 QString m_owncloudPassword; 0027 QString m_status; 0028 CloudSyncManager::Status m_status_type; 0029 0030 RouteSyncManager* m_routeSyncManager; 0031 BookmarkSyncManager* m_bookmarkSyncManager; 0032 }; 0033 0034 CloudSyncManager::Private::~Private() 0035 { 0036 delete m_routeSyncManager; 0037 delete m_bookmarkSyncManager; 0038 } 0039 0040 CloudSyncManager::Private::Private() : 0041 m_workOffline( false ), 0042 m_syncEnabled( false ), 0043 m_owncloudProtocol( "http" ), 0044 m_ownloudServer(), 0045 m_owncloudUsername(), 0046 m_owncloudPassword(), 0047 m_status(), 0048 m_status_type( CloudSyncManager::Unknown), 0049 m_routeSyncManager( nullptr ), 0050 m_bookmarkSyncManager( nullptr ) 0051 { 0052 } 0053 0054 CloudSyncManager::CloudSyncManager( QObject *parent ) : 0055 QObject( parent ), 0056 d( new Private ) 0057 { 0058 } 0059 0060 CloudSyncManager::~CloudSyncManager() 0061 { 0062 delete d; 0063 } 0064 0065 bool CloudSyncManager::workOffline() const 0066 { 0067 return d->m_workOffline; 0068 } 0069 0070 void CloudSyncManager::setWorkOffline( bool offline ) 0071 { 0072 if ( offline != d->m_workOffline ) { 0073 d->m_workOffline = offline; 0074 emit workOfflineChanged( d->m_workOffline ); 0075 } 0076 } 0077 0078 bool CloudSyncManager::isSyncEnabled() const 0079 { 0080 return d->m_syncEnabled; 0081 } 0082 0083 QString CloudSyncManager::owncloudServer() const 0084 { 0085 return d->m_owncloudProtocol + d->m_ownloudServer; 0086 } 0087 0088 QString CloudSyncManager::owncloudUsername() const 0089 { 0090 return d->m_owncloudUsername; 0091 } 0092 0093 QString CloudSyncManager::owncloudPassword() const 0094 { 0095 return d->m_owncloudPassword; 0096 } 0097 0098 void CloudSyncManager::setSyncEnabled( bool enabled ) 0099 { 0100 if ( d->m_syncEnabled != enabled ) { 0101 d->m_syncEnabled = enabled; 0102 emit syncEnabledChanged( d->m_syncEnabled ); 0103 } 0104 } 0105 0106 void CloudSyncManager::setOwncloudCredentials( const QString &server, const QString &user, const QString &password ) 0107 { 0108 QUrl const oldApiUrl = apiUrl(); 0109 blockSignals( true ); 0110 setOwncloudServer( server ); 0111 setOwncloudUsername( user ); 0112 setOwncloudPassword( password ); 0113 blockSignals( false ); 0114 if ( oldApiUrl != apiUrl() ) { 0115 emit apiUrlChanged( apiUrl() ); 0116 } 0117 } 0118 0119 void CloudSyncManager::setOwncloudServer( const QString &server ) 0120 { 0121 QString const oldProtocol = d->m_owncloudProtocol; 0122 QString const oldServer = d->m_ownloudServer; 0123 0124 if (server.startsWith(QLatin1String("http://"))) { 0125 d->m_owncloudProtocol = "http://"; 0126 d->m_ownloudServer = server.mid( 7 ); 0127 } else if (server.startsWith(QLatin1String("https://"))) { 0128 d->m_owncloudProtocol = "https://"; 0129 d->m_ownloudServer = server.mid ( 8 ); 0130 } else { 0131 d->m_owncloudProtocol = "http://"; 0132 d->m_ownloudServer = server; 0133 } 0134 0135 if ( oldServer != d->m_ownloudServer ) { 0136 emit owncloudServerChanged( owncloudServer() ); 0137 emit apiUrlChanged( apiUrl() ); 0138 } else if ( oldProtocol != d->m_owncloudProtocol ) { 0139 emit apiUrlChanged( apiUrl() ); 0140 } 0141 } 0142 0143 void CloudSyncManager::setOwncloudUsername( const QString &username ) 0144 { 0145 if ( d->m_owncloudUsername != username ) { 0146 d->m_owncloudUsername = username; 0147 emit owncloudUsernameChanged( d->m_owncloudUsername ); 0148 emit apiUrlChanged( apiUrl() ); 0149 } 0150 } 0151 0152 void CloudSyncManager::setOwncloudPassword( const QString &password ) 0153 { 0154 if ( d->m_owncloudPassword != password ) { 0155 d->m_owncloudPassword = password; 0156 emit owncloudPasswordChanged( d->m_owncloudPassword ); 0157 emit apiUrlChanged( apiUrl() ); 0158 } 0159 } 0160 0161 void CloudSyncManager::setStatus( const QString &status, CloudSyncManager::Status status_type ) 0162 { 0163 if( d->m_status != status && d->m_status_type != status_type) { 0164 d->m_status = status; 0165 d->m_status_type = status_type; 0166 emit statusChanged( d->m_status ); 0167 } 0168 } 0169 0170 CloudSyncManager::Status CloudSyncManager::status() const 0171 { 0172 return d->m_status_type; 0173 } 0174 0175 QString CloudSyncManager::statusDescription() const 0176 { 0177 return d->m_status; 0178 } 0179 0180 QString CloudSyncManager::apiPath() const 0181 { 0182 return "index.php/apps/marble/api/v1"; 0183 } 0184 0185 QUrl CloudSyncManager::apiUrl() const 0186 { 0187 return QUrl( QString( "%0%1:%2@%3/%4" ) 0188 .arg( d->m_owncloudProtocol ) 0189 .arg( d->m_owncloudUsername ).arg( d->m_owncloudPassword ) 0190 .arg( d->m_ownloudServer ).arg( apiPath() ) ); 0191 } 0192 0193 RouteSyncManager *CloudSyncManager::routeSyncManager() 0194 { 0195 if ( !d->m_routeSyncManager ) { 0196 d->m_routeSyncManager = new RouteSyncManager( this ); 0197 } 0198 0199 return d->m_routeSyncManager; 0200 } 0201 0202 BookmarkSyncManager *CloudSyncManager::bookmarkSyncManager() 0203 { 0204 if ( !d->m_bookmarkSyncManager ) { 0205 d->m_bookmarkSyncManager = new BookmarkSyncManager( this ); 0206 } 0207 0208 return d->m_bookmarkSyncManager; 0209 } 0210 0211 } 0212 0213 #include "moc_CloudSyncManager.cpp"