X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/093efca22dfd247f06e2a669ad968300e71ef08d..7fd22d39bd2bd3f607ddcd927f894cd9b52e97c7:/src/dolphindetailsview.cpp diff --git a/src/dolphindetailsview.cpp b/src/dolphindetailsview.cpp index 39783c9a9..b4f42cf50 100644 --- a/src/dolphindetailsview.cpp +++ b/src/dolphindetailsview.cpp @@ -28,6 +28,10 @@ #include "dolphin_detailsmodesettings.h" +#include +#include + +#include #include #include #include @@ -52,8 +56,6 @@ DolphinDetailsView::DolphinDetailsView(QWidget* parent, DolphinController* contr setDragDropMode(QAbstractItemView::DragDrop); setDropIndicatorShown(false); setAlternatingRowColors(true); - setHorizontalScrollMode(QAbstractItemView::ScrollPerPixel); - setVerticalScrollMode(QAbstractItemView::ScrollPerPixel); setMouseTracking(true); viewport()->setAttribute(Qt::WA_Hover); @@ -62,8 +64,12 @@ DolphinDetailsView::DolphinDetailsView(QWidget* parent, DolphinController* contr setSortIndicatorSection(props.sorting()); setSortIndicatorOrder(props.sortOrder()); - connect(header(), SIGNAL(sectionClicked(int)), + QHeaderView* headerView = header(); + connect(headerView, SIGNAL(sectionClicked(int)), this, SLOT(synchronizeSortingState(int))); + headerView->setContextMenuPolicy(Qt::CustomContextMenu); + connect(headerView, SIGNAL(customContextMenuRequested(const QPoint&)), + this, SLOT(configureColumns(const QPoint&))); connect(parent, SIGNAL(sortingChanged(DolphinView::Sorting)), this, SLOT(setSortIndicatorSection(DolphinView::Sorting))); @@ -100,6 +106,7 @@ DolphinDetailsView::DolphinDetailsView(QWidget* parent, DolphinController* contr font.setItalic(settings->italicFont()); font.setBold(settings->boldFont()); m_viewOptions.font = font; + m_viewOptions.showDecorationSelected = true; updateDecorationSize(); } @@ -408,6 +415,47 @@ void DolphinDetailsView::slotItemActivated(const QModelIndex& index) } } +void DolphinDetailsView::configureColumns(const QPoint& pos) +{ + KMenu popup(this); + popup.addTitle(i18nc("@title:menu", "Columns")); + + QHeaderView* headerView = header(); + for (int i = DolphinModel::ModifiedTime; i <= DolphinModel::Type; ++i) { + const int logicalIndex = headerView->logicalIndex(i); + const QString text = model()->headerData(i, Qt::Horizontal).toString(); + QAction* action = popup.addAction(text); + action->setCheckable(true); + action->setChecked(!headerView->isSectionHidden(logicalIndex)); + action->setData(i); + } + + QAction* activatedAction = popup.exec(header()->mapToGlobal(pos)); + if (activatedAction != 0) { + const bool show = activatedAction->isChecked(); + DetailsModeSettings* settings = DolphinSettings::instance().detailsModeSettings(); + Q_ASSERT(settings != 0); + + // remember the changed column visibility in the settings + const int columnIndex = activatedAction->data().toInt(); + switch (columnIndex) { + case DolphinModel::ModifiedTime: settings->setShowDate(show); break; + case DolphinModel::Permissions: settings->setShowPermissions(show); break; + case DolphinModel::Owner: settings->setShowOwner(show); break; + case DolphinModel::Group: settings->setShowGroup(show); break; + case DolphinModel::Type: settings->setShowType(show); break; + default: break; + } + + // apply the changed column visibility + if (show) { + showColumn(columnIndex); + } else { + hideColumn(columnIndex); + } + } +} + bool DolphinDetailsView::isZoomInPossible() const { DetailsModeSettings* settings = DolphinSettings::instance().detailsModeSettings();