]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/panels/places/placespanel.cpp
Merge branch 'master' into frameworks
[dolphin.git] / src / panels / places / placespanel.cpp
index 68c7fa558033a9eade944304ff5cd1323a3ea0f0..5618cee2162a534fb6031eb4850319d85c8fd0da 100644 (file)
@@ -30,6 +30,7 @@
 #include <KDirNotify>
 #include <QIcon>
 #include <KIO/Job>
+#include <KIO/DropJob>
 #include <KIO/EmptyTrashJob>
 #include <KIO/JobUiDelegate>
 #include <KJobWidgets>
@@ -72,7 +73,7 @@ PlacesPanel::~PlacesPanel()
 
 bool PlacesPanel::urlChanged()
 {
-    if (!url().isValid() || url().protocol().contains("search")) {
+    if (!url().isValid() || url().scheme().contains("search")) {
         // Skip results shown by a search, as possible identical
         // directory names are useless without parent-path information.
         return false;
@@ -117,7 +118,7 @@ void PlacesPanel::showEvent(QShowEvent* event)
         m_controller->setSelectionBehavior(KItemListController::SingleSelection);
         m_controller->setSingleClickActivationEnforced(true);
 
-       readSettings();
+        readSettings();
 
         connect(m_controller, &KItemListController::itemActivated, this, &PlacesPanel::slotItemActivated);
         connect(m_controller, &KItemListController::itemMiddleClicked, this, &PlacesPanel::slotItemMiddleClicked);
@@ -185,7 +186,7 @@ void PlacesPanel::slotItemContextMenuRequested(int index, const QPointF& pos)
             mainSeparator = menu.addSeparator();
         }
     } else {
-        if (item->url() == KUrl("trash:/")) {
+        if (item->url() == QUrl("trash:/")) {
             emptyTrashAction = menu.addAction(QIcon::fromTheme("trash-empty"), i18nc("@action:inmenu", "Empty Trash"));
             emptyTrashAction->setEnabled(item->icon() == "user-trash-full");
             menu.addSeparator();
@@ -285,8 +286,10 @@ void PlacesPanel::slotItemContextMenuRequested(int index, const QPointF& pos)
                 editEntry(index);
             } else if (action == removeAction) {
                 m_model->removeItem(index);
+                m_model->saveBookmarks();
             } else if (action == hideAction) {
                 item->setHidden(hideAction->isChecked());
+                m_model->saveBookmarks();
             } else if (action == openInNewTabAction) {
                 // TriggerItem does set up the storage first and then it will
                 // emit the slotItemMiddleClicked signal, because of Qt::MiddleButton.
@@ -368,18 +371,14 @@ void PlacesPanel::slotItemDropEvent(int index, QGraphicsSceneDragDropEvent* even
         return;
     }
 
-    KUrl destUrl = destItem->url();
+    QUrl destUrl = destItem->url();
     QDropEvent dropEvent(event->pos().toPoint(),
                          event->possibleActions(),
                          event->mimeData(),
                          event->buttons(),
                          event->modifiers());
 
-    QString error;
-    DragAndDropHelper::dropUrls(KFileItem(), destUrl, &dropEvent, error);
-    if (!error.isEmpty()) {
-        emit errorMessage(error);
-    }
+    slotUrlsDropped(destUrl, &dropEvent, this);
 }
 
 void PlacesPanel::slotItemDropEventStorageSetupDone(int index, bool success)
@@ -389,13 +388,8 @@ void PlacesPanel::slotItemDropEventStorageSetupDone(int index, bool success)
 
     if ((index == m_itemDropEventIndex) && m_itemDropEvent && m_itemDropEventMimeData) {
         if (success) {
-            KUrl destUrl = m_model->placesItem(index)->url();
-
-            QString error;
-            DragAndDropHelper::dropUrls(KFileItem(), destUrl, m_itemDropEvent, error);
-            if (!error.isEmpty()) {
-                emit errorMessage(error);
-            }
+            QUrl destUrl = m_model->placesItem(index)->url();
+            slotUrlsDropped(destUrl, m_itemDropEvent, this);
         }
 
         delete m_itemDropEventMimeData;
@@ -410,17 +404,15 @@ void PlacesPanel::slotItemDropEventStorageSetupDone(int index, bool success)
 void PlacesPanel::slotAboveItemDropEvent(int index, QGraphicsSceneDragDropEvent* event)
 {
     m_model->dropMimeDataBefore(index, event->mimeData());
+    m_model->saveBookmarks();
 }
 
-void PlacesPanel::slotUrlsDropped(const KUrl& dest, QDropEvent* event, QWidget* parent)
+void PlacesPanel::slotUrlsDropped(const QUrl& dest, QDropEvent* event, QWidget* parent)
 {
-    Q_UNUSED(parent);
-    QString error;
-    DragAndDropHelper::dropUrls(KFileItem(), dest, event, error);
-    if (!error.isEmpty()) {
-        emit errorMessage(error);
+    KIO::DropJob *job = DragAndDropHelper::dropUrls(dest, event, parent);
+    if (job) {
+        connect(job, &KIO::DropJob::result, this, [this](KJob *job) { if (job->error()) emit errorMessage(job->errorString()); });
     }
-
 }
 
 void PlacesPanel::slotTrashUpdated(KJob* job)
@@ -447,7 +439,7 @@ void PlacesPanel::slotStorageSetupDone(int index, bool success)
         m_triggerStorageSetupButton = Qt::NoButton;
     } else {
         setUrl(m_storageSetupFailedUrl);
-        m_storageSetupFailedUrl = KUrl();
+        m_storageSetupFailedUrl = QUrl();
     }
 }
 
@@ -465,7 +457,7 @@ void PlacesPanel::emptyTrash()
 void PlacesPanel::addEntry()
 {
     const int index = m_controller->selectionManager()->currentItem();
-    const KUrl url = m_model->data(index).value("url").value<KUrl>();
+    const QUrl url = m_model->data(index).value("url").value<QUrl>();
 
     QPointer<PlacesItemEditDialog> dialog = new PlacesItemEditDialog(this);
     dialog->setWindowTitle(i18nc("@title:window", "Add Places Entry"));
@@ -474,6 +466,7 @@ void PlacesPanel::addEntry()
     if (dialog->exec() == QDialog::Accepted) {
         PlacesItem* item = m_model->createPlacesItem(dialog->text(), dialog->url(), dialog->icon());
         m_model->appendItemToGroup(item);
+        m_model->saveBookmarks();
     }
 
     delete dialog;
@@ -487,7 +480,7 @@ void PlacesPanel::editEntry(int index)
     dialog->setWindowTitle(i18nc("@title:window", "Edit Places Entry"));
     dialog->setIcon(data.value("iconName").toString());
     dialog->setText(data.value("text").toString());
-    dialog->setUrl(data.value("url").value<KUrl>());
+    dialog->setUrl(data.value("url").value<QUrl>());
     dialog->setAllowGlobal(true);
     if (dialog->exec() == QDialog::Accepted) {
         PlacesItem* oldItem = m_model->placesItem(index);
@@ -495,6 +488,7 @@ void PlacesPanel::editEntry(int index)
             oldItem->setText(dialog->text());
             oldItem->setUrl(dialog->url());
             oldItem->setIcon(dialog->icon());
+            m_model->saveBookmarks();
         }
     }
 
@@ -528,7 +522,7 @@ void PlacesPanel::triggerItem(int index, Qt::MouseButton button)
     } else {
         m_triggerStorageSetupButton = Qt::NoButton;
 
-        const KUrl url = m_model->data(index).value("url").value<KUrl>();
+        const QUrl url = m_model->data(index).value("url").value<QUrl>();
         if (!url.isEmpty()) {
             if (button == Qt::MiddleButton) {
                 emit placeMiddleClicked(PlacesItemModel::convertedUrl(url));
@@ -538,5 +532,3 @@ void PlacesPanel::triggerItem(int index, Qt::MouseButton button)
         }
     }
 }
-
-