aboutsummaryrefslogtreecommitdiff
path: root/gui/groupview/Group.h
diff options
context:
space:
mode:
authorPetr Mrázek <peterix@gmail.com>2014-02-09 20:49:48 +0100
committerPetr Mrázek <peterix@gmail.com>2014-02-09 20:49:48 +0100
commit1f6a484cb2368a5704cdb4820ac06194ea6d7e1a (patch)
treef4ebfd97c25387b3e26d4a55c5c85d67782df25d /gui/groupview/Group.h
parentf8df07c3272c0e02f31f46fda8a429292c7a446a (diff)
parent18f532b0d7d873280ec17218196db15fa64175a2 (diff)
downloadPrismLauncher-1f6a484cb2368a5704cdb4820ac06194ea6d7e1a.tar.gz
PrismLauncher-1f6a484cb2368a5704cdb4820ac06194ea6d7e1a.tar.bz2
PrismLauncher-1f6a484cb2368a5704cdb4820ac06194ea6d7e1a.zip
Merge branch 'integration_derpstances_groupview' into develop
Diffstat (limited to 'gui/groupview/Group.h')
-rw-r--r--gui/groupview/Group.h69
1 files changed, 69 insertions, 0 deletions
diff --git a/gui/groupview/Group.h b/gui/groupview/Group.h
new file mode 100644
index 00000000..3b797f4c
--- /dev/null
+++ b/gui/groupview/Group.h
@@ -0,0 +1,69 @@
+#pragma once
+
+#include <QString>
+#include <QRect>
+#include <QVector>
+#include <QStyleOption>
+
+class GroupView;
+class QPainter;
+class QModelIndex;
+
+struct Group
+{
+/* constructors */
+ Group(const QString &text, GroupView *view);
+ Group(const Group *other);
+
+/* data */
+ GroupView *view = nullptr;
+ QString text;
+ bool collapsed = false;
+ QVector<int> rowHeights;
+ int firstItemIndex = 0;
+ int m_verticalPosition = 0;
+
+/* logic */
+ /// do stuff. and things. TODO: redo.
+ void update();
+
+ /// draw the header at y-position.
+ void drawHeader(QPainter *painter, const QStyleOptionViewItem &option);
+
+ /// 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)