mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-09-21 09:05:10 -07:00
[VDS] Drive folder and preview widgets from the model (#7106)
* [VDS] Drive folder and preview widgets from the model (MVC views) Took 16 minutes Took 8 minutes Took 3 minutes Took 11 minutes * Rebase whoopsie Took 4 minutes * Hide widgets instead of destroying, go back to signals, rename for consistency. Took 13 minutes Took 4 seconds Took 26 minutes Took 5 seconds # Commit time for manual adjustment: # Took 9 minutes * Make VDS startup smooth: batch deck loads, guard preview resizes - Move color identity computation into the background load task and apply finished deck loads in bounded batches per event loop turn, so finishing hundreds of loads at once cannot stall the UI thread - Skip redundant resize work in DeckPreviewWidget when the banner width did not change, and collect the clamped children once instead of searching the widget tree on every layout pass Took 19 minutes # Commit time for manual adjustment: # Took 3 minutes * [VDS] Expose filter matches as a proxy role instead of dropping rows The folder display scanned source-model rows and probed acceptance with mapFromSource(...).isValid(), reaching into both models for one answer. The proxy now keeps every row and exposes each row's search/tag/color filter result through FilterMatchRole. The folder display and the tag filter read everything off proxy indexes, and hidden previews keep their sorted position in the flow layout instead of being appended at the end. Took 11 minutes * [VDS] Bound pending-load drain by time and make row lookups O(1) The fixed DECK_LOADS_PER_TURN = 24 cap had no measured basis. It was guessed and existed because every applied load emitted dataChanged into each DeckPreviewWidget, whose handler resolved its own row with an O(n) linear scan per widget. The model now maintains a file path -> row hash kept in sync across scans, renames and deletions, so rowForFilePath is O(1) and the fan-out cost is gone at its source. The drain applies finished loads until a small time budget per event loop turn runs out, so throughput self-tunes instead of relying on an arbitrary count. * Actual minimal fix for resize squishing Took 20 minutes * Fix color widget sizing Took 16 minutes * [BannerWidget] Also set a max height Took 4 minutes --------- Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
This commit is contained in:
parent
e589429bd9
commit
b3e126f904
27 changed files with 1110 additions and 920 deletions
|
|
@ -9,6 +9,7 @@
|
|||
#include "../../interface/widgets/dialogs/dlg_load_deck_from_website.h"
|
||||
#include "../../interface/widgets/dialogs/dlg_load_remote_deck.h"
|
||||
#include "../../interface/widgets/tabs/tab_game.h"
|
||||
#include "../../interface/widgets/visual_deck_storage/visual_deck_storage_widget.h"
|
||||
#include "deck_view.h"
|
||||
|
||||
#include <QMessageBox>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue