X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/ab39a5952001cdb3d1b9ca693da7f8e246558fb8..cb9669d71cf10e73305c6a60fe0d832f4eb0ac7a:/src/dolphinviewactionhandler.cpp diff --git a/src/dolphinviewactionhandler.cpp b/src/dolphinviewactionhandler.cpp index cc89725c2..62dd4fcfa 100644 --- a/src/dolphinviewactionhandler.cpp +++ b/src/dolphinviewactionhandler.cpp @@ -19,6 +19,7 @@ #include "dolphinviewactionhandler.h" +#include "additionalinfomanager.h" #include "settings/viewpropertiesdialog.h" #include "dolphinview.h" #include "zoomlevelinfo.h" @@ -26,12 +27,14 @@ #include #include +#include +#include #include #include +#include #include #include #include -#include DolphinViewActionHandler::DolphinViewActionHandler(KActionCollection* collection, QObject* parent) @@ -80,7 +83,7 @@ DolphinView* DolphinViewActionHandler::currentView() void DolphinViewActionHandler::createActions() { // This action doesn't appear in the GUI, it's for the shortcut only. - // KNewMenu takes care of the GUI stuff. + // KNewFileMenu takes care of the GUI stuff. KAction* newDirAction = m_actionCollection->addAction("create_dir"); newDirAction->setText(i18nc("@action", "Create Folder...")); newDirAction->setShortcut(Qt::Key_F10); @@ -127,11 +130,16 @@ void DolphinViewActionHandler::createActions() connect(propertiesAction, SIGNAL(triggered()), SLOT(slotProperties())); // View menu - - QActionGroup* viewModeActions = new QActionGroup(this); - viewModeActions->addAction(iconsModeAction()); - viewModeActions->addAction(detailsModeAction()); - viewModeActions->addAction(columnsModeAction()); + KToggleAction* iconsAction = iconsModeAction(); + KToggleAction* detailsAction = detailsModeAction(); + KToggleAction* columnsAction = columnsModeAction(); + + KSelectAction* viewModeActions = m_actionCollection->add("view_mode"); + viewModeActions->setText(i18nc("@action:intoolbar", "View Mode")); + viewModeActions->addAction(iconsAction); + viewModeActions->addAction(detailsAction); + viewModeActions->addAction(columnsAction); + viewModeActions->setToolBarMode(KSelectAction::MenuMode); connect(viewModeActions, SIGNAL(triggered(QAction*)), this, SLOT(slotViewModeActionTriggered(QAction*))); KStandardAction::zoomIn(this, @@ -156,11 +164,31 @@ void DolphinViewActionHandler::createActions() sortFoldersFirst->setText(i18nc("@action:inmenu Sort", "Folders First")); connect(sortFoldersFirst, SIGNAL(triggered()), this, SLOT(toggleSortFoldersFirst())); + // View -> Sort By QActionGroup* sortByActionGroup = createSortByActionGroup(); connect(sortByActionGroup, SIGNAL(triggered(QAction*)), this, SLOT(slotSortTriggered(QAction*))); - QActionGroup* showInformationActionGroup = createAdditionalInformationActionGroup(); - connect(showInformationActionGroup, SIGNAL(triggered(QAction*)), this, SLOT(toggleAdditionalInfo(QAction*))); + KActionMenu* sortByActionMenu = m_actionCollection->add("sort"); + sortByActionMenu->setText(i18nc("@action:inmenu View", "Sort By")); + sortByActionMenu->setDelayed(false); + + foreach (QAction* action, sortByActionGroup->actions()) { + sortByActionMenu->addAction(action); + } + sortByActionMenu->addSeparator(); + sortByActionMenu->addAction(sortDescending); + sortByActionMenu->addAction(sortFoldersFirst); + + // View -> Additional Information + QActionGroup* additionalInfoGroup = createAdditionalInformationActionGroup(); + connect(additionalInfoGroup, SIGNAL(triggered(QAction*)), this, SLOT(toggleAdditionalInfo(QAction*))); + + KActionMenu* additionalInfoMenu = m_actionCollection->add("additional_info"); + additionalInfoMenu->setText(i18nc("@action:inmenu View", "Additional Information")); + additionalInfoMenu->setDelayed(false); + foreach (QAction* action, additionalInfoGroup->actions()) { + additionalInfoMenu->addAction(action); + } KToggleAction* showInGroups = m_actionCollection->add("show_in_groups"); showInGroups->setText(i18nc("@action:inmenu View", "Show in Groups")); @@ -182,51 +210,29 @@ void DolphinViewActionHandler::createActions() findFile->setShortcut(Qt::CTRL | Qt::Key_F); findFile->setIcon(KIcon("edit-find")); connect(findFile, SIGNAL(triggered()), this, SLOT(slotFindFile())); - - // Settings menu - - KAction* getServiceMenu = m_actionCollection->addAction("get_servicemenu"); - getServiceMenu->setText(i18nc("@action:inmenu Settings", "Get Service Menu...")); - getServiceMenu->setIcon(KIcon("get-hot-new-stuff")); - connect(getServiceMenu, SIGNAL(triggered()), this, SLOT(slotGetServiceMenu())); } QActionGroup* DolphinViewActionHandler::createAdditionalInformationActionGroup() { - QActionGroup* showInformationGroup = new QActionGroup(m_actionCollection); - showInformationGroup->setExclusive(false); + QActionGroup* additionalInfoGroup = new QActionGroup(m_actionCollection); + additionalInfoGroup->setExclusive(false); - KToggleAction* showSizeInfo = m_actionCollection->add("show_size_info"); - showSizeInfo->setText(i18nc("@action:inmenu Additional information", "Size")); - showSizeInfo->setData(KFileItemDelegate::Size); - showSizeInfo->setActionGroup(showInformationGroup); + KActionMenu* showInformationMenu = m_actionCollection->add("additional_info"); + showInformationMenu->setText(i18nc("@action:inmenu View", "Additional Information")); + showInformationMenu->setDelayed(false); - KToggleAction* showDateInfo = m_actionCollection->add("show_date_info"); - showDateInfo->setText(i18nc("@action:inmenu Additional information", "Date")); - showDateInfo->setData(KFileItemDelegate::ModificationTime); - showDateInfo->setActionGroup(showInformationGroup); + const AdditionalInfoManager& infoManager = AdditionalInfoManager::instance(); - KToggleAction* showPermissionsInfo = m_actionCollection->add("show_permissions_info"); - showPermissionsInfo->setText(i18nc("@action:inmenu Additional information", "Permissions")); - showPermissionsInfo->setData(KFileItemDelegate::Permissions); - showPermissionsInfo->setActionGroup(showInformationGroup); - - KToggleAction* showOwnerInfo = m_actionCollection->add("show_owner_info"); - 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->setData(KFileItemDelegate::OwnerAndGroup); - showGroupInfo->setActionGroup(showInformationGroup); - - KToggleAction* showMimeInfo = m_actionCollection->add("show_mime_info"); - showMimeInfo->setText(i18nc("@action:inmenu Additional information", "Type")); - showMimeInfo->setData(KFileItemDelegate::FriendlyMimeType); - showMimeInfo->setActionGroup(showInformationGroup); + const KFileItemDelegate::InformationList infos = infoManager.keys(); + foreach (KFileItemDelegate::Information info, infos) { + const QString name = infoManager.actionCollectionName(info); + KToggleAction* action = m_actionCollection->add(name); + action->setText(infoManager.translation(info)); + action->setData(info); + action->setActionGroup(additionalInfoGroup); + } - return showInformationGroup; + return additionalInfoGroup; } Q_DECLARE_METATYPE(DolphinView::Sorting) @@ -236,40 +242,21 @@ QActionGroup* DolphinViewActionHandler::createSortByActionGroup() QActionGroup* sortByActionGroup = new QActionGroup(m_actionCollection); sortByActionGroup->setExclusive(true); - KToggleAction* sortByName = m_actionCollection->add("sort_by_name"); + KToggleAction* sortByName = m_actionCollection->add("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->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->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->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->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->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->setData(QVariant::fromValue(DolphinView::SortByType)); - sortByActionGroup->addAction(sortByType); + const AdditionalInfoManager& infoManager = AdditionalInfoManager::instance(); + const KFileItemDelegate::InformationList infos = infoManager.keys(); + foreach (KFileItemDelegate::Information info, infos) { + const QString name = infoManager.actionCollectionName(info); + KToggleAction* action = m_actionCollection->add(name); + action->setText(infoManager.translation(info)); + // TODO: replace DolphinView::Sorting by KFileItemDelegate::Information! + action->setData(QVariant::fromValue(DolphinView::SortByName)); + sortByActionGroup->addAction(action); + } return sortByActionGroup; } @@ -278,6 +265,9 @@ void DolphinViewActionHandler::slotViewModeActionTriggered(QAction* action) { const DolphinView::Mode mode = action->data().value(); m_currentView->setMode(mode); + + QAction* viewModeMenu = m_actionCollection->action("view_mode"); + viewModeMenu->setIcon(KIcon(action->icon())); } void DolphinViewActionHandler::slotRename() @@ -340,6 +330,9 @@ void DolphinViewActionHandler::updateViewActions() QAction* viewModeAction = m_actionCollection->action(currentViewModeActionName()); if (viewModeAction != 0) { viewModeAction->setChecked(true); + + QAction* viewModeMenu = m_actionCollection->action("view_mode"); + viewModeMenu->setIcon(KIcon(viewModeAction->icon())); } QAction* showPreviewAction = m_actionCollection->action("show_preview"); @@ -354,7 +347,6 @@ void DolphinViewActionHandler::updateViewActions() QAction* showHiddenFilesAction = m_actionCollection->action("show_hidden_files"); showHiddenFilesAction->setChecked(m_currentView->showHiddenFiles()); - } void DolphinViewActionHandler::zoomIn() @@ -493,6 +485,9 @@ void DolphinViewActionHandler::slotSortingChanged(DolphinView::Sorting sorting) if (action != 0) { action->setChecked(true); + + QAction* sortByMenu = m_actionCollection->action("sort"); + sortByMenu->setIcon(KIcon(action->icon())); } }