summaryrefslogtreecommitdiff
path: root/qrtclient/ticket.hxx
diff options
context:
space:
mode:
authorꦌ ꦫꦶ ꦏ꧀ꦦꦿ ꦧ ꦮ ꦑ ꦩ ꦭ꧀ <erik@darapsa.co.id>2019-09-15 18:42:35 +0800
committerꦌ ꦫꦶ ꦏ꧀ꦦꦿ ꦧ ꦮ ꦑ ꦩ ꦭ꧀ <erik@darapsa.co.id>2019-09-15 18:42:35 +0800
commitcd679da218281c5716001a4e2055451ab9bcc926 (patch)
tree43c1a719690062d4c0f65bbff593b7e5e23b5eb9 /qrtclient/ticket.hxx
A Qt Core based library that depends on librtclient
and can be used for a Qt based project
Diffstat (limited to 'qrtclient/ticket.hxx')
-rw-r--r--qrtclient/ticket.hxx56
1 files changed, 56 insertions, 0 deletions
diff --git a/qrtclient/ticket.hxx b/qrtclient/ticket.hxx
new file mode 100644
index 0000000..af438ae
--- /dev/null
+++ b/qrtclient/ticket.hxx
@@ -0,0 +1,56 @@
+#ifndef QRTCLIENT_TICKET_HXX
+#define QRTCLIENT_TICKET_HXX
+
+#include <QAbstractListModel>
+
+struct rt_ticketlist;
+
+namespace RTClient {
+
+ class Ticket
+ {
+ public:
+ Ticket(QString subject) : m_subject{subject} {}
+ QString const& subject() const { return m_subject; }
+
+ private:
+ QString m_subject;
+ };
+
+ class TicketList : public QAbstractListModel
+ {
+ Q_OBJECT
+ Q_PROPERTY(int rowCount READ rowCount NOTIFY rowCountChanged)
+
+ public:
+ enum TicketRoles {
+ SubjectRole = Qt::UserRole + 1,
+ };
+
+ explicit TicketList(QObject* parent = nullptr)
+ : QAbstractListModel{parent} {}
+ ~TicketList() {}
+
+ int rowCount(QModelIndex const& parent
+ = QModelIndex()) const Q_DECL_OVERRIDE;
+ QVariant data(const QModelIndex& index
+ , int role = Qt::DisplayRole
+ ) const Q_DECL_OVERRIDE;
+
+ protected:
+ QHash<int, QByteArray> roleNames() const Q_DECL_OVERRIDE;
+
+ signals:
+ void rowCountChanged();
+
+ private:
+ QList<Ticket> tickets;
+ void addTicket(Ticket const& ticket);
+
+ private slots:
+ void addTickets(struct rt_ticketlist* ticketList);
+ };
+
+}
+
+#endif // QRTCLIENT_TICKET_HXX