X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/95270333dc3061138cc3e1c6a8162bd29564492d..37deaaef2c39a4c4b410cd0313a55a4072d2b2ff:/src/views/dolphinviewactionhandler.cpp
diff --git a/src/views/dolphinviewactionhandler.cpp b/src/views/dolphinviewactionhandler.cpp
index 41752e4f1..e89e2e62c 100644
--- a/src/views/dolphinviewactionhandler.cpp
+++ b/src/views/dolphinviewactionhandler.cpp
@@ -136,6 +136,13 @@ void DolphinViewActionHandler::createActions()
deleteWithTrashShortcut->setEnabled(false);
connect(deleteWithTrashShortcut, &QAction::triggered, this, &DolphinViewActionHandler::slotDeleteItems);
+ QAction* duplicateAction = m_actionCollection->addAction(QStringLiteral("duplicate"));
+ duplicateAction->setText(i18nc("@action:inmenu File", "Duplicate Here"));
+ duplicateAction->setIcon(QIcon::fromTheme(QStringLiteral("edit-duplicate")));
+ m_actionCollection->setDefaultShortcut(duplicateAction, Qt::CTRL | Qt::Key_D);
+ duplicateAction->setEnabled(false);
+ connect(duplicateAction, &QAction::triggered, this, &DolphinViewActionHandler::slotDuplicate);
+
QAction *propertiesAction = m_actionCollection->addAction( QStringLiteral("properties") );
// Well, it's the File menu in dolphinmainwindow and the Edit menu in dolphinpart... :)
propertiesAction->setText( i18nc("@action:inmenu File", "Properties") );
@@ -163,7 +170,7 @@ void DolphinViewActionHandler::createActions()
" option is enabled."));
compactAction->setWhatsThis(xi18nc("@info:whatsthis Compact view mode",
"This switches to a compact view mode that lists the folders "
- "and files in columns with the names beside the icons. "
+ "and files in columns with the names beside the icons."
"This helps to keep the overview in folders with many items."));
detailsAction->setWhatsThis(xi18nc("@info:whatsthis Details view mode",
"This switches to a list view mode that focuses on folder "
@@ -188,13 +195,21 @@ void DolphinViewActionHandler::createActions()
m_actionCollection);
zoomInAction->setWhatsThis(i18nc("@info:whatsthis zoom in", "This increases the icon size."));
+ QAction* zoomResetAction = m_actionCollection->addAction(QStringLiteral("view_zoom_reset"));
+ zoomResetAction->setText(i18nc("@action:inmenu View", "Reset Zoom Level"));
+ zoomResetAction->setToolTip(i18n("Zoom To Default"));
+ zoomResetAction->setWhatsThis(i18nc("@info:whatsthis zoom reset", "This resets the icon size to default."));
+ zoomResetAction->setIcon(QIcon::fromTheme(QStringLiteral("zoom-original")));
+ m_actionCollection->setDefaultShortcuts(zoomResetAction, {Qt::CTRL + Qt::Key_0});
+ connect(zoomResetAction, &QAction::triggered, this, &DolphinViewActionHandler::zoomReset);
+
QAction* zoomOutAction = KStandardAction::zoomOut(this,
&DolphinViewActionHandler::zoomOut,
m_actionCollection);
- zoomOutAction->setWhatsThis(i18nc("@info:whatsthis zoom in", "This reduces the icon size."));
+ zoomOutAction->setWhatsThis(i18nc("@info:whatsthis zoom out", "This reduces the icon size."));
KToggleAction* showPreview = m_actionCollection->add(QStringLiteral("show_preview"));
- showPreview->setText(i18nc("@action:intoolbar", "Preview"));
+ showPreview->setText(i18nc("@action:intoolbar", "Show Previews"));
showPreview->setToolTip(i18nc("@info", "Show preview of files and folders"));
showPreview->setWhatsThis(xi18nc("@info:whatsthis", "When this is "
"enabled, the icons are based on the actual file or folder "
@@ -245,7 +260,8 @@ void DolphinViewActionHandler::createActions()
QActionGroup* visibleRolesGroup = createFileItemRolesActionGroup(QStringLiteral("show_"));
KActionMenu* visibleRolesMenu = m_actionCollection->add(QStringLiteral("additional_info"));
- visibleRolesMenu->setText(i18nc("@action:inmenu View", "Additional Information"));
+ visibleRolesMenu->setText(i18nc("@action:inmenu View", "Show Additional Information"));
+ visibleRolesMenu->setIcon(QIcon::fromTheme(QStringLiteral("documentinfo")));
visibleRolesMenu->setDelayed(false);
foreach (QAction* action, visibleRolesGroup->actions()) {
@@ -259,7 +275,7 @@ void DolphinViewActionHandler::createActions()
connect(showInGroups, &KToggleAction::triggered, this, &DolphinViewActionHandler::toggleGroupedSorting);
KToggleAction* showHiddenFiles = m_actionCollection->add(QStringLiteral("show_hidden_files"));
- showHiddenFiles->setText(i18nc("@action:inmenu View", "Hidden Files"));
+ showHiddenFiles->setText(i18nc("@action:inmenu View", "Show Hidden Files"));
showHiddenFiles->setToolTip(i18nc("@info", "Visibility of hidden files and folders"));
showHiddenFiles->setWhatsThis(xi18nc("@info:whatsthis", "When "
"this is enabled hidden files and folders "
@@ -267,11 +283,12 @@ void DolphinViewActionHandler::createActions()
"Hidden items only differ from other ones in that their "
"name starts with a \".\". In general there is no need for "
"users to access them which is why they are hidden."));
- m_actionCollection->setDefaultShortcuts(showHiddenFiles, {Qt::ALT + Qt::Key_Period, Qt::CTRL + Qt::Key_H, Qt::Key_F8});
+ m_actionCollection->setDefaultShortcuts(showHiddenFiles, KStandardShortcut::showHideHiddenFiles());
connect(showHiddenFiles, &KToggleAction::triggered, this, &DolphinViewActionHandler::toggleShowHiddenFiles);
QAction* adjustViewProps = m_actionCollection->addAction(QStringLiteral("view_properties"));
- adjustViewProps->setText(i18nc("@action:inmenu View", "Adjust View Properties..."));
+ adjustViewProps->setText(i18nc("@action:inmenu View", "Adjust View Display Style..."));
+ adjustViewProps->setIcon(QIcon::fromTheme(QStringLiteral("view-choose")));
adjustViewProps->setWhatsThis(i18nc("@info:whatsthis", "This opens a window "
"in which all folder view properties can be adjusted."));
connect(adjustViewProps, &QAction::triggered, this, &DolphinViewActionHandler::slotAdjustViewProperties);
@@ -280,7 +297,7 @@ void DolphinViewActionHandler::createActions()
QActionGroup* DolphinViewActionHandler::createFileItemRolesActionGroup(const QString& groupPrefix)
{
const bool isSortGroup = (groupPrefix == QLatin1String("sort_by_"));
- Q_ASSERT(isSortGroup || (!isSortGroup && groupPrefix == QLatin1String("show_")));
+ Q_ASSERT(isSortGroup || groupPrefix == QLatin1String("show_"));
QActionGroup* rolesActionGroup = new QActionGroup(m_actionCollection);
rolesActionGroup->setExclusive(isSortGroup);
@@ -389,9 +406,9 @@ void DolphinViewActionHandler::togglePreview(bool show)
void DolphinViewActionHandler::slotPreviewsShownChanged(bool shown)
{
- Q_UNUSED(shown);
+ Q_UNUSED(shown)
// It is not enough to update the 'Show Preview' action, also
- // the 'Zoom In' and 'Zoom Out' actions must be adapted.
+ // the 'Zoom In', 'Zoom Out' and 'Zoom Reset' actions must be adapted.
updateViewActions();
}
@@ -454,6 +471,12 @@ void DolphinViewActionHandler::zoomOut()
updateViewActions();
}
+void DolphinViewActionHandler::zoomReset()
+{
+ m_currentView->resetZoomLevel();
+ updateViewActions();
+}
+
void DolphinViewActionHandler::toggleSortFoldersFirst()
{
const bool sortFirst = m_currentView->sortFoldersFirst();
@@ -499,7 +522,7 @@ void DolphinViewActionHandler::toggleVisibleRole(QAction* action)
void DolphinViewActionHandler::slotVisibleRolesChanged(const QList& current,
const QList& previous)
{
- Q_UNUSED(previous);
+ Q_UNUSED(previous)
const QSet checkedRoles = current.toSet();
QHashIterator it(m_visibleRoles);
@@ -535,11 +558,11 @@ void DolphinViewActionHandler::slotHiddenFilesShownChanged(bool shown)
// #374508: don't overwrite custom icons.
const QString iconName = showHiddenFilesAction->icon().name();
- if (!iconName.isEmpty() && iconName != QLatin1String("visibility") && iconName != QLatin1String("hint")) {
+ if (!iconName.isEmpty() && iconName != QLatin1String("view-visible") && iconName != QLatin1String("view-hidden")) {
return;
}
- showHiddenFilesAction->setIcon(QIcon::fromTheme(shown ? QStringLiteral("visibility") : QStringLiteral("hint")));
+ showHiddenFilesAction->setIcon(QIcon::fromTheme(shown ? QStringLiteral("view-visible") : QStringLiteral("view-hidden")));
}
void DolphinViewActionHandler::slotWriteStateChanged(bool isFolderWritable)
@@ -618,7 +641,7 @@ void DolphinViewActionHandler::slotSortRoleChanged(const QByteArray& role)
void DolphinViewActionHandler::slotZoomLevelChanged(int current, int previous)
{
- Q_UNUSED(previous);
+ Q_UNUSED(previous)
QAction* zoomInAction = m_actionCollection->action(KStandardAction::name(KStandardAction::ZoomIn));
if (zoomInAction) {
@@ -637,9 +660,9 @@ void DolphinViewActionHandler::slotSortTriggered(QAction* action)
// and several sub-menus. Because of this they don't have a common
// action-group that assures an exclusive toggle-state between the main-menu
// actions and the sub-menu-actions. If an action gets checked, it must
- // be assured that all other actions get unchecked.
- QAction* sortByMenu = m_actionCollection->action(QStringLiteral("sort"));
- foreach (QAction* groupAction, sortByMenu->menu()->actions()) {
+ // be assured that all other actions get unchecked, except the ascending/
+ // descending actions
+ for (QAction *groupAction : qAsConst(m_sortByActions)) {
KActionMenu* actionMenu = qobject_cast(groupAction);
if (actionMenu) {
foreach (QAction* subAction, actionMenu->menu()->actions()) {
@@ -664,6 +687,12 @@ void DolphinViewActionHandler::slotAdjustViewProperties()
delete dialog;
}
+void DolphinViewActionHandler::slotDuplicate()
+{
+ emit actionBeingHandled();
+ m_currentView->duplicateSelectedItems();
+}
+
void DolphinViewActionHandler::slotProperties()
{
KPropertiesDialog* dialog = nullptr;