Skip to content

Commit

Permalink
Merge pull request #5976 from opengisch/webdav_import_remember
Browse files Browse the repository at this point in the history
Implement remembrance into the import webdav dialog + tree view navigation of remote folders.
  • Loading branch information
nirvn authored Feb 6, 2025
2 parents f704eaf + 944c6e4 commit aa55495
Show file tree
Hide file tree
Showing 3 changed files with 381 additions and 123 deletions.
64 changes: 62 additions & 2 deletions src/core/webdavconnection.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -224,11 +224,10 @@ void WebdavConnection::processDirParserFinished()
}
}
}
mAvailablePaths.sort();

mIsFetchingAvailablePaths = false;
emit isFetchingAvailablePathsChanged();

mAvailablePaths.sort();
emit availablePathsChanged();
}
else if ( mIsImportingPath || mIsDownloadingPath )
Expand Down Expand Up @@ -419,6 +418,12 @@ void WebdavConnection::getWebdavItems()
jsonFile.write( jsonDocument.toJson() );
jsonFile.close();

QSettings settings;
settings.beginGroup( QStringLiteral( "/qfield/webdavImports/%1/users/%2" ).arg( QUrl::toPercentEncoding( mUrl ), QUrl::toPercentEncoding( mUsername ) ) );
settings.setValue( QStringLiteral( "lastImportPath" ), mProcessRemotePath );
settings.setValue( QStringLiteral( "lastImportTime" ), QDateTime::currentDateTime() );
settings.endGroup();

mIsImportingPath = false;
emit isImportingPathChanged();
emit importSuccessful( mProcessLocalPath );
Expand All @@ -431,6 +436,61 @@ void WebdavConnection::getWebdavItems()
}
}

QVariantMap WebdavConnection::importHistory()
{
QVariantMap history;

QSettings settings;
settings.beginGroup( QStringLiteral( "/qfield/webdavImports" ) );
const QStringList urls = settings.childGroups();
settings.endGroup();

QDateTime lastUrlImportTime( QDate( 1900, 0, 0 ), QTime( 0, 0, 0, 0 ) );
QString lastUrl;
QVariantMap urlsDetails;
for ( const QString &url : urls )
{
const QString decodedUrl = QUrl::fromPercentEncoding( url.toLatin1() );
settings.beginGroup( QStringLiteral( "/qfield/webdavImports/%1/users" ).arg( url ) );
const QStringList users = settings.childGroups();
settings.endGroup();

QDateTime lastUserImportTime( QDate( 1900, 0, 0 ), QTime( 0, 0, 0, 0 ) );
QString lastUser;
QVariantMap usersDetails;
for ( const QString &user : users )
{
const QString decodedUser = QUrl::fromPercentEncoding( user.toLatin1() );
settings.beginGroup( QStringLiteral( "/qfield/webdavImports/%1/users/%2" ).arg( url, user ) );

QVariantMap details;
details["lastImportPath"] = settings.value( "lastImportPath" ).toString();
usersDetails[decodedUser] = details;

if ( lastUserImportTime < settings.value( "lastImportTime" ).toDateTime() )
{
lastUserImportTime = settings.value( "lastImportTime" ).toDateTime();
lastUser = decodedUser;
}
if ( lastUrlImportTime < settings.value( "lastImportTime" ).toDateTime() )
{
lastUrlImportTime = settings.value( "lastImportTime" ).toDateTime();
lastUrl = decodedUrl;
}
}

QVariantMap details;
details["users"] = usersDetails;
details["lastUser"] = lastUser;
urlsDetails[decodedUrl] = details;
}

history["urls"] = urlsDetails;
history["lastUrl"] = lastUrl;

return history;
}

void WebdavConnection::putLocalItems()
{
if ( !mWebdavMkDirs.isEmpty() )
Expand Down
2 changes: 2 additions & 0 deletions src/core/webdavconnection.h
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,8 @@ class WebdavConnection : public QObject

Q_INVOKABLE static bool hasWebdavConfiguration( const QString &path );

Q_INVOKABLE static QVariantMap importHistory();

signals:
void urlChanged();
void usernameChanged();
Expand Down
Loading

0 comments on commit aa55495

Please sign in to comment.