#include <KToggleAction>
#include <KUrl>
-#include "additionalinfoaccessor.h"
+#include "rolesaccessor.h"
#include "dolphindirlister.h"
#include "dolphinnewfilemenuobserver.h"
#include "dolphin_detailsmodesettings.h"
namespace {
const int MaxModeEnum = DolphinView::CompactView;
- const int MaxSortingEnum = DolphinView::SortByPath;
};
DolphinView::DolphinView(const KUrl& url, QWidget* parent) :
m_dragging(false),
m_url(url),
m_mode(DolphinView::IconsView),
- m_additionalInfoList(),
+ m_visibleRoles(),
m_topLayout(0),
m_dirLister(0),
m_container(0),
return m_container->zoomLevel();
}
-void DolphinView::setSorting(Sorting sorting)
+void DolphinView::setSortRole(const QByteArray& role)
{
- if (sorting != this->sorting()) {
- updateSorting(sorting);
+ if (role != sortRole()) {
+ updateSortRole(role);
}
}
-DolphinView::Sorting DolphinView::sorting() const
+QByteArray DolphinView::sortRole() const
{
- KItemModelBase* model = m_container->controller()->model();
- return sortingForSortRole(model->sortRole());
+ const KItemModelBase* model = m_container->controller()->model();
+ return model->sortRole();
}
void DolphinView::setSortOrder(Qt::SortOrder order)
return model->sortFoldersFirst();
}
-void DolphinView::setAdditionalInfoList(const QList<AdditionalInfo>& info)
+void DolphinView::setVisibleRoles(const QList<QByteArray>& roles)
{
- const QList<AdditionalInfo> previousList = info;
+ const QList<QByteArray> previousRoles = roles;
ViewProperties props(url());
- props.setAdditionalInfoList(info);
+ props.setVisibleRoles(roles);
- m_additionalInfoList = info;
- applyAdditionalInfoListToView();
+ m_visibleRoles = roles;
+ m_container->setVisibleRoles(roles);
- emit additionalInfoListChanged(m_additionalInfoList, previousList);
+ emit visibleRolesChanged(m_visibleRoles, previousRoles);
}
-QList<DolphinView::AdditionalInfo> DolphinView::additionalInfoList() const
+QList<QByteArray> DolphinView::visibleRoles() const
{
- return m_additionalInfoList;
+ return m_visibleRoles;
}
void DolphinView::reload()
const QSet<QByteArray> visibleRolesSet = view->visibleRoles().toSet();
// Add all roles to the menu that can be shown or hidden by the user
- const AdditionalInfoAccessor& infoAccessor = AdditionalInfoAccessor::instance();
- const QList<DolphinView::AdditionalInfo> keys = infoAccessor.keys();
- foreach (const DolphinView::AdditionalInfo info, keys) {
- const QByteArray& role = infoAccessor.role(info);
+ const RolesAccessor& rolesAccessor = RolesAccessor::instance();
+ const QList<QByteArray> roles = rolesAccessor.roles();
+ foreach (const QByteArray& role, roles) {
if (role != "name") {
const QString text = fileItemModel()->roleDescription(role);
QAction* action = menu.data()->addAction(text);
action->setCheckable(true);
action->setChecked(visibleRolesSet.contains(role));
- action->setData(info);
+ action->setData(role);
}
}
QAction* action = menu.data()->exec(pos.toPoint());
if (action) {
// Show or hide the selected role
- const DolphinView::AdditionalInfo info =
- static_cast<DolphinView::AdditionalInfo>(action->data().toInt());
+ const QByteArray selectedRole = action->data().toByteArray();
ViewProperties props(url());
- QList<DolphinView::AdditionalInfo> infoList = props.additionalInfoList();
-
- const QByteArray selectedRole = infoAccessor.role(info);
QList<QByteArray> visibleRoles = view->visibleRoles();
-
if (action->isChecked()) {
- const int index = keys.indexOf(info) + 1;
+ const int index = roles.indexOf(selectedRole) + 1;
visibleRoles.insert(index, selectedRole);
- infoList.insert(index, info);
} else {
visibleRoles.removeOne(selectedRole);
- infoList.removeOne(info);
}
view->setVisibleRoles(visibleRoles);
- props.setAdditionalInfoList(infoList);
+ props.setVisibleRoles(visibleRoles);
}
delete menu.data();
emit selectionChanged(selectedItems());
}
-void DolphinView::updateSorting(DolphinView::Sorting sorting)
+void DolphinView::updateSortRole(const QByteArray& role)
{
ViewProperties props(url());
- props.setSorting(sorting);
+ props.setSortRole(role);
KItemModelBase* model = m_container->controller()->model();
- model->setSortRole(sortRoleForSorting(sorting));
+ model->setSortRole(role);
- emit sortingChanged(sorting);
+ emit sortRoleChanged(role);
}
void DolphinView::updateSortOrder(Qt::SortOrder order)
Q_ASSERT(fileItemModel()->sortRole() == current);
ViewProperties props(url());
- const Sorting sorting = sortingForSortRole(current);
- props.setSorting(sorting);
+ props.setSortRole(current);
- emit sortingChanged(sorting);
+ emit sortRoleChanged(current);
}
void DolphinView::slotVisibleRolesChangedByHeader(const QList<QByteArray>& current,
Q_UNUSED(previous);
Q_ASSERT(m_container->controller()->view()->visibleRoles() == current);
- const QList<AdditionalInfo> previousAdditionalInfoList = m_additionalInfoList;
+ const QList<QByteArray> previousVisibleRoles = m_visibleRoles;
- m_additionalInfoList.clear();
- m_additionalInfoList.reserve(current.count());
- const AdditionalInfoAccessor& infoAccessor = AdditionalInfoAccessor::instance();
- foreach (const QByteArray& role, current) {
- if (role != "name") {
- m_additionalInfoList.append(infoAccessor.additionalInfo(role));
- }
- }
+ m_visibleRoles = current;
ViewProperties props(url());
- props.setAdditionalInfoList(m_additionalInfoList);
+ props.setVisibleRoles(m_visibleRoles);
- emit additionalInfoListChanged(m_additionalInfoList, previousAdditionalInfoList);
+ emit visibleRolesChanged(m_visibleRoles, previousVisibleRoles);
}
KFileItemModel* DolphinView::fileItemModel() const
emit groupedSortingChanged(groupedSorting);
}
- const DolphinView::Sorting sorting = props.sorting();
- const QByteArray newSortRole = sortRoleForSorting(sorting);
- if (newSortRole != model->sortRole()) {
- model->setSortRole(newSortRole);
- emit sortingChanged(sorting);
+ const QByteArray sortRole = props.sortRole();
+ if (sortRole != model->sortRole()) {
+ model->setSortRole(sortRole);
+ emit sortRoleChanged(sortRole);
}
const Qt::SortOrder sortOrder = props.sortOrder();
emit sortFoldersFirstChanged(sortFoldersFirst);
}
- const QList<DolphinView::AdditionalInfo> infoList = props.additionalInfoList();
- if (infoList != m_additionalInfoList) {
- const QList<DolphinView::AdditionalInfo> previousList = m_additionalInfoList;
- m_additionalInfoList = infoList;
- applyAdditionalInfoListToView();
- emit additionalInfoListChanged(m_additionalInfoList, previousList);
+ const QList<QByteArray> visibleRoles = props.visibleRoles();
+ if (visibleRoles != m_visibleRoles) {
+ const QList<QByteArray> previousVisibleRoles = m_visibleRoles;
+ m_visibleRoles = visibleRoles;
+ m_container->setVisibleRoles(visibleRoles);
+ emit visibleRolesChanged(m_visibleRoles, previousVisibleRoles);
}
const bool previewsShown = props.previewsShown();
m_container->endTransaction();
}
-void DolphinView::applyAdditionalInfoListToView()
-{
- const AdditionalInfoAccessor& infoAccessor = AdditionalInfoAccessor::instance();
-
- QList<QByteArray> visibleRoles;
- visibleRoles.reserve(m_additionalInfoList.count() + 1);
- visibleRoles.append("name");
-
- foreach (AdditionalInfo info, m_additionalInfoList) {
- visibleRoles.append(infoAccessor.role(info));
- }
-
- m_container->setVisibleRoles(visibleRoles);
-}
-
void DolphinView::pasteToUrl(const KUrl& url)
{
markPastedUrlsAsSelected(QApplication::clipboard()->mimeData());
}
}
-QByteArray DolphinView::sortRoleForSorting(Sorting sorting) const
-{
- switch (sorting) {
- case SortByName: return "name";
- case SortBySize: return "size";
- case SortByDate: return "date";
- case SortByPermissions: return "permissions";
- case SortByOwner: return "owner";
- case SortByGroup: return "group";
- case SortByType: return "type";
- case SortByDestination: return "destination";
- case SortByPath: return "path";
- default: break;
- }
-
- return QByteArray();
-}
-
-DolphinView::Sorting DolphinView::sortingForSortRole(const QByteArray& sortRole) const
-{
- static QHash<QByteArray, DolphinView::Sorting> sortHash;
- if (sortHash.isEmpty()) {
- sortHash.insert("name", SortByName);
- sortHash.insert("size", SortBySize);
- sortHash.insert("date", SortByDate);
- sortHash.insert("permissions", SortByPermissions);
- sortHash.insert("owner", SortByOwner);
- sortHash.insert("group", SortByGroup);
- sortHash.insert("type", SortByType);
- sortHash.insert("destination", SortByDestination);
- sortHash.insert("path", SortByPath);
- }
- return sortHash.value(sortRole);
-}
-
QString DolphinView::fileSizeText(KIO::filesize_t fileSize)
{
const KLocale* locale = KGlobal::locale();