┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/CMakeLists.txt5
-rw-r--r--src/dolphinbookmarkhandler.cpp5
-rw-r--r--src/dolphinbookmarkhandler.h3
-rw-r--r--src/dolphincontextmenu.cpp70
-rw-r--r--src/dolphincontextmenu.h6
-rw-r--r--src/dolphinmainwindow.cpp125
-rw-r--r--src/dolphinmainwindow.h25
-rw-r--r--src/dolphinpart.cpp16
-rw-r--r--src/dolphinpart.h2
-rw-r--r--src/dolphinpart.rc3
-rw-r--r--src/dolphinui.rc4
-rw-r--r--src/kitemviews/kfileitemmodel.cpp66
-rw-r--r--src/kitemviews/kitemlistcontainer.cpp3
-rw-r--r--src/kitemviews/kitemlistcontainer.h3
-rw-r--r--src/kitemviews/kitemlistcontroller.cpp3
-rw-r--r--src/kitemviews/kitemlistcontroller.h3
-rw-r--r--src/kitemviews/kitemlistgroupheader.cpp3
-rw-r--r--src/kitemviews/kitemlistselectionmanager.cpp3
-rw-r--r--src/kitemviews/kitemlistselectionmanager.h3
-rw-r--r--src/kitemviews/kitemlistview.cpp3
-rw-r--r--src/kitemviews/kitemlistview.h3
-rw-r--r--src/kitemviews/kitemlistwidget.cpp3
-rw-r--r--src/kitemviews/kitemlistwidget.h3
-rw-r--r--src/kitemviews/kitemmodelbase.cpp3
-rw-r--r--src/kitemviews/kitemmodelbase.h3
-rw-r--r--src/kitemviews/kitemrange.h3
-rw-r--r--src/kitemviews/kstandarditemlistgroupheader.cpp3
-rw-r--r--src/kitemviews/private/kbaloorolesprovider.cpp7
-rw-r--r--src/kitemviews/private/kitemlistkeyboardsearchmanager.cpp3
-rw-r--r--src/kitemviews/private/kitemlistkeyboardsearchmanager.h5
-rw-r--r--src/panels/folders/treeviewcontextmenu.cpp2
-rw-r--r--src/panels/information/informationpanel.cpp18
-rw-r--r--src/panels/information/informationpanelcontent.cpp5
-rw-r--r--src/panels/places/placesitemlistgroupheader.cpp3
-rw-r--r--src/panels/places/placespanel.cpp8
-rw-r--r--src/panels/terminal/terminalpanel.cpp6
-rw-r--r--src/panels/terminal/terminalpanel.h1
-rw-r--r--src/settings/dolphin_generalsettings.kcfg2
-rw-r--r--src/settings/general/configurepreviewplugindialog.cpp2
-rw-r--r--src/settings/kcm/kcmdolphingeneral.cpp14
-rw-r--r--src/settings/kcm/kcmdolphinnavigation.cpp5
-rw-r--r--src/settings/kcm/kcmdolphinservices.cpp5
42 files changed, 316 insertions, 145 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 617d59480..e240f7106 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -301,9 +301,10 @@ ecm_add_app_icon(dolphin_SRCS ICONS ${ICONS_SRCS})
kf5_add_kdeinit_executable(dolphin ${dolphin_SRCS})
-target_link_libraries(kdeinit_dolphin PRIVATE
- dolphinstatic
+target_link_libraries(kdeinit_dolphin PUBLIC
dolphinprivate
+ PRIVATE
+ dolphinstatic
KF5::Crash
)
diff --git a/src/dolphinbookmarkhandler.cpp b/src/dolphinbookmarkhandler.cpp
index bb8f641ec..ded83d6bb 100644
--- a/src/dolphinbookmarkhandler.cpp
+++ b/src/dolphinbookmarkhandler.cpp
@@ -54,11 +54,6 @@ DolphinBookmarkHandler::~DolphinBookmarkHandler()
{
}
-void DolphinBookmarkHandler::fillControlMenu(QMenu* menu, KActionCollection* collection)
-{
- m_bookmarkControlMenu.reset(new KBookmarkMenu(m_bookmarkManager, this, menu, collection));
-}
-
QString DolphinBookmarkHandler::currentTitle() const
{
return title(m_mainWindow->activeViewContainer());
diff --git a/src/dolphinbookmarkhandler.h b/src/dolphinbookmarkhandler.h
index 6fd511d80..bafef41f8 100644
--- a/src/dolphinbookmarkhandler.h
+++ b/src/dolphinbookmarkhandler.h
@@ -36,7 +36,7 @@ class DolphinBookmarkHandler : public QObject, public KBookmarkOwner
public:
DolphinBookmarkHandler(DolphinMainWindow *mainWindow, KActionCollection *collection, QMenu *menu, QObject *parent);
~DolphinBookmarkHandler() override;
- void fillControlMenu(QMenu *menu, KActionCollection *collection);
+
private:
QString currentTitle() const override;
QUrl currentUrl() const override;
@@ -55,7 +55,6 @@ private:
DolphinMainWindow* m_mainWindow;
KBookmarkManager *m_bookmarkManager;
QScopedPointer<KBookmarkMenu> m_bookmarkMenu;
- QScopedPointer<KBookmarkMenu> m_bookmarkControlMenu;
};
#endif // DOLPHINBOOKMARKHANDLER_H
diff --git a/src/dolphincontextmenu.cpp b/src/dolphincontextmenu.cpp
index c8e9629c3..58a623a6e 100644
--- a/src/dolphincontextmenu.cpp
+++ b/src/dolphincontextmenu.cpp
@@ -32,7 +32,6 @@
#include "views/dolphinview.h"
#include "views/viewmodecontroller.h"
-#include <KAbstractFileItemActionPlugin>
#include <KActionCollection>
#include <KFileItemActions>
#include <KFileItemListProperties>
@@ -95,8 +94,13 @@ void DolphinContextMenu::setCustomActions(const QList<QAction*>& actions)
DolphinContextMenu::Command DolphinContextMenu::open()
{
// get the context information
- if (m_baseUrl.scheme() == QLatin1String("trash")) {
+ const auto scheme = m_baseUrl.scheme();
+ if (scheme == QLatin1String("trash")) {
m_context |= TrashContext;
+ } else if (scheme == QLatin1String("search")) {
+ m_context |= SearchContext;
+ } else if (scheme == QLatin1String("timeline")) {
+ m_context |= TimelineContext;
}
if (!m_fileInfo.isNull() && !m_selectedItems.isEmpty()) {
@@ -184,6 +188,36 @@ void DolphinContextMenu::openTrashItemContextMenu()
}
}
+void DolphinContextMenu::addDirectoryItemContextMenu(KFileItemActions &fileItemActions)
+{
+ // insert 'Open in new window' and 'Open in new tab' entries
+
+ const KFileItemListProperties& selectedItemsProps = selectedItemsProperties();
+
+ addAction(m_mainWindow->actionCollection()->action(QStringLiteral("open_in_new_window")));
+ addAction(m_mainWindow->actionCollection()->action(QStringLiteral("open_in_new_tab")));
+
+ // Insert 'Open With' entries
+ addOpenWithActions(fileItemActions);
+
+ // set up 'Create New' menu
+ DolphinNewFileMenu* newFileMenu = new DolphinNewFileMenu(m_mainWindow->actionCollection(), m_mainWindow);
+ const DolphinView* view = m_mainWindow->activeViewContainer()->view();
+ newFileMenu->setViewShowsHiddenFiles(view->hiddenFilesShown());
+ newFileMenu->checkUpToDate();
+ newFileMenu->setPopupFiles(QList<QUrl>() << m_fileInfo.url());
+ newFileMenu->setEnabled(selectedItemsProps.supportsWriting());
+ connect(newFileMenu, &DolphinNewFileMenu::fileCreated, newFileMenu, &DolphinNewFileMenu::deleteLater);
+ connect(newFileMenu, &DolphinNewFileMenu::directoryCreated, newFileMenu, &DolphinNewFileMenu::deleteLater);
+
+ QMenu* menu = newFileMenu->menu();
+ menu->setTitle(i18nc("@title:menu Create new folder, file, link, etc.", "Create New"));
+ menu->setIcon(QIcon::fromTheme(QStringLiteral("document-new")));
+ addMenu(menu);
+
+ addSeparator();
+}
+
void DolphinContextMenu::openItemContextMenu()
{
Q_ASSERT(!m_fileInfo.isNull());
@@ -198,31 +232,10 @@ void DolphinContextMenu::openItemContextMenu()
fileItemActions.setItemListProperties(selectedItemsProps);
if (m_selectedItems.count() == 1) {
+ // single files
if (m_fileInfo.isDir()) {
- // insert 'Open in new window' and 'Open in new tab' entries
- addAction(m_mainWindow->actionCollection()->action(QStringLiteral("open_in_new_window")));
- addAction(m_mainWindow->actionCollection()->action(QStringLiteral("open_in_new_tab")));
-
- // Insert 'Open With' entries
- addOpenWithActions(fileItemActions);
-
- // set up 'Create New' menu
- DolphinNewFileMenu* newFileMenu = new DolphinNewFileMenu(m_mainWindow->actionCollection(), m_mainWindow);
- const DolphinView* view = m_mainWindow->activeViewContainer()->view();
- newFileMenu->setViewShowsHiddenFiles(view->hiddenFilesShown());
- newFileMenu->checkUpToDate();
- newFileMenu->setPopupFiles(m_fileInfo.url());
- newFileMenu->setEnabled(selectedItemsProps.supportsWriting());
- connect(newFileMenu, &DolphinNewFileMenu::fileCreated, newFileMenu, &DolphinNewFileMenu::deleteLater);
- connect(newFileMenu, &DolphinNewFileMenu::directoryCreated, newFileMenu, &DolphinNewFileMenu::deleteLater);
-
- QMenu* menu = newFileMenu->menu();
- menu->setTitle(i18nc("@title:menu Create new folder, file, link, etc.", "Create New"));
- menu->setIcon(QIcon::fromTheme(QStringLiteral("document-new")));
- addMenu(menu);
-
- addSeparator();
- } else if (m_baseUrl.scheme().contains(QLatin1String("search")) || m_baseUrl.scheme().contains(QLatin1String("timeline"))) {
+ addDirectoryItemContextMenu(fileItemActions);
+ } else if (m_context & TimelineContext || m_context & SearchContext) {
addOpenWithActions(fileItemActions);
openParentAction = new QAction(QIcon::fromTheme(QStringLiteral("document-open-folder")),
@@ -253,8 +266,9 @@ void DolphinContextMenu::openItemContextMenu()
addSeparator();
}
} else {
+ // multiple files
bool selectionHasOnlyDirs = true;
- foreach (const KFileItem& item, m_selectedItems) {
+ for (const auto &item : qAsConst(m_selectedItems)) {
const QUrl& url = DolphinView::openItemAsFolderUrl(item);
if (url.isEmpty()) {
selectionHasOnlyDirs = false;
@@ -338,7 +352,7 @@ void DolphinContextMenu::openViewportContextMenu()
KNewFileMenu* newFileMenu = m_mainWindow->newFileMenu();
newFileMenu->setViewShowsHiddenFiles(view->hiddenFilesShown());
newFileMenu->checkUpToDate();
- newFileMenu->setPopupFiles(m_baseUrl);
+ newFileMenu->setPopupFiles(QList<QUrl>() << m_baseUrl);
addMenu(newFileMenu->menu());
QAction* pasteAction = createPasteAction();
diff --git a/src/dolphincontextmenu.h b/src/dolphincontextmenu.h
index bf0cf2c97..3f36895ec 100644
--- a/src/dolphincontextmenu.h
+++ b/src/dolphincontextmenu.h
@@ -146,7 +146,9 @@ private:
{
NoContext = 0,
ItemContext = 1,
- TrashContext = 2
+ TrashContext = 2,
+ TimelineContext = 4,
+ SearchContext = 8,
};
QPoint m_pos;
@@ -167,6 +169,8 @@ private:
Command m_command;
DolphinRemoveAction* m_removeAction; // Action that represents either 'Move To Trash' or 'Delete'
+ void addDirectoryItemContextMenu(KFileItemActions &fileItemActions);
+
};
#endif
diff --git a/src/dolphinmainwindow.cpp b/src/dolphinmainwindow.cpp
index 56ea93e10..2f11d7aab 100644
--- a/src/dolphinmainwindow.cpp
+++ b/src/dolphinmainwindow.cpp
@@ -57,6 +57,7 @@
#include <KJobWidgets>
#include <KLocalizedString>
#include <KMessageBox>
+#include <KNS3/KMoreToolsMenuFactory>
#include <KProtocolInfo>
#include <KProtocolManager>
#include <KRun>
@@ -197,6 +198,8 @@ DolphinMainWindow::DolphinMainWindow() :
toolBar()->installEventFilter(middleClickEventFilter);
setupWhatsThis();
+
+ QTimer::singleShot(0, this, &DolphinMainWindow::setupUpdateOpenPreferredSearchToolAction);
}
DolphinMainWindow::~DolphinMainWindow()
@@ -592,13 +595,13 @@ void DolphinMainWindow::updateNewMenu()
{
m_newFileMenu->setViewShowsHiddenFiles(activeViewContainer()->view()->hiddenFilesShown());
m_newFileMenu->checkUpToDate();
- m_newFileMenu->setPopupFiles(activeViewContainer()->url());
+ m_newFileMenu->setPopupFiles(QList<QUrl>() << activeViewContainer()->url());
}
void DolphinMainWindow::createDirectory()
{
m_newFileMenu->setViewShowsHiddenFiles(activeViewContainer()->view()->hiddenFilesShown());
- m_newFileMenu->setPopupFiles(activeViewContainer()->url());
+ m_newFileMenu->setPopupFiles(QList<QUrl>() << activeViewContainer()->url());
m_newFileMenu->createDirectory();
}
@@ -933,23 +936,88 @@ void DolphinMainWindow::toggleShowMenuBar()
}
}
-void DolphinMainWindow::openTerminal()
+QString DolphinMainWindow::activeContainerLocalPath()
{
- QString dir(QDir::homePath());
-
- // If the given directory is not local, it can still be the URL of an
- // ioslave using UDS_LOCAL_PATH which to be converted first.
KIO::StatJob* statJob = KIO::mostLocalUrl(m_activeViewContainer->url());
KJobWidgets::setWindow(statJob, this);
statJob->exec();
QUrl url = statJob->mostLocalUrl();
-
- //If the URL is local after the above conversion, set the directory.
if (url.isLocalFile()) {
- dir = url.toLocalFile();
+ return url.toLocalFile();
+ }
+ return QDir::homePath();
+}
+
+QPointer<QAction> DolphinMainWindow::preferredSearchTool()
+{
+ m_searchTools.clear();
+ KMoreToolsMenuFactory("dolphin/search-tools").fillMenuFromGroupingNames(
+ &m_searchTools, { "files-find" }, QUrl::fromLocalFile(activeContainerLocalPath())
+ );
+ QList<QAction*> actions = m_searchTools.actions();
+ if (actions.isEmpty()) {
+ return nullptr;
+ }
+ QAction* action = actions.first();
+ if (action->isSeparator()) {
+ return nullptr;
+ }
+ return action;
+}
+
+void DolphinMainWindow::setupUpdateOpenPreferredSearchToolAction()
+{
+ QAction* openPreferredSearchTool = actionCollection()->action(QStringLiteral("open_preferred_search_tool"));
+ const QList<QWidget*> widgets = openPreferredSearchTool->associatedWidgets();
+ for (QWidget* widget : widgets) {
+ QMenu* menu = qobject_cast<QMenu*>(widget);
+ if (menu) {
+ connect(menu, &QMenu::aboutToShow, this, &DolphinMainWindow::updateOpenPreferredSearchToolAction);
+ }
}
- KToolInvocation::invokeTerminal(QString(), dir);
+ // Update the open_preferred_search_tool action *before* the Configure Shortcuts window is shown,
+ // since this action is then listed in that window and it should be up-to-date when it is displayed.
+ // This update is instantaneous if user made no changes to the search tools in the meantime.
+ // Maybe all KStandardActions should defer calls to their slots, so that we could simply connect() to trigger()?
+ connect(
+ actionCollection()->action(KStandardAction::name(KStandardAction::KeyBindings)), &QAction::hovered,
+ this, &DolphinMainWindow::updateOpenPreferredSearchToolAction
+ );
+
+ updateOpenPreferredSearchToolAction();
+}
+
+void DolphinMainWindow::updateOpenPreferredSearchToolAction()
+{
+ QAction* openPreferredSearchTool = actionCollection()->action(QStringLiteral("open_preferred_search_tool"));
+ if (!openPreferredSearchTool) {
+ return;
+ }
+ QPointer<QAction> tool = preferredSearchTool();
+ if (tool) {
+ openPreferredSearchTool->setVisible(true);
+ openPreferredSearchTool->setText(i18nc("@action:inmenu Tools", "Open %1", tool->text()));
+ openPreferredSearchTool->setIcon(tool->icon());
+ } else {
+ openPreferredSearchTool->setVisible(false);
+ // still visible in Shortcuts configuration window
+ openPreferredSearchTool->setText(i18nc("@action:inmenu Tools", "Open Preferred Search Tool"));
+ openPreferredSearchTool->setIcon(QIcon::fromTheme(QStringLiteral("search")));
+ }
+}
+
+void DolphinMainWindow::openPreferredSearchTool()
+{
+ QPointer<QAction> tool = preferredSearchTool();
+ if (tool) {
+ tool->trigger();
+ }
+}
+
+void DolphinMainWindow::openTerminal()
+{
+ KToolInvocation::invokeTerminal(QString(), activeContainerLocalPath());
}
void DolphinMainWindow::editSettings()
@@ -1091,7 +1159,9 @@ void DolphinMainWindow::updateControlMenu()
// Add a curated assortment of items from the "Tools" menu
addActionToMenu(ac->action(QStringLiteral("show_filter_bar")), menu);
+ addActionToMenu(ac->action(QStringLiteral("open_preferred_search_tool")), menu);
addActionToMenu(ac->action(QStringLiteral("open_terminal")), menu);
+ connect(menu, &QMenu::aboutToShow, this, &DolphinMainWindow::updateOpenPreferredSearchToolAction);
menu->addSeparator();
@@ -1465,6 +1535,15 @@ void DolphinMainWindow::setupActions()
compareFiles->setEnabled(false);
connect(compareFiles, &QAction::triggered, this, &DolphinMainWindow::compareFiles);
+ QAction* openPreferredSearchTool = actionCollection()->addAction(QStringLiteral("open_preferred_search_tool"));
+ openPreferredSearchTool->setText(i18nc("@action:inmenu Tools", "Open Preferred Search Tool"));
+ openPreferredSearchTool->setWhatsThis(xi18nc("@info:whatsthis",
+ "<para>This opens a preferred search tool for the viewed location.</para>"
+ "<para>Use <emphasis>More Search Tools</emphasis> menu to configure it.</para>"));
+ openPreferredSearchTool->setIcon(QIcon::fromTheme(QStringLiteral("search")));
+ actionCollection()->setDefaultShortcut(openPreferredSearchTool, Qt::CTRL + Qt::SHIFT + Qt::Key_F);
+ connect(openPreferredSearchTool, &QAction::triggered, this, &DolphinMainWindow::openPreferredSearchTool);
+
#ifdef HAVE_TERMINAL
if (KAuthorized::authorize(QStringLiteral("shell_access"))) {
QAction* openTerminal = actionCollection()->addAction(QStringLiteral("open_terminal"));
@@ -1475,6 +1554,12 @@ void DolphinMainWindow::setupActions()
openTerminal->setIcon(QIcon::fromTheme(QStringLiteral("dialog-scripts")));
actionCollection()->setDefaultShortcut(openTerminal, Qt::SHIFT + Qt::Key_F4);
connect(openTerminal, &QAction::triggered, this, &DolphinMainWindow::openTerminal);
+
+ QAction* focusTerminalPanel = actionCollection()->addAction(QStringLiteral("focus_terminal_panel"));
+ focusTerminalPanel->setText(i18nc("@action:inmenu Tools", "Focus Terminal Panel"));
+ focusTerminalPanel->setIcon(QIcon::fromTheme(QStringLiteral("swap-panels")));
+ actionCollection()->setDefaultShortcut(focusTerminalPanel, Qt::CTRL + Qt::SHIFT + Qt::Key_F4);
+ connect(focusTerminalPanel, &QAction::triggered, this, &DolphinMainWindow::focusTerminalPanel);
}
#endif
@@ -2208,6 +2293,8 @@ bool DolphinMainWindow::event(QEvent *event)
QWhatsThisClickedEvent* whatsThisEvent = dynamic_cast<QWhatsThisClickedEvent*>(event);
QDesktopServices::openUrl(QUrl(whatsThisEvent->href()));
return true;
+ } else if (event->type() == QEvent::WindowActivate) {
+ updateOpenPreferredSearchToolAction();
}
return KXmlGuiWindow::event(event);
}
@@ -2224,6 +2311,22 @@ bool DolphinMainWindow::eventFilter(QObject* obj, QEvent* event)
return false;
}
+void DolphinMainWindow::focusTerminalPanel()
+{
+ if (m_terminalPanel->isVisible()) {
+ if (m_terminalPanel->terminalHasFocus()) {
+ m_activeViewContainer->view()->setFocus(Qt::FocusReason::ShortcutFocusReason);
+ actionCollection()->action(QStringLiteral("focus_terminal_panel"))->setText(i18nc("@action:inmenu Tools", "Focus Terminal Panel"));
+ } else {
+ m_terminalPanel->setFocus(Qt::FocusReason::ShortcutFocusReason);
+ actionCollection()->action(QStringLiteral("focus_terminal_panel"))->setText(i18nc("@action:inmenu Tools", "Defocus Terminal Panel"));
+ }
+ } else {
+ actionCollection()->action(QStringLiteral("show_terminal_panel"))->trigger();
+ actionCollection()->action(QStringLiteral("focus_terminal_panel"))->setText(i18nc("@action:inmenu Tools", "Defocus Terminal Panel"));
+ }
+}
+
DolphinMainWindow::UndoUiInterface::UndoUiInterface() :
KIO::FileUndoManager::UiInterface()
{
diff --git a/src/dolphinmainwindow.h b/src/dolphinmainwindow.h
index 3d86340d6..940a03d83 100644
--- a/src/dolphinmainwindow.h
+++ b/src/dolphinmainwindow.h
@@ -30,6 +30,7 @@
#include <QIcon>
#include <QList>
+#include <QMenu>
#include <QPointer>
#include <QUrl>
#include <QVector>
@@ -352,9 +353,21 @@ private slots:
*/
void toggleShowMenuBar();
+ /** Sets up updates for "Open Preferred Search Tool" action. */
+ void setupUpdateOpenPreferredSearchToolAction();
+
+ /** Updates "Open Preferred Search Tool" action. */
+ void updateOpenPreferredSearchToolAction();
+
+ /** Opens preferred search tool for the current location. */
+ void openPreferredSearchTool();
+
/** Opens a terminal window for the current location. */
void openTerminal();
+ /** Focus a Terminal Panel. */
+ void focusTerminalPanel();
+
/** Opens the settings dialog for Dolphin. */
void editSettings();
@@ -597,6 +610,15 @@ private:
/** Adds "What's This?" texts to many widgets and StandardActions. */
void setupWhatsThis();
+ /**
+ * Returns the KIO::StatJob::mostLocalUrl() for the active container URL
+ * if it's a local file. Otherwise returns the user's home path.
+ */
+ QString activeContainerLocalPath();
+
+ /** Returns preferred search tool as configured in "More Search Tools" menu. */
+ QPointer<QAction> preferredSearchTool();
+
private:
/**
* Implements a custom error handling for the undo manager. This
@@ -633,6 +655,9 @@ private:
KToolBarPopupAction* m_backAction;
KToolBarPopupAction* m_forwardAction;
+
+ QMenu m_searchTools;
+
};
inline DolphinViewContainer* DolphinMainWindow::activeViewContainer() const
diff --git a/src/dolphinpart.cpp b/src/dolphinpart.cpp
index 607917f9a..edf58f565 100644
--- a/src/dolphinpart.cpp
+++ b/src/dolphinpart.cpp
@@ -40,6 +40,7 @@
#include <KLocalizedString>
#include <KMessageBox>
#include <KMimeTypeEditor>
+#include <KNS3/KMoreToolsMenuFactory>
#include <KPluginFactory>
#include <KRun>
#include <KSharedConfig>
@@ -553,7 +554,16 @@ void DolphinPart::slotOpenTerminal()
void DolphinPart::slotFindFile()
{
- KRun::run(QStringLiteral("kfind"), {url()}, widget());
+ QMenu searchTools;
+ KMoreToolsMenuFactory("dolphin/search-tools").fillMenuFromGroupingNames(
+ &searchTools, { "files-find" }, QUrl::fromLocalFile(KParts::ReadOnlyPart::localFilePath())
+ );
+ QList<QAction*> actions = searchTools.actions();
+ if (!(actions.isEmpty())) {
+ actions.first()->trigger();
+ } else {
+ KRun::run(QStringLiteral("kfind"), {url()}, widget());
+ }
}
void DolphinPart::updateNewMenu()
@@ -562,7 +572,7 @@ void DolphinPart::updateNewMenu()
m_newFileMenu->checkUpToDate();
m_newFileMenu->setViewShowsHiddenFiles(m_view->hiddenFilesShown());
// And set the files that the menu apply on :
- m_newFileMenu->setPopupFiles(url());
+ m_newFileMenu->setPopupFiles(QList<QUrl>() << url());
}
void DolphinPart::updateStatusBar()
@@ -579,7 +589,7 @@ void DolphinPart::updateProgress(int percent)
void DolphinPart::createDirectory()
{
m_newFileMenu->setViewShowsHiddenFiles(m_view->hiddenFilesShown());
- m_newFileMenu->setPopupFiles(url());
+ m_newFileMenu->setPopupFiles(QList<QUrl>() << url());
m_newFileMenu->createDirectory();
}
diff --git a/src/dolphinpart.h b/src/dolphinpart.h
index 864c08344..fe8f2d14e 100644
--- a/src/dolphinpart.h
+++ b/src/dolphinpart.h
@@ -194,7 +194,7 @@ private Q_SLOTS:
void slotOpenTerminal();
/**
- * Open KFind with the current path.
+ * Open preferred search tool in the current directory to find files.
*/
void slotFindFile();
diff --git a/src/dolphinpart.rc b/src/dolphinpart.rc
index afd3838e3..df152fb20 100644
--- a/src/dolphinpart.rc
+++ b/src/dolphinpart.rc
@@ -1,5 +1,5 @@
<!DOCTYPE kpartgui SYSTEM "kpartgui.dtd">
-<kpartgui name="dolphinpart" version="14" translationDomain="dolphin">
+<kpartgui name="dolphinpart" version="15" translationDomain="dolphin">
<MenuBar>
<Menu name="edit"><text>&amp;Edit</text>
<Action name="new_menu"/>
@@ -39,6 +39,7 @@
</Menu>
<Menu name="tools"><text context="@title:menu">Tools</text>
<Action name="open_terminal"/>
+ <Action name="focus_terminal_panel"/>
<Action name="find_file" />
<Action name="show_filter_bar" />
<Action name="compare_files" />
diff --git a/src/dolphinui.rc b/src/dolphinui.rc
index dcacc56c4..e1bb9ee58 100644
--- a/src/dolphinui.rc
+++ b/src/dolphinui.rc
@@ -1,5 +1,5 @@
<!DOCTYPE kpartgui SYSTEM "kpartgui.dtd">
-<kpartgui name="dolphin" version="27">
+<kpartgui name="dolphin" version="29">
<MenuBar>
<Menu name="file">
<Action name="new_menu" />
@@ -54,7 +54,9 @@
</Menu>
<Menu name="tools">
<Action name="show_filter_bar" />
+ <Action name="open_preferred_search_tool" />
<Action name="open_terminal" />
+ <Action name="focus_terminal_panel"/>
<Action name="compare_files" />
<Action name="change_remote_encoding" />
</Menu>
diff --git a/src/kitemviews/kfileitemmodel.cpp b/src/kitemviews/kfileitemmodel.cpp
index 51ffb2140..ad996a59e 100644
--- a/src/kitemviews/kfileitemmodel.cpp
+++ b/src/kitemviews/kfileitemmodel.cpp
@@ -267,7 +267,7 @@ QMimeData* KFileItemModel::createMimeData(const KItemSet& indexes) const
urls << item.url();
bool isLocal;
- mostLocalUrls << item.mostLocalUrl(isLocal);
+ mostLocalUrls << item.mostLocalUrl(&isLocal);
}
}
@@ -2309,38 +2309,38 @@ const KFileItemModel::RoleInfoMap* KFileItemModel::rolesInfoMap(int& count)
static const RoleInfoMap rolesInfoMap[] = {
// | role | roleType | role translation | group translation | requires Baloo | requires indexer
{ nullptr, NoRole, nullptr, nullptr, nullptr, nullptr, false, false },
- { "text", NameRole, I18N_NOOP2_NOSTRIP("@label", "Name"), nullptr, nullptr, false, false },
- { "size", SizeRole, I18N_NOOP2_NOSTRIP("@label", "Size"), nullptr, nullptr, false, false },
- { "modificationtime", ModificationTimeRole, I18N_NOOP2_NOSTRIP("@label", "Modified"), nullptr, nullptr, false, false },
- { "creationtime", CreationTimeRole, I18N_NOOP2_NOSTRIP("@label", "Created"), nullptr, nullptr, false, false },
- { "accesstime", AccessTimeRole, I18N_NOOP2_NOSTRIP("@label", "Accessed"), nullptr, nullptr, false, false },
- { "type", TypeRole, I18N_NOOP2_NOSTRIP("@label", "Type"), nullptr, nullptr, false, false },
- { "rating", RatingRole, I18N_NOOP2_NOSTRIP("@label", "Rating"), nullptr, nullptr, true, false },
- { "tags", TagsRole, I18N_NOOP2_NOSTRIP("@label", "Tags"), nullptr, nullptr, true, false },
- { "comment", CommentRole, I18N_NOOP2_NOSTRIP("@label", "Comment"), nullptr, nullptr, true, false },
- { "title", TitleRole, I18N_NOOP2_NOSTRIP("@label", "Title"), I18N_NOOP2_NOSTRIP("@label", "Document"), true, true },
- { "wordCount", WordCountRole, I18N_NOOP2_NOSTRIP("@label", "Word Count"), I18N_NOOP2_NOSTRIP("@label", "Document"), true, true },
- { "lineCount", LineCountRole, I18N_NOOP2_NOSTRIP("@label", "Line Count"), I18N_NOOP2_NOSTRIP("@label", "Document"), true, true },
- { "imageDateTime", ImageDateTimeRole, I18N_NOOP2_NOSTRIP("@label", "Date Photographed"), I18N_NOOP2_NOSTRIP("@label", "Image"), true, true },
- { "width", WidthRole, I18N_NOOP2_NOSTRIP("@label", "Width"), I18N_NOOP2_NOSTRIP("@label", "Image"), true, true },
- { "height", HeightRole, I18N_NOOP2_NOSTRIP("@label", "Height"), I18N_NOOP2_NOSTRIP("@label", "Image"), true, true },
- { "orientation", OrientationRole, I18N_NOOP2_NOSTRIP("@label", "Orientation"), I18N_NOOP2_NOSTRIP("@label", "Image"), true, true },
- { "artist", ArtistRole, I18N_NOOP2_NOSTRIP("@label", "Artist"), I18N_NOOP2_NOSTRIP("@label", "Audio"), true, true },
- { "genre", GenreRole, I18N_NOOP2_NOSTRIP("@label", "Genre"), I18N_NOOP2_NOSTRIP("@label", "Audio"), true, true },
- { "album", AlbumRole, I18N_NOOP2_NOSTRIP("@label", "Album"), I18N_NOOP2_NOSTRIP("@label", "Audio"), true, true },
- { "duration", DurationRole, I18N_NOOP2_NOSTRIP("@label", "Duration"), I18N_NOOP2_NOSTRIP("@label", "Audio"), true, true },
- { "bitrate", BitrateRole, I18N_NOOP2_NOSTRIP("@label", "Bitrate"), I18N_NOOP2_NOSTRIP("@label", "Audio"), true, true },
- { "track", TrackRole, I18N_NOOP2_NOSTRIP("@label", "Track"), I18N_NOOP2_NOSTRIP("@label", "Audio"), true, true },
- { "releaseYear", ReleaseYearRole, I18N_NOOP2_NOSTRIP("@label", "Release Year"), I18N_NOOP2_NOSTRIP("@label", "Audio"), true, true },
- { "aspectRatio", AspectRatioRole, I18N_NOOP2_NOSTRIP("@label", "Aspect Ratio"), I18N_NOOP2_NOSTRIP("@label", "Video"), true, true },
- { "frameRate", FrameRateRole, I18N_NOOP2_NOSTRIP("@label", "Frame Rate"), I18N_NOOP2_NOSTRIP("@label", "Video"), true, true },
- { "path", PathRole, I18N_NOOP2_NOSTRIP("@label", "Path"), I18N_NOOP2_NOSTRIP("@label", "Other"), false, false },
- { "deletiontime", DeletionTimeRole, I18N_NOOP2_NOSTRIP("@label", "Deletion Time"), I18N_NOOP2_NOSTRIP("@label", "Other"), false, false },
- { "destination", DestinationRole, I18N_NOOP2_NOSTRIP("@label", "Link Destination"), I18N_NOOP2_NOSTRIP("@label", "Other"), false, false },
- { "originUrl", OriginUrlRole, I18N_NOOP2_NOSTRIP("@label", "Downloaded From"), I18N_NOOP2_NOSTRIP("@label", "Other"), true, false },
- { "permissions", PermissionsRole, I18N_NOOP2_NOSTRIP("@label", "Permissions"), I18N_NOOP2_NOSTRIP("@label", "Other"), false, false },
- { "owner", OwnerRole, I18N_NOOP2_NOSTRIP("@label", "Owner"), I18N_NOOP2_NOSTRIP("@label", "Other"), false, false },
- { "group", GroupRole, I18N_NOOP2_NOSTRIP("@label", "User Group"), I18N_NOOP2_NOSTRIP("@label", "Other"), false, false },
+ { "text", NameRole, I18NC_NOOP("@label", "Name"), nullptr, nullptr, false, false },
+ { "size", SizeRole, I18NC_NOOP("@label", "Size"), nullptr, nullptr, false, false },
+ { "modificationtime", ModificationTimeRole, I18NC_NOOP("@label", "Modified"), nullptr, nullptr, false, false },
+ { "creationtime", CreationTimeRole, I18NC_NOOP("@label", "Created"), nullptr, nullptr, false, false },
+ { "accesstime", AccessTimeRole, I18NC_NOOP("@label", "Accessed"), nullptr, nullptr, false, false },
+ { "type", TypeRole, I18NC_NOOP("@label", "Type"), nullptr, nullptr, false, false },
+ { "rating", RatingRole, I18NC_NOOP("@label", "Rating"), nullptr, nullptr, true, false },
+ { "tags", TagsRole, I18NC_NOOP("@label", "Tags"), nullptr, nullptr, true, false },
+ { "comment", CommentRole, I18NC_NOOP("@label", "Comment"), nullptr, nullptr, true, false },
+ { "title", TitleRole, I18NC_NOOP("@label", "Title"), I18NC_NOOP("@label", "Document"), true, true },
+ { "wordCount", WordCountRole, I18NC_NOOP("@label", "Word Count"), I18NC_NOOP("@label", "Document"), true, true },
+ { "lineCount", LineCountRole, I18NC_NOOP("@label", "Line Count"), I18NC_NOOP("@label", "Document"), true, true },
+ { "imageDateTime", ImageDateTimeRole, I18NC_NOOP("@label", "Date Photographed"), I18NC_NOOP("@label", "Image"), true, true },
+ { "width", WidthRole, I18NC_NOOP("@label", "Width"), I18NC_NOOP("@label", "Image"), true, true },
+ { "height", HeightRole, I18NC_NOOP("@label", "Height"), I18NC_NOOP("@label", "Image"), true, true },
+ { "orientation", OrientationRole, I18NC_NOOP("@label", "Orientation"), I18NC_NOOP("@label", "Image"), true, true },
+ { "artist", ArtistRole, I18NC_NOOP("@label", "Artist"), I18NC_NOOP("@label", "Audio"), true, true },
+ { "genre", GenreRole, I18NC_NOOP("@label", "Genre"), I18NC_NOOP("@label", "Audio"), true, true },
+ { "album", AlbumRole, I18NC_NOOP("@label", "Album"), I18NC_NOOP("@label", "Audio"), true, true },
+ { "duration", DurationRole, I18NC_NOOP("@label", "Duration"), I18NC_NOOP("@label", "Audio"), true, true },
+ { "bitrate", BitrateRole, I18NC_NOOP("@label", "Bitrate"), I18NC_NOOP("@label", "Audio"), true, true },
+ { "track", TrackRole, I18NC_NOOP("@label", "Track"), I18NC_NOOP("@label", "Audio"), true, true },
+ { "releaseYear", ReleaseYearRole, I18NC_NOOP("@label", "Release Year"), I18NC_NOOP("@label", "Audio"), true, true },
+ { "aspectRatio", AspectRatioRole, I18NC_NOOP("@label", "Aspect Ratio"), I18NC_NOOP("@label", "Video"), true, true },
+ { "frameRate", FrameRateRole, I18NC_NOOP("@label", "Frame Rate"), I18NC_NOOP("@label", "Video"), true, true },
+ { "path", PathRole, I18NC_NOOP("@label", "Path"), I18NC_NOOP("@label", "Other"), false, false },
+ { "deletiontime", DeletionTimeRole, I18NC_NOOP("@label", "Deletion Time"), I18NC_NOOP("@label", "Other"), false, false },
+ { "destination", DestinationRole, I18NC_NOOP("@label", "Link Destination"), I18NC_NOOP("@label", "Other"), false, false },
+ { "originUrl", OriginUrlRole, I18NC_NOOP("@label", "Downloaded From"), I18NC_NOOP("@label", "Other"), true, false },
+ { "permissions", PermissionsRole, I18NC_NOOP("@label", "Permissions"), I18NC_NOOP("@label", "Other"), false, false },
+ { "owner", OwnerRole, I18NC_NOOP("@label", "Owner"), I18NC_NOOP("@label", "Other"), false, false },
+ { "group", GroupRole, I18NC_NOOP("@label", "User Group"), I18NC_NOOP("@label", "Other"), false, false },
};
count = sizeof(rolesInfoMap) / sizeof(RoleInfoMap);
diff --git a/src/kitemviews/kitemlistcontainer.cpp b/src/kitemviews/kitemlistcontainer.cpp
index 2deba5466..a3cafc838 100644
--- a/src/kitemviews/kitemlistcontainer.cpp
+++ b/src/kitemviews/kitemlistcontainer.cpp
@@ -1,8 +1,7 @@
/***************************************************************************
* Copyright (C) 2011 by Peter Penz <[email protected]> *
* *
- * Based on the Itemviews NG project from Trolltech Labs: *
- * http://qt.gitorious.org/qt-labs/itemviews-ng *
+ * Based on the Itemviews NG project from Trolltech Labs *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
diff --git a/src/kitemviews/kitemlistcontainer.h b/src/kitemviews/kitemlistcontainer.h
index c5ef85563..9fcb88969 100644
--- a/src/kitemviews/kitemlistcontainer.h
+++ b/src/kitemviews/kitemlistcontainer.h
@@ -1,8 +1,7 @@
/***************************************************************************
* Copyright (C) 2011 by Peter Penz <[email protected]> *
* *
- * Based on the Itemviews NG project from Trolltech Labs: *
- * http://qt.gitorious.org/qt-labs/itemviews-ng *
+ * Based on the Itemviews NG project from Trolltech Labs *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
diff --git a/src/kitemviews/kitemlistcontroller.cpp b/src/kitemviews/kitemlistcontroller.cpp
index a80869dfc..65c42b547 100644
--- a/src/kitemviews/kitemlistcontroller.cpp
+++ b/src/kitemviews/kitemlistcontroller.cpp
@@ -2,8 +2,7 @@
* Copyright (C) 2011 by Peter Penz <[email protected]> *
* Copyright (C) 2012 by Frank Reininghaus <[email protected]> *
* *
- * Based on the Itemviews NG project from Trolltech Labs: *
- * http://qt.gitorious.org/qt-labs/itemviews-ng *
+ * Based on the Itemviews NG project from Trolltech Labs *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
diff --git a/src/kitemviews/kitemlistcontroller.h b/src/kitemviews/kitemlistcontroller.h
index b21e50735..6d9b2ac6a 100644
--- a/src/kitemviews/kitemlistcontroller.h
+++ b/src/kitemviews/kitemlistcontroller.h
@@ -1,8 +1,7 @@
/***************************************************************************
* Copyright (C) 2011 by Peter Penz <[email protected]> *
* *
- * Based on the Itemviews NG project from Trolltech Labs: *
- * http://qt.gitorious.org/qt-labs/itemviews-ng *
+ * Based on the Itemviews NG project from Trolltech Labs *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
diff --git a/src/kitemviews/kitemlistgroupheader.cpp b/src/kitemviews/kitemlistgroupheader.cpp
index 9689180d1..d78088ce7 100644
--- a/src/kitemviews/kitemlistgroupheader.cpp
+++ b/src/kitemviews/kitemlistgroupheader.cpp
@@ -1,8 +1,7 @@
/***************************************************************************
* Copyright (C) 2011 by Peter Penz <[email protected]> *
* *
- * Based on the Itemviews NG project from Trolltech Labs: *
- * http://qt.gitorious.org/qt-labs/itemviews-ng *
+ * Based on the Itemviews NG project from Trolltech Labs *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
diff --git a/src/kitemviews/kitemlistselectionmanager.cpp b/src/kitemviews/kitemlistselectionmanager.cpp
index 1b4f7db45..6bee19414 100644
--- a/src/kitemviews/kitemlistselectionmanager.cpp
+++ b/src/kitemviews/kitemlistselectionmanager.cpp
@@ -2,8 +2,7 @@
* Copyright (C) 2011 by Peter Penz <[email protected]> *
* Copyright (C) 2011 by Frank Reininghaus <[email protected]> *
* *
- * Based on the Itemviews NG project from Trolltech Labs: *
- * http://qt.gitorious.org/qt-labs/itemviews-ng *
+ * Based on the Itemviews NG project from Trolltech Labs *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
diff --git a/src/kitemviews/kitemlistselectionmanager.h b/src/kitemviews/kitemlistselectionmanager.h
index 6f5710006..6b0435139 100644
--- a/src/kitemviews/kitemlistselectionmanager.h
+++ b/src/kitemviews/kitemlistselectionmanager.h
@@ -1,8 +1,7 @@
/***************************************************************************
* Copyright (C) 2011 by Peter Penz <[email protected]> *
* *
- * Based on the Itemviews NG project from Trolltech Labs: *
- * http://qt.gitorious.org/qt-labs/itemviews-ng *
+ * Based on the Itemviews NG project from Trolltech Labs *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
diff --git a/src/kitemviews/kitemlistview.cpp b/src/kitemviews/kitemlistview.cpp
index 53682461a..5dd21615e 100644
--- a/src/kitemviews/kitemlistview.cpp
+++ b/src/kitemviews/kitemlistview.cpp
@@ -1,8 +1,7 @@
/***************************************************************************
* Copyright (C) 2011 by Peter Penz <[email protected]> *
* *
- * Based on the Itemviews NG project from Trolltech Labs: *
- * http://qt.gitorious.org/qt-labs/itemviews-ng *
+ * Based on the Itemviews NG project from Trolltech Labs *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
diff --git a/src/kitemviews/kitemlistview.h b/src/kitemviews/kitemlistview.h
index 9349e5003..982df1c20 100644
--- a/src/kitemviews/kitemlistview.h
+++ b/src/kitemviews/kitemlistview.h
@@ -1,8 +1,7 @@
/***************************************************************************
* Copyright (C) 2011 by Peter Penz <[email protected]> *
* *
- * Based on the Itemviews NG project from Trolltech Labs: *
- * http://qt.gitorious.org/qt-labs/itemviews-ng *
+ * Based on the Itemviews NG project from Trolltech Labs *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
diff --git a/src/kitemviews/kitemlistwidget.cpp b/src/kitemviews/kitemlistwidget.cpp
index c33335ae6..c3c54a06c 100644
--- a/src/kitemviews/kitemlistwidget.cpp
+++ b/src/kitemviews/kitemlistwidget.cpp
@@ -1,8 +1,7 @@
/***************************************************************************
* Copyright (C) 2011 by Peter Penz <[email protected]> *
* *
- * Based on the Itemviews NG project from Trolltech Labs: *
- * http://qt.gitorious.org/qt-labs/itemviews-ng *
+ * Based on the Itemviews NG project from Trolltech Labs *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
diff --git a/src/kitemviews/kitemlistwidget.h b/src/kitemviews/kitemlistwidget.h
index 433048aa0..66b2da069 100644
--- a/src/kitemviews/kitemlistwidget.h
+++ b/src/kitemviews/kitemlistwidget.h
@@ -1,8 +1,7 @@
/***************************************************************************
* Copyright (C) 2011 by Peter Penz <[email protected]> *
* *
- * Based on the Itemviews NG project from Trolltech Labs: *
- * http://qt.gitorious.org/qt-labs/itemviews-ng *
+ * Based on the Itemviews NG project from Trolltech Labs *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
diff --git a/src/kitemviews/kitemmodelbase.cpp b/src/kitemviews/kitemmodelbase.cpp
index 9cbcbf3c0..faabdbe1d 100644
--- a/src/kitemviews/kitemmodelbase.cpp
+++ b/src/kitemviews/kitemmodelbase.cpp
@@ -1,8 +1,7 @@
/***************************************************************************
* Copyright (C) 2011 by Peter Penz <[email protected]> *
* *
- * Based on the Itemviews NG project from Trolltech Labs: *
- * http://qt.gitorious.org/qt-labs/itemviews-ng *
+ * Based on the Itemviews NG project from Trolltech Labs *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
diff --git a/src/kitemviews/kitemmodelbase.h b/src/kitemviews/kitemmodelbase.h
index f1945de06..a6ba3f7c4 100644
--- a/src/kitemviews/kitemmodelbase.h
+++ b/src/kitemviews/kitemmodelbase.h
@@ -1,8 +1,7 @@
/***************************************************************************
* Copyright (C) 2011 by Peter Penz <[email protected]> *
* *
- * Based on the Itemviews NG project from Trolltech Labs: *
- * http://qt.gitorious.org/qt-labs/itemviews-ng *
+ * Based on the Itemviews NG project from Trolltech Labs *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
diff --git a/src/kitemviews/kitemrange.h b/src/kitemviews/kitemrange.h
index 6453f2154..f62305a39 100644
--- a/src/kitemviews/kitemrange.h
+++ b/src/kitemviews/kitemrange.h
@@ -2,8 +2,7 @@
* Copyright (C) 2011 by Peter Penz <[email protected]> *
* Copyright (C) 2013 by Frank Reininghaus <[email protected]> *
* *
- * Based on the Itemviews NG project from Trolltech Labs: *
- * http://qt.gitorious.org/qt-labs/itemviews-ng *
+ * Based on the Itemviews NG project from Trolltech Labs *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
diff --git a/src/kitemviews/kstandarditemlistgroupheader.cpp b/src/kitemviews/kstandarditemlistgroupheader.cpp
index 015362e3f..062b20e90 100644
--- a/src/kitemviews/kstandarditemlistgroupheader.cpp
+++ b/src/kitemviews/kstandarditemlistgroupheader.cpp
@@ -1,8 +1,7 @@
/***************************************************************************
* Copyright (C) 2011 by Peter Penz <[email protected]> *
* *
- * Based on the Itemviews NG project from Trolltech Labs: *
- * http://qt.gitorious.org/qt-labs/itemviews-ng *
+ * Based on the Itemviews NG project from Trolltech Labs *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
diff --git a/src/kitemviews/private/kbaloorolesprovider.cpp b/src/kitemviews/private/kbaloorolesprovider.cpp
index 8a2a64b31..0f7100faa 100644
--- a/src/kitemviews/private/kbaloorolesprovider.cpp
+++ b/src/kitemviews/private/kbaloorolesprovider.cpp
@@ -81,7 +81,12 @@ QHash<QByteArray, QVariant> KBalooRolesProvider::roleValues(const Baloo::File& f
std::for_each(rangeBegin, rangeEnd, [&list](const entry& s) { list.append(s.second); });
values.insert(role, propertyInfo.formatAsDisplayString(list));
} else {
- values.insert(role, propertyInfo.formatAsDisplayString((*rangeBegin).second));
+ if (propertyInfo.valueType() == QVariant::DateTime) {
+ // Let dolphin format later Dates
+ values.insert(role, (*rangeBegin).second);
+ } else {
+ values.insert(role, propertyInfo.formatAsDisplayString((*rangeBegin).second));
+ }
}
rangeBegin = rangeEnd;
}
diff --git a/src/kitemviews/private/kitemlistkeyboardsearchmanager.cpp b/src/kitemviews/private/kitemlistkeyboardsearchmanager.cpp
index 5256f69ca..1fa6f7a7b 100644
--- a/src/kitemviews/private/kitemlistkeyboardsearchmanager.cpp
+++ b/src/kitemviews/private/kitemlistkeyboardsearchmanager.cpp
@@ -1,8 +1,7 @@
/***************************************************************************
* Copyright (C) 2011 by Tirtha Chatterjee <[email protected]> *
* *
- * Based on the Itemviews NG project from Trolltech Labs: *
- * http://qt.gitorious.org/qt-labs/itemviews-ng *
+ * Based on the Itemviews NG project from Trolltech Labs *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
diff --git a/src/kitemviews/private/kitemlistkeyboardsearchmanager.h b/src/kitemviews/private/kitemlistkeyboardsearchmanager.h
index 9995c16b0..d0161f927 100644
--- a/src/kitemviews/private/kitemlistkeyboardsearchmanager.h
+++ b/src/kitemviews/private/kitemlistkeyboardsearchmanager.h
@@ -1,8 +1,7 @@
/***************************************************************************
* Copyright (C) 2011 by Tirtha Chatterjee <[email protected]> *
* *
- * Based on the Itemviews NG project from Trolltech Labs: *
- * http://qt.gitorious.org/qt-labs/itemviews-ng *
+ * Based on the Itemviews NG project from Trolltech Labs *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
@@ -76,7 +75,7 @@ signals:
* current item.
*/
// TODO: Think about getting rid of the bool parameter
- // (see http://doc.qt.nokia.com/qq/qq13-apis.html#thebooleanparametertrap)
+ // (see https://doc.qt.io/archives/qq/qq13-apis.html#thebooleanparametertrap)
void changeCurrentItem(const QString& string, bool searchFromNextItem);
private:
diff --git a/src/panels/folders/treeviewcontextmenu.cpp b/src/panels/folders/treeviewcontextmenu.cpp
index df9b9d62e..6c4adf883 100644
--- a/src/panels/folders/treeviewcontextmenu.cpp
+++ b/src/panels/folders/treeviewcontextmenu.cpp
@@ -173,7 +173,7 @@ void TreeViewContextMenu::populateMimeData(QMimeData* mimeData, bool cut)
kdeUrls.append(m_fileItem.url());
QList<QUrl> mostLocalUrls;
bool dummy;
- mostLocalUrls.append(m_fileItem.mostLocalUrl(dummy));
+ mostLocalUrls.append(m_fileItem.mostLocalUrl(&dummy));
KIO::setClipboardDataCut(mimeData, cut);
KUrlMimeData::setUrls(kdeUrls, mostLocalUrls, mimeData);
}
diff --git a/src/panels/information/informationpanel.cpp b/src/panels/information/informationpanel.cpp
index e6c3bf32a..23e7f1922 100644
--- a/src/panels/information/informationpanel.cpp
+++ b/src/panels/information/informationpanel.cpp
@@ -290,8 +290,8 @@ void InformationPanel::reset()
void InformationPanel::slotFileRenamed(const QString& source, const QString& dest)
{
- if (m_shownUrl == QUrl::fromLocalFile(source)) {
- m_shownUrl = QUrl::fromLocalFile(dest);
+ if (m_shownUrl == QUrl::fromUserInput(source)) {
+ m_shownUrl = QUrl::fromUserInput(dest);
m_fileItem = KFileItem(m_shownUrl);
if ((m_selection.count() == 1) && (m_selection[0].url() == QUrl::fromLocalFile(source))) {
@@ -308,10 +308,10 @@ void InformationPanel::slotFileRenamed(const QString& source, const QString& des
void InformationPanel::slotFilesAdded(const QString& directory)
{
- if (m_shownUrl == QUrl::fromLocalFile(directory)) {
+ if (m_shownUrl == QUrl::fromUserInput(directory)) {
// If the 'trash' icon changes because the trash has been emptied or got filled,
// the signal filesAdded("trash:/") will be emitted.
- KFileItem item(QUrl::fromLocalFile(directory));
+ KFileItem item(QUrl::fromUserInput(directory));
requestDelayedItemInfo(item);
}
}
@@ -319,7 +319,7 @@ void InformationPanel::slotFilesAdded(const QString& directory)
void InformationPanel::slotFilesChanged(const QStringList& files)
{
for (const QString& fileName : files) {
- if (m_shownUrl == QUrl::fromLocalFile(fileName)) {
+ if (m_shownUrl == QUrl::fromUserInput(fileName)) {
showItemInfo();
break;
}
@@ -329,7 +329,7 @@ void InformationPanel::slotFilesChanged(const QStringList& files)
void InformationPanel::slotFilesRemoved(const QStringList& files)
{
for (const QString& fileName : files) {
- if (m_shownUrl == QUrl::fromLocalFile(fileName)) {
+ if (m_shownUrl == QUrl::fromUserInput(fileName)) {
// the currently shown item has been removed, show
// the parent directory as fallback
markUrlAsInvalid();
@@ -340,15 +340,15 @@ void InformationPanel::slotFilesRemoved(const QStringList& files)
void InformationPanel::slotEnteredDirectory(const QString& directory)
{
- if (m_shownUrl == QUrl::fromLocalFile(directory)) {
- KFileItem item(QUrl::fromLocalFile(directory));
+ if (m_shownUrl == QUrl::fromUserInput(directory)) {
+ KFileItem item(QUrl::fromUserInput(directory));
requestDelayedItemInfo(item);
}
}
void InformationPanel::slotLeftDirectory(const QString& directory)
{
- if (m_shownUrl == QUrl::fromLocalFile(directory)) {
+ if (m_shownUrl == QUrl::fromUserInput(directory)) {
// The signal 'leftDirectory' is also emitted when a media
// has been unmounted. In this case no directory change will be
// done in Dolphin, but the Information Panel must be updated to
diff --git a/src/panels/information/informationpanelcontent.cpp b/src/panels/information/informationpanelcontent.cpp
index 417ca709c..5c1b7ae22 100644
--- a/src/panels/information/informationpanelcontent.cpp
+++ b/src/panels/information/informationpanelcontent.cpp
@@ -166,12 +166,13 @@ InformationPanelContent::~InformationPanelContent()
void InformationPanelContent::showItem(const KFileItem& item)
{
- if (item != m_item) {
+ // compares item entries, comparing items only compares urls
+ if (m_item.entry() != item.entry()) {
m_item = item;
-
m_preview->stopAnimatedImage();
refreshMetaData();
}
+
refreshPreview();
}
diff --git a/src/panels/places/placesitemlistgroupheader.cpp b/src/panels/places/placesitemlistgroupheader.cpp
index 884859d5b..dbd055f36 100644
--- a/src/panels/places/placesitemlistgroupheader.cpp
+++ b/src/panels/places/placesitemlistgroupheader.cpp
@@ -1,8 +1,7 @@
/***************************************************************************
* Copyright (C) 2012 by Peter Penz <[email protected]> *
* *
- * Based on the Itemviews NG project from Trolltech Labs: *
- * http://qt.gitorious.org/qt-labs/itemviews-ng *
+ * Based on the Itemviews NG project from Trolltech Labs *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
diff --git a/src/panels/places/placespanel.cpp b/src/panels/places/placespanel.cpp
index 8469399a7..34361a5a7 100644
--- a/src/panels/places/placespanel.cpp
+++ b/src/panels/places/placespanel.cpp
@@ -309,10 +309,10 @@ void PlacesPanel::slotViewContextMenuRequested(const QPointF& pos)
const int iconSizeCount = 4;
static const IconSizeInfo iconSizes[iconSizeCount] = {
- {KIconLoader::SizeSmall, I18N_NOOP2_NOSTRIP("Small icon size", "Small (%1x%2)")},
- {KIconLoader::SizeSmallMedium, I18N_NOOP2_NOSTRIP("Medium icon size", "Medium (%1x%2)")},
- {KIconLoader::SizeMedium, I18N_NOOP2_NOSTRIP("Large icon size", "Large (%1x%2)")},
- {KIconLoader::SizeLarge, I18N_NOOP2_NOSTRIP("Huge icon size", "Huge (%1x%2)")}
+ {KIconLoader::SizeSmall, I18NC_NOOP("Small icon size", "Small (%1x%2)")},
+ {KIconLoader::SizeSmallMedium, I18NC_NOOP("Medium icon size", "Medium (%1x%2)")},
+ {KIconLoader::SizeMedium, I18NC_NOOP("Large icon size", "Large (%1x%2)")},
+ {KIconLoader::SizeLarge, I18NC_NOOP("Huge icon size", "Huge (%1x%2)")}
};
QHash<QAction*, int> iconSizeActionMap;
diff --git a/src/panels/terminal/terminalpanel.cpp b/src/panels/terminal/terminalpanel.cpp
index 86974d200..861afebee 100644
--- a/src/panels/terminal/terminalpanel.cpp
+++ b/src/panels/terminal/terminalpanel.cpp
@@ -147,6 +147,7 @@ void TerminalPanel::showEvent(QShowEvent* event)
if (m_konsolePart) {
connect(m_konsolePart, &KParts::ReadOnlyPart::destroyed, this, &TerminalPanel::terminalExited);
m_terminalWidget = m_konsolePart->widget();
+ setFocusProxy(m_terminalWidget);
m_layout->addWidget(m_terminalWidget);
if (m_konsolePartMissingMessage) {
m_layout->removeWidget(m_konsolePartMissingMessage);
@@ -263,3 +264,8 @@ void TerminalPanel::slotKonsolePartCurrentDirectoryChanged(const QString& dir)
const QUrl url(QUrl::fromLocalFile(dir));
emit changeUrl(url);
}
+
+bool TerminalPanel::terminalHasFocus() const
+{
+ return m_terminalWidget->hasFocus();
+}
diff --git a/src/panels/terminal/terminalpanel.h b/src/panels/terminal/terminalpanel.h
index f5d66e548..6ab205fe3 100644
--- a/src/panels/terminal/terminalpanel.h
+++ b/src/panels/terminal/terminalpanel.h
@@ -56,6 +56,7 @@ public:
void goHome();
QString currentWorkingDirectory();
bool isHiddenInVisibleWindow() const;
+ bool terminalHasFocus() const;
bool hasProgramRunning() const;
QString runningProgramName() const;
diff --git a/src/settings/dolphin_generalsettings.kcfg b/src/settings/dolphin_generalsettings.kcfg
index 5a7bb1a01..fca70656d 100644
--- a/src/settings/dolphin_generalsettings.kcfg
+++ b/src/settings/dolphin_generalsettings.kcfg
@@ -16,7 +16,7 @@
</entry>
<entry name="UrlCompletionMode" type="Enum">
<label>Text completion mode of the URL Navigator</label>
- <default>KCompletion::CompletionPopup</default>
+ <default>KCompletion::CompletionPopupAuto</default>
</entry>
<entry name="ShowFullPath" type="Bool">
<label>Should the full path be shown inside the location bar</label>
diff --git a/src/settings/general/configurepreviewplugindialog.cpp b/src/settings/general/configurepreviewplugindialog.cpp
index 60e814c13..bc3cca706 100644
--- a/src/settings/general/configurepreviewplugindialog.cpp
+++ b/src/settings/general/configurepreviewplugindialog.cpp
@@ -66,7 +66,7 @@ ConfigurePreviewPluginDialog::ConfigurePreviewPluginDialog(const QString& plugin
// delete the whole thumbnails directory.
previewPlugin->writeConfiguration(configurationWidget);
- // http://specifications.freedesktop.org/thumbnail-spec/thumbnail-spec-latest.html#DIRECTORY
+ // https://specifications.freedesktop.org/thumbnail-spec/thumbnail-spec-latest.html#DIRECTORY
const QString thumbnailsPath = QStandardPaths::writableLocation(QStandardPaths::GenericCacheLocation) + QLatin1String("/thumbnails/");
KIO::del(QUrl::fromLocalFile(thumbnailsPath), KIO::HideProgressInfo);
});
diff --git a/src/settings/kcm/kcmdolphingeneral.cpp b/src/settings/kcm/kcmdolphingeneral.cpp
index ccc32a8a6..00781f657 100644
--- a/src/settings/kcm/kcmdolphingeneral.cpp
+++ b/src/settings/kcm/kcmdolphingeneral.cpp
@@ -26,6 +26,7 @@
#include <KLocalizedString>
#include <KPluginFactory>
#include <KPluginLoader>
+#include <kconfigwidgets_version.h>
#include <QTabWidget>
#include <QVBoxLayout>
@@ -48,18 +49,29 @@ DolphinGeneralConfigModule::DolphinGeneralConfigModule(QWidget* parent, const QV
// initialize 'Behavior' tab
BehaviorSettingsPage* behaviorPage = new BehaviorSettingsPage(QUrl::fromLocalFile(QDir::homePath()), tabWidget);
tabWidget->addTab(behaviorPage, i18nc("@title:tab Behavior settings", "Behavior"));
+#if KCONFIGWIDGETS_VERSION < QT_VERSION_CHECK(5, 64, 0)
connect(behaviorPage, &BehaviorSettingsPage::changed, this, QOverload<>::of(&DolphinGeneralConfigModule::changed));
+#else
+ connect(behaviorPage, &BehaviorSettingsPage::changed, this, &DolphinGeneralConfigModule::markAsChanged);
+#endif
// initialize 'Previews' tab
PreviewsSettingsPage* previewsPage = new PreviewsSettingsPage(tabWidget);
tabWidget->addTab(previewsPage, i18nc("@title:tab Previews settings", "Previews"));
+#if KCONFIGWIDGETS_VERSION < QT_VERSION_CHECK(5, 64, 0)
connect(previewsPage, &PreviewsSettingsPage::changed, this, QOverload<>::of(&DolphinGeneralConfigModule::changed));
+#else
+ connect(previewsPage, &PreviewsSettingsPage::changed, this, &DolphinGeneralConfigModule::markAsChanged);
+#endif
// initialize 'Confirmations' tab
ConfirmationsSettingsPage* confirmationsPage = new ConfirmationsSettingsPage(tabWidget);
tabWidget->addTab(confirmationsPage, i18nc("@title:tab Confirmations settings", "Confirmations"));
+#if KCONFIGWIDGETS_VERSION < QT_VERSION_CHECK(5, 64, 0)
connect(confirmationsPage, &ConfirmationsSettingsPage::changed, this, QOverload<>::of(&DolphinGeneralConfigModule::changed));
-
+#else
+ connect(confirmationsPage, &ConfirmationsSettingsPage::changed, this, &DolphinGeneralConfigModule::markAsChanged);
+#endif
m_pages.append(behaviorPage);
m_pages.append(previewsPage);
m_pages.append(confirmationsPage);
diff --git a/src/settings/kcm/kcmdolphinnavigation.cpp b/src/settings/kcm/kcmdolphinnavigation.cpp
index 6b88dadac..9bb3e99fc 100644
--- a/src/settings/kcm/kcmdolphinnavigation.cpp
+++ b/src/settings/kcm/kcmdolphinnavigation.cpp
@@ -20,6 +20,7 @@
#include "kcmdolphinnavigation.h"
#include "settings/navigation/navigationsettingspage.h"
+#include <kconfigwidgets_version.h>
#include <KPluginFactory>
#include <KPluginLoader>
@@ -40,7 +41,11 @@ DolphinNavigationConfigModule::DolphinNavigationConfigModule(QWidget* parent, co
topLayout->setContentsMargins(0, 0, 0, 0);
m_navigation = new NavigationSettingsPage(this);
+#if KCONFIGWIDGETS_VERSION < QT_VERSION_CHECK(5, 64, 0)
connect(m_navigation, &NavigationSettingsPage::changed, this, QOverload<>::of(&DolphinNavigationConfigModule::changed));
+#else
+ connect(m_navigation, &NavigationSettingsPage::changed, this, &DolphinNavigationConfigModule::markAsChanged);
+#endif
topLayout->addWidget(m_navigation, 0, nullptr);
}
diff --git a/src/settings/kcm/kcmdolphinservices.cpp b/src/settings/kcm/kcmdolphinservices.cpp
index d5457f1fd..be3066345 100644
--- a/src/settings/kcm/kcmdolphinservices.cpp
+++ b/src/settings/kcm/kcmdolphinservices.cpp
@@ -21,6 +21,7 @@
#include "settings/services/servicessettingspage.h"
+#include <kconfigwidgets_version.h>
#include <KPluginFactory>
#include <KPluginLoader>
@@ -40,7 +41,11 @@ DolphinServicesConfigModule::DolphinServicesConfigModule(QWidget* parent, const
topLayout->setContentsMargins(0, 0, 0, 0);
m_services = new ServicesSettingsPage(this);
+#if KCONFIGWIDGETS_VERSION < QT_VERSION_CHECK(5, 64, 0)
connect(m_services, &ServicesSettingsPage::changed, this, QOverload<>::of(&DolphinServicesConfigModule::changed));
+#else
+ connect(m_services, &ServicesSettingsPage::changed, this, &DolphinServicesConfigModule::markAsChanged);
+#endif
topLayout->addWidget(m_services, 0, nullptr);
}