diff options
-rw-r--r-- | GroupView.cpp | 41 | ||||
-rw-r--r-- | GroupView.h | 36 | ||||
-rw-r--r-- | InstanceDelegate.cpp | 2 | ||||
-rw-r--r-- | main.h | 19 |
4 files changed, 56 insertions, 42 deletions
diff --git a/GroupView.cpp b/GroupView.cpp index 94682df8..50d19f52 100644 --- a/GroupView.cpp +++ b/GroupView.cpp @@ -26,17 +26,17 @@ template <typename T> bool listsIntersect(const QList<T> &l1, const QList<T> t2) } GroupView::GroupView(QWidget *parent) - : QListView(parent), m_leftMargin(5), m_rightMargin(5), m_bottomMargin(5), + : QAbstractItemView(parent), m_leftMargin(5), m_rightMargin(5), m_bottomMargin(5), m_categoryMargin(5) //, m_updatesDisabled(false), m_categoryEditor(0), m_editedCategory(0) { - setViewMode(IconMode); + // setViewMode(IconMode); // setMovement(Snap); setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); - setWordWrap(true); + // setWordWrap(true); // setDragDropMode(QListView::InternalMove); setAcceptDrops(true); - setSpacing(10); + // setSpacing(10); } GroupView::~GroupView() @@ -48,49 +48,26 @@ GroupView::~GroupView() void GroupView::dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector<int> &roles) { - // if (m_updatesDisabled) - // { - // return; - // } - - QListView::dataChanged(topLeft, bottomRight, roles); - if (roles.contains(CategorizedViewRoles::CategoryRole) || roles.contains(Qt::DisplayRole)) { updateGeometries(); - update(); } + viewport()->update(); } void GroupView::rowsInserted(const QModelIndex &parent, int start, int end) { - // if (m_updatesDisabled) - // { - // return; - // } - - QListView::rowsInserted(parent, start, end); - updateGeometries(); - update(); + viewport()->update(); } void GroupView::rowsAboutToBeRemoved(const QModelIndex &parent, int start, int end) { - // if (m_updatesDisabled) - // { - // return; - // } - - QListView::rowsAboutToBeRemoved(parent, start, end); - updateGeometries(); - update(); + viewport()->update(); } void GroupView::updateGeometries() { - QListView::updateGeometries(); - int previousScroll = verticalScrollBar()->value(); QMap<QString, Group *> cats; @@ -145,7 +122,7 @@ void GroupView::updateGeometries() verticalScrollBar()->setValue(qMin(previousScroll, verticalScrollBar()->maximum())); - update(); + viewport()->update(); } bool GroupView::isIndexHidden(const QModelIndex &index) const @@ -520,7 +497,7 @@ void GroupView::paintEvent(QPaintEvent *event) void GroupView::resizeEvent(QResizeEvent *event) { - QListView::resizeEvent(event); + // QListView::resizeEvent(event); // if (m_categoryEditor) // { diff --git a/GroupView.h b/GroupView.h index 6d55a462..bf911794 100644 --- a/GroupView.h +++ b/GroupView.h @@ -15,7 +15,7 @@ struct CategorizedViewRoles struct Group; -class GroupView : public QListView +class GroupView : public QAbstractItemView { Q_OBJECT @@ -28,6 +28,40 @@ public: void setSelection(const QRect &rect, const QItemSelectionModel::SelectionFlags commands) override; + /* + * BS + */ + + virtual int horizontalOffset() const override + { + return 0; + } + + virtual int verticalOffset() const override + { + return 0; + } + + virtual void scrollTo(const QModelIndex &index, ScrollHint hint = EnsureVisible) override + { + return; + } + + virtual QModelIndex moveCursor(CursorAction cursorAction, Qt::KeyboardModifiers modifiers) + override + { + return QModelIndex(); + } + + virtual QRegion visualRegionForSelection(const QItemSelection &) const override + { + return QRegion(); + } + + /* + * End of BS + */ + protected slots: void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, diff --git a/InstanceDelegate.cpp b/InstanceDelegate.cpp index 056db99d..944cfd76 100644 --- a/InstanceDelegate.cpp +++ b/InstanceDelegate.cpp @@ -103,7 +103,7 @@ void drawProgressOverlay(QPainter *painter, const QStyleOptionViewItemV4 &option color.setAlphaF(0.70f); painter->setBrush(color); painter->setPen(QPen(QBrush(), 0)); - painter->drawPie(option.rect, 90 * 16, -percent * 360 * 60); + painter->drawPie(option.rect, 90 * 16, -percent * 360 * 16); painter->restore(); } @@ -30,20 +30,23 @@ public slots: void timeout() { + QList<QStandardItem *> toRemove; for (auto item : m_items) { + int maximum = item->data(CategorizedViewRoles::ProgressMaximumRole).toInt(); int value = item->data(CategorizedViewRoles::ProgressValueRole).toInt(); - value += qrand() % 3; - if (value >= item->data(CategorizedViewRoles::ProgressMaximumRole).toInt()) - { - item->setData(item->data(CategorizedViewRoles::ProgressMaximumRole).toInt(), - CategorizedViewRoles::ProgressValueRole); - } - else + int newvalue = std::min(value + 3, maximum); + item->setData(newvalue, CategorizedViewRoles::ProgressValueRole); + + if(newvalue >= maximum) { - item->setData(value, CategorizedViewRoles::ProgressValueRole); + toRemove.append(item); } } + for(auto remove : toRemove) + { + m_items.removeAll(remove); + } } private: |