From 5b04f38345850db86d8f43a42dd946810bceba8a Mon Sep 17 00:00:00 2001 From: Tannin Date: Thu, 4 Apr 2013 21:51:13 +0200 Subject: added modlist view class (updates drop behaviour on modlist depending on mime type) --- src/modlistview.cpp | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 src/modlistview.cpp (limited to 'src/modlistview.cpp') diff --git a/src/modlistview.cpp b/src/modlistview.cpp new file mode 100644 index 00000000..88adcceb --- /dev/null +++ b/src/modlistview.cpp @@ -0,0 +1,47 @@ +#include "modlistview.h" +#include +#include + + +class ModListViewStyle: public QProxyStyle{ +public: + ModListViewStyle(QStyle *style, int indentation); + + void drawPrimitive (PrimitiveElement element, const QStyleOption *option, + QPainter *painter, const QWidget *widget = 0) const; +private: + int m_Indentation; +}; + +ModListViewStyle::ModListViewStyle(QStyle *style, int indentation) + : QProxyStyle(style), m_Indentation(indentation) +{ +} + +void ModListViewStyle::drawPrimitive(PrimitiveElement element, const QStyleOption *option, + QPainter *painter, const QWidget *widget) const +{ + if (element == QStyle::PE_IndicatorItemViewItemDrop && !option->rect.isNull()) { + QStyleOption opt(*option); + opt.rect.setLeft(m_Indentation); + if (widget) { + opt.rect.setRight(widget->width() - 5); // 5 is an arbitrary value that seems to work ok + } + QProxyStyle::drawPrimitive(element, &opt, painter, widget); + } else { + QProxyStyle::drawPrimitive(element, option, painter, widget); + } +} + +ModListView::ModListView(QWidget *parent) + : QTreeView(parent) +{ + setStyle(new ModListViewStyle(style(), indentation())); +} + +void ModListView::dragEnterEvent(QDragEnterEvent *event) +{ + emit dropModeUpdate(event->mimeData()->hasUrls()); + + QTreeView::dragEnterEvent(event); +} -- cgit v1.3.1