]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphinpart.cpp
Make --select can automatically scroll to the selected file.
[dolphin.git] / src / dolphinpart.cpp
index 70d35740f3409fa6076c293a87803a10f3770395..fff7dc0e08b7e74f7039dd698527abc017cb7a9b 100644 (file)
@@ -56,6 +56,7 @@ K_EXPORT_PLUGIN(DolphinPartFactory("dolphinpart", "dolphin"))
 
 DolphinPart::DolphinPart(QWidget* parentWidget, QObject* parent, const QVariantList& args)
     : KParts::ReadOnlyPart(parent)
+      ,m_openTerminalAction(0)
 {
     Q_UNUSED(args)
     setComponentData(DolphinPartFactory::componentData(), false);
@@ -69,7 +70,7 @@ DolphinPart::DolphinPart(QWidget* parentWidget, QObject* parent, const QVariantL
     m_view->setTabsForFilesEnabled(true);
     setWidget(m_view);
 
-    connect(m_view, SIGNAL(finishedDirLoading(KUrl)), this, SLOT(slotCompleted(KUrl)));
+    connect(m_view, SIGNAL(directoryLoadingCompleted()), this, SIGNAL(completed()));
     connect(m_view, SIGNAL(directoryLoadingProgress(int)), this, SLOT(updateProgress(int)));
     connect(m_view, SIGNAL(errorMessage(QString)), this, SLOT(slotErrorMessage(QString)));
 
@@ -190,18 +191,18 @@ void DolphinPart::createActions()
                    goActionGroup);
 
     // Tools menu
-    KAction* findFile = actionCollection()->addAction("find_file");
-    findFile->setText(i18nc("@action:inmenu Tools", "Find File..."));
-    findFile->setShortcut(Qt::CTRL | Qt::Key_F);
-    findFile->setIcon(KIcon("edit-find"));
-    connect(findFile, SIGNAL(triggered()), this, SLOT(slotFindFile()));
+    m_findFileAction = actionCollection()->addAction("find_file");
+    m_findFileAction->setText(i18nc("@action:inmenu Tools", "Find File..."));
+    m_findFileAction->setShortcut(Qt::CTRL | Qt::Key_F);
+    m_findFileAction->setIcon(KIcon("edit-find"));
+    connect(m_findFileAction, SIGNAL(triggered()), this, SLOT(slotFindFile()));
 
     if (KAuthorized::authorizeKAction("shell_access")) {
-        KAction* action = actionCollection()->addAction("open_terminal");
-        action->setIcon(KIcon("utilities-terminal"));
-        action->setText(i18nc("@action:inmenu Tools", "Open &Terminal"));
-        connect(action, SIGNAL(triggered()), SLOT(slotOpenTerminal()));
-        action->setShortcut(Qt::Key_F4);
+        m_openTerminalAction = actionCollection()->addAction("open_terminal");
+        m_openTerminalAction->setIcon(KIcon("utilities-terminal"));
+        m_openTerminalAction->setText(i18nc("@action:inmenu Tools", "Open &Terminal"));
+        connect(m_openTerminalAction, SIGNAL(triggered()), SLOT(slotOpenTerminal()));
+        m_openTerminalAction->setShortcut(Qt::Key_F4);
     }
 }
 
@@ -296,15 +297,16 @@ bool DolphinPart::openUrl(const KUrl& url)
     emit aboutToOpenURL();
     if (reload)
         m_view->reload();
+    // Disable "Find File" and "Open Terminal" actions for non-file URLs,
+    // e.g. ftp, smb, etc. #279283
+    const bool isLocalUrl = url.isLocalFile();
+    m_findFileAction->setEnabled(isLocalUrl);
+    if (m_openTerminalAction) {
+        m_openTerminalAction->setEnabled(isLocalUrl);
+    }
     return true;
 }
 
-void DolphinPart::slotCompleted(const KUrl& url)
-{
-    Q_UNUSED(url)
-    emit completed();
-}
-
 void DolphinPart::slotMessage(const QString& msg)
 {
     emit setStatusBarText(msg);
@@ -552,7 +554,12 @@ void DolphinPart::createDirectory()
 
 void DolphinPart::setFilesToSelect(const KUrl::List& files)
 {
+    if (files.isEmpty()) {
+        return;
+    }
+
     m_view->markUrlsAsSelected(files);
+    m_view->markUrlAsCurrent(files.at(0));
 }
 
 ////