┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/dolphinview.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/dolphinview.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/dolphinview.cpp')
-rw-r--r--src/dolphinview.cpp61
1 files changed, 11 insertions, 50 deletions
diff --git a/src/dolphinview.cpp b/src/dolphinview.cpp
index 5ad77f726..3cfeccfde 100644
--- a/src/dolphinview.cpp
+++ b/src/dolphinview.cpp
@@ -49,6 +49,7 @@
#include <ktoggleaction.h>
#include <kurl.h>
+#include "additionalinfomanager.h"
#include "dolphinmodel.h"
#include "dolphincolumnviewcontainer.h"
#include "dolphinviewcontroller.h"
@@ -971,59 +972,19 @@ void DolphinView::updateAdditionalInfo(const KFileItemDelegate::InformationList&
void DolphinView::updateAdditionalInfoActions(KActionCollection* collection)
{
- const bool enable = (m_mode == DolphinView::DetailsView) ||
- (m_mode == DolphinView::IconsView);
-
- QAction* showSizeInfo = collection->action("show_size_info");
- QAction* showDateInfo = collection->action("show_date_info");
- QAction* showPermissionsInfo = collection->action("show_permissions_info");
- QAction* showOwnerInfo = collection->action("show_owner_info");
- QAction* showGroupInfo = collection->action("show_group_info");
- QAction* showMimeInfo = collection->action("show_mime_info");
- QAction* showPathOrUrlInfo = collection->action("show_path_or_url_info");
+ const AdditionalInfoManager& infoManager = AdditionalInfoManager::instance();
- showSizeInfo->setChecked(false);
- showDateInfo->setChecked(false);
- showPermissionsInfo->setChecked(false);
- showOwnerInfo->setChecked(false);
- showGroupInfo->setChecked(false);
- showMimeInfo->setChecked(false);
- showPathOrUrlInfo->setChecked(false);
+ const KFileItemDelegate::InformationList checkedInfos = m_viewAccessor.itemDelegate()->showInformation();
+ const KFileItemDelegate::InformationList infos = infoManager.keys();
- showSizeInfo->setEnabled(enable);
- showDateInfo->setEnabled(enable);
- showPermissionsInfo->setEnabled(enable);
- showOwnerInfo->setEnabled(enable);
- showGroupInfo->setEnabled(enable);
- showMimeInfo->setEnabled(enable);
- showPathOrUrlInfo->setEnabled(enable);
+ const bool enable = (m_mode == DolphinView::DetailsView) ||
+ (m_mode == DolphinView::IconsView);
- foreach (KFileItemDelegate::Information info, m_viewAccessor.itemDelegate()->showInformation()) {
- switch (info) {
- case KFileItemDelegate::Size:
- showSizeInfo->setChecked(true);
- break;
- case KFileItemDelegate::ModificationTime:
- showDateInfo->setChecked(true);
- break;
- case KFileItemDelegate::Permissions:
- showPermissionsInfo->setChecked(true);
- break;
- case KFileItemDelegate::Owner:
- showOwnerInfo->setChecked(true);
- break;
- case KFileItemDelegate::OwnerAndGroup:
- showGroupInfo->setChecked(true);
- break;
- case KFileItemDelegate::FriendlyMimeType:
- showMimeInfo->setChecked(true);
- break;
- case KFileItemDelegate::LocalPathOrUrl:
- showPathOrUrlInfo->setChecked(true);
- break;
- default:
- break;
- }
+ foreach (const KFileItemDelegate::Information& info, infos) {
+ QAction* action = collection->action(infoManager.actionCollectionName(info));
+ Q_ASSERT(action != 0);
+ action->setEnabled(enable);
+ action->setChecked(checkedInfos.contains(info));
}
}