#include <KConfigGroup>
#include <KAboutData>
#include <KFilePlacesModel>
+#include <KProtocolInfo>
#include "dolphin_generalsettings.h"
#include "panels/places/placesitemmodel.h"
Q_DECLARE_METATYPE(KItemRangeList)
Q_DECLARE_METATYPE(KItemRange)
-#ifdef Q_OS_WIN
-//c:\ as root for windows
-#define KDE_ROOT_PATH "C:\\"
-#else
-#define KDE_ROOT_PATH "/"
-#endif
-
static QString bookmarksFile()
{
return QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation) + "/user-places.xbel";
PlacesItemModel* m_model;
QSet<int> m_tobeRemoved;
QMap<QString, QDBusInterface *> m_interfacesMap;
- int m_expectedModelCount = 15;
+ int m_expectedModelCount = qEnvironmentVariableIsSet("KDE_FULL_SESSION") && KProtocolInfo::isKnownProtocol(QStringLiteral("recentlyused")) ? 16 : 14;
bool m_hasDesktopFolder = false;
+ bool m_hasDocumentsFolder = false;
bool m_hasDownloadsFolder = false;
void setBalooEnabled(bool enabled);
urls << QDir::homePath() + QStringLiteral("/Desktop");
}
+ if (m_hasDocumentsFolder) {
+ urls << QDir::homePath() + QStringLiteral("/Documents");
+ }
+
if (m_hasDownloadsFolder) {
urls << QDir::homePath() + QStringLiteral("/Downloads");
}
- urls << QStringLiteral(KDE_ROOT_PATH) << QStringLiteral("trash:/")
+ urls << QStringLiteral("trash:/")
<< QStringLiteral("remote:/")
- << QStringLiteral("/media/nfs")
- << QStringLiteral("timeline:/today") << QStringLiteral("timeline:/yesterday")
+ << QStringLiteral("/media/nfs");
+
+ if (qEnvironmentVariableIsSet("KDE_FULL_SESSION") && KProtocolInfo::isKnownProtocol(QStringLiteral("recentlyused"))) {
+ urls << QStringLiteral("recentlyused:/files");
+ urls << QStringLiteral("recentlyused:/locations");
+ }
+
+ urls << QStringLiteral("timeline:/today") << QStringLiteral("timeline:/yesterday")
<< QStringLiteral("search:/documents") << QStringLiteral("search:/images") << QStringLiteral("search:/audio") << QStringLiteral("search:/videos")
<< QStringLiteral("/foreign")
<< QStringLiteral("/media/floppy0") << QStringLiteral("/media/XO-Y4") << QStringLiteral("/media/cdrom");
m_expectedModelCount++;
}
+ if (QDir(QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation)).exists()) {
+ m_hasDocumentsFolder = true;
+ m_expectedModelCount++;
+ }
+
if (QDir(QStandardPaths::writableLocation(QStandardPaths::DownloadLocation)).exists()) {
m_hasDownloadsFolder = true;
m_expectedModelCount++;
void PlacesItemModelTest::testGroups()
{
const auto groups = m_model->groups();
- int expectedRemoteIndex = 3;
+ int expectedRemoteIndex = 2;
if (m_hasDesktopFolder) {
expectedRemoteIndex++;
}
+ if (m_hasDocumentsFolder) {
+ expectedRemoteIndex++;
+ }
if (m_hasDownloadsFolder) {
expectedRemoteIndex++;
}
QCOMPARE(groups.at(1).second.toString(), QStringLiteral("Remote"));
QCOMPARE(groups.at(2).first, expectedRemoteIndex + 2);
- QCOMPARE(groups.at(2).second.toString(), QStringLiteral("Recently Saved"));
+ QCOMPARE(groups.at(2).second.toString(), QStringLiteral("Recent"));
+
+ if (qEnvironmentVariableIsSet("KDE_FULL_SESSION") && KProtocolInfo::isKnownProtocol(QStringLiteral("recentlyused"))) {
+ expectedRemoteIndex += 2;
+ }
QCOMPARE(groups.at(3).first, expectedRemoteIndex + 4);
QCOMPARE(groups.at(3).second.toString(), QStringLiteral("Search For"));
QTest::newRow("Baloo - Documents") << QUrl("search:/documents") << false << true << QStringLiteral("Search For") << false;
// baloo - timeline
- QTest::newRow("Baloo - Today") << QUrl("timeline:/today") << false << true << QStringLiteral("Recently Saved") << false;
+ QTest::newRow("Baloo - Today") << QUrl("timeline:/today") << false << true << QStringLiteral("Recent") << false;
// devices
QTest::newRow("Devices - Floppy") << QUrl("file:///media/floppy0") << false << false << QStringLiteral("Removable Devices") << false;
PlacesItemModel *model = new PlacesItemModel();
- int tempDirIndex = 3;
+ int tempDirIndex = 2;
if (m_hasDesktopFolder) {
tempDirIndex++;
}
+ if (m_hasDocumentsFolder) {
+ tempDirIndex++;
+ }
if (m_hasDownloadsFolder) {
tempDirIndex++;
}
void PlacesItemModelTest::testSystemItems()
{
- int tempDirIndex = 3;
+ int tempDirIndex = 2;
if (m_hasDesktopFolder) {
tempDirIndex++;
}
+ if (m_hasDocumentsFolder) {
+ tempDirIndex++;
+ }
if (m_hasDownloadsFolder) {
tempDirIndex++;
}
void PlacesItemModelTest::testEditBookmark()
{
- int tempDirIndex = 1;
+ int tempDirIndex = 2;
if (m_hasDesktopFolder) {
tempDirIndex++;
}
+ if (m_hasDocumentsFolder) {
+ tempDirIndex++;
+ }
if (m_hasDownloadsFolder) {
tempDirIndex++;
}
createPlaceItem(QStringLiteral("Temporary Dir"), QUrl::fromLocalFile(QStandardPaths::writableLocation(QStandardPaths::TempLocation)), QString());
// make sure that the new item will be removed later
- schedulePlaceRemoval(tempDirIndex + 2);
+ schedulePlaceRemoval(tempDirIndex);
QSignalSpy itemsChangedSply(m_model, &PlacesItemModel::itemsChanged);
void PlacesItemModelTest::testEditAfterCreation()
{
- int tempDirIndex = 1;
+ int tempDirIndex = 2;
if (m_hasDesktopFolder) {
tempDirIndex++;
}
+ if (m_hasDocumentsFolder) {
+ tempDirIndex++;
+ }
if (m_hasDownloadsFolder) {
tempDirIndex++;
}
QTRY_COMPARE(model->count(), m_model->count());
// make sure that the new item will be removed later
- schedulePlaceRemoval(tempDirIndex + 2);
+ schedulePlaceRemoval(tempDirIndex);
// modify place text
PlacesItem *item = m_model->placesItem(tempDirIndex);
void PlacesItemModelTest::testEditMetadata()
{
- int tempDirIndex = 1;
+ int tempDirIndex = 2;
if (m_hasDesktopFolder) {
tempDirIndex++;
}
+ if (m_hasDocumentsFolder) {
+ tempDirIndex++;
+ }
if (m_hasDownloadsFolder) {
tempDirIndex++;
}
QTRY_COMPARE(model->count(), m_model->count());
// make sure that the new item will be removed later
- schedulePlaceRemoval(tempDirIndex + 2);
+ schedulePlaceRemoval(tempDirIndex);
// modify place metadata
- PlacesItem *item = m_model->placesItem(tempDirIndex);
- item->bookmark().setMetaDataItem(QStringLiteral("OnlyInApp"), KAboutData::applicationData().componentName());
+ auto bookmark = m_model->placesItem(tempDirIndex)->bookmark();
+ bookmark.setMetaDataItem(QStringLiteral("OnlyInApp"), KAboutData::applicationData().componentName());
m_model->refresh();
// check if the place was modified in both models
void PlacesItemModelTest::testRefresh()
{
- int tempDirIndex = 3;
+ int tempDirIndex = 2;
if (m_hasDesktopFolder) {
tempDirIndex++;
}
+ if (m_hasDocumentsFolder) {
+ tempDirIndex++;
+ }
if (m_hasDownloadsFolder) {
tempDirIndex++;
}
void PlacesItemModelTest::testDragAndDrop()
{
- int lastIndex = 2; // last index of places group
+ int lastIndex = 1; // last index of places group
if (m_hasDesktopFolder) {
lastIndex++;
}
+ if (m_hasDocumentsFolder) {
+ lastIndex++;
+ }
if (m_hasDownloadsFolder) {
lastIndex++;
}
QList<QVariant> args;
KItemRangeList range;
QStringList urls = initialUrls();
+
QSignalSpy itemsInsertedSpy(m_model, &PlacesItemModel::itemsInserted);
QSignalSpy itemsRemovedSpy(m_model, &PlacesItemModel::itemsRemoved);
void PlacesItemModelTest::renameAfterCreation()
{
- int tempDirIndex = 1;
+ int tempDirIndex = 2;
if (m_hasDesktopFolder) {
tempDirIndex++;
}
+ if (m_hasDocumentsFolder) {
+ tempDirIndex++;
+ }
if (m_hasDownloadsFolder) {
tempDirIndex++;
}
// create a new place
createPlaceItem(QStringLiteral("Temporary Dir"), tempUrl, QString());
- urls.insert(tempDirIndex + 2, tempUrl.toLocalFile());
+ urls.insert(tempDirIndex, tempUrl.toLocalFile());
// make sure that the new item will be removed later
- schedulePlaceRemoval(tempDirIndex + 2);
+ schedulePlaceRemoval(tempDirIndex);
CHECK_PLACES_URLS(urls);
QCOMPARE(model->count(), m_model->count());