mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-07-20 09:22:15 -07:00
Load widgets in batches.
This commit is contained in:
parent
cbb72d3b6f
commit
f8ce97d598
1 changed files with 21 additions and 5 deletions
|
|
@ -120,7 +120,9 @@ void PrintingSelector::setCard(const CardInfoPtr &newCard, const QString &_curre
|
||||||
if (isVisible()) {
|
if (isVisible()) {
|
||||||
updateDisplay();
|
updateDisplay();
|
||||||
}
|
}
|
||||||
|
flowWidget->setMinimumSizeToMaxSizeHint();
|
||||||
flowWidget->scrollArea->verticalScrollBar()->setValue(0);
|
flowWidget->scrollArea->verticalScrollBar()->setValue(0);
|
||||||
|
flowWidget->repaint();
|
||||||
}
|
}
|
||||||
|
|
||||||
void PrintingSelector::selectPreviousCard()
|
void PrintingSelector::selectPreviousCard()
|
||||||
|
|
@ -297,9 +299,23 @@ void PrintingSelector::getAllSetsForCurrentCard()
|
||||||
const QList<CardInfoPerSet> filteredSets = filterSets(sortedSets);
|
const QList<CardInfoPerSet> filteredSets = filterSets(sortedSets);
|
||||||
const QList<CardInfoPerSet> prependedSets = prependPrintingsInDeck(filteredSets);
|
const QList<CardInfoPerSet> prependedSets = prependPrintingsInDeck(filteredSets);
|
||||||
|
|
||||||
for (const auto &cardInfoPerSet : prependedSets) {
|
// Defer widget creation
|
||||||
auto *cardDisplayWidget = new PrintingSelectorCardDisplayWidget(
|
int batchSize = 10;
|
||||||
this, deckEditor, deckModel, deckView, cardSizeSlider, selectedCard, cardInfoPerSet, currentZone);
|
int currentIndex = 0;
|
||||||
flowWidget->addWidget(cardDisplayWidget);
|
QTimer *timer = new QTimer(this);
|
||||||
}
|
connect(timer, &QTimer::timeout, this, [=]() mutable {
|
||||||
|
for (int i = 0; i < batchSize && currentIndex < prependedSets.size(); ++i, ++currentIndex) {
|
||||||
|
auto *cardDisplayWidget =
|
||||||
|
new PrintingSelectorCardDisplayWidget(this, deckEditor, deckModel, deckView, cardSizeSlider,
|
||||||
|
selectedCard, prependedSets[currentIndex], currentZone);
|
||||||
|
flowWidget->addWidget(cardDisplayWidget);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Stop timer when done
|
||||||
|
if (currentIndex >= prependedSets.size()) {
|
||||||
|
timer->stop();
|
||||||
|
timer->deleteLater();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
timer->start(0); // Process as soon as possible
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue