┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/dolphinviewactionhandler.cpp
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2010-05-13 22:06:10 +0000
committerPeter Penz <[email protected]>2010-05-13 22:06:10 +0000
commitcb9669d71cf10e73305c6a60fe0d832f4eb0ac7a (patch)
treea1dbc83e15fa3dc9c36a41e03f1b999cc04a5e02 /src/dolphinviewactionhandler.cpp
parentd64bbc333c5014fad116efc98b77cf3268fc07e0 (diff)
If an information entry will be added to KFileItemDelegate (like done recently), adjusting the corresponding code in Dolphin is a real pain, as the new information will be shown in Dolphin the following way:
- As additional columns in the details view - As additional lines in the icons view - As menu entries in the "Sort By" and "Additional Information" groups - As popup menu entries in the details view header popup - As checkable entries in the View Properties dialog To prevent similar painful transitions in future, the class AdditionalInfoManager has been introduced. All parts in Dolphin that access/show/store additional information, use the AdditionalInfoManager now. If a new information entry will be added in KFileItemDelegate in future, only a small adjustment in AdditionalInfoManager will be required. Still open currently: - AdditionalInfoDialog does not use AdditionalInfoManager yet - DolphinView::Sorting should be replaced by KFileItemDelegate::Information, so that the sorting can also be done in a generic way. - The data for KFileItemDelegate::PathOrUrl is not determined The open issues will get fixed during the next days. Kudos to the brave warriors Sebastian and Frank, that tried to add a new information ;-) CCMAIL: [email protected] CCMAIL: [email protected] svn path=/trunk/KDE/kdebase/apps/; revision=1126410
Diffstat (limited to 'src/dolphinviewactionhandler.cpp')
-rw-r--r--src/dolphinviewactionhandler.cpp87
1 files changed, 23 insertions, 64 deletions
diff --git a/src/dolphinviewactionhandler.cpp b/src/dolphinviewactionhandler.cpp
index ab28dca26..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"
@@ -27,9 +28,10 @@
#include <kaction.h>
#include <kactioncollection.h>
#include <kactionmenu.h>
-#include <kselectaction.h>
+#include <kfileitemdelegate.h>
#include <klocale.h>
#include <knewmenu.h>
+#include <kselectaction.h>
#include <ktoggleaction.h>
#include <krun.h>
#include <kpropertiesdialog.h>
@@ -219,40 +221,16 @@ QActionGroup* DolphinViewActionHandler::createAdditionalInformationActionGroup()
showInformationMenu->setText(i18nc("@action:inmenu View", "Additional Information"));
showInformationMenu->setDelayed(false);
- KToggleAction* showSizeInfo = m_actionCollection->add<KToggleAction>("show_size_info");
- showSizeInfo->setText(i18nc("@action:inmenu Additional information", "Size"));
- showSizeInfo->setData(KFileItemDelegate::Size);
- showSizeInfo->setActionGroup(additionalInfoGroup);
-
- KToggleAction* showDateInfo = m_actionCollection->add<KToggleAction>("show_date_info");
- showDateInfo->setText(i18nc("@action:inmenu Additional information", "Date"));
- showDateInfo->setData(KFileItemDelegate::ModificationTime);
- showDateInfo->setActionGroup(additionalInfoGroup);
-
- KToggleAction* showPermissionsInfo = m_actionCollection->add<KToggleAction>("show_permissions_info");
- showPermissionsInfo->setText(i18nc("@action:inmenu Additional information", "Permissions"));
- showPermissionsInfo->setData(KFileItemDelegate::Permissions);
- showPermissionsInfo->setActionGroup(additionalInfoGroup);
-
- KToggleAction* showOwnerInfo = m_actionCollection->add<KToggleAction>("show_owner_info");
- showOwnerInfo->setText(i18nc("@action:inmenu Additional information", "Owner"));
- showOwnerInfo->setData(KFileItemDelegate::Owner);
- showOwnerInfo->setActionGroup(additionalInfoGroup);
-
- KToggleAction* showGroupInfo = m_actionCollection->add<KToggleAction>("show_group_info");
- showGroupInfo->setText(i18nc("@action:inmenu Additional information", "Group"));
- showGroupInfo->setData(KFileItemDelegate::OwnerAndGroup);
- showGroupInfo->setActionGroup(additionalInfoGroup);
-
- KToggleAction* showMimeInfo = m_actionCollection->add<KToggleAction>("show_mime_info");
- showMimeInfo->setText(i18nc("@action:inmenu Additional information", "Type"));
- showMimeInfo->setData(KFileItemDelegate::FriendlyMimeType);
- showMimeInfo->setActionGroup(additionalInfoGroup);
+ const AdditionalInfoManager& infoManager = AdditionalInfoManager::instance();
- KToggleAction* showPathOrUrlInfo = m_actionCollection->add<KToggleAction>("show_path_or_url_info");
- showPathOrUrlInfo->setText(i18nc("@action:inmenu Additional information", "Path"));
- showPathOrUrlInfo->setData(KFileItemDelegate::LocalPathOrUrl);
- showPathOrUrlInfo->setActionGroup(additionalInfoGroup);
+ const KFileItemDelegate::InformationList infos = infoManager.keys();
+ foreach (KFileItemDelegate::Information info, infos) {
+ const QString name = infoManager.actionCollectionName(info);
+ KToggleAction* action = m_actionCollection->add<KToggleAction>(name);
+ action->setText(infoManager.translation(info));
+ action->setData(info);
+ action->setActionGroup(additionalInfoGroup);
+ }
return additionalInfoGroup;
}
@@ -264,40 +242,21 @@ QActionGroup* DolphinViewActionHandler::createSortByActionGroup()
QActionGroup* sortByActionGroup = new QActionGroup(m_actionCollection);
sortByActionGroup->setExclusive(true);
- KToggleAction* sortByName = m_actionCollection->add<KToggleAction>("sort_by_name");
+ KToggleAction* sortByName = m_actionCollection->add<KToggleAction>("name");
sortByName->setText(i18nc("@action:inmenu Sort By", "Name"));
sortByName->setData(QVariant::fromValue(DolphinView::SortByName));
sortByActionGroup->addAction(sortByName);
- KToggleAction* sortBySize = m_actionCollection->add<KToggleAction>("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<KToggleAction>("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<KToggleAction>("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<KToggleAction>("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<KToggleAction>("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<KToggleAction>("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<KToggleAction>(name);
+ action->setText(infoManager.translation(info));
+ // TODO: replace DolphinView::Sorting by KFileItemDelegate::Information!
+ action->setData(QVariant::fromValue(DolphinView::SortByName));
+ sortByActionGroup->addAction(action);
+ }
return sortByActionGroup;
}