@@ -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+
434494void WebdavConnection::putLocalItems ()
435495{
436496 if ( !mWebdavMkDirs .isEmpty () )
0 commit comments