Changeset View
Changeset View
Standalone View
Standalone View
src/qtquick/quickitemsmodel.cpp
Show First 20 Lines • Show All 45 Lines • ▼ Show 20 Line(s) | 36 | public: | |||
---|---|---|---|---|---|
46 | } | 46 | } | ||
47 | ItemsModel *q; | 47 | ItemsModel *q; | ||
48 | KNSCore::ItemsModel *model; | 48 | KNSCore::ItemsModel *model; | ||
49 | Engine *engine; | 49 | Engine *engine; | ||
50 | KNSCore::Engine *coreEngine; | 50 | KNSCore::Engine *coreEngine; | ||
51 | 51 | | |||
52 | QHash<QString, KNSCore::CommentsModel*> commentsModels; | 52 | QHash<QString, KNSCore::CommentsModel*> commentsModels; | ||
53 | 53 | | |||
54 | bool isLoadingData{false}; | ||||
55 | | ||||
54 | bool initModel() | 56 | bool initModel() | ||
55 | { | 57 | { | ||
56 | if (model) { | 58 | if (model) { | ||
57 | return true; | 59 | return true; | ||
58 | } | 60 | } | ||
59 | if (!coreEngine) { | 61 | if (!coreEngine) { | ||
60 | return false; | 62 | return false; | ||
61 | } | 63 | } | ||
62 | model = new KNSCore::ItemsModel(coreEngine, q); | 64 | model = new KNSCore::ItemsModel(coreEngine, q); | ||
63 | 65 | | |||
66 | q->connect(coreEngine, &KNSCore::Engine::signalBusy, q, [=](){ isLoadingData = true; emit q->isLoadingDataChanged(); }); | ||||
67 | q->connect(coreEngine, &KNSCore::Engine::signalIdle, q, [=](){ isLoadingData = false; emit q->isLoadingDataChanged(); }); | ||||
68 | | ||||
64 | q->connect(coreEngine, &KNSCore::Engine::signalProvidersLoaded, coreEngine, &KNSCore::Engine::reloadEntries); | 69 | q->connect(coreEngine, &KNSCore::Engine::signalProvidersLoaded, coreEngine, &KNSCore::Engine::reloadEntries); | ||
65 | // Entries have been fetched and should be shown: | 70 | // Entries have been fetched and should be shown: | ||
66 | q->connect(coreEngine, &KNSCore::Engine::signalEntriesLoaded, model, &KNSCore::ItemsModel::slotEntriesLoaded); | 71 | q->connect(coreEngine, &KNSCore::Engine::signalEntriesLoaded, model, &KNSCore::ItemsModel::slotEntriesLoaded); | ||
67 | 72 | | |||
68 | // An entry has changes - eg because it was installed | 73 | // An entry has changes - eg because it was installed | ||
69 | q->connect(coreEngine, &KNSCore::Engine::signalEntryChanged, model, &KNSCore::ItemsModel::slotEntryChanged); | 74 | q->connect(coreEngine, &KNSCore::Engine::signalEntryChanged, model, &KNSCore::ItemsModel::slotEntryChanged); | ||
70 | q->connect(coreEngine, &KNSCore::Engine::signalEntryChanged, q, [=](const KNSCore::EntryInternal &entry){ | 75 | q->connect(coreEngine, &KNSCore::Engine::signalEntryChanged, q, [=](const KNSCore::EntryInternal &entry){ | ||
71 | emit q->entryChanged(model->row(entry)); | 76 | emit q->entryChanged(model->row(entry)); | ||
▲ Show 20 Lines • Show All 310 Lines • ▼ Show 20 Line(s) | 383 | connect(d->engine, &Engine::engineChanged, this, [this](){ | |||
382 | d->coreEngine = qobject_cast<KNSCore::Engine*>(d->engine->engine()); | 387 | d->coreEngine = qobject_cast<KNSCore::Engine*>(d->engine->engine()); | ||
383 | endResetModel(); | 388 | endResetModel(); | ||
384 | }); | 389 | }); | ||
385 | emit engineChanged(); | 390 | emit engineChanged(); | ||
386 | endResetModel(); | 391 | endResetModel(); | ||
387 | } | 392 | } | ||
388 | } | 393 | } | ||
389 | 394 | | |||
395 | bool ItemsModel::isLoadingData() const | ||||
396 | { | ||||
397 | return d->isLoadingData; | ||||
398 | } | ||||
399 | | ||||
390 | void ItemsModel::installItem(int index, int linkId) | 400 | void ItemsModel::installItem(int index, int linkId) | ||
391 | { | 401 | { | ||
392 | if (d->coreEngine) { | 402 | if (d->coreEngine) { | ||
393 | KNSCore::EntryInternal entry = d->model->data(d->model->index(index), Qt::UserRole).value<KNSCore::EntryInternal>(); | 403 | KNSCore::EntryInternal entry = d->model->data(d->model->index(index), Qt::UserRole).value<KNSCore::EntryInternal>(); | ||
394 | if(entry.isValid()) { | 404 | if(entry.isValid()) { | ||
395 | d->coreEngine->install(entry, linkId); | 405 | d->coreEngine->install(entry, linkId); | ||
396 | } | 406 | } | ||
397 | } | 407 | } | ||
Show All 24 Lines |