X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/0aadb8cf849fcab8ee8e8108a19e1ff4830054b1..594e0a394341e92069dc16aa0aca5f42ac362274:/src/dolphinmainwindow.cpp diff --git a/src/dolphinmainwindow.cpp b/src/dolphinmainwindow.cpp index d9438ea09..573582bdd 100644 --- a/src/dolphinmainwindow.cpp +++ b/src/dolphinmainwindow.cpp @@ -41,6 +41,7 @@ #include #include #include +#include #include #include #include @@ -176,10 +177,16 @@ DolphinMainWindow::DolphinMainWindow() m_actionHandler = new DolphinViewActionHandler(actionCollection(), m_actionTextHelper, this); connect(m_actionHandler, &DolphinViewActionHandler::actionBeingHandled, this, &DolphinMainWindow::clearStatusBar); connect(m_actionHandler, &DolphinViewActionHandler::createDirectoryTriggered, this, &DolphinMainWindow::createDirectory); + connect(m_actionHandler, &DolphinViewActionHandler::createFileTriggered, this, &DolphinMainWindow::createFile); connect(m_actionHandler, &DolphinViewActionHandler::selectionModeChangeTriggered, this, &DolphinMainWindow::slotSetSelectionMode); - Q_CHECK_PTR(actionCollection()->action(QStringLiteral("create_dir"))); - m_newFileMenu->setNewFolderShortcutAction(actionCollection()->action(QStringLiteral("create_dir"))); + QAction *newDirAction = actionCollection()->action(QStringLiteral("create_dir")); + Q_CHECK_PTR(newDirAction); + m_newFileMenu->setNewFolderShortcutAction(newDirAction); + + QAction *newFileAction = actionCollection()->action(QStringLiteral("create_file")); + Q_CHECK_PTR(newFileAction); + m_newFileMenu->setNewFileShortcutAction(newFileAction); m_remoteEncoding = new DolphinRemoteEncoding(this, m_actionHandler); connect(this, &DolphinMainWindow::urlChanged, m_remoteEncoding, &DolphinRemoteEncoding::slotAboutToOpenUrl); @@ -816,6 +823,15 @@ void DolphinMainWindow::createDirectory() } } +void DolphinMainWindow::createFile() +{ + // Use the same logic as in createDirectory() + if (!m_newFileMenu->isCreateFileRunning()) { + m_newFileMenu->setWorkingDirectory(activeViewContainer()->url()); + m_newFileMenu->createFile(); + } +} + void DolphinMainWindow::quit() { close(); @@ -1446,6 +1462,8 @@ void DolphinMainWindow::slotWriteStateChanged(bool isFolderWritable) newFileMenu()->setEnabled(isFolderWritable && m_activeViewContainer->url().scheme() != QLatin1String("trash")); // When the menu is disabled, actions in it are disabled later in the event loop, and we need to set the disabled reason after that. QTimer::singleShot(0, this, [this]() { + m_disabledActionNotifier->setDisabledReason(actionCollection()->action(QStringLiteral("create_file")), + i18nc("@info", "Cannot create new file: You do not have permission to create items in this folder.")); m_disabledActionNotifier->setDisabledReason(actionCollection()->action(QStringLiteral("create_dir")), i18nc("@info", "Cannot create new folder: You do not have permission to create items in this folder.")); }); @@ -1700,7 +1718,7 @@ void DolphinMainWindow::setupActions() auto hamburgerMenuAction = KStandardAction::hamburgerMenu(nullptr, nullptr, actionCollection()); // setup 'File' menu - m_newFileMenu = new DolphinNewFileMenu(nullptr, this); + m_newFileMenu = new DolphinNewFileMenu(nullptr, nullptr, this); actionCollection()->addAction(QStringLiteral("new_menu"), m_newFileMenu); QMenu *menu = m_newFileMenu->menu(); menu->setTitle(i18nc("@title:menu Create new folder, file, link, etc.", "Create New")); @@ -2068,12 +2086,18 @@ void DolphinMainWindow::setupActions() connect(openPreferredSearchTool, &QAction::triggered, this, &DolphinMainWindow::openPreferredSearchTool); if (KAuthorized::authorize(QStringLiteral("shell_access"))) { + // Get icon of user default terminal emulator application + const KConfigGroup group(KSharedConfig::openConfig(QStringLiteral("kdeglobals"), KConfig::SimpleConfig), QStringLiteral("General")); + const QString terminalDesktopFilename = group.readEntry("TerminalService"); + // Use utilities-terminal icon from theme if readEntry() has failed + const QString terminalIcon = terminalDesktopFilename.isEmpty() ? "utilities-terminal" : KDesktopFile(terminalDesktopFilename).readIcon(); + QAction *openTerminal = actionCollection()->addAction(QStringLiteral("open_terminal")); openTerminal->setText(i18nc("@action:inmenu Tools", "Open Terminal")); openTerminal->setWhatsThis(xi18nc("@info:whatsthis", "This opens a terminal application for the viewed location." "To learn more about terminals use the help features in the terminal application.")); - openTerminal->setIcon(QIcon::fromTheme(QStringLiteral("utilities-terminal"))); + openTerminal->setIcon(QIcon::fromTheme(terminalIcon)); actionCollection()->setDefaultShortcut(openTerminal, Qt::SHIFT | Qt::Key_F4); connect(openTerminal, &QAction::triggered, this, &DolphinMainWindow::openTerminal); @@ -2083,7 +2107,7 @@ void DolphinMainWindow::setupActions() openTerminalHere->setWhatsThis(xi18nc("@info:whatsthis", "This opens terminal applications for the selected items' locations." "To learn more about terminals use the help features in the terminal application.")); - openTerminalHere->setIcon(QIcon::fromTheme(QStringLiteral("utilities-terminal"))); + openTerminalHere->setIcon(QIcon::fromTheme(terminalIcon)); actionCollection()->setDefaultShortcut(openTerminalHere, Qt::SHIFT | Qt::ALT | Qt::Key_F4); connect(openTerminalHere, &QAction::triggered, this, &DolphinMainWindow::openTerminalHere); } @@ -2112,14 +2136,6 @@ void DolphinMainWindow::setupActions() &DolphinMainWindow::toggleShowMenuBar, Qt::QueuedConnection); - KToggleAction *showStatusBar = KStandardAction::showStatusbar(nullptr, nullptr, actionCollection()); - showStatusBar->setChecked(GeneralSettings::showStatusBar()); - connect(GeneralSettings::self(), &GeneralSettings::showStatusBarChanged, showStatusBar, &KToggleAction::setChecked); - connect(showStatusBar, &KToggleAction::triggered, this, [this](bool checked) { - GeneralSettings::setShowStatusBar(checked); - refreshViews(); - }); - KStandardAction::keyBindings(this, &DolphinMainWindow::slotKeyBindings, actionCollection()); KStandardAction::preferences(this, &DolphinMainWindow::editSettings, actionCollection()); @@ -2189,7 +2205,7 @@ void DolphinMainWindow::setupActions() QAction *openInSplitViewAction = actionCollection()->addAction(QStringLiteral("open_in_split_view")); openInSplitViewAction->setText(i18nc("@action:inmenu", "Open in Split View")); - openInSplitViewAction->setIcon(QIcon::fromTheme(QStringLiteral("view-right-new"))); + openInSplitViewAction->setIcon(QIcon::fromTheme(QStringLiteral("view-split-left-right"))); connect(openInSplitViewAction, &QAction::triggered, this, [this]() { openInSplitView(QUrl()); }); @@ -2687,12 +2703,16 @@ void DolphinMainWindow::updateSplitActions() m_splitViewAction->setText(i18nc("@action:intoolbar Close left view", "Close")); m_splitViewAction->setToolTip(i18nc("@info", "Close left view")); m_splitViewAction->setIcon(QIcon::fromTheme(QStringLiteral("view-left-close"))); + m_splitViewMenuAction->setText(i18nc("@action:inmenu Close left view", "Close Left View")); + popoutSplitAction->setText(i18nc("@action:intoolbar Move left view to a new window", "Pop out Left View")); popoutSplitAction->setToolTip(i18nc("@info", "Move left view to a new window")); } else { m_splitViewAction->setText(i18nc("@action:intoolbar Close right view", "Close")); m_splitViewAction->setToolTip(i18nc("@info", "Close right view")); m_splitViewAction->setIcon(QIcon::fromTheme(QStringLiteral("view-right-close"))); + m_splitViewMenuAction->setText(i18nc("@action:inmenu Close left view", "Close Right View")); + popoutSplitAction->setText(i18nc("@action:intoolbar Move right view to a new window", "Pop out Right View")); popoutSplitAction->setToolTip(i18nc("@info", "Move right view to a new window")); } @@ -2704,8 +2724,9 @@ void DolphinMainWindow::updateSplitActions() } } else { m_splitViewAction->setText(i18nc("@action:intoolbar Split view", "Split")); + m_splitViewMenuAction->setText(m_splitViewAction->text()); m_splitViewAction->setToolTip(i18nc("@info", "Split view")); - m_splitViewAction->setIcon(QIcon::fromTheme(QStringLiteral("view-right-new"))); + m_splitViewAction->setIcon(QIcon::fromTheme(QStringLiteral("view-split-left-right"))); popoutSplitAction->setText(i18nc("@action:intoolbar Move view in focus to a new window", "Pop out")); popoutSplitAction->setEnabled(false); if (m_splitViewAction->menu()) { @@ -2717,7 +2738,6 @@ void DolphinMainWindow::updateSplitActions() } // Update state from toolbar action - m_splitViewMenuAction->setText(m_splitViewAction->text()); m_splitViewMenuAction->setToolTip(m_splitViewAction->toolTip()); m_splitViewMenuAction->setIcon(m_splitViewAction->icon()); }