+ m_controller->indicateDroppedUrls(urls,
+ indexAt(event->pos()),
+ event->source());
+ }
+ QTreeView::dropEvent(event);
+ m_dragging = false;
+}
+
+void DolphinDetailsView::paintEvent(QPaintEvent* event)
+{
+ QTreeView::paintEvent(event);
+ if (m_showElasticBand) {
+ // The following code has been taken from QListView
+ // and adapted to DolphinDetailsView.
+ // (C) 1992-2007 Trolltech ASA
+ QStyleOptionRubberBand opt;
+ opt.initFrom(this);
+ opt.shape = QRubberBand::Rectangle;
+ opt.opaque = false;
+ opt.rect = elasticBandRect();
+
+ QPainter painter(viewport());
+ painter.save();
+ style()->drawControl(QStyle::CE_RubberBand, &opt, &painter);
+ painter.restore();
+ }
+
+ // TODO: remove this code when the issue #160611 is solved in Qt 4.4
+ if (m_dragging) {
+ const QBrush& brush = m_viewOptions.palette.brush(QPalette::Normal, QPalette::Highlight);
+ DolphinController::drawHoverIndication(viewport(), m_dropRect, brush);
+ }
+}
+
+void DolphinDetailsView::setSortIndicatorSection(DolphinView::Sorting sorting)
+{
+ QHeaderView* headerView = header();
+ headerView->setSortIndicator(sorting, headerView->sortIndicatorOrder());
+}
+
+void DolphinDetailsView::setSortIndicatorOrder(Qt::SortOrder sortOrder)
+{
+ QHeaderView* headerView = header();
+ headerView->setSortIndicator(headerView->sortIndicatorSection(), sortOrder);
+}
+
+void DolphinDetailsView::synchronizeSortingState(int column)
+{
+ // The sorting has already been changed in QTreeView if this slot is
+ // invoked, but Dolphin is not informed about this.
+ DolphinView::Sorting sorting = DolphinSortFilterProxyModel::sortingForColumn(column);
+ const Qt::SortOrder sortOrder = header()->sortIndicatorOrder();
+ m_controller->indicateSortingChange(sorting);
+ m_controller->indicateSortOrderChange(sortOrder);
+}
+
+void DolphinDetailsView::slotEntered(const QModelIndex& index)
+{
+ const QPoint pos = viewport()->mapFromGlobal(QCursor::pos());
+ const int nameColumnWidth = header()->sectionSize(KDirModel::Name);
+ if (pos.x() < nameColumnWidth) {
+ m_controller->emitItemEntered(index);
+ }
+ else {
+ m_controller->emitViewportEntered();
+ }
+}
+
+void DolphinDetailsView::updateElasticBand()
+{
+ Q_ASSERT(m_showElasticBand);
+ QRect dirtyRegion(elasticBandRect());
+ m_elasticBandDestination = viewport()->mapFromGlobal(QCursor::pos());
+ dirtyRegion = dirtyRegion.united(elasticBandRect());
+ setDirtyRegion(dirtyRegion);
+}
+
+void DolphinDetailsView::zoomIn()
+{
+ if (isZoomInPossible()) {
+ DetailsModeSettings* settings = DolphinSettings::instance().detailsModeSettings();
+ // TODO: get rid of K3Icon sizes
+ switch (settings->iconSize()) {
+ case K3Icon::SizeSmall: settings->setIconSize(K3Icon::SizeMedium); break;
+ case K3Icon::SizeMedium: settings->setIconSize(K3Icon::SizeLarge); break;
+ default: Q_ASSERT(false); break;
+ }
+ updateDecorationSize();
+ }
+}
+
+void DolphinDetailsView::zoomOut()
+{
+ if (isZoomOutPossible()) {
+ DetailsModeSettings* settings = DolphinSettings::instance().detailsModeSettings();
+ // TODO: get rid of K3Icon sizes
+ switch (settings->iconSize()) {
+ case K3Icon::SizeLarge: settings->setIconSize(K3Icon::SizeMedium); break;
+ case K3Icon::SizeMedium: settings->setIconSize(K3Icon::SizeSmall); break;
+ default: Q_ASSERT(false); break;
+ }
+ updateDecorationSize();
+ }
+}