#include "views/dolphinviewactionhandler.h"
#include "views/dolphinnewfilemenuobserver.h"
#include "views/dolphinremoteencoding.h"
-#include "views/dolphindirlister.h"
#include <QActionGroup>
#include <QApplication>
#include <QClipboard>
+#include <QDir>
K_PLUGIN_FACTORY(DolphinPartFactory, registerPlugin<DolphinPart>();)
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);
m_view->setTabsForFilesEnabled(true);
setWidget(m_view);
- connect(m_view, SIGNAL(finishedPathLoading(KUrl)), this, SLOT(slotCompleted(KUrl)));
- connect(m_view, SIGNAL(pathLoadingProgress(int)), this, SLOT(updateProgress(int)));
+ 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)));
setXMLFile("dolphinpart.rc");
connect(m_view, SIGNAL(modeChanged(DolphinView::Mode,DolphinView::Mode)),
this, SIGNAL(viewModeChanged())); // relay signal
connect(m_view, SIGNAL(redirection(KUrl,KUrl)),
- this, SLOT(slotRedirection(KUrl,KUrl)));
+ this, SLOT(slotDirectoryRedirection(KUrl,KUrl)));
// Watch for changes that should result in updates to the
// status bar text.
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);
}
}
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);
actionGroups);
}
-void DolphinPart::slotRedirection(const KUrl& oldUrl, const KUrl& newUrl)
+void DolphinPart::slotDirectoryRedirection(const KUrl& oldUrl, const KUrl& newUrl)
{
//kDebug() << oldUrl << newUrl << "currentUrl=" << url();
if (oldUrl.equals(url(), KUrl::CompareWithoutTrailingSlash /* #207572 */)) {
if (okClicked && !pattern.isEmpty()) {
QRegExp patternRegExp(pattern, Qt::CaseSensitive, QRegExp::Wildcard);
- m_view->setItemSelectionEnabled(patternRegExp, selectItems);
+ m_view->selectItems(patternRegExp, selectItems);
}
}
void DolphinPart::setFilesToSelect(const KUrl::List& files)
{
+ if (files.isEmpty()) {
+ return;
+ }
+
m_view->markUrlsAsSelected(files);
+ m_view->markUrlAsCurrent(files.at(0));
}
////
bool DolphinPartFileInfoExtension::hasSelection() const
{
- return part()->view()->hasSelection();
+ return part()->view()->selectedItemsCount() > 0;
}
KParts::FileInfoExtension::QueryModes DolphinPartFileInfoExtension::supportedQueryModes() const