]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Use a stat job to determine the caption on non-file URLs. This way we get the fancy...
authorSebastian Trueg <sebastian@trueg.de>
Wed, 20 Jan 2010 11:26:39 +0000 (11:26 +0000)
committerSebastian Trueg <sebastian@trueg.de>
Wed, 20 Jan 2010 11:26:39 +0000 (11:26 +0000)
URLs like the nepomuksearch ones.

BUG: 222095

svn path=/trunk/KDE/kdebase/apps/; revision=1077551

src/dolphinmainwindow.cpp
src/dolphinmainwindow.h

index 7ee5fa0353fde04ff0cb7c8f642eab7e0a877f57..742f7bbf1b08c28cc379988d9dd5c58ee5cfef21 100644 (file)
@@ -119,7 +119,8 @@ DolphinMainWindow::DolphinMainWindow(int id) :
     m_viewTab(),
     m_actionHandler(0),
     m_remoteEncoding(0),
     m_viewTab(),
     m_actionHandler(0),
     m_remoteEncoding(0),
-    m_settingsDialog(0)
+    m_settingsDialog(0),
+    m_captionStatJob(0)
 {
     setObjectName("Dolphin#");
 
 {
     setObjectName("Dolphin#");
 
@@ -1725,6 +1726,9 @@ QString DolphinMainWindow::tabProperty(const QString& property, int tabIndex) co
 
 void DolphinMainWindow::setUrlAsCaption(const KUrl& url)
 {
 
 void DolphinMainWindow::setUrlAsCaption(const KUrl& url)
 {
+    delete m_captionStatJob;
+    m_captionStatJob = 0;
+
     QString caption;
     if (url.equals(KUrl("file:///"))) {
         caption = '/';
     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();
         caption = url.fileName();
         if (caption.isEmpty()) {
             caption = url.protocol();
-       }
+        }
     }
 
     setCaption(caption);
     }
 
     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)
 }
 
 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<KIO::StatJob*>(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();
 QString DolphinMainWindow::squeezedText(const QString& text) const
 {
     const QFontMetrics fm = fontMetrics();
index 269c71844d281ac88f70ece8553c8c3c55d7e5d0..c1411319a196290b7df0a4d8d79a1094c226e4d9 100644 (file)
@@ -49,6 +49,7 @@ class KNewMenu;
 class KTabBar;
 class KUrl;
 class QSplitter;
 class KTabBar;
 class KUrl;
 class QSplitter;
+class KJob;
 
 /**
  * @short Main window for Dolphin.
 
 /**
  * @short Main window for Dolphin.
@@ -78,7 +79,7 @@ public:
      * option is enabled, 2 directories are collected within one tab.
      */
     void openDirectories(const QList<KUrl>& dirs);
      * option is enabled, 2 directories are collected within one tab.
      */
     void openDirectories(const QList<KUrl>& dirs);
-    
+
     /**
      * Opens the directory which contains the files \p files
      * and selects all files (implements the --select option
     /**
      * 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);
 
      */
     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();
 private:
     DolphinMainWindow(int id);
     void init();
@@ -523,6 +530,8 @@ private:
     DolphinViewActionHandler* m_actionHandler;
     DolphinRemoteEncoding* m_remoteEncoding;
     QPointer<DolphinSettingsDialog> m_settingsDialog;
     DolphinViewActionHandler* m_actionHandler;
     DolphinRemoteEncoding* m_remoteEncoding;
     QPointer<DolphinSettingsDialog> m_settingsDialog;
+
+    KJob* m_captionStatJob;
 };
 
 inline DolphinViewContainer* DolphinMainWindow::activeViewContainer() const
 };
 
 inline DolphinViewContainer* DolphinMainWindow::activeViewContainer() const