Skip to content

Commit aa55495

Browse files
authored
Merge pull request #5976 from opengisch/webdav_import_remember
Implement remembrance into the import webdav dialog + tree view navigation of remote folders.
2 parents f704eaf + 944c6e4 commit aa55495

File tree

3 files changed

+381
-123
lines changed

3 files changed

+381
-123
lines changed

src/core/webdavconnection.cpp

Lines changed: 62 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -224,11 +224,10 @@ void WebdavConnection::processDirParserFinished()
224224
}
225225
}
226226
}
227+
mAvailablePaths.sort();
227228

228229
mIsFetchingAvailablePaths = false;
229230
emit isFetchingAvailablePathsChanged();
230-
231-
mAvailablePaths.sort();
232231
emit availablePathsChanged();
233232
}
234233
else if ( mIsImportingPath || mIsDownloadingPath )
@@ -419,6 +418,12 @@ void WebdavConnection::getWebdavItems()
419418
jsonFile.write( jsonDocument.toJson() );
420419
jsonFile.close();
421420

421+
QSettings settings;
422+
settings.beginGroup( QStringLiteral( "/qfield/webdavImports/%1/users/%2" ).arg( QUrl::toPercentEncoding( mUrl ), QUrl::toPercentEncoding( mUsername ) ) );
423+
settings.setValue( QStringLiteral( "lastImportPath" ), mProcessRemotePath );
424+
settings.setValue( QStringLiteral( "lastImportTime" ), QDateTime::currentDateTime() );
425+
settings.endGroup();
426+
422427
mIsImportingPath = false;
423428
emit isImportingPathChanged();
424429
emit importSuccessful( mProcessLocalPath );
@@ -431,6 +436,61 @@ void WebdavConnection::getWebdavItems()
431436
}
432437
}
433438

439+
QVariantMap WebdavConnection::importHistory()
440+
{
441+
QVariantMap history;
442+
443+
QSettings settings;
444+
settings.beginGroup( QStringLiteral( "/qfield/webdavImports" ) );
445+
const QStringList urls = settings.childGroups();
446+
settings.endGroup();
447+
448+
QDateTime lastUrlImportTime( QDate( 1900, 0, 0 ), QTime( 0, 0, 0, 0 ) );
449+
QString lastUrl;
450+
QVariantMap urlsDetails;
451+
for ( const QString &url : urls )
452+
{
453+
const QString decodedUrl = QUrl::fromPercentEncoding( url.toLatin1() );
454+
settings.beginGroup( QStringLiteral( "/qfield/webdavImports/%1/users" ).arg( url ) );
455+
const QStringList users = settings.childGroups();
456+
settings.endGroup();
457+
458+
QDateTime lastUserImportTime( QDate( 1900, 0, 0 ), QTime( 0, 0, 0, 0 ) );
459+
QString lastUser;
460+
QVariantMap usersDetails;
461+
for ( const QString &user : users )
462+
{
463+
const QString decodedUser = QUrl::fromPercentEncoding( user.toLatin1() );
464+
settings.beginGroup( QStringLiteral( "/qfield/webdavImports/%1/users/%2" ).arg( url, user ) );
465+
466+
QVariantMap details;
467+
details["lastImportPath"] = settings.value( "lastImportPath" ).toString();
468+
usersDetails[decodedUser] = details;
469+
470+
if ( lastUserImportTime < settings.value( "lastImportTime" ).toDateTime() )
471+
{
472+
lastUserImportTime = settings.value( "lastImportTime" ).toDateTime();
473+
lastUser = decodedUser;
474+
}
475+
if ( lastUrlImportTime < settings.value( "lastImportTime" ).toDateTime() )
476+
{
477+
lastUrlImportTime = settings.value( "lastImportTime" ).toDateTime();
478+
lastUrl = decodedUrl;
479+
}
480+
}
481+
482+
QVariantMap details;
483+
details["users"] = usersDetails;
484+
details["lastUser"] = lastUser;
485+
urlsDetails[decodedUrl] = details;
486+
}
487+
488+
history["urls"] = urlsDetails;
489+
history["lastUrl"] = lastUrl;
490+
491+
return history;
492+
}
493+
434494
void WebdavConnection::putLocalItems()
435495
{
436496
if ( !mWebdavMkDirs.isEmpty() )

src/core/webdavconnection.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,8 @@ class WebdavConnection : public QObject
9494

9595
Q_INVOKABLE static bool hasWebdavConfiguration( const QString &path );
9696

97+
Q_INVOKABLE static QVariantMap importHistory();
98+
9799
signals:
98100
void urlChanged();
99101
void usernameChanged();

0 commit comments

Comments
 (0)