X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/b6f4b459eb04b96bcf7ba7d6be9467a1e76cba53..233a08164f79d9909693c5de438f856467ad5b76:/src/dolphinviewactionhandler.cpp diff --git a/src/dolphinviewactionhandler.cpp b/src/dolphinviewactionhandler.cpp index b97fdec34..49a5f7e98 100644 --- a/src/dolphinviewactionhandler.cpp +++ b/src/dolphinviewactionhandler.cpp @@ -22,16 +22,17 @@ #include "settings/viewpropertiesdialog.h" #include "dolphinview.h" #include "zoomlevelinfo.h" - #include #include #include #include +#include #include #include #include + DolphinViewActionHandler::DolphinViewActionHandler(KActionCollection* collection, QObject* parent) : QObject(parent), m_actionCollection(collection), @@ -56,6 +57,8 @@ void DolphinViewActionHandler::setCurrentView(DolphinView* view) this, SLOT(slotShowPreviewChanged())); connect(view, SIGNAL(sortOrderChanged(Qt::SortOrder)), this, SLOT(slotSortOrderChanged(Qt::SortOrder))); + connect(view, SIGNAL(sortFoldersFirstChanged(bool)), + this, SLOT(slotSortFoldersFirstChanged(bool))); connect(view, SIGNAL(additionalInfoChanged()), this, SLOT(slotAdditionalInfoChanged())); connect(view, SIGNAL(categorizedSortingChanged()), @@ -68,26 +71,31 @@ void DolphinViewActionHandler::setCurrentView(DolphinView* view) this, SLOT(slotZoomLevelChanged(int))); } +DolphinView* DolphinViewActionHandler::currentView() +{ + return m_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. 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())); + connect(newDirAction, SIGNAL(triggered()), this, SIGNAL(createDirectory())); - // Edit menu + // File 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)), @@ -95,7 +103,7 @@ 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())); @@ -112,7 +120,8 @@ void DolphinViewActionHandler::createActions() 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->setText( i18nc("@action:inmenu File", "Properties") ); + propertiesAction->setIcon(KIcon("document-properties")); propertiesAction->setShortcut(Qt::ALT | Qt::Key_Return); connect(propertiesAction, SIGNAL(triggered()), SLOT(slotProperties())); @@ -133,14 +142,19 @@ void DolphinViewActionHandler::createActions() m_actionCollection); KToggleAction* showPreview = m_actionCollection->add("show_preview"); - showPreview->setText(i18nc("@action:intoolbar", "P&review")); + showPreview->setText(i18nc("@action:intoolbar", "Preview")); + showPreview->setToolTip(i18nc("@info", "Show preview of files and folders")); 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", "Des&cending")); + sortDescending->setText(i18nc("@action:inmenu Sort", "Descending")); connect(sortDescending, SIGNAL(triggered()), this, SLOT(toggleSortOrder())); + KToggleAction* sortFoldersFirst = m_actionCollection->add("folders_first"); + sortFoldersFirst->setText(i18nc("@action:inmenu Sort", "Folders First")); + connect(sortFoldersFirst, SIGNAL(triggered()), this, SLOT(toggleSortFoldersFirst())); + QActionGroup* sortByActionGroup = createSortByActionGroup(); connect(sortByActionGroup, SIGNAL(triggered(QAction*)), this, SLOT(slotSortTriggered(QAction*))); @@ -148,25 +162,32 @@ 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->setShortcut(Qt::ALT | Qt::Key_Period); + showHiddenFiles->setText(i18nc("@action:inmenu View", "Show Hidden Files")); + showHiddenFiles->setShortcuts(QList() << Qt::ALT + Qt::Key_Period << Qt::Key_F8); 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...")); + 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->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())); + + // 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() @@ -175,32 +196,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", "D&ate")); + showDateInfo->setText(i18nc("@action:inmenu Additional information", "Date")); showDateInfo->setData(KFileItemDelegate::ModificationTime); showDateInfo->setActionGroup(showInformationGroup); KToggleAction* showPermissionsInfo = m_actionCollection->add("show_permissions_info"); - showPermissionsInfo->setText(i18nc("@action:inmenu Additional information", "Pe&rmissions")); + 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->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", "Gro&up")); + 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->setText(i18nc("@action:inmenu Additional information", "Type")); showMimeInfo->setData(KFileItemDelegate::FriendlyMimeType); showMimeInfo->setActionGroup(showInformationGroup); @@ -215,74 +236,43 @@ 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", "Pe&rmissions")); + 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->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); - // TODO: Hid "sort by rating" and "sort by tags" as without caching the performance - // is too slow currently (Nepomuk will support caching in future releases). - // - // KToggleAction* sortByRating = m_actionCollection->add("sort_by_rating"); - // sortByRating->setData(QVariant::fromValue(DolphinView::SortByRating)); - // sortByRating->setText(i18nc("@action:inmenu Sort By", "Rating")); - // sortByActionGroup->addAction(sortByRating); - // - // KToggleAction* sortByTags = m_actionCollection->add("sort_by_tags"); - // sortByTags->setData(QVariant::fromValue(DolphinView::SortByTags)); - // sortByTags->setText(i18nc("@action:inmenu Sort By", "Tags")); - // sortByActionGroup->addAction(sortByTags); - // -#ifdef HAVE_NEPOMUK - // if (!MetaDataWidget::metaDataAvailable()) { - // sortByRating->setEnabled(false); - // sortByTags->setEnabled(false); - // } -#else - // sortByRating->setEnabled(false); - // sortByTags->setEnabled(false); -#endif - - - return sortByActionGroup; } -void DolphinViewActionHandler::slotCreateDir() -{ - Q_ASSERT(m_currentView); - KonqOperations::newDir(m_currentView, m_currentView->url()); -} - void DolphinViewActionHandler::slotViewModeActionTriggered(QAction* action) { const DolphinView::Mode mode = action->data().value(); @@ -339,6 +329,11 @@ QString DolphinViewActionHandler::currentViewModeActionName() const return QString(); // can't happen } +KActionCollection* DolphinViewActionHandler::actionCollection() +{ + return m_actionCollection; +} + void DolphinViewActionHandler::updateViewActions() { QAction* viewModeAction = m_actionCollection->action(currentViewModeActionName()); @@ -350,6 +345,7 @@ void DolphinViewActionHandler::updateViewActions() showPreviewAction->setChecked(m_currentView->showPreview()); slotSortOrderChanged(m_currentView->sortOrder()); + slotSortFoldersFirstChanged(m_currentView->sortFoldersFirst()); slotAdditionalInfoChanged(); slotCategorizedSortingChanged(); slotSortingChanged(m_currentView->sorting()); @@ -379,6 +375,11 @@ void DolphinViewActionHandler::toggleSortOrder() m_currentView->toggleSortOrder(); } +void DolphinViewActionHandler::toggleSortFoldersFirst() +{ + m_currentView->toggleSortFoldersFirst(); +} + void DolphinViewActionHandler::slotSortOrderChanged(Qt::SortOrder order) { QAction* descending = m_actionCollection->action("descending"); @@ -386,6 +387,11 @@ void DolphinViewActionHandler::slotSortOrderChanged(Qt::SortOrder order) descending->setChecked(sortDescending); } +void DolphinViewActionHandler::slotSortFoldersFirstChanged(bool foldersFirst) +{ + m_actionCollection->action("folders_first")->setChecked(foldersFirst); +} + void DolphinViewActionHandler::toggleAdditionalInfo(QAction* action) { emit actionBeingHandled(); @@ -425,7 +431,8 @@ 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->setToolTip(i18nc("@info", "Icons view mode")); iconsView->setShortcut(Qt::CTRL | Qt::Key_1); iconsView->setIcon(KIcon("view-list-icons")); iconsView->setData(QVariant::fromValue(DolphinView::IconsView)); @@ -435,7 +442,8 @@ KToggleAction* DolphinViewActionHandler::iconsModeAction() KToggleAction* DolphinViewActionHandler::detailsModeAction() { KToggleAction* detailsView = m_actionCollection->add("details"); - detailsView->setText(i18nc("@action:inmenu View Mode", "Det&ails")); + detailsView->setText(i18nc("@action:inmenu View Mode", "Details")); + detailsView->setToolTip(i18nc("@info", "Details view mode")); detailsView->setShortcut(Qt::CTRL | Qt::Key_2); detailsView->setIcon(KIcon("view-list-details")); detailsView->setData(QVariant::fromValue(DolphinView::DetailsView)); @@ -445,7 +453,8 @@ KToggleAction* DolphinViewActionHandler::detailsModeAction() KToggleAction* DolphinViewActionHandler::columnsModeAction() { KToggleAction* columnView = m_actionCollection->add("columns"); - columnView->setText(i18nc("@action:inmenu View Mode", "Col&umns")); + columnView->setText(i18nc("@action:inmenu View Mode", "Columns")); + columnView->setToolTip(i18nc("@info", "Columns view mode")); columnView->setShortcut(Qt::CTRL | Qt::Key_3); columnView->setIcon(KIcon("view-file-columns")); columnView->setData(QVariant::fromValue(DolphinView::ColumnView)); @@ -477,14 +486,6 @@ void DolphinViewActionHandler::slotSortingChanged(DolphinView::Sorting sorting) case DolphinView::SortByType: action = m_actionCollection->action("sort_by_type"); break; -#ifdef HAVE_NEPOMUK - case DolphinView::SortByRating: - action = m_actionCollection->action("sort_by_rating"); - break; - case DolphinView::SortByTags: - action = m_actionCollection->action("sort_by_tags"); - break; -#endif default: break; } @@ -516,8 +517,9 @@ void DolphinViewActionHandler::slotSortTriggered(QAction* action) void DolphinViewActionHandler::slotAdjustViewProperties() { emit actionBeingHandled(); - ViewPropertiesDialog dlg(m_currentView); - dlg.exec(); + QPointer dialog = new ViewPropertiesDialog(m_currentView); + dialog->exec(); + delete dialog; } void DolphinViewActionHandler::slotFindFile()