summaryrefslogtreecommitdiffstats
path: root/depends/groupview/Group.h
diff options
context:
space:
mode:
authorPetr Mrázek <peterix@gmail.com>2014-02-04 00:53:05 +0100
committerPetr Mrázek <peterix@gmail.com>2014-02-04 00:53:05 +0100
commitb82eb5873e99dce6aec735b08929e3add52e53e7 (patch)
treef8b60861bc5006cc989e65b87b22498f2b1d4412 /depends/groupview/Group.h
parenta17caba2c9c2aa5960581db01e4b66472a9c019c (diff)
parent946d49675cb4725c31ab49a51f3bcae302f89a19 (diff)
downloadMultiMC-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.h67
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)