]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphinmainwindow.cpp
only set the title synchronously for the file-protocol, otherwise use KIO::stat()
[dolphin.git] / src / dolphinmainwindow.cpp
index 95396106cbf257cb9faf9b158d31de0f91cf779c..9349ca7be63fdfcf9f42e556a4553c4aea68acb6 100644 (file)
@@ -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#");
 
@@ -1448,7 +1449,7 @@ void DolphinMainWindow::setupDockWidgets()
     connect(infoPanel, SIGNAL(urlActivated(KUrl)), this, SLOT(handleUrl(KUrl)));
     infoDock->setWidget(infoPanel);
 
-    QAction* infoAction = new KAction(this);
+    KAction* infoAction = new KAction(this);
     infoAction->setText(i18nc("@title:window", "Information"));
     infoAction->setShortcut(Qt::Key_F11);
     infoAction->setIcon(KIcon("dialog-information"));
@@ -1470,7 +1471,7 @@ void DolphinMainWindow::setupDockWidgets()
     FoldersPanel* foldersPanel = new FoldersPanel(foldersDock);
     foldersDock->setWidget(foldersPanel);
 
-    QAction* foldersAction = new KAction(this);
+    KAction* foldersAction = new KAction(this);
     foldersAction->setText(i18nc("@title:window", "Folders"));
     foldersAction->setShortcut(Qt::Key_F7);
     foldersAction->setIcon(KIcon("folder"));
@@ -1493,7 +1494,7 @@ void DolphinMainWindow::setupDockWidgets()
 
     connect(terminalPanel, SIGNAL(hideTerminalPanel()), terminalDock, SLOT(hide()));
 
-    QAction* terminalAction = new KAction(this);
+    KAction* terminalAction = new KAction(this);
     terminalAction->setText(i18nc("@title:window Shell terminal", "Terminal"));
     terminalAction->setShortcut(Qt::Key_F4);
     terminalAction->setIcon(KIcon("utilities-terminal"));
@@ -1523,7 +1524,7 @@ void DolphinMainWindow::setupDockWidgets()
     placesPanel->setModel(DolphinSettings::instance().placesModel());
     placesPanel->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
 
-    QAction* placesAction = new KAction(this);
+    KAction* placesAction = new KAction(this);
     placesAction->setText(i18nc("@title:window", "Places"));
     placesAction->setShortcut(Qt::Key_F9);
     placesAction->setIcon(KIcon("bookmarks"));
@@ -1725,29 +1726,45 @@ QString DolphinMainWindow::tabProperty(const QString& property, int tabIndex) co
 
 void DolphinMainWindow::setUrlAsCaption(const KUrl& url)
 {
-    QString caption;
-    if (url.equals(KUrl("file:///"))) {
-        caption = '/';
+    delete m_captionStatJob;
+    m_captionStatJob = 0;
+
+    if (url.protocol() == QLatin1String("file")) {
+        QString caption;
+        if (url.equals(KUrl("file:///"))) {
+            caption = '/';
+        } else {
+            caption = url.fileName();
+            if (caption.isEmpty()) {
+                caption = url.protocol();
+            }
+        }
+
+        setCaption(caption);
     } else {
-        caption = url.fileName();
-        if (caption.isEmpty()) {
-            caption = url.protocol();
-       }
+        m_captionStatJob = KIO::stat(url, KIO::HideProgressInfo);
+        connect(m_captionStatJob, SIGNAL(result(KJob*)),
+                this, SLOT(slotCaptionStatFinished(KJob*)));
     }
-
-    setCaption(caption);
 }
 
 void DolphinMainWindow::handleUrl(const KUrl& url)
 {
     if (KProtocolManager::supportsListing(url)) {
         activeViewContainer()->setUrl(url);
-    }
-    else {
+    } else {
         new KRun(url, this);
     }
 }
 
+void DolphinMainWindow::slotCaptionStatFinished(KJob* job)
+{  
+    m_captionStatJob = 0;
+    const KIO::UDSEntry entry = static_cast<KIO::StatJob*>(job)->statResult();
+    const QString name = entry.stringValue(KIO::UDSEntry::UDS_DISPLAY_NAME);
+    setCaption(name);
+}
+
 QString DolphinMainWindow::squeezedText(const QString& text) const
 {
     const QFontMetrics fm = fontMetrics();