┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Faure <[email protected]>2008-05-28 23:07:09 +0000
committerDavid Faure <[email protected]>2008-05-28 23:07:09 +0000
commit707f9a940973128933b183e7ce36a807ea44e941 (patch)
treef1388988625fd7885362d063b9c720921ae8b9db
parentd6fc21618accd6182c9fb913a9b31866e4a8aa20 (diff)
Handle redirections (e.g. from fish://localhost) without breaking the column view -- thanks Peter for the advice on how to separate the two cleanly.
svn path=/trunk/KDE/kdebase/apps/; revision=813954
-rw-r--r--src/dolphinpart.cpp8
-rw-r--r--src/dolphinpart.h5
-rw-r--r--src/dolphinview.cpp16
-rw-r--r--src/dolphinview.h18
4 files changed, 46 insertions, 1 deletions
diff --git a/src/dolphinpart.cpp b/src/dolphinpart.cpp
index 296e101d6..46867dbad 100644
--- a/src/dolphinpart.cpp
+++ b/src/dolphinpart.cpp
@@ -100,6 +100,8 @@ DolphinPart::DolphinPart(QWidget* parentWidget, QObject* parent, const QVariantL
this, SLOT(slotRequestItemInfo(KFileItem)));
connect(m_view, SIGNAL(urlChanged(KUrl)),
this, SLOT(slotUrlChanged(KUrl)));
+ connect(m_view, SIGNAL(requestUrlChange(KUrl)),
+ this, SLOT(slotRequestUrlChange(KUrl)));
connect(m_view, SIGNAL(modeChanged()),
this, SIGNAL(viewModeChanged())); // relay signal
@@ -357,6 +359,12 @@ void DolphinPart::slotOpenContextMenu(const KFileItem& _item, const KUrl&)
void DolphinPart::slotUrlChanged(const KUrl& url)
{
+ QString prettyUrl = url.pathOrUrl();
+ emit m_extension->setLocationBarUrl(prettyUrl);
+}
+
+void DolphinPart::slotRequestUrlChange(const KUrl& url)
+{
if (m_view->url() != url) {
// If the view URL is not equal to 'url', then an inner URL change has
// been done (e. g. by activating an existing column in the column view).
diff --git a/src/dolphinpart.h b/src/dolphinpart.h
index cca1d7135..612c22aa7 100644
--- a/src/dolphinpart.h
+++ b/src/dolphinpart.h
@@ -138,6 +138,11 @@ private Q_SLOTS:
* Asks the host to open the URL \a url if the current view has
* a different URL.
*/
+ void slotRequestUrlChange(const KUrl& url);
+
+ /**
+ * Informs the host that we are opening \a url (e.g. after a redirection).
+ */
void slotUrlChanged(const KUrl& url);
/**
diff --git a/src/dolphinview.cpp b/src/dolphinview.cpp
index ae6ea5ec7..afd1e522d 100644
--- a/src/dolphinview.cpp
+++ b/src/dolphinview.cpp
@@ -102,7 +102,7 @@ DolphinView::DolphinView(QWidget* parent,
connect(m_controller, SIGNAL(urlChanged(const KUrl&)),
this, SIGNAL(urlChanged(const KUrl&)));
connect(m_controller, SIGNAL(requestUrlChange(const KUrl&)),
- this, SIGNAL(urlChanged(const KUrl&)));
+ this, SIGNAL(slotRequestUrlChange(const KUrl&)));
connect(m_controller, SIGNAL(requestContextMenu(const QPoint&)),
this, SLOT(openContextMenu(const QPoint&)));
@@ -125,6 +125,8 @@ DolphinView::DolphinView(QWidget* parent,
connect(m_controller, SIGNAL(viewportEntered()),
this, SLOT(clearHoverInformation()));
+ connect(m_dirLister, SIGNAL(redirection(KUrl, KUrl)),
+ this, SLOT(slotRedirection(KUrl, KUrl)));
connect(m_dirLister, SIGNAL(completed()),
this, SLOT(restoreCurrentItem()));
@@ -1203,4 +1205,16 @@ void DolphinView::pasteToUrl(const KUrl& url)
}
}
+void DolphinView::slotRequestUrlChange(const KUrl& url)
+{
+ emit requestUrlChange(url);
+ m_controller->setUrl(url);
+}
+
+void DolphinView::slotRedirection(const KUrl& oldUrl, const KUrl& newUrl)
+{
+ if (oldUrl == m_controller->url())
+ m_controller->setUrl(newUrl);
+}
+
#include "dolphinview.moc"
diff --git a/src/dolphinview.h b/src/dolphinview.h
index 121a7f6da..0936b06a3 100644
--- a/src/dolphinview.h
+++ b/src/dolphinview.h
@@ -421,6 +421,12 @@ signals:
void urlChanged(const KUrl& url);
/**
+ * Is emitted if the view requests a changing of the current
+ * URL to \a url (see DolphinController::triggerUrlChangeRequest()).
+ */
+ void requestUrlChange(const KUrl& url);
+
+ /**
* Is emitted when clicking on an item with the left mouse button.
*/
void itemTriggered(const KFileItem& item);
@@ -596,6 +602,18 @@ private slots:
void slotDeleteFileFinished(KJob* job);
/**
+ * Called when KDirLister emits redirection.
+ * Testcase: fish://localhost
+ */
+ void slotRedirection(const KUrl& oldUrl, const KUrl& newUrl);
+
+ /**
+ * Is emitted if the controller requests a changing of the current
+ * URL to \a url
+ */
+ void slotRequestUrlChange(const KUrl& url);
+
+ /**
* Restores the current item (= item that has the keyboard focus)
* to m_currentItemUrl.
*/