diff options
author | Petr Mrázek <peterix@gmail.com> | 2014-02-04 00:53:05 +0100 |
---|---|---|
committer | Petr Mrázek <peterix@gmail.com> | 2014-02-04 00:53:05 +0100 |
commit | b82eb5873e99dce6aec735b08929e3add52e53e7 (patch) | |
tree | f8b60861bc5006cc989e65b87b22498f2b1d4412 /depends/groupview/Group.h | |
parent | a17caba2c9c2aa5960581db01e4b66472a9c019c (diff) | |
parent | 946d49675cb4725c31ab49a51f3bcae302f89a19 (diff) | |
download | MultiMC-b82eb5873e99dce6aec735b08929e3add52e53e7.tar MultiMC-b82eb5873e99dce6aec735b08929e3add52e53e7.tar.gz MultiMC-b82eb5873e99dce6aec735b08929e3add52e53e7.tar.lz MultiMC-b82eb5873e99dce6aec735b08929e3add52e53e7.tar.xz MultiMC-b82eb5873e99dce6aec735b08929e3add52e53e7.zip |
Add 'depends/groupview/' from commit '946d49675cb4725c31ab49a51f3bcae302f89a19'
git-subtree-dir: depends/groupview
git-subtree-mainline: a17caba2c9c2aa5960581db01e4b66472a9c019c
git-subtree-split: 946d49675cb4725c31ab49a51f3bcae302f89a19
Diffstat (limited to 'depends/groupview/Group.h')
-rw-r--r-- | depends/groupview/Group.h | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/depends/groupview/Group.h b/depends/groupview/Group.h new file mode 100644 index 00000000..455ee1a8 --- /dev/null +++ b/depends/groupview/Group.h @@ -0,0 +1,67 @@ +#pragma once + +#include <QString> +#include <QRect> +#include <QVector> + +class GroupView; +class QPainter; +class QModelIndex; + +struct Group +{ +/* constructors */ + Group(const QString &text, GroupView *view); + Group(const Group *other); + +/* data */ + GroupView *view; + QString text; + bool collapsed; + QVector<int> rowHeights; + int firstItemIndex; + +/* logic */ + /// do stuff. and things. TODO: redo. + void update(); + + /// draw the header at y-position. + void drawHeader(QPainter *painter, const int y); + + /// height of the group, in total. includes a small bit of padding. + int totalHeight() const; + + /// height of the group header, in pixels + int headerHeight() const; + + /// height of the group content, in pixels + int contentHeight() const; + + /// the number of visual rows this group has + int numRows() const; + + /// the height at which this group starts, in pixels + int verticalPosition() const; + + enum HitResult + { + NoHit = 0x0, + TextHit = 0x1, + CheckboxHit = 0x2, + HeaderHit = 0x4, + BodyHit = 0x8 + }; + Q_DECLARE_FLAGS(HitResults, HitResult) + + /// shoot! BANG! what did we hit? + HitResults hitScan (const QPoint &pos) const; + + /// super derpy thing. + QList<QModelIndex> items() const; + /// I don't even + int numItems() const; + QModelIndex firstItem() const; + QModelIndex lastItem() const; +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(Group::HitResults) |