mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-09-21 09:05:10 -07:00
DeckListModel now surfaces the custom zones from the deck tree so views can render and edit them alongside criteria groups. The custom-zone bookkeeping that made the model unwieldy is extracted into DeckListModelCustomZones (deck_list_model_custom_zones.h/.cpp), a single self-contained unit owning every "what is / where is a custom zone" decision for the model's shadow tree: - rebuildTree mirrors each custom zone as a DecklistModelSubZoneNode under its board zone, cards flat inside (no further grouping). - The freshly built shadow tree is sorted while the model reset is still open, so views never observe unsorted intermediate order and proxies cannot desync. - Custom zones always sort after criteria groups within a board, regardless of their names. One shared sortWithCustomZonesLast backs both the live sortHelper (which remaps persistent indexes from the movement mapping) and the silent reset-time sortShadowTree. - addCard inserts flat into a custom zone by name and keeps grouping by active criteria for board zones. findCardNode resolves cards in both layouts, legacy top-level zones unchanged. - New IsCustomZoneRole lets views tell zones apart from groups. - Empty custom zones survive row removal. Zone rows themselves are only mutable through the deck tree API. A new deck_list_model_custom_zones_test suite locks the extracted shadow-tree logic (type testing, mirroring, name lookup, and the sort-with-custom-zones-last mapping). No behavior change.
33 lines
979 B
CMake
33 lines
979 B
CMake
add_executable(deck_list_model_custom_zones_test deck_list_model_custom_zones_test.cpp)
|
|
|
|
if(NOT GTEST_FOUND)
|
|
add_dependencies(deck_list_model_custom_zones_test gtest)
|
|
endif()
|
|
|
|
target_link_libraries(
|
|
deck_list_model_custom_zones_test
|
|
libcockatrice_models
|
|
libcockatrice_card
|
|
libcockatrice_deck_list
|
|
Threads::Threads
|
|
${GTEST_BOTH_LIBRARIES}
|
|
${TEST_QT_MODULES}
|
|
)
|
|
add_test(NAME deck_list_model_custom_zones_test COMMAND deck_list_model_custom_zones_test)
|
|
|
|
add_executable(deck_list_model_zone_integration_test ${VERSION_STRING_CPP} deck_list_model_zone_integration_test.cpp)
|
|
|
|
if(NOT GTEST_FOUND)
|
|
add_dependencies(deck_list_model_zone_integration_test gtest)
|
|
endif()
|
|
|
|
target_link_libraries(
|
|
deck_list_model_zone_integration_test
|
|
libcockatrice_models
|
|
libcockatrice_card
|
|
libcockatrice_deck_list
|
|
Threads::Threads
|
|
${GTEST_BOTH_LIBRARIES}
|
|
${TEST_QT_MODULES}
|
|
)
|
|
add_test(NAME deck_list_model_zone_integration_test COMMAND deck_list_model_zone_integration_test)
|