]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Use a QActionGroup and save 6 slots (and the duplication of the action names in the...
authorDavid Faure <faure@kde.org>
Tue, 22 Jan 2008 00:39:52 +0000 (00:39 +0000)
committerDavid Faure <faure@kde.org>
Tue, 22 Jan 2008 00:39:52 +0000 (00:39 +0000)
svn path=/branches/KDE/4.0/kdebase/apps/; revision=764537

src/dolphinmainwindow.cpp
src/dolphinmainwindow.h
src/dolphinview.cpp
src/dolphinview.h

index 407ec16b4b498b89a70f721718b60cc3c6f3b728..ce13796ac3fca63838cf1a8b83ce243823eeff74 100644 (file)
@@ -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<KToggleAction>("show_size_info");
-    showSizeInfo->setText(i18nc("@action:inmenu Additional information", "Size"));
-    connect(showSizeInfo, SIGNAL(triggered()), this, SLOT(toggleSizeInfo()));
-
-    KToggleAction* showDateInfo = actionCollection()->add<KToggleAction>("show_date_info");
-    showDateInfo->setText(i18nc("@action:inmenu Additional information", "Date"));
-    connect(showDateInfo, SIGNAL(triggered()), this, SLOT(toggleDateInfo()));
-
-    KToggleAction* showPermissionsInfo = actionCollection()->add<KToggleAction>("show_permissions_info");
-    showPermissionsInfo->setText(i18nc("@action:inmenu Additional information", "Permissions"));
-    connect(showPermissionsInfo, SIGNAL(triggered()), this, SLOT(togglePermissionsInfo()));
-
-    KToggleAction* showOwnerInfo = actionCollection()->add<KToggleAction>("show_owner_info");
-    showOwnerInfo->setText(i18nc("@action:inmenu Additional information", "Owner"));
-    connect(showOwnerInfo, SIGNAL(triggered()), this, SLOT(toggleOwnerInfo()));
-
-    KToggleAction* showGroupInfo = actionCollection()->add<KToggleAction>("show_group_info");
-    showGroupInfo->setText(i18nc("@action:inmenu Additional information", "Group"));
-    connect(showGroupInfo, SIGNAL(triggered()), this, SLOT(toggleGroupInfo()));
-
-    KToggleAction* showMimeInfo = actionCollection()->add<KToggleAction>("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<KToggleAction>("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<KFileItemDelegate::Information>(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);
index e99add89619126d6984f7d63a30285d7504fe07f..ab96cd1552f62b306cc6587956ee4ef8c19e2460 100644 (file)
@@ -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.
index cccbd36b9fbd7ba9bc5b88ba0f6f41f2b7ff1d7d..de57aa00d5573e3e8769fea7b53ce1ad1387ec5f 100644 (file)
@@ -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<KToggleAction>("show_size_info");
+    showSizeInfo->setText(i18nc("@action:inmenu Additional information", "Size"));
+    showSizeInfo->setData(KFileItemDelegate::Size);
+    showSizeInfo->setActionGroup(showInformationGroup);
+
+    KToggleAction* showDateInfo = collection->add<KToggleAction>("show_date_info");
+    showDateInfo->setText(i18nc("@action:inmenu Additional information", "Date"));
+    showDateInfo->setData(KFileItemDelegate::ModificationTime);
+    showDateInfo->setActionGroup(showInformationGroup);
+
+    KToggleAction* showPermissionsInfo = collection->add<KToggleAction>("show_permissions_info");
+    showPermissionsInfo->setText(i18nc("@action:inmenu Additional information", "Permissions"));
+    showPermissionsInfo->setData(KFileItemDelegate::Permissions);
+    showPermissionsInfo->setActionGroup(showInformationGroup);
+
+    KToggleAction* showOwnerInfo = collection->add<KToggleAction>("show_owner_info");
+    showOwnerInfo->setText(i18nc("@action:inmenu Additional information", "Owner"));
+    showOwnerInfo->setData(KFileItemDelegate::Owner);
+    showOwnerInfo->setActionGroup(showInformationGroup);
+
+    KToggleAction* showGroupInfo = collection->add<KToggleAction>("show_group_info");
+    showGroupInfo->setText(i18nc("@action:inmenu Additional information", "Group"));
+    showGroupInfo->setData(KFileItemDelegate::OwnerAndGroup);
+    showGroupInfo->setActionGroup(showInformationGroup);
+
+    KToggleAction* showMimeInfo = collection->add<KToggleAction>("show_mime_info");
+    showMimeInfo->setText(i18nc("@action:inmenu Additional information", "Type"));
+    showMimeInfo->setData(KFileItemDelegate::FriendlyMimeType);
+    showMimeInfo->setActionGroup(showInformationGroup);
+
+    return showInformationGroup;
+}
+
 #include "dolphinview.moc"
index 80430ca77940f1fa64c24ef838e4de2cf9e06d51..e69f0bbc6562f9a8e2d7540c5b128524c2b90b17 100644 (file)
@@ -38,6 +38,7 @@
 #include <QListView>
 #include <QWidget>
 
+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
      */