]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Sync bookmark manager only if the change was done by the current process
authorEmmanuel Pescosta <emmanuelpescosta099@gmail.com>
Thu, 19 Feb 2015 19:05:55 +0000 (20:05 +0100)
committerEmmanuel Pescosta <emmanuelpescosta099@gmail.com>
Thu, 19 Feb 2015 19:05:55 +0000 (20:05 +0100)
Adoption of http://commits.kde.org/kdelibs/2b5c6e42fc8114c6854ce490b9cdd4356be683d9

FIXED-IN: 14.12.3
BUG: 343620
BUG: 310080
REVIEW: 122640

src/panels/places/placesitemmodel.cpp
src/panels/places/placesitemmodel.h
src/panels/places/placespanel.cpp

index 6accdc837070e7f8d350ee85b3588b1756d28de4..46f40b65c87d3b4f16f791a62e09fcc6dc097a29 100644 (file)
@@ -78,7 +78,6 @@ PlacesItemModel::PlacesItemModel(QObject* parent) :
     m_systemBookmarksIndexes(),
     m_bookmarkedItems(),
     m_hiddenItemToRemove(-1),
-    m_saveBookmarksTimer(0),
     m_updateBookmarksTimer(0),
     m_storageSetupInProgress()
 {
@@ -95,11 +94,6 @@ 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);
@@ -498,8 +492,6 @@ void PlacesItemModel::onItemInserted(int index)
         m_bookmarkedItems.insert(bookmarkIndex, 0);
     }
 
-    triggerBookmarksSaving();
-
 #ifdef PLACESITEMMODEL_DEBUG
     kDebug() << "Inserted item" << index;
     showModelState();
@@ -518,8 +510,6 @@ void PlacesItemModel::onItemRemoved(int index, KStandardItem* removedItem)
     Q_ASSERT(!m_bookmarkedItems[boomarkIndex]);
     m_bookmarkedItems.removeAt(boomarkIndex);
 
-    triggerBookmarksSaving();
-
 #ifdef PLACESITEMMODEL_DEBUG
     kDebug() << "Removed item" << index;
     showModelState();
@@ -549,8 +539,6 @@ void PlacesItemModel::onItemChanged(int index, const QSet<QByteArray>& changedRo
             QTimer::singleShot(0, this, SLOT(hideItem()));
         }
     }
-
-    triggerBookmarksSaving();
 }
 
 void PlacesItemModel::slotDeviceAdded(const QString& udi)
@@ -1033,20 +1021,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-" +
index 4a374e502fdff5c5bb2130beddabcfe344138db6..7cbf99e95eb35feba4844eea5578d7ec83b9e65f 100644 (file)
@@ -124,6 +124,14 @@ public:
     static KUrl convertedUrl(const KUrl& url);
 
     virtual void clear();
+
+    /**
+     * Saves the bookmarks and indicates to other applications that the
+     * state of the bookmarks has been changed. Is only called by the
+     * timeout of m_saveBookmarksTimer to prevent unnecessary savings.
+     */
+    void saveBookmarks();
+
 signals:
     void errorMessage(const QString& message);
     void storageSetupDone(int index, bool success);
@@ -147,12 +155,6 @@ private slots:
      */
     void updateBookmarks();
 
-    /**
-     * Saves the bookmarks and indicates to other applications that the
-     * state of the bookmarks has been changed. Is only called by the
-     * timeout of m_saveBookmarksTimer to prevent unnecessary savings.
-     */
-    void saveBookmarks();
 private:
     struct SystemBookmarkData;
 
@@ -199,12 +201,6 @@ private:
      */
     void hideItem(int index);
 
-    /**
-     * Triggers a delayed saving of bookmarks by starting
-     * m_saveBookmarksTimer.
-     */
-    void triggerBookmarksSaving();
-
     QString internalMimeType() const;
 
     /**
@@ -287,7 +283,6 @@ private:
     // removing an item is not allowed.
     int m_hiddenItemToRemove;
 
-    QTimer* m_saveBookmarksTimer;
     QTimer* m_updateBookmarksTimer;
 
     QHash<QObject*, int> m_storageSetupInProgress;
index 720e07ce37e91067b319c108580847b24aaf30af..6b840ef570295626ed2c3983d948ae3d2ed1b462 100644 (file)
@@ -280,8 +280,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.
@@ -405,6 +407,7 @@ 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)
@@ -477,6 +480,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;
@@ -498,6 +502,7 @@ void PlacesPanel::editEntry(int index)
             oldItem->setText(dialog->text());
             oldItem->setUrl(dialog->url());
             oldItem->setIcon(dialog->icon());
+            m_model->saveBookmarks();
         }
     }