return info;
}
-QString AdditionalInfoAccessor::actionCollectionName(KFileItemDelegate::Information info) const
+QString AdditionalInfoAccessor::actionCollectionName(KFileItemDelegate::Information info,
+ ActionCollectionType type) const
{
- return QLatin1String(m_map[info]->actionCollectionName);
+ QString name;
+ switch (type) {
+ case SortByType:
+ name = QLatin1String("sort_by_") + QLatin1String(m_map[info]->actionCollectionName);
+ break;
+
+ case AdditionalInfoType:
+ name = QLatin1String("show_") + QLatin1String(m_map[info]->actionCollectionName);
+ break;
+ }
+
+ return name;
}
QString AdditionalInfoAccessor::translation(KFileItemDelegate::Information info) const
return i18n(m_map[info]->translation);
}
+DolphinView::Sorting AdditionalInfoAccessor::sorting(KFileItemDelegate::Information info) const
+{
+ return m_map[info]->sorting;
+}
+
int AdditionalInfoAccessor::bitValue(KFileItemDelegate::Information info) const
{
return m_map[info]->bitValue;
m_map()
{
static const AdditionalInfoAccessor::AdditionalInfo additionalInfos[] = {
- { "size", I18N_NOOP2("@label", "Size"), 1 },
- { "date", I18N_NOOP2("@label", "Date"), 2 },
- { "permissions", I18N_NOOP2("@label", "Permissions"), 4 },
- { "owner", I18N_NOOP2("@label", "Owner"), 8 },
- { "group", I18N_NOOP2("@label", "Group"), 16 },
- { "type", I18N_NOOP2("@label", "Type"), 32 },
- { "destination", I18N_NOOP2("@label", "Destination"), 64 },
- { "path", I18N_NOOP2("@label", "Path"), 128 }
+ { "size", I18N_NOOP2("@label", "Size"), DolphinView::SortBySize, 1 },
+ { "date", I18N_NOOP2("@label", "Date"), DolphinView::SortByDate, 2 },
+ { "permissions", I18N_NOOP2("@label", "Permissions"), DolphinView::SortByPermissions, 4 },
+ { "owner", I18N_NOOP2("@label", "Owner"), DolphinView::SortByOwner, 8 },
+ { "group", I18N_NOOP2("@label", "Group"), DolphinView::SortByGroup, 16 },
+ { "type", I18N_NOOP2("@label", "Type"), DolphinView::SortByType, 32 },
+ { "destination", I18N_NOOP2("@label", "Destination"), DolphinView::SortByDestination, 64 },
+ { "path", I18N_NOOP2("@label", "Path"), DolphinView::SortByPath, 128 }
};
m_map.insert(KFileItemDelegate::Size, &additionalInfos[0]);
m_map.insert(KFileItemDelegate::LinkDest, &additionalInfos[6]);
m_map.insert(KFileItemDelegate::LocalPathOrUrl, &additionalInfos[7]);
- m_informations = m_map.keys();
+ // The m_informations list defines all available keys and the sort order
+ // (don't use m_informations = m_map.keys(), as the order is undefined).
+ m_informations.append(KFileItemDelegate::Size);
+ m_informations.append(KFileItemDelegate::ModificationTime);
+ m_informations.append(KFileItemDelegate::Permissions);
+ m_informations.append(KFileItemDelegate::Owner);
+ m_informations.append(KFileItemDelegate::OwnerAndGroup);
+ m_informations.append(KFileItemDelegate::FriendlyMimeType);
+ m_informations.append(KFileItemDelegate::LinkDest);
+ m_informations.append(KFileItemDelegate::LocalPathOrUrl);
}
AdditionalInfoAccessor::~AdditionalInfoAccessor()
#ifndef ADDITIONALINFOACCESSOR_H
#define ADDITIONALINFOACCESSOR_H
+#include <dolphinview.h>
#include <libdolphin_export.h>
#include <kfileitemdelegate.h>
class LIBDOLPHINPRIVATE_EXPORT AdditionalInfoAccessor
{
public:
+ enum ActionCollectionType {
+ /// Action collection from "View -> Sort By"
+ SortByType,
+ /// Action collection from "View -> Additional Information"
+ AdditionalInfoType
+ };
+
static AdditionalInfoAccessor& instance();
/**
*/
KFileItemDelegate::Information keyForColumn(int columnIndex) const;
- QString actionCollectionName(KFileItemDelegate::Information info) const;
+ QString actionCollectionName(KFileItemDelegate::Information info, ActionCollectionType type) const;
QString translation(KFileItemDelegate::Information info) const;
+ DolphinView::Sorting sorting(KFileItemDelegate::Information info) const;
+
/**
* @return Bitvalue for \p info that is stored in a ViewProperties instance.
*/
struct AdditionalInfo {
const char* const actionCollectionName;
const char* const translation;
+ const DolphinView::Sorting sorting;
const int bitValue;
};
(m_mode == DolphinView::IconsView);
foreach (const KFileItemDelegate::Information& info, infos) {
- QAction* action = collection->action(infoAccessor.actionCollectionName(info));
+ const QString name = infoAccessor.actionCollectionName(info, AdditionalInfoAccessor::AdditionalInfoType);
+ QAction* action = collection->action(name);
Q_ASSERT(action != 0);
action->setEnabled(enable);
action->setChecked(checkedInfos.contains(info));
SortByOwner,
SortByGroup,
SortByType,
- MaxSortEnum = SortByType
+ SortByDestination,
+ SortByPath,
+ MaxSortingEnum = SortByPath
};
/**
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->setShortcut(Qt::CTRL | Qt::Key_F);
const KFileItemDelegate::InformationList infos = infoAccessor.keys();
foreach (KFileItemDelegate::Information info, infos) {
- const QString name = infoAccessor.actionCollectionName(info);
+ const QString name = infoAccessor.actionCollectionName(info, AdditionalInfoAccessor::AdditionalInfoType);
KToggleAction* action = m_actionCollection->add<KToggleAction>(name);
action->setText(infoAccessor.translation(info));
action->setData(info);
QActionGroup* sortByActionGroup = new QActionGroup(m_actionCollection);
sortByActionGroup->setExclusive(true);
- KToggleAction* sortByName = m_actionCollection->add<KToggleAction>("name");
+ KToggleAction* sortByName = m_actionCollection->add<KToggleAction>("sort_by_name");
sortByName->setText(i18nc("@action:inmenu Sort By", "Name"));
sortByName->setData(QVariant::fromValue(DolphinView::SortByName));
sortByActionGroup->addAction(sortByName);
const AdditionalInfoAccessor& infoAccessor = AdditionalInfoAccessor::instance();
const KFileItemDelegate::InformationList infos = infoAccessor.keys();
foreach (KFileItemDelegate::Information info, infos) {
- const QString name = infoAccessor.actionCollectionName(info);
+ const QString name = infoAccessor.actionCollectionName(info, AdditionalInfoAccessor::SortByType);
KToggleAction* action = m_actionCollection->add<KToggleAction>(name);
action->setText(infoAccessor.translation(info));
- // TODO: replace DolphinView::Sorting by KFileItemDelegate::Information!
- action->setData(QVariant::fromValue(DolphinView::SortByName));
+ const DolphinView::Sorting sorting = infoAccessor.sorting(info);
+ action->setData(QVariant::fromValue(sorting));
sortByActionGroup->addAction(action);
}
// Note: kde3's konq_mainwindow.cpp used to check
// reason == KAction::PopupMenuActivation && ...
// but this isn't supported anymore
- if (modifiers & Qt::ShiftModifier)
+ if (modifiers & Qt::ShiftModifier) {
m_currentView->deleteSelectedItems();
- else
+ } else {
m_currentView->trashSelectedItems();
+ }
}
void DolphinViewActionHandler::slotDeleteItems()
void DolphinViewActionHandler::slotSortingChanged(DolphinView::Sorting sorting)
{
+ const AdditionalInfoAccessor& infoAccessor = AdditionalInfoAccessor::instance();
+ const KFileItemDelegate::InformationList infos = infoAccessor.keys();
+
QAction* action = 0;
- switch (sorting) {
- case DolphinView::SortByName:
+ if (sorting == DolphinView::SortByName) {
action = m_actionCollection->action("sort_by_name");
- break;
- case DolphinView::SortBySize:
- action = m_actionCollection->action("sort_by_size");
- break;
- case DolphinView::SortByDate:
- action = m_actionCollection->action("sort_by_date");
- break;
- case DolphinView::SortByPermissions:
- action = m_actionCollection->action("sort_by_permissions");
- break;
- case DolphinView::SortByOwner:
- action = m_actionCollection->action("sort_by_owner");
- break;
- case DolphinView::SortByGroup:
- action = m_actionCollection->action("sort_by_group");
- break;
- case DolphinView::SortByType:
- action = m_actionCollection->action("sort_by_type");
- break;
- default:
- break;
+ } else {
+ foreach (const KFileItemDelegate::Information info, infos) {
+ if (sorting == infoAccessor.sorting(info)) {
+ const QString name = infoAccessor.actionCollectionName(info, AdditionalInfoAccessor::SortByType);
+ action = m_actionCollection->action(name);
+ break;
+ }
+ }
}
if (action != 0) {
<whatsthis context="@info:whatsthis">This option defines which attribute (name, size, date, etc.) sorting is performed on.</whatsthis>
<default code="true">DolphinView::SortByName</default>
<min>0</min>
- <max code="true">DolphinView::MaxSortEnum</max>
+ <max code="true">DolphinView::MaxSortingEnum</max>
</entry>
<entry name="SortOrder" type="Int" >