From: David Faure Date: Tue, 22 Jan 2008 00:39:52 +0000 (+0000) Subject: Use a QActionGroup and save 6 slots (and the duplication of the action names in the... X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/commitdiff_plain/d34f1d1b466a8163a2274fa6763e1049233f00bb Use a QActionGroup and save 6 slots (and the duplication of the action names in the code). svn path=/branches/KDE/4.0/kdebase/apps/; revision=764537 --- diff --git a/src/dolphinmainwindow.cpp b/src/dolphinmainwindow.cpp index 407ec16b4..ce13796ac 100644 --- a/src/dolphinmainwindow.cpp +++ b/src/dolphinmainwindow.cpp @@ -660,36 +660,6 @@ void DolphinMainWindow::toggleSortCategorization() view->setCategorizedSorting(!categorizedSorting); } -void DolphinMainWindow::toggleSizeInfo() -{ - toggleAdditionalInfo("show_size_info", KFileItemDelegate::Size); -} - -void DolphinMainWindow::toggleDateInfo() -{ - toggleAdditionalInfo("show_date_info", KFileItemDelegate::ModificationTime); -} - -void DolphinMainWindow::togglePermissionsInfo() -{ - toggleAdditionalInfo("show_permissions_info", KFileItemDelegate::Permissions); -} - -void DolphinMainWindow::toggleOwnerInfo() -{ - toggleAdditionalInfo("show_owner_info", KFileItemDelegate::Owner); -} - -void DolphinMainWindow::toggleGroupInfo() -{ - toggleAdditionalInfo("show_group_info", KFileItemDelegate::OwnerAndGroup); -} - -void DolphinMainWindow::toggleMimeInfo() -{ - toggleAdditionalInfo("show_mime_info", KFileItemDelegate::FriendlyMimeType); -} - void DolphinMainWindow::toggleSplitView() { if (m_viewContainer[SecondaryView] == 0) { @@ -1129,29 +1099,8 @@ void DolphinMainWindow::setupActions() showInGroups->setText(i18nc("@action:inmenu View", "Show in Groups")); connect(showInGroups, SIGNAL(triggered()), this, SLOT(toggleSortCategorization())); - KToggleAction* showSizeInfo = actionCollection()->add("show_size_info"); - showSizeInfo->setText(i18nc("@action:inmenu Additional information", "Size")); - connect(showSizeInfo, SIGNAL(triggered()), this, SLOT(toggleSizeInfo())); - - KToggleAction* showDateInfo = actionCollection()->add("show_date_info"); - showDateInfo->setText(i18nc("@action:inmenu Additional information", "Date")); - connect(showDateInfo, SIGNAL(triggered()), this, SLOT(toggleDateInfo())); - - KToggleAction* showPermissionsInfo = actionCollection()->add("show_permissions_info"); - showPermissionsInfo->setText(i18nc("@action:inmenu Additional information", "Permissions")); - connect(showPermissionsInfo, SIGNAL(triggered()), this, SLOT(togglePermissionsInfo())); - - KToggleAction* showOwnerInfo = actionCollection()->add("show_owner_info"); - showOwnerInfo->setText(i18nc("@action:inmenu Additional information", "Owner")); - connect(showOwnerInfo, SIGNAL(triggered()), this, SLOT(toggleOwnerInfo())); - - KToggleAction* showGroupInfo = actionCollection()->add("show_group_info"); - showGroupInfo->setText(i18nc("@action:inmenu Additional information", "Group")); - connect(showGroupInfo, SIGNAL(triggered()), this, SLOT(toggleGroupInfo())); - - KToggleAction* showMimeInfo = actionCollection()->add("show_mime_info"); - showMimeInfo->setText(i18nc("@action:inmenu Additional information", "Type")); - connect(showMimeInfo, SIGNAL(triggered()), this, SLOT(toggleMimeInfo())); + QActionGroup* showInformationActionGroup = DolphinView::createAdditionalInformationActionGroup(actionCollection()); + connect(showInformationActionGroup, SIGNAL(triggered(QAction*)), this, SLOT(toggleAdditionalInfo(QAction*))); KToggleAction* showPreview = actionCollection()->add("show_preview"); showPreview->setText(i18nc("@action:intoolbar", "Preview")); @@ -1472,15 +1421,17 @@ void DolphinMainWindow::updateSplitAction() } } -void DolphinMainWindow::toggleAdditionalInfo(const char* actionName, - KFileItemDelegate::Information info) +void DolphinMainWindow::toggleAdditionalInfo(QAction* action) { clearStatusBar(); + const KFileItemDelegate::Information info = + static_cast(action->data().toInt()); + DolphinView* view = m_activeViewContainer->view(); KFileItemDelegate::InformationList list = view->additionalInfo(); - const bool show = actionCollection()->action(actionName)->isChecked(); + const bool show = action->isChecked(); const int index = list.indexOf(info); const bool containsInfo = (index >= 0); diff --git a/src/dolphinmainwindow.h b/src/dolphinmainwindow.h index e99add896..ab96cd155 100644 --- a/src/dolphinmainwindow.h +++ b/src/dolphinmainwindow.h @@ -273,23 +273,11 @@ private slots: /** Switches between sorting by categories or not. */ void toggleSortCategorization(); - /** Switches between showing the size as additional information for the item or not. */ - void toggleSizeInfo(); - - /** Switchtes between showing the date as additional information for the item or not. */ - void toggleDateInfo(); - - /** Switchtes between showing the permissions as additional information for the item or not. */ - void togglePermissionsInfo(); - - /** Switchtes between showing the owner as additional information for the item or not. */ - void toggleOwnerInfo(); - - /** Switchtes between showing the group as additional information for the item or not. */ - void toggleGroupInfo(); - - /** Switches between showing the MIME type as additional information for the item or not. */ - void toggleMimeInfo(); + /** + * Applies \a info dependent from the current checked state of the action + * \a actionName to the file item delegate. + */ + void toggleAdditionalInfo(QAction* action); /** * Switches between one and two views: @@ -453,14 +441,6 @@ private: */ void updateSplitAction(); - /** - * Helper method for the slots toggleDateInfo(), toggleSizeInfo() - * and toggleMimeInfo(). Applies \a info dependent from the current - * checked state of the action \a actionName to the file item delegate. - */ - void toggleAdditionalInfo(const char* actionName, - KFileItemDelegate::Information info); - private: /** * DolphinMainWindow supports up to two views beside each other. diff --git a/src/dolphinview.cpp b/src/dolphinview.cpp index cccbd36b9..de57aa00d 100644 --- a/src/dolphinview.cpp +++ b/src/dolphinview.cpp @@ -1272,4 +1272,41 @@ KAction* DolphinView::createSortDescendingAction(KActionCollection* collection) return sortDescending; } +QActionGroup* DolphinView::createAdditionalInformationActionGroup(KActionCollection* collection) +{ + QActionGroup* showInformationGroup = new QActionGroup(collection); + + KToggleAction* showSizeInfo = collection->add("show_size_info"); + showSizeInfo->setText(i18nc("@action:inmenu Additional information", "Size")); + showSizeInfo->setData(KFileItemDelegate::Size); + showSizeInfo->setActionGroup(showInformationGroup); + + KToggleAction* showDateInfo = collection->add("show_date_info"); + showDateInfo->setText(i18nc("@action:inmenu Additional information", "Date")); + showDateInfo->setData(KFileItemDelegate::ModificationTime); + showDateInfo->setActionGroup(showInformationGroup); + + KToggleAction* showPermissionsInfo = collection->add("show_permissions_info"); + showPermissionsInfo->setText(i18nc("@action:inmenu Additional information", "Permissions")); + showPermissionsInfo->setData(KFileItemDelegate::Permissions); + showPermissionsInfo->setActionGroup(showInformationGroup); + + KToggleAction* showOwnerInfo = collection->add("show_owner_info"); + showOwnerInfo->setText(i18nc("@action:inmenu Additional information", "Owner")); + showOwnerInfo->setData(KFileItemDelegate::Owner); + showOwnerInfo->setActionGroup(showInformationGroup); + + KToggleAction* showGroupInfo = collection->add("show_group_info"); + showGroupInfo->setText(i18nc("@action:inmenu Additional information", "Group")); + showGroupInfo->setData(KFileItemDelegate::OwnerAndGroup); + showGroupInfo->setActionGroup(showInformationGroup); + + KToggleAction* showMimeInfo = collection->add("show_mime_info"); + showMimeInfo->setText(i18nc("@action:inmenu Additional information", "Type")); + showMimeInfo->setData(KFileItemDelegate::FriendlyMimeType); + showMimeInfo->setActionGroup(showInformationGroup); + + return showInformationGroup; +} + #include "dolphinview.moc" diff --git a/src/dolphinview.h b/src/dolphinview.h index 80430ca77..e69f0bbc6 100644 --- a/src/dolphinview.h +++ b/src/dolphinview.h @@ -38,6 +38,7 @@ #include #include +class QActionGroup; class KAction; class KToggleAction; class DolphinController; @@ -374,6 +375,12 @@ public: */ static KAction* createSortDescendingAction(KActionCollection* collection); + /** + * Creates an action group with all the "show additional information" actions in it. + * This code is here to share it between the mainwindow and the part + */ + static QActionGroup* createAdditionalInformationActionGroup(KActionCollection* collection); + /** * Returns the action name corresponding to the current view mode */