- Q_ASSERT(m_defaultBookmarks.isEmpty());
- Q_ASSERT(m_defaultBookmarksIndexes.isEmpty());
-
- const QString placesGroup = i18nc("@item", "Places");
- const QString recentlyAccessedGroup = i18nc("@item", "Recently Accessed");
- const QString searchForGroup = i18nc("@item", "Search For");
- const QString timeLineIcon = "package_utility_time"; // TODO: Ask the Oxygen team to create
- // a custom icon for the timeline-protocol
-
- m_defaultBookmarks.append(DefaultBookmarkData(KUrl(KUser().homeDir()),
- "user-home",
- i18nc("@item", "Home"),
- placesGroup));
- m_defaultBookmarks.append(DefaultBookmarkData(KUrl("remote:/"),
- "network-workgroup",
- i18nc("@item", "Network"),
- placesGroup));
- m_defaultBookmarks.append(DefaultBookmarkData(KUrl("/"),
- "folder-red",
- i18nc("@item", "Root"),
- placesGroup));
- m_defaultBookmarks.append(DefaultBookmarkData(KUrl("trash:/"),
- "user-trash",
- i18nc("@item", "Trash"),
- placesGroup));
-
- if (m_nepomukRunning) {
- m_defaultBookmarks.append(DefaultBookmarkData(KUrl("timeline:/today"),
- timeLineIcon,
- i18nc("@item Recently Accessed", "Today"),
- recentlyAccessedGroup));
- m_defaultBookmarks.append(DefaultBookmarkData(KUrl("timeline:/yesterday"),
- timeLineIcon,
- i18nc("@item Recently Accessed", "Yesterday"),
- recentlyAccessedGroup));
- m_defaultBookmarks.append(DefaultBookmarkData(KUrl("timeline:/thismonth"),
- timeLineIcon,
- i18nc("@item Recently Accessed", "This Month"),
- recentlyAccessedGroup));
- m_defaultBookmarks.append(DefaultBookmarkData(KUrl("timeline:/lastmonth"),
- timeLineIcon,
- i18nc("@item Recently Accessed", "Last Month"),
- recentlyAccessedGroup));
- m_defaultBookmarks.append(DefaultBookmarkData(KUrl("search:/documents"),
- "folder-txt",
- i18nc("@item Commonly Accessed", "Documents"),
- searchForGroup));
- m_defaultBookmarks.append(DefaultBookmarkData(KUrl("search:/images"),
- "folder-image",
- i18nc("@item Commonly Accessed", "Images"),
- searchForGroup));
- m_defaultBookmarks.append(DefaultBookmarkData(KUrl("search:/audio"),
- "folder-sound",
- i18nc("@item Commonly Accessed", "Audio"),
- searchForGroup));
- m_defaultBookmarks.append(DefaultBookmarkData(KUrl("search:/videos"),
- "folder-video",
- i18nc("@item Commonly Accessed", "Videos"),
- searchForGroup));
+ const QModelIndex index = indexAt(event->position().toPoint());
+ if (index.isValid()) {
+ auto *placesModel = static_cast<KFilePlacesModel *>(model());
+
+ // Reject drag ontop of a non-writable protocol
+ // We don't know whether we're dropping inbetween or ontop of a place
+ // so still allow internal drag events so that re-arranging still works.
+ if (!isInternalDrag(event->mimeData())) {
+ const QUrl url = placesModel->url(index);
+ if (!url.isValid() || !KProtocolManager::supportsWriting(url)) {
+ event->setDropAction(Qt::IgnoreAction);
+ } else {
+ DragAndDropHelper::updateDropAction(event, url);
+ }
+ }