X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/428a5cacceb9944b0ad803608de663cc84fcdadc..e3a83e67a27db0fdf40bc4a96d4613fcbe5cb3d9:/src/dolphinviewactionhandler.cpp diff --git a/src/dolphinviewactionhandler.cpp b/src/dolphinviewactionhandler.cpp index f382a10c1..b97fdec34 100644 --- a/src/dolphinviewactionhandler.cpp +++ b/src/dolphinviewactionhandler.cpp @@ -18,9 +18,10 @@ ***************************************************************************/ #include "dolphinviewactionhandler.h" -#include +#include "settings/viewpropertiesdialog.h" #include "dolphinview.h" +#include "zoomlevelinfo.h" #include @@ -28,6 +29,8 @@ #include #include #include +#include +#include DolphinViewActionHandler::DolphinViewActionHandler(KActionCollection* collection, QObject* parent) : QObject(parent), @@ -61,6 +64,8 @@ void DolphinViewActionHandler::setCurrentView(DolphinView* view) this, SLOT(slotShowHiddenFilesChanged())); connect(view, SIGNAL(sortingChanged(DolphinView::Sorting)), this, SLOT(slotSortingChanged(DolphinView::Sorting))); + connect(view, SIGNAL(zoomLevelChanged(int)), + this, SLOT(slotZoomLevelChanged(int))); } void DolphinViewActionHandler::createActions() @@ -68,19 +73,21 @@ void DolphinViewActionHandler::createActions() // This action doesn't appear in the GUI, it's for the shortcut only. // KNewMenu takes care of the GUI stuff. KAction* newDirAction = m_actionCollection->addAction("create_dir"); - newDirAction->setText(i18nc("@action", "Create Folder...")); + newDirAction->setText(i18nc("@action", "Create &Folder...")); newDirAction->setShortcut(Qt::Key_F10); + newDirAction->setIcon(KIcon("folder-new")); connect(newDirAction, SIGNAL(triggered()), SLOT(slotCreateDir())); // Edit menu KAction* rename = m_actionCollection->addAction("rename"); - rename->setText(i18nc("@action:inmenu File", "Rename...")); + rename->setText(i18nc("@action:inmenu File", "&Rename...")); rename->setShortcut(Qt::Key_F2); + rename->setIcon(KIcon("edit-rename")); connect(rename, SIGNAL(triggered()), this, SLOT(slotRename())); KAction* moveToTrash = m_actionCollection->addAction("move_to_trash"); - moveToTrash->setText(i18nc("@action:inmenu File", "Move to Trash")); + moveToTrash->setText(i18nc("@action:inmenu File", "&Move to Trash")); moveToTrash->setIcon(KIcon("user-trash")); moveToTrash->setShortcut(QKeySequence::Delete); connect(moveToTrash, SIGNAL(triggered(Qt::MouseButtons, Qt::KeyboardModifiers)), @@ -88,10 +95,27 @@ void DolphinViewActionHandler::createActions() KAction* deleteAction = m_actionCollection->addAction("delete"); deleteAction->setIcon(KIcon("edit-delete")); - deleteAction->setText(i18nc("@action:inmenu File", "Delete")); + deleteAction->setText(i18nc("@action:inmenu File", "&Delete")); deleteAction->setShortcut(Qt::SHIFT | Qt::Key_Delete); connect(deleteAction, SIGNAL(triggered()), this, SLOT(slotDeleteItems())); + // This action is useful for being enabled when "move_to_trash" should be + // disabled and "delete" is enabled (e.g. non-local files), so that Key_Del + // can be used for deleting the file (#76016). It needs to be a separate action + // so that the Edit menu isn't affected. + KAction* deleteWithTrashShortcut = m_actionCollection->addAction("delete_shortcut"); + // The descriptive text is just for the shortcuts editor. + deleteWithTrashShortcut->setText(i18nc("@action:inmenu File", "Delete (using shortcut for Trash)")); + deleteWithTrashShortcut->setShortcut(QKeySequence::Delete); + deleteWithTrashShortcut->setEnabled(false); + connect(deleteWithTrashShortcut, SIGNAL(triggered()), this, SLOT(slotDeleteItems())); + + KAction *propertiesAction = m_actionCollection->addAction( "properties" ); + // Well, it's the File menu in dolphinmainwindow and the Edit menu in dolphinpart... :) + propertiesAction->setText( i18nc("@action:inmenu File", "&Properties") ); + propertiesAction->setShortcut(Qt::ALT | Qt::Key_Return); + connect(propertiesAction, SIGNAL(triggered()), SLOT(slotProperties())); + // View menu QActionGroup* viewModeActions = new QActionGroup(this); @@ -109,12 +133,12 @@ void DolphinViewActionHandler::createActions() m_actionCollection); KToggleAction* showPreview = m_actionCollection->add("show_preview"); - showPreview->setText(i18nc("@action:intoolbar", "Preview")); + showPreview->setText(i18nc("@action:intoolbar", "P&review")); showPreview->setIcon(KIcon("view-preview")); connect(showPreview, SIGNAL(triggered(bool)), this, SLOT(togglePreview(bool))); KToggleAction* sortDescending = m_actionCollection->add("descending"); - sortDescending->setText(i18nc("@action:inmenu Sort", "Descending")); + sortDescending->setText(i18nc("@action:inmenu Sort", "Des&cending")); connect(sortDescending, SIGNAL(triggered()), this, SLOT(toggleSortOrder())); QActionGroup* sortByActionGroup = createSortByActionGroup(); @@ -124,14 +148,25 @@ void DolphinViewActionHandler::createActions() connect(showInformationActionGroup, SIGNAL(triggered(QAction*)), this, SLOT(toggleAdditionalInfo(QAction*))); KToggleAction* showInGroups = m_actionCollection->add("show_in_groups"); - showInGroups->setText(i18nc("@action:inmenu View", "Show in Groups")); + showInGroups->setText(i18nc("@action:inmenu View", "Show in &Groups")); connect(showInGroups, SIGNAL(triggered(bool)), this, SLOT(toggleSortCategorization(bool))); KToggleAction* showHiddenFiles = m_actionCollection->add("show_hidden_files"); - showHiddenFiles->setText(i18nc("@action:inmenu View", "Show Hidden Files")); + showHiddenFiles->setText(i18nc("@action:inmenu View", "Show &Hidden Files")); showHiddenFiles->setShortcut(Qt::ALT | Qt::Key_Period); connect(showHiddenFiles, SIGNAL(triggered(bool)), this, SLOT(toggleShowHiddenFiles(bool))); + KAction* adjustViewProps = m_actionCollection->addAction("view_properties"); + adjustViewProps->setText(i18nc("@action:inmenu View", "Adjust &View Properties...")); + connect(adjustViewProps, SIGNAL(triggered()), this, SLOT(slotAdjustViewProperties())); + + // Tools menu + + KAction* findFile = m_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())); } QActionGroup* DolphinViewActionHandler::createAdditionalInformationActionGroup() @@ -140,32 +175,32 @@ QActionGroup* DolphinViewActionHandler::createAdditionalInformationActionGroup() showInformationGroup->setExclusive(false); KToggleAction* showSizeInfo = m_actionCollection->add("show_size_info"); - showSizeInfo->setText(i18nc("@action:inmenu Additional information", "Size")); + showSizeInfo->setText(i18nc("@action:inmenu Additional information", "&Size")); showSizeInfo->setData(KFileItemDelegate::Size); showSizeInfo->setActionGroup(showInformationGroup); KToggleAction* showDateInfo = m_actionCollection->add("show_date_info"); - showDateInfo->setText(i18nc("@action:inmenu Additional information", "Date")); + showDateInfo->setText(i18nc("@action:inmenu Additional information", "D&ate")); showDateInfo->setData(KFileItemDelegate::ModificationTime); showDateInfo->setActionGroup(showInformationGroup); KToggleAction* showPermissionsInfo = m_actionCollection->add("show_permissions_info"); - showPermissionsInfo->setText(i18nc("@action:inmenu Additional information", "Permissions")); + showPermissionsInfo->setText(i18nc("@action:inmenu Additional information", "Pe&rmissions")); showPermissionsInfo->setData(KFileItemDelegate::Permissions); showPermissionsInfo->setActionGroup(showInformationGroup); KToggleAction* showOwnerInfo = m_actionCollection->add("show_owner_info"); - showOwnerInfo->setText(i18nc("@action:inmenu Additional information", "Owner")); + showOwnerInfo->setText(i18nc("@action:inmenu Additional information", "&Owner")); showOwnerInfo->setData(KFileItemDelegate::Owner); showOwnerInfo->setActionGroup(showInformationGroup); KToggleAction* showGroupInfo = m_actionCollection->add("show_group_info"); - showGroupInfo->setText(i18nc("@action:inmenu Additional information", "Group")); + showGroupInfo->setText(i18nc("@action:inmenu Additional information", "Gro&up")); showGroupInfo->setData(KFileItemDelegate::OwnerAndGroup); showGroupInfo->setActionGroup(showInformationGroup); KToggleAction* showMimeInfo = m_actionCollection->add("show_mime_info"); - showMimeInfo->setText(i18nc("@action:inmenu Additional information", "Type")); + showMimeInfo->setText(i18nc("@action:inmenu Additional information", "&Type")); showMimeInfo->setData(KFileItemDelegate::FriendlyMimeType); showMimeInfo->setActionGroup(showInformationGroup); @@ -180,37 +215,37 @@ QActionGroup* DolphinViewActionHandler::createSortByActionGroup() sortByActionGroup->setExclusive(true); KToggleAction* sortByName = m_actionCollection->add("sort_by_name"); - sortByName->setText(i18nc("@action:inmenu Sort By", "Name")); + sortByName->setText(i18nc("@action:inmenu Sort By", "&Name")); sortByName->setData(QVariant::fromValue(DolphinView::SortByName)); sortByActionGroup->addAction(sortByName); KToggleAction* sortBySize = m_actionCollection->add("sort_by_size"); - sortBySize->setText(i18nc("@action:inmenu Sort By", "Size")); + sortBySize->setText(i18nc("@action:inmenu Sort By", "&Size")); sortBySize->setData(QVariant::fromValue(DolphinView::SortBySize)); sortByActionGroup->addAction(sortBySize); KToggleAction* sortByDate = m_actionCollection->add("sort_by_date"); - sortByDate->setText(i18nc("@action:inmenu Sort By", "Date")); + sortByDate->setText(i18nc("@action:inmenu Sort By", "&Date")); sortByDate->setData(QVariant::fromValue(DolphinView::SortByDate)); sortByActionGroup->addAction(sortByDate); KToggleAction* sortByPermissions = m_actionCollection->add("sort_by_permissions"); - sortByPermissions->setText(i18nc("@action:inmenu Sort By", "Permissions")); + sortByPermissions->setText(i18nc("@action:inmenu Sort By", "Pe&rmissions")); sortByPermissions->setData(QVariant::fromValue(DolphinView::SortByPermissions)); sortByActionGroup->addAction(sortByPermissions); KToggleAction* sortByOwner = m_actionCollection->add("sort_by_owner"); - sortByOwner->setText(i18nc("@action:inmenu Sort By", "Owner")); + sortByOwner->setText(i18nc("@action:inmenu Sort By", "&Owner")); sortByOwner->setData(QVariant::fromValue(DolphinView::SortByOwner)); sortByActionGroup->addAction(sortByOwner); KToggleAction* sortByGroup = m_actionCollection->add("sort_by_group"); - sortByGroup->setText(i18nc("@action:inmenu Sort By", "Group")); + sortByGroup->setText(i18nc("@action:inmenu Sort By", "&Group")); sortByGroup->setData(QVariant::fromValue(DolphinView::SortByGroup)); sortByActionGroup->addAction(sortByGroup); KToggleAction* sortByType = m_actionCollection->add("sort_by_type"); - sortByType->setText(i18nc("@action:inmenu Sort By", "Type")); + sortByType->setText(i18nc("@action:inmenu Sort By", "&Type")); sortByType->setData(QVariant::fromValue(DolphinView::SortByType)); sortByActionGroup->addAction(sortByType); @@ -311,16 +346,6 @@ void DolphinViewActionHandler::updateViewActions() viewModeAction->setChecked(true); } - QAction* zoomInAction = m_actionCollection->action(KStandardAction::name(KStandardAction::ZoomIn)); - if (zoomInAction != 0) { - zoomInAction->setEnabled(m_currentView->isZoomInPossible()); - } - - QAction* zoomOutAction = m_actionCollection->action(KStandardAction::name(KStandardAction::ZoomOut)); - if (zoomOutAction != 0) { - zoomOutAction->setEnabled(m_currentView->isZoomOutPossible()); - } - QAction* showPreviewAction = m_actionCollection->action("show_preview"); showPreviewAction->setChecked(m_currentView->showPreview()); @@ -328,6 +353,7 @@ void DolphinViewActionHandler::updateViewActions() slotAdditionalInfoChanged(); slotCategorizedSortingChanged(); slotSortingChanged(m_currentView->sorting()); + slotZoomLevelChanged(m_currentView->zoomLevel()); QAction* showHiddenFilesAction = m_actionCollection->action("show_hidden_files"); showHiddenFilesAction->setChecked(m_currentView->showHiddenFiles()); @@ -336,13 +362,15 @@ void DolphinViewActionHandler::updateViewActions() void DolphinViewActionHandler::zoomIn() { - m_currentView->zoomIn(); + const int level = m_currentView->zoomLevel(); + m_currentView->setZoomLevel(level + 1); updateViewActions(); } void DolphinViewActionHandler::zoomOut() { - m_currentView->zoomOut(); + const int level = m_currentView->zoomLevel(); + m_currentView->setZoomLevel(level - 1); updateViewActions(); } @@ -397,7 +425,7 @@ void DolphinViewActionHandler::slotShowHiddenFilesChanged() KToggleAction* DolphinViewActionHandler::iconsModeAction() { KToggleAction* iconsView = m_actionCollection->add("icons"); - iconsView->setText(i18nc("@action:inmenu View Mode", "Icons")); + iconsView->setText(i18nc("@action:inmenu View Mode", "&Icons")); iconsView->setShortcut(Qt::CTRL | Qt::Key_1); iconsView->setIcon(KIcon("view-list-icons")); iconsView->setData(QVariant::fromValue(DolphinView::IconsView)); @@ -407,7 +435,7 @@ KToggleAction* DolphinViewActionHandler::iconsModeAction() KToggleAction* DolphinViewActionHandler::detailsModeAction() { KToggleAction* detailsView = m_actionCollection->add("details"); - detailsView->setText(i18nc("@action:inmenu View Mode", "Details")); + detailsView->setText(i18nc("@action:inmenu View Mode", "Det&ails")); detailsView->setShortcut(Qt::CTRL | Qt::Key_2); detailsView->setIcon(KIcon("view-list-details")); detailsView->setData(QVariant::fromValue(DolphinView::DetailsView)); @@ -417,7 +445,7 @@ KToggleAction* DolphinViewActionHandler::detailsModeAction() KToggleAction* DolphinViewActionHandler::columnsModeAction() { KToggleAction* columnView = m_actionCollection->add("columns"); - columnView->setText(i18nc("@action:inmenu View Mode", "Columns")); + columnView->setText(i18nc("@action:inmenu View Mode", "Col&umns")); columnView->setShortcut(Qt::CTRL | Qt::Key_3); columnView->setIcon(KIcon("view-file-columns")); columnView->setData(QVariant::fromValue(DolphinView::ColumnView)); @@ -466,8 +494,50 @@ void DolphinViewActionHandler::slotSortingChanged(DolphinView::Sorting sorting) } } +void DolphinViewActionHandler::slotZoomLevelChanged(int level) +{ + QAction* zoomInAction = m_actionCollection->action(KStandardAction::name(KStandardAction::ZoomIn)); + if (zoomInAction != 0) { + zoomInAction->setEnabled(level < ZoomLevelInfo::maximumLevel()); + } + + QAction* zoomOutAction = m_actionCollection->action(KStandardAction::name(KStandardAction::ZoomOut)); + if (zoomOutAction != 0) { + zoomOutAction->setEnabled(level > ZoomLevelInfo::minimumLevel()); + } +} + void DolphinViewActionHandler::slotSortTriggered(QAction* action) { const DolphinView::Sorting sorting = action->data().value(); m_currentView->setSorting(sorting); } + +void DolphinViewActionHandler::slotAdjustViewProperties() +{ + emit actionBeingHandled(); + ViewPropertiesDialog dlg(m_currentView); + dlg.exec(); +} + +void DolphinViewActionHandler::slotFindFile() +{ + KRun::run("kfind %u", m_currentView->url(), m_currentView->window()); +} + +void DolphinViewActionHandler::slotProperties() +{ + KPropertiesDialog* dialog = 0; + const KFileItemList list = m_currentView->selectedItems(); + if (list.isEmpty()) { + const KUrl url = m_currentView->url(); + dialog = new KPropertiesDialog(url, m_currentView); + } else { + dialog = new KPropertiesDialog(list, m_currentView); + } + + dialog->setAttribute(Qt::WA_DeleteOnClose); + dialog->show(); + dialog->raise(); + dialog->activateWindow(); +}