X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/4b70446c17dff6646c11966670bcbe145d07c685..0aed243bebae72d85aa06032bdf2d6ba2b58141d:/src/panels/places/placesitemmodel.cpp diff --git a/src/panels/places/placesitemmodel.cpp b/src/panels/places/placesitemmodel.cpp index dc2b95c36..8a02ead01 100644 --- a/src/panels/places/placesitemmodel.cpp +++ b/src/panels/places/placesitemmodel.cpp @@ -26,20 +26,20 @@ #include "dolphin_generalsettings.h" #include -#include #include -#include -#include -#include -#include -#include -#include +#include "dolphindebug.h" +#include +#include +#include +#include #include +#include #include "placesitem.h" #include #include #include #include +#include #include #include @@ -52,19 +52,19 @@ #include #ifdef HAVE_BALOO - #include - #include + #include + #include #endif namespace { // As long as KFilePlacesView from kdelibs is available in parallel, the - // system-bookmarks for "Recently Accessed" and "Search For" should be + // system-bookmarks for "Recently Saved" and "Search For" should be // shown only inside the Places Panel. This is necessary as the stored // URLs needs to get translated to a Baloo-search-URL on-the-fly to // be independent from changes in the Baloo-search-URL-syntax. // Hence a prefix to the application-name of the stored bookmarks is // added, which is only read by PlacesItemModel. - const char* AppNamePrefix = "-places-panel"; + const char AppNamePrefix[] = "-places-panel"; } PlacesItemModel::PlacesItemModel(QObject* parent) : @@ -78,7 +78,6 @@ PlacesItemModel::PlacesItemModel(QObject* parent) : m_systemBookmarksIndexes(), m_bookmarkedItems(), m_hiddenItemToRemove(-1), - m_saveBookmarksTimer(0), m_updateBookmarksTimer(0), m_storageSetupInProgress() { @@ -86,8 +85,8 @@ PlacesItemModel::PlacesItemModel(QObject* parent) : Baloo::IndexerConfig config; m_fileIndexingEnabled = config.fileIndexingEnabled(); #endif - const QString file = KStandardDirs::locateLocal("data", "kfileplaces/bookmarks.xml"); - m_bookmarkManager = KBookmarkManager::managerForFile(file, "kfilePlaces"); + const QString file = QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation) + "/user-places.xbel"; + m_bookmarkManager = KBookmarkManager::managerForExternalFile(file); createSystemBookmarks(); initializeAvailableDevices(); @@ -95,31 +94,23 @@ PlacesItemModel::PlacesItemModel(QObject* parent) : const int syncBookmarksTimeout = 100; - m_saveBookmarksTimer = new QTimer(this); - m_saveBookmarksTimer->setInterval(syncBookmarksTimeout); - m_saveBookmarksTimer->setSingleShot(true); - connect(m_saveBookmarksTimer, SIGNAL(timeout()), this, SLOT(saveBookmarks())); - m_updateBookmarksTimer = new QTimer(this); m_updateBookmarksTimer->setInterval(syncBookmarksTimeout); m_updateBookmarksTimer->setSingleShot(true); - connect(m_updateBookmarksTimer, SIGNAL(timeout()), this, SLOT(updateBookmarks())); + connect(m_updateBookmarksTimer, &QTimer::timeout, this, &PlacesItemModel::updateBookmarks); - connect(m_bookmarkManager, SIGNAL(changed(QString,QString)), - m_updateBookmarksTimer, SLOT(start())); - connect(m_bookmarkManager, SIGNAL(bookmarksChanged(QString)), - m_updateBookmarksTimer, SLOT(start())); + connect(m_bookmarkManager, &KBookmarkManager::changed, + m_updateBookmarksTimer, static_cast(&QTimer::start)); } PlacesItemModel::~PlacesItemModel() { - saveBookmarks(); qDeleteAll(m_bookmarkedItems); m_bookmarkedItems.clear(); } PlacesItem* PlacesItemModel::createPlacesItem(const QString& text, - const KUrl& url, + const QUrl& url, const QString& iconName) { const KBookmark bookmark = PlacesItem::createBookmark(m_bookmarkManager, text, url, iconName); @@ -195,7 +186,7 @@ void PlacesItemModel::setHiddenItemsShown(bool show) } #ifdef PLACESITEMMODEL_DEBUG - kDebug() << "Changed visibility of hidden items"; + qCDebug(DolphinDebug) << "Changed visibility of hidden items"; showModelState(); #endif } @@ -205,15 +196,19 @@ bool PlacesItemModel::hiddenItemsShown() const return m_hiddenItemsShown; } -int PlacesItemModel::closestItem(const KUrl& url) const +int PlacesItemModel::closestItem(const QUrl& url) const { int foundIndex = -1; int maxLength = 0; for (int i = 0; i < count(); ++i) { - const KUrl itemUrl = placesItem(i)->url(); - if (itemUrl.isParentOf(url)) { - const int length = itemUrl.prettyUrl().length(); + const QUrl itemUrl = placesItem(i)->url(); + if (url == itemUrl) { + // We can't find a closer one, so stop here. + foundIndex = i; + break; + } else if (itemUrl.isParentOf(url)) { + const int length = itemUrl.path().length(); if (length > maxLength) { foundIndex = i; maxLength = length; @@ -254,7 +249,7 @@ QAction* PlacesItemModel::ejectAction(int index) const { const PlacesItem* item = placesItem(index); if (item && item->device().is()) { - return new QAction(KIcon("media-eject"), i18nc("@item", "Eject '%1'", item->text()), 0); + return new QAction(QIcon::fromTheme(QStringLiteral("media-eject")), i18nc("@item", "Eject '%1'", item->text()), 0); } return 0; @@ -293,17 +288,17 @@ QAction* PlacesItemModel::teardownAction(int index) const text = i18nc("@item", "Release '%1'", label); } else if (removable || hotPluggable) { text = i18nc("@item", "Safely Remove '%1'", label); - iconName = "media-eject"; + iconName = QStringLiteral("media-eject"); } else { text = i18nc("@item", "Unmount '%1'", label); - iconName = "media-eject"; + iconName = QStringLiteral("media-eject"); } if (iconName.isEmpty()) { return new QAction(text, 0); } - return new QAction(KIcon(iconName), text, 0); + return new QAction(QIcon::fromTheme(iconName), text, 0); } void PlacesItemModel::requestEject(int index) @@ -312,9 +307,8 @@ void PlacesItemModel::requestEject(int index) if (item) { Solid::OpticalDrive* drive = item->device().parent().as(); if (drive) { - connect(drive, SIGNAL(ejectDone(Solid::ErrorType,QVariant,QString)), - this, SLOT(slotStorageTeardownDone(Solid::ErrorType,QVariant)), - Qt::UniqueConnection); + connect(drive, &Solid::OpticalDrive::ejectDone, + this, &PlacesItemModel::slotStorageTeardownDone); drive->eject(); } else { const QString label = item->text(); @@ -330,9 +324,8 @@ void PlacesItemModel::requestTeardown(int index) if (item) { Solid::StorageAccess* access = item->device().as(); if (access) { - connect(access, SIGNAL(teardownDone(Solid::ErrorType,QVariant,QString)), - this, SLOT(slotStorageTeardownDone(Solid::ErrorType,QVariant)), - Qt::UniqueConnection); + connect(access, &Solid::StorageAccess::teardownDone, + this, &PlacesItemModel::slotStorageTeardownDone); access->teardown(); } } @@ -360,9 +353,8 @@ void PlacesItemModel::requestStorageSetup(int index) m_storageSetupInProgress[access] = index; - connect(access, SIGNAL(setupDone(Solid::ErrorType,QVariant,QString)), - this, SLOT(slotStorageSetupDone(Solid::ErrorType,QVariant,QString)), - Qt::UniqueConnection); + connect(access, &Solid::StorageAccess::setupDone, + this, &PlacesItemModel::slotStorageSetupDone); access->setup(); } @@ -370,13 +362,13 @@ void PlacesItemModel::requestStorageSetup(int index) QMimeData* PlacesItemModel::createMimeData(const KItemSet& indexes) const { - KUrl::List urls; + QList urls; QByteArray itemData; QDataStream stream(&itemData, QIODevice::WriteOnly); - foreach (int index, indexes) { - const KUrl itemUrl = placesItem(index)->url(); + for (int index : indexes) { + const QUrl itemUrl = placesItem(index)->url(); if (itemUrl.isValid()) { urls << itemUrl; } @@ -385,7 +377,7 @@ QMimeData* PlacesItemModel::createMimeData(const KItemSet& indexes) const QMimeData* mimeData = new QMimeData(); if (!urls.isEmpty()) { - urls.populateMimeData(mimeData); + mimeData->setUrls(urls); } mimeData->setData(internalMimeType(), itemData); @@ -424,19 +416,20 @@ void PlacesItemModel::dropMimeDataBefore(int index, const QMimeData* mimeData) const int dropIndex = groupedDropIndex(index, newItem); insertItem(dropIndex, newItem); - } else if (mimeData->hasFormat("text/uri-list")) { + } else if (mimeData->hasFormat(QStringLiteral("text/uri-list"))) { // One or more items must be added to the model - const KUrl::List urls = KUrl::List::fromMimeData(mimeData); + const QList urls = KUrlMimeData::urlsFromMimeData(mimeData); for (int i = urls.count() - 1; i >= 0; --i) { - const KUrl& url = urls[i]; + const QUrl& url = urls[i]; QString text = url.fileName(); if (text.isEmpty()) { text = url.host(); } - if (url.isLocalFile() && !QFileInfo(url.toLocalFile()).isDir()) { - // Only directories are allowed + if ((url.isLocalFile() && !QFileInfo(url.toLocalFile()).isDir()) + || url.scheme() == QLatin1String("trash")) { + // Only directories outside the trash are allowed continue; } @@ -447,12 +440,12 @@ void PlacesItemModel::dropMimeDataBefore(int index, const QMimeData* mimeData) } } -KUrl PlacesItemModel::convertedUrl(const KUrl& url) +QUrl PlacesItemModel::convertedUrl(const QUrl& url) { - KUrl newUrl = url; - if (url.protocol() == QLatin1String("timeline")) { + QUrl newUrl = url; + if (url.scheme() == QLatin1String("timeline")) { newUrl = createTimelineUrl(url); - } else if (url.protocol() == QLatin1String("search")) { + } else if (url.scheme() == QLatin1String("search")) { newUrl = createSearchUrl(url); } @@ -497,10 +490,8 @@ void PlacesItemModel::onItemInserted(int index) m_bookmarkedItems.insert(bookmarkIndex, 0); } - triggerBookmarksSaving(); - #ifdef PLACESITEMMODEL_DEBUG - kDebug() << "Inserted item" << index; + qCDebug(DolphinDebug) << "Inserted item" << index; showModelState(); #endif } @@ -517,10 +508,8 @@ void PlacesItemModel::onItemRemoved(int index, KStandardItem* removedItem) Q_ASSERT(!m_bookmarkedItems[boomarkIndex]); m_bookmarkedItems.removeAt(boomarkIndex); - triggerBookmarksSaving(); - #ifdef PLACESITEMMODEL_DEBUG - kDebug() << "Removed item" << index; + qCDebug(DolphinDebug) << "Removed item" << index; showModelState(); #endif } @@ -545,11 +534,9 @@ void PlacesItemModel::onItemChanged(int index, const QSet& changedRo if (changedRoles.contains("isHidden")) { if (!m_hiddenItemsShown && changedItem->isHidden()) { m_hiddenItemToRemove = index; - QTimer::singleShot(0, this, SLOT(hideItem())); + QTimer::singleShot(0, this, static_cast(&PlacesItemModel::hideItem)); } } - - triggerBookmarksSaving(); } void PlacesItemModel::slotDeviceAdded(const QString& udi) @@ -601,14 +588,13 @@ void PlacesItemModel::slotStorageSetupDone(Solid::ErrorType error, { Q_UNUSED(udi); - Q_ASSERT(!m_storageSetupInProgress.isEmpty()); const int index = m_storageSetupInProgress.take(sender()); const PlacesItem* item = placesItem(index); if (!item) { return; } - if (error) { + if (error != Solid::NoError) { if (errorData.isValid()) { emit errorMessage(i18nc("@info", "An error occurred while accessing '%1', the system responded: %2", item->text(), @@ -652,16 +638,16 @@ void PlacesItemModel::updateBookmarks() // a hidden item. The content of the bookmark might // have been changed, so an update is done. found = true; - if (newBookmark.metaDataItem("UDI").isEmpty()) { + if (newBookmark.metaDataItem(QStringLiteral("UDI")).isEmpty()) { item->setBookmark(newBookmark); - item->setText(i18nc("KFile System Bookmarks", newBookmark.text().toUtf8().data())); + item->setText(i18nc("KFile System Bookmarks", newBookmark.text().toUtf8().constData())); } break; } } if (!found) { - const QString udi = newBookmark.metaDataItem("UDI"); + const QString udi = newBookmark.metaDataItem(QStringLiteral("UDI")); /* * See Bug 304878 @@ -731,7 +717,7 @@ void PlacesItemModel::loadBookmarks() KBookmark bookmark = root.first(); QSet devices = m_availableDevices; - QSet missingSystemBookmarks; + QSet missingSystemBookmarks; foreach (const SystemBookmarkData& data, m_systemBookmarks) { missingSystemBookmarks.insert(data.url); } @@ -741,7 +727,7 @@ void PlacesItemModel::loadBookmarks() // items should always be collected in one group so the items are collected first // in separate lists before inserting them. QList placesItems; - QList recentlyAccessedItems; + QList recentlySavedItems; QList searchForItems; QList devicesItems; @@ -752,7 +738,7 @@ void PlacesItemModel::loadBookmarks() devices.remove(item->udi()); devicesItems.append(item); } else { - const KUrl url = bookmark.url(); + const QUrl url = bookmark.url(); if (missingSystemBookmarks.contains(url)) { missingSystemBookmarks.remove(url); @@ -761,16 +747,16 @@ void PlacesItemModel::loadBookmarks() // text, the retranslation will fail and the users custom text is still used. // It is important to use "KFile System Bookmarks" as context (see // createSystemBookmarks()). - item->setText(i18nc("KFile System Bookmarks", bookmark.text().toUtf8().data())); + item->setText(i18nc("KFile System Bookmarks", bookmark.text().toUtf8().constData())); item->setSystemItem(true); } switch (item->groupType()) { - case PlacesItem::PlacesType: placesItems.append(item); break; - case PlacesItem::RecentlyAccessedType: recentlyAccessedItems.append(item); break; - case PlacesItem::SearchForType: searchForItems.append(item); break; + case PlacesItem::PlacesType: placesItems.append(item); break; + case PlacesItem::RecentlySavedType: recentlySavedItems.append(item); break; + case PlacesItem::SearchForType: searchForItems.append(item); break; case PlacesItem::DevicesType: - default: Q_ASSERT(false); break; + default: Q_ASSERT(false); break; } } } @@ -785,17 +771,18 @@ void PlacesItemModel::loadBookmarks() if (missingSystemBookmarks.contains(data.url)) { PlacesItem* item = createSystemPlacesItem(data); switch (item->groupType()) { - case PlacesItem::PlacesType: placesItems.append(item); break; - case PlacesItem::RecentlyAccessedType: recentlyAccessedItems.append(item); break; - case PlacesItem::SearchForType: searchForItems.append(item); break; + case PlacesItem::PlacesType: placesItems.append(item); break; + case PlacesItem::RecentlySavedType: recentlySavedItems.append(item); break; + case PlacesItem::SearchForType: searchForItems.append(item); break; case PlacesItem::DevicesType: - default: Q_ASSERT(false); break; + default: Q_ASSERT(false); break; } } } } // Create items for devices that have not been stored as bookmark yet + devicesItems.reserve(devicesItems.count() + devices.count()); foreach (const QString& udi, devices) { const KBookmark bookmark = PlacesItem::createDeviceBookmark(m_bookmarkManager, udi); devicesItems.append(new PlacesItem(bookmark)); @@ -803,7 +790,7 @@ void PlacesItemModel::loadBookmarks() QList items; items.append(placesItems); - items.append(recentlyAccessedItems); + items.append(recentlySavedItems); items.append(searchForItems); items.append(devicesItems); @@ -816,7 +803,7 @@ void PlacesItemModel::loadBookmarks() } #ifdef PLACESITEMMODEL_DEBUG - kDebug() << "Loaded bookmarks"; + qCDebug(DolphinDebug) << "Loaded bookmarks"; showModelState(); #endif } @@ -824,16 +811,16 @@ void PlacesItemModel::loadBookmarks() bool PlacesItemModel::acceptBookmark(const KBookmark& bookmark, const QSet& availableDevices) const { - const QString udi = bookmark.metaDataItem("UDI"); - const KUrl url = bookmark.url(); - const QString appName = bookmark.metaDataItem("OnlyInApp"); + const QString udi = bookmark.metaDataItem(QStringLiteral("UDI")); + const QUrl url = bookmark.url(); + const QString appName = bookmark.metaDataItem(QStringLiteral("OnlyInApp")); const bool deviceAvailable = availableDevices.contains(udi); const bool allowedHere = (appName.isEmpty() - || appName == KGlobal::mainComponent().componentName() - || appName == KGlobal::mainComponent().componentName() + AppNamePrefix) - && (m_fileIndexingEnabled || (url.protocol() != QLatin1String("timeline") && - url.protocol() != QLatin1String("search"))); + || appName == KAboutData::applicationData().componentName() + || appName == KAboutData::applicationData().componentName() + AppNamePrefix) + && (m_fileIndexingEnabled || (url.scheme() != QLatin1String("timeline") && + url.scheme() != QLatin1String("search"))); return (udi.isEmpty() && allowedHere) || deviceAvailable; } @@ -845,23 +832,23 @@ PlacesItem* PlacesItemModel::createSystemPlacesItem(const SystemBookmarkData& da data.url, data.icon); - const QString protocol = data.url.protocol(); + const QString protocol = data.url.scheme(); if (protocol == QLatin1String("timeline") || protocol == QLatin1String("search")) { // As long as the KFilePlacesView from kdelibs is available, the system-bookmarks - // for "Recently Accessed" and "Search For" should be a setting available only + // for "Recently Saved" and "Search For" should be a setting available only // in the Places Panel (see description of AppNamePrefix for more details). - const QString appName = KGlobal::mainComponent().componentName() + AppNamePrefix; - bookmark.setMetaDataItem("OnlyInApp", appName); + const QString appName = KAboutData::applicationData().componentName() + AppNamePrefix; + bookmark.setMetaDataItem(QStringLiteral("OnlyInApp"), appName); } PlacesItem* item = new PlacesItem(bookmark); item->setSystemItem(true); - // Create default view-properties for all "Search For" and "Recently Accessed" bookmarks + // Create default view-properties for all "Search For" and "Recently Saved" bookmarks // in case if the user has not already created custom view-properties for a corresponding // query yet. const bool createDefaultViewProperties = (item->groupType() == PlacesItem::SearchForType || - item->groupType() == PlacesItem::RecentlyAccessedType) && + item->groupType() == PlacesItem::RecentlySavedType) && !GeneralSettings::self()->globalViewProps(); if (createDefaultViewProperties) { ViewProperties props(convertedUrl(data.url)); @@ -870,22 +857,22 @@ PlacesItem* PlacesItemModel::createSystemPlacesItem(const SystemBookmarkData& da if (path == QLatin1String("/documents")) { props.setViewMode(DolphinView::DetailsView); props.setPreviewsShown(false); - props.setVisibleRoles(QList() << "text" << "path"); + props.setVisibleRoles({"text", "path"}); } else if (path == QLatin1String("/images")) { props.setViewMode(DolphinView::IconsView); props.setPreviewsShown(true); - props.setVisibleRoles(QList() << "text" << "imageSize"); + props.setVisibleRoles({"text", "imageSize"}); } else if (path == QLatin1String("/audio")) { props.setViewMode(DolphinView::DetailsView); props.setPreviewsShown(false); - props.setVisibleRoles(QList() << "text" << "artist" << "album"); + props.setVisibleRoles({"text", "artist", "album"}); } else if (path == QLatin1String("/videos")) { props.setViewMode(DolphinView::IconsView); props.setPreviewsShown(true); - props.setVisibleRoles(QList() << "text"); - } else if (data.url.protocol() == "timeline") { + props.setVisibleRoles({"text"}); + } else if (data.url.scheme() == QLatin1String("timeline")) { props.setViewMode(DolphinView::DetailsView); - props.setVisibleRoles(QList() << "text" << "date"); + props.setVisibleRoles({"text", "modificationtime"}); } } } @@ -902,43 +889,43 @@ void PlacesItemModel::createSystemBookmarks() // i18nc call is done after reading the bookmark. The reason why the i18nc call is not // done here is because otherwise switching the language would not result in retranslating the // bookmarks. - m_systemBookmarks.append(SystemBookmarkData(KUrl(KUser().homeDir()), - "user-home", + m_systemBookmarks.append(SystemBookmarkData(QUrl::fromLocalFile(KUser().homeDir()), + QStringLiteral("user-home"), I18N_NOOP2("KFile System Bookmarks", "Home"))); - m_systemBookmarks.append(SystemBookmarkData(KUrl("remote:/"), - "network-workgroup", + m_systemBookmarks.append(SystemBookmarkData(QUrl(QStringLiteral("remote:/")), + QStringLiteral("network-workgroup"), I18N_NOOP2("KFile System Bookmarks", "Network"))); - m_systemBookmarks.append(SystemBookmarkData(KUrl("/"), - "folder-red", + m_systemBookmarks.append(SystemBookmarkData(QUrl::fromLocalFile(QStringLiteral("/")), + QStringLiteral("folder-red"), I18N_NOOP2("KFile System Bookmarks", "Root"))); - m_systemBookmarks.append(SystemBookmarkData(KUrl("trash:/"), - "user-trash", + m_systemBookmarks.append(SystemBookmarkData(QUrl(QStringLiteral("trash:/")), + QStringLiteral("user-trash"), I18N_NOOP2("KFile System Bookmarks", "Trash"))); if (m_fileIndexingEnabled) { - m_systemBookmarks.append(SystemBookmarkData(KUrl("timeline:/today"), - "go-jump-today", + m_systemBookmarks.append(SystemBookmarkData(QUrl(QStringLiteral("timeline:/today")), + QStringLiteral("go-jump-today"), I18N_NOOP2("KFile System Bookmarks", "Today"))); - m_systemBookmarks.append(SystemBookmarkData(KUrl("timeline:/yesterday"), - "view-calendar-day", + m_systemBookmarks.append(SystemBookmarkData(QUrl(QStringLiteral("timeline:/yesterday")), + QStringLiteral("view-calendar-day"), I18N_NOOP2("KFile System Bookmarks", "Yesterday"))); - m_systemBookmarks.append(SystemBookmarkData(KUrl("timeline:/thismonth"), - "view-calendar-month", + m_systemBookmarks.append(SystemBookmarkData(QUrl(QStringLiteral("timeline:/thismonth")), + QStringLiteral("view-calendar-month"), I18N_NOOP2("KFile System Bookmarks", "This Month"))); - m_systemBookmarks.append(SystemBookmarkData(KUrl("timeline:/lastmonth"), - "view-calendar-month", + m_systemBookmarks.append(SystemBookmarkData(QUrl(QStringLiteral("timeline:/lastmonth")), + QStringLiteral("view-calendar-month"), I18N_NOOP2("KFile System Bookmarks", "Last Month"))); - m_systemBookmarks.append(SystemBookmarkData(KUrl("search:/documents"), - "folder-txt", + m_systemBookmarks.append(SystemBookmarkData(QUrl(QStringLiteral("search:/documents")), + QStringLiteral("folder-text"), I18N_NOOP2("KFile System Bookmarks", "Documents"))); - m_systemBookmarks.append(SystemBookmarkData(KUrl("search:/images"), - "folder-image", + m_systemBookmarks.append(SystemBookmarkData(QUrl(QStringLiteral("search:/images")), + QStringLiteral("folder-images"), I18N_NOOP2("KFile System Bookmarks", "Images"))); - m_systemBookmarks.append(SystemBookmarkData(KUrl("search:/audio"), - "folder-sound", + m_systemBookmarks.append(SystemBookmarkData(QUrl(QStringLiteral("search:/audio")), + QStringLiteral("folder-sound"), I18N_NOOP2("KFile System Bookmarks", "Audio Files"))); - m_systemBookmarks.append(SystemBookmarkData(KUrl("search:/videos"), - "folder-video", + m_systemBookmarks.append(SystemBookmarkData(QUrl(QStringLiteral("search:/videos")), + QStringLiteral("folder-videos"), I18N_NOOP2("KFile System Bookmarks", "Videos"))); } @@ -954,16 +941,16 @@ void PlacesItemModel::clear() { void PlacesItemModel::initializeAvailableDevices() { - QString predicate("[[[[ StorageVolume.ignored == false AND [ StorageVolume.usage == 'FileSystem' OR StorageVolume.usage == 'Encrypted' ]]" + QString predicate(QStringLiteral("[[[[ StorageVolume.ignored == false AND [ StorageVolume.usage == 'FileSystem' OR StorageVolume.usage == 'Encrypted' ]]" " OR " "[ IS StorageAccess AND StorageDrive.driveType == 'Floppy' ]]" " OR " "OpticalDisc.availableContent & 'Audio' ]" " OR " - "StorageAccess.ignored == false ]"); + "StorageAccess.ignored == false ]")); - if (KProtocolInfo::isKnownProtocol("mtp")) { + if (KProtocolInfo::isKnownProtocol(QStringLiteral("mtp"))) { predicate.prepend("["); predicate.append(" OR PortableMediaPlayer.supportedProtocols == 'mtp']"); } @@ -972,8 +959,8 @@ void PlacesItemModel::initializeAvailableDevices() Q_ASSERT(m_predicate.isValid()); Solid::DeviceNotifier* notifier = Solid::DeviceNotifier::instance(); - connect(notifier, SIGNAL(deviceAdded(QString)), this, SLOT(slotDeviceAdded(QString))); - connect(notifier, SIGNAL(deviceRemoved(QString)), this, SLOT(slotDeviceRemoved(QString))); + connect(notifier, &Solid::DeviceNotifier::deviceAdded, this, &PlacesItemModel::slotDeviceAdded); + connect(notifier, &Solid::DeviceNotifier::deviceRemoved, this, &PlacesItemModel::slotDeviceRemoved); const QList& deviceList = Solid::Device::listFromQuery(m_predicate); foreach (const Solid::Device& device, deviceList) { @@ -1032,20 +1019,12 @@ void PlacesItemModel::hideItem(int index) // bookmark should still be remembered, so readd it again: m_bookmarkManager->root().addBookmark(hiddenBookmark); m_bookmarkManager->root().moveBookmark(hiddenBookmark, previousBookmark); - triggerBookmarksSaving(); } m_bookmarkedItems.insert(newIndex, hiddenItem); } } -void PlacesItemModel::triggerBookmarksSaving() -{ - if (m_saveBookmarksTimer) { - m_saveBookmarksTimer->start(); - } -} - QString PlacesItemModel::internalMimeType() const { return "application/x-dolphinplacesmodel-" + @@ -1098,39 +1077,39 @@ int PlacesItemModel::groupedDropIndex(int index, const PlacesItem* item) const bool PlacesItemModel::equalBookmarkIdentifiers(const KBookmark& b1, const KBookmark& b2) { - const QString udi1 = b1.metaDataItem("UDI"); - const QString udi2 = b2.metaDataItem("UDI"); + const QString udi1 = b1.metaDataItem(QStringLiteral("UDI")); + const QString udi2 = b2.metaDataItem(QStringLiteral("UDI")); if (!udi1.isEmpty() && !udi2.isEmpty()) { return udi1 == udi2; } else { - return b1.metaDataItem("ID") == b2.metaDataItem("ID"); + return b1.metaDataItem(QStringLiteral("ID")) == b2.metaDataItem(QStringLiteral("ID")); } } -KUrl PlacesItemModel::createTimelineUrl(const KUrl& url) +QUrl PlacesItemModel::createTimelineUrl(const QUrl& url) { // TODO: Clarify with the Baloo-team whether it makes sense // provide default-timeline-URLs like 'yesterday', 'this month' // and 'last month'. - KUrl timelineUrl; + QUrl timelineUrl; - const QString path = url.pathOrUrl(); + const QString path = url.toDisplayString(QUrl::PreferLocalFile); if (path.endsWith(QLatin1String("yesterday"))) { const QDate date = QDate::currentDate().addDays(-1); const int year = date.year(); const int month = date.month(); const int day = date.day(); - timelineUrl = "timeline:/" + timelineDateString(year, month) + - '/' + timelineDateString(year, month, day); + timelineUrl = QUrl("timeline:/" + timelineDateString(year, month) + + '/' + timelineDateString(year, month, day)); } else if (path.endsWith(QLatin1String("thismonth"))) { const QDate date = QDate::currentDate(); - timelineUrl = "timeline:/" + timelineDateString(date.year(), date.month()); + timelineUrl = QUrl("timeline:/" + timelineDateString(date.year(), date.month())); } else if (path.endsWith(QLatin1String("lastmonth"))) { const QDate date = QDate::currentDate().addMonths(-1); - timelineUrl = "timeline:/" + timelineDateString(date.year(), date.month()); + timelineUrl = QUrl("timeline:/" + timelineDateString(date.year(), date.month())); } else { Q_ASSERT(path.endsWith(QLatin1String("today"))); - timelineUrl= url; + timelineUrl = url; } return timelineUrl; @@ -1155,20 +1134,20 @@ QString PlacesItemModel::timelineDateString(int year, int month, int day) return date; } -KUrl PlacesItemModel::createSearchUrl(const KUrl& url) +QUrl PlacesItemModel::createSearchUrl(const QUrl& url) { - KUrl searchUrl; + QUrl searchUrl; #ifdef HAVE_BALOO - const QString path = url.pathOrUrl(); + const QString path = url.toDisplayString(QUrl::PreferLocalFile); if (path.endsWith(QLatin1String("documents"))) { - searchUrl = searchUrlForType("Document"); + searchUrl = searchUrlForType(QStringLiteral("Document")); } else if (path.endsWith(QLatin1String("images"))) { - searchUrl = searchUrlForType("Image"); + searchUrl = searchUrlForType(QStringLiteral("Image")); } else if (path.endsWith(QLatin1String("audio"))) { - searchUrl = searchUrlForType("Audio"); + searchUrl = searchUrlForType(QStringLiteral("Audio")); } else if (path.endsWith(QLatin1String("videos"))) { - searchUrl = searchUrlForType("Video"); + searchUrl = searchUrlForType(QStringLiteral("Video")); } else { Q_ASSERT(false); } @@ -1180,10 +1159,9 @@ KUrl PlacesItemModel::createSearchUrl(const KUrl& url) } #ifdef HAVE_BALOO -KUrl PlacesItemModel::searchUrlForType(const QString& type) +QUrl PlacesItemModel::searchUrlForType(const QString& type) { Baloo::Query query; - query.addType("File"); query.addType(type); return query.toSearchUrl(); @@ -1193,25 +1171,25 @@ KUrl PlacesItemModel::searchUrlForType(const QString& type) #ifdef PLACESITEMMODEL_DEBUG void PlacesItemModel::showModelState() { - kDebug() << "================================="; - kDebug() << "Model:"; - kDebug() << "hidden-index model-index text"; + qCDebug(DolphinDebug) << "================================="; + qCDebug(DolphinDebug) << "Model:"; + qCDebug(DolphinDebug) << "hidden-index model-index text"; int modelIndex = 0; for (int i = 0; i < m_bookmarkedItems.count(); ++i) { if (m_bookmarkedItems[i]) { - kDebug() << i << "(Hidden) " << " " << m_bookmarkedItems[i]->dataValue("text").toString(); + qCDebug(DolphinDebug) << i << "(Hidden) " << " " << m_bookmarkedItems[i]->dataValue("text").toString(); } else { if (item(modelIndex)) { - kDebug() << i << " " << modelIndex << " " << item(modelIndex)->dataValue("text").toString(); + qCDebug(DolphinDebug) << i << " " << modelIndex << " " << item(modelIndex)->dataValue("text").toString(); } else { - kDebug() << i << " " << modelIndex << " " << "(not available yet)"; + qCDebug(DolphinDebug) << i << " " << modelIndex << " " << "(not available yet)"; } ++modelIndex; } } - kDebug(); - kDebug() << "Bookmarks:"; + qCDebug(DolphinDebug); + qCDebug(DolphinDebug) << "Bookmarks:"; int bookmarkIndex = 0; KBookmarkGroup root = m_bookmarkManager->root(); @@ -1220,9 +1198,9 @@ void PlacesItemModel::showModelState() const QString udi = bookmark.metaDataItem("UDI"); const QString text = udi.isEmpty() ? bookmark.text() : udi; if (bookmark.metaDataItem("IsHidden") == QLatin1String("true")) { - kDebug() << bookmarkIndex << "(Hidden)" << text; + qCDebug(DolphinDebug) << bookmarkIndex << "(Hidden)" << text; } else { - kDebug() << bookmarkIndex << " " << text; + qCDebug(DolphinDebug) << bookmarkIndex << " " << text; } bookmark = root.next(bookmark); @@ -1231,4 +1209,3 @@ void PlacesItemModel::showModelState() } #endif -#include "placesitemmodel.moc"