diff --git a/autotests/urltest.cpp b/autotests/urltest.cpp --- a/autotests/urltest.cpp +++ b/autotests/urltest.cpp @@ -61,6 +61,13 @@ << QStringLiteral("/") << QStringList {QStringLiteral("foo@gmail.com")}; + QTest::newRow("account trash url") + << gdriveUrl(QStringLiteral("/foo@gmail.com/") + GDriveUrl::TrashDir) + << QStringLiteral("gdrive:/foo@gmail.com/") + GDriveUrl::TrashDir + << QStringLiteral("foo@gmail.com") + << QStringLiteral("/foo@gmail.com") + << QStringList {QStringLiteral("foo@gmail.com"), GDriveUrl::TrashDir}; + QTest::newRow("file in account root") << gdriveUrl(QStringLiteral("/foo@gmail.com/bar.txt")) << QStringLiteral("gdrive:/foo@gmail.com/bar.txt") diff --git a/src/gdrivehelper.cpp b/src/gdrivehelper.cpp --- a/src/gdrivehelper.cpp +++ b/src/gdrivehelper.cpp @@ -136,7 +136,7 @@ KIO::UDSEntry GDriveHelper::trash() { KIO::UDSEntry trashEntry; - trashEntry.insert(KIO::UDSEntry::UDS_NAME, QStringLiteral("trash")); + trashEntry.insert(KIO::UDSEntry::UDS_NAME, GDriveUrl::TrashDir); trashEntry.insert(KIO::UDSEntry::UDS_DISPLAY_NAME, i18n("Trash")); trashEntry.insert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFDIR); trashEntry.insert(KIO::UDSEntry::UDS_ICON_NAME, QStringLiteral("user-trash")); diff --git a/src/gdriveurl.h b/src/gdriveurl.h --- a/src/gdriveurl.h +++ b/src/gdriveurl.h @@ -31,9 +31,11 @@ QString account() const; bool isRoot() const; bool isAccountRoot() const; + bool isTrashDir() const; QString parentPath() const; QStringList pathComponents() const; + static const QString TrashDir; private: QUrl m_url; QStringList m_components; diff --git a/src/gdriveurl.cpp b/src/gdriveurl.cpp --- a/src/gdriveurl.cpp +++ b/src/gdriveurl.cpp @@ -20,6 +20,7 @@ #include "gdriveurl.h" +const QString GDriveUrl::TrashDir = QStringLiteral("trash"); GDriveUrl::GDriveUrl(const QUrl &url) : m_url(url) { @@ -46,6 +47,11 @@ return m_components.length() == 1; } +bool GDriveUrl::isTrashDir() const +{ + return m_components.length() == 2 && m_components.at(1) == TrashDir; +} + QString GDriveUrl::parentPath() const { if (isRoot()) { diff --git a/src/kio_gdrive.cpp b/src/kio_gdrive.cpp --- a/src/kio_gdrive.cpp +++ b/src/kio_gdrive.cpp @@ -354,7 +354,7 @@ 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]); } @@ -375,7 +375,7 @@ } query.addQuery(FileSearchQuery::Title, FileSearchQuery::Equals, components.last()); query.addQuery(FileSearchQuery::Parents, FileSearchQuery::In, parentId); - query.addQuery(FileSearchQuery::Trashed, FileSearchQuery::Equals, components[1] == QLatin1String("trash")); + query.addQuery(FileSearchQuery::Trashed, FileSearchQuery::Equals, components[1] == GDriveUrl::TrashDir); const QString accountId = gdriveUrl.account(); FileFetchJob fetchJob(query, getAccount(accountId));