From a567da792ac6a337e9ffeb9468215ef4f2c326ce Mon Sep 17 00:00:00 2001 From: Sebastian Trueg Date: Wed, 20 Jan 2010 11:26:39 +0000 Subject: [PATCH] Use a stat job to determine the caption on non-file URLs. This way we get the fancy UDS_DISPLAY_NAMEs for URLs like the nepomuksearch ones. BUG: 222095 svn path=/trunk/KDE/kdebase/apps/; revision=1077551 --- src/dolphinmainwindow.cpp | 24 ++++++++++++++++++++++-- src/dolphinmainwindow.h | 11 ++++++++++- 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/src/dolphinmainwindow.cpp b/src/dolphinmainwindow.cpp index 7ee5fa035..742f7bbf1 100644 --- a/src/dolphinmainwindow.cpp +++ b/src/dolphinmainwindow.cpp @@ -119,7 +119,8 @@ DolphinMainWindow::DolphinMainWindow(int id) : m_viewTab(), m_actionHandler(0), m_remoteEncoding(0), - m_settingsDialog(0) + m_settingsDialog(0), + m_captionStatJob(0) { setObjectName("Dolphin#"); @@ -1725,6 +1726,9 @@ QString DolphinMainWindow::tabProperty(const QString& property, int tabIndex) co void DolphinMainWindow::setUrlAsCaption(const KUrl& url) { + delete m_captionStatJob; + m_captionStatJob = 0; + QString caption; if (url.equals(KUrl("file:///"))) { caption = '/'; @@ -1732,10 +1736,16 @@ void DolphinMainWindow::setUrlAsCaption(const KUrl& url) caption = url.fileName(); if (caption.isEmpty()) { caption = url.protocol(); - } + } } setCaption(caption); + + if ( url.protocol() != QLatin1String( "file" ) ) { + m_captionStatJob = KIO::stat(url, KIO::HideProgressInfo); + connect(m_captionStatJob, SIGNAL(result(KJob*)), + this, SLOT(slotCaptionStatFinished(KJob*))); + } } void DolphinMainWindow::handleUrl(const KUrl& url) @@ -1748,6 +1758,16 @@ void DolphinMainWindow::handleUrl(const KUrl& url) } } +void DolphinMainWindow::slotCaptionStatFinished( KJob* job ) +{ + m_captionStatJob = 0; + const KIO::UDSEntry entry = static_cast(job)->statResult(); + QString name = entry.stringValue(KIO::UDSEntry::UDS_DISPLAY_NAME); + if (!name.isEmpty()) { + setCaption(name); + } +} + QString DolphinMainWindow::squeezedText(const QString& text) const { const QFontMetrics fm = fontMetrics(); diff --git a/src/dolphinmainwindow.h b/src/dolphinmainwindow.h index 269c71844..c1411319a 100644 --- a/src/dolphinmainwindow.h +++ b/src/dolphinmainwindow.h @@ -49,6 +49,7 @@ class KNewMenu; class KTabBar; class KUrl; class QSplitter; +class KJob; /** * @short Main window for Dolphin. @@ -78,7 +79,7 @@ public: * option is enabled, 2 directories are collected within one tab. */ void openDirectories(const QList& dirs); - + /** * Opens the directory which contains the files \p files * and selects all files (implements the --select option @@ -423,6 +424,12 @@ private slots: */ void handleUrl(const KUrl& url); + /** + * setUrlAsCaption will trigger a stat job which reports its result in + * this slot. + */ + void slotCaptionStatFinished( KJob* job ); + private: DolphinMainWindow(int id); void init(); @@ -523,6 +530,8 @@ private: DolphinViewActionHandler* m_actionHandler; DolphinRemoteEncoding* m_remoteEncoding; QPointer m_settingsDialog; + + KJob* m_captionStatJob; }; inline DolphinViewContainer* DolphinMainWindow::activeViewContainer() const -- 2.47.3