-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathModelSetter.cpp
More file actions
71 lines (61 loc) · 1.98 KB
/
ModelSetter.cpp
File metadata and controls
71 lines (61 loc) · 1.98 KB
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
#include "EasySellableRewardFilter.h"
#include "InvestitionModelFactory.h"
#include "ModelSetter.h"
#include <QQuickItem>
ModelSetter::ModelSetter(ItemDataLoader* cardsLoader, const QVector<ItemDataLoader*> &itemsLoaders, QVector<DivinationCardFilter*> filters, QQuickView* list) : cardsLoader(cardsLoader),
itemsLoaders(itemsLoaders),
filters(filters)
{
this->list = list;
}
void ModelSetter::setModel()
{
++loadedData;
if(loadedData == itemsLoaders.count() + 1)//if all itemsLoaders and cardLoader called this method
{
QVector<std::shared_ptr<ItemData>>* temp = cardsLoader->getItems();
cards = reinterpret_cast<QVector<std::shared_ptr<DivinationCard>>*>(temp);
for(auto& itemLoader : itemsLoaders)
{
items.append(*(itemLoader->getItems()));
}
modelFactory.initialize(*cards, items, filters);
modelFactory.populateModel();
loadedData = 0;
}
}
ModelSetter::ModelSetter(QObject *parent) : QObject(parent){}
ModelSetter::~ModelSetter()
{
for(auto& itemLoader : itemsLoaders)
{
delete itemLoader;
}
}
void ModelSetter::initialize(ItemDataLoader *cardsLoader, const QVector<ItemDataLoader *> &itemsLoaders, QVector<DivinationCardFilter *> filters)
{
this->cardsLoader = cardsLoader;
this->itemsLoaders = itemsLoaders;
this->filters = filters;
this->list = list;
}
void ModelSetter::beginPopulatingModel()
{
cardsLoader->load();
connect(cardsLoader, &ItemDataLoader::allItemsLoaded, this, &ModelSetter::setModel);
for(auto itemLoader : qAsConst(itemsLoaders))
{
itemLoader->load();
connect(itemLoader, &ItemDataLoader::allItemsLoaded, this, &ModelSetter::setModel);
}
}
void ModelSetter::setEmptyModel(QQuickView *list)
{
modelFactory = InvestitionModelFactory();
list->setInitialProperties({{"myModel", QVariant::fromValue(modelFactory.getModel())}});
emit modelIsSet();
}
void ModelSetter::clearModel()
{
modelFactory.clear();
}