Index: src/kio_gdrive.cpp =================================================================== --- src/kio_gdrive.cpp +++ src/kio_gdrive.cpp @@ -81,7 +81,7 @@ KIOGDrive::KIOGDrive(const QByteArray &protocol, const QByteArray &pool_socket, const QByteArray &app_socket): - SlaveBase("gdrive", pool_socket, app_socket) + SlaveBase(GDriveUrl::Scheme.toLatin1(), pool_socket, app_socket) { Q_UNUSED(protocol); @@ -226,7 +226,7 @@ QUrl KIOGDrive::fileToUrl(const FilePtr &file, const QString &path) const { QUrl url; - url.setScheme(QStringLiteral("gdrive")); + url.setScheme(GDriveUrl::Scheme); url.setPath(path + QLatin1Char('/') + file->title()); QUrlQuery urlQuery; @@ -348,15 +348,14 @@ } QUrl url; - url.setScheme(QStringLiteral("gdrive")); + url.setScheme(GDriveUrl::Scheme); url.setPath(path); const auto gdriveUrl = GDriveUrl(url); Q_ASSERT(!gdriveUrl.isRoot()); - const QStringList components = gdriveUrl.pathComponents(); - if (gdriveUrl.isAccountRoot() || (components.size() == 2 && components[1] == QLatin1String("trash"))) { + if (gdriveUrl.isAccountRoot() || gdriveUrl.isTrashDir()) { qCDebug(GDRIVE) << "Resolved" << path << "to \"root\""; - return rootFolderId(components[0]); + return rootFolderId(gdriveUrl.account()); } // Try to recursively resolve ID of parent path - either from cache, or by @@ -373,9 +372,9 @@ (flags & KIOGDrive::PathIsFolder ? FileSearchQuery::Equals : FileSearchQuery::NotEquals), GDriveHelper::folderMimeType()); } - query.addQuery(FileSearchQuery::Title, FileSearchQuery::Equals, components.last()); + query.addQuery(FileSearchQuery::Title, FileSearchQuery::Equals, gdriveUrl.filename()); query.addQuery(FileSearchQuery::Parents, FileSearchQuery::In, parentId); - query.addQuery(FileSearchQuery::Trashed, FileSearchQuery::Equals, components[1] == QLatin1String("trash")); + query.addQuery(FileSearchQuery::Trashed, FileSearchQuery::Equals, gdriveUrl.inTrash()); const QString accountId = gdriveUrl.account(); FileFetchJob fetchJob(query, getAccount(accountId)); @@ -501,8 +500,7 @@ return; } QString parentId; - const auto components = gdriveUrl.pathComponents(); - if (components.size() == 2) { + if (gdriveUrl.parent().isAccountRoot()) { parentId = rootFolderId(accountId); } else { parentId = resolveFileIdFromPath(gdriveUrl.parentPath(), KIOGDrive::PathIsFolder); @@ -513,10 +511,8 @@ return; } - const QString folderName = components.last(); - FilePtr file(new File()); - file->setTitle(folderName); + file->setTitle(gdriveUrl.filename()); file->setMimeType(File::folderMimeType()); ParentReferencePtr parent(new ParentReference(parentId)); @@ -754,8 +750,8 @@ error(KIO::ERR_ACCESS_DENIED, url.path()); return false; } - const auto components = gdriveUrl.pathComponents(); - if (components.length() == 2) { + + if (gdriveUrl.parent().isAccountRoot()) { // Creating in root directory } else { const QString parentId = resolveFileIdFromPath(gdriveUrl.parentPath()); @@ -767,7 +763,7 @@ } FilePtr file(new File); - file->setTitle(components.last()); + file->setTitle(gdriveUrl.filename()); file->setParents(parentReferences); /* if (hasMetaData(QLatin1String("modified"))) { @@ -885,9 +881,8 @@ } QString destDirId; - const auto destPathComps = destGDriveUrl.pathComponents(); - const QString destFileName = destPathComps.last(); - if (destPathComps.size() == 2) { + const QString destFileName = destGDriveUrl.filename(); + if (destGDriveUrl.parent().isAccountRoot()) { destDirId = rootFolderId(destAccountId); } else { destDirId = resolveFileIdFromPath(destGDriveUrl.parentPath(), KIOGDrive::PathIsFolder); @@ -1026,8 +1021,6 @@ error(KIO::ERR_ACCESS_DENIED, dest.fileName()); return; } - const auto srcPathComps = srcGDriveUrl.pathComponents(); - const auto destPathComps = destGDriveUrl.pathComponents(); if (destGDriveUrl.isAccountRoot()) { // user is trying to move to root -> we are only renaming } else { @@ -1057,7 +1050,7 @@ parentReferences << ParentReferencePtr(new ParentReference(destDirId)); } - const QString destFileName = destPathComps.last(); + const QString destFileName = destGDriveUrl.filename(); FilePtr destFile(sourceFile); destFile->setTitle(destFileName);