DolphinDetailsView::DolphinDetailsView(QWidget* parent, DolphinController* controller) :
QTreeView(parent),
m_controller(controller),
+ m_dragging(false),
m_showElasticBand(false),
m_elasticBandOrigin(),
m_elasticBandDestination()
updateElasticBand();
m_showElasticBand = false;
}
+ m_dragging = true;
+}
+
+void DolphinDetailsView::dragMoveEvent(QDragMoveEvent* event)
+{
+ QTreeView::dragMoveEvent(event);
+
+ // TODO: remove this code when the issue #160611 is solved in Qt 4.4
+ const QPoint pos(0, event->pos().y());
+ const QModelIndex index = indexAt(pos);
+ setDirtyRegion(m_dropRect);
+ m_dropRect = visualRect(index);
+ setDirtyRegion(m_dropRect);
}
void DolphinDetailsView::dropEvent(QDropEvent* event)
event->source());
}
QTreeView::dropEvent(event);
+ m_dragging = false;
}
void DolphinDetailsView::paintEvent(QPaintEvent* event)
style()->drawControl(QStyle::CE_RubberBand, &opt, &painter);
painter.restore();
}
+
+ if (m_dragging) {
+ // TODO: remove this code when the issue #160611 is solved in Qt 4.4
+ QPainter painter(viewport());
+ painter.save();
+ QBrush brush(m_viewOptions.palette.brush(QPalette::Normal, QPalette::Highlight));
+ QColor color = brush.color();
+ color.setAlpha(64);
+ brush.setColor(color);
+ painter.fillRect(m_dropRect, brush);
+ painter.restore();
+ }
}
void DolphinDetailsView::setSortIndicatorSection(DolphinView::Sorting sorting)
virtual void mouseMoveEvent(QMouseEvent* event);
virtual void mouseReleaseEvent(QMouseEvent* event);
virtual void dragEnterEvent(QDragEnterEvent* event);
+ virtual void dragMoveEvent(QDragMoveEvent* event);
virtual void dropEvent(QDropEvent* event);
virtual void paintEvent(QPaintEvent* event);
DolphinController* m_controller;
QStyleOptionViewItem m_viewOptions;
+ bool m_dragging; // TODO: remove this property when the issue #160611 is solved in Qt 4.4
+ QRect m_dropRect; // TODO: remove this property when the issue #160611 is solved in Qt 4.4
+
bool m_showElasticBand;
QPoint m_elasticBandOrigin;
QPoint m_elasticBandDestination;
#include <QAbstractProxyModel>
#include <QApplication>
+#include <QPainter>
#include <QPoint>
DolphinIconsView::DolphinIconsView(QWidget* parent, DolphinController* controller) :
KListView(parent),
- m_controller(controller)
+ m_controller(controller),
+ m_dragging(false)
{
Q_ASSERT(controller != 0);
setViewMode(QListView::IconMode);
if (event->mimeData()->hasUrls()) {
event->acceptProposedAction();
}
+ m_dragging = true;
+}
+
+void DolphinIconsView::dragMoveEvent(QDragMoveEvent* event)
+{
+ KListView::dragMoveEvent(event);
+
+ // TODO: remove this code when the issue #160611 is solved in Qt 4.4
+ const QModelIndex index = indexAt(event->pos());
+ setDirtyRegion(m_dropRect);
+ m_dropRect = visualRect(index);
+ setDirtyRegion(m_dropRect);
}
void DolphinIconsView::dropEvent(QDropEvent* event)
event->acceptProposedAction();
}
KListView::dropEvent(event);
+ m_dragging = false;
+}
+
+void DolphinIconsView::paintEvent(QPaintEvent* event)
+{
+ KListView::paintEvent(event);
+
+ if (m_dragging) {
+ // TODO: remove this code when the issue #160611 is solved in Qt 4.4
+ QPainter painter(viewport());
+ painter.save();
+ QBrush brush(m_viewOptions.palette.brush(QPalette::Normal, QPalette::Highlight));
+ QColor color = brush.color();
+ color.setAlpha(64);
+ brush.setColor(color);
+ painter.fillRect(m_dropRect, brush);
+ painter.restore();
+ }
}
void DolphinIconsView::slotShowPreviewChanged(bool showPreview)
virtual void mousePressEvent(QMouseEvent* event);
virtual void mouseReleaseEvent(QMouseEvent* event);
virtual void dragEnterEvent(QDragEnterEvent* event);
+ virtual void dragMoveEvent(QDragMoveEvent* event);
virtual void dropEvent(QDropEvent* event);
+ virtual void paintEvent(QPaintEvent* event);
private slots:
void slotShowPreviewChanged(bool show);
private:
DolphinController* m_controller;
QStyleOptionViewItem m_viewOptions;
+
+ bool m_dragging; // TODO: remove this property when the issue #160611 is solved in Qt 4.4
+ QRect m_dropRect; // TODO: remove this property when the issue #160611 is solved in Qt 4.4
};
#endif