+void DolphinDetailsView::triggerItem(const QModelIndex& index)
+{
+ const KFileItem item = itemForIndex(index);
+ if (index.isValid() && (index.column() == KDirModel::Name)) {
+ m_controller->triggerItem(item);
+ } else {
+ clearSelection();
+ m_controller->emitItemEntered(item);
+ }
+}
+
+void DolphinDetailsView::configureColumns(const QPoint& pos)
+{
+ KMenu popup(this);
+ popup.addTitle(i18nc("@title:menu", "Columns"));
+
+ QHeaderView* headerView = header();
+ for (int i = DolphinModel::Size; 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();
+ const int columnIndex = activatedAction->data().toInt();
+
+ KFileItemDelegate::InformationList list = m_controller->dolphinView()->additionalInfo();
+ const KFileItemDelegate::Information info = infoForColumn(columnIndex);
+ if (show) {
+ Q_ASSERT(!list.contains(info));
+ list.append(info);
+ } else {
+ Q_ASSERT(list.contains(info));
+ const int index = list.indexOf(info);
+ list.removeAt(index);
+ }
+
+ m_controller->indicateAdditionalInfoChange(list);
+ setColumnHidden(columnIndex, !show);
+ }
+}
+
+void DolphinDetailsView::updateColumnVisibility()
+{
+ const KFileItemDelegate::InformationList list = m_controller->dolphinView()->additionalInfo();
+ for (int i = DolphinModel::Size; i <= DolphinModel::Type; ++i) {
+ const KFileItemDelegate::Information info = infoForColumn(i);
+ const bool hide = !list.contains(info);
+ if (isColumnHidden(i) != hide) {
+ setColumnHidden(i, hide);
+ }
+ }
+
+ resizeColumns();
+}
+
+void DolphinDetailsView::slotHeaderSectionResized(int logicalIndex, int oldSize, int newSize)
+{
+ Q_UNUSED(logicalIndex);
+ Q_UNUSED(oldSize);
+ Q_UNUSED(newSize);
+ if (QApplication::mouseButtons() & Qt::LeftButton) {
+ disableAutoResizing();
+ }
+}
+
+void DolphinDetailsView::disableAutoResizing()
+{
+ m_autoResize = false;
+}
+
+void DolphinDetailsView::requestActivation()
+{
+ m_controller->requestActivation();
+}
+