-
Notifications
You must be signed in to change notification settings - Fork 75
/
sources_of_tokens_model.nim
74 lines (62 loc) · 2.12 KB
/
sources_of_tokens_model.nim
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import NimQml, Tables
import ./io_interface
type
ModelRole {.pure.} = enum
# key = name
Key = UserRole + 1
Name
UpdatedAt
Source
Version
TokensCount
QtObject:
type SourcesOfTokensModel* = ref object of QAbstractListModel
delegate: io_interface.SourcesOfTokensModelDataSource
proc setup(self: SourcesOfTokensModel) =
self.QAbstractListModel.setup
proc delete(self: SourcesOfTokensModel) =
self.QAbstractListModel.delete
proc newSourcesOfTokensModel*(delegate: io_interface.SourcesOfTokensModelDataSource): SourcesOfTokensModel =
new(result, delete)
result.setup
result.delegate = delegate
method rowCount(self: SourcesOfTokensModel, index: QModelIndex = nil): int =
return self.delegate.getSourcesOfTokensList().len
proc countChanged(self: SourcesOfTokensModel) {.signal.}
proc getCount(self: SourcesOfTokensModel): int {.slot.} =
return self.rowCount()
QtProperty[int] count:
read = getCount
notify = countChanged
method roleNames(self: SourcesOfTokensModel): Table[int, string] =
{
ModelRole.Key.int:"key",
ModelRole.Name.int:"name",
ModelRole.UpdatedAt.int:"updatedAt",
ModelRole.Source.int:"source",
ModelRole.Version.int:"version",
ModelRole.TokensCount.int:"tokensCount",
}.toTable
method data(self: SourcesOfTokensModel, index: QModelIndex, role: int): QVariant =
if not index.isValid:
return
if index.row < 0 or index.row >= self.rowCount():
return
let item = self.delegate.getSourcesOfTokensList()[index.row]
let enumRole = role.ModelRole
case enumRole:
of ModelRole.Key:
result = newQVariant(item.name)
of ModelRole.Name:
result = newQVariant(item.name)
of ModelRole.UpdatedAt:
result = newQVariant(item.updatedAt)
of ModelRole.Source:
result = newQVariant(item.source)
of ModelRole.Version:
result = newQVariant(item.version)
of ModelRole.TokensCount:
result = newQVariant(item.tokensCount)
proc modelsUpdated*(self: SourcesOfTokensModel) =
self.beginResetModel()
self.endResetModel()