kDB: Knowledge DataBase
Loading...
Searching...
No Matches
QueryResultModel.h
1#include "AbstractQueryResultModel.h"
2
3namespace kDB
4{
5 namespace Repository
6 {
7 template<typename _T_>
9 {
10 public:
11 explicit QueryResultModel(QObject* parent = 0);
12 explicit QueryResultModel(const _T_& _result, QObject* parent = 0);
13 int rowCount(const QModelIndex &parent = QModelIndex()) const override;
14 QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
15 QHash<int, QByteArray> roleNames() const override;
16 _T_ result() const { return m_result; }
17 void setResult(const _T_& _t);
18 protected:
19 QStringList roleNames_() const override;
20 private:
21 _T_ m_result;
22 };
23 template<typename _T_>
25 {
26 }
27 template<typename _T_>
28 QueryResultModel<_T_>::QueryResultModel(const _T_& _result, QObject* parent) : AbstractQueryResultModel(parent), m_result(_result)
29 {
30 }
31 template<typename _T_>
32 QHash<int, QByteArray> QueryResultModel<_T_>::roleNames() const
33 {
35 if(m_result.isValid())
36 {
37 for(int i = 0; i < m_result.fields(); ++i)
38 {
39 roles[Qt::UserRole + i] = m_result.fieldName(i).toUtf8();
40 }
41 }
42 return roles;
43 }
44 template<typename _T_>
45 QStringList QueryResultModel<_T_>::roleNames_() const
46 {
48 if(m_result.isValid())
49 {
50 for(int i = 0; i < m_result.fields(); ++i)
51 {
52 r << m_result.fieldName(i);
53 }
54 }
55 return r;
56 }
57 template<typename _T_>
58 int QueryResultModel<_T_>::rowCount(const QModelIndex &parent) const
59 {
60 Q_UNUSED(parent);
61 return m_result.isValid() ? m_result.tuples() : 0;
62 }
63
64 template<typename _T_>
65 QVariant QueryResultModel<_T_>::data(const QModelIndex &index, int role) const
66 {
67 if(index.isValid() and role >= Qt::UserRole and role < Qt::UserRole + m_result.fields())
68 {
69 return QVariant::fromValue(m_result.value(index.row(), role - Qt::UserRole));
70 } else {
71 return QVariant();
72 }
73 }
74 template<typename _T_>
75 void QueryResultModel<_T_>::setResult(const _T_& _t)
76 {
77 beginResetModel();
78 m_result = _t;
79 endResetModel();
80 }
81 }
82}
Definition Forward.h:10
Definition AbstractQueryResultModel.h:7
Definition QueryResultModel.h:9