]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Places Panel: Minor fixes/improvements
authorPeter Penz <peter.penz19@gmail.com>
Mon, 30 Apr 2012 16:26:21 +0000 (18:26 +0200)
committerPeter Penz <peter.penz19@gmail.com>
Mon, 30 Apr 2012 16:27:56 +0000 (18:27 +0200)
- Determine group of a new entry dependent from the protocol
- Allow panels to forward error-messages to the view-container
  (also applied to Folders Panel)

src/dolphinmainwindow.cpp
src/dolphinmainwindow.h
src/panels/folders/folderspanel.cpp
src/panels/folders/folderspanel.h
src/panels/places/placesitemeditdialog.cpp
src/panels/places/placesitemmodel.cpp
src/panels/places/placesitemmodel.h
src/panels/places/placespanel.cpp
src/panels/places/placespanel.h

index 699a1a7776a4684ee79bbbb3d7f548a6f5e39e0e..355bc6fd4242de06b4de62fec56d9d5df0c81b09 100644 (file)
@@ -1431,6 +1431,11 @@ void DolphinMainWindow::slotControlButtonDeleted()
     m_updateToolBarTimer->start();
 }
 
     m_updateToolBarTimer->start();
 }
 
+void DolphinMainWindow::slotPanelErrorMessage(const QString& error)
+{
+    activeViewContainer()->showMessage(error, DolphinViewContainer::Error);
+}
+
 void DolphinMainWindow::setActiveViewContainer(DolphinViewContainer* viewContainer)
 {
     Q_ASSERT(viewContainer);
 void DolphinMainWindow::setActiveViewContainer(DolphinViewContainer* viewContainer)
 {
     Q_ASSERT(viewContainer);
@@ -1707,6 +1712,8 @@ void DolphinMainWindow::setupDockWidgets()
             this, SLOT(changeUrl(KUrl)));
     connect(foldersPanel, SIGNAL(folderMiddleClicked(KUrl)),
             this, SLOT(openNewActivatedTab(KUrl)));
             this, SLOT(changeUrl(KUrl)));
     connect(foldersPanel, SIGNAL(folderMiddleClicked(KUrl)),
             this, SLOT(openNewActivatedTab(KUrl)));
+    connect(foldersPanel, SIGNAL(errorMessage(QString)),
+            this, SLOT(slotPanelErrorMessage(QString)));
 
     // Setup "Terminal"
 #ifndef Q_OS_WIN
 
     // Setup "Terminal"
 #ifndef Q_OS_WIN
@@ -1757,6 +1764,8 @@ void DolphinMainWindow::setupDockWidgets()
             this, SLOT(changeUrl(KUrl)));
     connect(placesPanel, SIGNAL(placeMiddleClicked(KUrl)),
             this, SLOT(openNewActivatedTab(KUrl)));
             this, SLOT(changeUrl(KUrl)));
     connect(placesPanel, SIGNAL(placeMiddleClicked(KUrl)),
             this, SLOT(openNewActivatedTab(KUrl)));
+    connect(placesPanel, SIGNAL(errorMessage(QString)),
+            this, SLOT(slotPanelErrorMessage(QString)));
     connect(this, SIGNAL(urlChanged(KUrl)),
             placesPanel, SLOT(setUrl(KUrl)));
     connect(placesDock, SIGNAL(visibilityChanged(bool)),
     connect(this, SIGNAL(urlChanged(KUrl)),
             placesPanel, SLOT(setUrl(KUrl)));
     connect(placesDock, SIGNAL(visibilityChanged(bool)),
index 722e3ab7a6f1611d32c8b194b1f89d3c7228d860..0d14269eec91f631370c2c94e7bfe094dc1ff5d3 100644 (file)
@@ -458,6 +458,12 @@ private slots:
     void updateToolBar();
     void slotControlButtonDeleted();
 
     void updateToolBar();
     void slotControlButtonDeleted();
 
+    /**
+     * Is called if a panel emits an error-message and shows
+     * the error-message in the active view-container.
+     */
+    void slotPanelErrorMessage(const QString& error);
+
 private:
     /**
      * Activates the given view, which means that
 private:
     /**
      * Activates the given view, which means that
index 9b22aa5a001c28983fa4d0a8de5a6dc6c1ace1ae..78e437a418f32f3dfb9fd572f0e0f2736195bd87 100644 (file)
@@ -223,7 +223,10 @@ void FoldersPanel::slotItemDropEvent(int index, QGraphicsSceneDragDropEvent* eve
                              event->buttons(),
                              event->modifiers());
 
                              event->buttons(),
                              event->modifiers());
 
-        DragAndDropHelper::dropUrls(destItem, destItem.url(), &dropEvent);
+        const QString error = DragAndDropHelper::dropUrls(destItem, destItem.url(), &dropEvent);
+        if (!error.isEmpty()) {
+            emit errorMessage(error);
+        }
     }
 }
 
     }
 }
 
index a14c7d4d05e5077eae3568fe9687bbead167e1cb..14d8e8782d88f0571b987829f34d0c87bd8c7d7d 100644 (file)
@@ -53,6 +53,7 @@ public:
 signals:
     void folderActivated(const KUrl& url);
     void folderMiddleClicked(const KUrl& url);
 signals:
     void folderActivated(const KUrl& url);
     void folderMiddleClicked(const KUrl& url);
+    void errorMessage(const QString& error);
 
 protected:
     /** @see Panel::urlChanged() */
 
 protected:
     /** @see Panel::urlChanged() */
index 0fdd030605beb74f19566c56b6e21b399d583c16..f8b985f6f2a8ea49ff8acaf76f818917917dd8d1 100644 (file)
@@ -25,6 +25,7 @@
 
 #include <KAboutData>
 #include <KComponentData>
 
 #include <KAboutData>
 #include <KComponentData>
+#include <KDebug>
 #include <KFile>
 #include <KIconButton>
 #include <KLineEdit>
 #include <KFile>
 #include <KIconButton>
 #include <KLineEdit>
@@ -69,7 +70,12 @@ void PlacesItemEditDialog::setText(const QString& text)
 
 QString PlacesItemEditDialog::text() const
 {
 
 QString PlacesItemEditDialog::text() const
 {
-    return m_textEdit->text().isEmpty() ? m_urlEdit->url().fileName() : m_textEdit->text();
+    QString text = m_textEdit->text();
+    if (text.isEmpty()) {
+        const KUrl url = m_urlEdit->url();
+        text = url.fileName().isEmpty() ? url.prettyUrl() : url.fileName();
+    }
+    return text;
 }
 
 void PlacesItemEditDialog::setUrl(const KUrl& url)
 }
 
 void PlacesItemEditDialog::setUrl(const KUrl& url)
index ae6163e030f917c096c05476ff587046b583d83e..023e873ebe995ab355ccdaa376247608fe1e61e9 100644 (file)
@@ -37,6 +37,7 @@
 #include <KBookmarkGroup>
 #include <KBookmarkManager>
 #include <KComponentData>
 #include <KBookmarkGroup>
 #include <KBookmarkManager>
 #include <KComponentData>
+#include <KDebug>
 #include <KIcon>
 #include <kitemviews/kstandarditem.h>
 #include <KLocale>
 #include <KIcon>
 #include <kitemviews/kstandarditem.h>
 #include <KLocale>
@@ -47,6 +48,7 @@
 PlacesItemModel::PlacesItemModel(QObject* parent) :
     KStandardItemModel(parent),
     m_nepomukRunning(false),
 PlacesItemModel::PlacesItemModel(QObject* parent) :
     KStandardItemModel(parent),
     m_nepomukRunning(false),
+    m_hiddenItemsShown(false),
     m_availableDevices(),
     m_bookmarkManager(0),
     m_systemBookmarks(),
     m_availableDevices(),
     m_bookmarkManager(0),
     m_systemBookmarks(),
@@ -71,6 +73,18 @@ int PlacesItemModel::hiddenCount() const
     return 0;
 }
 
     return 0;
 }
 
+void PlacesItemModel::setHiddenItemsShown(bool show)
+{
+    if (m_hiddenItemsShown != show) {
+        m_hiddenItemsShown = show;
+    }
+}
+
+bool PlacesItemModel::hiddenItemsShown() const
+{
+    return m_hiddenItemsShown;
+}
+
 bool PlacesItemModel::isSystemItem(int index) const
 {
     if (index >= 0 && index < count()) {
 bool PlacesItemModel::isSystemItem(int index) const
 {
     if (index >= 0 && index < count()) {
@@ -99,19 +113,19 @@ int PlacesItemModel::closestItem(const KUrl& url) const
     return foundIndex;
 }
 
     return foundIndex;
 }
 
-QString PlacesItemModel::placesGroupName() const
+QString PlacesItemModel::groupName(const KUrl &url) const
 {
 {
-    return i18nc("@item", "Places");
-}
+    const QString protocol = url.protocol();
 
 
-QString PlacesItemModel::recentlyAccessedGroupName() const
-{
-    return i18nc("@item", "Recently Accessed");
-}
+    if (protocol.contains(QLatin1String("search"))) {
+        return searchForGroupName();
+    }
 
 
-QString PlacesItemModel::searchForGroupName() const
-{
-    return i18nc("@item", "Search For");
+    if (protocol == QLatin1String("timeline")) {
+        return recentlyAccessedGroupName();
+    }
+
+    return placesGroupName();
 }
 
 QAction* PlacesItemModel::ejectAction(int index) const
 }
 
 QAction* PlacesItemModel::ejectAction(int index) const
@@ -262,8 +276,22 @@ void PlacesItemModel::createSystemBookmarks()
     }
 }
 
     }
 }
 
+QString PlacesItemModel::placesGroupName()
+{
+    return i18nc("@item", "Places");
+}
+
+QString PlacesItemModel::recentlyAccessedGroupName()
+{
+    return i18nc("@item", "Recently Accessed");
+}
+
+QString PlacesItemModel::searchForGroupName()
+{
+    return i18nc("@item", "Search For");
+}
 
 
-KUrl PlacesItemModel::translatedSystemBookmarkUrl(const KUrl& url) const
+KUrl PlacesItemModel::translatedSystemBookmarkUrl(const KUrl& url)
 {
     KUrl translatedUrl = url;
     if (url.protocol() == QLatin1String("timeline")) {
 {
     KUrl translatedUrl = url;
     if (url.protocol() == QLatin1String("timeline")) {
index 330e754b0b92f57afc6bdf76fcf56ed1318a333b..f8f2b5bc8ad99ffd8410a90c404379a8b8ca6903 100644 (file)
@@ -50,6 +50,9 @@ public:
     explicit PlacesItemModel(QObject* parent = 0);
     virtual ~PlacesItemModel();
 
     explicit PlacesItemModel(QObject* parent = 0);
     virtual ~PlacesItemModel();
 
+    void setHiddenItemsShown(bool show);
+    bool hiddenItemsShown() const;
+
     int hiddenCount() const;
 
     /**
     int hiddenCount() const;
 
     /**
@@ -67,9 +70,11 @@ public:
      */
     int closestItem(const KUrl& url) const;
 
      */
     int closestItem(const KUrl& url) const;
 
-    QString placesGroupName() const;
-    QString recentlyAccessedGroupName() const;
-    QString searchForGroupName() const;
+    /**
+     * @return Name of the group where the item with the URL
+     *         \a URL belongs to.
+     */
+    QString groupName(const KUrl& url) const;
 
     QAction* ejectAction(int index) const;
     QAction* tearDownAction(int index) const;
 
     QAction* ejectAction(int index) const;
     QAction* tearDownAction(int index) const;
@@ -79,7 +84,11 @@ private:
 
     void createSystemBookmarks();
 
 
     void createSystemBookmarks();
 
-    KUrl translatedSystemBookmarkUrl(const KUrl& url) const;
+    static QString placesGroupName();
+    static QString recentlyAccessedGroupName();
+    static QString searchForGroupName();
+
+    static KUrl translatedSystemBookmarkUrl(const KUrl& url);
 
     /**
      * @return URL using the timeline-protocol for searching.
 
     /**
      * @return URL using the timeline-protocol for searching.
@@ -111,6 +120,7 @@ private:
 
 private:
     bool m_nepomukRunning;
 
 private:
     bool m_nepomukRunning;
+    bool m_hiddenItemsShown;
 
     QSet<QString> m_availableDevices;
     KBookmarkManager* m_bookmarkManager;
 
     QSet<QString> m_availableDevices;
     KBookmarkManager* m_bookmarkManager;
index bcdccf2a05271cdc4d55903adf92ec6a3e035eb4..ea2ec307271fcdeb0290e1cc28335634a7b1b769 100644 (file)
@@ -230,7 +230,11 @@ void PlacesPanel::slotViewContextMenuRequested(const QPointF& pos)
 void PlacesPanel::slotUrlsDropped(const KUrl& dest, QDropEvent* event, QWidget* parent)
 {
     Q_UNUSED(parent);
 void PlacesPanel::slotUrlsDropped(const KUrl& dest, QDropEvent* event, QWidget* parent)
 {
     Q_UNUSED(parent);
-    DragAndDropHelper::dropUrls(KFileItem(), dest, event);
+    const QString error = DragAndDropHelper::dropUrls(KFileItem(), dest, event);
+    if (!error.isEmpty()) {
+        emit errorMessage(error);
+    }
+
 }
 
 void PlacesPanel::slotTrashUpdated(KJob* job)
 }
 
 void PlacesPanel::slotTrashUpdated(KJob* job)
@@ -273,11 +277,15 @@ void PlacesPanel::addEntry()
     if (dialog->exec() == QDialog::Accepted) {
         KStandardItem* item = createStandardItemFromDialog(dialog);
 
     if (dialog->exec() == QDialog::Accepted) {
         KStandardItem* item = createStandardItemFromDialog(dialog);
 
-        // Insert the item as last item of the "Places" group
-        bool inserted = false;
+        // Insert the item as last item of the corresponding group.
         int i = 0;
         int i = 0;
+        while (i < m_model->count() && m_model->item(i)->group() != item->group()) {
+            ++i;
+        }
+
+        bool inserted = false;
         while (!inserted && i < m_model->count()) {
         while (!inserted && i < m_model->count()) {
-            if (m_model->item(i)->group() != m_model->placesGroupName()) {
+            if (m_model->item(i)->group() != item->group()) {
                 m_model->insertItem(i, item);
                 inserted = true;
             }
                 m_model->insertItem(i, item);
                 inserted = true;
             }
@@ -306,6 +314,9 @@ void PlacesPanel::editEntry(int index)
         KStandardItem* oldItem = m_model->item(index);
         if (oldItem) {
             KStandardItem* item = createStandardItemFromDialog(dialog);
         KStandardItem* oldItem = m_model->item(index);
         if (oldItem) {
             KStandardItem* item = createStandardItemFromDialog(dialog);
+            // Although the user might have changed the URL of the item in a way
+            // that another group should be assigned, we still apply the old
+            // group to keep the same position for the item.
             item->setGroup(oldItem->group());
             m_model->replaceItem(index, item);
         }
             item->setGroup(oldItem->group());
             m_model->replaceItem(index, item);
         }
@@ -327,11 +338,12 @@ KStandardItem* PlacesPanel::createStandardItemFromDialog(PlacesItemEditDialog* d
 {
     Q_ASSERT(dialog);
 
 {
     Q_ASSERT(dialog);
 
+    const KUrl newUrl = dialog->url();
     KStandardItem* item = new KStandardItem();
     item->setIcon(KIcon(dialog->icon()));
     item->setText(dialog->text());
     KStandardItem* item = new KStandardItem();
     item->setIcon(KIcon(dialog->icon()));
     item->setText(dialog->text());
-    item->setDataValue("url", dialog->url());
-    item->setGroup(m_model->placesGroupName());
+    item->setDataValue("url", newUrl);
+    item->setGroup(m_model->groupName(newUrl));
 
     return item;
 }
 
     return item;
 }
index 0b86ced1ab9032278ca7cc2b4324d22a2d10ea37..7baefd9e8cbd07714513063536b9c1f413f308df 100644 (file)
@@ -45,6 +45,7 @@ public:
 signals:
     void placeActivated(const KUrl& url);
     void placeMiddleClicked(const KUrl& url);
 signals:
     void placeActivated(const KUrl& url);
     void placeMiddleClicked(const KUrl& url);
+    void errorMessage(const QString& error);
 
 protected:
     virtual bool urlChanged();
 
 protected:
     virtual bool urlChanged();