summaryrefslogtreecommitdiff
path: root/qrtclient
diff options
context:
space:
mode:
Diffstat (limited to 'qrtclient')
-rw-r--r--qrtclient/client.hxx2
-rw-r--r--qrtclient/tickethistory.hxx109
2 files changed, 110 insertions, 1 deletions
diff --git a/qrtclient/client.hxx b/qrtclient/client.hxx
index b672620..e9e6b0f 100644
--- a/qrtclient/client.hxx
+++ b/qrtclient/client.hxx
@@ -63,7 +63,7 @@ namespace RTClient {
, QString const& due = nullptr
, QString const& text = nullptr);
void searchTicket(QString const& owner);
- void ticketHistory(int id);
+ void ticketHistory(int id, bool longFormat = false);
signals:
void loggedIn(QString const& name);
diff --git a/qrtclient/tickethistory.hxx b/qrtclient/tickethistory.hxx
new file mode 100644
index 0000000..7d68652
--- /dev/null
+++ b/qrtclient/tickethistory.hxx
@@ -0,0 +1,109 @@
+#ifndef QRTCLIENT_TICKET_HISTORY_HXX
+#define QRTCLIENT_TICKET_HISTORY_HXX
+
+#include <QAbstractListModel>
+#include <QDateTime>
+#include <rtclient/ticket.h>
+
+struct rtclient_ticket_history_list;
+
+namespace RTClient {
+
+ class TicketHistory
+ {
+ public:
+ TicketHistory(struct rtclient_ticket_history* history)
+ : m_id{history->id}
+ , m_ticket{history->ticket}
+ , m_timeTaken{history->time_taken}
+ , m_type{history->type}
+ , m_description{history->description}
+ , m_content{history->content}
+ , m_creator{history->creator}
+ {
+ if (history->field)
+ m_field = QString{history->field};
+ if (history->old_value)
+ m_oldValue = QString{history->old_value};
+ if (history->new_value)
+ m_newValue = QString{history->new_value};
+ if (history->data)
+ m_data = QString{history->data};
+ }
+ unsigned int id() const { return m_id; }
+ unsigned int ticket() const { return m_ticket; }
+ unsigned int timeTaken() const { return m_timeTaken; }
+// Q_ENUM(rtclient_ticket_history_type)
+ rtclient_ticket_history_type type() const { return m_type; }
+ QString const& field() const { return m_field; }
+ QString const& oldValue() const { return m_oldValue; }
+ QString const& newValue() const { return m_newValue; }
+ QString const& data() const { return m_data; }
+ QString const& description() const { return m_description; }
+ QString const& content() const { return m_content; }
+ QString const& creator() const { return m_creator; }
+ QDateTime const& created() const { return m_created; }
+
+ private:
+ unsigned int m_id;
+ unsigned int m_ticket;
+ unsigned int m_timeTaken;
+ rtclient_ticket_history_type m_type;
+ QString m_field;
+ QString m_oldValue;
+ QString m_newValue;
+ QString m_data;
+ QString m_description;
+ QString m_content;
+ QString m_creator;
+ QDateTime m_created;
+// QList<TicketHistoryAttachment>* m_attachments;
+ };
+
+ class TicketHistoryList : public QAbstractListModel
+ {
+ Q_OBJECT
+
+ public:
+ enum TicketHistoryRoles {
+ IdRole = Qt::UserRole + 1,
+ TicketRole,
+ TimeTakenRole,
+ TypeRole,
+ FieldRole,
+ OldValueRole,
+ NewValueRole,
+ DataRole,
+ DescriptionRole,
+ ContentRole,
+ CreatorRole,
+ CreatedRole/*,
+ AttachmentsRole*/
+ };
+
+ explicit TicketHistoryList(QObject* parent = nullptr)
+ : QAbstractListModel{parent} {}
+
+ int rowCount(QModelIndex const& parent
+ = QModelIndex()) const Q_DECL_OVERRIDE;
+ QVariant data(const QModelIndex& index
+ , int role = Qt::DisplayRole
+ ) const Q_DECL_OVERRIDE;
+
+ public slots:
+ void update(rtclient_ticket_history_list* list);
+
+ protected:
+ QHash<int, QByteArray> roleNames() const Q_DECL_OVERRIDE;
+
+ signals:
+ void updated();
+
+ private:
+ QList<TicketHistory> histories;
+ void addTicketHistory(TicketHistory const& history);
+ };
+
+}
+
+#endif // QRTCLIENT_TICKET_HISTORY_HXX