From b7a6f541037a9ea562502e4bd1196e51e2983646 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20Br=C3=BCbach?= Date: Mon, 5 Oct 2026 08:20:09 +0200 Subject: [PATCH 01/28] [Tests] Register each test case with CTest instead of each test binary Registering a test cost four edits across a dozen CMakeLists files: add_test, add_executable, a conditional add_dependencies on gtest, and target_link_libraries. The conditional branch was the trap -- it is only needed when GTest was fetched and add_subdirectory'd, and omitting it yields undefined gtest symbols at link time -- so it was easy to leave out and impossible to notice until the link failed. Fold all four steps into cockatrice_add_test() and migrate every test directory onto it, with a cockatrice_add_manual_test() wrapper for the three benchmarks that are built but deliberately kept out of ctest. The calls now read as a declaration of what a test is rather than a transcript of how to register one. While rewriting the registrations, replace add_test(NAME x COMMAND x) with gtest_discover_tests(). Naming the binary as a single CTest entry meant a CI failure reported only which binary failed, and ctest -R Suite.Case could not select an individual case. Discovery raises the suite from 35 opaque entries to 469 real ones: ctest -R ThemeMigrationTest.IsIdempotent now runs exactly that case, and ctest -L server / -LE bench work off labels applied at registration. Give every test a 60s TIMEOUT. CTest's implicit default is 1500s, so one hung socket wait would stall CI for 25 minutes, and single_instance_manager_test already does real QLocalSocket waits. Dropping per-case granularity costs wall-clock time, since the suite becomes process-spawn bound rather than CPU bound: serial ctest went from 3.8s to 30.8s. Run it with -j in CI to recover it -- 7.6s at -j4, and 3.5s at -j8, both at or below the old serial time. The binaries are parallel-safe: the only test claiming a fixed resource scopes its local socket name to its own pid, so concurrent copies cannot collide. Also delete dummy_test, which asserted 1 == 1 and only proved the harness was wired up -- something the other 468 cases already establish. No test is added, removed, or changed by this commit; the 469 cases are the same ones the 35 binaries contained. --- .ci/compile.sh | 6 +- tests/CMakeLists.txt | 437 +++++++++++------- tests/card_zone_algorithms/CMakeLists.txt | 17 +- tests/carddatabase/CMakeLists.txt | 73 ++- tests/deck_list_model/CMakeLists.txt | 34 +- tests/deck_list_zones/CMakeLists.txt | 11 +- tests/dummy_test.cpp | 19 - tests/loading_from_clipboard/CMakeLists.txt | 19 +- tests/movecard_tests/CMakeLists.txt | 23 +- tests/oracle/CMakeLists.txt | 64 ++- tests/picture_loader_benchmark/CMakeLists.txt | 22 +- tests/settings/CMakeLists.txt | 34 +- tests/theme_migration/CMakeLists.txt | 21 +- 13 files changed, 391 insertions(+), 389 deletions(-) delete mode 100644 tests/dummy_test.cpp diff --git a/.ci/compile.sh b/.ci/compile.sh index 72a017f33..aab41d1f9 100755 --- a/.ci/compile.sh +++ b/.ci/compile.sh @@ -306,7 +306,11 @@ fi if [[ $MAKE_TEST ]]; then echo "::group::Run tests" - ctest -C "$BUILDTYPE" --output-on-failure + # Every TEST() is its own CTest entry, so the suite is process-spawn bound rather than CPU + # bound and -j recovers nearly all of the per-process overhead. The test binaries are safe to + # run concurrently: the only one that claims a fixed resource is single_instance_manager_test, + # which already scopes its local socket name to its own pid so parallel copies cannot collide. + ctest -C "$BUILDTYPE" --output-on-failure -j "${CTEST_JOBS:-4}" echo "::endgroup::" fi diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index b51d10560..0a9024191 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -2,102 +2,10 @@ # If a new test needs additional Qt modules, add them there — not in individual test CMakeLists.txt files. enable_testing() -add_test(NAME dummy_test COMMAND dummy_test) -add_test(NAME expression_test COMMAND expression_test) -add_test(NAME clamped_arithmetic_test COMMAND clamped_arithmetic_test) -add_test(NAME test_age_formatting COMMAND test_age_formatting) -add_test(NAME password_hash_test COMMAND password_hash_test) -add_test(NAME playmat_resolver_test COMMAND playmat_resolver_test) -add_test(NAME server_card_counter_test COMMAND server_card_counter_test) -add_test(NAME server_counter_test COMMAND server_counter_test) -add_test(NAME server_rate_limiter_test COMMAND server_rate_limiter_test) -add_test(NAME server_developer_role_test COMMAND server_developer_role_test) -add_test(NAME server_game_join_test COMMAND server_game_join_test) -add_test(NAME warning_categories_test COMMAND warning_categories_test) -# The translation loader test compiles a .qm fixture, which needs lrelease from Qt Linguist. -if(TARGET Qt6::lrelease) - add_test(NAME translation_loader_test COMMAND translation_loader_test) -endif() -add_test(NAME report_categories_test COMMAND report_categories_test) -add_test(NAME lag_monitor_test COMMAND lag_monitor_test) -add_test(NAME latency_tracker_test COMMAND latency_tracker_test) -add_test(NAME metrics_registry_test COMMAND metrics_registry_test) -add_test(NAME loader_local_matching_test COMMAND loader_local_matching_test) - -add_test(NAME deck_hash_performance_test COMMAND deck_hash_performance_test) -set_tests_properties(deck_hash_performance_test PROPERTIES TIMEOUT 15) +include(GoogleTest) # Find GTest -add_executable(dummy_test dummy_test.cpp) -add_executable(expression_test expression_test.cpp) -add_executable(clamped_arithmetic_test clamped_arithmetic_test.cpp) -add_executable(test_age_formatting test_age_formatting.cpp) -add_executable(password_hash_test password_hash_test.cpp) -add_executable(playmat_resolver_test playmat_resolver_test.cpp) -add_executable(deck_hash_performance_test deck_hash_performance_test.cpp) -add_executable(server_card_counter_test server_card_counter_test.cpp) -add_executable(server_counter_test server_counter_test.cpp) -add_executable(server_rate_limiter_test server_rate_limiter_test.cpp) -add_executable(server_developer_role_test server_developer_role_test.cpp) -add_executable(server_game_join_test server_game_join_test.cpp) -add_executable(warning_categories_test warning_categories_test.cpp) -if(TARGET Qt6::lrelease) - add_executable(translation_loader_test translation_loader_test.cpp) - - # QTranslator only accepts real .qm files, so the translation loader test gets one compiled from its - # own .ts fixture rather than a stub. - set(TRANSLATION_LOADER_TEST_QM "${CMAKE_CURRENT_BINARY_DIR}/translation_loader_test_de.qm") - add_custom_command( - OUTPUT "${TRANSLATION_LOADER_TEST_QM}" - COMMAND Qt6::lrelease "${CMAKE_CURRENT_SOURCE_DIR}/translation_loader_test.ts" -qm "${TRANSLATION_LOADER_TEST_QM}" - DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/translation_loader_test.ts" - COMMENT "Compiling translation_loader_test.ts" - ) - add_custom_target(translation_loader_test_qm DEPENDS "${TRANSLATION_LOADER_TEST_QM}") - add_dependencies(translation_loader_test translation_loader_test_qm) - target_compile_definitions(translation_loader_test PRIVATE TRANSLATION_LOADER_TEST_DIR="${CMAKE_CURRENT_BINARY_DIR}") - - # A multi-config generator (MSBuild, Xcode) puts the executable in a per-config subdirectory while - # the .qm stays in the current binary directory, so copy the fixture next to the binary: that is the - # layout ABuildTreeFindsTheTranslationsNextToTheExecutable is about, and the only one it finds on - # those generators. - add_custom_command( - TARGET translation_loader_test - POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different "${TRANSLATION_LOADER_TEST_QM}" - "$/" - VERBATIM - ) -endif() -add_executable(report_categories_test report_categories_test.cpp) -add_executable(lag_monitor_test ${CMAKE_SOURCE_DIR}/cockatrice/src/client/lag_monitor.cpp lag_monitor_test.cpp) -target_include_directories(lag_monitor_test PRIVATE ${CMAKE_SOURCE_DIR}/cockatrice/src) -add_executable(latency_tracker_test latency_tracker_test.cpp) -add_executable(metrics_registry_test ../servatrice/src/metrics_registry.cpp metrics_registry_test.cpp) -add_executable( - loader_local_matching_test - ${CMAKE_SOURCE_DIR}/cockatrice/src/interface/card_picture_loader/card_picture_loader_local.cpp - ${CMAKE_SOURCE_DIR}/cockatrice/src/client/settings/cache_settings.cpp - ${CMAKE_SOURCE_DIR}/cockatrice/src/client/settings/card_counter_settings.cpp - ${CMAKE_SOURCE_DIR}/cockatrice/src/client/settings/shortcuts_settings.cpp - ${CMAKE_SOURCE_DIR}/cockatrice/src/client/network/update/client/release_channel.cpp - ${VERSION_STRING_CPP} - loader_local_matching_test.cpp -) -target_include_directories(loader_local_matching_test PRIVATE ${CMAKE_SOURCE_DIR}/cockatrice/src) - -# Guard must match the condition for src/single_instance_manager.cpp in cockatrice/CMakeLists.txt. -if(WITH_CLIENT) - add_executable( - single_instance_manager_test ${CMAKE_SOURCE_DIR}/cockatrice/src/single_instance_manager.cpp - single_instance_manager_test.cpp - ) - target_include_directories(single_instance_manager_test PRIVATE ${CMAKE_SOURCE_DIR}/cockatrice/src) - - add_test(NAME single_instance_manager_test COMMAND single_instance_manager_test) -endif() - find_package(GTest) if(NOT GTEST_FOUND) @@ -123,90 +31,281 @@ if(NOT GTEST_FOUND) set(GTEST_INCLUDE_DIRS "${CMAKE_BINARY_DIR}/gtest-src/include") set(GTEST_BOTH_LIBRARIES gtest) - add_dependencies(dummy_test gtest) - add_dependencies(expression_test gtest) - add_dependencies(clamped_arithmetic_test gtest) - add_dependencies(test_age_formatting gtest) - add_dependencies(password_hash_test gtest) - add_dependencies(playmat_resolver_test gtest) - add_dependencies(deck_hash_performance_test gtest) - add_dependencies(server_card_counter_test gtest) - add_dependencies(server_counter_test gtest) - add_dependencies(server_rate_limiter_test gtest) - add_dependencies(server_developer_role_test gtest) - add_dependencies(server_game_join_test gtest) - add_dependencies(warning_categories_test gtest) - if(TARGET translation_loader_test) - add_dependencies(translation_loader_test gtest) - endif() - add_dependencies(report_categories_test gtest) - add_dependencies(lag_monitor_test gtest) - add_dependencies(latency_tracker_test gtest) - add_dependencies(metrics_registry_test gtest) - add_dependencies(loader_local_matching_test gtest) - add_dependencies(single_instance_manager_test gtest) endif() +# Directory-scoped on purpose: the test subdirectories below add targets that include the +# fetched gtest headers and do not repeat this path themselves. include_directories(${GTEST_INCLUDE_DIRS}) -target_link_libraries(dummy_test Threads::Threads ${GTEST_BOTH_LIBRARIES}) -target_link_libraries(expression_test libcockatrice_utility Threads::Threads ${GTEST_BOTH_LIBRARIES} ${TEST_QT_MODULES}) -target_link_libraries( - clamped_arithmetic_test libcockatrice_utility Threads::Threads ${GTEST_BOTH_LIBRARIES} ${TEST_QT_MODULES} -) -target_link_libraries( - test_age_formatting libcockatrice_utility Threads::Threads ${GTEST_BOTH_LIBRARIES} ${TEST_QT_MODULES} -) -target_link_libraries( - password_hash_test libcockatrice_utility Threads::Threads ${GTEST_BOTH_LIBRARIES} ${TEST_QT_MODULES} -) -target_link_libraries( - playmat_resolver_test libcockatrice_deck_list libcockatrice_utility Threads::Threads ${GTEST_BOTH_LIBRARIES} - ${TEST_QT_MODULES} -) -target_link_libraries( - deck_hash_performance_test libcockatrice_deck_list libcockatrice_utility Threads::Threads ${GTEST_BOTH_LIBRARIES} - ${TEST_QT_MODULES} -) -target_link_libraries( - server_card_counter_test libcockatrice_network Threads::Threads ${GTEST_BOTH_LIBRARIES} ${TEST_QT_MODULES} -) -target_link_libraries( - server_counter_test libcockatrice_network Threads::Threads ${GTEST_BOTH_LIBRARIES} ${TEST_QT_MODULES} -) -target_link_libraries( - server_rate_limiter_test libcockatrice_utility Threads::Threads ${GTEST_BOTH_LIBRARIES} ${TEST_QT_MODULES} -) -target_link_libraries( - server_developer_role_test libcockatrice_network libcockatrice_rng Threads::Threads ${GTEST_BOTH_LIBRARIES} - ${TEST_QT_MODULES} -) -target_link_libraries( - server_game_join_test libcockatrice_network_server_remote libcockatrice_rng Threads::Threads ${GTEST_BOTH_LIBRARIES} - ${TEST_QT_MODULES} -) -target_link_libraries( - warning_categories_test libcockatrice_utility Threads::Threads ${GTEST_BOTH_LIBRARIES} ${TEST_QT_MODULES} -) -if(TARGET translation_loader_test) + +# --- Test registration ---------------------------------------------------------- +# +# Every test target needs the same four steps: build the executable, depend on gtest when it +# was fetched from source, link the shared test libraries, and hand the cases to CTest. The +# `if(NOT GTEST_FOUND)` branch is the easy one to forget — omit it and the link fails with +# undefined gtest symbols — so it lives here once instead of being repeated per test. +# +# This also replaces `add_test(NAME x COMMAND x)`. Naming the binary as a single CTest entry +# hides which case failed and makes `ctest -R Suite.Case` impossible; discovery exposes each +# TEST() as its own CTest entry instead. +# +# Labels: `ci` is applied to every registered test and marks the default CI run, so +# `ctest -LE bench` is the fast hermetic set. Add `gui` for a test that constructs a +# QApplication (none do today — CI has no display), `server` for servatrice-facing tests +# so `ctest -L server` works, `bench` for the slow suites. +# +# TIMEOUT is bounded per test because CTest's implicit default is 1500s: one hung socket wait +# would otherwise stall CI for 25 minutes. +# +# EXTRA_LIBS is appended after the shared libraries so a caller adding a static archive (zlib, +# lzma) keeps it last, which is where the linker needs it. + +function(cockatrice_add_test) + cmake_parse_arguments(PARSE_ARGV 0 ARG "MANUAL" "NAME" "SOURCES;LIBS;LABELS;DEFINITIONS;INCLUDE_DIRS;EXTRA_LIBS") + + if(NOT ARG_NAME OR NOT ARG_SOURCES) + message(FATAL_ERROR "cockatrice_add_test requires at least NAME and SOURCES") + endif() + + add_executable(${ARG_NAME} ${ARG_SOURCES}) + + if(ARG_INCLUDE_DIRS) + target_include_directories(${ARG_NAME} PRIVATE ${ARG_INCLUDE_DIRS}) + endif() + + if(ARG_DEFINITIONS) + target_compile_definitions(${ARG_NAME} PRIVATE ${ARG_DEFINITIONS}) + endif() + target_link_libraries( - translation_loader_test libcockatrice_utility Threads::Threads ${GTEST_BOTH_LIBRARIES} ${TEST_QT_MODULES} + ${ARG_NAME} ${ARG_LIBS} Threads::Threads ${GTEST_BOTH_LIBRARIES} ${TEST_QT_MODULES} ${ARG_EXTRA_LIBS} + ) + + # Only needed when gtest was downloaded and add_subdirectory'd above. An imported gtest + # target already carries its own dependency, so this must stay conditional. + if(NOT GTEST_FOUND) + add_dependencies(${ARG_NAME} gtest) + endif() + + # MANUAL targets are built but deliberately kept out of ctest: benchmarks that need a card + # database, hit the network, or measure RAM. Leaving them unregistered keeps CI hermetic + # and fast. They still link gtest so they can use TEST() without a second code path. + if(ARG_MANUAL) + return() + endif() + + if(NOT ARG_LABELS) + set(ARG_LABELS ci) + else() + list(APPEND ARG_LABELS ci) + endif() + + gtest_discover_tests( + ${ARG_NAME} DISCOVERY_MODE POST_BUILD + PROPERTIES LABELS "${ARG_LABELS}" + TIMEOUT 60 + ) +endfunction() + +# Same wiring for targets that are built but deliberately kept out of ctest: benchmarks that +# need a card database, hit the network, or measure RAM. A separate name rather than a MANUAL +# flag spelled out at each call site, so "this is not in the CI suite" is visible in the CMake +# file. Note the unquoted expansions: an unset multi-value keyword expands to zero arguments, +# which is what lets this forward a caller's keywords verbatim without tripping the FATAL_ERROR +# guard above on an empty list. +function(cockatrice_add_manual_test) + cmake_parse_arguments(PARSE_ARGV 0 ARG "" "NAME" "SOURCES;LIBS;DEFINITIONS;INCLUDE_DIRS;EXTRA_LIBS") + + cockatrice_add_test( + NAME + ${ARG_NAME} + SOURCES + ${ARG_SOURCES} + LIBS + ${ARG_LIBS} + DEFINITIONS + ${ARG_DEFINITIONS} + INCLUDE_DIRS + ${ARG_INCLUDE_DIRS} + EXTRA_LIBS + ${ARG_EXTRA_LIBS} + MANUAL + ) +endfunction() + +# --- Unit tests ------------------------------------------------------------------ + +cockatrice_add_test(NAME expression_test SOURCES expression_test.cpp LIBS libcockatrice_utility) +cockatrice_add_test(NAME clamped_arithmetic_test SOURCES clamped_arithmetic_test.cpp LIBS libcockatrice_utility) +cockatrice_add_test(NAME test_age_formatting SOURCES test_age_formatting.cpp LIBS libcockatrice_utility) +cockatrice_add_test(NAME password_hash_test SOURCES password_hash_test.cpp LIBS libcockatrice_utility) +cockatrice_add_test(NAME report_categories_test SOURCES report_categories_test.cpp LIBS libcockatrice_utility) +cockatrice_add_test(NAME warning_categories_test SOURCES warning_categories_test.cpp LIBS libcockatrice_utility) +cockatrice_add_test( + NAME + playmat_resolver_test + SOURCES + playmat_resolver_test.cpp + LIBS + libcockatrice_deck_list + libcockatrice_utility +) +cockatrice_add_test( + NAME + server_rate_limiter_test + SOURCES + server_rate_limiter_test.cpp + LIBS + libcockatrice_utility + LABELS + server +) +cockatrice_add_test( + NAME + server_card_counter_test + SOURCES + server_card_counter_test.cpp + LIBS + libcockatrice_network + LABELS + server +) +cockatrice_add_test( + NAME + server_counter_test + SOURCES + server_counter_test.cpp + LIBS + libcockatrice_network + LABELS + server +) +cockatrice_add_test( + NAME + server_developer_role_test + SOURCES + server_developer_role_test.cpp + LIBS + libcockatrice_network + libcockatrice_rng + LABELS + server +) +cockatrice_add_test( + NAME + server_game_join_test + SOURCES + server_game_join_test.cpp + LIBS + libcockatrice_network_server_remote + libcockatrice_rng + LABELS + server +) +cockatrice_add_test( + NAME + latency_tracker_test + SOURCES + latency_tracker_test.cpp + LIBS + libcockatrice_network + LABELS + server +) +cockatrice_add_test( + NAME + lag_monitor_test + SOURCES + ${CMAKE_SOURCE_DIR}/cockatrice/src/client/lag_monitor.cpp + lag_monitor_test.cpp + INCLUDE_DIRS + ${CMAKE_SOURCE_DIR}/cockatrice/src +) +cockatrice_add_test( + NAME + metrics_registry_test + SOURCES + ${CMAKE_SOURCE_DIR}/servatrice/src/metrics_registry.cpp + metrics_registry_test.cpp + INCLUDE_DIRS + ${CMAKE_SOURCE_DIR}/servatrice/src + LABELS + server +) +cockatrice_add_test( + NAME + loader_local_matching_test + SOURCES + ${CMAKE_SOURCE_DIR}/cockatrice/src/interface/card_picture_loader/card_picture_loader_local.cpp + ${CMAKE_SOURCE_DIR}/cockatrice/src/client/settings/cache_settings.cpp + ${CMAKE_SOURCE_DIR}/cockatrice/src/client/settings/card_counter_settings.cpp + ${CMAKE_SOURCE_DIR}/cockatrice/src/client/settings/shortcuts_settings.cpp + ${CMAKE_SOURCE_DIR}/cockatrice/src/client/network/update/client/release_channel.cpp + ${VERSION_STRING_CPP} + loader_local_matching_test.cpp + LIBS + libcockatrice_settings + INCLUDE_DIRS + ${CMAKE_SOURCE_DIR}/cockatrice/src +) +cockatrice_add_test( + NAME + deck_hash_performance_test + SOURCES + deck_hash_performance_test.cpp + LIBS + libcockatrice_deck_list + libcockatrice_utility + LABELS + bench +) + +# The translation loader test compiles a .qm fixture, which needs lrelease from Qt Linguist. +if(TARGET Qt6::lrelease) + set(TRANSLATION_LOADER_TEST_QM "${CMAKE_CURRENT_BINARY_DIR}/translation_loader_test_de.qm") + add_custom_command( + OUTPUT "${TRANSLATION_LOADER_TEST_QM}" + COMMAND Qt6::lrelease "${CMAKE_CURRENT_SOURCE_DIR}/translation_loader_test.ts" -qm "${TRANSLATION_LOADER_TEST_QM}" + DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/translation_loader_test.ts" + COMMENT "Compiling translation_loader_test.ts" + ) + add_custom_target(translation_loader_test_qm DEPENDS "${TRANSLATION_LOADER_TEST_QM}") + + cockatrice_add_test( + NAME + translation_loader_test + SOURCES + translation_loader_test.cpp + LIBS + libcockatrice_utility + DEFINITIONS + TRANSLATION_LOADER_TEST_DIR="${CMAKE_CURRENT_BINARY_DIR}" + ) + add_dependencies(translation_loader_test translation_loader_test_qm) + + # A multi-config generator (MSBuild, Xcode) puts the executable in a per-config subdirectory while + # the .qm stays in the current binary directory, so copy the fixture next to the binary: that is the + # layout ABuildTreeFindsTheTranslationsNextToTheExecutable is about, and the only one it finds on + # those generators. + add_custom_command( + TARGET translation_loader_test + POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_if_different "${TRANSLATION_LOADER_TEST_QM}" + "$/" + VERBATIM ) endif() -target_link_libraries( - report_categories_test libcockatrice_utility Threads::Threads ${GTEST_BOTH_LIBRARIES} ${TEST_QT_MODULES} -) -target_link_libraries(lag_monitor_test Threads::Threads ${GTEST_BOTH_LIBRARIES} ${TEST_QT_MODULES}) -target_link_libraries( - latency_tracker_test libcockatrice_network Threads::Threads ${GTEST_BOTH_LIBRARIES} ${TEST_QT_MODULES} -) -target_include_directories(metrics_registry_test PRIVATE ${CMAKE_SOURCE_DIR}/servatrice/src) -target_link_libraries(metrics_registry_test ${TEST_QT_MODULES} Threads::Threads ${GTEST_BOTH_LIBRARIES}) -target_link_libraries( - loader_local_matching_test libcockatrice_settings Threads::Threads ${GTEST_BOTH_LIBRARIES} ${TEST_QT_MODULES} -) +# Guard must match the condition for src/single_instance_manager.cpp in cockatrice/CMakeLists.txt. if(WITH_CLIENT) - target_link_libraries(single_instance_manager_test Threads::Threads ${GTEST_BOTH_LIBRARIES} ${TEST_QT_MODULES}) + cockatrice_add_test( + NAME + single_instance_manager_test + SOURCES + ${CMAKE_SOURCE_DIR}/cockatrice/src/single_instance_manager.cpp + single_instance_manager_test.cpp + INCLUDE_DIRS + ${CMAKE_SOURCE_DIR}/cockatrice/src + ) endif() add_subdirectory(card_zone_algorithms) diff --git a/tests/card_zone_algorithms/CMakeLists.txt b/tests/card_zone_algorithms/CMakeLists.txt index e03d8f77d..945f8a0ed 100644 --- a/tests/card_zone_algorithms/CMakeLists.txt +++ b/tests/card_zone_algorithms/CMakeLists.txt @@ -1,15 +1,4 @@ -add_executable(card_zone_algorithms_test card_zone_algorithms_test.cpp) - -target_include_directories(card_zone_algorithms_test PRIVATE ${CMAKE_SOURCE_DIR}/cockatrice/src/game/zones) - -target_link_libraries( - card_zone_algorithms_test - PRIVATE Threads::Threads - PRIVATE ${GTEST_BOTH_LIBRARIES} +cockatrice_add_test( + NAME card_zone_algorithms_test SOURCES card_zone_algorithms_test.cpp INCLUDE_DIRS + ${CMAKE_SOURCE_DIR}/cockatrice/src/game/zones ) - -add_test(NAME card_zone_algorithms_test COMMAND card_zone_algorithms_test) - -if(NOT GTEST_FOUND) - add_dependencies(card_zone_algorithms_test gtest) -endif() diff --git a/tests/carddatabase/CMakeLists.txt b/tests/carddatabase/CMakeLists.txt index 811cebc1d..22171a9e8 100644 --- a/tests/carddatabase/CMakeLists.txt +++ b/tests/carddatabase/CMakeLists.txt @@ -9,61 +9,46 @@ add_definitions("-DCARDDB_DATADIR=\"${CMAKE_CURRENT_SOURCE_DIR}/data/\"") # ------------------------ # Card Database Test # ------------------------ -add_executable(carddatabase_test ${MOCKS_SOURCES} ${VERSION_STRING_CPP} carddatabase_test.cpp mocks.cpp) - -target_link_libraries( +cockatrice_add_test( + NAME carddatabase_test - PRIVATE libcockatrice_card - PRIVATE Threads::Threads - PRIVATE ${GTEST_BOTH_LIBRARIES} - PRIVATE ${TEST_QT_MODULES} + SOURCES + ${VERSION_STRING_CPP} + carddatabase_test.cpp + mocks.cpp + LIBS + libcockatrice_card ) -add_test(NAME carddatabase_test COMMAND carddatabase_test) - -# ------------------------ -# Load Benchmark (manual, not run in CI) -# ------------------------ -add_executable(load_benchmark ${MOCKS_SOURCES} ${VERSION_STRING_CPP} load_benchmark.cpp mocks.cpp) - -target_link_libraries( - load_benchmark - PRIVATE libcockatrice_card - PRIVATE libcockatrice_models - PRIVATE Threads::Threads - PRIVATE ${GTEST_BOTH_LIBRARIES} - PRIVATE ${TEST_QT_MODULES} -) - -if(NOT GTEST_FOUND) - add_dependencies(load_benchmark gtest) -endif() - # ------------------------ # Filter String Test # (guard must match the condition for libcockatrice_filters in the root CMakeLists.txt) # ------------------------ if(WITH_ORACLE OR WITH_CLIENT) - add_executable(filter_string_test ${MOCKS_SOURCES} ${VERSION_STRING_CPP} filter_string_test.cpp mocks.cpp) - - target_link_libraries( + cockatrice_add_test( + NAME filter_string_test - PRIVATE libcockatrice_filters - PRIVATE Threads::Threads - PRIVATE ${GTEST_BOTH_LIBRARIES} - PRIVATE ${TEST_QT_MODULES} + SOURCES + ${VERSION_STRING_CPP} + filter_string_test.cpp + mocks.cpp + LIBS + libcockatrice_filters ) - - add_test(NAME filter_string_test COMMAND filter_string_test) - - if(NOT GTEST_FOUND) - add_dependencies(filter_string_test gtest) - endif() endif() # ------------------------ -# Dependencies on gtest +# Load Benchmark (manual, not run in CI) # ------------------------ -if(NOT GTEST_FOUND) - add_dependencies(carddatabase_test gtest) -endif() +cockatrice_add_manual_test( + NAME + load_benchmark + SOURCES + ${VERSION_STRING_CPP} + load_benchmark.cpp + mocks.cpp + LIBS + libcockatrice_card + libcockatrice_models + MANUAL +) diff --git a/tests/deck_list_model/CMakeLists.txt b/tests/deck_list_model/CMakeLists.txt index e3096c559..cd7d693f3 100644 --- a/tests/deck_list_model/CMakeLists.txt +++ b/tests/deck_list_model/CMakeLists.txt @@ -1,33 +1,23 @@ -add_executable(deck_list_model_custom_zones_test ${VERSION_STRING_CPP} deck_list_model_custom_zones_test.cpp) - -if(NOT GTEST_FOUND) - add_dependencies(deck_list_model_custom_zones_test gtest) -endif() - -target_link_libraries( +cockatrice_add_test( + NAME deck_list_model_custom_zones_test + SOURCES + ${VERSION_STRING_CPP} + deck_list_model_custom_zones_test.cpp + LIBS 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( +cockatrice_add_test( + NAME deck_list_model_zone_integration_test + SOURCES + ${VERSION_STRING_CPP} + deck_list_model_zone_integration_test.cpp + LIBS 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) diff --git a/tests/deck_list_zones/CMakeLists.txt b/tests/deck_list_zones/CMakeLists.txt index 0710be94d..7af8fd187 100644 --- a/tests/deck_list_zones/CMakeLists.txt +++ b/tests/deck_list_zones/CMakeLists.txt @@ -1,10 +1 @@ -add_executable(deck_list_zones_test deck_list_zones_test.cpp) - -if(NOT GTEST_FOUND) - add_dependencies(deck_list_zones_test gtest) -endif() - -target_link_libraries( - deck_list_zones_test libcockatrice_deck_list Threads::Threads ${GTEST_BOTH_LIBRARIES} ${TEST_QT_MODULES} -) -add_test(NAME deck_list_zones_test COMMAND deck_list_zones_test) +cockatrice_add_test(NAME deck_list_zones_test SOURCES deck_list_zones_test.cpp LIBS libcockatrice_deck_list) diff --git a/tests/dummy_test.cpp b/tests/dummy_test.cpp deleted file mode 100644 index 31a01bcff..000000000 --- a/tests/dummy_test.cpp +++ /dev/null @@ -1,19 +0,0 @@ -#include "gtest/gtest.h" - -namespace -{ -class FooTest : public ::testing::Test -{ -}; - -TEST(DummyTest, Works) -{ - ASSERT_EQ(1, 1) << "One is not equal to one"; -} -} // namespace - -int main(int argc, char **argv) -{ - ::testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); -} \ No newline at end of file diff --git a/tests/loading_from_clipboard/CMakeLists.txt b/tests/loading_from_clipboard/CMakeLists.txt index 719d62f45..88711e457 100644 --- a/tests/loading_from_clipboard/CMakeLists.txt +++ b/tests/loading_from_clipboard/CMakeLists.txt @@ -1,12 +1,13 @@ add_definitions("-DCARDDB_DATADIR=\"${CMAKE_CURRENT_SOURCE_DIR}/data/\"") -add_executable(loading_from_clipboard_test ${VERSION_STRING_CPP} clipboard_testing.cpp loading_from_clipboard_test.cpp) -if(NOT GTEST_FOUND) - add_dependencies(loading_from_clipboard_test gtest) -endif() - -target_link_libraries( - loading_from_clipboard_test libcockatrice_deck_list libcockatrice_card Threads::Threads ${GTEST_BOTH_LIBRARIES} - ${TEST_QT_MODULES} +cockatrice_add_test( + NAME + loading_from_clipboard_test + SOURCES + ${VERSION_STRING_CPP} + clipboard_testing.cpp + loading_from_clipboard_test.cpp + LIBS + libcockatrice_deck_list + libcockatrice_card ) -add_test(NAME loading_from_clipboard_test COMMAND loading_from_clipboard_test) diff --git a/tests/movecard_tests/CMakeLists.txt b/tests/movecard_tests/CMakeLists.txt index 769047148..68d8fc84c 100755 --- a/tests/movecard_tests/CMakeLists.txt +++ b/tests/movecard_tests/CMakeLists.txt @@ -1,16 +1,11 @@ -add_executable(reverse_card_move_test reverse_card_move_test.cpp) - -if(NOT GTEST_FOUND) - add_dependencies(reverse_card_move_test gtest) -endif() - -target_link_libraries( +cockatrice_add_test( + NAME reverse_card_move_test - PRIVATE libcockatrice_network_server_remote - PRIVATE libcockatrice_rng - PRIVATE Threads::Threads - PRIVATE ${GTEST_BOTH_LIBRARIES} - PRIVATE ${TEST_QT_MODULES} + SOURCES + reverse_card_move_test.cpp + LIBS + libcockatrice_network_server_remote + libcockatrice_rng + LABELS + server ) - -add_test(NAME reverse_card_move_test COMMAND reverse_card_move_test) diff --git a/tests/oracle/CMakeLists.txt b/tests/oracle/CMakeLists.txt index 9bc5ee5be..b4e376c22 100644 --- a/tests/oracle/CMakeLists.txt +++ b/tests/oracle/CMakeLists.txt @@ -1,33 +1,25 @@ -add_executable(parse_cipt_test ../../oracle/src/parsehelpers.cpp parse_cipt_test.cpp) - -if(NOT GTEST_FOUND) - add_dependencies(parse_cipt_test gtest) -endif() - -target_link_libraries(parse_cipt_test Threads::Threads ${GTEST_BOTH_LIBRARIES} ${TEST_QT_MODULES}) - -add_test(NAME parse_cipt_test COMMAND parse_cipt_test) +cockatrice_add_test(NAME parse_cipt_test SOURCES ../../oracle/src/parsehelpers.cpp parse_cipt_test.cpp) # Oracle importer unit tests -add_executable( - oracle_importer_test ${VERSION_STRING_CPP} ../../oracle/src/oracleimporter.cpp ../../oracle/src/parsehelpers.cpp - ../../oracle/src/raw_json_scanner.cpp oracle_importer_test.cpp +cockatrice_add_test( + NAME + oracle_importer_test + SOURCES + ${VERSION_STRING_CPP} + ../../oracle/src/oracleimporter.cpp + ../../oracle/src/parsehelpers.cpp + ../../oracle/src/raw_json_scanner.cpp + oracle_importer_test.cpp + LIBS + libcockatrice_card + libcockatrice_interfaces ) -if(NOT GTEST_FOUND) - add_dependencies(oracle_importer_test gtest) -endif() - -target_link_libraries( - oracle_importer_test libcockatrice_card libcockatrice_interfaces Threads::Threads ${GTEST_BOTH_LIBRARIES} - ${TEST_QT_MODULES} -) - -add_test(NAME oracle_importer_test COMMAND oracle_importer_test) - # Oracle importer benchmark tests (manual, not run in CI, incl. RAM benchmark) # Optional compression libs, mirrored from oracle/CMakeLists.txt, so the benchmark # can download and decompress whatever AllPrintings format the default URL selects. +# Declared after the unit tests above on purpose: add_definitions() only reaches +# targets created after it, so HAS_ZLIB/HAS_LZMA stay confined to the benchmark. find_package(ZLIB) if(ZLIB_FOUND) add_definitions("-DHAS_ZLIB") @@ -48,22 +40,20 @@ else() message(STATUS "Oracle tests: LibLZMA not found; xz download benchmark disabled") endif() -add_executable( - oracle_importer_benchmark_test - ${VERSION_STRING_CPP} ../../oracle/src/oracleimporter.cpp ../../oracle/src/parsehelpers.cpp - ../../oracle/src/raw_json_scanner.cpp oracle_importer_benchmark_test.cpp ${_ORACLE_BENCH_EXTRA_SOURCES} -) - -if(NOT GTEST_FOUND) - add_dependencies(oracle_importer_benchmark_test gtest) -endif() - -target_link_libraries( +cockatrice_add_manual_test( + NAME oracle_importer_benchmark_test + SOURCES + ${VERSION_STRING_CPP} + ../../oracle/src/oracleimporter.cpp + ../../oracle/src/parsehelpers.cpp + ../../oracle/src/raw_json_scanner.cpp + oracle_importer_benchmark_test.cpp + ${_ORACLE_BENCH_EXTRA_SOURCES} + LIBS libcockatrice_card libcockatrice_interfaces - Threads::Threads - ${GTEST_BOTH_LIBRARIES} - ${TEST_QT_MODULES} + EXTRA_LIBS ${_ORACLE_BENCH_EXTRA_LIBRARIES} + MANUAL ) diff --git a/tests/picture_loader_benchmark/CMakeLists.txt b/tests/picture_loader_benchmark/CMakeLists.txt index a3b75fe88..0684f58f4 100644 --- a/tests/picture_loader_benchmark/CMakeLists.txt +++ b/tests/picture_loader_benchmark/CMakeLists.txt @@ -1,8 +1,10 @@ -# Manual benchmark hitting the real card image hosts. Not registered with -# add_test(): it requires a cards.xml, touches the network for minutes at a -# time, and needs network access. Build it explicitly and run by hand. -add_executable( +# Manual benchmark hitting the real card image hosts. Not registered with CTest: it requires a +# cards.xml, touches the network for minutes at a time, and needs network access. Build it +# explicitly and run by hand. +cockatrice_add_manual_test( + NAME picture_loader_benchmark_test + SOURCES ${VERSION_STRING_CPP} ../../cockatrice/src/interface/card_picture_loader/card_picture_loader_local.cpp ../../cockatrice/src/interface/card_picture_loader/card_picture_to_load.cpp @@ -11,16 +13,12 @@ add_executable( ../../cockatrice/src/client/settings/cache_settings.h picture_loader_benchmark.cpp settings_cache_mock.cpp -) - -target_include_directories(picture_loader_benchmark_test PRIVATE ${CMAKE_SOURCE_DIR}/cockatrice/src) - -target_link_libraries( - picture_loader_benchmark_test + LIBS libcockatrice_card libcockatrice_settings libcockatrice_interfaces libcockatrice_utility - Threads::Threads - ${TEST_QT_MODULES} + INCLUDE_DIRS + ${CMAKE_SOURCE_DIR}/cockatrice/src + MANUAL ) diff --git a/tests/settings/CMakeLists.txt b/tests/settings/CMakeLists.txt index 7ee32a645..98bed1f4b 100644 --- a/tests/settings/CMakeLists.txt +++ b/tests/settings/CMakeLists.txt @@ -1,26 +1,14 @@ -add_executable(settings_manager_test settings_manager_test.cpp) -add_executable(settings_defaults_test settings_defaults_test.cpp) -add_executable(settings_migration_test settings_migration_test.cpp) +cockatrice_add_test(NAME settings_manager_test SOURCES settings_manager_test.cpp LIBS libcockatrice_settings) -target_link_libraries( - settings_manager_test libcockatrice_settings Threads::Threads ${GTEST_BOTH_LIBRARIES} ${TEST_QT_MODULES} +cockatrice_add_test( + NAME + settings_defaults_test + SOURCES + settings_defaults_test.cpp + LIBS + libcockatrice_settings + DEFINITIONS + SETTINGS_UNIT_TEST ) -target_link_libraries( - settings_defaults_test libcockatrice_settings Threads::Threads ${GTEST_BOTH_LIBRARIES} ${TEST_QT_MODULES} -) -target_compile_definitions(settings_defaults_test PRIVATE SETTINGS_UNIT_TEST) - -target_link_libraries( - settings_migration_test libcockatrice_settings Threads::Threads ${GTEST_BOTH_LIBRARIES} ${TEST_QT_MODULES} -) - -add_test(NAME settings_manager_test COMMAND settings_manager_test) -add_test(NAME settings_defaults_test COMMAND settings_defaults_test) -add_test(NAME settings_migration_test COMMAND settings_migration_test) - -if(NOT GTEST_FOUND) - add_dependencies(settings_manager_test gtest) - add_dependencies(settings_defaults_test gtest) - add_dependencies(settings_migration_test gtest) -endif() +cockatrice_add_test(NAME settings_migration_test SOURCES settings_migration_test.cpp LIBS libcockatrice_settings) diff --git a/tests/theme_migration/CMakeLists.txt b/tests/theme_migration/CMakeLists.txt index ac202210e..93493ee5f 100644 --- a/tests/theme_migration/CMakeLists.txt +++ b/tests/theme_migration/CMakeLists.txt @@ -1,5 +1,7 @@ -add_executable( +cockatrice_add_test( + NAME theme_migration_test + SOURCES ${CMAKE_SOURCE_DIR}/cockatrice/src/interface/theme_manager.cpp ${CMAKE_SOURCE_DIR}/cockatrice/src/interface/theme_config.cpp ${CMAKE_SOURCE_DIR}/cockatrice/src/interface/pixel_map_generator.cpp @@ -9,22 +11,11 @@ add_executable( ${CMAKE_SOURCE_DIR}/cockatrice/src/client/network/update/client/release_channel.cpp ${VERSION_STRING_CPP} theme_migration_test.cpp -) -target_include_directories(theme_migration_test PRIVATE ${CMAKE_SOURCE_DIR}/cockatrice/src) - -target_link_libraries( - theme_migration_test + LIBS libcockatrice_settings libcockatrice_network libcockatrice_network_server_remote libcockatrice_protocol - Threads::Threads - ${GTEST_BOTH_LIBRARIES} - ${TEST_QT_MODULES} + INCLUDE_DIRS + ${CMAKE_SOURCE_DIR}/cockatrice/src ) - -add_test(NAME theme_migration_test COMMAND theme_migration_test) - -if(NOT GTEST_FOUND) - add_dependencies(theme_migration_test gtest) -endif() From fbfd85c8e704bd441759f618d2ecfdd3f89074c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20Br=C3=BCbach?= Date: Mon, 5 Oct 2026 08:20:19 +0200 Subject: [PATCH 02/28] [Tests] Make QtTest available to test targets QtTest was not among the modules test targets could link, so the Qt model and signal contracts had no way to be verified from a test: QAbstractItemModelTester and QSignalSpy both live there. Add Test to _TEST_NEEDED in cmake/FindQtRuntime.cmake. That is the single place the union of test-only Qt modules is declared, so this is the only file that needs to change to make the module reachable from every test target. Nothing uses it yet. This lands the capability ahead of the model-layer tests that need it, so those can be added as tests alone rather than as test plus build-system plumbing. --- cmake/FindQtRuntime.cmake | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/cmake/FindQtRuntime.cmake b/cmake/FindQtRuntime.cmake index 971c9094d..9c8483115 100644 --- a/cmake/FindQtRuntime.cmake +++ b/cmake/FindQtRuntime.cmake @@ -33,7 +33,9 @@ endif() if(TEST) # Union of Qt modules required across all test targets (independent of application targets). # When adding a new test that needs additional Qt modules, add them here rather than in the test's CMakeLists.txt. - set(_TEST_NEEDED Concurrent Network Svg Widgets) + # Test is QtTest: it brings QAbstractItemModelTester and QSignalSpy, which are how the Qt model + # and signal contracts get verified without standing up a GUI. + set(_TEST_NEEDED Concurrent Network Svg Widgets Test) endif() set(REQUIRED_QT_COMPONENTS ${REQUIRED_QT_COMPONENTS} ${_SERVATRICE_NEEDED} ${_COCKATRICE_NEEDED} ${_ORACLE_NEEDED} From 5ff88c1cf32e5cdea39c1ee7a6b5b4b95bef13ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20Br=C3=BCbach?= Date: Mon, 5 Oct 2026 08:23:50 +0200 Subject: [PATCH 03/28] [Tests] Correct the note on the oracle test compression defines add_definitions() populates the directory's COMPILE_DEFINITIONS property, which is consumed at generate time, so it reaches every target in the directory no matter where it is called relative to add_executable(). The previous note claimed the flags stayed confined to the benchmark because the find_package block came after it; oracle_importer_test, created above that block, carries both defines too. Verified harmless rather than a live bug: HAS_ZLIB and HAS_LZMA gate code only in oracle/src/pages.cpp and oracle/src/pagetemplates.cpp, and no test target compiles either. The ordering and the leaked defines are both pre-existing, so this only corrects the explanation. --- tests/oracle/CMakeLists.txt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/oracle/CMakeLists.txt b/tests/oracle/CMakeLists.txt index b4e376c22..bbd0f932a 100644 --- a/tests/oracle/CMakeLists.txt +++ b/tests/oracle/CMakeLists.txt @@ -18,8 +18,9 @@ cockatrice_add_test( # Oracle importer benchmark tests (manual, not run in CI, incl. RAM benchmark) # Optional compression libs, mirrored from oracle/CMakeLists.txt, so the benchmark # can download and decompress whatever AllPrintings format the default URL selects. -# Declared after the unit tests above on purpose: add_definitions() only reaches -# targets created after it, so HAS_ZLIB/HAS_LZMA stay confined to the benchmark. +# add_definitions() is directory-scoped and order-independent, so HAS_ZLIB/HAS_LZMA also +# reach the two unit tests above. That is harmless: those macros gate code only in +# oracle/src/pages.cpp and oracle/src/pagetemplates.cpp, which no test target compiles. find_package(ZLIB) if(ZLIB_FOUND) add_definitions("-DHAS_ZLIB") From 5aafeffe4c40dda1c2ceb005c06a078bf03b4864 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20Br=C3=BCbach?= Date: Mon, 5 Oct 2026 09:48:22 +0200 Subject: [PATCH 04/28] [Tests] Carry one CTest label per test instead of several gtest_discover_tests() can hand CTest exactly one label. GoogleTestAddTests.cmake accumulates its generated script with `foreach(arg ${ARGN})`, so a label list reaches the CTestTestfile as bare `LABELS ci server`, and CTest reads only the first value of a property and drops the rest without a word. The `ci` label that is appended to every registered test was therefore absent from every test that also asked for `server` or `bench`: `ctest -L ci` reported 400 of 469 cases, and `ctest --print-labels` never listed a second label anywhere in the build. Reduce each test to exactly one of `ci`, `server`, or `bench`, which is all the selections need. The three now partition the suite exactly, 400 + 64 + 5 = 469, and `ctest -LE bench` still means everything but benchmarks. A second label is now a configure-time FATAL_ERROR rather than a line that quietly means something else. Anything orthogonal to a test's kind belongs in a helper flag beside the label, so it composes with the group instead of competing for the single slot. Also raise DISCOVERY_TIMEOUT off GoogleTestAddTests' 5s default. A plain debug binary answers --gtest_list_tests in 0.04s, but that budget is thin once several binaries discover concurrently behind a -j build, and being over it fails at the *link* step with a bare "Process terminated due to timeout" that points nowhere near the cause. --- tests/CMakeLists.txt | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 0a9024191..62d3d4d4d 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -48,10 +48,19 @@ include_directories(${GTEST_INCLUDE_DIRS}) # hides which case failed and makes `ctest -R Suite.Case` impossible; discovery exposes each # TEST() as its own CTest entry instead. # -# Labels: `ci` is applied to every registered test and marks the default CI run, so -# `ctest -LE bench` is the fast hermetic set. Add `gui` for a test that constructs a -# QApplication (none do today — CI has no display), `server` for servatrice-facing tests -# so `ctest -L server` works, `bench` for the slow suites. +# Labels: exactly one per test, because gtest_discover_tests() cannot carry more than one. +# GoogleTestAddTests.cmake accumulates the generated script with `foreach(arg ${ARGN})`, so a +# label list serialises as bare `LABELS ci server` in the CTestTestfile, and CTest reads only +# the first value of a property and silently discards the rest. A label therefore classifies a +# test into exactly one group, and the three groups cover every selection worth making: +# +# ci the default hermetic set, so `ctest -LE bench` runs everything but benchmarks +# server servatrice-facing tests, so `ctest -L server` works +# bench the slow suites, kept out of the default run +# +# A second label is a configure-time FATAL_ERROR rather than a line CTest quietly reads as one. +# Anything orthogonal to a test's kind belongs in a helper flag beside the label, so it +# composes with the group instead of competing for the single slot. # # TIMEOUT is bounded per test because CTest's implicit default is 1500s: one hung socket wait # would otherwise stall CI for 25 minutes. @@ -93,14 +102,22 @@ function(cockatrice_add_test) return() endif() + # One label only, per the note above. Rejecting a second loudly beats emitting a + # CTestTestfile line that CTest will quietly read as one label. + list(LENGTH ARG_LABELS _label_count) + if(_label_count GREATER 1) + message(FATAL_ERROR "${ARG_NAME}: pass at most one label, got '${ARG_LABELS}'") + endif() if(NOT ARG_LABELS) set(ARG_LABELS ci) - else() - list(APPEND ARG_LABELS ci) endif() + # GoogleTestAddTests defaults DISCOVERY_TIMEOUT to 5s. A plain debug binary answers + # --gtest_list_tests in 0.04s, but that budget is thin once several binaries discover + # concurrently behind a -j build, and being over it fails at the *link* step with a bare + # "Process terminated due to timeout" that points nowhere near the cause. gtest_discover_tests( - ${ARG_NAME} DISCOVERY_MODE POST_BUILD + ${ARG_NAME} DISCOVERY_MODE POST_BUILD DISCOVERY_TIMEOUT 60 PROPERTIES LABELS "${ARG_LABELS}" TIMEOUT 60 ) From 976a4a9a7e5eb0fdea9a09bca1487f0f2cbb2b80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20Br=C3=BCbach?= Date: Mon, 5 Oct 2026 14:44:20 +0200 Subject: [PATCH 05/28] [Tests] Link gtest_main on the fetched-gtest path The downloaded-gtest branch set GTEST_BOTH_LIBRARIES to `gtest` alone, while FindGTest sets it to both halves. Every test target links that list rather than picking an entry point, so on this path nothing provides main() and any test source that does not define its own fails at link with `undefined reference to main` pointing at crt1.o, naming neither gtest nor the line responsible. That stayed latent while every test carried its own four-line main(). A test that omits it now fails, and the error points at the C runtime rather than at gtest, which is a long way from the cause. Restoring both halves makes the two paths agree and drops the boilerplate requirement on new test sources. The 18 sources that still define main() keep linking: gtest_main.cc defines nothing but main, so the linker leaves its object in the archive unused rather than reporting a duplicate. --- tests/CMakeLists.txt | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 62d3d4d4d..cacb04446 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -30,7 +30,11 @@ if(NOT GTEST_FOUND) target_include_directories(gtest INTERFACE "$") set(GTEST_INCLUDE_DIRS "${CMAKE_BINARY_DIR}/gtest-src/include") - set(GTEST_BOTH_LIBRARIES gtest) + # gtest_main is not optional here. FindGTest sets GTEST_BOTH_LIBRARIES to both halves, so this + # has to match it or the two paths disagree about what provides main(). A test source that + # defines its own main() gets away with the omission; one that does not fails at link with + # `undefined reference to main` pointing at crt1.o, which names neither gtest nor this line. + set(GTEST_BOTH_LIBRARIES gtest gtest_main) endif() # Directory-scoped on purpose: the test subdirectories below add targets that include the @@ -92,7 +96,7 @@ function(cockatrice_add_test) # Only needed when gtest was downloaded and add_subdirectory'd above. An imported gtest # target already carries its own dependency, so this must stay conditional. if(NOT GTEST_FOUND) - add_dependencies(${ARG_NAME} gtest) + add_dependencies(${ARG_NAME} gtest gtest_main) endif() # MANUAL targets are built but deliberately kept out of ctest: benchmarks that need a card From 08a608992d712e4a973a0f28a44420b13ce36a09 Mon Sep 17 00:00:00 2001 From: tooomm Date: Tue, 6 Oct 2026 07:23:41 +0200 Subject: [PATCH 06/28] [Docs] Cleanup Doxygen files (#7361) * Table layout * table layout * table layout * Delete doc/doxygen/extra-pages/developer_documentation/network/game_event_handler.md * Delete doc/doxygen/extra-pages/developer_documentation/network/player_event_handler.md * use default value --- Doxyfile | 2 +- .../network/client/game_event_handler.md | 14 +- .../network/game_event_handler.md | 170 --------------- .../network/player_event_handler.md | 199 ------------------ .../card_pictures/custom_card_pictures.md | 22 +- 5 files changed, 19 insertions(+), 388 deletions(-) delete mode 100644 doc/doxygen/extra-pages/developer_documentation/network/game_event_handler.md delete mode 100644 doc/doxygen/extra-pages/developer_documentation/network/player_event_handler.md diff --git a/Doxyfile b/Doxyfile index d6f0af2d2..b722f779f 100644 --- a/Doxyfile +++ b/Doxyfile @@ -2667,7 +2667,7 @@ DOT_NUM_THREADS = 0 # Minimum value: 1, maximum value: 1000, default value: 50. # This tag requires that the tag HAVE_DOT is set to YES. -DOT_BATCH_SIZE = 500 +DOT_BATCH_SIZE = 50 # DOT_COMMON_ATTR is common attributes for nodes, edges and labels of # subgraphs. When you want a differently looking font in the dot files that diff --git a/doc/doxygen/extra-pages/developer_documentation/network/client/game_event_handler.md b/doc/doxygen/extra-pages/developer_documentation/network/client/game_event_handler.md index fbb298d3a..051823c6c 100644 --- a/doc/doxygen/extra-pages/developer_documentation/network/client/game_event_handler.md +++ b/doc/doxygen/extra-pages/developer_documentation/network/client/game_event_handler.md @@ -90,13 +90,13 @@ This keeps the handler independent of concrete UI implementations. `GameEventHandler` and `PlayerEventHandler` work together but have distinct roles: -| GameEventHandler | PlayerEventHandler | -|------------------|--------------------| -| Global game state | Per-player state | -| Turn / phase flow | Zones and cards | -| Player join/leave | Player actions | -| Spectator events | Player-specific events | -| Chat dispatch | Card and zone updates | +| GameEventHandler | PlayerEventHandler | +| ----------------- | ---------------------- | +| Global game state | Per-player state | +| Turn / phase flow | Zones and cards | +| Player join/leave | Player actions | +| Spectator events | Player-specific events | +| Chat dispatch | Card and zone updates | When a server event is associated with a specific player, `GameEventHandler` routes it to the corresponding `PlayerEventHandler`. Events without a player diff --git a/doc/doxygen/extra-pages/developer_documentation/network/game_event_handler.md b/doc/doxygen/extra-pages/developer_documentation/network/game_event_handler.md deleted file mode 100644 index fbb298d3a..000000000 --- a/doc/doxygen/extra-pages/developer_documentation/network/game_event_handler.md +++ /dev/null @@ -1,170 +0,0 @@ -@page game_event_handler GameEventHandler - -## Overview - -`GameEventHandler` is the central coordinator for **game-wide commands and events**. -It acts as the bridge between the networking layer (protobuf messages received from -the server) and the local game model and UI. - -Unlike `PlayerEventHandler`, which is responsible for player-scoped state and zones, -`GameEventHandler` handles: - -- Global game flow (turns, phases, host changes) -- Player and spectator lifecycle events -- Chat and logging events -- Dispatching incoming events to the appropriate subsystem -- Sending locally initiated commands to the server - -In short, it is the **top-level event dispatcher** for an active game. - ---- - -## Responsibilities - -`GameEventHandler` has four primary responsibilities: - -### 1. Sending game-wide commands - -UI actions that affect the game as a whole (e.g. advancing the turn, changing phases, -sending chat messages) are translated into protobuf commands and sent to the server -via this class. - -Examples include: - -- Advancing or reversing the turn order -- Conceding or unconceding -- Changing the active phase -- Leaving the game -- Sending chat messages - -These commands are wrapped in `PendingCommand` instances so their lifecycle and -responses can be tracked. - ---- - -### 2. Processing incoming game events - -Incoming server messages arrive as a `GameEventContainer`. -`GameEventHandler` is responsible for: - -- Emitting lifecycle signals before and after processing -- Dispatching each event to the correct handler -- Forwarding player-scoped events to `PlayerEventHandler` instances -- Handling spectator-only and game-global events directly - -This design keeps networking concerns isolated from game logic and UI code. - ---- - -### 3. Managing global game state transitions - -Certain events affect the entire game state and require coordinated updates across -multiple subsystems. Examples include: - -- Full game state synchronization -- Active player or phase changes -- Game host changes -- Game closure -- Turn reversal - -`GameEventHandler` ensures these events are processed in a consistent order and -that all interested systems are notified via Qt signals. - ---- - -### 4. Emitting UI and logging signals - -Rather than directly manipulating UI widgets, `GameEventHandler` emits -high-level signals that are consumed by: - -- Game widgets -- Player and spectator lists -- Message and event logs -- Status indicators (ready state, deck selection, connection state) - -This keeps the handler independent of concrete UI implementations. - ---- - -## Relationship to PlayerEventHandler - -`GameEventHandler` and `PlayerEventHandler` work together but have distinct roles: - -| GameEventHandler | PlayerEventHandler | -|------------------|--------------------| -| Global game state | Per-player state | -| Turn / phase flow | Zones and cards | -| Player join/leave | Player actions | -| Spectator events | Player-specific events | -| Chat dispatch | Card and zone updates | - -When a server event is associated with a specific player, `GameEventHandler` -routes it to the corresponding `PlayerEventHandler`. Events without a player -context are handled directly. - ---- - -## Event Processing Flow - -A typical incoming event flow looks like this: - -1. `AbstractClient` receives a `GameEventContainer` -2. `GameEventHandler::processGameEventContainer()` is called -3. `containerProcessingStarted()` is emitted -4. Each event is: - - Handled directly **or** - - Forwarded to a `PlayerEventHandler` -5. Logging and UI signals are emitted as needed -6. `containerProcessingDone()` is emitted - -This structured flow makes it easy to: - -- Suppress UI updates during replays -- Handle reconnections cleanly -- Detect flood protection or error states - ---- - -## Command Lifecycle - -Outgoing commands follow a similar structured path: - -1. UI action triggers a `handle*()` method -2. A protobuf command is constructed -3. The command is wrapped in a `PendingCommand` -4. `sendGameCommand()` sends it to the server -5. `commandFinished()` receives the response -6. Errors or flood conditions are handled centrally - -This approach avoids duplicated error handling across UI code. - ---- - -## Design Goals - -`GameEventHandler` is designed to be: - -- **Centralized** – one entry point for all game-wide events -- **UI-agnostic** – communicates via signals, not widgets -- **Predictable** – well-defined event ordering and lifecycle -- **Composable** – works in concert with `PlayerEventHandler` -- **Testable** – logic is separated from rendering - ---- - -## Related Classes - -- @ref GameEventHandler -- @ref PlayerEventHandler -- `GameEventContainer` -- `PendingCommand` -- `AbstractClient` -- `AbstractGame` - ---- - -## See Also - -- @ref GameLogic -- @ref PlayerEventHandler -- @ref GameState diff --git a/doc/doxygen/extra-pages/developer_documentation/network/player_event_handler.md b/doc/doxygen/extra-pages/developer_documentation/network/player_event_handler.md deleted file mode 100644 index 6878758da..000000000 --- a/doc/doxygen/extra-pages/developer_documentation/network/player_event_handler.md +++ /dev/null @@ -1,199 +0,0 @@ -@page player_event_handler PlayerEventHandler - -## Overview - -`PlayerEventHandler` is responsible for applying **player-scoped game events** -to a single `Player` instance. These events modify the player’s board state, -zones, cards, counters, arrows, and associated UI and logging output. - -Each `PlayerEventHandler` instance is bound **1:1 to a Player** and is invoked -exclusively by @ref GameEventHandler after basic routing and validation of -incoming server events. - -This class represents the lowest-level authoritative application of game state -changes on the client. - ---- - -## Scope and Authority - -`PlayerEventHandler` operates under the following guarantees: - -- All incoming events are **authoritative** and already validated by the server -- Events refer to valid players, zones, and card identifiers -- Ordering is guaranteed by the server and preserved by `GameEventHandler` - -As a result, the handler does **not** perform rule validation or permission -checks. Its responsibility is to *apply* state, not *decide* legality. - ---- - -## Responsibilities - -### 1. Applying player-specific state changes - -The primary responsibility of `PlayerEventHandler` is to mutate player-owned -state, including: - -- Cards (`CardItem`) -- Zones (`CardZoneLogic`) -- Counters (card-level and player-level) -- Attachments and arrows -- Zone configuration flags (reveal / peek behavior) - -Many handlers update both **logical state** and **visual/UI state** in tandem. - ---- - -### 2. Coordinating complex card movement - -Some events—most notably card movement—require coordinated updates across -multiple systems. For example, `eventMoveCard()`: - -- Removes the card from the source zone -- Updates ownership, visibility, and identity -- Handles attachments and arrow cleanup -- Emits undo-draw or move logs -- Inserts the card into the destination zone -- Updates menus, hover state, and graphics - -This makes `PlayerEventHandler` intentionally stateful and tightly coupled to -the board implementation. - ---- - -### 3. Emitting logging signals - -Rather than writing directly to logs or widgets, `PlayerEventHandler` emits -structured Qt signals describing *what happened*, including: - -- Chat messages -- Card movement -- Shuffles and randomization -- Reveals and peeks -- Counter and attribute changes - -These signals are consumed by logging systems and UI components, keeping -presentation concerns out of the handler. - -Logging signals may be emitted **before or after mutation**, depending on -whether later changes would invalidate log data (e.g. card identity). - ---- - -### 4. Handling cross-player interactions - -Although bound to a single player, some events necessarily affect other -players’ state, including: - -- Moving cards between players -- Attaching cards to another player’s permanents -- Creating arrows targeting other players or cards - -In these cases, `PlayerEventHandler` performs the minimal required mutation -while respecting ownership boundaries enforced elsewhere. - ---- - -## Event Dispatch Model - -`PlayerEventHandler` exposes a single public entry point: - -- `processGameEvent()` - -This method: - -1. Receives a generic `GameEvent` -2. Switches on `GameEventType` -3. Extracts the appropriate protobuf extension -4. Forwards the event to a typed handler - -This keeps the event routing centralized and makes it easy to audit coverage -when new game events are introduced. - -Unhandled events are logged as warnings. - ---- - -## Event Categories - -For clarity, event handlers are grouped conceptually into: - -- **Chat and randomization** - - Chat messages - - Shuffles - - Dice rolls - -- **Arrows and targeting** - - Create / delete arrows - -- **Card and token creation** - - Token generation - - Counter creation - -- **Card attributes and counters** - - Tapped state - - Power/toughness - - Annotations - - Card- and player-level counters - -- **Zone-level operations** - - Card movement - - Zone dumps - - Card destruction - - Attachments - -- **Draw and reveal** - - Drawing cards - - Reveals, peeks, and reveal windows - -- **Zone configuration** - - Always-reveal and always-look-at-top-card flags - -This grouping mirrors the structure of the header file and reflects the -conceptual responsibilities of the class. - ---- - -## Relationship to GameEventHandler - -`PlayerEventHandler` is never instantiated or invoked directly by UI code. -Instead: - -1. `GameEventHandler` receives a `GameEventContainer` -2. Player-scoped events are routed to the appropriate `PlayerEventHandler` -3. Global or spectator events are handled elsewhere - -This separation keeps game-wide logic decoupled from player board state and -makes reconnection and replay handling simpler. - ---- - -## Design Intent - -`PlayerEventHandler` is designed to be: - -- **Authoritative** – applies server state exactly as received -- **Stateful** – maintains consistency across cards, zones, and UI -- **Explicit** – one handler per event type -- **UI-aware** – updates views and menus as part of state mutation -- **Auditable** – easy to trace what code handles which event - ---- - -## Related Classes - -- @ref PlayerEventHandler -- @ref GameEventHandler -- `Player` -- `CardItem` -- `CardZoneLogic` -- `GameEvent` -- `GameEventContext` - ---- - -## See Also - -- @ref GameLogicPlayers -- @ref GameLogic diff --git a/doc/doxygen/extra-pages/user_documentation/card_pictures/custom_card_pictures.md b/doc/doxygen/extra-pages/user_documentation/card_pictures/custom_card_pictures.md index 3f1079661..bcea6db8b 100644 --- a/doc/doxygen/extra-pages/user_documentation/card_pictures/custom_card_pictures.md +++ b/doc/doxygen/extra-pages/user_documentation/card_pictures/custom_card_pictures.md @@ -69,17 +69,17 @@ the 'Deck Editor' tab, in the 'URL Download Priority' section. The following reference points are available: -| Reference point | Description | Example | -| ------------------------------- | ------------------------------- | -------------- | -| `!name!` | Card name | `Example Card` | -| `!name_lower!` | Card name, lower case | `example card` | -| `!corrected_name!` | Corrected card name | `ExampleCard` (instead of "Example // Card") | -| `!corrected_name_lower!` | Corrected card name, lower case | `examplecard` | -| `!sflang!` | Scryfall language code for the current client language; defaults to English when the language has no localized images | `en`, `zhs` | -| `!setcode!` / `!setcode_lower!` | Set code | `EXM` / `exm` | -| `!setname!` / `!setname_lower!` | Full set name | `Exemplary Set` / `exemplary set` | -| `!set:!` | A property of this printing, e.g. `muid` (Gatherer multiverse ID), `uuid` (Scryfall UUID), `num` (collector number), `rarity` | `373549` | -| `!prop:!` | A property of the card, e.g. `side` (front/back), `colors`, `cmc`, `coloridentity`, `type`, `pt`, and the format legality statuses | `front` | +| Reference point | Description | Example | +| ------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------- | +| `!name!` | Card name | `Example Card` | +| `!name_lower!` | Card name, lower case | `example card` | +| `!corrected_name!` | Corrected card name | `ExampleCard` (instead of "Example // Card") | +| `!corrected_name_lower!` | Corrected card name, lower case | `examplecard` | +| `!sflang!` | Scryfall language code for the current client language; defaults to English when the language has no localized images | `en`, `zhs` | +| `!setcode!` / `!setcode_lower!` | Set code | `EXM` / `exm` | +| `!setname!` / `!setname_lower!` | Full set name | `Exemplary Set` / `exemplary set` | +| `!set:!` | A property of this printing, e.g. `muid` (Gatherer multiverse ID), `uuid` (Scryfall UUID), `num` (collector number), `rarity` | `373549` | +| `!prop:!` | A property of the card, e.g. `side` (front/back), `colors`, `cmc`, `coloridentity`, `type`, `pt`, and the format legality statuses | `front` | The `!set:...!` and `!prop:...!` reference points support two modifiers: From d0991b68f62fa35f4a4296249e0f6ee576e29427 Mon Sep 17 00:00:00 2001 From: BruebachL <44814898+BruebachL@users.noreply.github.com> Date: Wed, 7 Oct 2026 14:55:25 +0200 Subject: [PATCH 07/28] [EDHRec] Update tab title when a card is searched (#7408) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit TabEdhRecMain never emitted tabTextChanged, so TabSupervisor::updateTabText was never called and the tab kept the title it was created with. addEdhrecMainTab() creates the tab without a card, so every search left the title reading "EDHRec: " with no card name for the rest of the tab's life. addEdhrecTab() sets the card before myAddTab(), which is why the older TabEdhRec tab was never affected. Co-authored-by: Lukas Brübach --- .../src/interface/widgets/tabs/api/edhrec/tab_edhrec_main.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cockatrice/src/interface/widgets/tabs/api/edhrec/tab_edhrec_main.cpp b/cockatrice/src/interface/widgets/tabs/api/edhrec/tab_edhrec_main.cpp index 500eab13a..bd52dd3b5 100644 --- a/cockatrice/src/interface/widgets/tabs/api/edhrec/tab_edhrec_main.cpp +++ b/cockatrice/src/interface/widgets/tabs/api/edhrec/tab_edhrec_main.cpp @@ -134,6 +134,8 @@ void TabEdhRecMain::setCard(CardInfoPtr _cardToQuery, bool isCommander) return; } + emit tabTextChanged(this, getTabText()); + QString cardName = cardToQuery->getName(); QString formattedName = cardName.toLower().replace(" ", "-").remove(QRegularExpression("[^a-z0-9\\-]")); From b1f4d1e99d7e59ca8abee3a64994a118fad833f5 Mon Sep 17 00:00:00 2001 From: BruebachL <44814898+BruebachL@users.noreply.github.com> Date: Thu, 8 Oct 2026 10:51:03 +0200 Subject: [PATCH 08/28] [UI] Flip tear-off menus default to off (#7449) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Detach menus no longer default to tear-off; users can re-enable in settings. Co-authored-by: Lukas Brübach --- .../libcockatrice/settings/interface_settings.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libcockatrice_settings/libcockatrice/settings/interface_settings.cpp b/libcockatrice_settings/libcockatrice/settings/interface_settings.cpp index b92a5fdec..b5a172e85 100644 --- a/libcockatrice_settings/libcockatrice/settings/interface_settings.cpp +++ b/libcockatrice_settings/libcockatrice/settings/interface_settings.cpp @@ -37,7 +37,7 @@ InterfaceSettings::InterfaceSettings(const QString &settingPath, QObject *parent bool InterfaceSettings::getUseTearOffMenus() const { - return getValue("useTearOffMenus", QString(), QString(), true).toBool(); + return getValue("useTearOffMenus", QString(), QString(), false).toBool(); } int InterfaceSettings::getCardViewInitialRowsMax() const From d603a2bb6a6db7414babdaa5b730958ff6d39fed Mon Sep 17 00:00:00 2001 From: BruebachL <44814898+BruebachL@users.noreply.github.com> Date: Thu, 8 Oct 2026 11:13:50 +0200 Subject: [PATCH 09/28] [Tooling] Apply include-what-you-use across the tree (#7396) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [DeckList] Apply include-what-you-use to libcockatrice_deck_list * [IWYU] Apply include-what-you-use across the tree Run one whole-tree IWYU pass over the libcockatrice_* libraries, the Cockatrice client, Oracle, Servatrice and the test suite, so each translation unit includes what it uses directly and forward-declares what it does not need. IWYU only analyses real translation units, never the moc code CMake generates from Q_OBJECT headers, so it strips includes that moc output silently relies on. Where a type is passed by value (or nested in a QList/QMap) in a signal or slot signature, the generated moc code needs the complete type; those includes are kept with an explanatory `// IWYU pragma: keep`. The same holds for Q_DECLARE_METATYPE targets such as QSqlDatabase. A handful of includes are added by hand where callers brace-initialize a const-reference parameter, which also requires the complete type. Applied as a single commit on purpose: stripping includes from the libcockatrice_* headers is precisely what breaks the client, test and server translation units, and the fixes for those live in the same translation units. Splitting by component would therefore leave intermediate commits that do not compile. All 426 modified Q_OBJECT/Q_GADGET headers were verified to be moc-self-contained by compiling each generated moc_*.cpp standalone; several built only because of moc include ordering in mocs_compilation.cpp before the keep-includes were added. * [Tooling] Emit public Qt headers and fix IWYU fallout CI found Three problems the local build could not see, all because a green local build only proves the configuration it was run under. Private Qt headers. IWYU emitted private, lowercase Qt headers, and qtypes.h does not exist at all before Qt 6.9, so the Debian 12 and Ubuntu 24.04 jobs on Qt 6.4.2 failed to compile. The generator only emitted a mapping when the capital header name mirrored the private one (QAbstractAnimation for qabstractanimation.h), so qtypes.h, which is wrapped by QtTypes instead, got no mapping and kept the private spelling. Map it explicitly to , which is public since Qt 5 and provides the same typedefs either way, and rewrite the 100 affected includes. Do not generalize this to "prefer any Qt* wrapper". The table is generated from whichever Qt is installed, and the wrappers are not equally old: QtLogging only appeared in Qt 6.8 and QtMinMax in 6.5, so that heuristic trades one breakage for another. Every other lowercase header still in the tree has shipped publicly since Qt 5, so those are left alone. Platform-guarded includes. IWYU only sees the preprocessor configuration it is handed, so it dropped an include that only the macOS branch of main.cpp needs, and the macOS jobs failed on an undeclared UrlSchemeEventFilter. Restore the include. Force-compiling every file that carries a platform guard under Q_OS_MAC, Q_OS_MACOS and __APPLE__ reports nothing else, so the macOS branches are covered rather than assumed. shellcheck. Drop a leftover variable and stop assigning the include-what-you-use lookup, which was only ever an existence check. * [Tooling] Map Qt 6.5+ split headers to QtGlobal for Qt 6.4 compatibility IWYU emitted QtTypes, QtPreprocessorSupport, QtVersionChecks, QtAssert, QtMinMax, QtClassHelperMacros, QtEnvironmentVariables and QtTranslation. Qt 6.5 split those declarations out of qglobal.h into separate headers, so neither the Qt* wrapper nor the q*.h private name exists on the oldest Qt we support (6.4.2), and Debian 12 / Ubuntu 24.04 fail with "No such file or directory". qtypes.h is worse still: it only appeared in Qt 6.9. QtGlobal is the one spelling that works across the whole supported range. It has been public since Qt 5, defines these declarations itself up to Qt 6.4, and includes the split headers from Qt 6.5 on, so redirect all eight private headers to it and collapse the affected includes in the tree. Curated overrides now take precedence over the name-mirroring rule, which cannot know about Qt version floors because the mapping is generated from whatever Qt is installed. That rule was mapping qtversionchecks.h to even with an override present, because the override was only consulted as a fallback. A curated key that matches nothing is now a hard error rather than a silent fallback, and the redirected headers are no longer advertised as the home of a symbol. Verified every Qt include in the tree resolves against the real qt6-base-dev 6.4.2 package: 15 distinct includes, 0 missing. * [Tooling] Map QOverload to QtGlobal and drop the QMetaMethodArgument include Two more headers IWYU emitted do not exist on Qt 6.4.2: QOverload was split out of qglobal.h in Qt 6.5, so on 6.4.2 it is declared in qglobal.h directly and the standalone header is a hard error. QtGlobal covers both, so map qoverload.h to it like the other 6.5+ split headers. QMetaMethodArgument is never referenced anywhere in the tree. It is a bare forwarder for qobjectdefs.h that our generator advertised as a class symbol, which is how IWYU came to add the include at all. The symbol mappings are generated from header names, so they cannot tell a forwarder that happens to be capitalised from a real class; removing the unused include is the fix, and the generic case stays a known limitation of the generator. Extending the audit to every Q* header (an earlier pass only matched headers starting with "Qt" or lowercase q*.h, so it missed all of them) against the real qt6-base-dev, qt6-multimedia-dev, qt6-declarative-dev, qt6-svg-dev and qt6-websockets-dev 6.4.2 packages: 341 distinct Qt includes, 0 missing. * [Game] Give moc the complete CardItem type in player_actions.h player_actions.h forward declares CardItem but passes QList by value in actPlay/actPlayFacedown/actHide. moc instantiates the metatype for those parameters, and on Qt 6.4 that expands to sizeof(CardItem), so Ubuntu 24.04 fails with "invalid application of 'sizeof' to incomplete type 'CardItem'". Newer Qt tolerates the incomplete type, which is why only the 6.4.2 jobs failed. Include the defining header with an IWYU pragma keep, matching how the other MOC-required includes in this area are handled. * [Game] Give moc the complete ServerInfo_Card type player_logic.h, game_scene.h, view_zone.h and view_zone_widget.h forward declare ServerInfo_Card but pass QList through signal and slot signatures. moc instantiates the metatype for those parameters, which Qt 6.4 expands to sizeof(ServerInfo_Card), so the connect in game_scene.cpp fails on Debian 12 and Ubuntu 24.04 with "invalid application of 'sizeof' to incomplete type 'const ServerInfo_Card'". Newer Qt tolerates it, so only the 6.4.2 jobs failed. Include the generated protobuf header with an IWYU pragma keep, following the pattern already used for ServerInfo_Player and ServerInfo_User in game_event_handler.h. * [Client] Complete the types Qt 6.4 needs for connect and moc Qt 6.4 expands QMetaType::fromType on the normalised argument list of a PMF connect and on moc-generated metatypes, which requires sizeof on every signal and slot parameter. Newer Qt tolerates forward declarations there, so only the Debian 12 and Ubuntu 24.04 jobs failed, with "invalid application of 'sizeof' to incomplete type" for QMouseEvent, QPrinter and GameReplay. Replace the forward declarations with the real includes: - QMouseEvent in the nine widget headers that pass it through signals - QPrinter in abstract_tab_deck_editor.cpp, for the actPrintDeck lambda - game_replay.pb.h in tab_replays.h. GameReplay is a protobuf message, so the project's game/replay.h only forward declares it and cannot supply the complete type. Found by recompiling all 1918 project TUs against the Debian Qt 6.4.2 headers, which reproduces those two CI jobs locally in one pass. * [Client] Complete Release and QMenu for Qt 6.4 moc and connect Continuing the Qt 6.4 complete-type sweep: - window_main.cpp connects ClientUpdateChecker::finishedCheck to MainWindow::checkClientUpdatesFinished, whose Release * parameter made moc 6.4 instantiate the metatype. GameReplay turned out to be a protobuf message, so Release likewise needed release_channel.h in the three headers declaring those signals: window_main.h, dlg_update.h and client_update_checker.h. - moc 6.4 also needs sizeof(QMenu) for the QList carried by TabSupervisor::setMenu and MainWindow::updateTabMenu. Verified by regenerating moc output with the Debian moc 6.4.2 for all 434 Q_OBJECT/Q_GADGET classes and compiling it, plus recompiling all 1612 source TUs, against the Qt 6.4.2 headers: no remaining failures. --------- Co-authored-by: Lukas Brübach --- cockatrice/src/client/lag_monitor.cpp | 3 + cockatrice/src/client/lag_monitor.h | 4 +- .../src/client/latency_graph_widget.cpp | 4 ++ cockatrice/src/client/latency_graph_widget.h | 2 + .../src/client/latency_status_widget.cpp | 4 ++ cockatrice/src/client/latency_status_widget.h | 2 + .../remote_connection_controller.cpp | 11 ++++ .../remote_connection_controller.h | 11 +++- .../interfaces/deck_stats_interface.cpp | 11 ++++ .../network/interfaces/deck_stats_interface.h | 3 +- .../interfaces/tapped_out_interface.cpp | 17 ++++++ .../network/interfaces/tapped_out_interface.h | 1 + .../parsers/deck_link_to_api_transformer.cpp | 1 + .../spoiler_background_updater.cpp | 18 +++++- .../card_spoiler/spoiler_background_updater.h | 6 +- .../update/client/client_update_checker.h | 7 ++- .../network/update/client/release_channel.cpp | 16 ++++- .../network/update/client/release_channel.h | 3 +- .../update/client/update_downloader.cpp | 8 +++ .../network/update/client/update_downloader.h | 8 ++- .../src/client/settings/cache_settings.cpp | 7 ++- .../src/client/settings/cache_settings.h | 4 +- .../client/settings/card_counter_settings.cpp | 7 +++ .../client/settings/card_counter_settings.h | 4 +- .../src/client/settings/shortcut_treeview.cpp | 17 ++++++ .../src/client/settings/shortcut_treeview.h | 7 ++- .../client/settings/shortcuts_settings.cpp | 6 +- .../src/client/settings/shortcuts_settings.h | 11 +++- cockatrice/src/client/sound_engine.cpp | 7 +++ cockatrice/src/client/sound_engine.h | 8 +-- cockatrice/src/filters/deck_filter_string.cpp | 18 ++++++ cockatrice/src/filters/deck_filter_string.h | 5 +- cockatrice/src/filters/filter_builder.cpp | 7 +++ cockatrice/src/filters/filter_builder.h | 2 +- cockatrice/src/filters/filter_tree_model.cpp | 7 +++ cockatrice/src/filters/filter_tree_model.h | 6 +- cockatrice/src/filters/syntax_help.cpp | 13 ++++ cockatrice/src/filters/syntax_help.h | 5 +- cockatrice/src/game/abstract_game.cpp | 13 +++- cockatrice/src/game/abstract_game.h | 15 +++-- cockatrice/src/game/arrow_registry.cpp | 3 + cockatrice/src/game/arrow_registry.h | 6 +- cockatrice/src/game/board/arrow_data.cpp | 3 + cockatrice/src/game/board/arrow_data.h | 4 +- cockatrice/src/game/board/card_list.cpp | 5 ++ cockatrice/src/game/board/card_list.h | 2 + cockatrice/src/game/board/card_state.cpp | 2 + cockatrice/src/game/board/card_state.h | 3 + cockatrice/src/game/board/counter_state.cpp | 2 + cockatrice/src/game/board/counter_state.h | 4 +- cockatrice/src/game/game.cpp | 10 ++- cockatrice/src/game/game.h | 9 ++- cockatrice/src/game/game_event_handler.cpp | 28 ++++++++- cockatrice/src/game/game_event_handler.h | 23 +++++-- cockatrice/src/game/game_meta_info.h | 3 + cockatrice/src/game/game_state.cpp | 5 ++ cockatrice/src/game/game_state.h | 10 +-- cockatrice/src/game/phase.cpp | 5 ++ cockatrice/src/game/phase.h | 3 +- cockatrice/src/game/player/player_actions.cpp | 53 ++++++++++++++-- cockatrice/src/game/player/player_actions.h | 18 ++++-- .../src/game/player/player_event_handler.cpp | 26 ++++++-- .../src/game/player/player_event_handler.h | 9 ++- cockatrice/src/game/player/player_info.cpp | 2 + cockatrice/src/game/player/player_info.h | 4 +- cockatrice/src/game/player/player_logic.cpp | 44 +++++++------ cockatrice/src/game/player/player_logic.h | 53 +++++++--------- cockatrice/src/game/player/player_manager.cpp | 6 ++ cockatrice/src/game/player/player_manager.h | 5 ++ cockatrice/src/game/replay.cpp | 9 ++- cockatrice/src/game/replay.h | 5 ++ cockatrice/src/game/zones/card_zone_logic.cpp | 9 +++ cockatrice/src/game/zones/card_zone_logic.h | 9 +-- cockatrice/src/game/zones/hand_zone_logic.cpp | 3 + cockatrice/src/game/zones/hand_zone_logic.h | 6 ++ cockatrice/src/game/zones/pile_zone_logic.cpp | 4 ++ cockatrice/src/game/zones/pile_zone_logic.h | 6 ++ .../src/game/zones/stack_zone_logic.cpp | 3 + cockatrice/src/game/zones/stack_zone_logic.h | 6 ++ .../src/game/zones/table_zone_logic.cpp | 7 +++ cockatrice/src/game/zones/table_zone_logic.h | 6 ++ cockatrice/src/game/zones/view_zone_logic.cpp | 6 ++ cockatrice/src/game/zones/view_zone_logic.h | 5 ++ .../board/abstract_card_drag_item.cpp | 10 ++- .../board/abstract_card_drag_item.h | 14 +++-- .../board/abstract_card_item.cpp | 25 +++++++- .../game_graphics/board/abstract_card_item.h | 10 ++- .../game_graphics/board/abstract_counter.cpp | 16 ++++- .../game_graphics/board/abstract_counter.h | 9 ++- .../board/abstract_graphics_item.cpp | 8 +++ .../board/abstract_graphics_item.h | 7 ++- .../src/game_graphics/board/arrow_item.cpp | 20 +++++- .../src/game_graphics/board/arrow_item.h | 10 ++- .../src/game_graphics/board/arrow_target.cpp | 5 +- .../src/game_graphics/board/arrow_target.h | 4 +- .../game_graphics/board/card_drag_item.cpp | 11 ++++ .../src/game_graphics/board/card_drag_item.h | 4 ++ .../src/game_graphics/board/card_item.cpp | 36 +++++++++-- .../src/game_graphics/board/card_item.h | 16 +++-- .../game_graphics/board/counter_general.cpp | 13 ++++ .../src/game_graphics/board/counter_general.h | 6 ++ .../board/translate_counter_name.cpp | 3 + .../board/translate_counter_name.h | 4 +- .../src/game_graphics/deckview/deck_view.cpp | 32 ++++++++++ .../src/game_graphics/deckview/deck_view.h | 19 +++++- .../deckview/deck_view_container.cpp | 23 ++++++- .../deckview/deck_view_container.h | 7 ++- .../deckview/tabbed_deck_view_container.cpp | 10 ++- .../deckview/tabbed_deck_view_container.h | 10 ++- .../dialogs/dlg_create_token.cpp | 17 +++++- .../game_graphics/dialogs/dlg_create_token.h | 9 ++- .../dialogs/dlg_move_top_cards_until.cpp | 11 +++- .../dialogs/dlg_move_top_cards_until.h | 15 +++-- .../game_graphics/dialogs/dlg_roll_dice.cpp | 5 +- .../src/game_graphics/dialogs/dlg_roll_dice.h | 10 ++- cockatrice/src/game_graphics/game_scene.cpp | 27 +++++++- cockatrice/src/game_graphics/game_scene.h | 25 ++++++-- cockatrice/src/game_graphics/game_view.cpp | 13 +++- cockatrice/src/game_graphics/game_view.h | 8 +++ cockatrice/src/game_graphics/hand_counter.cpp | 13 +++- cockatrice/src/game_graphics/hand_counter.h | 6 +- .../game_graphics/log/message_log_widget.cpp | 21 ++++++- .../game_graphics/log/message_log_widget.h | 11 +++- .../src/game_graphics/phases_toolbar.cpp | 13 +++- cockatrice/src/game_graphics/phases_toolbar.h | 13 ++-- .../game_graphics/player/menu/card_menu.cpp | 24 +++++++- .../src/game_graphics/player/menu/card_menu.h | 8 ++- .../player/menu/custom_zone_menu.cpp | 6 ++ .../player/menu/custom_zone_menu.h | 3 + .../game_graphics/player/menu/grave_menu.cpp | 13 ++++ .../game_graphics/player/menu/grave_menu.h | 7 ++- .../game_graphics/player/menu/hand_menu.cpp | 14 ++++- .../src/game_graphics/player/menu/hand_menu.h | 7 ++- .../player/menu/library_menu.cpp | 16 ++++- .../game_graphics/player/menu/library_menu.h | 6 +- .../game_graphics/player/menu/move_menu.cpp | 4 ++ .../src/game_graphics/player/menu/move_menu.h | 3 + .../game_graphics/player/menu/player_menu.cpp | 19 +++++- .../game_graphics/player/menu/player_menu.h | 26 ++++---- .../src/game_graphics/player/menu/pt_menu.cpp | 4 ++ .../src/game_graphics/player/menu/pt_menu.h | 3 + .../game_graphics/player/menu/rfg_menu.cpp | 10 +++ .../src/game_graphics/player/menu/rfg_menu.h | 7 ++- .../game_graphics/player/menu/say_menu.cpp | 5 ++ .../src/game_graphics/player/menu/say_menu.h | 2 + .../player/menu/sideboard_menu.cpp | 5 ++ .../player/menu/sideboard_menu.h | 3 + .../game_graphics/player/menu/tally_menu.cpp | 3 + .../game_graphics/player/menu/tally_menu.h | 7 ++- .../player/menu/utility_menu.cpp | 9 ++- .../game_graphics/player/menu/utility_menu.h | 6 ++ .../src/game_graphics/player/player_area.cpp | 1 + .../src/game_graphics/player/player_area.h | 9 ++- .../game_graphics/player/player_dialogs.cpp | 9 +++ .../src/game_graphics/player/player_dialogs.h | 22 +++++-- .../player/player_graphics_item.cpp | 33 +++++++++- .../player/player_graphics_item.h | 21 +++++-- .../player/player_list_widget.cpp | 28 ++++++--- .../game_graphics/player/player_list_widget.h | 9 ++- .../game_graphics/player/player_target.cpp | 31 +++++++++- .../src/game_graphics/player/player_target.h | 4 ++ .../src/game_graphics/tally/stats_tally.cpp | 5 ++ .../src/game_graphics/tally/stats_tally.h | 4 ++ .../src/game_graphics/tally/subtype_tally.cpp | 9 +++ .../src/game_graphics/tally/subtype_tally.h | 1 - cockatrice/src/game_graphics/tally/tally.h | 1 + .../src/game_graphics/zones/card_zone.cpp | 10 ++- .../src/game_graphics/zones/card_zone.h | 13 +++- .../src/game_graphics/zones/hand_zone.cpp | 13 ++++ .../src/game_graphics/zones/hand_zone.h | 9 ++- .../src/game_graphics/zones/pile_zone.cpp | 17 +++++- .../src/game_graphics/zones/pile_zone.h | 6 +- .../src/game_graphics/zones/select_zone.cpp | 12 ++++ .../src/game_graphics/zones/select_zone.h | 6 ++ .../src/game_graphics/zones/stack_zone.cpp | 12 ++++ .../src/game_graphics/zones/stack_zone.h | 7 ++- .../src/game_graphics/zones/table_zone.cpp | 29 ++++++++- .../src/game_graphics/zones/table_zone.h | 18 +++++- .../src/game_graphics/zones/view_zone.cpp | 18 +++++- .../src/game_graphics/zones/view_zone.h | 18 +++++- .../game_graphics/zones/view_zone_widget.cpp | 33 ++++++++-- .../game_graphics/zones/view_zone_widget.h | 20 +++--- cockatrice/src/interface/card_localization.h | 1 + .../card_picture_loader.cpp | 30 +++++++-- .../card_picture_loader/card_picture_loader.h | 16 +++-- .../card_picture_loader_local.cpp | 16 ++++- .../card_picture_loader_local.h | 11 +++- ...e_loader_request_status_display_widget.cpp | 6 ++ ...ure_loader_request_status_display_widget.h | 11 +++- .../card_picture_loader_status_bar.cpp | 12 ++++ .../card_picture_loader_status_bar.h | 14 +++-- .../card_picture_loader_worker.cpp | 23 ++++++- .../card_picture_loader_worker.h | 24 +++++--- .../card_picture_loader_worker_work.cpp | 22 ++++++- .../card_picture_loader_worker_work.h | 15 +++-- .../card_picture_to_load.cpp | 12 +++- .../card_picture_to_load.h | 6 ++ .../deck_loader/card_node_function.cpp | 7 +++ .../deck_loader/deck_file_format.cpp | 2 + .../src/interface/deck_loader/deck_loader.cpp | 29 ++++++++- .../src/interface/deck_loader/deck_loader.h | 16 ++++- cockatrice/src/interface/intents/intent.h | 2 + .../intents/intent_connect_to_server.cpp | 6 ++ .../intents/intent_connect_to_server.h | 9 ++- .../intents/intent_disconnect_from_server.cpp | 2 + .../intents/intent_disconnect_from_server.h | 6 +- .../intents/intent_join_server_game.cpp | 8 +++ .../intents/intent_join_server_game.h | 3 +- .../intents/intent_join_server_room.cpp | 7 +++ .../intents/intent_join_server_room.h | 6 +- .../src/interface/intents/intent_login.cpp | 4 ++ .../src/interface/intents/intent_login.h | 5 +- .../intents/intent_open_local_deck.cpp | 4 ++ .../intents/intent_open_local_deck.h | 1 + .../intent_open_server_room_by_name.cpp | 9 +++ .../intents/intent_open_server_room_by_name.h | 6 +- .../intents/intent_open_shared_deck.cpp | 13 +++- .../intents/intent_open_shared_deck.h | 8 ++- .../intents/intent_wait_for_database_load.cpp | 3 + .../intents/intent_wait_for_database_load.h | 2 + .../src/interface/intents/url_parser.cpp | 12 ++++ cockatrice/src/interface/intents/url_parser.h | 3 + cockatrice/src/interface/key_signals.cpp | 3 + cockatrice/src/interface/key_signals.h | 2 +- .../src/interface/layouts/flow_layout.cpp | 11 +++- .../src/interface/layouts/flow_layout.h | 8 ++- .../src/interface/layouts/overlap_layout.cpp | 8 +++ .../src/interface/layouts/overlap_layout.h | 6 +- cockatrice/src/interface/logger.cpp | 7 +++ cockatrice/src/interface/logger.h | 7 ++- .../interface/palette_editor/color_button.cpp | 12 ++++ .../interface/palette_editor/color_button.h | 3 + .../palette_editor/palette_editor_dialog.cpp | 11 ++++ .../palette_editor/palette_editor_dialog.h | 7 ++- .../palette_editor/palette_generator.cpp | 7 +++ .../palette_editor/palette_grid_widget.cpp | 11 ++++ .../palette_editor/palette_grid_widget.h | 8 ++- .../palette_editor/quick_setup_panel.cpp | 6 ++ .../palette_editor/quick_setup_panel.h | 5 +- .../src/interface/pixel_map_generator.cpp | 22 +++++++ .../src/interface/pixel_map_generator.h | 6 ++ cockatrice/src/interface/theme_config.cpp | 8 +++ cockatrice/src/interface/theme_config.h | 3 +- cockatrice/src/interface/theme_manager.cpp | 19 +++++- cockatrice/src/interface/theme_manager.h | 8 +-- .../additional_info/color_identity_widget.cpp | 11 +++- .../additional_info/color_identity_widget.h | 6 +- .../additional_info/deck_color_identity.cpp | 5 ++ .../additional_info/mana_cost_widget.cpp | 8 ++- .../cards/additional_info/mana_cost_widget.h | 6 +- .../additional_info/mana_symbol_widget.cpp | 8 +++ .../additional_info/mana_symbol_widget.h | 7 ++- .../widgets/cards/art_crop_attribution.cpp | 9 +++ .../widgets/cards/art_crop_attribution.h | 3 +- .../widgets/cards/card_art_utils.cpp | 3 + .../card_group_display_widget.cpp | 22 ++++++- .../card_group_display_widget.h | 23 ++++--- .../flat_card_group_display_widget.cpp | 14 ++++- .../flat_card_group_display_widget.h | 10 +++ .../overlapped_card_group_display_widget.cpp | 14 ++++- .../overlapped_card_group_display_widget.h | 10 +++ .../cards/card_info_display_widget.cpp | 15 ++++- .../widgets/cards/card_info_display_widget.h | 8 ++- .../widgets/cards/card_info_frame_widget.cpp | 15 ++++- .../widgets/cards/card_info_frame_widget.h | 7 ++- .../card_info_picture_art_crop_widget.cpp | 6 ++ .../cards/card_info_picture_art_crop_widget.h | 5 ++ .../card_info_picture_enlarged_widget.cpp | 7 +++ .../cards/card_info_picture_enlarged_widget.h | 4 ++ .../cards/card_info_picture_widget.cpp | 30 ++++++++- .../widgets/cards/card_info_picture_widget.h | 13 ++-- ..._info_picture_with_text_overlay_widget.cpp | 16 +++++ ...rd_info_picture_with_text_overlay_widget.h | 8 ++- .../widgets/cards/card_info_text_widget.cpp | 13 +++- .../widgets/cards/card_info_text_widget.h | 5 +- .../widgets/cards/card_size_widget.cpp | 13 +++- .../widgets/cards/card_size_widget.h | 10 +-- .../cards/deck_card_zone_display_widget.cpp | 28 ++++++++- .../cards/deck_card_zone_display_widget.h | 25 +++++--- .../deck_preview_card_picture_widget.cpp | 8 +-- .../cards/deck_preview_card_picture_widget.h | 9 ++- .../abstract_analytics_panel_widget.cpp | 7 +++ .../abstract_analytics_panel_widget.h | 8 ++- .../add_analytics_panel_dialog.cpp | 3 + .../add_analytics_panel_dialog.h | 11 ++-- .../analytics_panel_widget_factory.cpp | 2 + .../analytics_panel_widget_factory.h | 2 +- .../analytics_panel_widget_registrar.h | 2 + .../draw_probability_config.cpp | 3 + .../draw_probability_config_dialog.cpp | 4 ++ .../draw_probability_config_dialog.h | 4 +- .../draw_probability_widget.cpp | 27 ++++++-- .../draw_probability_widget.h | 17 +++--- .../mana_base/mana_base_config.cpp | 4 ++ .../mana_base/mana_base_config.h | 3 +- .../mana_base/mana_base_config_dialog.cpp | 13 ++++ .../mana_base/mana_base_config_dialog.h | 20 +++--- .../mana_base/mana_base_widget.cpp | 17 +++++- .../mana_base/mana_base_widget.h | 15 ++--- .../mana_curve/mana_curve_category_widget.cpp | 14 ++++- .../mana_curve/mana_curve_category_widget.h | 12 ++-- .../mana_curve/mana_curve_config.cpp | 4 ++ .../mana_curve/mana_curve_config.h | 3 +- .../mana_curve/mana_curve_config_dialog.cpp | 10 +++ .../mana_curve/mana_curve_config_dialog.h | 8 ++- .../mana_curve/mana_curve_total_widget.cpp | 10 ++- .../mana_curve/mana_curve_total_widget.h | 14 +++-- .../mana_curve/mana_curve_widget.cpp | 24 +++++--- .../mana_curve/mana_curve_widget.h | 11 ++-- .../mana_devotion/mana_devotion_config.cpp | 4 ++ .../mana_devotion/mana_devotion_config.h | 3 +- .../mana_devotion_config_dialog.cpp | 14 +++++ .../mana_devotion_config_dialog.h | 18 +++--- .../mana_devotion/mana_devotion_widget.cpp | 16 ++++- .../mana_devotion/mana_devotion_widget.h | 10 ++- .../mana_distribution_config.cpp | 4 ++ .../mana_distribution_config.h | 2 +- .../mana_distribution_config_dialog.cpp | 7 +++ .../mana_distribution_config_dialog.h | 7 ++- ...ana_distribution_single_display_widget.cpp | 3 + .../mana_distribution_single_display_widget.h | 8 ++- .../mana_distribution_widget.cpp | 15 ++++- .../mana_distribution_widget.h | 18 +++--- .../deck_analytics/deck_analytics_widget.cpp | 7 +++ .../deck_analytics/deck_analytics_widget.h | 19 +++--- .../deck_list_statistics_analyzer.cpp | 12 +++- .../deck_list_statistics_analyzer.h | 6 +- .../deck_analytics/resizable_panel.cpp | 23 +++++++ .../widgets/deck_analytics/resizable_panel.h | 20 +++--- .../deck_editor/card_database_view.cpp | 18 ++++++ .../widgets/deck_editor/card_database_view.h | 9 ++- .../deck_editor_card_database_dock_widget.cpp | 15 ++++- .../deck_editor_card_database_dock_widget.h | 4 +- .../deck_editor_card_info_dock_widget.cpp | 6 ++ .../deck_editor_card_info_dock_widget.h | 7 ++- .../deck_editor_database_display_widget.cpp | 23 +++++-- .../deck_editor_database_display_widget.h | 17 ++++-- .../deck_editor_deck_dock_widget.cpp | 51 +++++++++++++++- .../deck_editor_deck_dock_widget.h | 35 +++++++---- .../deck_editor_filter_dock_widget.cpp | 20 ++++++ .../deck_editor_filter_dock_widget.h | 7 ++- ...k_editor_printing_selector_dock_widget.cpp | 5 ++ ...eck_editor_printing_selector_dock_widget.h | 8 +-- .../deck_list_history_manager_widget.cpp | 21 +++++++ .../deck_list_history_manager_widget.h | 18 +++--- .../deck_editor/deck_list_style_proxy.cpp | 3 + .../deck_editor/deck_list_style_proxy.h | 1 + .../deck_editor/deck_state_manager.cpp | 17 ++++++ .../widgets/deck_editor/deck_state_manager.h | 11 +++- .../widgets/deck_editor/deck_zone_dialog.cpp | 4 ++ .../widgets/deck_editor/deck_zone_dialog.h | 2 +- .../printing_disabled_info_widget.cpp | 5 +- .../printing_disabled_info_widget.h | 1 + .../widgets/deck_share/deck_share_utils.cpp | 2 + .../widgets/deck_share/share_bar_widget.h | 2 + .../deck_share/shared_deck_preview_widget.cpp | 6 ++ .../deck_share/shared_deck_preview_widget.h | 4 +- .../interface/widgets/dialogs/dlg_connect.cpp | 17 +++++- .../interface/widgets/dialogs/dlg_connect.h | 10 ++- .../dlg_convert_deck_to_cod_format.cpp | 3 +- .../dialogs/dlg_convert_deck_to_cod_format.h | 11 ++-- .../widgets/dialogs/dlg_create_game.cpp | 14 ++++- .../widgets/dialogs/dlg_create_game.h | 3 + .../dialogs/dlg_default_tags_editor.cpp | 11 ++++ .../widgets/dialogs/dlg_default_tags_editor.h | 12 +++- .../widgets/dialogs/dlg_edit_avatar.cpp | 10 +++ .../widgets/dialogs/dlg_edit_avatar.h | 8 ++- .../widgets/dialogs/dlg_edit_password.cpp | 7 ++- .../widgets/dialogs/dlg_edit_password.h | 5 +- .../widgets/dialogs/dlg_edit_tokens.cpp | 18 +++++- .../widgets/dialogs/dlg_edit_tokens.h | 5 ++ .../widgets/dialogs/dlg_edit_user.cpp | 10 ++- .../interface/widgets/dialogs/dlg_edit_user.h | 5 +- .../widgets/dialogs/dlg_filter_games.cpp | 14 ++++- .../widgets/dialogs/dlg_filter_games.h | 9 ++- .../dialogs/dlg_forgot_password_challenge.cpp | 6 +- .../dialogs/dlg_forgot_password_challenge.h | 6 +- .../dialogs/dlg_forgot_password_request.cpp | 6 +- .../dialogs/dlg_forgot_password_request.h | 6 +- .../dialogs/dlg_forgot_password_reset.cpp | 8 ++- .../dialogs/dlg_forgot_password_reset.h | 6 +- .../widgets/dialogs/dlg_invite_to_game.cpp | 7 ++- .../widgets/dialogs/dlg_invite_to_game.h | 4 ++ .../widgets/dialogs/dlg_load_deck.cpp | 5 ++ .../interface/widgets/dialogs/dlg_load_deck.h | 3 + .../dialogs/dlg_load_deck_from_clipboard.cpp | 7 +++ .../dialogs/dlg_load_deck_from_clipboard.h | 7 ++- .../dialogs/dlg_load_deck_from_website.cpp | 21 +++++++ .../dialogs/dlg_load_deck_from_website.h | 16 +++-- .../widgets/dialogs/dlg_load_remote_deck.cpp | 4 ++ .../widgets/dialogs/dlg_load_remote_deck.h | 3 +- .../dialogs/dlg_local_game_options.cpp | 3 + .../widgets/dialogs/dlg_local_game_options.h | 3 + .../widgets/dialogs/dlg_login_prompt.cpp | 2 + .../widgets/dialogs/dlg_login_prompt.h | 3 + .../widgets/dialogs/dlg_manage_sets.cpp | 21 +++++++ .../widgets/dialogs/dlg_manage_sets.h | 16 +++-- .../widgets/dialogs/dlg_my_reports.cpp | 12 +++- .../widgets/dialogs/dlg_my_reports.h | 5 +- .../widgets/dialogs/dlg_register.cpp | 9 +++ .../interface/widgets/dialogs/dlg_register.h | 4 ++ .../widgets/dialogs/dlg_report_user.cpp | 10 +++ .../widgets/dialogs/dlg_report_user.h | 5 +- .../dialogs/dlg_select_set_for_cards.cpp | 41 +++++++++++-- .../dialogs/dlg_select_set_for_cards.h | 20 +++--- .../widgets/dialogs/dlg_settings.cpp | 27 ++++++++ .../interface/widgets/dialogs/dlg_settings.h | 7 ++- .../widgets/dialogs/dlg_share_deck.cpp | 7 ++- .../widgets/dialogs/dlg_share_deck.h | 3 + .../dialogs/dlg_shared_decks_preview.cpp | 9 ++- .../dialogs/dlg_shared_decks_preview.h | 5 +- .../dialogs/dlg_startup_card_check.cpp | 8 +++ .../widgets/dialogs/dlg_startup_card_check.h | 13 ++-- .../widgets/dialogs/dlg_tip_of_the_day.cpp | 10 +++ .../widgets/dialogs/dlg_tip_of_the_day.h | 11 ++-- .../interface/widgets/dialogs/dlg_update.cpp | 17 +++++- .../interface/widgets/dialogs/dlg_update.h | 19 ++++-- .../widgets/dialogs/dlg_view_log.cpp | 5 ++ .../interface/widgets/dialogs/dlg_view_log.h | 7 ++- .../dialogs/override_printing_warning.cpp | 6 ++ .../dialogs/override_printing_warning.h | 3 +- .../widgets/dialogs/tip_of_the_day.cpp | 11 +++- .../widgets/dialogs/tip_of_the_day.h | 6 ++ .../widgets/general/background_sources.h | 3 + .../display/background_plate_widget.cpp | 4 +- .../general/display/background_plate_widget.h | 1 + .../widgets/general/display/banner_widget.cpp | 9 ++- .../widgets/general/display/banner_widget.h | 4 +- .../bars/bar_chart_background_widget.cpp | 12 ++++ .../charts/bars/bar_chart_background_widget.h | 2 +- .../display/charts/bars/bar_chart_widget.cpp | 11 ++++ .../display/charts/bars/bar_chart_widget.h | 3 + .../display/charts/bars/bar_widget.cpp | 4 ++ .../general/display/charts/bars/bar_widget.h | 4 ++ .../general/display/charts/bars/color_bar.cpp | 11 ++++ .../general/display/charts/bars/color_bar.h | 6 +- .../charts/bars/percent_bar_widget.cpp | 8 +++ .../display/charts/bars/percent_bar_widget.h | 3 +- .../charts/bars/segmented_bar_widget.cpp | 10 +++ .../charts/bars/segmented_bar_widget.h | 4 ++ .../general/display/charts/pies/color_pie.cpp | 12 ++++ .../general/display/charts/pies/color_pie.h | 6 ++ .../display/dynamic_font_size_label.cpp | 13 +++- .../general/display/dynamic_font_size_label.h | 6 ++ .../display/dynamic_font_size_push_button.cpp | 7 +++ .../display/dynamic_font_size_push_button.h | 7 ++- .../widgets/general/display/labeled_input.cpp | 7 +++ .../widgets/general/display/labeled_input.h | 12 ++-- .../display/shadow_background_label.cpp | 8 ++- .../general/display/shadow_background_label.h | 4 ++ .../widgets/general/home_styled_button.cpp | 14 ++++- .../widgets/general/home_styled_button.h | 6 ++ .../interface/widgets/general/home_widget.cpp | 43 +++++++++++++ .../interface/widgets/general/home_widget.h | 15 +++-- .../general/layout_containers/flow_widget.cpp | 7 +++ .../general/layout_containers/flow_widget.h | 14 +++-- .../overlap_control_widget.cpp | 4 ++ .../overlap_control_widget.h | 12 ++-- .../layout_containers/overlap_widget.cpp | 4 +- .../layout_containers/overlap_widget.h | 7 ++- .../widgets/menus/deck_editor_menu.cpp | 5 ++ .../widgets/menus/deck_editor_menu.h | 3 + .../widgets/onboarding/first_run_wizard.cpp | 5 +- .../widgets/onboarding/first_run_wizard.h | 4 ++ .../onboarding/first_run_wizard_page.h | 2 + .../onboarding/pages/account_setup_page.cpp | 6 ++ .../onboarding/pages/account_setup_page.h | 3 + .../pages/card_database_setup_page.cpp | 8 +++ .../pages/card_database_setup_page.h | 3 + .../widgets/onboarding/pages/finish_page.cpp | 6 ++ .../widgets/onboarding/pages/finish_page.h | 3 + .../pages/preferences_setup_page.cpp | 7 +++ .../onboarding/pages/preferences_setup_page.h | 3 + .../onboarding/pages/theme_setup_page.cpp | 15 ++++- .../onboarding/pages/theme_setup_page.h | 5 ++ .../widgets/onboarding/pages/welcome_page.cpp | 10 ++- .../widgets/onboarding/pages/welcome_page.h | 3 + .../onboarding/shader_banner_widget.cpp | 13 +++- .../widgets/onboarding/shader_banner_widget.h | 2 + .../onboarding/step_indicator_widget.cpp | 6 ++ .../onboarding/step_indicator_widget.h | 1 + .../playmat/playmat_collection_dialog.cpp | 8 +++ .../playmat/playmat_collection_dialog.h | 4 +- .../playmat/playmat_preview_widget.cpp | 11 +++- .../widgets/playmat/playmat_preview_widget.h | 9 ++- .../playmat/playmat_settings_dialog.cpp | 15 ++++- .../widgets/playmat/playmat_settings_dialog.h | 7 ++- .../all_zones_card_amount_widget.cpp | 13 ++++ .../all_zones_card_amount_widget.h | 12 ++-- .../printing_selector/card_amount_widget.cpp | 23 ++++++- .../printing_selector/card_amount_widget.h | 16 ++--- .../printing_selector/printing_selector.cpp | 25 +++++++- .../printing_selector/printing_selector.h | 24 ++++---- .../printing_selector_card_display_widget.cpp | 15 ++++- .../printing_selector_card_display_widget.h | 21 +++++-- .../printing_selector_card_overlay_widget.cpp | 27 +++++++- .../printing_selector_card_overlay_widget.h | 14 +++-- .../printing_selector_card_search_widget.cpp | 6 ++ .../printing_selector_card_search_widget.h | 11 ++-- ...rinting_selector_card_selection_widget.cpp | 7 ++- .../printing_selector_card_selection_widget.h | 10 +-- .../printing_selector_card_sorting_widget.cpp | 15 +++++ .../printing_selector_card_sorting_widget.h | 15 ++++- .../printing_selector_placeholder_widget.cpp | 5 ++ .../printing_selector_placeholder_widget.h | 6 +- ...e_and_collectors_number_display_widget.cpp | 7 ++- ...ame_and_collectors_number_display_widget.h | 8 ++- .../quick_settings/settings_button_widget.cpp | 10 +++ .../quick_settings/settings_button_widget.h | 10 ++- .../quick_settings/settings_popup_widget.cpp | 6 +- .../quick_settings/settings_popup_widget.h | 7 ++- .../widgets/replay/replay_manager.cpp | 6 ++ .../interface/widgets/replay/replay_manager.h | 5 +- .../replay/replay_quick_settings_widget.cpp | 4 ++ .../replay/replay_quick_settings_widget.h | 5 ++ .../widgets/replay/replay_timeline_widget.cpp | 10 ++- .../widgets/replay/replay_timeline_widget.h | 8 +-- .../widgets/replay/replay_widget.cpp | 11 +++- .../interface/widgets/replay/replay_widget.h | 11 ++-- .../widgets/server/chat_view/chat_view.cpp | 27 +++++++- .../widgets/server/chat_view/chat_view.h | 22 +++++-- .../widgets/server/game_filter_configs.h | 5 ++ .../widgets/server/game_selector.cpp | 28 ++++++++- .../interface/widgets/server/game_selector.h | 21 +++++-- .../game_selector_quick_filter_toolbar.cpp | 12 +++- .../game_selector_quick_filter_toolbar.h | 17 ++++-- .../interface/widgets/server/games_model.cpp | 19 +++++- .../interface/widgets/server/games_model.h | 9 ++- .../widgets/server/handle_public_servers.cpp | 9 +++ .../widgets/server/handle_public_servers.h | 9 +++ .../remote/remote_decklist_tree_widget.cpp | 9 +++ .../remote/remote_decklist_tree_widget.h | 11 ++++ .../remote/remote_replay_list_tree_widget.cpp | 11 ++++ .../remote/remote_replay_list_tree_widget.h | 13 +++- .../server/user/user_avatar_provider.cpp | 7 +++ .../server/user/user_avatar_provider.h | 2 + .../server/user/user_card_art_provider.cpp | 13 ++++ .../server/user/user_card_art_provider.h | 6 +- .../server/user/user_card_settings_dialog.cpp | 26 +++++++- .../server/user/user_card_settings_dialog.h | 12 ++-- .../widgets/server/user/user_context_menu.cpp | 34 +++++++++-- .../widgets/server/user/user_context_menu.h | 7 ++- .../widgets/server/user/user_info_box.cpp | 18 +++++- .../widgets/server/user/user_info_box.h | 6 +- .../server/user/user_info_connection.cpp | 5 +- .../server/user/user_info_connection.h | 9 ++- .../widgets/server/user/user_info_popup.cpp | 43 +++++++++++-- .../widgets/server/user/user_info_popup.h | 19 +++--- .../widgets/server/user/user_list_dialog.cpp | 9 +++ .../widgets/server/user/user_list_dialog.h | 5 +- .../widgets/server/user/user_list_manager.cpp | 7 ++- .../widgets/server/user/user_list_manager.h | 10 ++- .../widgets/server/user/user_list_painter.cpp | 21 +++++++ .../widgets/server/user/user_list_painter.h | 7 ++- .../server/user/user_list_panel_widget.cpp | 5 +- .../server/user/user_list_panel_widget.h | 2 + .../widgets/server/user/user_list_widget.cpp | 46 ++++++++++++++ .../widgets/server/user/user_list_widget.h | 33 +++++----- .../settings_page/abstract_settings_page.cpp | 8 +++ .../settings_page/abstract_settings_page.h | 1 + .../appearance_settings_page.cpp | 21 ++++++- .../settings_page/appearance_settings_page.h | 5 +- .../deck_editor_settings_page.cpp | 20 ++++++ .../settings_page/deck_editor_settings_page.h | 11 +++- .../settings_page/general_settings_page.cpp | 16 +++++ .../settings_page/general_settings_page.h | 9 ++- .../settings_page/messages_settings_page.cpp | 13 ++++ .../settings_page/messages_settings_page.h | 9 ++- .../settings_search_delegate.cpp | 17 ++++++ .../settings_page/settings_search_delegate.h | 6 ++ .../settings_page/settings_search_model.cpp | 7 +++ .../settings_page/settings_search_model.h | 10 ++- .../settings_page/shortcut_settings_page.cpp | 9 +++ .../settings_page/shortcut_settings_page.h | 12 ++-- .../settings_page/sound_settings_page.cpp | 11 ++++ .../settings_page/sound_settings_page.h | 7 ++- .../settings_page/storage_settings_page.cpp | 9 +++ .../settings_page/storage_settings_page.h | 6 +- .../user_interface_settings_page.cpp | 9 +++ .../user_interface_settings_page.h | 5 +- .../widgets/tabs/abstract_tab_deck_editor.cpp | 32 +++++++--- .../widgets/tabs/abstract_tab_deck_editor.h | 33 +++------- .../archidekt_deck_listing_api_response.cpp | 3 + .../archidekt_deck_listing_api_response.h | 3 +- .../card/archidekt_api_response_card.cpp | 4 ++ .../card/archidekt_api_response_card.h | 5 +- .../archidekt_api_response_card_entry.cpp | 6 ++ .../card/archidekt_api_response_card_entry.h | 5 +- .../card/archidekt_api_response_edition.cpp | 4 ++ .../card/archidekt_api_response_edition.h | 3 - .../deck/archidekt_api_response_deck.cpp | 7 +++ .../deck/archidekt_api_response_deck.h | 5 +- .../archidekt_api_response_deck_category.cpp | 4 ++ .../archidekt_api_response_deck_category.h | 7 --- ...kt_api_response_deck_listing_container.cpp | 4 +- ...dekt_api_response_deck_listing_container.h | 6 +- .../archidekt_api_response_deck_owner.cpp | 4 ++ .../archidekt_api_response_deck_owner.h | 6 +- ...idekt_api_response_deck_display_widget.cpp | 27 +++++++- ...chidekt_api_response_deck_display_widget.h | 22 ++++--- ...api_response_deck_entry_display_widget.cpp | 17 +++++- ...t_api_response_deck_entry_display_widget.h | 15 +++-- ..._response_deck_listings_display_widget.cpp | 12 +++- ...pi_response_deck_listings_display_widget.h | 16 ++--- ...dekt_deck_preview_image_display_widget.cpp | 8 ++- ...hidekt_deck_preview_image_display_widget.h | 7 ++- .../tabs/api/archidekt/tab_archidekt.cpp | 35 +++++++++-- .../tabs/api/archidekt/tab_archidekt.h | 41 ++++++++----- .../api_response/card_in_deck_request.cpp | 2 + .../api_response/card_in_deck_request.h | 1 + .../commander_spellbook_card_result.cpp | 2 + .../commander_spellbook_deck_request.cpp | 8 +++ .../commander_spellbook_deck_request.h | 3 +- ...nder_spellbook_estimate_bracket_result.cpp | 4 ++ ...mander_spellbook_estimate_bracket_result.h | 1 + .../commander_spellbook_variant_result.cpp | 2 + .../commander_spellbook_variant_result.h | 1 + .../commander_bracket_service.cpp | 2 + .../commander_bracket_service.h | 7 ++- .../commander_bracket_widget.cpp | 8 +++ .../commander_bracket_widget.h | 7 ++- .../commander_spellbook_api_accessor.cpp | 8 +++ .../commander_spellbook_api_accessor.h | 11 ++-- .../commander_spellbook_bracket_explainer.cpp | 4 ++ .../commander_spellbook_bracket_explainer.h | 8 ++- .../handle_commander_brackets.cpp | 9 ++- .../handle_commander_brackets.h | 5 +- .../edhrec_api_response_archidekt_links.cpp | 3 + .../edhrec_api_response_archidekt_links.h | 2 + .../edhrec_average_deck_api_response.cpp | 6 ++ .../average_deck/edhrec_deck_api_response.cpp | 8 ++- .../average_deck/edhrec_deck_api_response.h | 4 +- .../edhrec_api_response_card_prices.cpp | 2 + .../edhrec_api_response_card_container.cpp | 3 + .../edhrec_api_response_card_container.h | 1 + .../edhrec_api_response_card_details.cpp | 2 + .../cards/edhrec_api_response_card_list.cpp | 4 ++ .../cards/edhrec_api_response_card_list.h | 2 +- ...mmander_api_response_commander_details.cpp | 5 ++ ...commander_api_response_commander_details.h | 2 + .../edhrec_commander_api_response.cpp | 5 ++ ...r_api_response_average_deck_statistics.cpp | 2 + .../edhrec_top_cards_api_response.cpp | 5 +- .../top_cards/edhrec_top_cards_api_response.h | 1 + .../edhrec_top_commanders_api_response.cpp | 5 +- .../edhrec_top_commanders_api_response.h | 1 + .../top_tags/edhrec_top_tags_api_response.cpp | 5 +- .../top_tags/edhrec_top_tags_api_response.h | 1 + ...pi_response_card_prices_display_widget.cpp | 8 +++ ..._api_response_card_prices_display_widget.h | 6 +- ...i_response_card_details_display_widget.cpp | 11 ++++ ...api_response_card_details_display_widget.h | 15 +++-- ...response_card_inclusion_display_widget.cpp | 8 +++ ...i_response_card_inclusion_display_widget.h | 8 ++- ..._api_response_card_list_display_widget.cpp | 12 +++- ...ec_api_response_card_list_display_widget.h | 10 +-- ...i_response_card_synergy_display_widget.cpp | 8 +++ ...api_response_card_synergy_display_widget.h | 8 ++- ...ponse_commander_details_display_widget.cpp | 11 +++- ...esponse_commander_details_display_widget.h | 13 ++-- ...api_response_bracket_navigation_widget.cpp | 6 ++ ...r_api_response_bracket_navigation_widget.h | 11 +++- ..._api_response_budget_navigation_widget.cpp | 6 ++ ...er_api_response_budget_navigation_widget.h | 11 +++- ..._commander_api_response_display_widget.cpp | 17 +++++- ...ec_commander_api_response_display_widget.h | 11 ++-- ...mmander_api_response_navigation_widget.cpp | 6 ++ ...commander_api_response_navigation_widget.h | 14 +++-- ..._top_cards_api_response_display_widget.cpp | 9 +++ ...ec_top_cards_api_response_display_widget.h | 11 ++-- ...commanders_api_response_display_widget.cpp | 12 ++++ ...p_commanders_api_response_display_widget.h | 11 ++-- ...c_top_tags_api_response_display_widget.cpp | 9 +++ ...rec_top_tags_api_response_display_widget.h | 10 +-- .../widgets/tabs/api/edhrec/tab_edhrec.cpp | 12 +++- .../widgets/tabs/api/edhrec/tab_edhrec.h | 10 ++- .../tabs/api/edhrec/tab_edhrec_main.cpp | 7 +++ .../widgets/tabs/api/edhrec/tab_edhrec_main.h | 25 +++++--- cockatrice/src/interface/widgets/tabs/tab.cpp | 9 ++- cockatrice/src/interface/widgets/tabs/tab.h | 4 ++ .../interface/widgets/tabs/tab_account.cpp | 8 +++ .../src/interface/widgets/tabs/tab_account.h | 9 ++- .../src/interface/widgets/tabs/tab_admin.cpp | 12 ++++ .../src/interface/widgets/tabs/tab_admin.h | 8 ++- .../widgets/tabs/tab_card_art_rules.cpp | 23 +++++++ .../widgets/tabs/tab_card_art_rules.h | 24 ++++++-- .../widgets/tabs/tab_deck_editor.cpp | 28 ++++----- .../interface/widgets/tabs/tab_deck_editor.h | 10 +-- .../widgets/tabs/tab_deck_storage.cpp | 32 +++++++++- .../interface/widgets/tabs/tab_deck_storage.h | 10 ++- .../interface/widgets/tabs/tab_developer.cpp | 14 +++++ .../interface/widgets/tabs/tab_developer.h | 5 ++ .../src/interface/widgets/tabs/tab_game.cpp | 40 ++++++++++-- .../src/interface/widgets/tabs/tab_game.h | 46 ++++++++------ .../src/interface/widgets/tabs/tab_home.cpp | 4 ++ .../src/interface/widgets/tabs/tab_home.h | 6 +- .../src/interface/widgets/tabs/tab_logs.cpp | 12 ++++ .../src/interface/widgets/tabs/tab_logs.h | 6 +- .../interface/widgets/tabs/tab_message.cpp | 9 ++- .../src/interface/widgets/tabs/tab_message.h | 7 +++ .../interface/widgets/tabs/tab_moderation.cpp | 16 ++++- .../interface/widgets/tabs/tab_moderation.h | 6 +- .../widgets/tabs/tab_public_decks.cpp | 11 +++- .../interface/widgets/tabs/tab_public_decks.h | 5 +- .../interface/widgets/tabs/tab_replays.cpp | 36 ++++++++++- .../src/interface/widgets/tabs/tab_replays.h | 13 +++- .../src/interface/widgets/tabs/tab_report.cpp | 12 +++- .../src/interface/widgets/tabs/tab_report.h | 5 +- .../src/interface/widgets/tabs/tab_room.cpp | 22 +++++-- .../src/interface/widgets/tabs/tab_room.h | 18 +++--- .../src/interface/widgets/tabs/tab_server.cpp | 15 ++++- .../src/interface/widgets/tabs/tab_server.h | 13 ++-- .../interface/widgets/tabs/tab_supervisor.cpp | 41 ++++++++++++- .../interface/widgets/tabs/tab_supervisor.h | 28 +++++---- .../tabs/tab_visual_database_display.cpp | 3 +- .../tabs/tab_visual_database_display.h | 6 ++ .../tab_deck_editor_visual.cpp | 44 ++++++++----- .../tab_deck_editor_visual.h | 15 ++++- .../tab_deck_editor_visual_tab_widget.cpp | 17 ++++++ .../tab_deck_editor_visual_tab_widget.h | 25 +++++--- .../tab_deck_storage_visual.cpp | 9 ++- .../tab_deck_storage_visual.h | 12 ++-- .../utility/card_completer_delegate.cpp | 24 ++++++++ .../widgets/utility/card_completer_delegate.h | 8 ++- .../widgets/utility/card_completer_styler.cpp | 17 ++++++ .../widgets/utility/card_completer_styler.h | 1 + .../widgets/utility/compact_push_button.cpp | 4 ++ .../widgets/utility/compact_push_button.h | 5 ++ .../widgets/utility/completer_utils.cpp | 3 +- .../widgets/utility/custom_line_edit.cpp | 10 ++- .../widgets/utility/custom_line_edit.h | 1 + .../widgets/utility/get_text_with_max.cpp | 2 + .../widgets/utility/get_text_with_max.h | 5 +- .../widgets/utility/line_edit_completer.cpp | 8 +++ .../widgets/utility/line_edit_completer.h | 8 +-- .../widgets/utility/report_utils.cpp | 8 +++ .../interface/widgets/utility/report_utils.h | 3 +- .../utility/reversed_completer_model.cpp | 3 + .../utility/reversed_completer_model.h | 4 +- .../widgets/utility/sequence_edit.cpp | 8 +++ .../interface/widgets/utility/sequence_edit.h | 11 +++- .../utility/visibility_change_listener.h | 3 + ...l_database_display_color_filter_widget.cpp | 11 ++++ ...ual_database_display_color_filter_widget.h | 13 ++-- ...tabase_display_filter_save_load_widget.cpp | 17 +++++- ...database_display_filter_save_load_widget.h | 20 +++--- ...database_display_filter_toolbar_widget.cpp | 27 ++++++++ ...l_database_display_filter_toolbar_widget.h | 20 ++++-- ..._display_format_legality_filter_widget.cpp | 15 +++++ ...se_display_format_legality_filter_widget.h | 17 +++--- ...tabase_display_main_type_filter_widget.cpp | 13 ++++ ...database_display_main_type_filter_widget.h | 16 ++--- ...al_database_display_name_filter_widget.cpp | 21 ++++++- ...sual_database_display_name_filter_widget.h | 15 +++-- ...ual_database_display_set_filter_widget.cpp | 20 ++++++ ...isual_database_display_set_filter_widget.h | 19 +++--- ...atabase_display_sub_type_filter_widget.cpp | 13 ++++ ..._database_display_sub_type_filter_widget.h | 16 +++-- .../visual_database_display_widget.cpp | 47 +++++++++++--- .../visual_database_display_widget.h | 43 ++++++++----- .../visual_database_filter_display_widget.cpp | 5 ++ .../visual_database_filter_display_widget.h | 4 +- .../visual_deck_display_options_widget.cpp | 18 ++++++ .../visual_deck_display_options_widget.h | 16 +++-- .../visual_deck_editor_placeholder_widget.cpp | 4 ++ .../visual_deck_editor_placeholder_widget.h | 6 +- .../visual_deck_editor_sample_hand_widget.cpp | 25 +++++++- .../visual_deck_editor_sample_hand_widget.h | 18 ++++-- .../visual_deck_editor_widget.cpp | 37 +++++++---- .../visual_deck_editor_widget.h | 41 ++++++++----- ...k_preview_color_identity_filter_widget.cpp | 5 ++ ...eck_preview_color_identity_filter_widget.h | 7 ++- .../deck_preview_deck_tags_display_widget.cpp | 8 +++ .../deck_preview_deck_tags_display_widget.h | 3 + .../deck_preview_tag_addition_widget.cpp | 13 +++- .../deck_preview_tag_addition_widget.h | 4 +- .../deck_preview/deck_preview_tag_dialog.cpp | 7 +++ .../deck_preview/deck_preview_tag_dialog.h | 16 +++-- .../deck_preview_tag_display_widget.cpp | 10 +++ .../deck_preview_tag_display_widget.h | 6 +- .../deck_preview_tag_item_widget.cpp | 3 + .../deck_preview_tag_item_widget.h | 6 +- .../deck_preview/deck_preview_widget.cpp | 25 ++++++++ .../deck_preview/deck_preview_widget.h | 13 ++-- .../public_deck_preview_widget.cpp | 8 ++- .../deck_preview/public_deck_preview_widget.h | 5 +- .../remote_public_decks_model.cpp | 6 ++ .../remote_public_decks_model.h | 6 ++ ...ual_deck_storage_folder_display_widget.cpp | 11 ++++ ...isual_deck_storage_folder_display_widget.h | 3 + .../visual_deck_storage_model.cpp | 13 ++++ .../visual_deck_storage_model.h | 10 ++- ...ual_deck_storage_quick_settings_widget.cpp | 11 +++- ...isual_deck_storage_quick_settings_widget.h | 3 + .../visual_deck_storage_search_widget.cpp | 4 ++ .../visual_deck_storage_search_widget.h | 6 +- ...l_deck_storage_sort_filter_proxy_model.cpp | 10 +++ ...ual_deck_storage_sort_filter_proxy_model.h | 8 ++- .../visual_deck_storage_sort_widget.cpp | 3 + .../visual_deck_storage_sort_widget.h | 6 +- .../visual_deck_storage_tag_filter_widget.cpp | 7 +++ .../visual_deck_storage_tag_filter_widget.h | 5 +- .../visual_deck_storage_widget.cpp | 18 +++++- .../visual_deck_storage_widget.h | 20 +++--- cockatrice/src/interface/window_main.cpp | 37 ++++++++--- cockatrice/src/interface/window_main.h | 27 ++++---- cockatrice/src/main.cpp | 32 ++++++++-- cockatrice/src/main.h | 1 - cockatrice/src/single_instance_manager.cpp | 9 +++ cockatrice/src/single_instance_manager.h | 10 +-- .../libcockatrice/card/card_info.cpp | 8 +-- .../libcockatrice/card/card_info.h | 11 ++-- .../card/card_info_comparator.cpp | 6 ++ .../libcockatrice/card/card_info_comparator.h | 3 + .../libcockatrice/card/card_localization.cpp | 2 + .../libcockatrice/card/card_localization.h | 2 + .../card/database/card_database.cpp | 24 +++++--- .../card/database/card_database.h | 24 +++++--- .../card/database/card_database_cache.cpp | 19 +++++- .../card/database/card_database_cache.h | 7 ++- .../card/database/card_database_loader.cpp | 15 +++++ .../card/database/card_database_loader.h | 18 ++++-- .../card/database/card_database_manager.cpp | 7 +++ .../card/database/card_database_manager.h | 7 ++- .../card/database/card_database_querier.cpp | 9 ++- .../card/database/card_database_querier.h | 10 ++- .../database/parser/card_database_parser.cpp | 7 ++- .../database/parser/card_database_parser.h | 11 +++- .../card/database/parser/cockatrice_xml_3.cpp | 20 ++++++ .../card/database/parser/cockatrice_xml_3.h | 7 ++- .../card/database/parser/cockatrice_xml_4.cpp | 23 +++++++ .../card/database/parser/cockatrice_xml_4.h | 10 ++- .../card/format/format_legality_rules.cpp | 3 + .../card/format/format_legality_rules.h | 3 +- .../card/import/card_name_normalizer.cpp | 6 ++ .../card/lazy_properties_hash.cpp | 4 +- .../libcockatrice/card/lazy_properties_hash.h | 2 + .../card/printing/exact_card.cpp | 4 ++ .../libcockatrice/card/printing/exact_card.h | 5 ++ .../card/printing/printing_info.cpp | 3 - .../card/printing/printing_info.h | 3 + .../card/relation/card_relation.cpp | 2 - .../card/relation/card_relation.h | 1 + .../libcockatrice/card/set/card_set.cpp | 2 + .../libcockatrice/card/set/card_set.h | 4 +- .../libcockatrice/card/set/card_set_list.cpp | 7 +++ .../libcockatrice/card/set/card_set_list.h | 2 + .../libcockatrice/deck_list/deck_list.cpp | 16 ++++- .../libcockatrice/deck_list/deck_list.h | 14 +++-- .../deck_list/deck_list_history_manager.cpp | 5 ++ .../deck_list/deck_list_history_manager.h | 4 +- .../deck_list/deck_list_node_tree.cpp | 10 +++ .../deck_list/deck_list_node_tree.h | 8 ++- .../deck_list/deck_list_plain_text_parser.cpp | 7 +++ .../deck_list/deck_list_plain_text_parser.h | 3 +- .../deck_list/playmat_resolver.cpp | 6 ++ .../deck_list/playmat_resolver.h | 5 +- .../deck_list/sideboard_plan.cpp | 6 ++ .../libcockatrice/deck_list/sideboard_plan.h | 1 + .../tree/abstract_deck_list_card_node.cpp | 5 ++ .../tree/abstract_deck_list_card_node.h | 4 ++ .../deck_list/tree/abstract_deck_list_node.h | 4 +- .../deck_list/tree/deck_list_card_node.cpp | 4 ++ .../deck_list/tree/deck_list_card_node.h | 4 ++ .../deck_list/tree/inner_deck_list_node.cpp | 12 ++++ .../deck_list/tree/inner_deck_list_node.h | 6 ++ .../libcockatrice/filters/filter_card.cpp | 3 + .../libcockatrice/filters/filter_card.h | 2 + .../libcockatrice/filters/filter_string.cpp | 23 +++++++ .../libcockatrice/filters/filter_string.h | 7 +-- .../libcockatrice/filters/filter_tree.cpp | 8 +++ .../libcockatrice/filters/filter_tree.h | 9 ++- .../card/card_completer_proxy_model.cpp | 9 +++ .../card/card_completer_proxy_model.h | 3 + .../database/card/card_search_model.cpp | 4 ++ .../models/database/card/card_search_model.h | 13 +++- .../database/card_database_display_model.cpp | 17 ++++++ .../database/card_database_display_model.h | 9 +++ .../models/database/card_database_model.cpp | 10 ++- .../models/database/card_database_model.h | 9 ++- .../database/card_set/card_sets_model.cpp | 13 ++++ .../database/card_set/card_sets_model.h | 15 ++++- .../database/token/token_display_model.cpp | 6 ++ .../database/token/token_display_model.h | 5 ++ .../database/token/token_edit_model.cpp | 4 ++ .../models/database/token/token_edit_model.h | 5 ++ .../models/deck_list/deck_list_model.cpp | 21 +++++++ .../models/deck_list/deck_list_model.h | 20 ++++-- .../deck_list_model_custom_zones.cpp | 4 ++ .../deck_list/deck_list_model_custom_zones.h | 5 +- .../deck_list_sort_filter_proxy_model.cpp | 10 +++ .../deck_list_sort_filter_proxy_model.h | 7 ++- .../client/abstract/abstract_client.cpp | 19 ++++++ .../network/client/abstract/abstract_client.h | 22 ++++++- .../client/abstract/latency_tracker.cpp | 3 + .../network/client/abstract/latency_tracker.h | 2 + .../network/client/local/local_client.cpp | 8 +++ .../network/client/local/local_client.h | 5 ++ .../network/client/remote/remote_client.cpp | 17 +++++- .../network/client/remote/remote_client.h | 16 ++++- .../network/server/local/local_server.cpp | 9 +++ .../network/server/local/local_server.h | 3 + .../server/local/local_server_interface.cpp | 4 +- .../server/local/local_server_interface.h | 5 ++ .../game/server_abstract_participant.cpp | 11 +++- .../remote/game/server_abstract_participant.h | 3 +- .../remote/game/server_abstract_player.cpp | 28 ++++++++- .../remote/game/server_abstract_player.h | 11 +++- .../server/remote/game/server_arrow.cpp | 6 ++ .../server/remote/game/server_arrowtarget.h | 1 + .../server/remote/game/server_card.cpp | 10 ++- .../network/server/remote/game/server_card.h | 7 ++- .../server/remote/game/server_cardzone.cpp | 8 +++ .../server/remote/game/server_cardzone.h | 3 +- .../server/remote/game/server_counter.cpp | 3 + .../server/remote/game/server_game.cpp | 30 ++++++++- .../network/server/remote/game/server_game.h | 27 ++++++-- .../server/remote/game/server_player.cpp | 31 +++++++--- .../server/remote/game/server_player.h | 11 ++++ .../server/remote/game/server_spectator.cpp | 6 ++ .../server/remote/game/server_spectator.h | 6 ++ .../network/server/remote/server.cpp | 28 ++++++++- .../network/server/remote/server.h | 14 +++-- .../remote/server_abstractuserinterface.cpp | 15 ++++- .../remote/server_abstractuserinterface.h | 10 ++- .../server/remote/server_database_interface.h | 13 ++++ .../server/remote/server_protocolhandler.cpp | 32 +++++++++- .../server/remote/server_protocolhandler.h | 18 ++---- .../remote/server_remoteuserinterface.h | 3 + .../remote/server_response_containers.cpp | 5 ++ .../remote/server_response_containers.h | 4 ++ .../network/server/remote/server_room.cpp | 21 ++++++- .../network/server/remote/server_room.h | 17 ++++-- .../protocol/debug_pb_message.cpp | 4 +- .../libcockatrice/protocol/featureset.cpp | 1 + .../protocol/get_pb_extension.cpp | 1 + .../protocol/pending_command.cpp | 3 + .../libcockatrice/protocol/pending_command.h | 6 +- .../libcockatrice/rng/rng_abstract.cpp | 2 + .../libcockatrice/rng/rng_abstract.h | 1 + .../libcockatrice/rng/rng_sfmt.cpp | 9 ++- .../libcockatrice/rng/rng_sfmt.h | 5 +- .../settings/appearance_settings.cpp | 6 ++ .../settings/appearance_settings.h | 5 ++ .../settings/cache_storage_settings.cpp | 6 ++ .../settings/cache_storage_settings.h | 4 ++ .../settings/card_database_settings.cpp | 10 +++ .../settings/card_database_settings.h | 5 ++ .../settings/card_override_settings.cpp | 7 +++ .../settings/card_override_settings.h | 7 ++- .../settings/cards_display_settings.cpp | 8 +++ .../settings/cards_display_settings.h | 5 +- .../libcockatrice/settings/chat_settings.cpp | 6 ++ .../libcockatrice/settings/chat_settings.h | 4 ++ .../settings/commander_bracket_settings.cpp | 10 +++ .../settings/commander_bracket_settings.h | 4 +- .../libcockatrice/settings/debug_settings.cpp | 7 ++- .../libcockatrice/settings/debug_settings.h | 5 ++ .../settings/deck_editor_settings.cpp | 6 ++ .../settings/deck_editor_settings.h | 4 ++ .../settings/download_settings.cpp | 8 +++ .../settings/download_settings.h | 5 ++ .../settings/game_filters_settings.cpp | 8 +++ .../settings/game_filters_settings.h | 7 +++ .../libcockatrice/settings/game_settings.cpp | 6 ++ .../libcockatrice/settings/game_settings.h | 4 ++ .../settings/interface_settings.cpp | 11 ++++ .../settings/interface_settings.h | 8 +++ .../settings/layouts_settings.cpp | 6 ++ .../libcockatrice/settings/layouts_settings.h | 6 +- .../settings/message_settings.cpp | 6 ++ .../libcockatrice/settings/message_settings.h | 5 ++ .../settings/network_settings.cpp | 6 ++ .../libcockatrice/settings/network_settings.h | 5 ++ .../libcockatrice/settings/paths_settings.cpp | 7 ++- .../libcockatrice/settings/paths_settings.h | 4 ++ .../settings/personal_settings.cpp | 7 +++ .../settings/personal_settings.h | 7 ++- .../settings/recents_settings.cpp | 7 +++ .../libcockatrice/settings/recents_settings.h | 6 ++ .../settings/servers_settings.cpp | 9 +++ .../libcockatrice/settings/servers_settings.h | 7 ++- .../libcockatrice/settings/settings_manager.h | 5 +- .../settings/settings_migration.cpp | 10 +++ .../libcockatrice/settings/sound_settings.cpp | 6 ++ .../libcockatrice/settings/sound_settings.h | 4 ++ .../libcockatrice/settings/tabs_settings.cpp | 7 +++ .../libcockatrice/settings/tabs_settings.h | 4 ++ .../settings/updates_settings.cpp | 7 +++ .../libcockatrice/settings/updates_settings.h | 6 +- .../settings/visual_deck_storage_settings.cpp | 7 +++ .../settings/visual_deck_storage_settings.h | 4 ++ .../libcockatrice/utility/cryptoutil.cpp | 1 + .../libcockatrice/utility/expression.cpp | 5 ++ .../libcockatrice/utility/levenshtein.cpp | 2 + .../libcockatrice/utility/passwordhasher.cpp | 2 + .../libcockatrice/utility/passwordhasher.h | 2 +- .../utility/report_categories.cpp | 3 + .../utility/server_rate_limiter.cpp | 4 ++ .../utility/server_rate_limiter.h | 1 + .../utility/translation_loader.cpp | 10 +++ .../utility/warning_categories.cpp | 4 ++ oracle/src/main.cpp | 4 ++ oracle/src/oracleimporter.cpp | 16 +++++ oracle/src/oracleimporter.h | 15 ++++- oracle/src/oraclewizard.cpp | 25 +++++--- oracle/src/oraclewizard.h | 13 ++-- oracle/src/pages.cpp | 33 ++++++++-- oracle/src/pages.h | 14 ++--- oracle/src/pagetemplates.cpp | 17 +++++- oracle/src/pagetemplates.h | 8 ++- oracle/src/parsehelpers.cpp | 4 ++ oracle/src/raw_json_scanner.cpp | 4 ++ oracle/src/raw_json_scanner.h | 4 +- servatrice/src/email_parser.cpp | 2 + servatrice/src/event_loop_watchdog.cpp | 2 + servatrice/src/event_loop_watchdog.h | 1 + servatrice/src/isl_interface.cpp | 26 +++++++- servatrice/src/isl_interface.h | 22 +++++-- servatrice/src/main.cpp | 16 ++++- servatrice/src/metrics_registry.cpp | 1 + servatrice/src/metrics_registry.h | 2 +- servatrice/src/servatrice.cpp | 25 +++++++- servatrice/src/servatrice.h | 20 ++++-- servatrice/src/servatrice_connection_pool.h | 1 + .../src/servatrice_database_interface.cpp | 26 +++++++- .../src/servatrice_database_interface.h | 12 +++- servatrice/src/server_logger.cpp | 8 +++ servatrice/src/server_logger.h | 6 +- servatrice/src/serversocketinterface.cpp | 48 +++++++++++++-- servatrice/src/serversocketinterface.h | 61 ++++++++++++++----- servatrice/src/settingscache.cpp | 7 +++ servatrice/src/settingscache.h | 3 + servatrice/src/signalhandler.cpp | 4 ++ servatrice/src/signalhandler.h | 1 + servatrice/src/smtpclient.cpp | 8 +++ servatrice/src/smtpclient.h | 4 +- .../card_zone_algorithms_test.cpp | 1 + tests/carddatabase/carddatabase_test.cpp | 15 ++++- tests/carddatabase/filter_string_test.cpp | 18 +++++- tests/carddatabase/load_benchmark.cpp | 15 +++-- tests/carddatabase/mocks.h | 2 +- tests/clamped_arithmetic_test.cpp | 1 + tests/deck_hash_performance_test.cpp | 6 +- .../deck_list_model_custom_zones_test.cpp | 9 +++ .../deck_list_model_zone_integration_test.cpp | 13 ++++ .../deck_list_zones/deck_list_zones_test.cpp | 8 +++ tests/dummy_test.cpp | 1 + tests/expression_test.cpp | 1 + tests/lag_monitor_test.cpp | 2 + tests/latency_tracker_test.cpp | 4 ++ tests/loader_local_matching_test.cpp | 9 +++ .../clipboard_testing.cpp | 6 ++ .../clipboard_testing.h | 7 ++- .../loading_from_clipboard_test.cpp | 6 ++ tests/metrics_registry_test.cpp | 1 + .../movecard_tests/reverse_card_move_test.cpp | 5 ++ .../oracle/oracle_importer_benchmark_test.cpp | 16 +++++ tests/oracle/oracle_importer_test.cpp | 21 ++++++- tests/oracle/parse_cipt_test.cpp | 1 + tests/password_hash_test.cpp | 3 + .../picture_loader_benchmark.cpp | 16 ++++- .../settings_cache_mock.cpp | 8 ++- tests/playmat_resolver_test.cpp | 9 +++ tests/report_categories_test.cpp | 1 + tests/server_card_counter_test.cpp | 4 +- tests/server_counter_test.cpp | 4 ++ tests/server_developer_role_test.cpp | 6 ++ tests/server_game_join_test.cpp | 5 ++ tests/server_rate_limiter_test.cpp | 4 ++ tests/settings/settings_defaults_test.cpp | 9 ++- tests/settings/settings_manager_test.cpp | 4 ++ tests/settings/settings_migration_test.cpp | 11 ++++ tests/single_instance_manager_test.cpp | 6 ++ tests/test_age_formatting.cpp | 3 + .../theme_migration/theme_migration_test.cpp | 4 ++ tests/translation_loader_test.cpp | 5 ++ tests/warning_categories_test.cpp | 2 + 1078 files changed, 9093 insertions(+), 1769 deletions(-) diff --git a/cockatrice/src/client/lag_monitor.cpp b/cockatrice/src/client/lag_monitor.cpp index 383d64644..6b72087ec 100644 --- a/cockatrice/src/client/lag_monitor.cpp +++ b/cockatrice/src/client/lag_monitor.cpp @@ -1,7 +1,10 @@ #include "lag_monitor.h" +#include #include +#include #include +#include #include LagMonitor::LagMonitor(QObject *parent) : QObject(parent) diff --git a/cockatrice/src/client/lag_monitor.h b/cockatrice/src/client/lag_monitor.h index 9fdf6b283..0bb98c25e 100644 --- a/cockatrice/src/client/lag_monitor.h +++ b/cockatrice/src/client/lag_monitor.h @@ -6,15 +6,15 @@ #ifndef LAG_MONITOR_H #define LAG_MONITOR_H -#include #include #include #include #include +#include +#include inline Q_LOGGING_CATEGORY(LagMonitorLog, "lag_monitor"); -class QEvent; class QTimer; /** diff --git a/cockatrice/src/client/latency_graph_widget.cpp b/cockatrice/src/client/latency_graph_widget.cpp index 46d6ccdd3..72df3ce6c 100644 --- a/cockatrice/src/client/latency_graph_widget.cpp +++ b/cockatrice/src/client/latency_graph_widget.cpp @@ -5,7 +5,11 @@ #include "latency_graph_widget.h" +#include #include +#include +#include +#include LatencyGraphWidget::LatencyGraphWidget(QWidget *parent) : QWidget(parent) { diff --git a/cockatrice/src/client/latency_graph_widget.h b/cockatrice/src/client/latency_graph_widget.h index 4f6f38f8b..31a7022b2 100644 --- a/cockatrice/src/client/latency_graph_widget.h +++ b/cockatrice/src/client/latency_graph_widget.h @@ -8,6 +8,8 @@ #include #include +#include +#include /** * @brief Bar graph of recent network round-trip samples. diff --git a/cockatrice/src/client/latency_status_widget.cpp b/cockatrice/src/client/latency_status_widget.cpp index 779c726eb..940074581 100644 --- a/cockatrice/src/client/latency_status_widget.cpp +++ b/cockatrice/src/client/latency_status_widget.cpp @@ -6,11 +6,15 @@ #include "latency_status_widget.h" #include "latency_graph_widget.h" +#include "latency_tracker.h" #include #include #include +#include +#include #include +#include LatencyStatusWidget::LatencyStatusWidget(QWidget *parent) : QWidget(parent) { diff --git a/cockatrice/src/client/latency_status_widget.h b/cockatrice/src/client/latency_status_widget.h index d9e1d130c..24d6fda4d 100644 --- a/cockatrice/src/client/latency_status_widget.h +++ b/cockatrice/src/client/latency_status_widget.h @@ -7,8 +7,10 @@ #define LATENCY_STATUS_WIDGET_H #include +#include #include #include +#include class QLabel; class LatencyGraphWidget; diff --git a/cockatrice/src/client/network/connection_controller/remote_connection_controller.cpp b/cockatrice/src/client/network/connection_controller/remote_connection_controller.cpp index c1598bd25..7480da27e 100644 --- a/cockatrice/src/client/network/connection_controller/remote_connection_controller.cpp +++ b/cockatrice/src/client/network/connection_controller/remote_connection_controller.cpp @@ -8,14 +8,25 @@ #include "../interface/widgets/dialogs/dlg_forgot_password_reset.h" #include "../interface/widgets/dialogs/dlg_register.h" #include "../interface/widgets/utility/get_text_with_max.h" +#include "libcockatrice/protocol/pb/event_connection_closed.pb.h" +#include "libcockatrice/protocol/pb/event_server_shutdown.pb.h" +#include #include +#include #include +#include #include +#include +#include +#include #include #include #include #include +#include + +class QWidget; ConnectionController::ConnectionController(QWidget *dialogParent, QObject *parent) : QObject(parent), dialogParent(dialogParent) diff --git a/cockatrice/src/client/network/connection_controller/remote_connection_controller.h b/cockatrice/src/client/network/connection_controller/remote_connection_controller.h index bae99a3e0..d4a832c75 100644 --- a/cockatrice/src/client/network/connection_controller/remote_connection_controller.h +++ b/cockatrice/src/client/network/connection_controller/remote_connection_controller.h @@ -2,17 +2,22 @@ #define COCKATRICE_REMOTE_CONNECTION_CONTROLLER_H #include "abstract_client.h" +#include "latency_tracker.h" #include #include #include -#include -#include -#include +#include +#include class RemoteClient; class ServerInfo_User; class DlgConnect; +class Event_ConnectionClosed; +class Event_ServerShutdown; +class QThread; +class QWidget; +template class QList; /** * Owns the RemoteClient and its worker thread. diff --git a/cockatrice/src/client/network/interfaces/deck_stats_interface.cpp b/cockatrice/src/client/network/interfaces/deck_stats_interface.cpp index 42292b2aa..d5cfdbbc9 100644 --- a/cockatrice/src/client/network/interfaces/deck_stats_interface.cpp +++ b/cockatrice/src/client/network/interfaces/deck_stats_interface.cpp @@ -1,11 +1,22 @@ #include "deck_stats_interface.h" +#include "libcockatrice/card/card_info.h" +#include "libcockatrice/card/database/card_database_querier.h" +#include "libcockatrice/deck_list/tree/inner_deck_list_node.h" + +#include #include #include +#include #include #include #include +#include +#include +#include +#include #include +#include #include #include #include diff --git a/cockatrice/src/client/network/interfaces/deck_stats_interface.h b/cockatrice/src/client/network/interfaces/deck_stats_interface.h index 09bf998de..e7791075c 100644 --- a/cockatrice/src/client/network/interfaces/deck_stats_interface.h +++ b/cockatrice/src/client/network/interfaces/deck_stats_interface.h @@ -7,7 +7,8 @@ #ifndef DECKSTATS_INTERFACE_H #define DECKSTATS_INTERFACE_H -#include +#include +#include class QByteArray; class QNetworkAccessManager; diff --git a/cockatrice/src/client/network/interfaces/tapped_out_interface.cpp b/cockatrice/src/client/network/interfaces/tapped_out_interface.cpp index 627b7fe34..30044c2b6 100644 --- a/cockatrice/src/client/network/interfaces/tapped_out_interface.cpp +++ b/cockatrice/src/client/network/interfaces/tapped_out_interface.cpp @@ -1,11 +1,28 @@ #include "tapped_out_interface.h" +#include "libcockatrice/card/card_info.h" +#include "libcockatrice/card/database/card_database_querier.h" +#include "libcockatrice/deck_list/tree/inner_deck_list_node.h" + +#include +#include #include +#include #include +#include +#include #include #include #include +#include +#include +#include +#include +#include +#include #include +#include +#include #include #include #include diff --git a/cockatrice/src/client/network/interfaces/tapped_out_interface.h b/cockatrice/src/client/network/interfaces/tapped_out_interface.h index 32f9369d5..615991b07 100644 --- a/cockatrice/src/client/network/interfaces/tapped_out_interface.h +++ b/cockatrice/src/client/network/interfaces/tapped_out_interface.h @@ -9,6 +9,7 @@ #include #include +#include inline Q_LOGGING_CATEGORY(TappedOutInterfaceLog, "tapped_out_interface"); diff --git a/cockatrice/src/client/network/parsers/deck_link_to_api_transformer.cpp b/cockatrice/src/client/network/parsers/deck_link_to_api_transformer.cpp index 010b63684..7127b0a29 100644 --- a/cockatrice/src/client/network/parsers/deck_link_to_api_transformer.cpp +++ b/cockatrice/src/client/network/parsers/deck_link_to_api_transformer.cpp @@ -1,6 +1,7 @@ #include "deck_link_to_api_transformer.h" #include +#include namespace DeckLinkToApiTransformer { diff --git a/cockatrice/src/client/network/update/card_spoiler/spoiler_background_updater.cpp b/cockatrice/src/client/network/update/card_spoiler/spoiler_background_updater.cpp index dae633717..ae5e92d6c 100644 --- a/cockatrice/src/client/network/update/card_spoiler/spoiler_background_updater.cpp +++ b/cockatrice/src/client/network/update/card_spoiler/spoiler_background_updater.cpp @@ -1,21 +1,35 @@ #include "spoiler_background_updater.h" -#include "../../../../interface/window_main.h" #include "../../../../main.h" #include "../../../settings/cache_settings.h" +#include #include #include #include +#include #include +#include +#include +#include #include +#include +#include #include +#include +#include +#include +#include #include -#include +#include +#include +#include #include #include #include #include +#include +#include #include #define SPOILERS_STATUS_URL "https://raw.githubusercontent.com/Cockatrice/Magic-Spoiler/files/SpoilerSeasonEnabled" diff --git a/cockatrice/src/client/network/update/card_spoiler/spoiler_background_updater.h b/cockatrice/src/client/network/update/card_spoiler/spoiler_background_updater.h index 03d4897a2..a6c4ed00f 100644 --- a/cockatrice/src/client/network/update/card_spoiler/spoiler_background_updater.h +++ b/cockatrice/src/client/network/update/card_spoiler/spoiler_background_updater.h @@ -10,7 +10,11 @@ #include #include #include -#include +#include +#include + +class QProcess; +class QUrl; inline Q_LOGGING_CATEGORY(SpoilerBackgroundUpdaterLog, "spoiler_background_updater"); diff --git a/cockatrice/src/client/network/update/client/client_update_checker.h b/cockatrice/src/client/network/update/client/client_update_checker.h index 1a89de533..16cbd0369 100644 --- a/cockatrice/src/client/network/update/client/client_update_checker.h +++ b/cockatrice/src/client/network/update/client/client_update_checker.h @@ -6,9 +6,12 @@ #ifndef CLIENT_UPDATE_CHECKER_H #define CLIENT_UPDATE_CHECKER_H -#include +#include "release_channel.h" -class Release; +#include +#include +#include +#include /** * We use a singleton instance of UpdateChannel, which can cause interference and feedback loops when multiple objects diff --git a/cockatrice/src/client/network/update/client/release_channel.cpp b/cockatrice/src/client/network/update/client/release_channel.cpp index f401dfd00..45c503623 100644 --- a/cockatrice/src/client/network/update/client/release_channel.cpp +++ b/cockatrice/src/client/network/update/client/release_channel.cpp @@ -2,15 +2,27 @@ #include "version_string.h" +#include +#include #include #include #include -#include +#include +#include +#include +#include +#include #include +#include #include -#include +#include +#include +#include +#include #include #include +#include +#include #if defined(Q_OS_MACOS) #include diff --git a/cockatrice/src/client/network/update/client/release_channel.h b/cockatrice/src/client/network/update/client/release_channel.h index e038cb2f4..183a766ab 100644 --- a/cockatrice/src/client/network/update/client/release_channel.h +++ b/cockatrice/src/client/network/update/client/release_channel.h @@ -11,8 +11,9 @@ #include #include #include -#include +#include #include +#include #include inline Q_LOGGING_CATEGORY(ReleaseChannelLog, "release_channel"); diff --git a/cockatrice/src/client/network/update/client/update_downloader.cpp b/cockatrice/src/client/network/update/client/update_downloader.cpp index a71bcf8f8..c86972d60 100644 --- a/cockatrice/src/client/network/update/client/update_downloader.cpp +++ b/cockatrice/src/client/network/update/client/update_downloader.cpp @@ -1,6 +1,14 @@ #include "update_downloader.h" +#include +#include +#include +#include +#include +#include +#include #include +#include UpdateDownloader::UpdateDownloader(QObject *parent) : QObject(parent), response(nullptr) { diff --git a/cockatrice/src/client/network/update/client/update_downloader.h b/cockatrice/src/client/network/update/client/update_downloader.h index 9a0caccbc..8aeefb22a 100644 --- a/cockatrice/src/client/network/update/client/update_downloader.h +++ b/cockatrice/src/client/network/update/client/update_downloader.h @@ -7,8 +7,14 @@ #ifndef COCKATRICE_UPDATEDOWNLOADER_H #define COCKATRICE_UPDATEDOWNLOADER_H +#include #include -#include +#include +#include +#include +#include + +class QNetworkAccessManager; class UpdateDownloader : public QObject { diff --git a/cockatrice/src/client/settings/cache_settings.cpp b/cockatrice/src/client/settings/cache_settings.cpp index 0f8693f2d..15a41e7e1 100644 --- a/cockatrice/src/client/settings/cache_settings.cpp +++ b/cockatrice/src/client/settings/cache_settings.cpp @@ -2,15 +2,20 @@ #include "../network/update/client/release_channel.h" #include "card_counter_settings.h" +#include "libcockatrice/interfaces/interface_card_database_path_provider.h" #include "shortcuts_settings.h" -#include "version_string.h" +#include #include #include #include #include +#include #include +#include #include +#include +#include #include #include #include diff --git a/cockatrice/src/client/settings/cache_settings.h b/cockatrice/src/client/settings/cache_settings.h index 7a90d82f1..5f699247d 100644 --- a/cockatrice/src/client/settings/cache_settings.h +++ b/cockatrice/src/client/settings/cache_settings.h @@ -7,11 +7,13 @@ #ifndef SETTINGSCACHE_H #define SETTINGSCACHE_H +#include #include +#include #include #include #include -#include +#include inline Q_LOGGING_CATEGORY(SettingsCacheLog, "settings_cache"); diff --git a/cockatrice/src/client/settings/card_counter_settings.cpp b/cockatrice/src/client/settings/card_counter_settings.cpp index d4030c174..4bdd581b5 100644 --- a/cockatrice/src/client/settings/card_counter_settings.cpp +++ b/cockatrice/src/client/settings/card_counter_settings.cpp @@ -1,8 +1,15 @@ #include "card_counter_settings.h" +#include "libcockatrice/settings/settings_manager.h" + +#include #include #include +#include #include +#include + +class QObject; CardCounterSettings::CardCounterSettings(const QString &settingsPath, QObject *parent) : SettingsManager(settingsPath + "card_counters.ini", "cards", "counters", parent) diff --git a/cockatrice/src/client/settings/card_counter_settings.h b/cockatrice/src/client/settings/card_counter_settings.h index 2ac658177..e5ca0a9bb 100644 --- a/cockatrice/src/client/settings/card_counter_settings.h +++ b/cockatrice/src/client/settings/card_counter_settings.h @@ -7,10 +7,12 @@ #ifndef CARD_COUNTER_SETTINGS_H #define CARD_COUNTER_SETTINGS_H +#include #include +#include -class QSettings; class QColor; +class QObject; class CardCounterSettings : public SettingsManager { diff --git a/cockatrice/src/client/settings/shortcut_treeview.cpp b/cockatrice/src/client/settings/shortcut_treeview.cpp index b909d47ac..4a5bafb01 100644 --- a/cockatrice/src/client/settings/shortcut_treeview.cpp +++ b/cockatrice/src/client/settings/shortcut_treeview.cpp @@ -3,7 +3,24 @@ #include "cache_settings.h" #include "shortcuts_settings.h" +#include +#include +#include +#include #include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +class QObject; +class QWidget; ShortcutFilterProxyModel::ShortcutFilterProxyModel(QObject *parent) : QSortFilterProxyModel(parent) { diff --git a/cockatrice/src/client/settings/shortcut_treeview.h b/cockatrice/src/client/settings/shortcut_treeview.h index afaf7e7ed..53f3fa0ef 100644 --- a/cockatrice/src/client/settings/shortcut_treeview.h +++ b/cockatrice/src/client/settings/shortcut_treeview.h @@ -8,8 +8,13 @@ #define SHORTCUT_TREEVIEW_H #include -#include +#include #include +#include + +class QObject; +class QStandardItemModel; +class QWidget; /** * Custom implementation of QSortFilterProxyModel that appends the source and parent strings together when filtering diff --git a/cockatrice/src/client/settings/shortcuts_settings.cpp b/cockatrice/src/client/settings/shortcuts_settings.cpp index 2ff65ab6f..ffb4afcac 100644 --- a/cockatrice/src/client/settings/shortcuts_settings.cpp +++ b/cockatrice/src/client/settings/shortcuts_settings.cpp @@ -2,9 +2,13 @@ #include #include +#include #include +#include +#include +#include #include -#include +#include ShortcutKey::ShortcutKey(const QString &_name, QList _sequence, ShortcutGroup::Groups _group) : QList(_sequence), name(_name), group(_group) diff --git a/cockatrice/src/client/settings/shortcuts_settings.h b/cockatrice/src/client/settings/shortcuts_settings.h index f4ebc204e..24790a407 100644 --- a/cockatrice/src/client/settings/shortcuts_settings.h +++ b/cockatrice/src/client/settings/shortcuts_settings.h @@ -8,9 +8,18 @@ #define SHORTCUTSSETTINGS_H #include +#include +#include +#include #include +#include #include -#include +#include +#include +#include +#include +#include +#include inline Q_LOGGING_CATEGORY(ShortcutsSettingsLog, "shortcuts_settings"); diff --git a/cockatrice/src/client/sound_engine.cpp b/cockatrice/src/client/sound_engine.cpp index 96cafa3d3..4ac142cf4 100644 --- a/cockatrice/src/client/sound_engine.cpp +++ b/cockatrice/src/client/sound_engine.cpp @@ -4,8 +4,15 @@ #include #include +#include #include +#include +#include #include +#include +#include +#include +#include #include #define DEFAULT_THEME_NAME "Default" diff --git a/cockatrice/src/client/sound_engine.h b/cockatrice/src/client/sound_engine.h index 0c201523a..8167c71b5 100644 --- a/cockatrice/src/client/sound_engine.h +++ b/cockatrice/src/client/sound_engine.h @@ -7,17 +7,17 @@ #ifndef SOUNDENGINE_H #define SOUNDENGINE_H -#include #include #include -#include #include #include +#include + +class QAudioOutput; +class QMediaPlayer; inline Q_LOGGING_CATEGORY(SoundEngineLog, "sound_engine"); -class QBuffer; - typedef QMap QStringMap; class SoundEngine : public QObject diff --git a/cockatrice/src/filters/deck_filter_string.cpp b/cockatrice/src/filters/deck_filter_string.cpp index a2b7519a8..616311750 100644 --- a/cockatrice/src/filters/deck_filter_string.cpp +++ b/cockatrice/src/filters/deck_filter_string.cpp @@ -1,9 +1,27 @@ #include "deck_filter_string.h" +#include "../interface/deck_loader/loaded_deck.h" +#include "libcockatrice/card/card_localization.h" +#include "libcockatrice/card/database/card_database_querier.h" +#include "libcockatrice/deck_list/deck_list.h" +#include "libcockatrice/deck_list/tree/deck_list_card_node.h" + +#include +#include #include +#include +#include +#include +#include +#include #include #include #include +#include +#include +#include +#include +#include static peg::parser search(R"( Start <- QueryPartList diff --git a/cockatrice/src/filters/deck_filter_string.h b/cockatrice/src/filters/deck_filter_string.h index 5b1419004..76b891b59 100644 --- a/cockatrice/src/filters/deck_filter_string.h +++ b/cockatrice/src/filters/deck_filter_string.h @@ -7,13 +7,14 @@ #ifndef DECK_FILTER_STRING_H #define DECK_FILTER_STRING_H -#include "../interface/deck_loader/loaded_deck.h" - #include #include #include #include +struct CardSearchLanguage; +struct LoadedDeck; + inline Q_LOGGING_CATEGORY(DeckFilterStringLog, "deck_filter_string"); /** diff --git a/cockatrice/src/filters/filter_builder.cpp b/cockatrice/src/filters/filter_builder.cpp index f109fbcd3..6cc893224 100644 --- a/cockatrice/src/filters/filter_builder.cpp +++ b/cockatrice/src/filters/filter_builder.cpp @@ -5,8 +5,15 @@ #include #include +#include #include +#include +#include +#include +#include +#include #include +#include FilterBuilder::FilterBuilder(QWidget *parent) : QWidget(parent) { diff --git a/cockatrice/src/filters/filter_builder.h b/cockatrice/src/filters/filter_builder.h index 98fe3fd02..2aa38c992 100644 --- a/cockatrice/src/filters/filter_builder.h +++ b/cockatrice/src/filters/filter_builder.h @@ -8,8 +8,8 @@ #define FILTERBUILDER_H #include +#include -class QCheckBox; class QComboBox; class LineEditUnfocusable; class CardFilter; diff --git a/cockatrice/src/filters/filter_tree_model.cpp b/cockatrice/src/filters/filter_tree_model.cpp index 33b54530e..b3bf307f1 100644 --- a/cockatrice/src/filters/filter_tree_model.cpp +++ b/cockatrice/src/filters/filter_tree_model.cpp @@ -1,8 +1,15 @@ #include "filter_tree_model.h" +#include #include +#include +#include +#include #include #include +#include + +class QObject; FilterTreeModel::FilterTreeModel(QObject *parent) : QAbstractItemModel(parent) { diff --git a/cockatrice/src/filters/filter_tree_model.h b/cockatrice/src/filters/filter_tree_model.h index 7452f7a61..826fcc941 100644 --- a/cockatrice/src/filters/filter_tree_model.h +++ b/cockatrice/src/filters/filter_tree_model.h @@ -8,11 +8,15 @@ #define FILTERTREEMODEL_H #include +#include +#include #include +#include +#include class FilterTree; -class CardFilter; class FilterTreeNode; +class QObject; class FilterTreeModel : public QAbstractItemModel { diff --git a/cockatrice/src/filters/syntax_help.cpp b/cockatrice/src/filters/syntax_help.cpp index fa5338a41..baf5764d0 100644 --- a/cockatrice/src/filters/syntax_help.cpp +++ b/cockatrice/src/filters/syntax_help.cpp @@ -1,8 +1,21 @@ #include "syntax_help.h" +#include #include +#include +#include +#include +#include +#include #include +#include +#include +#include +#include +#include #include +#include +#include /** * Creates the card search syntax help window diff --git a/cockatrice/src/filters/syntax_help.h b/cockatrice/src/filters/syntax_help.h index d06fe03e5..52c878691 100644 --- a/cockatrice/src/filters/syntax_help.h +++ b/cockatrice/src/filters/syntax_help.h @@ -8,9 +8,10 @@ #ifndef SEARCH_SYNTAX_HELP_H #define SEARCH_SYNTAX_HELP_H -#include #include -#include + +class QLineEdit; +class QTextBrowser; inline Q_LOGGING_CATEGORY(SyntaxHelpLog, "syntax_help"); diff --git a/cockatrice/src/game/abstract_game.cpp b/cockatrice/src/game/abstract_game.cpp index 6aa2ab28f..efc575eff 100644 --- a/cockatrice/src/game/abstract_game.cpp +++ b/cockatrice/src/game/abstract_game.cpp @@ -1,7 +1,18 @@ #include "abstract_game.h" -#include "../interface/widgets/tabs/tab_game.h" +#include "game_event_handler.h" +#include "game_meta_info.h" +#include "game_state.h" +#include "libcockatrice/protocol/pb/game_replay.pb.h" +#include "player/player_info.h" #include "player/player_logic.h" +#include "player/player_manager.h" +#include "zones/card_zone_logic.h" + +#include +#include + +class AbstractClient; AbstractGame::AbstractGame(QObject *_parent) : QObject(_parent) { diff --git a/cockatrice/src/game/abstract_game.h b/cockatrice/src/game/abstract_game.h index fcf764492..326af8ac9 100644 --- a/cockatrice/src/game/abstract_game.h +++ b/cockatrice/src/game/abstract_game.h @@ -7,15 +7,18 @@ #ifndef COCKATRICE_ABSTRACT_GAME_H #define COCKATRICE_ABSTRACT_GAME_H -#include "game_event_handler.h" -#include "game_meta_info.h" -#include "game_state.h" -#include "player/player_manager.h" - #include -#include +#include +#include class CardItem; +class AbstractClient; +class GameEventHandler; +class GameMetaInfo; +class GameReplay; +class GameState; +class PlayerManager; + class AbstractGame : public QObject { Q_OBJECT diff --git a/cockatrice/src/game/arrow_registry.cpp b/cockatrice/src/game/arrow_registry.cpp index 286764b3b..c05134a75 100644 --- a/cockatrice/src/game/arrow_registry.cpp +++ b/cockatrice/src/game/arrow_registry.cpp @@ -1,6 +1,9 @@ #include "arrow_registry.h" #include "../game_graphics/board/arrow_item.h" +#include "board/arrow_data.h" + +#include void ArrowRegistry::insert(QSharedPointer data, ArrowItem *arrow) { diff --git a/cockatrice/src/game/arrow_registry.h b/cockatrice/src/game/arrow_registry.h index ef98229a2..ca3b04090 100644 --- a/cockatrice/src/game/arrow_registry.h +++ b/cockatrice/src/game/arrow_registry.h @@ -1,13 +1,13 @@ #ifndef COCKATRICE_ARROW_REGISTRY_H #define COCKATRICE_ARROW_REGISTRY_H -#include "board/arrow_data.h" - +#include #include #include -#include class ArrowItem; +struct ArrowData; +template class QSharedPointer; struct ArrowKey { diff --git a/cockatrice/src/game/board/arrow_data.cpp b/cockatrice/src/game/board/arrow_data.cpp index 9e89deed0..d5accd16e 100644 --- a/cockatrice/src/game/board/arrow_data.cpp +++ b/cockatrice/src/game/board/arrow_data.cpp @@ -1,5 +1,8 @@ #include "arrow_data.h" +#include "libcockatrice/protocol/pb/serverinfo_arrow.pb.h" +#include "libcockatrice/utility/color.h" + ArrowData ArrowData::fromProto(const ServerInfo_Arrow &arrow, int creatorId, bool isLocalCreator) { ArrowData data; diff --git a/cockatrice/src/game/board/arrow_data.h b/cockatrice/src/game/board/arrow_data.h index 2752f97e3..00217512f 100644 --- a/cockatrice/src/game/board/arrow_data.h +++ b/cockatrice/src/game/board/arrow_data.h @@ -3,8 +3,8 @@ #include #include -#include -#include + +class ServerInfo_Arrow; struct ArrowData { diff --git a/cockatrice/src/game/board/card_list.cpp b/cockatrice/src/game/board/card_list.cpp index 0080b5ae6..94bae67cd 100644 --- a/cockatrice/src/game/board/card_list.cpp +++ b/cockatrice/src/game/board/card_list.cpp @@ -1,9 +1,14 @@ #include "card_list.h" #include "../../game_graphics/board/card_item.h" +#include "libcockatrice/card/printing/exact_card.h" +#include #include +#include +#include #include +#include #include CardList::CardList(bool _contentsKnown) : QList(), contentsKnown(_contentsKnown) diff --git a/cockatrice/src/game/board/card_list.h b/cockatrice/src/game/board/card_list.h index 85a6848b7..b5427df0d 100644 --- a/cockatrice/src/game/board/card_list.h +++ b/cockatrice/src/game/board/card_list.h @@ -9,6 +9,8 @@ #include #include +#include +#include inline Q_LOGGING_CATEGORY(CardListLog, "card_list"); diff --git a/cockatrice/src/game/board/card_state.cpp b/cockatrice/src/game/board/card_state.cpp index 4319400d7..3f879a849 100644 --- a/cockatrice/src/game/board/card_state.cpp +++ b/cockatrice/src/game/board/card_state.cpp @@ -1,5 +1,7 @@ #include "card_state.h" +#include + void CardState::resetState(bool keepAnnotations) { attacking = false; diff --git a/cockatrice/src/game/board/card_state.h b/cockatrice/src/game/board/card_state.h index 0498b1aa2..ca7aaf927 100644 --- a/cockatrice/src/game/board/card_state.h +++ b/cockatrice/src/game/board/card_state.h @@ -3,9 +3,12 @@ #include #include +#include +#include class CardZoneLogic; class CardItem; + class CardState : public QObject { Q_OBJECT diff --git a/cockatrice/src/game/board/counter_state.cpp b/cockatrice/src/game/board/counter_state.cpp index 0970e4272..5d8c73d5b 100644 --- a/cockatrice/src/game/board/counter_state.cpp +++ b/cockatrice/src/game/board/counter_state.cpp @@ -1,5 +1,7 @@ #include "counter_state.h" +#include "libcockatrice/protocol/pb/serverinfo_counter.pb.h" + #include CounterState::CounterState(int id, const QString &name, const QColor &color, int radius, int value, QObject *parent) diff --git a/cockatrice/src/game/board/counter_state.h b/cockatrice/src/game/board/counter_state.h index 4c7b34473..8badc6217 100644 --- a/cockatrice/src/game/board/counter_state.h +++ b/cockatrice/src/game/board/counter_state.h @@ -4,7 +4,9 @@ #include #include #include -#include +#include + +class ServerInfo_Counter; class CounterState : public QObject { diff --git a/cockatrice/src/game/game.cpp b/cockatrice/src/game/game.cpp index 4c8b109c2..7343d052a 100644 --- a/cockatrice/src/game/game.cpp +++ b/cockatrice/src/game/game.cpp @@ -1,9 +1,17 @@ #include "game.h" -#include "../interface/widgets/tabs/tab_game.h" +#include "game_meta_info.h" +#include "game_state.h" +#include "player/player_manager.h" +#include +#include +#include #include +class AbstractClient; +class QObject; + Game::Game(QObject *_parent, bool isLocalGame, QList &_clients, diff --git a/cockatrice/src/game/game.h b/cockatrice/src/game/game.h index 4f912664c..6a309cfb2 100644 --- a/cockatrice/src/game/game.h +++ b/cockatrice/src/game/game.h @@ -9,7 +9,14 @@ #include "abstract_game.h" -#include +#include + +class AbstractClient; +class Event_GameJoined; +class QObject; +class QString; +template class QMap; +template class QList; class Game : public AbstractGame { diff --git a/cockatrice/src/game/game_event_handler.cpp b/cockatrice/src/game/game_event_handler.cpp index f146cdbb4..b86f661bb 100644 --- a/cockatrice/src/game/game_event_handler.cpp +++ b/cockatrice/src/game/game_event_handler.cpp @@ -1,9 +1,30 @@ #include "game_event_handler.h" -#include "../game_graphics/log/message_log_widget.h" -#include "../interface/widgets/tabs/tab_game.h" #include "abstract_game.h" +#include "game_meta_info.h" +#include "game_state.h" +#include "libcockatrice/protocol/pb/commands.pb.h" +#include "libcockatrice/protocol/pb/game_commands.pb.h" +#include "libcockatrice/protocol/pb/game_event.pb.h" +#include "libcockatrice/protocol/pb/game_event_context.pb.h" +#include "libcockatrice/protocol/pb/response.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_game.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_player.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_playerproperties.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_user.pb.h" +#include "player/player_event_handler.h" +#include "player/player_info.h" +#include "player/player_logic.h" +#include "player/player_manager.h" +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include @@ -13,7 +34,6 @@ #include #include #include -#include #include #include #include @@ -28,6 +48,8 @@ #include #include #include +#include +#include GameEventHandler::GameEventHandler(AbstractGame *_game) : QObject(_game), game(_game) { diff --git a/cockatrice/src/game/game_event_handler.h b/cockatrice/src/game/game_event_handler.h index 99277abb7..30021d295 100644 --- a/cockatrice/src/game/game_event_handler.h +++ b/cockatrice/src/game/game_event_handler.h @@ -19,23 +19,29 @@ #include #include +#include +#include +#include #include +#include + +// IWYU pragma: keep +// GameEventContext, ServerInfo_Player and ServerInfo_User are passed by value +// to signals and slots, so the moc-generated code needs the complete types. +#include #include +#include class AbstractClient; class AbstractGame; -class CommandContainer; -class GameCommand; class GameEventContainer; class GameEventContext; class PendingCommand; class PlayerLogic; class Response; - class Event_GameStateChanged; class Event_PlayerPropertiesChanged; class Event_Join; -class Event_Leave; class Event_GameHostChanged; class Event_GameClosed; class Event_SetActivePlayer; @@ -44,6 +50,15 @@ class Event_GameSay; class Event_Kicked; class Event_ReverseTurn; class Event_Ping; +class ServerInfo_PlayerProperties; +namespace google +{ +namespace protobuf +{ +class Message; +} // namespace protobuf +} // namespace google +template class QList; inline Q_LOGGING_CATEGORY(GameEventHandlerLog, "game_event_handler"); diff --git a/cockatrice/src/game/game_meta_info.h b/cockatrice/src/game/game_meta_info.h index cdba1605f..ef8f0c08e 100644 --- a/cockatrice/src/game/game_meta_info.h +++ b/cockatrice/src/game/game_meta_info.h @@ -9,13 +9,16 @@ #include #include +#include #include +#include // Translation layer class to expose protobuf safely and hook it up to Qt Signals. // This class de-couples the domain object (i.e. the GameMetaInfo) from the network object. // If the network object changes, only this class needs to be adjusted. class AbstractGame; + class GameMetaInfo : public QObject { Q_OBJECT diff --git a/cockatrice/src/game/game_state.cpp b/cockatrice/src/game/game_state.cpp index dc9ba02a3..e3bbbec00 100644 --- a/cockatrice/src/game/game_state.cpp +++ b/cockatrice/src/game/game_state.cpp @@ -2,6 +2,11 @@ #include "abstract_game.h" +#include +#include + +class AbstractClient; + GameState::GameState(AbstractGame *parent, int _secondsElapsed, int _hostId, diff --git a/cockatrice/src/game/game_state.h b/cockatrice/src/game/game_state.h index 94bbb853c..55784fb91 100644 --- a/cockatrice/src/game/game_state.h +++ b/cockatrice/src/game/game_state.h @@ -7,12 +7,14 @@ #ifndef COCKATRICE_GAME_STATE_H #define COCKATRICE_GAME_STATE_H -#include -#include +#include +#include +#include +#include class AbstractGame; -class ServerInfo_PlayerProperties; -class ServerInfo_User; +class AbstractClient; +class QTimer; class GameState : public QObject { diff --git a/cockatrice/src/game/phase.cpp b/cockatrice/src/game/phase.cpp index 7fb1700a5..f56228279 100644 --- a/cockatrice/src/game/phase.cpp +++ b/cockatrice/src/game/phase.cpp @@ -1,5 +1,10 @@ #include "phase.h" +#include +#include +#include +#include + Phase::Phase(const QString &_name, const QString &_color, const QString &_soundFileName) : name(_name), color(_color), soundFileName(_soundFileName) { diff --git a/cockatrice/src/game/phase.h b/cockatrice/src/game/phase.h index a888ad43b..b4eaa6e46 100644 --- a/cockatrice/src/game/phase.h +++ b/cockatrice/src/game/phase.h @@ -7,8 +7,9 @@ #ifndef PHASE_H #define PHASE_H -#include +#include #include +#include class Phase { diff --git a/cockatrice/src/game/player/player_actions.cpp b/cockatrice/src/game/player/player_actions.cpp index 67c3295d6..35682ede8 100644 --- a/cockatrice/src/game/player/player_actions.cpp +++ b/cockatrice/src/game/player/player_actions.cpp @@ -1,14 +1,54 @@ #include "player_actions.h" +#include "../../client/settings/cache_settings.h" +#include "../../game_graphics/board/card_item.h" +#include "../../game_graphics/dialogs/dlg_create_token.h" #include "../../game_graphics/dialogs/dlg_move_top_cards_until.h" -#include "../../game_graphics/dialogs/dlg_roll_dice.h" #include "../../game_graphics/player/card_menu_action_type.h" -#include "../../game_graphics/zones/hand_zone.h" #include "../../game_graphics/zones/table_zone.h" -#include "../../interface/widgets/tabs/tab_game.h" -#include "../../interface/widgets/utility/get_text_with_max.h" +#include "../../interface/deck_loader/loaded_deck.h" +#include "../abstract_game.h" +#include "../board/counter_state.h" +#include "../game_event_handler.h" +#include "../zones/card_zone_logic.h" +#include "../zones/hand_zone_logic.h" +#include "../zones/pile_zone_logic.h" +#include "../zones/table_zone_logic.h" #include "../zones/view_zone_logic.h" +#include "libcockatrice/card/database/card_database_querier.h" +#include "libcockatrice/card/printing/exact_card.h" +#include "libcockatrice/card/printing/printing_info.h" +#include "libcockatrice/card/relation/card_relation_type.h" +#include "libcockatrice/deck_list/deck_list.h" +#include "libcockatrice/filters/filter_string.h" +#include "libcockatrice/protocol/pb/card_attributes.pb.h" +#include "libcockatrice/protocol/pb/game_commands.pb.h" +#include "libcockatrice/settings/cards_display_settings.h" +#include "player_info.h" +#include "player_logic.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include @@ -26,13 +66,16 @@ #include #include #include -#include #include #include #include #include #include #include +#include +#include +#include +#include // milliseconds in between triggers of the move top cards until action static constexpr int MOVE_TOP_CARD_UNTIL_INTERVAL = 100; diff --git a/cockatrice/src/game/player/player_actions.h b/cockatrice/src/game/player/player_actions.h index fa4d54110..8fff81635 100644 --- a/cockatrice/src/game/player/player_actions.h +++ b/cockatrice/src/game/player/player_actions.h @@ -8,17 +8,25 @@ #ifndef COCKATRICE_PLAYER_ACTIONS_H #define COCKATRICE_PLAYER_ACTIONS_H -#include "../../game_graphics/board/card_item.h" +#include "../../game_graphics/board/card_item.h" // IWYU pragma: keep - moc instantiates the metatype for QList, which Qt 6.4 needs complete #include "../../game_graphics/dialogs/dlg_create_token.h" #include "../../game_graphics/dialogs/dlg_move_top_cards_until.h" #include "../../game_graphics/player/card_menu_action_type.h" -#include "event_processing_options.h" -#include "player_logic.h" +#include "../board/card_list.h" +#include "libcockatrice/card/card_info.h" -#include #include +#include +#include #include #include +#include + +class CardItem; +class CardRelation; +class QAction; +class QTimer; +template class QList; namespace google { @@ -29,9 +37,9 @@ class Message; } // namespace google class Command_MoveCard; -class GameEventContext; class PendingCommand; class PlayerLogic; + class PlayerActions : public QObject { Q_OBJECT diff --git a/cockatrice/src/game/player/player_event_handler.cpp b/cockatrice/src/game/player/player_event_handler.cpp index 277b8b1d4..18f6573df 100644 --- a/cockatrice/src/game/player/player_event_handler.cpp +++ b/cockatrice/src/game/player/player_event_handler.cpp @@ -1,15 +1,32 @@ #include "player_event_handler.h" -#include "../../game_graphics/board/arrow_item.h" #include "../../game_graphics/board/card_item.h" #include "../../game_graphics/zones/view_zone.h" -#include "../../interface/widgets/tabs/tab_game.h" +#include "../abstract_game.h" #include "../board/arrow_data.h" #include "../board/card_list.h" +#include "../board/counter_state.h" +#include "../zones/card_zone_logic.h" +#include "../zones/hand_zone_logic.h" +#include "../zones/pile_zone_logic.h" +#include "libcockatrice/card/card_info.h" +#include "libcockatrice/card/printing/exact_card.h" +#include "libcockatrice/protocol/pb/card_attributes.pb.h" +#include "libcockatrice/protocol/pb/game_event.pb.h" +#include "libcockatrice/protocol/pb/game_event_context.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_card.pb.h" +#include "libcockatrice/utility/card_ref.h" #include "player_actions.h" +#include "player_info.h" #include "player_logic.h" +#include "player_manager.h" -#include +#include +#include +#include +#include +#include +#include #include #include #include @@ -32,8 +49,9 @@ #include #include #include -#include #include +#include +#include PlayerEventHandler::PlayerEventHandler(PlayerLogic *_player) : QObject(_player), player(_player) { diff --git a/cockatrice/src/game/player/player_event_handler.h b/cockatrice/src/game/player/player_event_handler.h index 300cacd08..88254119b 100644 --- a/cockatrice/src/game/player/player_event_handler.h +++ b/cockatrice/src/game/player/player_event_handler.h @@ -22,14 +22,14 @@ #include "event_processing_options.h" #include -#include +#include #include -#include +#include +#include class CardItem; class CardZoneLogic; class PlayerLogic; - class Event_AttachCard; class Event_ChangeZoneProperties; class Event_CreateArrow; @@ -50,6 +50,9 @@ class Event_SetCardCounter; class Event_SetCounter; class Event_Shuffle; class Event_GameLogNotice; +class GameEventContext; +enum CardAttribute : int; +template class QList; /** * @class PlayerEventHandler diff --git a/cockatrice/src/game/player/player_info.cpp b/cockatrice/src/game/player/player_info.cpp index c4debde0f..aef0d82aa 100644 --- a/cockatrice/src/game/player/player_info.cpp +++ b/cockatrice/src/game/player/player_info.cpp @@ -1,5 +1,7 @@ #include "player_info.h" +#include "libcockatrice/protocol/pb/serverinfo_user.pb.h" + PlayerInfo::PlayerInfo(const ServerInfo_User &info, int _id, bool _local, bool _judge) : id(_id), local(_local), judge(_judge) { diff --git a/cockatrice/src/game/player/player_info.h b/cockatrice/src/game/player/player_info.h index 4ec39edbd..58e877f8e 100644 --- a/cockatrice/src/game/player/player_info.h +++ b/cockatrice/src/game/player/player_info.h @@ -7,10 +7,10 @@ #ifndef COCKATRICE_PLAYER_INFO_H #define COCKATRICE_PLAYER_INFO_H -#include "../../game_graphics/player/player_target.h" - #include +#include #include +#include class PlayerInfo : public QObject { diff --git a/cockatrice/src/game/player/player_logic.cpp b/cockatrice/src/game/player/player_logic.cpp index 143df5c57..b545b7088 100644 --- a/cockatrice/src/game/player/player_logic.cpp +++ b/cockatrice/src/game/player/player_logic.cpp @@ -1,33 +1,37 @@ #include "player_logic.h" -#include "../../game_graphics/board/arrow_item.h" #include "../../game_graphics/board/card_item.h" -#include "../../game_graphics/board/counter_general.h" -#include "../../game_graphics/game_scene.h" -#include "../../game_graphics/player/player_target.h" -#include "../../game_graphics/zones/hand_zone.h" -#include "../../game_graphics/zones/pile_zone.h" -#include "../../game_graphics/zones/stack_zone.h" -#include "../../game_graphics/zones/table_zone.h" -#include "../../interface/theme_manager.h" -#include "../../interface/widgets/tabs/tab_game.h" -#include "../board/card_list.h" +#include "../abstract_game.h" +#include "../board/arrow_data.h" +#include "../board/counter_state.h" +#include "../game_meta_info.h" +#include "../zones/hand_zone_logic.h" +#include "../zones/pile_zone_logic.h" +#include "../zones/stack_zone_logic.h" +#include "../zones/table_zone_logic.h" +#include "libcockatrice/protocol/pb/serverinfo_card.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_counter.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_playerproperties.pb.h" +#include "libcockatrice/utility/zone_names.h" #include "player_actions.h" +#include "player_event_handler.h" +#include "player_info.h" +#include "player_manager.h" #include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include #include #include #include +#include #include +#include +#include PlayerLogic::PlayerLogic(const ServerInfo_User &info, int _id, bool _local, bool _judge, AbstractGame *_parent) : QObject(_parent), game(_parent), playerInfo(new PlayerInfo(info, _id, _local, _judge)), diff --git a/cockatrice/src/game/player/player_logic.h b/cockatrice/src/game/player/player_logic.h index 6923b3afe..59da7cc32 100644 --- a/cockatrice/src/game/player/player_logic.h +++ b/cockatrice/src/game/player/player_logic.h @@ -7,57 +7,48 @@ #ifndef PLAYER_H #define PLAYER_H -#include "../../game_graphics/player/player_area.h" -#include "../../interface/widgets/menus/tearoff_menu.h" -#include "../board/arrow_data.h" -#include "../interface/deck_loader/loaded_deck.h" +#include "../zones/card_zone_logic.h" #include "../zones/hand_zone_logic.h" #include "../zones/pile_zone_logic.h" #include "../zones/stack_zone_logic.h" #include "../zones/table_zone_logic.h" -#include "player_event_handler.h" -#include "player_info.h" -#include "player_manager.h" +#include "libcockatrice/deck_list/deck_list.h" +#include "libcockatrice/utility/card_ref.h" +#include "libcockatrice/utility/playmat_params.h" +#include #include +#include #include #include -#include -#include -#include -#include +#include +#include #include +#include + +// IWYU pragma: keep +// ServerInfo_Card appears inside QList<...> in signal and slot +// signatures, which the moc-generated code needs to be complete. +#include + +class CardItem; +class CounterState; +class QWidget; +class ServerInfo_PlayerProperties; +struct ArrowData; +struct LoadedDeck; +template class QSharedPointer; inline Q_LOGGING_CATEGORY(PlayerLog, "player"); - -namespace google -{ -namespace protobuf -{ -class Message; -} -} // namespace google class AbstractCardItem; class AbstractGame; -class ArrowItem; -class ArrowTarget; -class CardDatabase; -class CardZone; -class CommandContainer; -class GameCommand; -class GameEvent; class PlayerInfo; class PlayerEventHandler; class PlayerActions; -class PlayerMenu; -class QAction; -class QMenu; -class ServerInfo_Arrow; class ServerInfo_Card; class ServerInfo_Counter; class ServerInfo_Player; class ServerInfo_User; -class TabGame; const int MAX_TOKENS_PER_DIALOG = 99; diff --git a/cockatrice/src/game/player/player_manager.cpp b/cockatrice/src/game/player/player_manager.cpp index 8486efbeb..4730805ad 100644 --- a/cockatrice/src/game/player/player_manager.cpp +++ b/cockatrice/src/game/player/player_manager.cpp @@ -1,8 +1,14 @@ #include "player_manager.h" #include "../abstract_game.h" +#include "../game_state.h" +#include "player_info.h" #include "player_logic.h" +#include +#include +#include + PlayerManager::PlayerManager(AbstractGame *_game, int _localPlayerId, bool _localPlayerIsJudge, diff --git a/cockatrice/src/game/player/player_manager.h b/cockatrice/src/game/player/player_manager.h index 504e65396..7a9f7645b 100644 --- a/cockatrice/src/game/player/player_manager.h +++ b/cockatrice/src/game/player/player_manager.h @@ -7,12 +7,17 @@ #ifndef COCKATRICE_PLAYER_MANAGER_H #define COCKATRICE_PLAYER_MANAGER_H +#include "libcockatrice/protocol/pb/serverinfo_user.pb.h" + #include #include +#include #include +#include class AbstractGame; class PlayerLogic; + class PlayerManager : public QObject { Q_OBJECT diff --git a/cockatrice/src/game/replay.cpp b/cockatrice/src/game/replay.cpp index dcf3e9b9b..4ab4a6321 100644 --- a/cockatrice/src/game/replay.cpp +++ b/cockatrice/src/game/replay.cpp @@ -1,6 +1,13 @@ #include "replay.h" -#include "../interface/widgets/tabs/tab_game.h" +#include "game_meta_info.h" +#include "game_state.h" +#include "player/player_manager.h" + +#include + +class GameReplay; +class QObject; Replay::Replay(QObject *_parent, const GameReplay *_replay, bool isLocalGame) : AbstractGame(_parent) { diff --git a/cockatrice/src/game/replay.h b/cockatrice/src/game/replay.h index 1c269b273..cc995dbac 100644 --- a/cockatrice/src/game/replay.h +++ b/cockatrice/src/game/replay.h @@ -10,6 +10,11 @@ #include "abstract_game.h" +#include + +class GameReplay; +class QObject; + class Replay : public AbstractGame { Q_OBJECT diff --git a/cockatrice/src/game/zones/card_zone_logic.cpp b/cockatrice/src/game/zones/card_zone_logic.cpp index 7e0585f4e..d997ab9ad 100644 --- a/cockatrice/src/game/zones/card_zone_logic.cpp +++ b/cockatrice/src/game/zones/card_zone_logic.cpp @@ -1,16 +1,25 @@ #include "card_zone_logic.h" +#include "../../client/translation.h" #include "../../game_graphics/board/card_item.h" +#include "../../game_graphics/zones/card_zone.h" #include "../../game_graphics/zones/view_zone.h" +#include "../board/card_list.h" #include "../player/player_actions.h" +#include "../player/player_info.h" #include "../player/player_logic.h" +#include "libcockatrice/card/database/card_database.h" #include "view_zone_logic.h" #include #include +#include +#include +#include #include #include #include +#include /** * @param _player the player that the zone belongs to diff --git a/cockatrice/src/game/zones/card_zone_logic.h b/cockatrice/src/game/zones/card_zone_logic.h index ae97719a9..2e232b258 100644 --- a/cockatrice/src/game/zones/card_zone_logic.h +++ b/cockatrice/src/game/zones/card_zone_logic.h @@ -10,17 +10,18 @@ #include "../../client/translation.h" #include "../board/card_list.h" +#include #include #include +#include +#include + +class CardItem; inline Q_LOGGING_CATEGORY(CardZoneLogicLog, "card_zone_logic"); class PlayerLogic; class ZoneViewZone; -class QMenu; -class QAction; -class QPainter; -class CardDragItem; class CardZoneLogic : public QObject { diff --git a/cockatrice/src/game/zones/hand_zone_logic.cpp b/cockatrice/src/game/zones/hand_zone_logic.cpp index 3bdd15902..cea17d031 100644 --- a/cockatrice/src/game/zones/hand_zone_logic.cpp +++ b/cockatrice/src/game/zones/hand_zone_logic.cpp @@ -3,6 +3,9 @@ #include "../../game_graphics/board/card_item.h" #include "card_zone_algorithms.h" +class PlayerLogic; +class QObject; + HandZoneLogic::HandZoneLogic(PlayerLogic *_player, const QString &_name, bool _hasCardAttr, diff --git a/cockatrice/src/game/zones/hand_zone_logic.h b/cockatrice/src/game/zones/hand_zone_logic.h index 400506248..c7d63bc0d 100644 --- a/cockatrice/src/game/zones/hand_zone_logic.h +++ b/cockatrice/src/game/zones/hand_zone_logic.h @@ -8,6 +8,12 @@ #define COCKATRICE_HAND_ZONE_LOGIC_H #include "card_zone_logic.h" +#include +#include + +class PlayerLogic; +class QObject; + class HandZoneLogic : public CardZoneLogic { Q_OBJECT diff --git a/cockatrice/src/game/zones/pile_zone_logic.cpp b/cockatrice/src/game/zones/pile_zone_logic.cpp index 0f374fb84..40af25cc5 100644 --- a/cockatrice/src/game/zones/pile_zone_logic.cpp +++ b/cockatrice/src/game/zones/pile_zone_logic.cpp @@ -1,6 +1,10 @@ #include "pile_zone_logic.h" #include "../../game_graphics/board/card_item.h" +#include "../board/card_list.h" + +class PlayerLogic; +class QObject; PileZoneLogic::PileZoneLogic(PlayerLogic *_player, const QString &_name, diff --git a/cockatrice/src/game/zones/pile_zone_logic.h b/cockatrice/src/game/zones/pile_zone_logic.h index 522d99b89..ed6841b75 100644 --- a/cockatrice/src/game/zones/pile_zone_logic.h +++ b/cockatrice/src/game/zones/pile_zone_logic.h @@ -8,6 +8,12 @@ #define COCKATRICE_PILE_ZONE_LOGIC_H #include "card_zone_logic.h" +#include +#include + +class PlayerLogic; +class QObject; + class PileZoneLogic : public CardZoneLogic { diff --git a/cockatrice/src/game/zones/stack_zone_logic.cpp b/cockatrice/src/game/zones/stack_zone_logic.cpp index 341d4b0e4..454274971 100644 --- a/cockatrice/src/game/zones/stack_zone_logic.cpp +++ b/cockatrice/src/game/zones/stack_zone_logic.cpp @@ -3,6 +3,9 @@ #include "../../game_graphics/board/card_item.h" #include "card_zone_algorithms.h" +class PlayerLogic; +class QObject; + StackZoneLogic::StackZoneLogic(PlayerLogic *_player, const QString &_name, bool _hasCardAttr, diff --git a/cockatrice/src/game/zones/stack_zone_logic.h b/cockatrice/src/game/zones/stack_zone_logic.h index cce4bd0fa..657d44ecf 100644 --- a/cockatrice/src/game/zones/stack_zone_logic.h +++ b/cockatrice/src/game/zones/stack_zone_logic.h @@ -8,6 +8,12 @@ #define COCKATRICE_STACK_ZONE_LOGIC_H #include "card_zone_logic.h" +#include +#include + +class PlayerLogic; +class QObject; + class StackZoneLogic : public CardZoneLogic { Q_OBJECT diff --git a/cockatrice/src/game/zones/table_zone_logic.cpp b/cockatrice/src/game/zones/table_zone_logic.cpp index a4f033819..07e4a759b 100644 --- a/cockatrice/src/game/zones/table_zone_logic.cpp +++ b/cockatrice/src/game/zones/table_zone_logic.cpp @@ -1,6 +1,13 @@ #include "table_zone_logic.h" #include "../../game_graphics/board/card_item.h" +#include "../board/card_list.h" +#include "libcockatrice/card/card_info.h" + +#include + +class PlayerLogic; +class QObject; TableZoneLogic::TableZoneLogic(PlayerLogic *_player, const QString &_name, diff --git a/cockatrice/src/game/zones/table_zone_logic.h b/cockatrice/src/game/zones/table_zone_logic.h index 6d8d64a20..8078bfd05 100644 --- a/cockatrice/src/game/zones/table_zone_logic.h +++ b/cockatrice/src/game/zones/table_zone_logic.h @@ -8,6 +8,12 @@ #define COCKATRICE_TABLE_ZONE_LOGIC_H #include "card_zone_logic.h" +#include +#include + +class PlayerLogic; +class QObject; + class TableZoneLogic : public CardZoneLogic { Q_OBJECT diff --git a/cockatrice/src/game/zones/view_zone_logic.cpp b/cockatrice/src/game/zones/view_zone_logic.cpp index de00581d1..eb3b7715f 100644 --- a/cockatrice/src/game/zones/view_zone_logic.cpp +++ b/cockatrice/src/game/zones/view_zone_logic.cpp @@ -2,8 +2,14 @@ #include "../../client/settings/cache_settings.h" #include "../../game_graphics/board/card_item.h" +#include "../board/card_list.h" +#include #include + +class PlayerLogic; +class QObject; + /** * @param _player the player that the cards are revealed to. * @param _origZone the zone the cards were revealed from. diff --git a/cockatrice/src/game/zones/view_zone_logic.h b/cockatrice/src/game/zones/view_zone_logic.h index e3080d044..6fae301e4 100644 --- a/cockatrice/src/game/zones/view_zone_logic.h +++ b/cockatrice/src/game/zones/view_zone_logic.h @@ -8,6 +8,11 @@ #define COCKATRICE_VIEW_ZONE_LOGIC_H #include "card_zone_logic.h" +#include + +class PlayerLogic; +class QObject; + class ZoneViewZoneLogic : public CardZoneLogic { Q_OBJECT diff --git a/cockatrice/src/game_graphics/board/abstract_card_drag_item.cpp b/cockatrice/src/game_graphics/board/abstract_card_drag_item.cpp index 2f43591ac..2e18fca2d 100644 --- a/cockatrice/src/game_graphics/board/abstract_card_drag_item.cpp +++ b/cockatrice/src/game_graphics/board/abstract_card_drag_item.cpp @@ -2,12 +2,20 @@ #include "../../client/settings/cache_settings.h" #include "../z_values.h" +#include "abstract_card_item.h" +#include +#include #include -#include #include #include +#include +#include +#include #include +#include + +class QPointF; const QColor GHOST_MASK = QColor(255, 255, 255, 50); diff --git a/cockatrice/src/game_graphics/board/abstract_card_drag_item.h b/cockatrice/src/game_graphics/board/abstract_card_drag_item.h index 1cbeb4fe7..18afdcbb8 100644 --- a/cockatrice/src/game_graphics/board/abstract_card_drag_item.h +++ b/cockatrice/src/game_graphics/board/abstract_card_drag_item.h @@ -7,11 +7,17 @@ #ifndef ABSTRACTCARDDRAGITEM_H #define ABSTRACTCARDDRAGITEM_H -#include "abstract_card_item.h" +#include "../card_dimensions.h" +#include "graphics_item_type.h" -class QGraphicsScene; -class CardZone; -class CardInfo; +#include +#include +#include +#include +#include +#include + +class AbstractCardItem; class AbstractCardDragItem : public QObject, public QGraphicsItem { diff --git a/cockatrice/src/game_graphics/board/abstract_card_item.cpp b/cockatrice/src/game_graphics/board/abstract_card_item.cpp index 3969b7d03..a79c5873e 100644 --- a/cockatrice/src/game_graphics/board/abstract_card_item.cpp +++ b/cockatrice/src/game_graphics/board/abstract_card_item.cpp @@ -3,19 +3,42 @@ #include "../../client/settings/cache_settings.h" #include "../../interface/card_localization.h" #include "../../interface/card_picture_loader/card_picture_loader.h" +#include "../card_dimensions.h" #include "../game_scene.h" #include "../z_values.h" +#include "abstract_graphics_item.h" +#include "libcockatrice/card/card_info.h" +#include "libcockatrice/card/database/card_database_querier.h" +#include "libcockatrice/card/printing/exact_card.h" +#include "libcockatrice/utility/card_ref.h" +#include +#include #include +#include +#include #include #include +#include +#include +#include #include +#include +#include +#include +#include +#include +#include +#include +#include #include -#include #include #include #include #include +#include + +class QSizeF; AbstractCardItem::AbstractCardItem(QGraphicsItem *parent, const CardRef &cardRef, PlayerLogic *_owner, int _id) : ArrowTarget(_owner, parent), id(_id), cardRef(cardRef), tapped(false), facedown(false), tapAngle(0), diff --git a/cockatrice/src/game_graphics/board/abstract_card_item.h b/cockatrice/src/game_graphics/board/abstract_card_item.h index 8cbe95282..385f9c32f 100644 --- a/cockatrice/src/game_graphics/board/abstract_card_item.h +++ b/cockatrice/src/game_graphics/board/abstract_card_item.h @@ -8,14 +8,22 @@ #define ABSTRACTCARDITEM_H #include "../animated_item.h" -#include "../card_dimensions.h" #include "arrow_target.h" #include "graphics_item_type.h" +#include +#include +#include +#include +#include #include #include +#include class PlayerLogic; +class CardInfo; +class QPainter; +class QPoint; class AbstractCardItem : public ArrowTarget, public IAnimatedItem { diff --git a/cockatrice/src/game_graphics/board/abstract_counter.cpp b/cockatrice/src/game_graphics/board/abstract_counter.cpp index 4ba04804f..8500b9c51 100644 --- a/cockatrice/src/game_graphics/board/abstract_counter.cpp +++ b/cockatrice/src/game_graphics/board/abstract_counter.cpp @@ -2,21 +2,33 @@ #include "../../client/settings/cache_settings.h" #include "../../client/settings/shortcuts_settings.h" +#include "../../game/board/counter_state.h" #include "../../game/player/player_actions.h" +#include "../../game/player/player_info.h" #include "../../game/player/player_logic.h" #include "../../game_graphics/board/translate_counter_name.h" -#include "../../interface/widgets/tabs/tab_game.h" +#include "../../interface/widgets/menus/tearoff_menu.h" #include #include +#include +#include +#include #include #include #include -#include +#include +#include +#include #include +#include +#include #include #include #include +#include + +class QWidget; AbstractCounter::AbstractCounter(CounterState *state, PlayerLogic *_player, diff --git a/cockatrice/src/game_graphics/board/abstract_counter.h b/cockatrice/src/game_graphics/board/abstract_counter.h index 67b5b4074..7ba686a93 100644 --- a/cockatrice/src/game_graphics/board/abstract_counter.h +++ b/cockatrice/src/game_graphics/board/abstract_counter.h @@ -7,18 +7,21 @@ #ifndef COUNTER_H #define COUNTER_H -#include "../../game/board/counter_state.h" #include "../../interface/widgets/menus/tearoff_menu.h" #include "../player/menu/abstract_player_component.h" +#include #include #include +#include +#include +#include class PlayerLogic; class QAction; -class QKeyEvent; class QMenu; -class QString; +class CounterState; +class QWidget; class AbstractCounter : public QObject, public QGraphicsItem, public AbstractPlayerComponent { diff --git a/cockatrice/src/game_graphics/board/abstract_graphics_item.cpp b/cockatrice/src/game_graphics/board/abstract_graphics_item.cpp index 8da8ab708..50e80d359 100644 --- a/cockatrice/src/game_graphics/board/abstract_graphics_item.cpp +++ b/cockatrice/src/game_graphics/board/abstract_graphics_item.cpp @@ -1,6 +1,14 @@ #include "abstract_graphics_item.h" +#include +#include +#include #include +#include +#include +#include +#include +#include void AbstractGraphicsItem::paintNumberEllipse(int number, int fontSize, diff --git a/cockatrice/src/game_graphics/board/abstract_graphics_item.h b/cockatrice/src/game_graphics/board/abstract_graphics_item.h index 287c2c0b3..ebc2a3761 100644 --- a/cockatrice/src/game_graphics/board/abstract_graphics_item.h +++ b/cockatrice/src/game_graphics/board/abstract_graphics_item.h @@ -7,7 +7,12 @@ #ifndef ABSTRACTGRAPHICSITEM_H #define ABSTRACTGRAPHICSITEM_H -#include +#include +#include +#include + +class QGraphicsItem; +class QPainter; /** * Parent class of all objects that appear in a game. diff --git a/cockatrice/src/game_graphics/board/arrow_item.cpp b/cockatrice/src/game_graphics/board/arrow_item.cpp index 664d44ecc..c5a9b9c5e 100644 --- a/cockatrice/src/game_graphics/board/arrow_item.cpp +++ b/cockatrice/src/game_graphics/board/arrow_item.cpp @@ -2,28 +2,42 @@ #include "arrow_item.h" #include "../../client/settings/cache_settings.h" +#include "../../game/board/arrow_data.h" #include "../../game/player/player_actions.h" +#include "../../game/player/player_info.h" #include "../../game/player/player_logic.h" +#include "../../game/zones/card_zone_logic.h" #include "../game_scene.h" #include "../player/player_target.h" #include "../z_values.h" -#include "../zones/card_zone.h" #include "card_item.h" +#include "libcockatrice/card/printing/exact_card.h" +#include "libcockatrice/protocol/pb/color.pb.h" -#include +#include #include #include #include +#include +#include #include +#include +#include +#include +#include +#include #include #include #include #include -#include #include #include #include #include +#include +#include +#include +#include namespace { diff --git a/cockatrice/src/game_graphics/board/arrow_item.h b/cockatrice/src/game_graphics/board/arrow_item.h index 76a2d5d6c..2395165fc 100644 --- a/cockatrice/src/game_graphics/board/arrow_item.h +++ b/cockatrice/src/game_graphics/board/arrow_item.h @@ -6,15 +6,23 @@ #include "arrow_target.h" #include "graphics_item_type.h" +#include #include #include +#include +#include +#include #include +#include #include +#include #include +#include +#include class CardItem; -class QGraphicsSceneMouseEvent; class PlayerLogic; +template class QSharedPointer; class ArrowItem : public QObject, public QGraphicsItem, public IAnimatedItem { diff --git a/cockatrice/src/game_graphics/board/arrow_target.cpp b/cockatrice/src/game_graphics/board/arrow_target.cpp index 79b21d921..024479ee6 100644 --- a/cockatrice/src/game_graphics/board/arrow_target.cpp +++ b/cockatrice/src/game_graphics/board/arrow_target.cpp @@ -1,7 +1,8 @@ #include "arrow_target.h" -#include "../../game/player/player_logic.h" -#include "arrow_item.h" +#include + +class QGraphicsItem; ArrowTarget::ArrowTarget(PlayerLogic *_owner, QGraphicsItem *parent) : AbstractGraphicsItem(parent), owner(_owner) { diff --git a/cockatrice/src/game_graphics/board/arrow_target.h b/cockatrice/src/game_graphics/board/arrow_target.h index bf89c5456..5c55e0e5d 100644 --- a/cockatrice/src/game_graphics/board/arrow_target.h +++ b/cockatrice/src/game_graphics/board/arrow_target.h @@ -9,10 +9,10 @@ #include "abstract_graphics_item.h" -#include +#include class PlayerLogic; -class ArrowItem; +class QGraphicsItem; class ArrowTarget : public AbstractGraphicsItem { diff --git a/cockatrice/src/game_graphics/board/card_drag_item.cpp b/cockatrice/src/game_graphics/board/card_drag_item.cpp index 49467c5c9..265ea759c 100644 --- a/cockatrice/src/game_graphics/board/card_drag_item.cpp +++ b/cockatrice/src/game_graphics/board/card_drag_item.cpp @@ -6,9 +6,20 @@ #include "../zones/view_zone.h" #include "card_item.h" +#include +#include #include +#include +#include #include +#include +#include #include +#include +#include +#include + +class CardZoneLogic; CardDragItem::CardDragItem(CardItem *_item, int _id, diff --git a/cockatrice/src/game_graphics/board/card_drag_item.h b/cockatrice/src/game_graphics/board/card_drag_item.h index 74d25ad04..d5e9a9e83 100644 --- a/cockatrice/src/game_graphics/board/card_drag_item.h +++ b/cockatrice/src/game_graphics/board/card_drag_item.h @@ -9,7 +9,11 @@ #include "abstract_card_drag_item.h" +#include +#include + class CardItem; +class CardZone; class CardDragItem : public AbstractCardDragItem { diff --git a/cockatrice/src/game_graphics/board/card_item.cpp b/cockatrice/src/game_graphics/board/card_item.cpp index c2dc455cc..a04d86c15 100644 --- a/cockatrice/src/game_graphics/board/card_item.cpp +++ b/cockatrice/src/game_graphics/board/card_item.cpp @@ -1,26 +1,52 @@ #include "card_item.h" #include "../../client/settings/cache_settings.h" -#include "../../client/settings/card_counter_settings.h" +#include "../../game/abstract_game.h" +#include "../../game/board/card_state.h" +#include "../../game/game_state.h" #include "../../game/phase.h" #include "../../game/player/player_actions.h" +#include "../../game/player/player_info.h" #include "../../game/player/player_logic.h" +#include "../../game/player/player_manager.h" +#include "../../game/zones/card_zone_logic.h" +#include "../../game/zones/table_zone_logic.h" #include "../../game/zones/view_zone_logic.h" -#include "../../interface/widgets/tabs/tab_game.h" +#include "../card_dimensions.h" #include "../game_scene.h" -#include "../zones/table_zone.h" -#include "../zones/view_zone.h" #include "arrow_item.h" #include "card_drag_item.h" +#include "libcockatrice/card/printing/exact_card.h" +#include "libcockatrice/protocol/pb/serverinfo_cardcounter.pb.h" #include <../../client/settings/card_counter_settings.h> #include +#include +#include +#include +#include +#include +#include +#include #include -#include +#include +#include +#include #include +#include +#include +#include +#include +#include +#include +#include #include #include #include +#include +#include + +struct CardRef; CardItem::CardItem(PlayerLogic *_owner, QGraphicsItem *parent, diff --git a/cockatrice/src/game_graphics/board/card_item.h b/cockatrice/src/game_graphics/board/card_item.h index 2ba43d03d..df79ef378 100644 --- a/cockatrice/src/game_graphics/board/card_item.h +++ b/cockatrice/src/game_graphics/board/card_item.h @@ -8,18 +8,24 @@ #define CARDITEM_H #include "../../game/board/card_state.h" -#include "../../game/zones/card_zone_logic.h" #include "abstract_card_item.h" +#include "graphics_item_type.h" -#include +#include +#include +#include +#include +#include +#include -class CardDatabase; class CardDragItem; -class CardZone; class ServerInfo_Card; class PlayerLogic; -class QAction; class QColor; +class CardZoneLogic; +class QGraphicsItem; +struct CardRef; +template class QMap; const int ROTATION_DEGREES_PER_FRAME = 10; diff --git a/cockatrice/src/game_graphics/board/counter_general.cpp b/cockatrice/src/game_graphics/board/counter_general.cpp index 379c6f837..4a8bbd6a4 100644 --- a/cockatrice/src/game_graphics/board/counter_general.cpp +++ b/cockatrice/src/game_graphics/board/counter_general.cpp @@ -3,7 +3,20 @@ #include "../../interface/pixel_map_generator.h" #include "abstract_graphics_item.h" +#include #include +#include +#include +#include +#include +#include +#include +#include +#include + +class CounterState; +class PlayerLogic; +class QGraphicsItem; GeneralCounter::GeneralCounter(CounterState *state, PlayerLogic *player, bool useNameForShortcut, QGraphicsItem *parent) : AbstractCounter(state, player, true, useNameForShortcut, parent) diff --git a/cockatrice/src/game_graphics/board/counter_general.h b/cockatrice/src/game_graphics/board/counter_general.h index 0a2e882ce..2e49f11d7 100644 --- a/cockatrice/src/game_graphics/board/counter_general.h +++ b/cockatrice/src/game_graphics/board/counter_general.h @@ -9,6 +9,12 @@ #include "abstract_counter.h" +#include + +class CounterState; +class PlayerLogic; +class QGraphicsItem; + class GeneralCounter : public AbstractCounter { Q_OBJECT diff --git a/cockatrice/src/game_graphics/board/translate_counter_name.cpp b/cockatrice/src/game_graphics/board/translate_counter_name.cpp index 4f1c97657..3a2a5c7c8 100644 --- a/cockatrice/src/game_graphics/board/translate_counter_name.cpp +++ b/cockatrice/src/game_graphics/board/translate_counter_name.cpp @@ -1,5 +1,8 @@ #include "translate_counter_name.h" +#include +#include + const QMap TranslateCounterName::translated = { {"life", QT_TRANSLATE_NOOP("TranslateCounterName", "Life")}, {"w", QT_TRANSLATE_NOOP("TranslateCounterName", "White")}, diff --git a/cockatrice/src/game_graphics/board/translate_counter_name.h b/cockatrice/src/game_graphics/board/translate_counter_name.h index ba3a94fa5..e7e42e5fc 100644 --- a/cockatrice/src/game_graphics/board/translate_counter_name.h +++ b/cockatrice/src/game_graphics/board/translate_counter_name.h @@ -7,8 +7,10 @@ #ifndef TRANSLATECOUNTERNAME_H #define TRANSLATECOUNTERNAME_H +#include +#include +#include #include -#include class TranslateCounterName { diff --git a/cockatrice/src/game_graphics/deckview/deck_view.cpp b/cockatrice/src/game_graphics/deckview/deck_view.cpp index 1acd02a75..c86bc9925 100644 --- a/cockatrice/src/game_graphics/deckview/deck_view.cpp +++ b/cockatrice/src/game_graphics/deckview/deck_view.cpp @@ -2,15 +2,47 @@ #include "../../client/settings/cache_settings.h" #include "../../interface/theme_manager.h" +#include "../board/abstract_card_drag_item.h" +#include "../card_dimensions.h" +#include "libcockatrice/card/printing/exact_card.h" +#include "libcockatrice/deck_list/tree/deck_list_card_node.h" +#include "libcockatrice/deck_list/tree/inner_deck_list_node.h" +#include "libcockatrice/protocol/pb/move_card_to_zone.pb.h" #include +#include +#include +#include +#include +#include +#include +#include #include +#include #include +#include +#include +#include +#include +#include +#include +#include +#include #include #include +#include #include #include #include +#include +#include +#include +#include + +class QObject; +class QRectF; +class QWidget; +struct CardRef; DeckViewCardDragItem::DeckViewCardDragItem(DeckViewCard *_item, const QPointF &_hotSpot, diff --git a/cockatrice/src/game_graphics/deckview/deck_view.h b/cockatrice/src/game_graphics/deckview/deck_view.h index f996fd4da..3b5b4b6f4 100644 --- a/cockatrice/src/game_graphics/deckview/deck_view.h +++ b/cockatrice/src/game_graphics/deckview/deck_view.h @@ -8,17 +8,30 @@ #define DECKVIEW_H #include "../board/abstract_card_drag_item.h" +#include "../board/abstract_card_item.h" +#include "../board/graphics_item_type.h" +#include +#include #include +#include #include +#include +#include +#include +#include +#include +#include +#include #include +#include class DeckList; -class InnerDecklistNode; -class CardInfo; class DeckViewCardContainer; class DeckViewCardDragItem; -class MoveCardToZone; +class QObject; +class QWidget; +struct CardRef; class DeckViewCard : public AbstractCardItem { diff --git a/cockatrice/src/game_graphics/deckview/deck_view_container.cpp b/cockatrice/src/game_graphics/deckview/deck_view_container.cpp index bc07ac183..c97767ec7 100644 --- a/cockatrice/src/game_graphics/deckview/deck_view_container.cpp +++ b/cockatrice/src/game_graphics/deckview/deck_view_container.cpp @@ -2,18 +2,36 @@ #include "../../client/settings/cache_settings.h" #include "../../client/settings/shortcuts_settings.h" +#include "../../game/abstract_game.h" +#include "../../game/game_event_handler.h" +#include "../../game/game_state.h" #include "../../interface/card_picture_loader/card_picture_loader.h" +#include "../../interface/deck_loader/deck_file_format.h" #include "../../interface/deck_loader/deck_loader.h" +#include "../../interface/deck_loader/loaded_deck.h" #include "../../interface/widgets/dialogs/dlg_load_deck.h" #include "../../interface/widgets/dialogs/dlg_load_deck_from_clipboard.h" #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 "../board/abstract_card_item.h" #include "deck_view.h" +#include "libcockatrice/card/database/card_database_querier.h" +#include "libcockatrice/card/printing/exact_card.h" +#include "libcockatrice/interfaces/interface_interface_settings_provider.h" +#include "libcockatrice/protocol/pb/move_card_to_zone.pb.h" +#include "libcockatrice/protocol/pb/response.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_playerproperties.pb.h" +#include "libcockatrice/utility/card_ref.h" +#include +#include #include -#include +#include +#include +#include +#include #include #include #include @@ -26,6 +44,9 @@ #include #include #include +#include +#include +#include ToggleButton::ToggleButton(QWidget *parent) : QPushButton(parent), state(false) { diff --git a/cockatrice/src/game_graphics/deckview/deck_view_container.h b/cockatrice/src/game_graphics/deckview/deck_view_container.h index b5317c39a..80b82b6e5 100644 --- a/cockatrice/src/game_graphics/deckview/deck_view_container.h +++ b/cockatrice/src/game_graphics/deckview/deck_view_container.h @@ -7,14 +7,17 @@ #ifndef DECK_VIEW_CONTAINER_H #define DECK_VIEW_CONTAINER_H -#include "../../interface/deck_loader/deck_loader.h" +#include "libcockatrice/deck_list/deck_list.h" +#include "libcockatrice/utility/playmat_params.h" #include +#include +#include +#include class QVBoxLayout; class AbstractCardItem; class VisualDeckStorageWidget; -class DeckPreviewWidget; class Response; class TabGame; class DeckView; diff --git a/cockatrice/src/game_graphics/deckview/tabbed_deck_view_container.cpp b/cockatrice/src/game_graphics/deckview/tabbed_deck_view_container.cpp index 2ffb214f7..90cbed9a1 100644 --- a/cockatrice/src/game_graphics/deckview/tabbed_deck_view_container.cpp +++ b/cockatrice/src/game_graphics/deckview/tabbed_deck_view_container.cpp @@ -1,7 +1,15 @@ #include "tabbed_deck_view_container.h" -#include "../../interface/widgets/tabs/tab_game.h" +#include "../board/abstract_card_item.h" #include "deck_view.h" +#include "deck_view_container.h" + +#include +#include +#include + +class DeckList; +class TabGame; TabbedDeckViewContainer::TabbedDeckViewContainer(int _playerId, TabGame *parent) : QTabWidget(nullptr), playerId(_playerId), parentGame(parent) diff --git a/cockatrice/src/game_graphics/deckview/tabbed_deck_view_container.h b/cockatrice/src/game_graphics/deckview/tabbed_deck_view_container.h index 7cfa8c9aa..7d73b78a2 100644 --- a/cockatrice/src/game_graphics/deckview/tabbed_deck_view_container.h +++ b/cockatrice/src/game_graphics/deckview/tabbed_deck_view_container.h @@ -6,9 +6,15 @@ #ifndef TABBED_DECK_VIEW_CONTAINER_H #define TABBED_DECK_VIEW_CONTAINER_H -#include "deck_view_container.h" - +#include +#include #include +#include + +class DeckList; +class DeckView; +class DeckViewContainer; +class TabGame; class TabbedDeckViewContainer : public QTabWidget { diff --git a/cockatrice/src/game_graphics/dialogs/dlg_create_token.cpp b/cockatrice/src/game_graphics/dialogs/dlg_create_token.cpp index 6d8ad0534..5ce050380 100644 --- a/cockatrice/src/game_graphics/dialogs/dlg_create_token.cpp +++ b/cockatrice/src/game_graphics/dialogs/dlg_create_token.cpp @@ -2,23 +2,30 @@ #include "../../client/settings/cache_settings.h" #include "../../interface/widgets/cards/card_info_picture_widget.h" -#include "../../main.h" +#include "libcockatrice/card/card_info.h" +#include "libcockatrice/card/database/card_database_querier.h" +#include +#include #include #include #include #include #include #include -#include #include +#include #include #include +#include #include +#include +#include #include +#include +#include #include #include -#include #include #include #include @@ -26,6 +33,10 @@ #include #include #include +#include + +class QModelIndex; +class QWidget; DlgCreateToken::DlgCreateToken(const QStringList &_predefinedTokens, QWidget *parent) : QDialog(parent), predefinedTokens(_predefinedTokens) diff --git a/cockatrice/src/game_graphics/dialogs/dlg_create_token.h b/cockatrice/src/game_graphics/dialogs/dlg_create_token.h index 281e161fc..a03a1046b 100644 --- a/cockatrice/src/game_graphics/dialogs/dlg_create_token.h +++ b/cockatrice/src/game_graphics/dialogs/dlg_create_token.h @@ -8,19 +8,22 @@ #define DLG_CREATETOKEN_H #include +#include +#include +#include +#include class QLabel; class QLineEdit; class QComboBox; class QCheckBox; -class QPushButton; class QRadioButton; -class QCloseEvent; class QTreeView; -class DeckList; class CardDatabaseModel; class TokenDisplayModel; class CardInfoPictureWidget; +class QModelIndex; +class QWidget; struct TokenInfo { diff --git a/cockatrice/src/game_graphics/dialogs/dlg_move_top_cards_until.cpp b/cockatrice/src/game_graphics/dialogs/dlg_move_top_cards_until.cpp index 41c907163..b7cd73d79 100644 --- a/cockatrice/src/game_graphics/dialogs/dlg_move_top_cards_until.cpp +++ b/cockatrice/src/game_graphics/dialogs/dlg_move_top_cards_until.cpp @@ -1,17 +1,24 @@ #include "dlg_move_top_cards_until.h" +#include "libcockatrice/card/card_info.h" + +#include +#include #include #include +#include #include -#include #include #include #include #include -#include +#include #include #include #include +#include + +class QWidget; DlgMoveTopCardsUntil::DlgMoveTopCardsUntil(QWidget *parent, const MoveTopCardsUntilOptions &options) : QDialog(parent) { diff --git a/cockatrice/src/game_graphics/dialogs/dlg_move_top_cards_until.h b/cockatrice/src/game_graphics/dialogs/dlg_move_top_cards_until.h index ac9d41a94..b9080bcc1 100644 --- a/cockatrice/src/game_graphics/dialogs/dlg_move_top_cards_until.h +++ b/cockatrice/src/game_graphics/dialogs/dlg_move_top_cards_until.h @@ -7,14 +7,19 @@ #ifndef DLG_MOVE_TOP_CARDS_UNTIL_H #define DLG_MOVE_TOP_CARDS_UNTIL_H -#include -#include #include -#include -#include -#include +#include +#include +#include +#include class FilterString; +class QCheckBox; +class QComboBox; +class QDialogButtonBox; +class QLabel; +class QSpinBox; +class QWidget; struct MoveTopCardsUntilOptions { diff --git a/cockatrice/src/game_graphics/dialogs/dlg_roll_dice.cpp b/cockatrice/src/game_graphics/dialogs/dlg_roll_dice.cpp index 4f5d5b861..b17881211 100644 --- a/cockatrice/src/game_graphics/dialogs/dlg_roll_dice.cpp +++ b/cockatrice/src/game_graphics/dialogs/dlg_roll_dice.cpp @@ -1,12 +1,15 @@ #include "dlg_roll_dice.h" #include +#include #include #include +#include #include -#include #include +class QWidget; + DlgRollDice::DlgRollDice(QWidget *parent) : QDialog(parent) { numberOfSidesLabel = new QLabel(tr("Number of sides:")); diff --git a/cockatrice/src/game_graphics/dialogs/dlg_roll_dice.h b/cockatrice/src/game_graphics/dialogs/dlg_roll_dice.h index 15f7dc1ba..4c146a054 100644 --- a/cockatrice/src/game_graphics/dialogs/dlg_roll_dice.h +++ b/cockatrice/src/game_graphics/dialogs/dlg_roll_dice.h @@ -8,9 +8,13 @@ #define DLG_ROLL_DICE_H #include -#include -#include -#include +#include +#include + +class QDialogButtonBox; +class QLabel; +class QSpinBox; +class QWidget; class DlgRollDice : public QDialog { diff --git a/cockatrice/src/game_graphics/game_scene.cpp b/cockatrice/src/game_graphics/game_scene.cpp index e4466f95d..cc3f9f1d3 100644 --- a/cockatrice/src/game_graphics/game_scene.cpp +++ b/cockatrice/src/game_graphics/game_scene.cpp @@ -2,25 +2,50 @@ #include "../client/settings/cache_settings.h" #include "../game/abstract_game.h" +#include "../game/arrow_registry.h" +#include "../game/board/arrow_data.h" #include "../game/player/player_actions.h" +#include "../game/player/player_event_handler.h" +#include "../game/player/player_info.h" #include "../game/player/player_logic.h" -#include "../game_graphics/player/player_graphics_item.h" +#include "../game/zones/card_zone_logic.h" +#include "../game/zones/view_zone_logic.h" +#include "animated_item.h" +#include "board/abstract_card_item.h" +#include "board/arrow_item.h" #include "board/card_item.h" #include "phases_toolbar.h" #include "player/menu/player_menu.h" #include "player/player_graphics_item.h" +#include "player/player_target.h" +#include "zones/card_zone.h" #include "zones/select_zone.h" #include "zones/view_zone.h" #include "zones/view_zone_widget.h" #include #include +#include +#include #include #include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include +#include #include #include #include +#include + +class ArrowTarget; /** * @brief Constructs the GameScene. diff --git a/cockatrice/src/game_graphics/game_scene.h b/cockatrice/src/game_graphics/game_scene.h index cf81eec9d..c7cae1e76 100644 --- a/cockatrice/src/game_graphics/game_scene.h +++ b/cockatrice/src/game_graphics/game_scene.h @@ -2,16 +2,33 @@ #define GAMESCENE_H #include "../game/arrow_registry.h" -#include "../game/board/arrow_data.h" -#include "../game/zones/card_zone_logic.h" -#include "animated_item.h" -#include "board/arrow_item.h" #include #include #include #include +#include +#include +#include #include +#include +#include +#include +#include +#include +#include + +// IWYU pragma: keep +// ServerInfo_Card appears inside QList<...> in signal and slot +// signatures, which the moc-generated code needs to be complete. +#include + +class CardZoneLogic; +class IAnimatedItem; +class QGraphicsItem; +class QPoint; +struct ArrowData; +template class QSharedPointer; inline Q_LOGGING_CATEGORY(GameSceneLog, "game_scene"); inline Q_LOGGING_CATEGORY(GameScenePlayerAdditionRemovalLog, "game_scene.player_addition_removal"); diff --git a/cockatrice/src/game_graphics/game_view.cpp b/cockatrice/src/game_graphics/game_view.cpp index ed6355157..1c92d74ae 100644 --- a/cockatrice/src/game_graphics/game_view.cpp +++ b/cockatrice/src/game_graphics/game_view.cpp @@ -5,13 +5,24 @@ #include "game_scene.h" #include +#include +#include +#include +#include #include #include -#include +#include +#include +#include #include #include +#include +#include +#include +#include #include #include +#include // QRubberBand calls raise() in showEvent() and changeEvent() to stay on top of siblings. // This subclass disables that behavior so dragCountLabel can appear above it. diff --git a/cockatrice/src/game_graphics/game_view.h b/cockatrice/src/game_graphics/game_view.h index a23655513..e57267734 100644 --- a/cockatrice/src/game_graphics/game_view.h +++ b/cockatrice/src/game_graphics/game_view.h @@ -10,11 +10,19 @@ #include "tally/tally.h" #include +#include +#include +#include +#include +#include +#include class GameScene; class QGridLayout; class QLabel; class QRubberBand; +class QAction; +class QWidget; class GameView : public QGraphicsView { diff --git a/cockatrice/src/game_graphics/hand_counter.cpp b/cockatrice/src/game_graphics/hand_counter.cpp index 8dcbcfdaa..9320c1295 100644 --- a/cockatrice/src/game_graphics/hand_counter.cpp +++ b/cockatrice/src/game_graphics/hand_counter.cpp @@ -1,11 +1,22 @@ #include "hand_counter.h" +#include "../game/board/card_list.h" +#include "../game/zones/card_zone_logic.h" #include "../interface/pixel_map_generator.h" -#include "zones/card_zone.h" #include #include +#include #include +#include +#include +#include +#include +#include +#include +#include + +class QGraphicsItem; HandCounter::HandCounter(QGraphicsItem *parent) : AbstractGraphicsItem(parent), number(0) { diff --git a/cockatrice/src/game_graphics/hand_counter.h b/cockatrice/src/game_graphics/hand_counter.h index 9aa65d514..c1f5d09d8 100644 --- a/cockatrice/src/game_graphics/hand_counter.h +++ b/cockatrice/src/game_graphics/hand_counter.h @@ -10,10 +10,10 @@ #include "board/abstract_graphics_item.h" #include "board/graphics_item_type.h" -#include +#include -class QPainter; -class QPixmap; +class QGraphicsItem; +class QPoint; class HandCounter : public AbstractGraphicsItem { diff --git a/cockatrice/src/game_graphics/log/message_log_widget.cpp b/cockatrice/src/game_graphics/log/message_log_widget.cpp index b998a3650..4a9750fca 100644 --- a/cockatrice/src/game_graphics/log/message_log_widget.cpp +++ b/cockatrice/src/game_graphics/log/message_log_widget.cpp @@ -3,20 +3,39 @@ #include "../../client/settings/cache_settings.h" #include "../../client/settings/card_counter_settings.h" #include "../../client/sound_engine.h" +#include "../../client/translation.h" +#include "../../game/abstract_game.h" +#include "../../game/board/card_list.h" #include "../../game/game_state.h" #include "../../game/phase.h" +#include "../../game/player/player_event_handler.h" +#include "../../game/player/player_info.h" #include "../../game/player/player_logic.h" +#include "../../game/player/player_manager.h" +#include "../../game/zones/card_zone_logic.h" #include "../../interface/card_localization.h" -#include "../../interface/widgets/tabs/tab_game.h" +#include "../../interface/widgets/server/chat_view/chat_view.h" #include "../board/card_item.h" #include "../board/translate_counter_name.h" +#include "libcockatrice/protocol/pb/game_event_context.pb.h" +#include +#include +#include +#include +#include #include #include #include #include +#include +#include #include +class QWidget; +class ServerInfo_User; +class TabSupervisor; + static QString sanitizeHtml(QString dirty) { return dirty.replace("&", "&").replace("<", "<").replace(">", ">").replace("\"", """); diff --git a/cockatrice/src/game_graphics/log/message_log_widget.h b/cockatrice/src/game_graphics/log/message_log_widget.h index 375c6df4d..6800ba8ed 100644 --- a/cockatrice/src/game_graphics/log/message_log_widget.h +++ b/cockatrice/src/game_graphics/log/message_log_widget.h @@ -7,14 +7,23 @@ #ifndef MESSAGELOGWIDGET_H #define MESSAGELOGWIDGET_H -#include "../../game/zones/card_zone_logic.h" #include "../../interface/widgets/server/chat_view/chat_view.h" +#include +#include +#include +#include + class AbstractGame; class CardItem; class GameEventContext; class PlayerLogic; class PlayerEventHandler; +class CardZoneLogic; +class QWidget; +class ServerInfo_User; +class TabSupervisor; +template class QList; class MessageLogWidget : public ChatView { diff --git a/cockatrice/src/game_graphics/phases_toolbar.cpp b/cockatrice/src/game_graphics/phases_toolbar.cpp index 3361f9d55..d0a3f74fd 100644 --- a/cockatrice/src/game_graphics/phases_toolbar.cpp +++ b/cockatrice/src/game_graphics/phases_toolbar.cpp @@ -1,17 +1,26 @@ #include "phases_toolbar.h" #include "../interface/pixel_map_generator.h" +#include "board/abstract_graphics_item.h" +#include "libcockatrice/protocol/pb/card_attributes.pb.h" #include -#include +#include #include -#include +#include +#include +#include #include +#include +#include +#include #include #include #include #include #include +#include +#include PhaseButton::PhaseButton(const QString &_name, QGraphicsItem *parent, QAction *_doubleClickAction, bool _highlightable) : QObject(), QGraphicsItem(parent), name(_name), active(false), highlightable(_highlightable), diff --git a/cockatrice/src/game_graphics/phases_toolbar.h b/cockatrice/src/game_graphics/phases_toolbar.h index 39884ef75..376775284 100644 --- a/cockatrice/src/game_graphics/phases_toolbar.h +++ b/cockatrice/src/game_graphics/phases_toolbar.h @@ -8,11 +8,14 @@ #ifndef PHASESTOOLBAR_H #define PHASESTOOLBAR_H -#include "board/abstract_graphics_item.h" - -#include -#include +#include #include +#include +#include +#include + +class QAction; +class QTimer; namespace google { @@ -21,8 +24,6 @@ namespace protobuf class Message; } } // namespace google -class PlayerLogic; -class GameCommand; class PhaseButton : public QObject, public QGraphicsItem { diff --git a/cockatrice/src/game_graphics/player/menu/card_menu.cpp b/cockatrice/src/game_graphics/player/menu/card_menu.cpp index 75ca1b28b..137ec2ed1 100644 --- a/cockatrice/src/game_graphics/player/menu/card_menu.cpp +++ b/cockatrice/src/game_graphics/player/menu/card_menu.cpp @@ -1,21 +1,43 @@ #include "card_menu.h" +#include "../../../client/settings/cache_settings.h" #include "../../../client/settings/card_counter_settings.h" #include "../../../client/settings/shortcuts_settings.h" -#include "../../../interface/widgets/tabs/tab_game.h" +#include "../../../game/abstract_game.h" +#include "../../../game/player/player_info.h" +#include "../../../game/player/player_manager.h" +#include "../../../game/zones/card_zone_logic.h" #include "../../board/card_item.h" #include "../../game/player/player_actions.h" #include "../../game/player/player_logic.h" #include "../../game/zones/view_zone_logic.h" +#include "../../game_scene.h" #include "../card_menu_action_type.h" #include "../player_graphics_item.h" +#include "libcockatrice/card/card_info.h" +#include "libcockatrice/card/database/card_database_querier.h" +#include "libcockatrice/card/printing/exact_card.h" +#include "libcockatrice/card/printing/printing_info.h" +#include "libcockatrice/utility/card_ref.h" #include "move_menu.h" #include "pt_menu.h" +#include +#include +#include +#include +#include #include +#include +#include +#include +#include +#include #include #include #include +#include +#include /** * @brief Creates a circular icon filled with the specified color. diff --git a/cockatrice/src/game_graphics/player/menu/card_menu.h b/cockatrice/src/game_graphics/player/menu/card_menu.h index d67ef3876..337d77b3e 100644 --- a/cockatrice/src/game_graphics/player/menu/card_menu.h +++ b/cockatrice/src/game_graphics/player/menu/card_menu.h @@ -7,12 +7,18 @@ #ifndef COCKATRICE_CARD_MENU_H #define COCKATRICE_CARD_MENU_H +#include #include -#include +#include +#include +#include class CardItem; class PlayerGraphicsItem; class PlayerLogic; +class QAction; +struct CardRef; + class CardMenu : public QMenu { Q_OBJECT diff --git a/cockatrice/src/game_graphics/player/menu/custom_zone_menu.cpp b/cockatrice/src/game_graphics/player/menu/custom_zone_menu.cpp index 743746cc8..e16ebc112 100644 --- a/cockatrice/src/game_graphics/player/menu/custom_zone_menu.cpp +++ b/cockatrice/src/game_graphics/player/menu/custom_zone_menu.cpp @@ -1,8 +1,14 @@ #include "custom_zone_menu.h" +#include "../../../game/player/player_info.h" #include "../../game/player/player_logic.h" +#include "../../game_scene.h" #include "../player_graphics_item.h" +#include +#include +#include + CustomZoneMenu::CustomZoneMenu(PlayerGraphicsItem *_player) : player(_player) { menuAction()->setVisible(false); diff --git a/cockatrice/src/game_graphics/player/menu/custom_zone_menu.h b/cockatrice/src/game_graphics/player/menu/custom_zone_menu.h index 46dd58db6..07f5510ca 100644 --- a/cockatrice/src/game_graphics/player/menu/custom_zone_menu.h +++ b/cockatrice/src/game_graphics/player/menu/custom_zone_menu.h @@ -10,8 +10,11 @@ #include "abstract_player_component.h" #include +#include +#include class PlayerGraphicsItem; + class CustomZoneMenu : public QMenu, public AbstractPlayerComponent { Q_OBJECT diff --git a/cockatrice/src/game_graphics/player/menu/grave_menu.cpp b/cockatrice/src/game_graphics/player/menu/grave_menu.cpp index 6d9364579..580d2642e 100644 --- a/cockatrice/src/game_graphics/player/menu/grave_menu.cpp +++ b/cockatrice/src/game_graphics/player/menu/grave_menu.cpp @@ -1,15 +1,28 @@ #include "grave_menu.h" +#include "../../../client/settings/cache_settings.h" #include "../../../client/settings/shortcuts_settings.h" +#include "../../../game/player/player_info.h" +#include "../../../game/player/player_manager.h" +#include "../../../game/zones/pile_zone_logic.h" +#include "../../../interface/widgets/menus/tearoff_menu.h" #include "../../game/abstract_game.h" #include "../../game/player/player_actions.h" #include "../../game/player/player_logic.h" #include "../player_graphics_item.h" #include +#include +#include +#include #include +#include +#include +#include #include +class QWidget; + GraveyardMenu::GraveyardMenu(PlayerGraphicsItem *_player, QWidget *parent) : TearOffMenu(parent), player(_player) { createMoveActions(); diff --git a/cockatrice/src/game_graphics/player/menu/grave_menu.h b/cockatrice/src/game_graphics/player/menu/grave_menu.h index 116261e9b..fa285409f 100644 --- a/cockatrice/src/game_graphics/player/menu/grave_menu.h +++ b/cockatrice/src/game_graphics/player/menu/grave_menu.h @@ -10,10 +10,13 @@ #include "../../../interface/widgets/menus/tearoff_menu.h" #include "abstract_player_component.h" -#include -#include +#include class PlayerGraphicsItem; +class QAction; +class QMenu; +class QWidget; + class GraveyardMenu : public TearOffMenu, public AbstractPlayerComponent { Q_OBJECT diff --git a/cockatrice/src/game_graphics/player/menu/hand_menu.cpp b/cockatrice/src/game_graphics/player/menu/hand_menu.cpp index ba0702f07..141542cb4 100644 --- a/cockatrice/src/game_graphics/player/menu/hand_menu.cpp +++ b/cockatrice/src/game_graphics/player/menu/hand_menu.cpp @@ -2,16 +2,28 @@ #include "../../../client/settings/cache_settings.h" #include "../../../client/settings/shortcuts_settings.h" -#include "../../../game_graphics/zones/hand_zone.h" +#include "../../../game/board/card_list.h" +#include "../../../game/player/player_info.h" +#include "../../../game/player/player_manager.h" +#include "../../../game/zones/hand_zone_logic.h" +#include "../../../interface/widgets/menus/tearoff_menu.h" #include "../../game/abstract_game.h" #include "../../game/player/player_actions.h" #include "../../game/player/player_logic.h" #include "../player_graphics_item.h" #include +#include +#include +#include #include +#include +#include +#include #include +class QWidget; + HandMenu::HandMenu(PlayerGraphicsItem *_player, QWidget *parent) : TearOffMenu(parent), player(_player) { auto *actions = player->getLogic()->getPlayerActions(); diff --git a/cockatrice/src/game_graphics/player/menu/hand_menu.h b/cockatrice/src/game_graphics/player/menu/hand_menu.h index d5204612b..de7726064 100644 --- a/cockatrice/src/game_graphics/player/menu/hand_menu.h +++ b/cockatrice/src/game_graphics/player/menu/hand_menu.h @@ -10,11 +10,12 @@ #include "../../../interface/widgets/menus/tearoff_menu.h" #include "abstract_player_component.h" -#include -#include +#include class PlayerGraphicsItem; -class PlayerActions; +class QAction; +class QMenu; +class QWidget; class HandMenu : public TearOffMenu, public AbstractPlayerComponent { diff --git a/cockatrice/src/game_graphics/player/menu/library_menu.cpp b/cockatrice/src/game_graphics/player/menu/library_menu.cpp index 4c15e09ec..aa389006e 100644 --- a/cockatrice/src/game_graphics/player/menu/library_menu.cpp +++ b/cockatrice/src/game_graphics/player/menu/library_menu.cpp @@ -2,15 +2,29 @@ #include "../../../client/settings/cache_settings.h" #include "../../../client/settings/shortcuts_settings.h" -#include "../../../interface/widgets/tabs/tab_game.h" +#include "../../../game/board/card_list.h" +#include "../../../game/player/player_info.h" +#include "../../../game/player/player_manager.h" +#include "../../../game/zones/pile_zone_logic.h" +#include "../../../interface/widgets/menus/tearoff_menu.h" #include "../../game/abstract_game.h" #include "../../game/player/player_actions.h" #include "../../game/player/player_logic.h" #include "../player_graphics_item.h" #include +#include #include +#include +#include +#include +#include #include +#include +#include +#include + +class QWidget; LibraryMenu::LibraryMenu(PlayerGraphicsItem *_player, QWidget *parent) : TearOffMenu(parent), player(_player) { diff --git a/cockatrice/src/game_graphics/player/menu/library_menu.h b/cockatrice/src/game_graphics/player/menu/library_menu.h index bc0e6fb8e..72e90d0ba 100644 --- a/cockatrice/src/game_graphics/player/menu/library_menu.h +++ b/cockatrice/src/game_graphics/player/menu/library_menu.h @@ -11,11 +11,11 @@ #include "abstract_player_component.h" #include -#include +#include class PlayerGraphicsItem; -class PlayerLogic; -class PlayerActions; +class QMenu; +class QWidget; class LibraryMenu : public TearOffMenu, public AbstractPlayerComponent { diff --git a/cockatrice/src/game_graphics/player/menu/move_menu.cpp b/cockatrice/src/game_graphics/player/menu/move_menu.cpp index 632e0ddda..2991100ec 100644 --- a/cockatrice/src/game_graphics/player/menu/move_menu.cpp +++ b/cockatrice/src/game_graphics/player/menu/move_menu.cpp @@ -1,11 +1,15 @@ #include "move_menu.h" +#include "../../../client/settings/cache_settings.h" #include "../../../client/settings/shortcuts_settings.h" #include "../../game/player/player_actions.h" #include "../../game/player/player_logic.h" +#include "../../game_scene.h" #include "../card_menu_action_type.h" #include "../player_graphics_item.h" +#include + MoveMenu::MoveMenu(PlayerGraphicsItem *player) : QMenu(tr("Move to")) { aMoveToTopLibrary = new QAction(this); diff --git a/cockatrice/src/game_graphics/player/menu/move_menu.h b/cockatrice/src/game_graphics/player/menu/move_menu.h index 150bdbd3c..f1f239abd 100644 --- a/cockatrice/src/game_graphics/player/menu/move_menu.h +++ b/cockatrice/src/game_graphics/player/menu/move_menu.h @@ -7,8 +7,11 @@ #ifndef COCKATRICE_MOVE_MENU_H #define COCKATRICE_MOVE_MENU_H #include +#include class PlayerGraphicsItem; +class QAction; + class MoveMenu : public QMenu { Q_OBJECT diff --git a/cockatrice/src/game_graphics/player/menu/player_menu.cpp b/cockatrice/src/game_graphics/player/menu/player_menu.cpp index 7c90211df..44b184cfe 100644 --- a/cockatrice/src/game_graphics/player/menu/player_menu.cpp +++ b/cockatrice/src/game_graphics/player/menu/player_menu.cpp @@ -1,16 +1,31 @@ #include "player_menu.h" +#include "../../../client/settings/cache_settings.h" #include "../../../client/settings/shortcuts_settings.h" +#include "../../../game/abstract_game.h" +#include "../../../game/player/player_info.h" +#include "../../../game/player/player_logic.h" +#include "../../../game/player/player_manager.h" #include "../../../game_graphics/zones/hand_zone.h" #include "../../../game_graphics/zones/pile_zone.h" #include "../../../game_graphics/zones/table_zone.h" -#include "../../../interface/widgets/tabs/tab_game.h" +#include "../../../interface/widgets/menus/tearoff_menu.h" #include "../../board/card_item.h" #include "../player_graphics_item.h" +#include "abstract_player_component.h" #include "card_menu.h" +#include "custom_zone_menu.h" +#include "grave_menu.h" #include "hand_menu.h" +#include "library_menu.h" +#include "rfg_menu.h" +#include "say_menu.h" +#include "sideboard_menu.h" +#include "tally_menu.h" +#include "utility_menu.h" -#include +#include +#include PlayerMenu::PlayerMenu(PlayerGraphicsItem *_player) : QObject(_player), player(_player) { diff --git a/cockatrice/src/game_graphics/player/menu/player_menu.h b/cockatrice/src/game_graphics/player/menu/player_menu.h index a6e89fab0..97dd2fc56 100644 --- a/cockatrice/src/game_graphics/player/menu/player_menu.h +++ b/cockatrice/src/game_graphics/player/menu/player_menu.h @@ -8,24 +8,28 @@ #define COCKATRICE_PLAYER_MENU_H #include "../../../interface/widgets/menus/tearoff_menu.h" -#include "custom_zone_menu.h" -#include "grave_menu.h" -#include "hand_menu.h" -#include "library_menu.h" -#include "rfg_menu.h" -#include "say_menu.h" -#include "sideboard_menu.h" -#include "tally_menu.h" -#include "utility_menu.h" #include -#include #include -#include +#include +#include class CardItem; class CardMenu; class PlayerGraphicsItem; +class AbstractPlayerComponent; +class CustomZoneMenu; +class GraveyardMenu; +class HandMenu; +class LibraryMenu; +class QMenu; +class RfgMenu; +class SayMenu; +class SideboardMenu; +class TallyMenu; +class UtilityMenu; +struct CardRef; + class PlayerMenu : public QObject { Q_OBJECT diff --git a/cockatrice/src/game_graphics/player/menu/pt_menu.cpp b/cockatrice/src/game_graphics/player/menu/pt_menu.cpp index 152461c18..b4f852b43 100644 --- a/cockatrice/src/game_graphics/player/menu/pt_menu.cpp +++ b/cockatrice/src/game_graphics/player/menu/pt_menu.cpp @@ -1,10 +1,14 @@ #include "pt_menu.h" +#include "../../../client/settings/cache_settings.h" #include "../../../client/settings/shortcuts_settings.h" #include "../../game/player/player_actions.h" #include "../../game/player/player_logic.h" +#include "../../game_scene.h" #include "../player_graphics_item.h" +#include + PtMenu::PtMenu(PlayerGraphicsItem *player) : QMenu(tr("Power / toughness")) { PlayerActions *playerActions = player->getLogic()->getPlayerActions(); diff --git a/cockatrice/src/game_graphics/player/menu/pt_menu.h b/cockatrice/src/game_graphics/player/menu/pt_menu.h index 72f828801..aaf17cead 100644 --- a/cockatrice/src/game_graphics/player/menu/pt_menu.h +++ b/cockatrice/src/game_graphics/player/menu/pt_menu.h @@ -7,8 +7,11 @@ #ifndef COCKATRICE_PT_MENU_H #define COCKATRICE_PT_MENU_H #include +#include class PlayerGraphicsItem; +class QAction; + class PtMenu : public QMenu { diff --git a/cockatrice/src/game_graphics/player/menu/rfg_menu.cpp b/cockatrice/src/game_graphics/player/menu/rfg_menu.cpp index 45abadbf7..98514280f 100644 --- a/cockatrice/src/game_graphics/player/menu/rfg_menu.cpp +++ b/cockatrice/src/game_graphics/player/menu/rfg_menu.cpp @@ -1,11 +1,21 @@ #include "rfg_menu.h" +#include "../../../game/player/player_info.h" +#include "../../../game/zones/pile_zone_logic.h" +#include "../../../interface/widgets/menus/tearoff_menu.h" #include "../../game/player/player_actions.h" #include "../../game/player/player_logic.h" #include "../player_graphics_item.h" +#include +#include +#include +#include +#include #include +class QWidget; + RfgMenu::RfgMenu(PlayerGraphicsItem *_player, QWidget *parent) : TearOffMenu(parent), player(_player) { createMoveActions(); diff --git a/cockatrice/src/game_graphics/player/menu/rfg_menu.h b/cockatrice/src/game_graphics/player/menu/rfg_menu.h index f5dd888e4..8e1460316 100644 --- a/cockatrice/src/game_graphics/player/menu/rfg_menu.h +++ b/cockatrice/src/game_graphics/player/menu/rfg_menu.h @@ -10,10 +10,13 @@ #include "../../../interface/widgets/menus/tearoff_menu.h" #include "abstract_player_component.h" -#include -#include +#include class PlayerGraphicsItem; +class QAction; +class QMenu; +class QWidget; + class RfgMenu : public TearOffMenu, public AbstractPlayerComponent { Q_OBJECT diff --git a/cockatrice/src/game_graphics/player/menu/say_menu.cpp b/cockatrice/src/game_graphics/player/menu/say_menu.cpp index e7b0b3826..d467c6469 100644 --- a/cockatrice/src/game_graphics/player/menu/say_menu.cpp +++ b/cockatrice/src/game_graphics/player/menu/say_menu.cpp @@ -5,7 +5,12 @@ #include "../../game/player/player_logic.h" #include "../player_graphics_item.h" +#include +#include +#include +#include #include + SayMenu::SayMenu(PlayerGraphicsItem *_player) : player(_player) { connect(&SettingsCache::instance().messages(), &MessageSettings::messageMacrosChanged, this, &SayMenu::initSayMenu); diff --git a/cockatrice/src/game_graphics/player/menu/say_menu.h b/cockatrice/src/game_graphics/player/menu/say_menu.h index 3ff160d05..72169d18f 100644 --- a/cockatrice/src/game_graphics/player/menu/say_menu.h +++ b/cockatrice/src/game_graphics/player/menu/say_menu.h @@ -10,8 +10,10 @@ #include "abstract_player_component.h" #include +#include class PlayerGraphicsItem; + class SayMenu : public QMenu, public AbstractPlayerComponent { Q_OBJECT diff --git a/cockatrice/src/game_graphics/player/menu/sideboard_menu.cpp b/cockatrice/src/game_graphics/player/menu/sideboard_menu.cpp index 6753f743e..1eef3604f 100644 --- a/cockatrice/src/game_graphics/player/menu/sideboard_menu.cpp +++ b/cockatrice/src/game_graphics/player/menu/sideboard_menu.cpp @@ -1,10 +1,15 @@ #include "sideboard_menu.h" +#include "../../../client/settings/cache_settings.h" #include "../../../client/settings/shortcuts_settings.h" +#include "../../../game/player/player_info.h" #include "../../game/player/player_actions.h" #include "../../game/player/player_logic.h" #include "../player_graphics_item.h" +#include +#include + SideboardMenu::SideboardMenu(PlayerGraphicsItem *player, QMenu *playerMenu) : QMenu(playerMenu) { aViewSideboard = new QAction(this); diff --git a/cockatrice/src/game_graphics/player/menu/sideboard_menu.h b/cockatrice/src/game_graphics/player/menu/sideboard_menu.h index b3b547291..3e6501c90 100644 --- a/cockatrice/src/game_graphics/player/menu/sideboard_menu.h +++ b/cockatrice/src/game_graphics/player/menu/sideboard_menu.h @@ -10,8 +10,11 @@ #include "abstract_player_component.h" #include +#include class PlayerGraphicsItem; +class QAction; + class SideboardMenu : public QMenu, public AbstractPlayerComponent { Q_OBJECT diff --git a/cockatrice/src/game_graphics/player/menu/tally_menu.cpp b/cockatrice/src/game_graphics/player/menu/tally_menu.cpp index 08cb6cac9..7ae5b36ce 100644 --- a/cockatrice/src/game_graphics/player/menu/tally_menu.cpp +++ b/cockatrice/src/game_graphics/player/menu/tally_menu.cpp @@ -1,7 +1,10 @@ #include "tally_menu.h" #include "../../../client/settings/cache_settings.h" +#include "../../tally/tally.h" +#include "libcockatrice/settings/interface_settings.h" +#include #include TallyMenu::TallyMenu() diff --git a/cockatrice/src/game_graphics/player/menu/tally_menu.h b/cockatrice/src/game_graphics/player/menu/tally_menu.h index 11802fd20..75bd41ac0 100644 --- a/cockatrice/src/game_graphics/player/menu/tally_menu.h +++ b/cockatrice/src/game_graphics/player/menu/tally_menu.h @@ -2,10 +2,13 @@ #define COCKATRICE_TALLY_MENU_H #include "../../../interface/widgets/menus/tearoff_menu.h" -#include "../../tally/tally.h" #include "abstract_player_component.h" -#include +#include + +class QAction; +class QActionGroup; +enum class TallyType; class TallyMenu : public TearOffMenu, public AbstractPlayerComponent { diff --git a/cockatrice/src/game_graphics/player/menu/utility_menu.cpp b/cockatrice/src/game_graphics/player/menu/utility_menu.cpp index a7ea38d9a..7c18b3f4c 100644 --- a/cockatrice/src/game_graphics/player/menu/utility_menu.cpp +++ b/cockatrice/src/game_graphics/player/menu/utility_menu.cpp @@ -1,12 +1,17 @@ #include "utility_menu.h" +#include "../../../client/settings/cache_settings.h" #include "../../../client/settings/shortcuts_settings.h" -#include "../../../interface/deck_loader/deck_loader.h" +#include "../../../game/player/player_info.h" #include "../../game/player/player_actions.h" #include "../../game/player/player_logic.h" +#include "../../game_scene.h" #include "../player_graphics_item.h" -#include "player_menu.h" +#include "libcockatrice/card/card_info.h" +#include "libcockatrice/deck_list/deck_list.h" +#include +#include #include #include diff --git a/cockatrice/src/game_graphics/player/menu/utility_menu.h b/cockatrice/src/game_graphics/player/menu/utility_menu.h index bdc2a81a5..009e4aca3 100644 --- a/cockatrice/src/game_graphics/player/menu/utility_menu.h +++ b/cockatrice/src/game_graphics/player/menu/utility_menu.h @@ -9,10 +9,16 @@ #include "abstract_player_component.h" +#include +#include #include +#include +#include #include +#include class PlayerGraphicsItem; + class UtilityMenu : public QMenu, public AbstractPlayerComponent { Q_OBJECT diff --git a/cockatrice/src/game_graphics/player/player_area.cpp b/cockatrice/src/game_graphics/player/player_area.cpp index 86b8c2d1b..2af642eb5 100644 --- a/cockatrice/src/game_graphics/player/player_area.cpp +++ b/cockatrice/src/game_graphics/player/player_area.cpp @@ -2,6 +2,7 @@ #include "../../interface/theme_manager.h" +#include #include PlayerArea::PlayerArea(QGraphicsItem *parentItem) : QObject(), QGraphicsItem(parentItem) diff --git a/cockatrice/src/game_graphics/player/player_area.h b/cockatrice/src/game_graphics/player/player_area.h index d73547f81..7370a78be 100644 --- a/cockatrice/src/game_graphics/player/player_area.h +++ b/cockatrice/src/game_graphics/player/player_area.h @@ -8,7 +8,14 @@ #define COCKATRICE_PLAYER_AREA_H #include "../board/graphics_item_type.h" -#include "QGraphicsItem" + +#include +#include +#include +#include +#include + +class QGraphicsItem; /** * The entire graphical area belonging to a single player. diff --git a/cockatrice/src/game_graphics/player/player_dialogs.cpp b/cockatrice/src/game_graphics/player/player_dialogs.cpp index 95c225812..74f5de601 100644 --- a/cockatrice/src/game_graphics/player/player_dialogs.cpp +++ b/cockatrice/src/game_graphics/player/player_dialogs.cpp @@ -1,12 +1,21 @@ #include "player_dialogs.h" +#include "../../client/settings/cache_settings.h" #include "../../client/settings/card_counter_settings.h" +#include "../../game/player/player_actions.h" +#include "../../game/player/player_logic.h" #include "../../interface/widgets/utility/get_text_with_max.h" +#include "../board/abstract_counter.h" #include "../board/card_item.h" +#include "../dialogs/dlg_create_token.h" +#include "../dialogs/dlg_move_top_cards_until.h" #include "../dialogs/dlg_roll_dice.h" +#include "../game_scene.h" #include "../player/player_graphics_item.h" +#include #include +#include #include #include diff --git a/cockatrice/src/game_graphics/player/player_dialogs.h b/cockatrice/src/game_graphics/player/player_dialogs.h index f87704f2d..86d7282a2 100644 --- a/cockatrice/src/game_graphics/player/player_dialogs.h +++ b/cockatrice/src/game_graphics/player/player_dialogs.h @@ -1,12 +1,26 @@ #ifndef COCKATRICE_PLAYER_DIALOGS_H #define COCKATRICE_PLAYER_DIALOGS_H -#include "../../game/player/player_actions.h" #include "player_graphics_item.h" -#include -#include +// IWYU pragma: keep +// MoveTopCardsUntilOptions is passed by value to a slot, so the moc-generated +// code needs the complete type. +#include "../dialogs/dlg_move_top_cards_until.h" + +#include +#include +#include +#include +#include +#include +#include + +class CardItem; +class CardRelation; +class PlayerActions; +class QWidget; +struct MoveTopCardsUntilOptions; -class PlayerGraphicsItem; class PlayerDialogs : public QObject { diff --git a/cockatrice/src/game_graphics/player/player_graphics_item.cpp b/cockatrice/src/game_graphics/player/player_graphics_item.cpp index 122ab83be..419816087 100644 --- a/cockatrice/src/game_graphics/player/player_graphics_item.cpp +++ b/cockatrice/src/game_graphics/player/player_graphics_item.cpp @@ -1,26 +1,53 @@ #include "player_graphics_item.h" +#include "../../client/settings/cache_settings.h" +#include "../../game/board/counter_state.h" #include "../../game/player/player_actions.h" +#include "../../game/player/player_info.h" +#include "../../game/player/player_logic.h" +#include "../../game/zones/card_zone_logic.h" +#include "../../game/zones/hand_zone_logic.h" +#include "../../game/zones/pile_zone_logic.h" +#include "../../game/zones/stack_zone_logic.h" +#include "../../game/zones/table_zone_logic.h" #include "../../interface/card_picture_loader/card_picture_loader.h" #include "../../interface/widgets/cards/art_crop_attribution.h" #include "../../interface/widgets/cards/card_art_utils.h" #include "../../interface/widgets/playmat/playmat_utils.h" -#include "../../interface/widgets/tabs/tab_game.h" -#include "../board/abstract_card_item.h" +#include "../board/abstract_counter.h" #include "../board/counter_general.h" +#include "../card_dimensions.h" #include "../hand_counter.h" #include "../zones/hand_zone.h" #include "../zones/pile_zone.h" #include "../zones/stack_zone.h" #include "../zones/table_zone.h" +#include "libcockatrice/card/card_info.h" +#include "libcockatrice/card/database/card_database_querier.h" +#include "libcockatrice/card/printing/exact_card.h" +#include "libcockatrice/interfaces/interface_interface_settings_provider.h" +#include "libcockatrice/utility/card_ref.h" #include "menu/player_menu.h" +#include "player_area.h" #include "player_dialogs.h" +#include "player_target.h" -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include #include +#include +#include PlayerGraphicsItem::PlayerGraphicsItem(PlayerLogic *_player) : player(_player) { diff --git a/cockatrice/src/game_graphics/player/player_graphics_item.h b/cockatrice/src/game_graphics/player/player_graphics_item.h index e5ae59a61..e1ca0a036 100644 --- a/cockatrice/src/game_graphics/player/player_graphics_item.h +++ b/cockatrice/src/game_graphics/player/player_graphics_item.h @@ -6,12 +6,20 @@ #ifndef COCKATRICE_PLAYER_GRAPHICS_ITEM_H #define COCKATRICE_PLAYER_GRAPHICS_ITEM_H -#include "../../game/player/player_logic.h" -#include "../board/abstract_counter.h" +#include "../board/graphics_item_type.h" #include "../game_scene.h" +#include "libcockatrice/utility/playmat_params.h" #include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include class HandZone; class PileZone; @@ -20,7 +28,12 @@ class PlayerMenu; class PlayerTarget; class StackZone; class TableZone; -class ZoneViewZone; +class AbstractCounter; +class CardZone; +class CounterState; +class PlayerArea; +class PlayerLogic; +struct CardRef; class PlayerGraphicsItem : public QGraphicsObject { diff --git a/cockatrice/src/game_graphics/player/player_list_widget.cpp b/cockatrice/src/game_graphics/player/player_list_widget.cpp index a7ec2e4a9..7b358010f 100644 --- a/cockatrice/src/game_graphics/player/player_list_widget.cpp +++ b/cockatrice/src/game_graphics/player/player_list_widget.cpp @@ -2,16 +2,30 @@ #include "../../interface/pixel_map_generator.h" #include "../../interface/widgets/server/user/user_context_menu.h" -#include "../../interface/widgets/server/user/user_list_manager.h" -#include "../../interface/widgets/server/user/user_list_widget.h" -#include "../../interface/widgets/tabs/tab_game.h" -#include "../../interface/widgets/tabs/tab_supervisor.h" +#include "libcockatrice/protocol/pb/serverinfo_user.pb.h" +#include "user_level.h" -#include +#include +#include +#include +#include +#include +#include +#include #include -#include +#include +#include +#include +#include +#include +#include #include -#include +#include + +class QModelIndex; +class QObject; +class QPoint; +class QWidget; PlayerListItemDelegate::PlayerListItemDelegate(QObject *const parent) : QStyledItemDelegate(parent) { diff --git a/cockatrice/src/game_graphics/player/player_list_widget.h b/cockatrice/src/game_graphics/player/player_list_widget.h index f2f0be5fd..b070fe312 100644 --- a/cockatrice/src/game_graphics/player/player_list_widget.h +++ b/cockatrice/src/game_graphics/player/player_list_widget.h @@ -7,18 +7,23 @@ #ifndef PLAYERLISTWIDGET_H #define PLAYERLISTWIDGET_H -#include "../../game/player/player_logic.h" - #include #include +#include #include #include +#include +#include class ServerInfo_PlayerProperties; class TabSupervisor; class AbstractClient; class AbstractGame; class UserContextMenu; +class QModelIndex; +class QObject; +class QPoint; +class QWidget; class PlayerListItemDelegate : public QStyledItemDelegate { diff --git a/cockatrice/src/game_graphics/player/player_target.cpp b/cockatrice/src/game_graphics/player/player_target.cpp index d6c28370d..24734cd42 100644 --- a/cockatrice/src/game_graphics/player/player_target.cpp +++ b/cockatrice/src/game_graphics/player/player_target.cpp @@ -1,16 +1,43 @@ #include "player_target.h" #include "../../client/settings/cache_settings.h" +#include "../../game/player/player_info.h" #include "../../game/player/player_logic.h" #include "../../interface/pixel_map_generator.h" +#include "../board/abstract_counter.h" +#include "../board/abstract_graphics_item.h" +#include "../board/arrow_target.h" #include "../game_scene.h" +#include "libcockatrice/settings/interface_settings.h" +#include "user_level.h" -#include -#include +#include +#include +#include +#include +#include +#include #include +#include +#include #include +#include +#include +#include +#include +#include +#include +#include +#include #include #include +#include +#include +#include +#include + +class CounterState; +class QGraphicsItem; PlayerCounter::PlayerCounter(CounterState *state, PlayerLogic *player, QGraphicsItem *parent) : AbstractCounter(state, player, false, false, parent) diff --git a/cockatrice/src/game_graphics/player/player_target.h b/cockatrice/src/game_graphics/player/player_target.h index 1d06c6274..7780104d2 100644 --- a/cockatrice/src/game_graphics/player/player_target.h +++ b/cockatrice/src/game_graphics/player/player_target.h @@ -14,8 +14,12 @@ #include #include +#include +#include class PlayerLogic; +class CounterState; +class QGraphicsItem; class PlayerCounter : public AbstractCounter, public IAnimatedItem { diff --git a/cockatrice/src/game_graphics/tally/stats_tally.cpp b/cockatrice/src/game_graphics/tally/stats_tally.cpp index 7e05c3fb1..28e280c02 100644 --- a/cockatrice/src/game_graphics/tally/stats_tally.cpp +++ b/cockatrice/src/game_graphics/tally/stats_tally.cpp @@ -4,6 +4,11 @@ #include #include +#include +#include +#include +#include +#include #include static int sumPowers(const QList &cards) diff --git a/cockatrice/src/game_graphics/tally/stats_tally.h b/cockatrice/src/game_graphics/tally/stats_tally.h index e499587eb..cb0bdf81b 100644 --- a/cockatrice/src/game_graphics/tally/stats_tally.h +++ b/cockatrice/src/game_graphics/tally/stats_tally.h @@ -2,6 +2,10 @@ #define COCKATRICE_STATS_TALLY_H #include "tally.h" +#include + +class CardItem; + /** * @brief Extracts and tallies stats from selected cards. */ diff --git a/cockatrice/src/game_graphics/tally/subtype_tally.cpp b/cockatrice/src/game_graphics/tally/subtype_tally.cpp index 2241eb3b2..ccd727405 100644 --- a/cockatrice/src/game_graphics/tally/subtype_tally.cpp +++ b/cockatrice/src/game_graphics/tally/subtype_tally.cpp @@ -1,9 +1,18 @@ #include "subtype_tally.h" #include "../board/card_item.h" +#include "libcockatrice/card/card_info.h" +#include "libcockatrice/card/printing/exact_card.h" #include +#include +#include +#include +#include #include +#include +#include +#include namespace { diff --git a/cockatrice/src/game_graphics/tally/subtype_tally.h b/cockatrice/src/game_graphics/tally/subtype_tally.h index 9926528e0..019a797d4 100644 --- a/cockatrice/src/game_graphics/tally/subtype_tally.h +++ b/cockatrice/src/game_graphics/tally/subtype_tally.h @@ -4,7 +4,6 @@ #include "tally.h" #include -#include class CardItem; diff --git a/cockatrice/src/game_graphics/tally/tally.h b/cockatrice/src/game_graphics/tally/tally.h index 84c54918f..5699758e7 100644 --- a/cockatrice/src/game_graphics/tally/tally.h +++ b/cockatrice/src/game_graphics/tally/tally.h @@ -1,5 +1,6 @@ #ifndef COCKATRICE_TALLY_H #define COCKATRICE_TALLY_H +#include #include class CardItem; diff --git a/cockatrice/src/game_graphics/zones/card_zone.cpp b/cockatrice/src/game_graphics/zones/card_zone.cpp index 3457b681e..b2ba8618e 100644 --- a/cockatrice/src/game_graphics/zones/card_zone.cpp +++ b/cockatrice/src/game_graphics/zones/card_zone.cpp @@ -1,10 +1,18 @@ #include "card_zone.h" +#include "../../game/board/card_list.h" +#include "../../game/zones/card_zone_logic.h" +#include "../board/abstract_graphics_item.h" #include "../board/card_item.h" -#include "view_zone.h" +#include #include #include +#include + +class QGraphicsItem; +class QPoint; +class QPointF; CardZone::CardZone(CardZoneLogic *_logic, QGraphicsItem *parent) : AbstractGraphicsItem(parent), menu(nullptr), doubleClickAction(0), logic(_logic) diff --git a/cockatrice/src/game_graphics/zones/card_zone.h b/cockatrice/src/game_graphics/zones/card_zone.h index 4cef6ca80..def3eee14 100644 --- a/cockatrice/src/game_graphics/zones/card_zone.h +++ b/cockatrice/src/game_graphics/zones/card_zone.h @@ -7,12 +7,21 @@ #ifndef CARDZONE_H #define CARDZONE_H -#include "../../game/zones/card_zone_logic.h" #include "../board/abstract_graphics_item.h" #include "../board/graphics_item_type.h" #include -#include +#include +#include + +class CardDragItem; +class CardItem; +class CardZoneLogic; +class QAction; +class QGraphicsItem; +class QMenu; +class QPoint; +template class QList; inline Q_LOGGING_CATEGORY(CardZoneLog, "card_zone"); diff --git a/cockatrice/src/game_graphics/zones/hand_zone.cpp b/cockatrice/src/game_graphics/zones/hand_zone.cpp index 1a8f7a910..3e527c081 100644 --- a/cockatrice/src/game_graphics/zones/hand_zone.cpp +++ b/cockatrice/src/game_graphics/zones/hand_zone.cpp @@ -2,14 +2,27 @@ #include "../../client/settings/cache_settings.h" #include "../../game/player/player_actions.h" +#include "../../game/player/player_info.h" #include "../../game/player/player_logic.h" +#include "../../game/zones/card_zone_logic.h" +#include "../../game/zones/hand_zone_logic.h" #include "../../interface/theme_manager.h" #include "../board/card_drag_item.h" #include "../board/card_item.h" +#include "../card_dimensions.h" +#include +#include #include +#include +#include +#include +#include #include #include +#include + +class QGraphicsItem; HandZone::HandZone(HandZoneLogic *_logic, int _zoneHeight, QGraphicsItem *parent) : SelectZone(_logic, parent), zoneHeight(_zoneHeight) diff --git a/cockatrice/src/game_graphics/zones/hand_zone.h b/cockatrice/src/game_graphics/zones/hand_zone.h index c3f3f252b..5c91d684d 100644 --- a/cockatrice/src/game_graphics/zones/hand_zone.h +++ b/cockatrice/src/game_graphics/zones/hand_zone.h @@ -7,9 +7,16 @@ #ifndef HANDZONE_H #define HANDZONE_H -#include "../../game/zones/hand_zone_logic.h" +#include "../../game/board/card_list.h" #include "select_zone.h" +#include +#include + +class HandZoneLogic; +class QGraphicsItem; +template class QList; + class HandZone : public SelectZone { Q_OBJECT diff --git a/cockatrice/src/game_graphics/zones/pile_zone.cpp b/cockatrice/src/game_graphics/zones/pile_zone.cpp index abdf262f4..77a87a4af 100644 --- a/cockatrice/src/game_graphics/zones/pile_zone.cpp +++ b/cockatrice/src/game_graphics/zones/pile_zone.cpp @@ -1,18 +1,33 @@ #include "pile_zone.h" #include "../../client/settings/cache_settings.h" +#include "../../game/board/card_list.h" #include "../../game/player/player_actions.h" +#include "../../game/player/player_info.h" #include "../../game/player/player_logic.h" +#include "../../game/zones/card_zone_logic.h" #include "../../game/zones/pile_zone_logic.h" #include "../board/card_drag_item.h" #include "../board/card_item.h" -#include "view_zone.h" +#include "../card_dimensions.h" #include +#include +#include #include +#include #include +#include +#include +#include +#include +#include +#include +#include #include #include +#include +#include PileZone::PileZone(PileZoneLogic *_logic, QGraphicsItem *parent) : CardZone(_logic, parent) { diff --git a/cockatrice/src/game_graphics/zones/pile_zone.h b/cockatrice/src/game_graphics/zones/pile_zone.h index 099bc6f60..b2d8d0cd2 100644 --- a/cockatrice/src/game_graphics/zones/pile_zone.h +++ b/cockatrice/src/game_graphics/zones/pile_zone.h @@ -7,9 +7,13 @@ #ifndef PILEZONE_H #define PILEZONE_H -#include "../../game/zones/pile_zone_logic.h" #include "card_zone.h" +#include + +class PileZoneLogic; +class QGraphicsItem; + /** * A CardZone where the cards are in a single pile instead of being laid out. * Usually only top card is accessible by clicking. diff --git a/cockatrice/src/game_graphics/zones/select_zone.cpp b/cockatrice/src/game_graphics/zones/select_zone.cpp index 470c70fcf..d69ec32f5 100644 --- a/cockatrice/src/game_graphics/zones/select_zone.cpp +++ b/cockatrice/src/game_graphics/zones/select_zone.cpp @@ -1,13 +1,25 @@ #include "select_zone.h" #include "../../client/settings/cache_settings.h" +#include "../../game/board/card_list.h" +#include "../../game/zones/card_zone_logic.h" #include "../board/card_item.h" #include "../game_scene.h" +#include +#include #include +#include #include +#include +#include +#include +#include +#include #include #include +#include +#include static qreal stackingOffset(qreal cardHeight) { diff --git a/cockatrice/src/game_graphics/zones/select_zone.h b/cockatrice/src/game_graphics/zones/select_zone.h index b5d3ca37a..8a56949e3 100644 --- a/cockatrice/src/game_graphics/zones/select_zone.h +++ b/cockatrice/src/game_graphics/zones/select_zone.h @@ -9,10 +9,16 @@ #include "card_zone.h" +#include #include +#include #include +#include class QGraphicsRectItem; +class CardItem; +class CardZoneLogic; +class QGraphicsItem; /** * A CardZone where the cards are laid out, with each card directly interactable by clicking. diff --git a/cockatrice/src/game_graphics/zones/stack_zone.cpp b/cockatrice/src/game_graphics/zones/stack_zone.cpp index ff62097c7..de1ff8ba9 100644 --- a/cockatrice/src/game_graphics/zones/stack_zone.cpp +++ b/cockatrice/src/game_graphics/zones/stack_zone.cpp @@ -1,15 +1,27 @@ #include "stack_zone.h" +#include "../../game/board/card_list.h" #include "../../game/player/player_actions.h" +#include "../../game/player/player_info.h" #include "../../game/player/player_logic.h" +#include "../../game/zones/card_zone_logic.h" #include "../../game/zones/stack_zone_logic.h" #include "../../interface/theme_manager.h" #include "../board/card_drag_item.h" #include "../board/card_item.h" #include "../card_dimensions.h" +#include +#include +#include +#include #include +#include +#include +#include #include +#include +#include StackZone::StackZone(StackZoneLogic *_logic, int _zoneHeight, QGraphicsItem *parent) : SelectZone(_logic, parent), zoneHeight(_zoneHeight) diff --git a/cockatrice/src/game_graphics/zones/stack_zone.h b/cockatrice/src/game_graphics/zones/stack_zone.h index 96b3f96a6..5dea481b6 100644 --- a/cockatrice/src/game_graphics/zones/stack_zone.h +++ b/cockatrice/src/game_graphics/zones/stack_zone.h @@ -7,9 +7,14 @@ #ifndef STACKZONE_H #define STACKZONE_H -#include "../../game/zones/stack_zone_logic.h" #include "select_zone.h" +#include +#include + +class QGraphicsItem; +class StackZoneLogic; + class StackZone : public SelectZone { Q_OBJECT diff --git a/cockatrice/src/game_graphics/zones/table_zone.cpp b/cockatrice/src/game_graphics/zones/table_zone.cpp index 88e9abe6c..b704b79e0 100644 --- a/cockatrice/src/game_graphics/zones/table_zone.cpp +++ b/cockatrice/src/game_graphics/zones/table_zone.cpp @@ -1,23 +1,50 @@ #include "table_zone.h" #include "../../client/settings/cache_settings.h" +#include "../../game/board/card_list.h" #include "../../game/player/player_actions.h" +#include "../../game/player/player_info.h" #include "../../game/player/player_logic.h" +#include "../../game/zones/card_zone_logic.h" #include "../../game/zones/table_zone_logic.h" #include "../../interface/theme_manager.h" -#include "../board/arrow_item.h" +#include "../board/abstract_card_item.h" #include "../board/card_drag_item.h" #include "../board/card_item.h" #include "../game_scene.h" #include "../z_values.h" +#include "libcockatrice/card/printing/exact_card.h" +#include "libcockatrice/protocol/pb/card_attributes.pb.h" +#include +#include +#include +#include #include +#include +#include +#include #include +#include +#include +#include +#include +#include +#include #include #include #include #include #include +#include + +namespace google +{ +namespace protobuf +{ +class Message; +} // namespace protobuf +} // namespace google const QColor TableZone::BACKGROUND_COLOR = QColor(100, 100, 100); const QColor TableZone::FADE_MASK = QColor(0, 0, 0, 80); diff --git a/cockatrice/src/game_graphics/zones/table_zone.h b/cockatrice/src/game_graphics/zones/table_zone.h index 92915a2ed..ccd1d8e81 100644 --- a/cockatrice/src/game_graphics/zones/table_zone.h +++ b/cockatrice/src/game_graphics/zones/table_zone.h @@ -7,12 +7,26 @@ #ifndef TABLEZONE_H #define TABLEZONE_H -#include "../../game/zones/table_zone_logic.h" #include "../animated_item.h" -#include "../board/abstract_card_item.h" +#include "../card_dimensions.h" #include "select_zone.h" #include +#include +#include +#include +#include +#include +#include + +class CardDragItem; +class CardItem; +class CardZoneLogic; +class QColor; +class QGraphicsItem; +class QPainter; +class TableZoneLogic; +template class QList; /** * @brief TableZone is the grid based rect where CardItems may be placed. diff --git a/cockatrice/src/game_graphics/zones/view_zone.cpp b/cockatrice/src/game_graphics/zones/view_zone.cpp index 5bd5d262f..a2aa124dc 100644 --- a/cockatrice/src/game_graphics/zones/view_zone.cpp +++ b/cockatrice/src/game_graphics/zones/view_zone.cpp @@ -2,16 +2,29 @@ #include "../../client/settings/cache_settings.h" #include "../../game/player/player_actions.h" +#include "../../game/player/player_info.h" #include "../../game/player/player_logic.h" +#include "../../game/zones/card_zone_logic.h" #include "../../game/zones/view_zone_logic.h" #include "../board/card_drag_item.h" #include "../board/card_item.h" +#include "../card_dimensions.h" +#include "libcockatrice/card/printing/exact_card.h" +#include "libcockatrice/filters/filter_string.h" +#include "libcockatrice/protocol/pb/response.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_zone.pb.h" +#include "libcockatrice/utility/card_ref.h" #include +#include #include -#include +#include +#include #include +#include +#include #include +#include #include #include #include @@ -19,6 +32,9 @@ #include #include #include +#include + +class QGraphicsItem; /** * @param parent the parent QGraphicsWidget containing the reveal zone diff --git a/cockatrice/src/game_graphics/zones/view_zone.h b/cockatrice/src/game_graphics/zones/view_zone.h index 9dfa00ce2..4032da760 100644 --- a/cockatrice/src/game_graphics/zones/view_zone.h +++ b/cockatrice/src/game_graphics/zones/view_zone.h @@ -7,17 +7,29 @@ #ifndef ZONEVIEWERZONE_H #define ZONEVIEWERZONE_H -#include "../../game/zones/view_zone_logic.h" +#include "../../game/board/card_list.h" #include "select_zone.h" #include +#include #include +#include +#include +#include #include -#include +#include +#include + +// IWYU pragma: keep +// ServerInfo_Card appears inside QList<...> in signal and slot +// signatures, which the moc-generated code needs to be complete. +#include + +class QGraphicsItem; +class ZoneViewZoneLogic; inline Q_LOGGING_CATEGORY(ViewZoneLog, "view_zone"); -class ZoneViewWidget; class Response; class ServerInfo_Card; class QGraphicsSceneWheelEvent; diff --git a/cockatrice/src/game_graphics/zones/view_zone_widget.cpp b/cockatrice/src/game_graphics/zones/view_zone_widget.cpp index fa6733413..b4f73d348 100644 --- a/cockatrice/src/game_graphics/zones/view_zone_widget.cpp +++ b/cockatrice/src/game_graphics/zones/view_zone_widget.cpp @@ -1,28 +1,53 @@ #include "view_zone_widget.h" #include "../../client/settings/cache_settings.h" +#include "../../client/translation.h" #include "../../filters/syntax_help.h" +#include "../../game/board/card_list.h" #include "../../game/player/player_actions.h" #include "../../game/player/player_logic.h" +#include "../../game/zones/card_zone_logic.h" +#include "../../game/zones/view_zone_logic.h" #include "../../interface/pixel_map_generator.h" -#include "../board/card_item.h" -#include "../game_scene.h" +#include "../card_dimensions.h" #include "../z_values.h" +#include "libcockatrice/utility/macros.h" #include "view_zone.h" +#include #include +#include +#include +#include +#include +#include +#include +#include #include #include +#include #include +#include #include -#include -#include +#include +#include +#include #include +#include +#include +#include +#include #include #include +#include +#include +#include +#include +#include #include #include #include +#include namespace { diff --git a/cockatrice/src/game_graphics/zones/view_zone_widget.h b/cockatrice/src/game_graphics/zones/view_zone_widget.h index de5ad28d5..9fe022b27 100644 --- a/cockatrice/src/game_graphics/zones/view_zone_widget.h +++ b/cockatrice/src/game_graphics/zones/view_zone_widget.h @@ -6,30 +6,34 @@ #ifndef ZONEVIEWWIDGET_H #define ZONEVIEWWIDGET_H -#include "../../game/zones/card_zone_logic.h" - #include #include #include #include #include +#include +#include +#include #include +#include +#include #include +#include + +// IWYU pragma: keep +// ServerInfo_Card appears inside QList<...> in signal and slot +// signatures, which the moc-generated code needs to be complete. +#include -class QLabel; -class QPushButton; -class CardZone; class ZoneViewZone; class PlayerLogic; -class CardDatabase; class QScrollBar; -class GameScene; class ServerInfo_Card; class QGraphicsSceneMouseEvent; class QGraphicsSceneWheelEvent; -class QStyleOption; class QGraphicsView; class QWidget; +class CardZoneLogic; class ScrollableGraphicsProxyWidget : public QGraphicsProxyWidget { diff --git a/cockatrice/src/interface/card_localization.h b/cockatrice/src/interface/card_localization.h index 1a1e7be5d..39cbd7700 100644 --- a/cockatrice/src/interface/card_localization.h +++ b/cockatrice/src/interface/card_localization.h @@ -6,6 +6,7 @@ #include #include #include +#include #include namespace CardLocalization diff --git a/cockatrice/src/interface/card_picture_loader/card_picture_loader.cpp b/cockatrice/src/interface/card_picture_loader/card_picture_loader.cpp index 8e34942e1..4f77c7096 100644 --- a/cockatrice/src/interface/card_picture_loader/card_picture_loader.cpp +++ b/cockatrice/src/interface/card_picture_loader/card_picture_loader.cpp @@ -4,27 +4,45 @@ #include "../pixel_map_generator.h" #include "card_picture_loader_cache_method.h" #include "card_picture_loader_local_schemes.h" +#include "card_picture_loader_status_bar.h" +#include "card_picture_loader_worker.h" +#include "libcockatrice/card/card_info.h" +#include "libcockatrice/card/printing/exact_card.h" +#include "libcockatrice/card/printing/printing_info.h" +#include "libcockatrice/card/set/card_set.h" #include -#include +#include +#include +#include #include #include +#include #include +#include +#include +#include #include +#include #include -#include -#include -#include +#include +#include #include #include +#include +#include #include +#include +#include #include -#include +#include +#include +#include #include #include #include #include -#include +#include // never cache more than 300 cards at once for a single deck #define CACHED_CARD_PER_DECK_MAX 300 diff --git a/cockatrice/src/interface/card_picture_loader/card_picture_loader.h b/cockatrice/src/interface/card_picture_loader/card_picture_loader.h index 6224befbf..c6d91570b 100644 --- a/cockatrice/src/interface/card_picture_loader/card_picture_loader.h +++ b/cockatrice/src/interface/card_picture_loader/card_picture_loader.h @@ -1,12 +1,20 @@ #ifndef CARD_PICTURE_LOADER_H #define CARD_PICTURE_LOADER_H -#include "card_picture_loader_status_bar.h" -#include "card_picture_loader_worker.h" - -#include #include #include +#include +#include + +class CardPictureLoaderStatusBar; +class CardPictureLoaderWorker; +class ExactCard; +class QDateTime; +class QImage; +class QPixmap; +class QSize; +class QString; +template class QList; inline Q_LOGGING_CATEGORY(CardPictureLoaderLog, "card_picture_loader"); inline Q_LOGGING_CATEGORY(CardPictureLoaderCardBackCacheFailLog, "card_picture_loader.card_back_cache_fail"); diff --git a/cockatrice/src/interface/card_picture_loader/card_picture_loader_local.cpp b/cockatrice/src/interface/card_picture_loader/card_picture_loader_local.cpp index 12165e8f3..1437e23f4 100644 --- a/cockatrice/src/interface/card_picture_loader/card_picture_loader_local.cpp +++ b/cockatrice/src/interface/card_picture_loader/card_picture_loader_local.cpp @@ -2,11 +2,21 @@ #include "../../client/settings/cache_settings.h" #include "card_picture_loader_local_schemes.h" -#include "card_picture_to_load.h" +#include "libcockatrice/card/card_info.h" +#include "libcockatrice/card/printing/exact_card.h" +#include "libcockatrice/card/printing/printing_info.h" +#include "libcockatrice/card/set/card_set.h" +#include +#include #include -#include -#include +#include +#include +#include +#include +#include +#include +#include #include static constexpr int REFRESH_INTERVAL_MS = 10 * 1000; diff --git a/cockatrice/src/interface/card_picture_loader/card_picture_loader_local.h b/cockatrice/src/interface/card_picture_loader/card_picture_loader_local.h index 44163d1db..009897acc 100644 --- a/cockatrice/src/interface/card_picture_loader/card_picture_loader_local.h +++ b/cockatrice/src/interface/card_picture_loader/card_picture_loader_local.h @@ -1,8 +1,15 @@ #ifndef PICTURE_LOADER_LOCAL_H #define PICTURE_LOADER_LOCAL_H -#include -#include +#include +#include +#include +#include +#include +#include + +class ExactCard; +class QTimer; inline Q_LOGGING_CATEGORY(CardPictureLoaderLocalLog, "card_picture_loader.local"); diff --git a/cockatrice/src/interface/card_picture_loader/card_picture_loader_request_status_display_widget.cpp b/cockatrice/src/interface/card_picture_loader/card_picture_loader_request_status_display_widget.cpp index d1895af06..98364e3cb 100644 --- a/cockatrice/src/interface/card_picture_loader/card_picture_loader_request_status_display_widget.cpp +++ b/cockatrice/src/interface/card_picture_loader/card_picture_loader_request_status_display_widget.cpp @@ -1,5 +1,11 @@ #include "card_picture_loader_request_status_display_widget.h" +#include "libcockatrice/card/printing/exact_card.h" +#include "libcockatrice/card/printing/printing_info.h" + +#include +#include + CardPictureLoaderRequestStatusDisplayWidget::CardPictureLoaderRequestStatusDisplayWidget(QWidget *parent, const QUrl &_url, const ExactCard &card, diff --git a/cockatrice/src/interface/card_picture_loader/card_picture_loader_request_status_display_widget.h b/cockatrice/src/interface/card_picture_loader/card_picture_loader_request_status_display_widget.h index c9a272b68..58051cc1e 100644 --- a/cockatrice/src/interface/card_picture_loader/card_picture_loader_request_status_display_widget.h +++ b/cockatrice/src/interface/card_picture_loader/card_picture_loader_request_status_display_widget.h @@ -1,11 +1,16 @@ #ifndef PICTURE_LOADER_REQUEST_STATUS_DISPLAY_WIDGET_H #define PICTURE_LOADER_REQUEST_STATUS_DISPLAY_WIDGET_H -#include +#include #include -#include +#include +#include #include -#include +#include + +class ExactCard; +class QHBoxLayout; +class QUrl; /** * @class CardPictureLoaderRequestStatusDisplayWidget diff --git a/cockatrice/src/interface/card_picture_loader/card_picture_loader_status_bar.cpp b/cockatrice/src/interface/card_picture_loader/card_picture_loader_status_bar.cpp index 9e7e645bd..3b26c8033 100644 --- a/cockatrice/src/interface/card_picture_loader/card_picture_loader_status_bar.cpp +++ b/cockatrice/src/interface/card_picture_loader/card_picture_loader_status_bar.cpp @@ -1,7 +1,19 @@ #include "card_picture_loader_status_bar.h" +#include "../widgets/quick_settings/settings_button_widget.h" +#include "../widgets/quick_settings/settings_popup_widget.h" #include "card_picture_loader_request_status_display_widget.h" +#include +#include +#include +#include +#include +#include +#include + +class ExactCard; + CardPictureLoaderStatusBar::CardPictureLoaderStatusBar(QWidget *parent) : QWidget(parent) { layout = new QHBoxLayout(this); diff --git a/cockatrice/src/interface/card_picture_loader/card_picture_loader_status_bar.h b/cockatrice/src/interface/card_picture_loader/card_picture_loader_status_bar.h index 7f1f509db..2ba386c42 100644 --- a/cockatrice/src/interface/card_picture_loader/card_picture_loader_status_bar.h +++ b/cockatrice/src/interface/card_picture_loader/card_picture_loader_status_bar.h @@ -1,12 +1,16 @@ #ifndef PICTURE_LOADER_STATUS_BAR_H #define PICTURE_LOADER_STATUS_BAR_H -#include "../../interface/widgets/quick_settings/settings_button_widget.h" -#include "card_picture_loader_worker_work.h" - -#include -#include +#include #include +#include + +class ExactCard; +class QHBoxLayout; +class QProgressBar; +class QTimer; +class QUrl; +class SettingsButtonWidget; /** * @class CardPictureLoaderStatusBar diff --git a/cockatrice/src/interface/card_picture_loader/card_picture_loader_worker.cpp b/cockatrice/src/interface/card_picture_loader/card_picture_loader_worker.cpp index 0fd6a42d5..150b4c544 100644 --- a/cockatrice/src/interface/card_picture_loader/card_picture_loader_worker.cpp +++ b/cockatrice/src/interface/card_picture_loader/card_picture_loader_worker.cpp @@ -4,15 +4,34 @@ #include "card_picture_loader_cache_method.h" #include "card_picture_loader_local.h" #include "card_picture_loader_worker_work.h" +#include "card_picture_to_load.h" +#include "libcockatrice/card/printing/exact_card.h" +#include "libcockatrice/utility/server_rate_limiter.h" -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include +#include +#include +#include #include +#include +#include +#include #include #include #include +#include #include #include diff --git a/cockatrice/src/interface/card_picture_loader/card_picture_loader_worker.h b/cockatrice/src/interface/card_picture_loader/card_picture_loader_worker.h index 8b136f309..4b42c6e59 100644 --- a/cockatrice/src/interface/card_picture_loader/card_picture_loader_worker.h +++ b/cockatrice/src/interface/card_picture_loader/card_picture_loader_worker.h @@ -1,21 +1,25 @@ #ifndef PICTURE_LOADER_WORKER_H #define PICTURE_LOADER_WORKER_H -#include "card_picture_loader_local.h" -#include "card_picture_loader_worker_work.h" -#include "card_picture_to_load.h" - -#include #include #include -#include -#include -#include #include +#include #include +#include +#include #include -#include -#include +#include +#include + +class CardPictureLoaderLocal; +class ExactCard; +class QDateTime; +class QImage; +class QNetworkAccessManager; +class QNetworkDiskCache; +class QNetworkReply; +class QThread; #define REDIRECT_HEADER_NAME "redirects" #define REDIRECT_ORIGINAL_URL "original" diff --git a/cockatrice/src/interface/card_picture_loader/card_picture_loader_worker_work.cpp b/cockatrice/src/interface/card_picture_loader/card_picture_loader_worker_work.cpp index 19c6be469..92524384a 100644 --- a/cockatrice/src/interface/card_picture_loader/card_picture_loader_worker_work.cpp +++ b/cockatrice/src/interface/card_picture_loader/card_picture_loader_worker_work.cpp @@ -2,19 +2,35 @@ #include "../../client/settings/cache_settings.h" #include "card_picture_loader_worker.h" +#include "card_picture_to_load.h" +#include "libcockatrice/card/card_info.h" +#include "libcockatrice/card/printing/exact_card.h" +#include "libcockatrice/utility/server_rate_limiter.h" #include -#include +#include +#include +#include +#include +#include +#include #include +#include #include #include +#include #include -#include -#include +#include +#include #include +#include +#include ServerRateLimiter CardPictureLoaderWorkerWork::s_rateLimiter; +#include #include +#include +#include // Card back returned by gatherer when card is not found static const QStringList MD5_BLACKLIST = { diff --git a/cockatrice/src/interface/card_picture_loader/card_picture_loader_worker_work.h b/cockatrice/src/interface/card_picture_loader/card_picture_loader_worker_work.h index 84a7dafdb..c3dbcc6e8 100644 --- a/cockatrice/src/interface/card_picture_loader/card_picture_loader_worker_work.h +++ b/cockatrice/src/interface/card_picture_loader/card_picture_loader_worker_work.h @@ -1,19 +1,18 @@ #ifndef PICTURE_LOADER_WORKER_WORK_H #define PICTURE_LOADER_WORKER_WORK_H -#include "card_picture_loader_worker.h" #include "card_picture_to_load.h" -#include +#include #include -#include -#include #include -#include #include -#include -#include -#include +#include + +class ExactCard; +class QNetworkReply; +class QUrl; +class ServerRateLimiter; inline Q_LOGGING_CATEGORY(CardPictureLoaderWorkerWorkLog, "card_picture_loader.worker"); diff --git a/cockatrice/src/interface/card_picture_loader/card_picture_to_load.cpp b/cockatrice/src/interface/card_picture_loader/card_picture_to_load.cpp index 4f933207e..e35c417c8 100644 --- a/cockatrice/src/interface/card_picture_loader/card_picture_to_load.cpp +++ b/cockatrice/src/interface/card_picture_loader/card_picture_to_load.cpp @@ -1,12 +1,22 @@ #include "card_picture_to_load.h" #include "../../client/settings/cache_settings.h" +#include "libcockatrice/card/printing/exact_card.h" +#include "libcockatrice/card/printing/printing_info.h" +#include "libcockatrice/card/set/card_set.h" -#include #include +#include +#include +#include #include +#include +#include +#include #include +#include #include +#include #include #include #include diff --git a/cockatrice/src/interface/card_picture_loader/card_picture_to_load.h b/cockatrice/src/interface/card_picture_loader/card_picture_to_load.h index 9e0e7449c..fe56dc4c6 100644 --- a/cockatrice/src/interface/card_picture_loader/card_picture_to_load.h +++ b/cockatrice/src/interface/card_picture_loader/card_picture_to_load.h @@ -1,6 +1,12 @@ #ifndef PICTURE_TO_LOAD_H #define PICTURE_TO_LOAD_H +#include "libcockatrice/card/card_info.h" + +#include +#include +#include +#include #include inline Q_LOGGING_CATEGORY(CardPictureToLoadLog, "card_picture_loader.picture_to_load"); diff --git a/cockatrice/src/interface/deck_loader/card_node_function.cpp b/cockatrice/src/interface/deck_loader/card_node_function.cpp index 9441fe428..0934b34da 100644 --- a/cockatrice/src/interface/deck_loader/card_node_function.cpp +++ b/cockatrice/src/interface/deck_loader/card_node_function.cpp @@ -1,5 +1,12 @@ #include "card_node_function.h" +#include "libcockatrice/card/database/card_database_querier.h" +#include "libcockatrice/card/printing/printing_info.h" +#include "libcockatrice/card/set/card_set.h" + +#include +#include +#include #include #include #include diff --git a/cockatrice/src/interface/deck_loader/deck_file_format.cpp b/cockatrice/src/interface/deck_loader/deck_file_format.cpp index 3c88cde4e..ba5a44e4c 100644 --- a/cockatrice/src/interface/deck_loader/deck_file_format.cpp +++ b/cockatrice/src/interface/deck_loader/deck_file_format.cpp @@ -1,5 +1,7 @@ #include "deck_file_format.h" +#include + DeckFileFormat::Format DeckFileFormat::getFormatFromName(const QString &fileName) { if (fileName.endsWith(".cod", Qt::CaseInsensitive)) { diff --git a/cockatrice/src/interface/deck_loader/deck_loader.cpp b/cockatrice/src/interface/deck_loader/deck_loader.cpp index f29b4eed2..d413a6c04 100644 --- a/cockatrice/src/interface/deck_loader/deck_loader.cpp +++ b/cockatrice/src/interface/deck_loader/deck_loader.cpp @@ -1,26 +1,51 @@ #include "deck_loader.h" +#include "libcockatrice/card/card_info.h" +#include "libcockatrice/card/database/card_database_querier.h" +#include "libcockatrice/deck_list/tree/abstract_deck_list_card_node.h" +#include "libcockatrice/deck_list/tree/abstract_deck_list_node.h" +#include "libcockatrice/deck_list/tree/inner_deck_list_node.h" + #include #include +#include #include #include #include +#include #include -#include +#include +#include +#include +#include +#include +#include +#include #include #include #include +#include +#include #include +#include +#include #include #include +#include #include #include +#include +#include +#include #include -#include +#include #include #include #include #include +#include + +class QTextLength; const QStringList DeckLoader::ACCEPTED_FILE_EXTENSIONS = {"*.cod", "*.dec", "*.dek", "*.txt", "*.mwDeck"}; diff --git a/cockatrice/src/interface/deck_loader/deck_loader.h b/cockatrice/src/interface/deck_loader/deck_loader.h index be0df311d..16402b14b 100644 --- a/cockatrice/src/interface/deck_loader/deck_loader.h +++ b/cockatrice/src/interface/deck_loader/deck_loader.h @@ -7,13 +7,23 @@ #ifndef DECK_LOADER_H #define DECK_LOADER_H +#include "deck_file_format.h" #include "loaded_deck.h" #include -#include -#include -#include +#include +#include +#include #include +#include + +class DeckList; +class DecklistCardNode; +class InnerDecklistNode; +class QPrinter; +class QTextCursor; +class QTextStream; +template class QList; inline Q_LOGGING_CATEGORY(DeckLoaderLog, "deck_loader"); diff --git a/cockatrice/src/interface/intents/intent.h b/cockatrice/src/interface/intents/intent.h index 5d9fdd3d6..ad8d4b5af 100644 --- a/cockatrice/src/interface/intents/intent.h +++ b/cockatrice/src/interface/intents/intent.h @@ -2,6 +2,8 @@ #define COCKATRICE_INTENT_H #include +#include +#include class Intent : public QObject { diff --git a/cockatrice/src/interface/intents/intent_connect_to_server.cpp b/cockatrice/src/interface/intents/intent_connect_to_server.cpp index 1cccc5a23..42ddc97cc 100644 --- a/cockatrice/src/interface/intents/intent_connect_to_server.cpp +++ b/cockatrice/src/interface/intents/intent_connect_to_server.cpp @@ -1,8 +1,14 @@ #include "intent_connect_to_server.h" +#include "contexts/context_connect_to_server.h" #include "intent_disconnect_from_server.h" +#include "libcockatrice/protocol/pb/response.pb.h" +#include "remote_client.h" #include +#include + +template class QList; IntentConnectToServer::IntentConnectToServer(RemoteClient *_remoteClient, ContextConnectToServer *_context) : Intent(), remoteClient(_remoteClient), context(_context) diff --git a/cockatrice/src/interface/intents/intent_connect_to_server.h b/cockatrice/src/interface/intents/intent_connect_to_server.h index eab4d1a21..50d7f088b 100644 --- a/cockatrice/src/interface/intents/intent_connect_to_server.h +++ b/cockatrice/src/interface/intents/intent_connect_to_server.h @@ -1,9 +1,14 @@ #ifndef COCKATRICE_INTENT_CONNECT_TO_SERVER_H #define COCKATRICE_INTENT_CONNECT_TO_SERVER_H -#include "contexts/context_connect_to_server.h" +#include "abstract_client.h" #include "intent.h" -#include "remote_client.h" + +#include +#include + +class RemoteClient; +struct ContextConnectToServer; class IntentConnectToServer : public Intent { diff --git a/cockatrice/src/interface/intents/intent_disconnect_from_server.cpp b/cockatrice/src/interface/intents/intent_disconnect_from_server.cpp index cb39d7bab..e865c4a2b 100644 --- a/cockatrice/src/interface/intents/intent_disconnect_from_server.cpp +++ b/cockatrice/src/interface/intents/intent_disconnect_from_server.cpp @@ -1,5 +1,7 @@ #include "intent_disconnect_from_server.h" +#include "remote_client.h" + IntentDisconnectFromServer::IntentDisconnectFromServer(RemoteClient *_remoteClient) : Intent(), remoteClient(_remoteClient) { diff --git a/cockatrice/src/interface/intents/intent_disconnect_from_server.h b/cockatrice/src/interface/intents/intent_disconnect_from_server.h index 6e1dfd0c1..5425e973b 100644 --- a/cockatrice/src/interface/intents/intent_disconnect_from_server.h +++ b/cockatrice/src/interface/intents/intent_disconnect_from_server.h @@ -1,8 +1,12 @@ #ifndef COCKATRICE_INTENT_DISCONNECT_FROM_SERVER_H #define COCKATRICE_INTENT_DISCONNECT_FROM_SERVER_H +#include "abstract_client.h" #include "intent.h" -#include "remote_client.h" + +#include + +class RemoteClient; class IntentDisconnectFromServer : public Intent { diff --git a/cockatrice/src/interface/intents/intent_join_server_game.cpp b/cockatrice/src/interface/intents/intent_join_server_game.cpp index b22b200ed..52e02b276 100644 --- a/cockatrice/src/interface/intents/intent_join_server_game.cpp +++ b/cockatrice/src/interface/intents/intent_join_server_game.cpp @@ -3,9 +3,17 @@ #include "../widgets/server/game_selector.h" #include "../widgets/tabs/tab_room.h" #include "../widgets/tabs/tab_supervisor.h" +#include "abstract_client.h" +#include "contexts/context_connect_to_server.h" +#include "contexts/context_join_room.h" #include "intent_join_server_room.h" +#include "remote_client.h" +#include +#include +#include #include +#include IntentJoinServerGame::IntentJoinServerGame(TabSupervisor *_tabSupervisor, RemoteClient *_remoteClient, diff --git a/cockatrice/src/interface/intents/intent_join_server_game.h b/cockatrice/src/interface/intents/intent_join_server_game.h index 5e196df38..5abb31fc5 100644 --- a/cockatrice/src/interface/intents/intent_join_server_game.h +++ b/cockatrice/src/interface/intents/intent_join_server_game.h @@ -3,13 +3,14 @@ #include "contexts/context_join_game.h" #include "intent.h" -#include "remote_client.h" #include #include +#include class TabRoom; class TabSupervisor; +class RemoteClient; class IntentJoinServerGame : public Intent { diff --git a/cockatrice/src/interface/intents/intent_join_server_room.cpp b/cockatrice/src/interface/intents/intent_join_server_room.cpp index d25bc8d17..24349cadf 100644 --- a/cockatrice/src/interface/intents/intent_join_server_room.cpp +++ b/cockatrice/src/interface/intents/intent_join_server_room.cpp @@ -3,8 +3,15 @@ #include "../widgets/tabs/tab_room.h" #include "../widgets/tabs/tab_server.h" #include "../widgets/tabs/tab_supervisor.h" +#include "abstract_client.h" +#include "contexts/context_connect_to_server.h" +#include "contexts/context_join_room.h" #include "intent_connect_to_server.h" +#include "remote_client.h" +#include +#include +#include #include #include diff --git a/cockatrice/src/interface/intents/intent_join_server_room.h b/cockatrice/src/interface/intents/intent_join_server_room.h index 4a5599896..b4febae7b 100644 --- a/cockatrice/src/interface/intents/intent_join_server_room.h +++ b/cockatrice/src/interface/intents/intent_join_server_room.h @@ -1,11 +1,13 @@ #ifndef COCKATRICE_INTENT_JOIN_SERVER_ROOM_H #define COCKATRICE_INTENT_JOIN_SERVER_ROOM_H -#include "contexts/context_join_room.h" #include "intent.h" -#include "remote_client.h" + +#include class TabSupervisor; +class RemoteClient; +struct ContextJoinRoom; class IntentJoinServerRoom : public Intent { diff --git a/cockatrice/src/interface/intents/intent_login.cpp b/cockatrice/src/interface/intents/intent_login.cpp index 7beb63e1d..0d8390015 100644 --- a/cockatrice/src/interface/intents/intent_login.cpp +++ b/cockatrice/src/interface/intents/intent_login.cpp @@ -2,9 +2,13 @@ #include "../../client/settings/cache_settings.h" #include "../widgets/dialogs/dlg_login_prompt.h" +#include "contexts/context_connect_to_server.h" #include "libcockatrice/settings/servers_settings.h" #include +#include +#include +#include IntentGetLoginCredentials::IntentGetLoginCredentials(ContextConnectToServer *_context, bool _promptForMissingCredentials) diff --git a/cockatrice/src/interface/intents/intent_login.h b/cockatrice/src/interface/intents/intent_login.h index 8ffd91a0a..a805f1d75 100644 --- a/cockatrice/src/interface/intents/intent_login.h +++ b/cockatrice/src/interface/intents/intent_login.h @@ -1,9 +1,12 @@ #ifndef COCKATRICE_INTENT_LOGIN_H #define COCKATRICE_INTENT_LOGIN_H -#include "contexts/context_connect_to_server.h" #include "intent.h" +#include + +struct ContextConnectToServer; + class IntentGetLoginCredentials : public Intent { Q_OBJECT diff --git a/cockatrice/src/interface/intents/intent_open_local_deck.cpp b/cockatrice/src/interface/intents/intent_open_local_deck.cpp index 2457bec72..5b673d106 100644 --- a/cockatrice/src/interface/intents/intent_open_local_deck.cpp +++ b/cockatrice/src/interface/intents/intent_open_local_deck.cpp @@ -2,10 +2,14 @@ #include "../deck_loader/deck_file_format.h" #include "../deck_loader/deck_loader.h" +#include "../deck_loader/loaded_deck.h" #include "../widgets/tabs/tab_supervisor.h" #include "intent_wait_for_database_load.h" +#include "libcockatrice/card/database/card_database.h" +#include "libcockatrice/card/database/card_database_loader.h" #include +#include IntentOpenLocalDeck::IntentOpenLocalDeck(TabSupervisor *_tabSupervisor, const QString &_file) : Intent(), tabSupervisor(_tabSupervisor), file(_file) diff --git a/cockatrice/src/interface/intents/intent_open_local_deck.h b/cockatrice/src/interface/intents/intent_open_local_deck.h index 97f875e39..0338e9384 100644 --- a/cockatrice/src/interface/intents/intent_open_local_deck.h +++ b/cockatrice/src/interface/intents/intent_open_local_deck.h @@ -4,6 +4,7 @@ #include "intent.h" #include +#include class TabSupervisor; diff --git a/cockatrice/src/interface/intents/intent_open_server_room_by_name.cpp b/cockatrice/src/interface/intents/intent_open_server_room_by_name.cpp index d50f509a0..63aef004b 100644 --- a/cockatrice/src/interface/intents/intent_open_server_room_by_name.cpp +++ b/cockatrice/src/interface/intents/intent_open_server_room_by_name.cpp @@ -2,13 +2,22 @@ #include "../widgets/tabs/tab_room.h" #include "../widgets/tabs/tab_supervisor.h" +#include "contexts/context_connect_to_server.h" #include "intent_connect_to_server.h" +#include "libcockatrice/protocol/pb/response.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_room.pb.h" +#include "remote_client.h" +#include +#include #include #include #include #include +class CommandContainer; +class QVariant; + IntentOpenServerRoomByName::IntentOpenServerRoomByName(TabSupervisor *_tabSupervisor, RemoteClient *_remoteClient, std::unique_ptr _context, diff --git a/cockatrice/src/interface/intents/intent_open_server_room_by_name.h b/cockatrice/src/interface/intents/intent_open_server_room_by_name.h index 2f9e716af..e163796fc 100644 --- a/cockatrice/src/interface/intents/intent_open_server_room_by_name.h +++ b/cockatrice/src/interface/intents/intent_open_server_room_by_name.h @@ -1,19 +1,21 @@ #ifndef COCKATRICE_INTENT_OPEN_SERVER_ROOM_BY_NAME_H #define COCKATRICE_INTENT_OPEN_SERVER_ROOM_BY_NAME_H +#include "abstract_client.h" #include "contexts/context_join_room.h" #include "intent.h" -#include "remote_client.h" #include #include #include #include +#include -class TabRoom; class TabSupervisor; class Event_ListRooms; class ServerInfo_Room; +class RemoteClient; +class Response; /** * @brief Connects to the configured server and opens a room identified by its name. diff --git a/cockatrice/src/interface/intents/intent_open_shared_deck.cpp b/cockatrice/src/interface/intents/intent_open_shared_deck.cpp index 016de63e6..8abad3d88 100644 --- a/cockatrice/src/interface/intents/intent_open_shared_deck.cpp +++ b/cockatrice/src/interface/intents/intent_open_shared_deck.cpp @@ -3,11 +3,17 @@ #include "../deck_loader/deck_loader.h" #include "../widgets/dialogs/dlg_shared_decks_preview.h" #include "../widgets/tabs/tab_supervisor.h" +#include "abstract_client.h" +#include "contexts/context_connect_to_server.h" #include "intent_connect_to_server.h" +#include "remote_client.h" +#include #include +#include #include -#include +#include +#include #include #include #include @@ -15,6 +21,11 @@ #include #include #include +#include +#include +#include + +class CommandContainer; IntentOpenSharedDeck::IntentOpenSharedDeck(TabSupervisor *_tabSupervisor, RemoteClient *_remoteClient, diff --git a/cockatrice/src/interface/intents/intent_open_shared_deck.h b/cockatrice/src/interface/intents/intent_open_shared_deck.h index 87812bdea..afce2370f 100644 --- a/cockatrice/src/interface/intents/intent_open_shared_deck.h +++ b/cockatrice/src/interface/intents/intent_open_shared_deck.h @@ -1,20 +1,24 @@ #ifndef COCKATRICE_INTENT_OPEN_SHARED_DECK_H #define COCKATRICE_INTENT_OPEN_SHARED_DECK_H +#include "../deck_loader/loaded_deck.h" #include "contexts/context_open_deck.h" #include "intent.h" -#include "remote_client.h" #include #include #include +#include #include +#include class TabSupervisor; -struct LoadedDeck; class CardDatabaseQuerier; class DlgSharedDecksPreview; class QTimer; +class CommandContainer; +class RemoteClient; +class Response; class IntentOpenSharedDeck : public Intent { diff --git a/cockatrice/src/interface/intents/intent_wait_for_database_load.cpp b/cockatrice/src/interface/intents/intent_wait_for_database_load.cpp index c36378818..7a7da90a4 100644 --- a/cockatrice/src/interface/intents/intent_wait_for_database_load.cpp +++ b/cockatrice/src/interface/intents/intent_wait_for_database_load.cpp @@ -1,5 +1,8 @@ #include "intent_wait_for_database_load.h" +#include "libcockatrice/card/database/card_database.h" +#include "libcockatrice/card/database/card_database_loader.h" + #include bool IntentWaitForDatabaseLoad::checkPrecondition() const diff --git a/cockatrice/src/interface/intents/intent_wait_for_database_load.h b/cockatrice/src/interface/intents/intent_wait_for_database_load.h index 72f4a1ffc..715918f04 100644 --- a/cockatrice/src/interface/intents/intent_wait_for_database_load.h +++ b/cockatrice/src/interface/intents/intent_wait_for_database_load.h @@ -3,6 +3,8 @@ #include "intent.h" +#include + class IntentWaitForDatabaseLoad : public Intent { Q_OBJECT diff --git a/cockatrice/src/interface/intents/url_parser.cpp b/cockatrice/src/interface/intents/url_parser.cpp index 707863354..966fd1213 100644 --- a/cockatrice/src/interface/intents/url_parser.cpp +++ b/cockatrice/src/interface/intents/url_parser.cpp @@ -4,22 +4,34 @@ #include "../widgets/tabs/tab_room.h" #include "../widgets/tabs/tab_supervisor.h" #include "../window_main.h" +#include "contexts/context_connect_to_server.h" #include "contexts/context_join_game.h" +#include "contexts/context_join_room.h" #include "contexts/context_open_deck.h" #include "intent.h" #include "intent_join_server_game.h" #include "intent_login.h" #include "intent_open_shared_deck.h" +#include "remote_client.h" #include #include +#include #include +#include +#include +#include #include #include +#include +#include #include #include #include #include +#include +#include +#include inline Q_LOGGING_CATEGORY(UrlParserLog, "url_parser"); diff --git a/cockatrice/src/interface/intents/url_parser.h b/cockatrice/src/interface/intents/url_parser.h index ea29fed53..9b8594275 100644 --- a/cockatrice/src/interface/intents/url_parser.h +++ b/cockatrice/src/interface/intents/url_parser.h @@ -2,8 +2,11 @@ #define COCKATRICE_URL_PARSER_H #include +#include #include +#include #include +#include class Intent; class MainWindow; diff --git a/cockatrice/src/interface/key_signals.cpp b/cockatrice/src/interface/key_signals.cpp index a78997cc2..4c3074139 100644 --- a/cockatrice/src/interface/key_signals.cpp +++ b/cockatrice/src/interface/key_signals.cpp @@ -1,6 +1,9 @@ #include "key_signals.h" +#include +#include #include +#include bool KeySignals::eventFilter(QObject * /*object*/, QEvent *event) { diff --git a/cockatrice/src/interface/key_signals.h b/cockatrice/src/interface/key_signals.h index 30dcee0ba..dbe147ad8 100644 --- a/cockatrice/src/interface/key_signals.h +++ b/cockatrice/src/interface/key_signals.h @@ -8,8 +8,8 @@ #ifndef KEYSIGNALS_H #define KEYSIGNALS_H -#include #include +#include class KeySignals : public QObject { diff --git a/cockatrice/src/interface/layouts/flow_layout.cpp b/cockatrice/src/interface/layouts/flow_layout.cpp index 0d03b7789..ba5e492e3 100644 --- a/cockatrice/src/interface/layouts/flow_layout.cpp +++ b/cockatrice/src/interface/layouts/flow_layout.cpp @@ -15,13 +15,18 @@ #include "flow_layout.h" -#include "../widgets/general/layout_containers/flow_widget.h" - #include #include -#include +#include +#include +#include +#include +#include +#include #include +#include #include +#include FlowLayout::FlowLayout(QWidget *parent, const Qt::Orientation flowDirection, diff --git a/cockatrice/src/interface/layouts/flow_layout.h b/cockatrice/src/interface/layouts/flow_layout.h index 9adcd8bb5..a6e015e3e 100644 --- a/cockatrice/src/interface/layouts/flow_layout.h +++ b/cockatrice/src/interface/layouts/flow_layout.h @@ -12,8 +12,14 @@ #include #include #include +#include #include -#include +#include +#include +#include + +class QLayoutItem; +class QWidget; inline Q_LOGGING_CATEGORY(FlowLayoutLog, "flow_layout", QtInfoMsg); diff --git a/cockatrice/src/interface/layouts/overlap_layout.cpp b/cockatrice/src/interface/layouts/overlap_layout.cpp index a4c13518a..2b4da9138 100644 --- a/cockatrice/src/interface/layouts/overlap_layout.cpp +++ b/cockatrice/src/interface/layouts/overlap_layout.cpp @@ -1,7 +1,15 @@ #include "overlap_layout.h" #include +#include +#include +#include +#include +#include +#include +#include #include +#include /** * @class OverlapLayout diff --git a/cockatrice/src/interface/layouts/overlap_layout.h b/cockatrice/src/interface/layouts/overlap_layout.h index c1b6a8e51..32c74c18a 100644 --- a/cockatrice/src/interface/layouts/overlap_layout.h +++ b/cockatrice/src/interface/layouts/overlap_layout.h @@ -10,7 +10,11 @@ #include #include #include -#include +#include +#include + +class QLayoutItem; +class QWidget; inline Q_LOGGING_CATEGORY(OverlapLayoutLog, "overlap_layout"); diff --git a/cockatrice/src/interface/logger.cpp b/cockatrice/src/interface/logger.cpp index 3e00a0b24..87fdcbd8c 100644 --- a/cockatrice/src/interface/logger.cpp +++ b/cockatrice/src/interface/logger.cpp @@ -5,9 +5,16 @@ #include #include #include +#include +#include #include +#include +#include +#include #include #include +#include +#include #define LOGGER_MAX_ENTRIES 128 #define LOGGER_FILENAME "qdebug.txt" diff --git a/cockatrice/src/interface/logger.h b/cockatrice/src/interface/logger.h index fc6dd70be..2287da804 100644 --- a/cockatrice/src/interface/logger.h +++ b/cockatrice/src/interface/logger.h @@ -8,10 +8,15 @@ #define LOGGER_H #include +#include #include +#include #include #include -#include +#include +#include +#include +#include #if defined(Q_PROCESSOR_X86_32) #define BUILD_ARCHITECTURE "32-bit" diff --git a/cockatrice/src/interface/palette_editor/color_button.cpp b/cockatrice/src/interface/palette_editor/color_button.cpp index e1a490d20..a7db23d31 100644 --- a/cockatrice/src/interface/palette_editor/color_button.cpp +++ b/cockatrice/src/interface/palette_editor/color_button.cpp @@ -1,7 +1,19 @@ #include "color_button.h" +#include #include +#include +#include #include +#include +#include +#include +#include +#include +#include +#include + +class QWidget; ColorButton::ColorButton(QWidget *parent) : QToolButton(parent) { diff --git a/cockatrice/src/interface/palette_editor/color_button.h b/cockatrice/src/interface/palette_editor/color_button.h index 4b139ef68..f9991ec6b 100644 --- a/cockatrice/src/interface/palette_editor/color_button.h +++ b/cockatrice/src/interface/palette_editor/color_button.h @@ -3,6 +3,9 @@ #include #include +#include + +class QWidget; class ColorButton : public QToolButton { diff --git a/cockatrice/src/interface/palette_editor/palette_editor_dialog.cpp b/cockatrice/src/interface/palette_editor/palette_editor_dialog.cpp index d5a168708..20e16614a 100644 --- a/cockatrice/src/interface/palette_editor/palette_editor_dialog.cpp +++ b/cockatrice/src/interface/palette_editor/palette_editor_dialog.cpp @@ -1,5 +1,6 @@ #include "palette_editor_dialog.h" +#include "../theme_config.h" #include "../theme_manager.h" #include "palette_generator.h" #include "palette_grid_widget.h" @@ -9,12 +10,22 @@ #include #include #include +#include #include #include +#include #include +#include #include +#include #include +#include +#include #include +#include +#include +#include +#include PaletteEditorDialog::PaletteEditorDialog(const QString &_themeDirPath, const QString &_themeName, QWidget *parent) : QDialog(parent), themeDirPath(_themeDirPath), themeName(_themeName) diff --git a/cockatrice/src/interface/palette_editor/palette_editor_dialog.h b/cockatrice/src/interface/palette_editor/palette_editor_dialog.h index 953902c06..e29a70cb0 100644 --- a/cockatrice/src/interface/palette_editor/palette_editor_dialog.h +++ b/cockatrice/src/interface/palette_editor/palette_editor_dialog.h @@ -3,18 +3,21 @@ #include "../theme_config.h" +#include #include -#include #include +#include +#include class QTimer; - class QLabel; class QComboBox; class QDialogButtonBox; class QPushButton; class PaletteGridWidget; class QuickSetupPanel; +class QFrame; +class QWidget; class PaletteEditorDialog : public QDialog { diff --git a/cockatrice/src/interface/palette_editor/palette_generator.cpp b/cockatrice/src/interface/palette_editor/palette_generator.cpp index 822e57250..c98dcbe03 100644 --- a/cockatrice/src/interface/palette_editor/palette_generator.cpp +++ b/cockatrice/src/interface/palette_editor/palette_generator.cpp @@ -1,6 +1,13 @@ #include "palette_generator.h" +#include "../theme_config.h" + #include +#include +#include +#include +#include +#include // ════════════════════════════════════════════════════════════════════════════ // PaletteGenerator::fromAccent diff --git a/cockatrice/src/interface/palette_editor/palette_grid_widget.cpp b/cockatrice/src/interface/palette_editor/palette_grid_widget.cpp index 97d28b731..de069bc80 100644 --- a/cockatrice/src/interface/palette_editor/palette_grid_widget.cpp +++ b/cockatrice/src/interface/palette_editor/palette_grid_widget.cpp @@ -1,14 +1,25 @@ #include "palette_grid_widget.h" +#include "../theme_config.h" #include "../theme_manager.h" +#include "color_button.h" #include +#include +#include +#include +#include #include #include #include #include +#include +#include #include #include +#include +#include +#include static QList allRoles() { diff --git a/cockatrice/src/interface/palette_editor/palette_grid_widget.h b/cockatrice/src/interface/palette_editor/palette_grid_widget.h index 77cbf1c62..f1ff41ec2 100644 --- a/cockatrice/src/interface/palette_editor/palette_grid_widget.h +++ b/cockatrice/src/interface/palette_editor/palette_grid_widget.h @@ -2,15 +2,19 @@ #define COCKATRICE_PALETTE_GRID_WIDGET_H #include "../theme_config.h" -#include "color_button.h" +#include #include #include -#include +#include #include +#include class QLabel; class QScrollArea; +class ColorButton; +class QVBoxLayout; + // Scrollable grid of ColorButtons — one per (ColorGroup × ColorRole) cell. // Owns the load/read round-trip for PaletteConfig but has no file I/O itself. class PaletteGridWidget : public QWidget diff --git a/cockatrice/src/interface/palette_editor/quick_setup_panel.cpp b/cockatrice/src/interface/palette_editor/quick_setup_panel.cpp index 85098bde5..04f98dcc3 100644 --- a/cockatrice/src/interface/palette_editor/quick_setup_panel.cpp +++ b/cockatrice/src/interface/palette_editor/quick_setup_panel.cpp @@ -1,9 +1,15 @@ #include "quick_setup_panel.h" +#include "color_button.h" + #include +#include #include #include +#include #include +#include +#include QuickSetupPanel::QuickSetupPanel(QWidget *parent) : QWidget(parent) { diff --git a/cockatrice/src/interface/palette_editor/quick_setup_panel.h b/cockatrice/src/interface/palette_editor/quick_setup_panel.h index c83e27cf2..ea402086f 100644 --- a/cockatrice/src/interface/palette_editor/quick_setup_panel.h +++ b/cockatrice/src/interface/palette_editor/quick_setup_panel.h @@ -1,13 +1,14 @@ #ifndef COCKATRICE_QUICK_SETUP_PANEL_H #define COCKATRICE_QUICK_SETUP_PANEL_H -#include "color_button.h" - +#include #include +#include class QHBoxLayout; class QLabel; class QSlider; +class ColorButton; /** * @class QuickSetupPanel diff --git a/cockatrice/src/interface/pixel_map_generator.cpp b/cockatrice/src/interface/pixel_map_generator.cpp index b70dc576f..2f5c4b6dd 100644 --- a/cockatrice/src/interface/pixel_map_generator.cpp +++ b/cockatrice/src/interface/pixel_map_generator.cpp @@ -1,15 +1,37 @@ #include "pixel_map_generator.h" +#include "libcockatrice/network/server/remote/user_level.h" #include "theme_manager.h" #include +#include +#include +#include +#include +#include #include +#include +#include +#include #include +#include +#include #include +#include +#include +#include #include #include +#include +#include +#include +#include +#include #include +#include +#include #include +#include #define DEFAULT_COLOR_UNREGISTERED "#32c8ec"; #define DEFAULT_COLOR_REGISTERED "#5ed900"; diff --git a/cockatrice/src/interface/pixel_map_generator.h b/cockatrice/src/interface/pixel_map_generator.h index b6e822fd9..7c01bb332 100644 --- a/cockatrice/src/interface/pixel_map_generator.h +++ b/cockatrice/src/interface/pixel_map_generator.h @@ -7,14 +7,20 @@ #ifndef PIXMAPGENERATOR_H #define PIXMAPGENERATOR_H +#include "libcockatrice/protocol/pb/serverinfo_user.pb.h" + #include #include #include #include #include +#include +#include #include #include +class QSize; + inline Q_LOGGING_CATEGORY(PixelMapGeneratorLog, "pixel_map_generator"); class PhasePixmapGenerator diff --git a/cockatrice/src/interface/theme_config.cpp b/cockatrice/src/interface/theme_config.cpp index 8293a82cf..652e322c8 100644 --- a/cockatrice/src/interface/theme_config.cpp +++ b/cockatrice/src/interface/theme_config.cpp @@ -1,9 +1,17 @@ #include "theme_config.h" +#include +#include #include #include +#include +#include +#include #include +#include #include +#include +#include bool ThemeConfig::isEmpty() const { diff --git a/cockatrice/src/interface/theme_config.h b/cockatrice/src/interface/theme_config.h index 567aeccda..8b91613f5 100644 --- a/cockatrice/src/interface/theme_config.h +++ b/cockatrice/src/interface/theme_config.h @@ -3,9 +3,10 @@ #include #include -#include #include +#include #include +#include // Application-specific color roles, layered on top of the fixed QPalette role // set. Stored in the same palette-.toml under an [AppColors] section diff --git a/cockatrice/src/interface/theme_manager.cpp b/cockatrice/src/interface/theme_manager.cpp index 08374c8fd..cbf869639 100644 --- a/cockatrice/src/interface/theme_manager.cpp +++ b/cockatrice/src/interface/theme_manager.cpp @@ -2,25 +2,40 @@ #include "../../client/settings/cache_settings.h" #include "pixel_map_generator.h" +#include "theme_config.h" #include +#include #include #include +#include #include #include -#include +#include +#include +#include +#include +#include #include +#include #include #include +#include #include -#include +#include #include +#include +#include #include #include #include +#include #include #include +#include #include +#include +#include #define SYSTEM_THEME_NAME "System" #define LEGACY_SYSTEM_THEME_NAME "Default" diff --git a/cockatrice/src/interface/theme_manager.h b/cockatrice/src/interface/theme_manager.h index 4c9d070dc..c1ab65685 100644 --- a/cockatrice/src/interface/theme_manager.h +++ b/cockatrice/src/interface/theme_manager.h @@ -10,21 +10,21 @@ #include "theme_config.h" #include -#include +#include #include #include #include -#include +#include #include +#include #include +#include inline Q_LOGGING_CATEGORY(ThemeManagerLog, "theme_manager"); typedef QMap QStringMap; typedef QMap QBrushMap; -class QApplication; - class ThemeManager : public QObject { Q_OBJECT diff --git a/cockatrice/src/interface/widgets/cards/additional_info/color_identity_widget.cpp b/cockatrice/src/interface/widgets/cards/additional_info/color_identity_widget.cpp index 2199faf30..ef7fb0e0e 100644 --- a/cockatrice/src/interface/widgets/cards/additional_info/color_identity_widget.cpp +++ b/cockatrice/src/interface/widgets/cards/additional_info/color_identity_widget.cpp @@ -1,15 +1,24 @@ #include "color_identity_widget.h" #include "../../../../client/settings/cache_settings.h" +#include "libcockatrice/card/card_info.h" #include "mana_symbol_widget.h" +#include #include -#include +#include +#include +#include #include +#include +#include #include +#include #include +#include #include #include +#include ColorIdentityWidget::ColorIdentityWidget(QWidget *parent, const QString &_colorIdentity) : QWidget(parent), colorIdentity(_colorIdentity) diff --git a/cockatrice/src/interface/widgets/cards/additional_info/color_identity_widget.h b/cockatrice/src/interface/widgets/cards/additional_info/color_identity_widget.h index 315ac07d6..3caf1a964 100644 --- a/cockatrice/src/interface/widgets/cards/additional_info/color_identity_widget.h +++ b/cockatrice/src/interface/widgets/cards/additional_info/color_identity_widget.h @@ -7,9 +7,13 @@ #ifndef COLOR_IDENTITY_WIDGET_H #define COLOR_IDENTITY_WIDGET_H -#include +#include +#include #include #include +#include + +class QHBoxLayout; class ColorIdentityWidget : public QWidget { diff --git a/cockatrice/src/interface/widgets/cards/additional_info/deck_color_identity.cpp b/cockatrice/src/interface/widgets/cards/additional_info/deck_color_identity.cpp index 62b01511e..13c185a79 100644 --- a/cockatrice/src/interface/widgets/cards/additional_info/deck_color_identity.cpp +++ b/cockatrice/src/interface/widgets/cards/additional_info/deck_color_identity.cpp @@ -1,6 +1,11 @@ #include "deck_color_identity.h" +#include "libcockatrice/card/card_info.h" + +#include +#include #include +#include #include #include #include diff --git a/cockatrice/src/interface/widgets/cards/additional_info/mana_cost_widget.cpp b/cockatrice/src/interface/widgets/cards/additional_info/mana_cost_widget.cpp index fcbb69c2e..7da97f88c 100644 --- a/cockatrice/src/interface/widgets/cards/additional_info/mana_cost_widget.cpp +++ b/cockatrice/src/interface/widgets/cards/additional_info/mana_cost_widget.cpp @@ -1,12 +1,16 @@ #include "mana_cost_widget.h" +#include "libcockatrice/card/card_info.h" #include "mana_symbol_widget.h" #include -#include +#include +#include +#include +#include #include #include -#include +#include ManaCostWidget::ManaCostWidget(QWidget *parent, CardInfoPtr _card) : QWidget(parent), card(_card) { diff --git a/cockatrice/src/interface/widgets/cards/additional_info/mana_cost_widget.h b/cockatrice/src/interface/widgets/cards/additional_info/mana_cost_widget.h index 8bd2e9bc0..a181f1148 100644 --- a/cockatrice/src/interface/widgets/cards/additional_info/mana_cost_widget.h +++ b/cockatrice/src/interface/widgets/cards/additional_info/mana_cost_widget.h @@ -7,9 +7,13 @@ #ifndef MANA_COST_WIDGET_H #define MANA_COST_WIDGET_H -#include +#include +#include #include #include +#include + +class QHBoxLayout; class ManaCostWidget : public QWidget { diff --git a/cockatrice/src/interface/widgets/cards/additional_info/mana_symbol_widget.cpp b/cockatrice/src/interface/widgets/cards/additional_info/mana_symbol_widget.cpp index 18011909f..80dc11852 100644 --- a/cockatrice/src/interface/widgets/cards/additional_info/mana_symbol_widget.cpp +++ b/cockatrice/src/interface/widgets/cards/additional_info/mana_symbol_widget.cpp @@ -3,8 +3,16 @@ #include "../../../../client/settings/cache_settings.h" #include "../../../pixel_map_generator.h" +#include +#include #include +#include +#include +#include #include +#include + +class QWidget; ManaSymbolWidget::ManaSymbolWidget(QWidget *parent, QString _symbol, bool _isActive, bool _mayBeToggled) : QLabel(parent), symbol(std::move(_symbol)), isActive(_isActive), mayBeToggled(_mayBeToggled) diff --git a/cockatrice/src/interface/widgets/cards/additional_info/mana_symbol_widget.h b/cockatrice/src/interface/widgets/cards/additional_info/mana_symbol_widget.h index 705873dff..8dad15785 100644 --- a/cockatrice/src/interface/widgets/cards/additional_info/mana_symbol_widget.h +++ b/cockatrice/src/interface/widgets/cards/additional_info/mana_symbol_widget.h @@ -7,8 +7,13 @@ #ifndef MANA_SYMBOL_WIDGET_H #define MANA_SYMBOL_WIDGET_H -#include +#include #include +#include +#include + +class QGraphicsOpacityEffect; +class QWidget; class ManaSymbolWidget : public QLabel { diff --git a/cockatrice/src/interface/widgets/cards/art_crop_attribution.cpp b/cockatrice/src/interface/widgets/cards/art_crop_attribution.cpp index 8ab18ddd9..c4b347047 100644 --- a/cockatrice/src/interface/widgets/cards/art_crop_attribution.cpp +++ b/cockatrice/src/interface/widgets/cards/art_crop_attribution.cpp @@ -1,8 +1,17 @@ #include "art_crop_attribution.h" +#include "libcockatrice/card/printing/printing_info.h" + +#include +#include #include #include #include +#include +#include +#include +#include +#include #include QString buildArtAttribution(const ExactCard &card) diff --git a/cockatrice/src/interface/widgets/cards/art_crop_attribution.h b/cockatrice/src/interface/widgets/cards/art_crop_attribution.h index 0b3fb3d56..b4acbef26 100644 --- a/cockatrice/src/interface/widgets/cards/art_crop_attribution.h +++ b/cockatrice/src/interface/widgets/cards/art_crop_attribution.h @@ -1,7 +1,8 @@ #ifndef COCKATRICE_ART_CROP_ATTRIBUTION_H #define COCKATRICE_ART_CROP_ATTRIBUTION_H -#include +#include +#include class ExactCard; class QPainter; diff --git a/cockatrice/src/interface/widgets/cards/card_art_utils.cpp b/cockatrice/src/interface/widgets/cards/card_art_utils.cpp index b26b73593..ebf79282e 100644 --- a/cockatrice/src/interface/widgets/cards/card_art_utils.cpp +++ b/cockatrice/src/interface/widgets/cards/card_art_utils.cpp @@ -1,7 +1,10 @@ #include "card_art_utils.h" +#include "libcockatrice/card/card_info.h" + #include #include +#include namespace CardArtUtils { diff --git a/cockatrice/src/interface/widgets/cards/card_group_display_widgets/card_group_display_widget.cpp b/cockatrice/src/interface/widgets/cards/card_group_display_widgets/card_group_display_widget.cpp index 8df3700c3..b15ac5d23 100644 --- a/cockatrice/src/interface/widgets/cards/card_group_display_widgets/card_group_display_widget.cpp +++ b/cockatrice/src/interface/widgets/cards/card_group_display_widgets/card_group_display_widget.cpp @@ -1,13 +1,33 @@ #include "card_group_display_widget.h" #include "../../../../client/settings/cache_settings.h" +#include "../../general/display/banner_widget.h" +#include "../card_info_picture_widget.h" #include "../card_info_picture_with_text_overlay_widget.h" +#include "../card_size_widget.h" +#include "libcockatrice/card/database/card_database_querier.h" +#include "libcockatrice/card/printing/exact_card.h" -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include #include +#include +#include CardGroupDisplayWidget::CardGroupDisplayWidget(QWidget *parent, DeckListModel *_deckListModel, diff --git a/cockatrice/src/interface/widgets/cards/card_group_display_widgets/card_group_display_widget.h b/cockatrice/src/interface/widgets/cards/card_group_display_widgets/card_group_display_widget.h index e5f7c7ee2..f4a555766 100644 --- a/cockatrice/src/interface/widgets/cards/card_group_display_widgets/card_group_display_widget.h +++ b/cockatrice/src/interface/widgets/cards/card_group_display_widgets/card_group_display_widget.h @@ -7,15 +7,24 @@ #ifndef CARD_GROUP_DISPLAY_WIDGET_H #define CARD_GROUP_DISPLAY_WIDGET_H -#include "../../general/display/banner_widget.h" -#include "../card_info_picture_with_text_overlay_widget.h" -#include "../card_size_widget.h" - -#include -#include +#include +#include +#include +#include +#include +#include #include +#include #include -#include +#include + +class BannerWidget; +class CardSizeWidget; +class DeckListModel; +class ExactCard; +class QItemSelection; +class QItemSelectionModel; +class QModelIndex; class CardGroupDisplayWidget : public QWidget { diff --git a/cockatrice/src/interface/widgets/cards/card_group_display_widgets/flat_card_group_display_widget.cpp b/cockatrice/src/interface/widgets/cards/card_group_display_widgets/flat_card_group_display_widget.cpp index a192d13d8..3256e0ca8 100644 --- a/cockatrice/src/interface/widgets/cards/card_group_display_widgets/flat_card_group_display_widget.cpp +++ b/cockatrice/src/interface/widgets/cards/card_group_display_widgets/flat_card_group_display_widget.cpp @@ -1,10 +1,20 @@ #include "flat_card_group_display_widget.h" -#include -#include +#include "../../general/display/banner_widget.h" +#include "../../general/layout_containers/flow_widget.h" + +#include +#include +#include +#include +#include #include +#include #include +class CardSizeWidget; +class QItemSelectionModel; + FlatCardGroupDisplayWidget::FlatCardGroupDisplayWidget(QWidget *parent, DeckListModel *_deckListModel, QItemSelectionModel *_selectionModel, diff --git a/cockatrice/src/interface/widgets/cards/card_group_display_widgets/flat_card_group_display_widget.h b/cockatrice/src/interface/widgets/cards/card_group_display_widgets/flat_card_group_display_widget.h index 0772c1ab4..d13dcddb5 100644 --- a/cockatrice/src/interface/widgets/cards/card_group_display_widgets/flat_card_group_display_widget.h +++ b/cockatrice/src/interface/widgets/cards/card_group_display_widgets/flat_card_group_display_widget.h @@ -10,6 +10,16 @@ #include "../../general/layout_containers/flow_widget.h" #include "card_group_display_widget.h" +#include +#include +#include +#include + +class CardSizeWidget; +class DeckListModel; +class QItemSelectionModel; +class QWidget; + class FlatCardGroupDisplayWidget : public CardGroupDisplayWidget { Q_OBJECT diff --git a/cockatrice/src/interface/widgets/cards/card_group_display_widgets/overlapped_card_group_display_widget.cpp b/cockatrice/src/interface/widgets/cards/card_group_display_widgets/overlapped_card_group_display_widget.cpp index dca8ee2a5..6e923cdbe 100644 --- a/cockatrice/src/interface/widgets/cards/card_group_display_widgets/overlapped_card_group_display_widget.cpp +++ b/cockatrice/src/interface/widgets/cards/card_group_display_widgets/overlapped_card_group_display_widget.cpp @@ -1,8 +1,20 @@ #include "overlapped_card_group_display_widget.h" +#include "../../general/display/banner_widget.h" +#include "../../general/layout_containers/overlap_widget.h" +#include "../card_size_widget.h" + +#include +#include +#include #include -#include +#include +#include +#include #include +#include + +class QItemSelectionModel; OverlappedCardGroupDisplayWidget::OverlappedCardGroupDisplayWidget(QWidget *parent, DeckListModel *_deckListModel, diff --git a/cockatrice/src/interface/widgets/cards/card_group_display_widgets/overlapped_card_group_display_widget.h b/cockatrice/src/interface/widgets/cards/card_group_display_widgets/overlapped_card_group_display_widget.h index 5b4b80d6b..76be3069f 100644 --- a/cockatrice/src/interface/widgets/cards/card_group_display_widgets/overlapped_card_group_display_widget.h +++ b/cockatrice/src/interface/widgets/cards/card_group_display_widgets/overlapped_card_group_display_widget.h @@ -10,6 +10,16 @@ #include "../../general/layout_containers/overlap_widget.h" #include "card_group_display_widget.h" +#include +#include +#include +#include + +class CardSizeWidget; +class DeckListModel; +class QItemSelectionModel; +class QWidget; + class OverlappedCardGroupDisplayWidget : public CardGroupDisplayWidget { Q_OBJECT diff --git a/cockatrice/src/interface/widgets/cards/card_info_display_widget.cpp b/cockatrice/src/interface/widgets/cards/card_info_display_widget.cpp index 577dafe0a..7ec2ee38e 100644 --- a/cockatrice/src/interface/widgets/cards/card_info_display_widget.cpp +++ b/cockatrice/src/interface/widgets/cards/card_info_display_widget.cpp @@ -1,14 +1,25 @@ #include "card_info_display_widget.h" -#include "../../../game_graphics/board/card_item.h" +#include "../../../game_graphics/board/abstract_card_item.h" +#include "../../../game_graphics/card_dimensions.h" #include "card_info_picture_widget.h" #include "card_info_text_widget.h" +#include "libcockatrice/card/card_info.h" +#include "libcockatrice/card/database/card_database_querier.h" +#include "libcockatrice/card/printing/exact_card.h" +#include "libcockatrice/utility/card_ref.h" -#include +#include +#include +#include #include +#include +#include #include #include +class QWidget; + CardInfoDisplayWidget::CardInfoDisplayWidget(const CardRef &cardRef, QWidget *parent, Qt::WindowFlags flags) : QFrame(parent, flags), aspectRatio(CardDimensions::HEIGHT_F / CardDimensions::WIDTH_F) { diff --git a/cockatrice/src/interface/widgets/cards/card_info_display_widget.h b/cockatrice/src/interface/widgets/cards/card_info_display_widget.h index f8f33f3d4..65965a63e 100644 --- a/cockatrice/src/interface/widgets/cards/card_info_display_widget.h +++ b/cockatrice/src/interface/widgets/cards/card_info_display_widget.h @@ -7,15 +7,17 @@ #ifndef CARDINFOWIDGET_H #define CARDINFOWIDGET_H -#include #include -#include +#include #include -#include +#include +#include class CardInfoPictureWidget; class CardInfoTextWidget; class AbstractCardItem; +class QWidget; +struct CardRef; class CardInfoDisplayWidget : public QFrame { diff --git a/cockatrice/src/interface/widgets/cards/card_info_frame_widget.cpp b/cockatrice/src/interface/widgets/cards/card_info_frame_widget.cpp index fcccf445a..0f66eb209 100644 --- a/cockatrice/src/interface/widgets/cards/card_info_frame_widget.cpp +++ b/cockatrice/src/interface/widgets/cards/card_info_frame_widget.cpp @@ -1,16 +1,27 @@ #include "card_info_frame_widget.h" #include "../../../client/settings/cache_settings.h" -#include "../../../game_graphics/board/card_item.h" -#include "card_info_display_widget.h" +#include "../../../game_graphics/board/abstract_card_item.h" #include "card_info_picture_widget.h" #include "card_info_text_widget.h" +#include "libcockatrice/card/card_info.h" +#include "libcockatrice/card/database/card_database_querier.h" +#include "libcockatrice/card/printing/exact_card.h" +#include +#include +#include #include #include +#include +#include #include #include #include +#include +#include + +struct CardRef; CardInfoFrameWidget::CardInfoFrameWidget(QWidget *parent) : QTabWidget(parent), viewTransformationButton(nullptr), cardTextOnly(false) diff --git a/cockatrice/src/interface/widgets/cards/card_info_frame_widget.h b/cockatrice/src/interface/widgets/cards/card_info_frame_widget.h index e766fac7a..1f8143785 100644 --- a/cockatrice/src/interface/widgets/cards/card_info_frame_widget.h +++ b/cockatrice/src/interface/widgets/cards/card_info_frame_widget.h @@ -7,16 +7,19 @@ #ifndef CARDFRAME_H #define CARDFRAME_H -#include +#include #include #include -#include +#include class AbstractCardItem; class CardInfoPictureWidget; class CardInfoTextWidget; class QVBoxLayout; class QSplitter; +class QPushButton; +class QWidget; +struct CardRef; class CardInfoFrameWidget : public QTabWidget { diff --git a/cockatrice/src/interface/widgets/cards/card_info_picture_art_crop_widget.cpp b/cockatrice/src/interface/widgets/cards/card_info_picture_art_crop_widget.cpp index e5b0c4872..5ec4c8a25 100644 --- a/cockatrice/src/interface/widgets/cards/card_info_picture_art_crop_widget.cpp +++ b/cockatrice/src/interface/widgets/cards/card_info_picture_art_crop_widget.cpp @@ -1,6 +1,12 @@ #include "card_info_picture_art_crop_widget.h" #include "../../../interface/card_picture_loader/card_picture_loader.h" +#include "libcockatrice/card/printing/exact_card.h" + +#include +#include + +class QWidget; CardInfoPictureArtCropWidget::CardInfoPictureArtCropWidget(QWidget *parent) : CardInfoPictureWidget(parent, false, false) diff --git a/cockatrice/src/interface/widgets/cards/card_info_picture_art_crop_widget.h b/cockatrice/src/interface/widgets/cards/card_info_picture_art_crop_widget.h index ce22a1a44..540b0c2fa 100644 --- a/cockatrice/src/interface/widgets/cards/card_info_picture_art_crop_widget.h +++ b/cockatrice/src/interface/widgets/cards/card_info_picture_art_crop_widget.h @@ -9,6 +9,11 @@ #include "card_info_picture_widget.h" +#include +#include + +class QWidget; + class CardInfoPictureArtCropWidget : public CardInfoPictureWidget { Q_OBJECT diff --git a/cockatrice/src/interface/widgets/cards/card_info_picture_enlarged_widget.cpp b/cockatrice/src/interface/widgets/cards/card_info_picture_enlarged_widget.cpp index 40bef3df3..ba10d4a0f 100644 --- a/cockatrice/src/interface/widgets/cards/card_info_picture_enlarged_widget.cpp +++ b/cockatrice/src/interface/widgets/cards/card_info_picture_enlarged_widget.cpp @@ -2,10 +2,17 @@ #include "../../../client/settings/cache_settings.h" #include "../../../interface/card_picture_loader/card_picture_loader.h" +#include "libcockatrice/card/card_info.h" +#include "libcockatrice/card/printing/exact_card.h" #include +#include +#include +#include #include +#include #include +#include /** * @brief Constructs a CardPictureEnlargedWidget. diff --git a/cockatrice/src/interface/widgets/cards/card_info_picture_enlarged_widget.h b/cockatrice/src/interface/widgets/cards/card_info_picture_enlarged_widget.h index a158ac6cf..f5ead2a18 100644 --- a/cockatrice/src/interface/widgets/cards/card_info_picture_enlarged_widget.h +++ b/cockatrice/src/interface/widgets/cards/card_info_picture_enlarged_widget.h @@ -8,8 +8,12 @@ #ifndef CARD_PICTURE_ENLARGED_WIDGET_H #define CARD_PICTURE_ENLARGED_WIDGET_H +#include #include #include +#include + +class QSize; class CardInfoPictureEnlargedWidget final : public QWidget { diff --git a/cockatrice/src/interface/widgets/cards/card_info_picture_widget.cpp b/cockatrice/src/interface/widgets/cards/card_info_picture_widget.cpp index 2dd21e78a..3c1e1b77f 100644 --- a/cockatrice/src/interface/widgets/cards/card_info_picture_widget.cpp +++ b/cockatrice/src/interface/widgets/cards/card_info_picture_widget.cpp @@ -1,21 +1,47 @@ #include "card_info_picture_widget.h" #include "../../../client/settings/cache_settings.h" -#include "../../../game_graphics/board/card_item.h" #include "../../../interface/card_picture_loader/card_picture_loader.h" #include "../../../interface/widgets/tabs/tab_supervisor.h" #include "../../window_main.h" +#include "../tabs/abstract_tab_deck_editor.h" #include "card_art_utils.h" +#include "card_info_picture_enlarged_widget.h" +#include "libcockatrice/card/card_info.h" +#include "libcockatrice/card/database/card_database_querier.h" +#include "libcockatrice/card/printing/exact_card.h" +#include "libcockatrice/card/printing/printing_info.h" +#include "libcockatrice/deck_list/tree/inner_deck_list_node.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include +#include +#include +#include +#include #include +#include +#include +#include #include +#include #include +#include +#include #include #include #include -#include +#include +#include static constexpr qreal MTG_CARD_ASPECT_RATIO = 1.396; // static constexpr qreal YUGIOH_CARD_ASPECT_RATIO = 1.457; diff --git a/cockatrice/src/interface/widgets/cards/card_info_picture_widget.h b/cockatrice/src/interface/widgets/cards/card_info_picture_widget.h index 4fe84ed0b..8d2d63736 100644 --- a/cockatrice/src/interface/widgets/cards/card_info_picture_widget.h +++ b/cockatrice/src/interface/widgets/cards/card_info_picture_widget.h @@ -7,15 +7,20 @@ #ifndef CARD_INFO_PICTURE_H #define CARD_INFO_PICTURE_H -#include "card_info_picture_enlarged_widget.h" - -#include +#include +#include +#include +#include #include #include +#include + +class CardInfoPictureEnlargedWidget; +class QPropertyAnimation; +class QTimer; inline Q_LOGGING_CATEGORY(CardInfoPictureWidgetLog, "card_info_picture_widget"); -class AbstractCardItem; class QMenu; class CardInfoPictureWidget : public QWidget diff --git a/cockatrice/src/interface/widgets/cards/card_info_picture_with_text_overlay_widget.cpp b/cockatrice/src/interface/widgets/cards/card_info_picture_with_text_overlay_widget.cpp index 000a88b2f..04fe9ab69 100644 --- a/cockatrice/src/interface/widgets/cards/card_info_picture_with_text_overlay_widget.cpp +++ b/cockatrice/src/interface/widgets/cards/card_info_picture_with_text_overlay_widget.cpp @@ -1,8 +1,24 @@ #include "card_info_picture_with_text_overlay_widget.h" +#include +#include +#include #include +#include +#include #include +#include +#include +#include +#include +#include +#include +#include +#include #include +#include + +class QWidget; /** * @brief Constructs a CardPictureWithTextOverlay widget. diff --git a/cockatrice/src/interface/widgets/cards/card_info_picture_with_text_overlay_widget.h b/cockatrice/src/interface/widgets/cards/card_info_picture_with_text_overlay_widget.h index ba978498d..6c547dc13 100644 --- a/cockatrice/src/interface/widgets/cards/card_info_picture_with_text_overlay_widget.h +++ b/cockatrice/src/interface/widgets/cards/card_info_picture_with_text_overlay_widget.h @@ -11,8 +11,14 @@ #include "card_info_picture_widget.h" #include -#include +#include #include +#include +#include + +class QPainter; +class QRect; +class QWidget; class CardInfoPictureWithTextOverlayWidget : public CardInfoPictureWidget { diff --git a/cockatrice/src/interface/widgets/cards/card_info_text_widget.cpp b/cockatrice/src/interface/widgets/cards/card_info_text_widget.cpp index e98c3c02a..fa6cde311 100644 --- a/cockatrice/src/interface/widgets/cards/card_info_text_widget.cpp +++ b/cockatrice/src/interface/widgets/cards/card_info_text_widget.cpp @@ -1,15 +1,26 @@ #include "card_info_text_widget.h" -#include "../../../game_graphics/board/card_item.h" +#include "../../../client/settings/cache_settings.h" #include "../../card_localization.h" +#include "libcockatrice/card/card_info.h" +#include "libcockatrice/card/printing/printing_info.h" +#include "libcockatrice/card/set/card_set.h" +#include "libcockatrice/settings/cards_display_settings.h" #include #include +#include #include #include +#include +#include +#include #include +#include #include #include +#include +#include CardInfoTextWidget::CardInfoTextWidget(QWidget *parent) : QFrame(parent) { diff --git a/cockatrice/src/interface/widgets/cards/card_info_text_widget.h b/cockatrice/src/interface/widgets/cards/card_info_text_widget.h index 683be5ab5..8223093fe 100644 --- a/cockatrice/src/interface/widgets/cards/card_info_text_widget.h +++ b/cockatrice/src/interface/widgets/cards/card_info_text_widget.h @@ -10,10 +10,13 @@ #include "libcockatrice/card/printing/exact_card.h" #include -#include +#include +#include + class QLabel; class QScrollArea; class QTextEdit; +class QWidget; class CardInfoTextWidget : public QFrame { diff --git a/cockatrice/src/interface/widgets/cards/card_size_widget.cpp b/cockatrice/src/interface/widgets/cards/card_size_widget.cpp index 9cdfd4bce..ab1840591 100644 --- a/cockatrice/src/interface/widgets/cards/card_size_widget.cpp +++ b/cockatrice/src/interface/widgets/cards/card_size_widget.cpp @@ -1,10 +1,19 @@ #include "card_size_widget.h" -#include "../printing_selector/printing_selector.h" -#include "../visual_deck_storage/visual_deck_storage_widget.h" +#include "../general/layout_containers/flow_widget.h" +#include +#include +#include +#include +#include +#include #include +#include +#include #include +#include +#include /** * @class CardSizeWidget diff --git a/cockatrice/src/interface/widgets/cards/card_size_widget.h b/cockatrice/src/interface/widgets/cards/card_size_widget.h index 46883e792..7de97a5e9 100644 --- a/cockatrice/src/interface/widgets/cards/card_size_widget.h +++ b/cockatrice/src/interface/widgets/cards/card_size_widget.h @@ -9,15 +9,15 @@ #ifndef CARD_SIZE_WIDGET_H #define CARD_SIZE_WIDGET_H -#include "../general/layout_containers/flow_widget.h" - -#include -#include -#include #include #include +#include class QWheelEvent; +class FlowWidget; +class QHBoxLayout; +class QLabel; +class QSlider; class CardSizeWidget : public QWidget { diff --git a/cockatrice/src/interface/widgets/cards/deck_card_zone_display_widget.cpp b/cockatrice/src/interface/widgets/cards/deck_card_zone_display_widget.cpp index a4b4eaf54..911e35285 100644 --- a/cockatrice/src/interface/widgets/cards/deck_card_zone_display_widget.cpp +++ b/cockatrice/src/interface/widgets/cards/deck_card_zone_display_widget.cpp @@ -1,14 +1,38 @@ #include "deck_card_zone_display_widget.h" #include "../../../client/settings/cache_settings.h" +#include "../general/display/banner_widget.h" +#include "../visual_deck_editor/visual_deck_editor_widget.h" +#include "card_group_display_widgets/card_group_display_widget.h" #include "card_group_display_widgets/flat_card_group_display_widget.h" #include "card_group_display_widgets/overlapped_card_group_display_widget.h" +#include "libcockatrice/card/card_info.h" #include "libcockatrice/card/database/card_database_manager.h" +#include "libcockatrice/card/database/card_database_querier.h" +#include "libcockatrice/card/printing/exact_card.h" +#include "libcockatrice/deck_list/tree/deck_list_card_node.h" #include "libcockatrice/settings/cards_display_settings.h" -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include +#include + +class CardSizeWidget; +class QMouseEvent; DeckCardZoneDisplayWidget::DeckCardZoneDisplayWidget(QWidget *parent, DeckListModel *_deckListModel, diff --git a/cockatrice/src/interface/widgets/cards/deck_card_zone_display_widget.h b/cockatrice/src/interface/widgets/cards/deck_card_zone_display_widget.h index f25108834..b7dc3ed3e 100644 --- a/cockatrice/src/interface/widgets/cards/deck_card_zone_display_widget.h +++ b/cockatrice/src/interface/widgets/cards/deck_card_zone_display_widget.h @@ -7,16 +7,27 @@ #ifndef DECK_CARD_ZONE_DISPLAY_WIDGET_H #define DECK_CARD_ZONE_DISPLAY_WIDGET_H -#include "../general/display/banner_widget.h" -#include "../general/layout_containers/overlap_widget.h" #include "../visual_deck_editor/visual_deck_editor_widget.h" -#include "card_group_display_widgets/card_group_display_widget.h" -#include "card_info_picture_with_text_overlay_widget.h" -#include "card_size_widget.h" -#include +#include +#include +#include +#include +#include +#include #include -#include +#include + +class BannerWidget; +class CardGroupDisplayWidget; +class CardSizeWidget; +class DeckListModel; +class ExactCard; +class OverlapWidget; +class QItemSelection; +class QItemSelectionModel; +class QModelIndex; +class QVBoxLayout; class DeckCardZoneDisplayWidget : public QWidget { diff --git a/cockatrice/src/interface/widgets/cards/deck_preview_card_picture_widget.cpp b/cockatrice/src/interface/widgets/cards/deck_preview_card_picture_widget.cpp index 147143e7f..186c55755 100644 --- a/cockatrice/src/interface/widgets/cards/deck_preview_card_picture_widget.cpp +++ b/cockatrice/src/interface/widgets/cards/deck_preview_card_picture_widget.cpp @@ -1,15 +1,15 @@ #include "deck_preview_card_picture_widget.h" #include "../../../client/settings/cache_settings.h" +#include "card_info_picture_widget.h" #include -#include -#include #include -#include -#include +#include #include +class QWidget; + /** * @brief Constructs a CardPictureWithTextOverlay widget. * @param parent The parent widget. diff --git a/cockatrice/src/interface/widgets/cards/deck_preview_card_picture_widget.h b/cockatrice/src/interface/widgets/cards/deck_preview_card_picture_widget.h index 7571bc256..9643c7364 100644 --- a/cockatrice/src/interface/widgets/cards/deck_preview_card_picture_widget.h +++ b/cockatrice/src/interface/widgets/cards/deck_preview_card_picture_widget.h @@ -11,9 +11,12 @@ #include "card_info_picture_with_text_overlay_widget.h" #include -#include -#include -#include +#include +#include +#include + +class QTimer; +class QWidget; class DeckPreviewCardPictureWidget final : public CardInfoPictureWithTextOverlayWidget { diff --git a/cockatrice/src/interface/widgets/deck_analytics/abstract_analytics_panel_widget.cpp b/cockatrice/src/interface/widgets/deck_analytics/abstract_analytics_panel_widget.cpp index 483fc71b0..730043d95 100644 --- a/cockatrice/src/interface/widgets/deck_analytics/abstract_analytics_panel_widget.cpp +++ b/cockatrice/src/interface/widgets/deck_analytics/abstract_analytics_panel_widget.cpp @@ -1,9 +1,16 @@ #include "abstract_analytics_panel_widget.h" #include "../../pixel_map_generator.h" +#include "../general/display/banner_widget.h" #include "deck_list_statistics_analyzer.h" +#include +#include #include +#include +#include +#include +#include AbstractAnalyticsPanelWidget::AbstractAnalyticsPanelWidget(QWidget *parent, DeckListStatisticsAnalyzer *analyzer) : QWidget(parent), analyzer(analyzer) diff --git a/cockatrice/src/interface/widgets/deck_analytics/abstract_analytics_panel_widget.h b/cockatrice/src/interface/widgets/deck_analytics/abstract_analytics_panel_widget.h index 23374a9e1..c1afb78d0 100644 --- a/cockatrice/src/interface/widgets/deck_analytics/abstract_analytics_panel_widget.h +++ b/cockatrice/src/interface/widgets/deck_analytics/abstract_analytics_panel_widget.h @@ -3,12 +3,16 @@ #include "../general/display/banner_widget.h" -#include #include -#include +#include #include +#include class DeckListStatisticsAnalyzer; +class QDialog; +class QHBoxLayout; +class QPushButton; +class QVBoxLayout; class AbstractAnalyticsPanelWidget : public QWidget { diff --git a/cockatrice/src/interface/widgets/deck_analytics/add_analytics_panel_dialog.cpp b/cockatrice/src/interface/widgets/deck_analytics/add_analytics_panel_dialog.cpp index c83e6d982..f1ed5767c 100644 --- a/cockatrice/src/interface/widgets/deck_analytics/add_analytics_panel_dialog.cpp +++ b/cockatrice/src/interface/widgets/deck_analytics/add_analytics_panel_dialog.cpp @@ -3,8 +3,11 @@ #include "analytics_panel_widget_factory.h" #include +#include #include +class QWidget; + AddAnalyticsPanelDialog::AddAnalyticsPanelDialog(QWidget *parent) : QDialog(parent) { setWindowTitle(tr("Add Analytics Panel")); diff --git a/cockatrice/src/interface/widgets/deck_analytics/add_analytics_panel_dialog.h b/cockatrice/src/interface/widgets/deck_analytics/add_analytics_panel_dialog.h index aa44734c2..f70c1d8f5 100644 --- a/cockatrice/src/interface/widgets/deck_analytics/add_analytics_panel_dialog.h +++ b/cockatrice/src/interface/widgets/deck_analytics/add_analytics_panel_dialog.h @@ -2,12 +2,15 @@ #ifndef COCKATRICE_ADD_ANALYTICS_PANEL_DIALOG_H #define COCKATRICE_ADD_ANALYTICS_PANEL_DIALOG_H -#include "analytics_panel_widget_factory.h" - #include #include -#include -#include +#include +#include +#include + +class QDialogButtonBox; +class QVBoxLayout; +class QWidget; class AddAnalyticsPanelDialog : public QDialog { diff --git a/cockatrice/src/interface/widgets/deck_analytics/analytics_panel_widget_factory.cpp b/cockatrice/src/interface/widgets/deck_analytics/analytics_panel_widget_factory.cpp index e807e9d47..79dda527d 100644 --- a/cockatrice/src/interface/widgets/deck_analytics/analytics_panel_widget_factory.cpp +++ b/cockatrice/src/interface/widgets/deck_analytics/analytics_panel_widget_factory.cpp @@ -2,6 +2,8 @@ #include "abstract_analytics_panel_widget.h" +#include + AnalyticsPanelWidgetFactory &AnalyticsPanelWidgetFactory::instance() { static AnalyticsPanelWidgetFactory f; diff --git a/cockatrice/src/interface/widgets/deck_analytics/analytics_panel_widget_factory.h b/cockatrice/src/interface/widgets/deck_analytics/analytics_panel_widget_factory.h index 6c5856d70..598498980 100644 --- a/cockatrice/src/interface/widgets/deck_analytics/analytics_panel_widget_factory.h +++ b/cockatrice/src/interface/widgets/deck_analytics/analytics_panel_widget_factory.h @@ -1,9 +1,9 @@ #ifndef COCKATRICE_DECK_ANALYTICS_WIDGET_FACTORY_H #define COCKATRICE_DECK_ANALYTICS_WIDGET_FACTORY_H +#include #include #include -#include #include #include diff --git a/cockatrice/src/interface/widgets/deck_analytics/analytics_panel_widget_registrar.h b/cockatrice/src/interface/widgets/deck_analytics/analytics_panel_widget_registrar.h index 70d6df94f..99a6daf5d 100644 --- a/cockatrice/src/interface/widgets/deck_analytics/analytics_panel_widget_registrar.h +++ b/cockatrice/src/interface/widgets/deck_analytics/analytics_panel_widget_registrar.h @@ -3,6 +3,8 @@ #include "analytics_panel_widget_factory.h" +#include + class AnalyticsPanelWidgetRegistrar { public: diff --git a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/draw_probability/draw_probability_config.cpp b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/draw_probability/draw_probability_config.cpp index 51129a4b4..1c61116e3 100644 --- a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/draw_probability/draw_probability_config.cpp +++ b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/draw_probability/draw_probability_config.cpp @@ -1,5 +1,8 @@ #include "draw_probability_config.h" +#include +#include + QJsonObject DrawProbabilityConfig::toJson() const { QJsonObject o; diff --git a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/draw_probability/draw_probability_config_dialog.cpp b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/draw_probability/draw_probability_config_dialog.cpp index 71f88c0fc..28fd4c841 100644 --- a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/draw_probability/draw_probability_config_dialog.cpp +++ b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/draw_probability/draw_probability_config_dialog.cpp @@ -5,6 +5,10 @@ #include #include #include +#include +#include + +class QWidget; DrawProbabilityConfigDialog::DrawProbabilityConfigDialog(QWidget *parent) : QDialog(parent) { diff --git a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/draw_probability/draw_probability_config_dialog.h b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/draw_probability/draw_probability_config_dialog.h index 44b1f0eec..3553db75d 100644 --- a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/draw_probability/draw_probability_config_dialog.h +++ b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/draw_probability/draw_probability_config_dialog.h @@ -3,11 +3,13 @@ #include "draw_probability_config.h" #include -#include +#include class QComboBox; class QSpinBox; class QLabel; +class QFormLayout; +class QWidget; class DrawProbabilityConfigDialog : public QDialog { diff --git a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/draw_probability/draw_probability_widget.cpp b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/draw_probability/draw_probability_widget.cpp index 0107294c7..90d9f58ef 100644 --- a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/draw_probability/draw_probability_widget.cpp +++ b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/draw_probability/draw_probability_widget.cpp @@ -1,21 +1,40 @@ #include "draw_probability_widget.h" +#include "../../../general/display/banner_widget.h" +#include "../../../general/layout_containers/flow_widget.h" +#include "../../abstract_analytics_panel_widget.h" +#include "../../deck_list_statistics_analyzer.h" +#include "deck_list_model.h" #include "draw_probability_config_dialog.h" +#include "libcockatrice/card/database/card_database_querier.h" +#include "libcockatrice/deck_list/tree/deck_list_card_node.h" +#include +#include #include #include -#include -#include -#include #include +#include #include +#include #include +#include +#include +#include #include +#include +#include +#include #include -#include +#include +#include +#include #include #include #include +#include + +class QWidget; DrawProbabilityWidget::DrawProbabilityWidget(QWidget *parent, DeckListStatisticsAnalyzer *analyzer) : AbstractAnalyticsPanelWidget(parent, analyzer) diff --git a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/draw_probability/draw_probability_widget.h b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/draw_probability/draw_probability_widget.h index 9f7b971b1..7c7bdb50a 100644 --- a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/draw_probability/draw_probability_widget.h +++ b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/draw_probability/draw_probability_widget.h @@ -1,16 +1,19 @@ #ifndef COCKATRICE_DRAW_PROBABILITY_WIDGET_H #define COCKATRICE_DRAW_PROBABILITY_WIDGET_H -#include "../../../../layouts/flow_layout.h" -#include "../../../general/layout_containers/flow_widget.h" #include "../../abstract_analytics_panel_widget.h" -#include "../../deck_list_statistics_analyzer.h" #include "draw_probability_config.h" -#include -#include -#include -#include +#include + +class DeckListStatisticsAnalyzer; +class FlowWidget; +class QComboBox; +class QLabel; +class QLineEdit; +class QSpinBox; +class QTableWidget; +class QWidget; class DrawProbabilityWidget : public AbstractAnalyticsPanelWidget { diff --git a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_base/mana_base_config.cpp b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_base/mana_base_config.cpp index 2f9f60752..41ebdec1e 100644 --- a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_base/mana_base_config.cpp +++ b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_base/mana_base_config.cpp @@ -1,5 +1,9 @@ #include "mana_base_config.h" +#include +#include +#include + QJsonObject ManaBaseConfig::toJson() const { QJsonObject jsonObject; diff --git a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_base/mana_base_config.h b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_base/mana_base_config.h index d01f88b8b..5fd45af62 100644 --- a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_base/mana_base_config.h +++ b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_base/mana_base_config.h @@ -2,8 +2,9 @@ #ifndef COCKATRICE_MANA_BASE_CONFIG_H #define COCKATRICE_MANA_BASE_CONFIG_H -#include #include +#include +#include #include struct ManaBaseConfig diff --git a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_base/mana_base_config_dialog.cpp b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_base/mana_base_config_dialog.cpp index 83e35d57d..32b54c485 100644 --- a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_base/mana_base_config_dialog.cpp +++ b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_base/mana_base_config_dialog.cpp @@ -1,6 +1,19 @@ #include "mana_base_config_dialog.h" +#include "../../deck_list_statistics_analyzer.h" + +#include +#include +#include +#include +#include +#include +#include #include +#include +#include + +class QWidget; ManaBaseConfigDialog::ManaBaseConfigDialog(DeckListStatisticsAnalyzer *analyzer, ManaBaseConfig initial, diff --git a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_base/mana_base_config_dialog.h b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_base/mana_base_config_dialog.h index a816f154f..b0ae77076 100644 --- a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_base/mana_base_config_dialog.h +++ b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_base/mana_base_config_dialog.h @@ -2,18 +2,20 @@ #ifndef COCKATRICE_MANA_BASE_ADD_DIALOG_H #define COCKATRICE_MANA_BASE_ADD_DIALOG_H -#include "../../deck_list_statistics_analyzer.h" #include "mana_base_config.h" -#include -#include #include -#include -#include -#include -#include -#include -#include +#include +#include +#include + +class DeckListStatisticsAnalyzer; +class QComboBox; +class QDialogButtonBox; +class QLabel; +class QListWidget; +class QVBoxLayout; +class QWidget; class ManaBaseConfigDialog : public QDialog { diff --git a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_base/mana_base_widget.cpp b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_base/mana_base_widget.cpp index 0093c360b..fc7914b94 100644 --- a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_base/mana_base_widget.cpp +++ b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_base/mana_base_widget.cpp @@ -3,12 +3,27 @@ #include "../../../general/display/charts/bars/bar_widget.h" #include "../../../general/display/charts/bars/color_bar.h" #include "../../../general/display/charts/pies/color_pie.h" +#include "../../abstract_analytics_panel_widget.h" #include "../../analytics_panel_widget_registrar.h" +#include "../../deck_list_statistics_analyzer.h" #include "mana_base_config_dialog.h" +#include #include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include +#include +#include namespace { diff --git a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_base/mana_base_widget.h b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_base/mana_base_widget.h index 85b2a13b3..7ec5ecefe 100644 --- a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_base/mana_base_widget.h +++ b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_base/mana_base_widget.h @@ -7,16 +7,17 @@ #ifndef MANA_BASE_WIDGET_H #define MANA_BASE_WIDGET_H -#include "../../../general/display/banner_widget.h" #include "../../abstract_analytics_panel_widget.h" -#include "../../deck_list_statistics_analyzer.h" #include "mana_base_config.h" -#include -#include -#include -#include -#include +#include +#include +#include +#include + +class DeckListStatisticsAnalyzer; +class QHBoxLayout; +class QWidget; class ManaBaseWidget : public AbstractAnalyticsPanelWidget { diff --git a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_curve/mana_curve_category_widget.cpp b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_curve/mana_curve_category_widget.cpp index a0ccedc74..7e15058a4 100644 --- a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_curve/mana_curve_category_widget.cpp +++ b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_curve/mana_curve_category_widget.cpp @@ -1,9 +1,21 @@ #include "mana_curve_category_widget.h" +#include "../../../general/display/charts/bars/bar_chart_widget.h" #include "libcockatrice/utility/color.h" #include "libcockatrice/utility/qt_utils.h" #include "mana_curve_config.h" -#include "mana_curve_total_widget.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include constexpr int MIN_ROW_HEIGHT = 100; // Minimum readable height per row diff --git a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_curve/mana_curve_category_widget.h b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_curve/mana_curve_category_widget.h index c6aa6f1f0..1794d5cab 100644 --- a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_curve/mana_curve_category_widget.h +++ b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_curve/mana_curve_category_widget.h @@ -1,12 +1,14 @@ #ifndef COCKATRICE_MANA_CURVE_CATEGORY_WIDGET_H #define COCKATRICE_MANA_CURVE_CATEGORY_WIDGET_H -#include "../../../general/display/charts/bars/bar_chart_widget.h" -#include "mana_curve_config.h" - -#include -#include +#include #include +#include + +class QString; +class QVBoxLayout; +struct ManaCurveConfig; +template class QHash; class ManaCurveCategoryWidget : public QWidget { diff --git a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_curve/mana_curve_config.cpp b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_curve/mana_curve_config.cpp index 0dfef1b66..190642ad9 100644 --- a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_curve/mana_curve_config.cpp +++ b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_curve/mana_curve_config.cpp @@ -1,5 +1,9 @@ #include "mana_curve_config.h" +#include +#include +#include + QJsonObject ManaCurveConfig::toJson() const { QJsonObject jsonObject; diff --git a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_curve/mana_curve_config.h b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_curve/mana_curve_config.h index 55222dd98..28224db03 100644 --- a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_curve/mana_curve_config.h +++ b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_curve/mana_curve_config.h @@ -2,8 +2,9 @@ #ifndef COCKATRICE_MANA_CURVE_CONFIG_H #define COCKATRICE_MANA_CURVE_CONFIG_H -#include #include +#include +#include #include struct ManaCurveConfig diff --git a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_curve/mana_curve_config_dialog.cpp b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_curve/mana_curve_config_dialog.cpp index 9e9ae98a6..c5498ff3e 100644 --- a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_curve/mana_curve_config_dialog.cpp +++ b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_curve/mana_curve_config_dialog.cpp @@ -1,12 +1,22 @@ #include "mana_curve_config_dialog.h" +#include "../../deck_list_statistics_analyzer.h" + +#include #include #include #include +#include #include +#include #include +#include +#include +#include #include +class QWidget; + ManaCurveConfigDialog::ManaCurveConfigDialog(DeckListStatisticsAnalyzer *analyzer, QWidget *parent) : QDialog(parent), analyzer(analyzer) { diff --git a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_curve/mana_curve_config_dialog.h b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_curve/mana_curve_config_dialog.h index 17e6776e5..47ce1b8c2 100644 --- a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_curve/mana_curve_config_dialog.h +++ b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_curve/mana_curve_config_dialog.h @@ -1,16 +1,18 @@ #ifndef COCKATRICE_MANA_CURVE_ADD_DIALOG_H #define COCKATRICE_MANA_CURVE_ADD_DIALOG_H -#include "../../deck_list_statistics_analyzer.h" #include "mana_curve_config.h" #include -#include -#include +#include class QListWidget; class QCheckBox; class QComboBox; +class DeckListStatisticsAnalyzer; +class QDialogButtonBox; +class QLabel; +class QWidget; class ManaCurveConfigDialog : public QDialog { diff --git a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_curve/mana_curve_total_widget.cpp b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_curve/mana_curve_total_widget.cpp index c04767015..f1d9ea8c7 100644 --- a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_curve/mana_curve_total_widget.cpp +++ b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_curve/mana_curve_total_widget.cpp @@ -2,10 +2,18 @@ #include "../../../general/display/charts/bars/bar_chart_widget.h" #include "libcockatrice/utility/color.h" -#include "libcockatrice/utility/qt_utils.h" #include "mana_curve_config.h" #include +#include +#include +#include +#include +#include +#include +#include +#include +#include ManaCurveTotalWidget::ManaCurveTotalWidget(QWidget *parent) : QWidget(parent) { diff --git a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_curve/mana_curve_total_widget.h b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_curve/mana_curve_total_widget.h index 203f75345..0eaecec96 100644 --- a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_curve/mana_curve_total_widget.h +++ b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_curve/mana_curve_total_widget.h @@ -1,11 +1,15 @@ #ifndef COCKATRICE_MANA_CURVE_TOTAL_WIDGET_H #define COCKATRICE_MANA_CURVE_TOTAL_WIDGET_H -#include "../../../general/display/charts/bars/bar_chart_widget.h" -#include "mana_curve_config.h" - -#include -#include +#include +#include #include +#include + +class BarChartWidget; +class QHBoxLayout; +class QLabel; +struct ManaCurveConfig; +template class QMap; class ManaCurveTotalWidget : public QWidget { diff --git a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_curve/mana_curve_widget.cpp b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_curve/mana_curve_widget.cpp index b182bf954..6d93bde54 100644 --- a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_curve/mana_curve_widget.cpp +++ b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_curve/mana_curve_widget.cpp @@ -1,19 +1,23 @@ #include "mana_curve_widget.h" -#include "../../../general/display/charts/bars/bar_chart_background_widget.h" -#include "../../../general/display/charts/bars/bar_chart_widget.h" -#include "../../../general/display/charts/bars/segmented_bar_widget.h" +#include "../../abstract_analytics_panel_widget.h" #include "../../analytics_panel_widget_registrar.h" #include "../../deck_list_statistics_analyzer.h" -#include "libcockatrice/utility/color.h" -#include "libcockatrice/utility/qt_utils.h" +#include "mana_curve_category_widget.h" #include "mana_curve_config_dialog.h" +#include "mana_curve_total_widget.h" -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +class QWidget; namespace { diff --git a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_curve/mana_curve_widget.h b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_curve/mana_curve_widget.h index d3e56d44c..14c445717 100644 --- a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_curve/mana_curve_widget.h +++ b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_curve/mana_curve_widget.h @@ -8,14 +8,17 @@ #define MANA_CURVE_WIDGET_H #include "../../abstract_analytics_panel_widget.h" -#include "mana_curve_category_widget.h" #include "mana_curve_config.h" -#include "mana_curve_total_widget.h" -#include +#include +#include +#include +#include -class SegmentedBarWidget; class DeckListStatisticsAnalyzer; +class ManaCurveCategoryWidget; +class ManaCurveTotalWidget; +class QWidget; class ManaCurveWidget : public AbstractAnalyticsPanelWidget { diff --git a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_devotion/mana_devotion_config.cpp b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_devotion/mana_devotion_config.cpp index ee57cb1e2..7a6f0b51a 100644 --- a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_devotion/mana_devotion_config.cpp +++ b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_devotion/mana_devotion_config.cpp @@ -1,5 +1,9 @@ #include "mana_devotion_config.h" +#include +#include +#include + QJsonObject ManaDevotionConfig::toJson() const { QJsonObject jsonObject; diff --git a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_devotion/mana_devotion_config.h b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_devotion/mana_devotion_config.h index 08be146e5..480b2151c 100644 --- a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_devotion/mana_devotion_config.h +++ b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_devotion/mana_devotion_config.h @@ -1,8 +1,9 @@ #ifndef COCKATRICE_MANA_DEVOTION_CONFIG_H #define COCKATRICE_MANA_DEVOTION_CONFIG_H -#include #include +#include +#include #include struct ManaDevotionConfig diff --git a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_devotion/mana_devotion_config_dialog.cpp b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_devotion/mana_devotion_config_dialog.cpp index b01c33ba5..0d70fc24d 100644 --- a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_devotion/mana_devotion_config_dialog.cpp +++ b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_devotion/mana_devotion_config_dialog.cpp @@ -1,5 +1,19 @@ #include "mana_devotion_config_dialog.h" +#include "../../deck_list_statistics_analyzer.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +class QWidget; + ManaDevotionConfigDialog::ManaDevotionConfigDialog(DeckListStatisticsAnalyzer *analyzer, ManaDevotionConfig initial, QWidget *parent) diff --git a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_devotion/mana_devotion_config_dialog.h b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_devotion/mana_devotion_config_dialog.h index fd804e2af..9c37ec5ad 100644 --- a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_devotion/mana_devotion_config_dialog.h +++ b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_devotion/mana_devotion_config_dialog.h @@ -2,16 +2,20 @@ #ifndef COCKATRICE_MANA_DEVOTION_ADD_DIALOG_H #define COCKATRICE_MANA_DEVOTION_ADD_DIALOG_H -#include "../../deck_list_statistics_analyzer.h" #include "mana_devotion_config.h" -#include -#include #include -#include -#include -#include -#include +#include +#include +#include + +class DeckListStatisticsAnalyzer; +class QComboBox; +class QDialogButtonBox; +class QLabel; +class QListWidget; +class QVBoxLayout; +class QWidget; class ManaDevotionConfigDialog : public QDialog { diff --git a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_devotion/mana_devotion_widget.cpp b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_devotion/mana_devotion_widget.cpp index 709577ff2..7e1f0c211 100644 --- a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_devotion/mana_devotion_widget.cpp +++ b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_devotion/mana_devotion_widget.cpp @@ -3,12 +3,26 @@ #include "../../../general/display/charts/bars/bar_widget.h" #include "../../../general/display/charts/bars/color_bar.h" #include "../../../general/display/charts/pies/color_pie.h" +#include "../../abstract_analytics_panel_widget.h" #include "../../analytics_panel_widget_registrar.h" #include "../../deck_list_statistics_analyzer.h" #include "mana_devotion_config_dialog.h" +#include +#include +#include +#include #include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include namespace { diff --git a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_devotion/mana_devotion_widget.h b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_devotion/mana_devotion_widget.h index af0215305..2b0182c1e 100644 --- a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_devotion/mana_devotion_widget.h +++ b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_devotion/mana_devotion_widget.h @@ -6,11 +6,17 @@ #ifndef MANA_DEVOTION_WIDGET_H #define MANA_DEVOTION_WIDGET_H -#include "../../../general/display/banner_widget.h" #include "../../abstract_analytics_panel_widget.h" #include "mana_devotion_config.h" -#include +#include +#include +#include +#include + +class DeckListStatisticsAnalyzer; +class QHBoxLayout; +class QWidget; class ManaDevotionWidget : public AbstractAnalyticsPanelWidget { diff --git a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_distribution/mana_distribution_config.cpp b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_distribution/mana_distribution_config.cpp index 01af9329c..ab321661e 100644 --- a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_distribution/mana_distribution_config.cpp +++ b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_distribution/mana_distribution_config.cpp @@ -1,5 +1,9 @@ #include "mana_distribution_config.h" +#include +#include +#include + QJsonObject ManaDistributionConfig::toJson() const { QJsonObject o; diff --git a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_distribution/mana_distribution_config.h b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_distribution/mana_distribution_config.h index d1aa0f48e..012b0f4a7 100644 --- a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_distribution/mana_distribution_config.h +++ b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_distribution/mana_distribution_config.h @@ -1,8 +1,8 @@ #ifndef COCKATRICE_MANA_DISTRIBUTION_CONFIG_H #define COCKATRICE_MANA_DISTRIBUTION_CONFIG_H -#include #include +#include #include #include diff --git a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_distribution/mana_distribution_config_dialog.cpp b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_distribution/mana_distribution_config_dialog.cpp index 325c70028..24b71bae0 100644 --- a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_distribution/mana_distribution_config_dialog.cpp +++ b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_distribution/mana_distribution_config_dialog.cpp @@ -1,12 +1,19 @@ #include "mana_distribution_config_dialog.h" +#include #include #include #include #include +#include #include +#include +#include +#include #include +class QWidget; + static const QStringList kColors = {"W", "U", "B", "R", "G", "C"}; ManaDistributionConfigDialog::ManaDistributionConfigDialog(DeckListStatisticsAnalyzer *analyzer, QWidget *parent) diff --git a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_distribution/mana_distribution_config_dialog.h b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_distribution/mana_distribution_config_dialog.h index 57c88e29d..3d21b6bee 100644 --- a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_distribution/mana_distribution_config_dialog.h +++ b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_distribution/mana_distribution_config_dialog.h @@ -4,14 +4,15 @@ #include "mana_distribution_config.h" #include -#include -#include -#include +#include class QComboBox; class QListWidget; class QCheckBox; class DeckListStatisticsAnalyzer; +class QDialogButtonBox; +class QLabel; +class QWidget; class ManaDistributionConfigDialog : public QDialog { diff --git a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_distribution/mana_distribution_single_display_widget.cpp b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_distribution/mana_distribution_single_display_widget.cpp index 8a5e14858..4faa105e6 100644 --- a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_distribution/mana_distribution_single_display_widget.cpp +++ b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_distribution/mana_distribution_single_display_widget.cpp @@ -2,7 +2,10 @@ #include "../../../cards/additional_info/mana_symbol_widget.h" +#include +#include #include +#include ManaDistributionSingleDisplayWidget::ManaDistributionSingleDisplayWidget(const QString &colorSymbol, QWidget *parent) : QWidget(parent) diff --git a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_distribution/mana_distribution_single_display_widget.h b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_distribution/mana_distribution_single_display_widget.h index e33d0cec1..2fd3efb2d 100644 --- a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_distribution/mana_distribution_single_display_widget.h +++ b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_distribution/mana_distribution_single_display_widget.h @@ -1,10 +1,12 @@ #ifndef COCKATRICE_MANA_DISTRIBUTION_SINGLE_DISPLAY_WIDGET_H #define COCKATRICE_MANA_DISTRIBUTION_SINGLE_DISPLAY_WIDGET_H -#include -#include -#include +#include #include +#include + +class QLabel; +class QProgressBar; class ManaDistributionSingleDisplayWidget : public QWidget { diff --git a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_distribution/mana_distribution_widget.cpp b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_distribution/mana_distribution_widget.cpp index 8eaea1426..5543c64df 100644 --- a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_distribution/mana_distribution_widget.cpp +++ b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_distribution/mana_distribution_widget.cpp @@ -1,12 +1,21 @@ #include "mana_distribution_widget.h" +#include "../../../general/display/charts/bars/color_bar.h" +#include "../../../general/display/charts/pies/color_pie.h" +#include "../../abstract_analytics_panel_widget.h" #include "../../analytics_panel_widget_registrar.h" +#include "../../deck_list_statistics_analyzer.h" #include "mana_distribution_config_dialog.h" +#include "mana_distribution_single_display_widget.h" -#include -#include -#include +#include +#include +#include +#include +#include +#include #include +#include namespace { diff --git a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_distribution/mana_distribution_widget.h b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_distribution/mana_distribution_widget.h index 2d834f3af..6230e0201 100644 --- a/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_distribution/mana_distribution_widget.h +++ b/cockatrice/src/interface/widgets/deck_analytics/analyzer_modules/mana_distribution/mana_distribution_widget.h @@ -1,17 +1,21 @@ #ifndef COCKATRICE_MANA_DISTRIBUTION_WIDGET_H #define COCKATRICE_MANA_DISTRIBUTION_WIDGET_H -#include "../../../general/display/charts/bars/color_bar.h" -#include "../../../general/display/charts/pies/color_pie.h" #include "../../abstract_analytics_panel_widget.h" -#include "../../deck_list_statistics_analyzer.h" #include "mana_distribution_config.h" -#include "mana_distribution_single_display_widget.h" -#include +#include #include -#include -#include +#include +#include + +class ColorBar; +class ColorPie; +class DeckListStatisticsAnalyzer; +class ManaDistributionSingleDisplayWidget; +class QHBoxLayout; +class QVBoxLayout; +class QWidget; class ManaDistributionWidget : public AbstractAnalyticsPanelWidget { diff --git a/cockatrice/src/interface/widgets/deck_analytics/deck_analytics_widget.cpp b/cockatrice/src/interface/widgets/deck_analytics/deck_analytics_widget.cpp index 76552ea2f..9f6257930 100644 --- a/cockatrice/src/interface/widgets/deck_analytics/deck_analytics_widget.cpp +++ b/cockatrice/src/interface/widgets/deck_analytics/deck_analytics_widget.cpp @@ -1,5 +1,6 @@ #include "deck_analytics_widget.h" +#include "../general/layout_containers/flow_widget.h" #include "abstract_analytics_panel_widget.h" #include "add_analytics_panel_dialog.h" #include "analytics_panel_widget_factory.h" @@ -9,13 +10,19 @@ #include "deck_list_statistics_analyzer.h" #include "resizable_panel.h" +#include +#include #include +#include #include #include +#include #include #include #include #include +#include +#include DeckAnalyticsWidget::DeckAnalyticsWidget(QWidget *parent, DeckListStatisticsAnalyzer *_statsAnalyzer) : QWidget(parent), statsAnalyzer(_statsAnalyzer) diff --git a/cockatrice/src/interface/widgets/deck_analytics/deck_analytics_widget.h b/cockatrice/src/interface/widgets/deck_analytics/deck_analytics_widget.h index 3c73deca2..f1e071ff6 100644 --- a/cockatrice/src/interface/widgets/deck_analytics/deck_analytics_widget.h +++ b/cockatrice/src/interface/widgets/deck_analytics/deck_analytics_widget.h @@ -7,19 +7,22 @@ #ifndef DECK_ANALYTICS_WIDGET_H #define DECK_ANALYTICS_WIDGET_H -#include "../general/layout_containers/flow_widget.h" -#include "abstract_analytics_panel_widget.h" -#include "deck_list_statistics_analyzer.h" -#include "resizable_panel.h" - -#include #include -#include -#include +#include +#include #include #include +#include class LayoutInspector; +class AbstractAnalyticsPanelWidget; +class DeckListStatisticsAnalyzer; +class FlowWidget; +class QCheckBox; +class QPushButton; +class QScrollArea; +class QVBoxLayout; +class ResizablePanel; class DeckAnalyticsWidget : public QWidget { diff --git a/cockatrice/src/interface/widgets/deck_analytics/deck_list_statistics_analyzer.cpp b/cockatrice/src/interface/widgets/deck_analytics/deck_list_statistics_analyzer.cpp index add13ff21..c2f70759e 100644 --- a/cockatrice/src/interface/widgets/deck_analytics/deck_list_statistics_analyzer.cpp +++ b/cockatrice/src/interface/widgets/deck_analytics/deck_list_statistics_analyzer.cpp @@ -1,11 +1,19 @@ #include "deck_list_statistics_analyzer.h" #include "deck_list_model.h" -#include "deck_list_statistics_analyzer.h" +#include "libcockatrice/card/card_info.h" +#include "libcockatrice/card/database/card_database_querier.h" +#include "libcockatrice/deck_list/tree/deck_list_card_node.h" +#include "libcockatrice/deck_list/tree/inner_deck_list_node.h" +#include #include +#include +#include +#include +#include #include -#include +#include DeckListStatisticsAnalyzer::DeckListStatisticsAnalyzer(QObject *parent, DeckListModel *_model, diff --git a/cockatrice/src/interface/widgets/deck_analytics/deck_list_statistics_analyzer.h b/cockatrice/src/interface/widgets/deck_analytics/deck_list_statistics_analyzer.h index 52ae751bf..c3643d65f 100644 --- a/cockatrice/src/interface/widgets/deck_analytics/deck_list_statistics_analyzer.h +++ b/cockatrice/src/interface/widgets/deck_analytics/deck_list_statistics_analyzer.h @@ -1,10 +1,12 @@ #ifndef COCKATRICE_DECK_LIST_STATISTICS_ANALYZER_H #define COCKATRICE_DECK_LIST_STATISTICS_ANALYZER_H -#include "deck_list_model.h" - #include +#include #include +#include +#include +#include #include class DeckListModel; diff --git a/cockatrice/src/interface/widgets/deck_analytics/resizable_panel.cpp b/cockatrice/src/interface/widgets/deck_analytics/resizable_panel.cpp index 250fe1ad3..f46679406 100644 --- a/cockatrice/src/interface/widgets/deck_analytics/resizable_panel.cpp +++ b/cockatrice/src/interface/widgets/deck_analytics/resizable_panel.cpp @@ -1,11 +1,34 @@ #include "resizable_panel.h" +#include "abstract_analytics_panel_widget.h" #include "libcockatrice/utility/qt_utils.h" +#include +#include #include +#include +#include +#include +#include +#include +#include +#include #include +#include +#include +#include #include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include +#include ResizablePanel::ResizablePanel(const QString &_typeId, AbstractAnalyticsPanelWidget *analyticsPanel, QWidget *parent) : QWidget(parent), panel(analyticsPanel), typeId(_typeId) diff --git a/cockatrice/src/interface/widgets/deck_analytics/resizable_panel.h b/cockatrice/src/interface/widgets/deck_analytics/resizable_panel.h index d958ec64d..809703847 100644 --- a/cockatrice/src/interface/widgets/deck_analytics/resizable_panel.h +++ b/cockatrice/src/interface/widgets/deck_analytics/resizable_panel.h @@ -1,19 +1,15 @@ #ifndef COCKATRICE_RESIZABLE_PANEL_H #define COCKATRICE_RESIZABLE_PANEL_H -#include "abstract_analytics_panel_widget.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include #include +#include + +class AbstractAnalyticsPanelWidget; +class QFrame; +class QPushButton; +class QTimer; class ResizablePanel : public QWidget { diff --git a/cockatrice/src/interface/widgets/deck_editor/card_database_view.cpp b/cockatrice/src/interface/widgets/deck_editor/card_database_view.cpp index 00388a3cd..e8f6398f7 100644 --- a/cockatrice/src/interface/widgets/deck_editor/card_database_view.cpp +++ b/cockatrice/src/interface/widgets/deck_editor/card_database_view.cpp @@ -1,17 +1,35 @@ #include "card_database_view.h" #include "../../../client/settings/cache_settings.h" +#include "../../key_signals.h" #include "card_database_display_model.h" #include "card_database_model.h" +#include "libcockatrice/card/card_info.h" +#include "libcockatrice/card/database/card_database_querier.h" +#include +#include #include +#include #include +#include #include +#include +#include #include +#include +#include +#include +#include +#include #include #include #include #include +#include +#include + +class QWidget; static bool canBeCommander(const CardInfo &cardInfo) { diff --git a/cockatrice/src/interface/widgets/deck_editor/card_database_view.h b/cockatrice/src/interface/widgets/deck_editor/card_database_view.h index 668444199..c095c544d 100644 --- a/cockatrice/src/interface/widgets/deck_editor/card_database_view.h +++ b/cockatrice/src/interface/widgets/deck_editor/card_database_view.h @@ -3,12 +3,19 @@ #include "../../key_signals.h" +#include +#include +#include #include #include #include +#include -class CardDatabaseModel; class CardDatabaseDisplayModel; +class QModelIndex; +class QPoint; +class QWidget; +template class QList; /** * @brief The card database table. diff --git a/cockatrice/src/interface/widgets/deck_editor/deck_editor_card_database_dock_widget.cpp b/cockatrice/src/interface/widgets/deck_editor/deck_editor_card_database_dock_widget.cpp index 6269f0323..57ae6eadd 100644 --- a/cockatrice/src/interface/widgets/deck_editor/deck_editor_card_database_dock_widget.cpp +++ b/cockatrice/src/interface/widgets/deck_editor/deck_editor_card_database_dock_widget.cpp @@ -2,10 +2,23 @@ #include "../../../interface/widgets/tabs/abstract_tab_deck_editor.h" #include "card_database_view.h" +#include "deck_editor_database_display_widget.h" +#include "deck_list_model.h" #include "deck_state_manager.h" #include "deck_zone_dialog.h" +#include "libcockatrice/card/printing/exact_card.h" +#include "libcockatrice/deck_list/tree/inner_deck_list_node.h" -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include DeckEditorCardDatabaseDockWidget::DeckEditorCardDatabaseDockWidget(AbstractTabDeckEditor *parent) : QDockWidget(parent) { diff --git a/cockatrice/src/interface/widgets/deck_editor/deck_editor_card_database_dock_widget.h b/cockatrice/src/interface/widgets/deck_editor/deck_editor_card_database_dock_widget.h index 6af2e4432..b73843bc7 100644 --- a/cockatrice/src/interface/widgets/deck_editor/deck_editor_card_database_dock_widget.h +++ b/cockatrice/src/interface/widgets/deck_editor/deck_editor_card_database_dock_widget.h @@ -1,12 +1,10 @@ #ifndef COCKATRICE_DECK_EDITOR_CARD_DATABASE_DOCK_WIDGET_H #define COCKATRICE_DECK_EDITOR_CARD_DATABASE_DOCK_WIDGET_H -#include "../../../interface/widgets/tabs/abstract_tab_deck_editor.h" - #include +#include class AbstractTabDeckEditor; -class CardDatabase; class DeckEditorDatabaseDisplayWidget; class FilterTree; diff --git a/cockatrice/src/interface/widgets/deck_editor/deck_editor_card_info_dock_widget.cpp b/cockatrice/src/interface/widgets/deck_editor/deck_editor_card_info_dock_widget.cpp index a78a9c9c5..1b920ea1d 100644 --- a/cockatrice/src/interface/widgets/deck_editor/deck_editor_card_info_dock_widget.cpp +++ b/cockatrice/src/interface/widgets/deck_editor/deck_editor_card_info_dock_widget.cpp @@ -1,8 +1,14 @@ #include "deck_editor_card_info_dock_widget.h" #include "../cards/card_info_frame_widget.h" +#include "../tabs/abstract_tab_deck_editor.h" +#include #include +#include +#include + +class ExactCard; DeckEditorCardInfoDockWidget::DeckEditorCardInfoDockWidget(AbstractTabDeckEditor *parent) : QDockWidget(parent), deckEditor(parent) diff --git a/cockatrice/src/interface/widgets/deck_editor/deck_editor_card_info_dock_widget.h b/cockatrice/src/interface/widgets/deck_editor/deck_editor_card_info_dock_widget.h index 086ca2ca4..2f204306d 100644 --- a/cockatrice/src/interface/widgets/deck_editor/deck_editor_card_info_dock_widget.h +++ b/cockatrice/src/interface/widgets/deck_editor/deck_editor_card_info_dock_widget.h @@ -8,12 +8,13 @@ #ifndef DECK_EDITOR_CARD_INFO_DOCK_WIDGET_H #define DECK_EDITOR_CARD_INFO_DOCK_WIDGET_H -#include "../../../interface/widgets/tabs/abstract_tab_deck_editor.h" -#include "../cards/card_info_frame_widget.h" - #include +#include class AbstractTabDeckEditor; +class CardInfoFrameWidget; +class ExactCard; + class DeckEditorCardInfoDockWidget : public QDockWidget { Q_OBJECT diff --git a/cockatrice/src/interface/widgets/deck_editor/deck_editor_database_display_widget.cpp b/cockatrice/src/interface/widgets/deck_editor/deck_editor_database_display_widget.cpp index a83e25f5f..7ed398535 100644 --- a/cockatrice/src/interface/widgets/deck_editor/deck_editor_database_display_widget.cpp +++ b/cockatrice/src/interface/widgets/deck_editor/deck_editor_database_display_widget.cpp @@ -2,19 +2,30 @@ #include "../../../client/settings/cache_settings.h" #include "../../../filters/syntax_help.h" -#include "../../../interface/widgets/tabs/abstract_tab_deck_editor.h" -#include "../../../interface/widgets/tabs/tab_supervisor.h" +#include "../../key_signals.h" #include "../../pixel_map_generator.h" +#include "../utility/custom_line_edit.h" +#include "card_database_display_model.h" +#include "card_database_model.h" #include "card_database_view.h" +#include "libcockatrice/card/database/card_database_querier.h" +#include "libcockatrice/card/printing/exact_card.h" +#include "libcockatrice/deck_list/tree/inner_deck_list_node.h" -#include -#include +#include +#include +#include +#include +#include #include -#include +#include #include #include -#include #include +#include +#include + +class FilterTree; DeckEditorDatabaseDisplayWidget::DeckEditorDatabaseDisplayWidget(QWidget *parent, CardDatabaseModel *databaseModel) : QWidget(parent) diff --git a/cockatrice/src/interface/widgets/deck_editor/deck_editor_database_display_widget.h b/cockatrice/src/interface/widgets/deck_editor/deck_editor_database_display_widget.h index 5de4d211d..e9edec125 100644 --- a/cockatrice/src/interface/widgets/deck_editor/deck_editor_database_display_widget.h +++ b/cockatrice/src/interface/widgets/deck_editor/deck_editor_database_display_widget.h @@ -8,16 +8,21 @@ #ifndef DECK_EDITOR_DATABASE_DISPLAY_WIDGET_H #define DECK_EDITOR_DATABASE_DISPLAY_WIDGET_H -#include "../../../interface/widgets/tabs/abstract_tab_deck_editor.h" -#include "../utility/custom_line_edit.h" +#include "libcockatrice/card/card_info.h" -#include +#include #include -#include -#include +#include class CardDatabaseView; -class AbstractTabDeckEditor; +class CardDatabaseDisplayModel; +class CardDatabaseModel; +class ExactCard; +class FilterTree; +class QAction; +class QHBoxLayout; +class QVBoxLayout; +class SearchLineEdit; class DeckEditorDatabaseDisplayWidget : public QWidget { diff --git a/cockatrice/src/interface/widgets/deck_editor/deck_editor_deck_dock_widget.cpp b/cockatrice/src/interface/widgets/deck_editor/deck_editor_deck_dock_widget.cpp index 4b141e255..37dd57459 100644 --- a/cockatrice/src/interface/widgets/deck_editor/deck_editor_deck_dock_widget.cpp +++ b/cockatrice/src/interface/widgets/deck_editor/deck_editor_deck_dock_widget.cpp @@ -2,28 +2,75 @@ #include "../../../client/settings/cache_settings.h" #include "../../../client/settings/shortcuts_settings.h" +#include "../../key_signals.h" #include "../../pixel_map_generator.h" #include "../playmat/playmat_settings_dialog.h" -#include "../settings_page/user_interface_settings_page.h" +#include "../quick_settings/settings_button_widget.h" +#include "../tabs/abstract_tab_deck_editor.h" #include "../tabs/api/commander_spellbook/commander_bracket_widget.h" +#include "../utility/custom_line_edit.h" +#include "../visual_deck_storage/deck_preview/deck_preview_deck_tags_display_widget.h" +#include "deck_list_history_manager_widget.h" +#include "deck_list_model.h" #include "deck_list_style_proxy.h" #include "deck_state_manager.h" #include "deck_zone_dialog.h" +#include "libcockatrice/card/card_info.h" +#include "libcockatrice/card/database/card_database.h" +#include "libcockatrice/card/database/card_database_loader.h" +#include "libcockatrice/card/database/card_database_querier.h" +#include "libcockatrice/card/printing/printing_info.h" +#include "libcockatrice/deck_list/deck_list.h" +#include "libcockatrice/deck_list/tree/abstract_deck_list_node.h" +#include "libcockatrice/deck_list/tree/inner_deck_list_node.h" +#include "libcockatrice/utility/card_ref.h" +#include "libcockatrice/utility/playmat_params.h" +#include +#include +#include +#include #include +#include +#include #include +#include +#include #include +#include #include +#include +#include +#include #include +#include +#include +#include #include +#include +#include +#include +#include #include +#include +#include #include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include -#include #include #include +#include +#include static int findRestoreIndex(const CardRef &wanted, const QComboBox *combo) { diff --git a/cockatrice/src/interface/widgets/deck_editor/deck_editor_deck_dock_widget.h b/cockatrice/src/interface/widgets/deck_editor/deck_editor_deck_dock_widget.h index 1e5f4e677..97ab8823e 100644 --- a/cockatrice/src/interface/widgets/deck_editor/deck_editor_deck_dock_widget.h +++ b/cockatrice/src/interface/widgets/deck_editor/deck_editor_deck_dock_widget.h @@ -8,27 +8,36 @@ #ifndef DECK_EDITOR_DECK_DOCK_WIDGET_H #define DECK_EDITOR_DECK_DOCK_WIDGET_H -#include "../../../interface/widgets/tabs/abstract_tab_deck_editor.h" #include "../../key_signals.h" -#include "../utility/custom_line_edit.h" -#include "../visual_deck_storage/deck_preview/deck_preview_deck_tags_display_widget.h" -#include "deck_list_history_manager_widget.h" -#include "deck_list_style_proxy.h" +#include "libcockatrice/card/printing/exact_card.h" -#include -#include #include -#include -#include -#include -#include +#include +#include #include -#include -#include +#include class CommanderBracketWidget; class DeckListModel; class AbstractTabDeckEditor; +class DeckListHistoryManagerWidget; +class DeckListStyleProxy; +class DeckPreviewDeckTagsDisplayWidget; +class DeckStateManager; +class LineEditUnfocusable; +class QAction; +class QCheckBox; +class QComboBox; +class QItemSelectionModel; +class QLabel; +class QMenu; +class QModelIndex; +class QPoint; +class QPushButton; +class QTextEdit; +class QTimer; +class SettingsButtonWidget; + class DeckEditorDeckDockWidget : public QDockWidget { Q_OBJECT diff --git a/cockatrice/src/interface/widgets/deck_editor/deck_editor_filter_dock_widget.cpp b/cockatrice/src/interface/widgets/deck_editor/deck_editor_filter_dock_widget.cpp index c6b6e4416..0a47333fa 100644 --- a/cockatrice/src/interface/widgets/deck_editor/deck_editor_filter_dock_widget.cpp +++ b/cockatrice/src/interface/widgets/deck_editor/deck_editor_filter_dock_widget.cpp @@ -4,11 +4,31 @@ #include "../../../client/settings/shortcuts_settings.h" #include "../../../filters/filter_builder.h" #include "../../../filters/filter_tree_model.h" +#include "../../key_signals.h" #include "../../pixel_map_generator.h" +#include "../tabs/abstract_tab_deck_editor.h" +#include "libcockatrice/filters/filter_card.h" +#include +#include +#include +#include #include +#include +#include #include +#include +#include +#include +#include +#include +#include #include +#include +#include +#include +#include +#include DeckEditorFilterDockWidget::DeckEditorFilterDockWidget(AbstractTabDeckEditor *parent) : QDockWidget(parent), deckEditor(parent) diff --git a/cockatrice/src/interface/widgets/deck_editor/deck_editor_filter_dock_widget.h b/cockatrice/src/interface/widgets/deck_editor/deck_editor_filter_dock_widget.h index b61fc72b5..7bb9c0045 100644 --- a/cockatrice/src/interface/widgets/deck_editor/deck_editor_filter_dock_widget.h +++ b/cockatrice/src/interface/widgets/deck_editor/deck_editor_filter_dock_widget.h @@ -8,13 +8,18 @@ #ifndef DECK_EDITOR_FILTER_DOCK_WIDGET_H #define DECK_EDITOR_FILTER_DOCK_WIDGET_H -#include "../../../interface/widgets/tabs/abstract_tab_deck_editor.h" #include "../../key_signals.h" #include +#include class FilterTreeModel; class AbstractTabDeckEditor; +class QAction; +class QPoint; +class QTreeView; +class QWidget; + class DeckEditorFilterDockWidget : public QDockWidget { Q_OBJECT diff --git a/cockatrice/src/interface/widgets/deck_editor/deck_editor_printing_selector_dock_widget.cpp b/cockatrice/src/interface/widgets/deck_editor/deck_editor_printing_selector_dock_widget.cpp index 06d8d1de7..d45e951ba 100644 --- a/cockatrice/src/interface/widgets/deck_editor/deck_editor_printing_selector_dock_widget.cpp +++ b/cockatrice/src/interface/widgets/deck_editor/deck_editor_printing_selector_dock_widget.cpp @@ -2,10 +2,15 @@ #include "../../../client/settings/cache_settings.h" #include "../../../interface/widgets/tabs/abstract_tab_deck_editor.h" +#include "../printing_selector/printing_selector.h" +#include "deck_editor_deck_dock_widget.h" #include "printing_disabled_info_widget.h" +#include #include +#include #include +#include DeckEditorPrintingSelectorDockWidget::DeckEditorPrintingSelectorDockWidget(AbstractTabDeckEditor *parent) : QDockWidget(parent), deckEditor(parent) diff --git a/cockatrice/src/interface/widgets/deck_editor/deck_editor_printing_selector_dock_widget.h b/cockatrice/src/interface/widgets/deck_editor/deck_editor_printing_selector_dock_widget.h index 1037b55fb..e20ae932d 100644 --- a/cockatrice/src/interface/widgets/deck_editor/deck_editor_printing_selector_dock_widget.h +++ b/cockatrice/src/interface/widgets/deck_editor/deck_editor_printing_selector_dock_widget.h @@ -7,13 +7,13 @@ #ifndef DECK_EDITOR_PRINTING_SELECTOR_DOCK_WIDGET_H #define DECK_EDITOR_PRINTING_SELECTOR_DOCK_WIDGET_H -#include "../../../interface/widgets/tabs/abstract_tab_deck_editor.h" -#include "../printing_selector/printing_selector.h" - #include +#include class PrintingDisabledInfoWidget; -class TabDeckEditor; +class AbstractTabDeckEditor; +class PrintingSelector; +class QWidget; class DeckEditorPrintingSelectorDockWidget : public QDockWidget { diff --git a/cockatrice/src/interface/widgets/deck_editor/deck_list_history_manager_widget.cpp b/cockatrice/src/interface/widgets/deck_editor/deck_list_history_manager_widget.cpp index c93f12b34..209dc7273 100644 --- a/cockatrice/src/interface/widgets/deck_editor/deck_list_history_manager_widget.cpp +++ b/cockatrice/src/interface/widgets/deck_editor/deck_list_history_manager_widget.cpp @@ -1,7 +1,28 @@ #include "deck_list_history_manager_widget.h" #include "../../pixel_map_generator.h" +#include "../quick_settings/settings_button_widget.h" #include "deck_state_manager.h" +#include "libcockatrice/deck_list/deck_list_history_manager.h" +#include "libcockatrice/deck_list/deck_list_memento.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +class DeckListStyleProxy; DeckListHistoryManagerWidget::DeckListHistoryManagerWidget(DeckStateManager *_deckStateManager, DeckListStyleProxy *_styleProxy, diff --git a/cockatrice/src/interface/widgets/deck_editor/deck_list_history_manager_widget.h b/cockatrice/src/interface/widgets/deck_editor/deck_list_history_manager_widget.h index ab53912e2..5ed44b0fd 100644 --- a/cockatrice/src/interface/widgets/deck_editor/deck_list_history_manager_widget.h +++ b/cockatrice/src/interface/widgets/deck_editor/deck_list_history_manager_widget.h @@ -1,18 +1,20 @@ #ifndef COCKATRICE_DECK_EDITOR_DECK_LIST_HISTORY_MANAGER_WIDGET_H #define COCKATRICE_DECK_EDITOR_DECK_LIST_HISTORY_MANAGER_WIDGET_H +#include + +class DeckListStyleProxy; +class QAction; +class QHBoxLayout; +class QLabel; +class QListWidget; +class QListWidgetItem; +class QToolButton; +class SettingsButtonWidget; #ifndef COCKATRICE_DECK_UNDO_WIDGET_H #define COCKATRICE_DECK_UNDO_WIDGET_H -#include "../quick_settings/settings_button_widget.h" -#include "deck_list_style_proxy.h" - -#include -#include -#include #include -#include -#include class DeckStateManager; diff --git a/cockatrice/src/interface/widgets/deck_editor/deck_list_style_proxy.cpp b/cockatrice/src/interface/widgets/deck_editor/deck_list_style_proxy.cpp index e41529b22..1e1aefe58 100644 --- a/cockatrice/src/interface/widgets/deck_editor/deck_list_style_proxy.cpp +++ b/cockatrice/src/interface/widgets/deck_editor/deck_list_style_proxy.cpp @@ -3,7 +3,10 @@ #include #include #include +#include +#include #include +#include QVariant DeckListStyleProxy::data(const QModelIndex &index, int role) const { diff --git a/cockatrice/src/interface/widgets/deck_editor/deck_list_style_proxy.h b/cockatrice/src/interface/widgets/deck_editor/deck_list_style_proxy.h index 52b7eea10..e4d1de4f4 100644 --- a/cockatrice/src/interface/widgets/deck_editor/deck_list_style_proxy.h +++ b/cockatrice/src/interface/widgets/deck_editor/deck_list_style_proxy.h @@ -2,6 +2,7 @@ #define COCKATRICE_DECK_LIST_STYLE_PROXY_H #include +#include class DeckListStyleProxy : public QIdentityProxyModel { diff --git a/cockatrice/src/interface/widgets/deck_editor/deck_state_manager.cpp b/cockatrice/src/interface/widgets/deck_editor/deck_state_manager.cpp index cfe989e9f..d4715c8d5 100644 --- a/cockatrice/src/interface/widgets/deck_editor/deck_state_manager.cpp +++ b/cockatrice/src/interface/widgets/deck_editor/deck_state_manager.cpp @@ -1,11 +1,28 @@ #include "deck_state_manager.h" #include "../../../client/settings/cache_settings.h" +#include "../../deck_loader/loaded_deck.h" +#include "deck_list_model.h" +#include "libcockatrice/card/card_info.h" +#include "libcockatrice/card/database/card_database_querier.h" +#include "libcockatrice/card/printing/exact_card.h" +#include "libcockatrice/card/printing/printing_info.h" +#include "libcockatrice/card/set/card_set.h" +#include "libcockatrice/deck_list/deck_list.h" +#include "libcockatrice/deck_list/deck_list_memento.h" +#include "libcockatrice/deck_list/deck_list_node_tree.h" +#include "libcockatrice/utility/card_ref.h" +#include "libcockatrice/utility/playmat_params.h" +#include +#include #include #include #include #include +#include + +class QModelIndex; DeckStateManager::DeckStateManager(QObject *parent) : QObject(parent), deckList(QSharedPointer(new DeckList)), diff --git a/cockatrice/src/interface/widgets/deck_editor/deck_state_manager.h b/cockatrice/src/interface/widgets/deck_editor/deck_state_manager.h index 2c8b34a39..98876947b 100644 --- a/cockatrice/src/interface/widgets/deck_editor/deck_state_manager.h +++ b/cockatrice/src/interface/widgets/deck_editor/deck_state_manager.h @@ -2,13 +2,22 @@ #define COCKATRICE_DECK_STATE_MANAGER_H #include "../../deck_loader/loaded_deck.h" -#include "deck_list_model.h" +#include +#include #include +#include +#include #include #include +#include class DeckListHistoryManager; +class DeckListModel; +class DecklistNodeTree; +class ExactCard; +struct CardRef; +struct PlaymatInfo; /** * @brief This class centralizes the management of the state of the deck in the deck editor tab. diff --git a/cockatrice/src/interface/widgets/deck_editor/deck_zone_dialog.cpp b/cockatrice/src/interface/widgets/deck_editor/deck_zone_dialog.cpp index 9a0be2570..cb9667603 100644 --- a/cockatrice/src/interface/widgets/deck_editor/deck_zone_dialog.cpp +++ b/cockatrice/src/interface/widgets/deck_editor/deck_zone_dialog.cpp @@ -2,10 +2,14 @@ #include #include +#include +#include #include #include +#include #include #include +#include #include #include diff --git a/cockatrice/src/interface/widgets/deck_editor/deck_zone_dialog.h b/cockatrice/src/interface/widgets/deck_editor/deck_zone_dialog.h index 6f55617a8..f4c9c0f9d 100644 --- a/cockatrice/src/interface/widgets/deck_editor/deck_zone_dialog.h +++ b/cockatrice/src/interface/widgets/deck_editor/deck_zone_dialog.h @@ -8,9 +8,9 @@ #define DECK_ZONE_DIALOG_H #include -#include #include #include +#include class QComboBox; class QDialogButtonBox; diff --git a/cockatrice/src/interface/widgets/deck_editor/printing_disabled_info_widget.cpp b/cockatrice/src/interface/widgets/deck_editor/printing_disabled_info_widget.cpp index 23670b1b3..b2c4dd303 100644 --- a/cockatrice/src/interface/widgets/deck_editor/printing_disabled_info_widget.cpp +++ b/cockatrice/src/interface/widgets/deck_editor/printing_disabled_info_widget.cpp @@ -3,10 +3,13 @@ #include "../dialogs/override_printing_warning.h" #include +#include #include #include +#include #include -#include +#include +#include PrintingDisabledInfoWidget::PrintingDisabledInfoWidget(QWidget *parent) : QWidget(parent) { diff --git a/cockatrice/src/interface/widgets/deck_editor/printing_disabled_info_widget.h b/cockatrice/src/interface/widgets/deck_editor/printing_disabled_info_widget.h index 0851ccfad..c14c758ff 100644 --- a/cockatrice/src/interface/widgets/deck_editor/printing_disabled_info_widget.h +++ b/cockatrice/src/interface/widgets/deck_editor/printing_disabled_info_widget.h @@ -1,6 +1,7 @@ #ifndef COCKATRICE_PRINTING_DISABLED_INFO_WIDGET_H #define COCKATRICE_PRINTING_DISABLED_INFO_WIDGET_H #include +#include class QPushButton; class QLabel; diff --git a/cockatrice/src/interface/widgets/deck_share/deck_share_utils.cpp b/cockatrice/src/interface/widgets/deck_share/deck_share_utils.cpp index 4343f0aab..0ebdc0647 100644 --- a/cockatrice/src/interface/widgets/deck_share/deck_share_utils.cpp +++ b/cockatrice/src/interface/widgets/deck_share/deck_share_utils.cpp @@ -3,9 +3,11 @@ #include #include #include +#include #include #include #include +#include #include #include #include diff --git a/cockatrice/src/interface/widgets/deck_share/share_bar_widget.h b/cockatrice/src/interface/widgets/deck_share/share_bar_widget.h index ede9fb41b..f97cc6788 100644 --- a/cockatrice/src/interface/widgets/deck_share/share_bar_widget.h +++ b/cockatrice/src/interface/widgets/deck_share/share_bar_widget.h @@ -7,7 +7,9 @@ #ifndef SHARE_BAR_WIDGET_H #define SHARE_BAR_WIDGET_H +#include #include +#include class QLabel; class QLineEdit; diff --git a/cockatrice/src/interface/widgets/deck_share/shared_deck_preview_widget.cpp b/cockatrice/src/interface/widgets/deck_share/shared_deck_preview_widget.cpp index 21ec80e08..3bb829089 100644 --- a/cockatrice/src/interface/widgets/deck_share/shared_deck_preview_widget.cpp +++ b/cockatrice/src/interface/widgets/deck_share/shared_deck_preview_widget.cpp @@ -2,14 +2,20 @@ #include "../cards/additional_info/color_identity_widget.h" #include "../cards/deck_preview_card_picture_widget.h" +#include "libcockatrice/card/printing/exact_card.h" +#include "libcockatrice/utility/card_ref.h" #include +#include #include #include #include #include +#include +#include #include #include +#include SharedDeckPreviewWidget::SharedDeckPreviewWidget(QWidget *parent, const CardDatabaseQuerier *querier, diff --git a/cockatrice/src/interface/widgets/deck_share/shared_deck_preview_widget.h b/cockatrice/src/interface/widgets/deck_share/shared_deck_preview_widget.h index bd4c4ee5f..bff7de743 100644 --- a/cockatrice/src/interface/widgets/deck_share/shared_deck_preview_widget.h +++ b/cockatrice/src/interface/widgets/deck_share/shared_deck_preview_widget.h @@ -7,15 +7,15 @@ #ifndef SHARED_DECK_PREVIEW_WIDGET_H #define SHARED_DECK_PREVIEW_WIDGET_H +#include #include +#include class ColorIdentityWidget; class DeckPreviewCardPictureWidget; class QCheckBox; class QFrame; -class QKeyEvent; class QLabel; -class QResizeEvent; class CardDatabaseQuerier; /** diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_connect.cpp b/cockatrice/src/interface/widgets/dialogs/dlg_connect.cpp index 700012d45..7a7e31a58 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_connect.cpp +++ b/cockatrice/src/interface/widgets/dialogs/dlg_connect.cpp @@ -2,19 +2,34 @@ #include "../../../client/settings/cache_settings.h" #include "../../pixel_map_generator.h" +#include "../server/handle_public_servers.h" +#include "../server/user/user_info_connection.h" +#include "libcockatrice/utility/macros.h" #include #include +#include #include #include #include -#include +#include +#include #include +#include #include #include #include +#include +#include +#include +#include +#include +#include #include #include +#include + +class QWidget; DlgConnect::DlgConnect(QWidget *parent) : QDialog(parent) { diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_connect.h b/cockatrice/src/interface/widgets/dialogs/dlg_connect.h index 083dad0ad..10cb5366a 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_connect.h +++ b/cockatrice/src/interface/widgets/dialogs/dlg_connect.h @@ -7,12 +7,13 @@ #ifndef DLG_CONNECT_H #define DLG_CONNECT_H -#include "../interface/widgets/server/handle_public_servers.h" -#include "../interface/widgets/server/user/user_info_connection.h" - #include #include +#include +#include #include +#include +#include class QCheckBox; class QComboBox; @@ -23,6 +24,9 @@ class QLabel; class QPushButton; class QRadioButton; class QVBoxLayout; +class HandlePublicServers; +class QWidget; +class UserConnection_Information; class DlgConnect : public QDialog { diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_convert_deck_to_cod_format.cpp b/cockatrice/src/interface/widgets/dialogs/dlg_convert_deck_to_cod_format.cpp index a4a31d78d..f2dd8c1e4 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_convert_deck_to_cod_format.cpp +++ b/cockatrice/src/interface/widgets/dialogs/dlg_convert_deck_to_cod_format.cpp @@ -1,7 +1,7 @@ #include "dlg_convert_deck_to_cod_format.h" #include "../../../client/settings/cache_settings.h" -#include "../../deck_loader/deck_loader.h" +#include "../../deck_loader/deck_file_format.h" #include #include @@ -10,6 +10,7 @@ #include #include #include +#include #include #include diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_convert_deck_to_cod_format.h b/cockatrice/src/interface/widgets/dialogs/dlg_convert_deck_to_cod_format.h index 526582135..de2fb9a63 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_convert_deck_to_cod_format.h +++ b/cockatrice/src/interface/widgets/dialogs/dlg_convert_deck_to_cod_format.h @@ -8,14 +8,17 @@ #ifndef DIALOG_CONVERT_DECK_TO_COD_FORMAT_H #define DIALOG_CONVERT_DECK_TO_COD_FORMAT_H -#include #include -#include -#include -#include +#include +#include #include +#include class QWidget; +class QCheckBox; +class QDialogButtonBox; +class QLabel; +class QVBoxLayout; class DialogConvertDeckToCodFormat : public QDialog { diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_create_game.cpp b/cockatrice/src/interface/widgets/dialogs/dlg_create_game.cpp index 59f3e033d..104b695e6 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_create_game.cpp +++ b/cockatrice/src/interface/widgets/dialogs/dlg_create_game.cpp @@ -2,23 +2,35 @@ #include "../../../client/settings/cache_settings.h" #include "../interface/widgets/tabs/tab_room.h" +#include "libcockatrice/protocol/pb/response.pb.h" +#include "libcockatrice/protocol/pb/room_commands.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_user.pb.h" +#include "libcockatrice/utility/macros.h" -#include #include +#include #include #include #include #include #include +#include #include #include #include #include +#include +#include #include +#include #include #include #include #include +#include +#include + +class QWidget; void DlgCreateGame::sharedCtor() { diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_create_game.h b/cockatrice/src/interface/widgets/dialogs/dlg_create_game.h index 61925286d..71b09997c 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_create_game.h +++ b/cockatrice/src/interface/widgets/dialogs/dlg_create_game.h @@ -9,7 +9,9 @@ #include #include +#include #include +#include class QCheckBox; class QDialogButtonBox; @@ -22,6 +24,7 @@ class QSpinBox; class Response; class ServerInfo_Game; class TabRoom; +class QWidget; class DlgCreateGame : public QDialog { diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_default_tags_editor.cpp b/cockatrice/src/interface/widgets/dialogs/dlg_default_tags_editor.cpp index e9c73b025..9eb064beb 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_default_tags_editor.cpp +++ b/cockatrice/src/interface/widgets/dialogs/dlg_default_tags_editor.cpp @@ -2,9 +2,20 @@ #include "../../../client/settings/cache_settings.h" +#include +#include +#include +#include +#include +#include #include #include +#include +#include +#include +#include #include +#include #include DlgDefaultTagsEditor::DlgDefaultTagsEditor(QWidget *parent) : QDialog(parent) diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_default_tags_editor.h b/cockatrice/src/interface/widgets/dialogs/dlg_default_tags_editor.h index e584d0731..081701485 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_default_tags_editor.h +++ b/cockatrice/src/interface/widgets/dialogs/dlg_default_tags_editor.h @@ -9,9 +9,15 @@ #define DLG_DEFAULT_TAGS_EDITOR_H #include -#include -#include -#include +#include + +class QHBoxLayout; +class QLineEdit; +class QListWidget; +class QListWidgetItem; +class QPushButton; +class QVBoxLayout; +class QWidget; class DlgDefaultTagsEditor : public QDialog { diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_edit_avatar.cpp b/cockatrice/src/interface/widgets/dialogs/dlg_edit_avatar.cpp index 120e20f3e..520ece007 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_edit_avatar.cpp +++ b/cockatrice/src/interface/widgets/dialogs/dlg_edit_avatar.cpp @@ -3,12 +3,22 @@ #include #include #include +#include #include +#include +#include #include #include +#include +#include #include +#include +#include #include #include +#include + +class QWidget; DlgEditAvatar::DlgEditAvatar(QWidget *parent) : QDialog(parent), image() { diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_edit_avatar.h b/cockatrice/src/interface/widgets/dialogs/dlg_edit_avatar.h index 9ac774b24..4df45711c 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_edit_avatar.h +++ b/cockatrice/src/interface/widgets/dialogs/dlg_edit_avatar.h @@ -7,16 +7,18 @@ #ifndef DLG_EDITAVATAR_H #define DLG_EDITAVATAR_H -#include +#include #include -#include +#include #include +#include + +class QWidget; inline Q_LOGGING_CATEGORY(DlgEditAvatarLog, "dlg_edit_avatar"); class QLabel; class QPushButton; -class QCheckBox; class DlgEditAvatar : public QDialog { diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_edit_password.cpp b/cockatrice/src/interface/widgets/dialogs/dlg_edit_password.cpp index 4310c03fc..59f80c79c 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_edit_password.cpp +++ b/cockatrice/src/interface/widgets/dialogs/dlg_edit_password.cpp @@ -4,12 +4,17 @@ #include #include -#include #include #include +#include +#include +#include #include #include +class QVBoxLayout; +class QWidget; + DlgEditPassword::DlgEditPassword(QWidget *parent) : QDialog(parent) { oldPasswordLabel = new QLabel(tr("Old password:")); diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_edit_password.h b/cockatrice/src/interface/widgets/dialogs/dlg_edit_password.h index 85c72233d..e80ede3f3 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_edit_password.h +++ b/cockatrice/src/interface/widgets/dialogs/dlg_edit_password.h @@ -9,10 +9,11 @@ #include #include +#include +#include class QLabel; -class QPushButton; -class QCheckBox; +class QWidget; class DlgEditPassword : public QDialog { diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_edit_tokens.cpp b/cockatrice/src/interface/widgets/dialogs/dlg_edit_tokens.cpp index a56aa8e35..cbf61a394 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_edit_tokens.cpp +++ b/cockatrice/src/interface/widgets/dialogs/dlg_edit_tokens.cpp @@ -2,25 +2,41 @@ #include "../../pixel_map_generator.h" #include "../interface/widgets/utility/get_text_with_max.h" +#include "card_database_display_model.h" +#include "libcockatrice/card/card_info.h" +#include "libcockatrice/card/database/card_database_querier.h" +#include "libcockatrice/card/printing/printing_info.h" +#include "libcockatrice/card/set/card_set.h" #include +#include #include #include #include #include #include +#include #include -#include +#include #include #include #include +#include +#include +#include #include #include +#include +#include +#include #include #include #include #include #include +#include + +class QWidget; DlgEditTokens::DlgEditTokens(QWidget *parent) : QDialog(parent), currentCard(nullptr) { diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_edit_tokens.h b/cockatrice/src/interface/widgets/dialogs/dlg_edit_tokens.h index 202212e98..cde89d22b 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_edit_tokens.h +++ b/cockatrice/src/interface/widgets/dialogs/dlg_edit_tokens.h @@ -8,7 +8,11 @@ #define DLG_EDIT_TOKENS_H #include +#include +#include +#include #include +#include class QModelIndex; class CardDatabaseModel; @@ -17,6 +21,7 @@ class QLabel; class QComboBox; class QLineEdit; class QTreeView; +class QWidget; class DlgEditTokens : public QDialog { diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_edit_user.cpp b/cockatrice/src/interface/widgets/dialogs/dlg_edit_user.cpp index 85b95f335..ffe8391a0 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_edit_user.cpp +++ b/cockatrice/src/interface/widgets/dialogs/dlg_edit_user.cpp @@ -4,10 +4,18 @@ #include #include -#include #include +#include +#include +#include +#include +#include +#include #include +class QVBoxLayout; +class QWidget; + DlgEditUser::DlgEditUser(QWidget *parent, QString email, QString country, QString realName) : QDialog(parent) { emailLabel = new QLabel(tr("Email:")); diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_edit_user.h b/cockatrice/src/interface/widgets/dialogs/dlg_edit_user.h index 35a8bfb46..0385c2bbe 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_edit_user.h +++ b/cockatrice/src/interface/widgets/dialogs/dlg_edit_user.h @@ -10,10 +10,11 @@ #include #include #include +#include +#include class QLabel; -class QPushButton; -class QCheckBox; +class QWidget; class DlgEditUser : public QDialog { diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_filter_games.cpp b/cockatrice/src/interface/widgets/dialogs/dlg_filter_games.cpp index 7e174a228..cd3c3893e 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_filter_games.cpp +++ b/cockatrice/src/interface/widgets/dialogs/dlg_filter_games.cpp @@ -1,15 +1,25 @@ #include "dlg_filter_games.h" +#include "../server/games_model.h" + #include #include -#include #include #include #include +#include #include #include -#include +#include +#include +#include +#include #include +#include +#include +#include + +class QWidget; DlgFilterGames::DlgFilterGames(const QMap &_allGameTypes, const GamesProxyModel *_gamesProxyModel, diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_filter_games.h b/cockatrice/src/interface/widgets/dialogs/dlg_filter_games.h index 1cf822b89..d7c11d0f1 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_filter_games.h +++ b/cockatrice/src/interface/widgets/dialogs/dlg_filter_games.h @@ -7,20 +7,23 @@ #ifndef DLG_FILTER_GAMES_H #define DLG_FILTER_GAMES_H -#include "../interface/widgets/server/games_model.h" +#include "../server/game_filter_configs.h" -#include -#include #include #include #include +#include +#include #include +#include class QCheckBox; class QComboBox; class QGroupBox; class QLineEdit; class QSpinBox; +class GamesProxyModel; +class QWidget; class DlgFilterGames : public QDialog { diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_forgot_password_challenge.cpp b/cockatrice/src/interface/widgets/dialogs/dlg_forgot_password_challenge.cpp index c21955373..3ee74faab 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_forgot_password_challenge.cpp +++ b/cockatrice/src/interface/widgets/dialogs/dlg_forgot_password_challenge.cpp @@ -4,12 +4,16 @@ #include #include -#include +#include #include #include +#include +#include #include #include +class QWidget; + DlgForgotPasswordChallenge::DlgForgotPasswordChallenge(QWidget *parent) : QDialog(parent) { QString lastfphost; diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_forgot_password_challenge.h b/cockatrice/src/interface/widgets/dialogs/dlg_forgot_password_challenge.h index d32e2fc3e..f5678af17 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_forgot_password_challenge.h +++ b/cockatrice/src/interface/widgets/dialogs/dlg_forgot_password_challenge.h @@ -7,13 +7,13 @@ #ifndef DLG_FORGOTPASSWORDCHALLENGE_H #define DLG_FORGOTPASSWORDCHALLENGE_H -#include #include #include +#include +#include class QLabel; -class QPushButton; -class QCheckBox; +class QWidget; class DlgForgotPasswordChallenge : public QDialog { diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_forgot_password_request.cpp b/cockatrice/src/interface/widgets/dialogs/dlg_forgot_password_request.cpp index 4ee0c9c88..0cb1773b6 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_forgot_password_request.cpp +++ b/cockatrice/src/interface/widgets/dialogs/dlg_forgot_password_request.cpp @@ -4,12 +4,16 @@ #include #include -#include +#include #include #include +#include +#include #include #include +class QWidget; + DlgForgotPasswordRequest::DlgForgotPasswordRequest(QWidget *parent) : QDialog(parent) { QString lastfphost; diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_forgot_password_request.h b/cockatrice/src/interface/widgets/dialogs/dlg_forgot_password_request.h index 2cf352e0d..ff255c748 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_forgot_password_request.h +++ b/cockatrice/src/interface/widgets/dialogs/dlg_forgot_password_request.h @@ -7,13 +7,13 @@ #ifndef DLG_FORGOTPASSWORDREQUEST_H #define DLG_FORGOTPASSWORDREQUEST_H -#include #include #include +#include +#include class QLabel; -class QPushButton; -class QCheckBox; +class QWidget; class DlgForgotPasswordRequest : public QDialog { diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_forgot_password_reset.cpp b/cockatrice/src/interface/widgets/dialogs/dlg_forgot_password_reset.cpp index 2800d5c0c..6c1b95b43 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_forgot_password_reset.cpp +++ b/cockatrice/src/interface/widgets/dialogs/dlg_forgot_password_reset.cpp @@ -4,12 +4,18 @@ #include #include -#include +#include #include #include +#include +#include +#include #include #include +class QVBoxLayout; +class QWidget; + DlgForgotPasswordReset::DlgForgotPasswordReset(QWidget *parent) : QDialog(parent) { QString lastfphost; diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_forgot_password_reset.h b/cockatrice/src/interface/widgets/dialogs/dlg_forgot_password_reset.h index 8a443b906..995d67359 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_forgot_password_reset.h +++ b/cockatrice/src/interface/widgets/dialogs/dlg_forgot_password_reset.h @@ -7,13 +7,13 @@ #ifndef DLG_FORGOTPASSWORDRESET_H #define DLG_FORGOTPASSWORDRESET_H -#include #include #include +#include +#include class QLabel; -class QPushButton; -class QCheckBox; +class QWidget; class DlgForgotPasswordReset : public QDialog { diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_invite_to_game.cpp b/cockatrice/src/interface/widgets/dialogs/dlg_invite_to_game.cpp index b5451bb2c..cf503856f 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_invite_to_game.cpp +++ b/cockatrice/src/interface/widgets/dialogs/dlg_invite_to_game.cpp @@ -6,13 +6,18 @@ #include #include -#include #include #include +#include #include +#include #include #include #include +#include +#include + +class QWidget; DlgInviteToGame::DlgInviteToGame(TabSupervisor *_tabSupervisor, const QString &_inviteUrl, diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_invite_to_game.h b/cockatrice/src/interface/widgets/dialogs/dlg_invite_to_game.h index bbb589bdb..cfcc48733 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_invite_to_game.h +++ b/cockatrice/src/interface/widgets/dialogs/dlg_invite_to_game.h @@ -8,12 +8,16 @@ #define DLG_INVITE_TO_GAME_H #include +#include +#include #include +#include class QLineEdit; class QPushButton; class TabSupervisor; class UserListWidget; +class QWidget; class DlgInviteToGame : public QDialog { diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_load_deck.cpp b/cockatrice/src/interface/widgets/dialogs/dlg_load_deck.cpp index 626ebed50..cbf24db87 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_load_deck.cpp +++ b/cockatrice/src/interface/widgets/dialogs/dlg_load_deck.cpp @@ -3,8 +3,13 @@ #include "../../../client/settings/cache_settings.h" #include "../../deck_loader/deck_loader.h" +#include +#include #include #include + +class QWidget; + DlgLoadDeck::DlgLoadDeck(QWidget *parent) : QFileDialog(parent, tr("Load Deck")) { QString startingDir = SettingsCache::instance().recents().getLatestDeckDirPath(); diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_load_deck.h b/cockatrice/src/interface/widgets/dialogs/dlg_load_deck.h index 27d658902..5ba07c01d 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_load_deck.h +++ b/cockatrice/src/interface/widgets/dialogs/dlg_load_deck.h @@ -9,6 +9,9 @@ #define DLG_LOAD_DECK_H #include +#include + +class QWidget; /** * The file dialog for "Load Deck" operations. diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_load_deck_from_clipboard.cpp b/cockatrice/src/interface/widgets/dialogs/dlg_load_deck_from_clipboard.cpp index a3242c797..2c0fd3f6f 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_load_deck_from_clipboard.cpp +++ b/cockatrice/src/interface/widgets/dialogs/dlg_load_deck_from_clipboard.cpp @@ -9,12 +9,19 @@ #include #include #include +#include +#include +#include #include #include #include #include #include +#include #include +#include + +class QWidget; /** * Creates the main layout and connects the signals that are common to all versions of this window diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_load_deck_from_clipboard.h b/cockatrice/src/interface/widgets/dialogs/dlg_load_deck_from_clipboard.h index dce9d712c..f3cbb7b62 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_load_deck_from_clipboard.h +++ b/cockatrice/src/interface/widgets/dialogs/dlg_load_deck_from_clipboard.h @@ -8,13 +8,16 @@ #ifndef DLG_LOAD_DECK_FROM_CLIPBOARD_H #define DLG_LOAD_DECK_FROM_CLIPBOARD_H -#include "../../deck_loader/loaded_deck.h" +#include "libcockatrice/deck_list/deck_list.h" -#include #include +#include +#include class QPlainTextEdit; class QPushButton; +class QCheckBox; +class QWidget; /** * Base class for dialog windows for actions that involve loading decks from text input. diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_load_deck_from_website.cpp b/cockatrice/src/interface/widgets/dialogs/dlg_load_deck_from_website.cpp index ba00873d9..88b7e2bb3 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_load_deck_from_website.cpp +++ b/cockatrice/src/interface/widgets/dialogs/dlg_load_deck_from_website.cpp @@ -1,16 +1,37 @@ #include "dlg_load_deck_from_website.h" +#include "../../deck_loader/card_node_function.h" +#include "parsers/deck_link_to_api_transformer.h" +#include "parsers/interface_json_deck_parser.h" + #include +#include #include +#include #include #include #include #include +#include +#include +#include #include +#include +#include +#include #include +#include +#include +#include +#include +#include +#include #include +#include #include +class QWidget; + DlgLoadDeckFromWebsite::DlgLoadDeckFromWebsite(QWidget *parent) : QDialog(parent) { nam = new QNetworkAccessManager(this); diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_load_deck_from_website.h b/cockatrice/src/interface/widgets/dialogs/dlg_load_deck_from_website.h index 2890148b9..3f6e759f2 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_load_deck_from_website.h +++ b/cockatrice/src/interface/widgets/dialogs/dlg_load_deck_from_website.h @@ -8,15 +8,21 @@ #ifndef DLG_LOAD_DECK_FROM_WEBSITE_H #define DLG_LOAD_DECK_FROM_WEBSITE_H -#include "../client/network/parsers/deck_link_to_api_transformer.h" #include "../client/network/parsers/interface_json_deck_parser.h" +#include "libcockatrice/deck_list/deck_list.h" #include -#include -#include #include -#include -#include +#include +#include + +class QLabel; +class QLineEdit; +class QNetworkAccessManager; +class QVBoxLayout; +class QWidget; +enum class DeckProvider; +template class QSharedPointer; inline Q_LOGGING_CATEGORY(DlgLoadDeckFromWebsiteLog, "dlg_load_deck_from_website"); diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_load_remote_deck.cpp b/cockatrice/src/interface/widgets/dialogs/dlg_load_remote_deck.cpp index ffe08bec9..a56009fe4 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_load_remote_deck.cpp +++ b/cockatrice/src/interface/widgets/dialogs/dlg_load_remote_deck.cpp @@ -3,9 +3,13 @@ #include "../interface/widgets/server/remote/remote_decklist_tree_widget.h" #include +#include #include +#include #include +class QWidget; + DlgLoadRemoteDeck::DlgLoadRemoteDeck(AbstractClient *_client, QWidget *parent) : QDialog(parent), client(_client) { dirView = new RemoteDeckList_TreeWidget(client); diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_load_remote_deck.h b/cockatrice/src/interface/widgets/dialogs/dlg_load_remote_deck.h index 9c81e9ae3..cfec16d90 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_load_remote_deck.h +++ b/cockatrice/src/interface/widgets/dialogs/dlg_load_remote_deck.h @@ -9,12 +9,13 @@ #define DLG_STARTGAME_H #include +#include class RemoteDeckList_TreeWidget; class QModelIndex; class AbstractClient; -class QPushButton; class QDialogButtonBox; +class QWidget; class DlgLoadRemoteDeck : public QDialog { diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_local_game_options.cpp b/cockatrice/src/interface/widgets/dialogs/dlg_local_game_options.cpp index eca0ec658..858deb751 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_local_game_options.cpp +++ b/cockatrice/src/interface/widgets/dialogs/dlg_local_game_options.cpp @@ -7,10 +7,13 @@ #include #include #include +#include #include #include #include +class QWidget; + DlgLocalGameOptions::DlgLocalGameOptions(QWidget *parent) : QDialog(parent) { numberPlayersLabel = new QLabel(tr("Players:"), this); diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_local_game_options.h b/cockatrice/src/interface/widgets/dialogs/dlg_local_game_options.h index 4307581a4..0725a08db 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_local_game_options.h +++ b/cockatrice/src/interface/widgets/dialogs/dlg_local_game_options.h @@ -11,6 +11,9 @@ #define DLG_LOCAL_GAME_OPTIONS_H #include +#include + +class QWidget; struct LocalGameOptions { diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_login_prompt.cpp b/cockatrice/src/interface/widgets/dialogs/dlg_login_prompt.cpp index 86647ef26..0a18a759f 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_login_prompt.cpp +++ b/cockatrice/src/interface/widgets/dialogs/dlg_login_prompt.cpp @@ -7,6 +7,8 @@ #include #include +class QWidget; + DlgLoginPrompt::DlgLoginPrompt(const QString &serverText, QWidget *parent) : QDialog(parent) { setWindowTitle(tr("Sign in")); diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_login_prompt.h b/cockatrice/src/interface/widgets/dialogs/dlg_login_prompt.h index e47924058..47bf3bcf4 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_login_prompt.h +++ b/cockatrice/src/interface/widgets/dialogs/dlg_login_prompt.h @@ -8,9 +8,12 @@ #define DLG_LOGIN_PROMPT_H #include +#include +#include class QCheckBox; class QLineEdit; +class QWidget; /** * @brief Small sign-in dialog used when a cockatrice:// link needs credentials diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_manage_sets.cpp b/cockatrice/src/interface/widgets/dialogs/dlg_manage_sets.cpp index 556c270be..b3da6d19c 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_manage_sets.cpp +++ b/cockatrice/src/interface/widgets/dialogs/dlg_manage_sets.cpp @@ -4,21 +4,42 @@ #include "../../pixel_map_generator.h" #include "../interface/card_picture_loader/card_picture_loader.h" #include "../interface/widgets/utility/custom_line_edit.h" +#include "libcockatrice/card/database/card_database.h" +#include +#include +#include #include +#include #include +#include #include #include #include #include #include +#include #include +#include #include +#include +#include +#include #include +#include +#include +#include +#include +#include +#include #include #include +#include #include +#include #include +#include +#include #include #include #include diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_manage_sets.h b/cockatrice/src/interface/widgets/dialogs/dlg_manage_sets.h index 2ed5eca0f..d08412c51 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_manage_sets.h +++ b/cockatrice/src/interface/widgets/dialogs/dlg_manage_sets.h @@ -7,12 +7,11 @@ #ifndef DLG_MANAGE_SETS_H #define DLG_MANAGE_SETS_H -#include -#include -#include #include +#include +#include +#include -class CardDatabase; class LineEditUnfocusable; class QGroupBox; class QItemSelection; @@ -20,7 +19,14 @@ class QPushButton; class QTreeView; class SetsDisplayModel; class SetsModel; -class SetsProxyModel; +class QAction; +class QDialogButtonBox; +class QGridLayout; +class QHBoxLayout; +class QLabel; +class QToolBar; +class QWidget; +template class QSet; class WndSets : public QMainWindow { diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_my_reports.cpp b/cockatrice/src/interface/widgets/dialogs/dlg_my_reports.cpp index 1af83bfb5..52c9eaef0 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_my_reports.cpp +++ b/cockatrice/src/interface/widgets/dialogs/dlg_my_reports.cpp @@ -2,7 +2,11 @@ #include "../utility/report_utils.h" #include "abstract_client.h" +#include "libcockatrice/protocol/pb/response.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_report.pb.h" +#include +#include #include #include #include @@ -10,16 +14,22 @@ #include #include #include -#include +#include #include +#include #include #include +#include #include #include #include #include #include #include +#include +#include + +class QWidget; namespace { diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_my_reports.h b/cockatrice/src/interface/widgets/dialogs/dlg_my_reports.h index 09b1963dd..dc9f90d2d 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_my_reports.h +++ b/cockatrice/src/interface/widgets/dialogs/dlg_my_reports.h @@ -3,8 +3,9 @@ #include #include -#include +#include #include +#include class AbstractClient; class QTableWidget; @@ -12,6 +13,8 @@ class QTextEdit; class QLineEdit; class QPushButton; class QLabel; +class QWidget; +class Response; class DlgMyReports : public QDialog { diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_register.cpp b/cockatrice/src/interface/widgets/dialogs/dlg_register.cpp index 6d022861c..9e32e87d1 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_register.cpp +++ b/cockatrice/src/interface/widgets/dialogs/dlg_register.cpp @@ -10,14 +10,23 @@ #include #include #include +#include #include +#include #include +#include #include #include +#include +#include +#include #include +#include #include #include +class QWidget; + DlgRegister::DlgRegister(QWidget *parent) : QDialog(parent) { // ── Server picker ────────────────────────────────────────────────── diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_register.h b/cockatrice/src/interface/widgets/dialogs/dlg_register.h index ce14eb427..10ea98543 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_register.h +++ b/cockatrice/src/interface/widgets/dialogs/dlg_register.h @@ -5,12 +5,16 @@ #include #include #include +#include +#include +#include class HandlePublicServers; class QLabel; class QPushButton; class QRadioButton; class UserConnection_Information; +class QWidget; class DlgRegister : public QDialog { diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_report_user.cpp b/cockatrice/src/interface/widgets/dialogs/dlg_report_user.cpp index 7b855af96..b1ae479fe 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_report_user.cpp +++ b/cockatrice/src/interface/widgets/dialogs/dlg_report_user.cpp @@ -1,21 +1,31 @@ #include "dlg_report_user.h" #include "abstract_client.h" +#include "libcockatrice/protocol/pb/response.pb.h" #include #include +#include #include #include #include #include +#include #include +#include #include #include +#include #include #include +#include #include #include #include +#include +#include + +class QWidget; DlgReportUser::DlgReportUser(AbstractClient *_client, const QString &_reportedUser, diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_report_user.h b/cockatrice/src/interface/widgets/dialogs/dlg_report_user.h index f8d5938ce..c7fce055d 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_report_user.h +++ b/cockatrice/src/interface/widgets/dialogs/dlg_report_user.h @@ -2,7 +2,8 @@ #define COCKATRICE_DLG_REPORT_USER_H #include -#include +#include +#include class AbstractClient; class QComboBox; @@ -10,6 +11,8 @@ class QDialogButtonBox; class QLineEdit; class QTextEdit; class QLabel; +class QWidget; +class Response; class DlgReportUser : public QDialog { diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_select_set_for_cards.cpp b/cockatrice/src/interface/widgets/dialogs/dlg_select_set_for_cards.cpp index 8eed083e1..55c6569f7 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_select_set_for_cards.cpp +++ b/cockatrice/src/interface/widgets/dialogs/dlg_select_set_for_cards.cpp @@ -1,26 +1,59 @@ #include "dlg_select_set_for_cards.h" #include "../../deck_loader/card_node_function.h" -#include "../../deck_loader/deck_loader.h" #include "../deck_editor/deck_state_manager.h" #include "../interface/widgets/cards/card_info_picture_widget.h" #include "../interface/widgets/general/layout_containers/flow_widget.h" +#include "deck_list_model.h" +#include "libcockatrice/card/card_info.h" +#include "libcockatrice/card/database/card_database.h" +#include "libcockatrice/card/database/card_database_querier.h" +#include "libcockatrice/card/printing/exact_card.h" +#include "libcockatrice/card/printing/printing_info.h" +#include "libcockatrice/card/set/card_set.h" +#include "libcockatrice/deck_list/tree/inner_deck_list_node.h" +#include +#include #include +#include #include +#include +#include +#include +#include +#include +#include #include -#include +#include #include +#include +#include +#include #include +#include +#include +#include +#include #include +#include +#include #include +#include +#include +#include #include #include #include +#include +#include #include +#include #include -#include -#include +#include +#include +#include +#include DlgSelectSetForCards::DlgSelectSetForCards(QWidget *parent, DeckStateManager *deckStateManger) : QDialog(parent), deckStateManager(deckStateManger) diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_select_set_for_cards.h b/cockatrice/src/interface/widgets/dialogs/dlg_select_set_for_cards.h index 4528552d0..89cc43662 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_select_set_for_cards.h +++ b/cockatrice/src/interface/widgets/dialogs/dlg_select_set_for_cards.h @@ -7,19 +7,23 @@ #ifndef DLG_SELECT_SET_FOR_CARDS_H #define DLG_SELECT_SET_FOR_CARDS_H -#include "../interface/widgets/general/layout_containers/flow_widget.h" - -#include #include -#include -#include +#include #include -#include -#include -#include +#include +#include +#include +#include class DeckStateManager; class SetEntryWidget; // Forward declaration +class FlowWidget; +class QCheckBox; +class QLabel; +class QListWidget; +class QPushButton; +class QScrollArea; +class QVBoxLayout; class DlgSelectSetForCards : public QDialog { diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_settings.cpp b/cockatrice/src/interface/widgets/dialogs/dlg_settings.cpp index 581920dbc..d41c948eb 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_settings.cpp +++ b/cockatrice/src/interface/widgets/dialogs/dlg_settings.cpp @@ -8,6 +8,7 @@ #include "../../../client/settings/cache_settings.h" #include "../../pixel_map_generator.h" #include "../main.h" +#include "../settings_page/abstract_settings_page.h" #include "../settings_page/appearance_settings_page.h" #include "../settings_page/deck_editor_settings_page.h" #include "../settings_page/general_settings_page.h" @@ -18,33 +19,59 @@ #include "../settings_page/sound_settings_page.h" #include "../settings_page/storage_settings_page.h" #include "../settings_page/user_interface_settings_page.h" +#include "libcockatrice/card/database/card_database.h" #include "libcockatrice/card/database/card_database_loader.h" #include "libcockatrice/card/database/card_database_manager.h" +#include #include +#include +#include +#include #include +#include +#include #include +#include +#include +#include #include #include #include #include +#include #include +#include #include #include #include +#include +#include +#include +#include +#include #include #include +#include #include #include #include #include #include +#include +#include #include #include +#include #include #include +#include +#include #include #include +#include + +class QModelIndex; /** * @brief Wraps a widget in a scroll area for long settings pages diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_settings.h b/cockatrice/src/interface/widgets/dialogs/dlg_settings.h index 845c0b4d6..1f15e76d5 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_settings.h +++ b/cockatrice/src/interface/widgets/dialogs/dlg_settings.h @@ -7,9 +7,15 @@ #define DLG_SETTINGS_H #include +#include #include +#include +#include +#include class QPushButton; +class QModelIndex; +class QWidget; inline Q_LOGGING_CATEGORY(DlgSettingsLog, "dlg_settings"); @@ -17,7 +23,6 @@ class QStackedWidget; class QToolButton; class QListView; class QLineEdit; - class AbstractSettingsPage; class SettingsSearchModel; class SettingsSearchDelegate; diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_share_deck.cpp b/cockatrice/src/interface/widgets/dialogs/dlg_share_deck.cpp index 897d32062..eec80a7e8 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_share_deck.cpp +++ b/cockatrice/src/interface/widgets/dialogs/dlg_share_deck.cpp @@ -9,16 +9,21 @@ #include #include #include +#include #include #include +#include #include #include #include #include #include -#include #include #include +#include + +class QWidget; +template class QSharedPointer; DlgShareDeck::DlgShareDeck(AbstractClient *_client, const QSharedPointer &_deck, QWidget *_parent) : QDialog(_parent), client(_client), deck(_deck), shareTimeoutTimer(new QTimer(this)) diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_share_deck.h b/cockatrice/src/interface/widgets/dialogs/dlg_share_deck.h index 162fa3677..108a8c38b 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_share_deck.h +++ b/cockatrice/src/interface/widgets/dialogs/dlg_share_deck.h @@ -9,6 +9,7 @@ #include #include +#include class AbstractClient; class CommandContainer; @@ -17,6 +18,8 @@ class QDialogButtonBox; class QLineEdit; class QTimer; class Response; +class QWidget; +template class QSharedPointer; /** * @brief Slim dialog to create a temporary share for the deck open in the editor. diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_shared_decks_preview.cpp b/cockatrice/src/interface/widgets/dialogs/dlg_shared_decks_preview.cpp index cd7ecdcdd..8ad91dcaf 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_shared_decks_preview.cpp +++ b/cockatrice/src/interface/widgets/dialogs/dlg_shared_decks_preview.cpp @@ -3,14 +3,19 @@ #include "../deck_share/shared_deck_preview_widget.h" #include "../general/layout_containers/flow_widget.h" -#include +#include #include #include +#include #include #include +#include #include -#include +#include #include +#include + +class QWidget; DlgSharedDecksPreview::DlgSharedDecksPreview(QWidget *parent, const CardDatabaseQuerier *querier, diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_shared_decks_preview.h b/cockatrice/src/interface/widgets/dialogs/dlg_shared_decks_preview.h index 31820e3a0..fab7ba6bf 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_shared_decks_preview.h +++ b/cockatrice/src/interface/widgets/dialogs/dlg_shared_decks_preview.h @@ -3,14 +3,17 @@ #include #include +#include +#include +#include class FlowWidget; -class QCloseEvent; class QLabel; class QPushButton; class ServerInfo_DeckShareItem; class SharedDeckPreviewWidget; class CardDatabaseQuerier; +class QWidget; /** * @brief Non-modal preview of the decks contained in a shared-deck link. diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_startup_card_check.cpp b/cockatrice/src/interface/widgets/dialogs/dlg_startup_card_check.cpp index 4322beb8c..3d50480cc 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_startup_card_check.cpp +++ b/cockatrice/src/interface/widgets/dialogs/dlg_startup_card_check.cpp @@ -2,9 +2,17 @@ #include "../../../client/settings/cache_settings.h" +#include #include +#include +#include +#include +#include +#include #include +class QWidget; + DlgStartupCardCheck::DlgStartupCardCheck(QWidget *parent) : QDialog(parent) { setWindowTitle(tr("Card Update Check")); diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_startup_card_check.h b/cockatrice/src/interface/widgets/dialogs/dlg_startup_card_check.h index d26610983..0d0fb6670 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_startup_card_check.h +++ b/cockatrice/src/interface/widgets/dialogs/dlg_startup_card_check.h @@ -7,12 +7,15 @@ #ifndef DLG_STARTUP_CARD_CHECK_H #define DLG_STARTUP_CARD_CHECK_H -#include #include -#include -#include -#include -#include +#include + +class QButtonGroup; +class QDialogButtonBox; +class QLabel; +class QRadioButton; +class QVBoxLayout; +class QWidget; class DlgStartupCardCheck : public QDialog { diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_tip_of_the_day.cpp b/cockatrice/src/interface/widgets/dialogs/dlg_tip_of_the_day.cpp index 3d3619bf0..511ff1c7d 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_tip_of_the_day.cpp +++ b/cockatrice/src/interface/widgets/dialogs/dlg_tip_of_the_day.cpp @@ -7,9 +7,19 @@ #include #include #include +#include #include +#include +#include +#include #include +#include +#include +#include +#include +#include #include +#include #define MIN_TIP_IMAGE_HEIGHT 200 #define MIN_TIP_IMAGE_WIDTH 200 diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_tip_of_the_day.h b/cockatrice/src/interface/widgets/dialogs/dlg_tip_of_the_day.h index e493481d0..689814115 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_tip_of_the_day.h +++ b/cockatrice/src/interface/widgets/dialogs/dlg_tip_of_the_day.h @@ -7,12 +7,15 @@ #ifndef DLG_TIPOFDAY_H #define DLG_TIPOFDAY_H -#include #include -#include -#include #include -#include +#include + +class QDialogButtonBox; +class QHBoxLayout; +class QPixmap; +class QVBoxLayout; +class QWidget; inline Q_LOGGING_CATEGORY(DlgTipOfTheDayLog, "dlg_tip_of_the_day"); diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_update.cpp b/cockatrice/src/interface/widgets/dialogs/dlg_update.cpp index bac270580..76bb13248 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_update.cpp +++ b/cockatrice/src/interface/widgets/dialogs/dlg_update.cpp @@ -4,18 +4,33 @@ #include "../client/network/update/client/client_update_checker.h" #include "../client/network/update/client/release_channel.h" #include "../interface/window_main.h" +#include "update/client/update_downloader.h" +#include +#include #include +#include +#include #include +#include #include #include #include +#include +#include #include +#include +#include +#include #include #include +#include +#include +#include #include #include -#include +#include +#include #include // Executable that, when it sits next to the downloaded update installer, is installed instead of diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_update.h b/cockatrice/src/interface/widgets/dialogs/dlg_update.h index 2cef46e70..026a54a8c 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_update.h +++ b/cockatrice/src/interface/widgets/dialogs/dlg_update.h @@ -7,17 +7,24 @@ #ifndef DLG_UPDATE_H #define DLG_UPDATE_H -#include "../client/network/update/client/update_downloader.h" +#include "../../../client/network/update/client/release_channel.h" -#include +#include #include -#include -#include +#include +#include +#include +#include + +class QDialogButtonBox; +class QLabel; +class QProgressBar; +class QPushButton; +class QWidget; +class UpdateDownloader; inline Q_LOGGING_CATEGORY(DlgUpdateLog, "dlg_update"); -class Release; - class DlgUpdate : public QDialog { Q_OBJECT diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_view_log.cpp b/cockatrice/src/interface/widgets/dialogs/dlg_view_log.cpp index 957e039c0..d55e800a1 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_view_log.cpp +++ b/cockatrice/src/interface/widgets/dialogs/dlg_view_log.cpp @@ -4,13 +4,18 @@ #include "../../logger.h" #include +#include #include +#include +#include #include #include #include #include #include +class QWidget; + DlgViewLog::DlgViewLog(QWidget *parent) : QDialog(parent) { logArea = new QPlainTextEdit; diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_view_log.h b/cockatrice/src/interface/widgets/dialogs/dlg_view_log.h index 5c7315b50..d63ff5ffc 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_view_log.h +++ b/cockatrice/src/interface/widgets/dialogs/dlg_view_log.h @@ -7,11 +7,14 @@ #ifndef DLG_VIEWLOG_H #define DLG_VIEWLOG_H -#include #include +#include +#include class QPlainTextEdit; -class QCloseEvent; +class QCheckBox; +class QPushButton; +class QWidget; class DlgViewLog : public QDialog { diff --git a/cockatrice/src/interface/widgets/dialogs/override_printing_warning.cpp b/cockatrice/src/interface/widgets/dialogs/override_printing_warning.cpp index 33d102f5e..57f7ff7f5 100644 --- a/cockatrice/src/interface/widgets/dialogs/override_printing_warning.cpp +++ b/cockatrice/src/interface/widgets/dialogs/override_printing_warning.cpp @@ -3,7 +3,13 @@ #include "../../card_picture_loader/card_picture_loader.h" #include "../../client/settings/cache_settings.h" +#include +#include +#include #include + +class QWidget; + bool OverridePrintingWarning::execMessageBox(QWidget *parent, bool enable) { QString message; diff --git a/cockatrice/src/interface/widgets/dialogs/override_printing_warning.h b/cockatrice/src/interface/widgets/dialogs/override_printing_warning.h index f2c926fc3..6c5891373 100644 --- a/cockatrice/src/interface/widgets/dialogs/override_printing_warning.h +++ b/cockatrice/src/interface/widgets/dialogs/override_printing_warning.h @@ -1,6 +1,7 @@ #ifndef COCKATRICE_OVERRIDE_PRINTING_WARN_H #define COCKATRICE_OVERRIDE_PRINTING_WARN_H -#include + +class QWidget; namespace OverridePrintingWarning { diff --git a/cockatrice/src/interface/widgets/dialogs/tip_of_the_day.cpp b/cockatrice/src/interface/widgets/dialogs/tip_of_the_day.cpp index 66170792a..3463fe6df 100644 --- a/cockatrice/src/interface/widgets/dialogs/tip_of_the_day.cpp +++ b/cockatrice/src/interface/widgets/dialogs/tip_of_the_day.cpp @@ -2,11 +2,20 @@ #include #include -#include +#include +#include +#include +#include #include +#include #include +#include +#include +#include #include +class QObject; + #define TIPDDBMODEL_COLUMNS 3 TipOfTheDay::TipOfTheDay(QString _title, QString _content, QString _imagePath, QDate _date) diff --git a/cockatrice/src/interface/widgets/dialogs/tip_of_the_day.h b/cockatrice/src/interface/widgets/dialogs/tip_of_the_day.h index 9cda07e2b..4e6e23567 100644 --- a/cockatrice/src/interface/widgets/dialogs/tip_of_the_day.h +++ b/cockatrice/src/interface/widgets/dialogs/tip_of_the_day.h @@ -9,6 +9,12 @@ #include #include +#include +#include +#include + +class QObject; +template class QList; class TipOfTheDay { diff --git a/cockatrice/src/interface/widgets/general/background_sources.h b/cockatrice/src/interface/widgets/general/background_sources.h index 423111bb6..775d55895 100644 --- a/cockatrice/src/interface/widgets/general/background_sources.h +++ b/cockatrice/src/interface/widgets/general/background_sources.h @@ -9,7 +9,10 @@ #include #include +#include #include +#include +#include class BackgroundSources { diff --git a/cockatrice/src/interface/widgets/general/display/background_plate_widget.cpp b/cockatrice/src/interface/widgets/general/display/background_plate_widget.cpp index aad259900..fd9ad67a8 100644 --- a/cockatrice/src/interface/widgets/general/display/background_plate_widget.cpp +++ b/cockatrice/src/interface/widgets/general/display/background_plate_widget.cpp @@ -1,9 +1,9 @@ #include "background_plate_widget.h" -#include #include #include -#include +#include +#include BackgroundPlateWidget::BackgroundPlateWidget(QWidget *parent) : QWidget(parent) { diff --git a/cockatrice/src/interface/widgets/general/display/background_plate_widget.h b/cockatrice/src/interface/widgets/general/display/background_plate_widget.h index 1fc1bc3ba..6634069c4 100644 --- a/cockatrice/src/interface/widgets/general/display/background_plate_widget.h +++ b/cockatrice/src/interface/widgets/general/display/background_plate_widget.h @@ -2,6 +2,7 @@ #define COCKATRICE_BACKGROUND_PLATE_WIDGET_H #include +#include class BackgroundPlateWidget : public QWidget { diff --git a/cockatrice/src/interface/widgets/general/display/banner_widget.cpp b/cockatrice/src/interface/widgets/general/display/banner_widget.cpp index 31f384cac..baf46bbba 100644 --- a/cockatrice/src/interface/widgets/general/display/banner_widget.cpp +++ b/cockatrice/src/interface/widgets/general/display/banner_widget.cpp @@ -2,10 +2,15 @@ #include "../../../pixel_map_generator.h" +#include +#include +#include #include -#include #include -#include +#include +#include +#include +#include BannerWidget::BannerWidget(QWidget *parent, const QString &text, Qt::Orientation orientation, int transparency_) : QWidget(parent), gradientOrientation(orientation), transparency(qBound(0, transparency_, 100)) diff --git a/cockatrice/src/interface/widgets/general/display/banner_widget.h b/cockatrice/src/interface/widgets/general/display/banner_widget.h index 77a05abb6..06556089b 100644 --- a/cockatrice/src/interface/widgets/general/display/banner_widget.h +++ b/cockatrice/src/interface/widgets/general/display/banner_widget.h @@ -10,8 +10,10 @@ #define BANNER_WIDGET_H #include -#include +#include #include +#include +#include class BannerWidget : public QWidget { diff --git a/cockatrice/src/interface/widgets/general/display/charts/bars/bar_chart_background_widget.cpp b/cockatrice/src/interface/widgets/general/display/charts/bars/bar_chart_background_widget.cpp index f7ca669f3..3ea2df6bd 100644 --- a/cockatrice/src/interface/widgets/general/display/charts/bars/bar_chart_background_widget.cpp +++ b/cockatrice/src/interface/widgets/general/display/charts/bars/bar_chart_background_widget.cpp @@ -1,5 +1,17 @@ #include "bar_chart_background_widget.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + BarChartBackgroundWidget::BarChartBackgroundWidget(QWidget *parent) : QWidget(parent) { setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); diff --git a/cockatrice/src/interface/widgets/general/display/charts/bars/bar_chart_background_widget.h b/cockatrice/src/interface/widgets/general/display/charts/bars/bar_chart_background_widget.h index 06a17c7c6..1fc8a3bde 100644 --- a/cockatrice/src/interface/widgets/general/display/charts/bars/bar_chart_background_widget.h +++ b/cockatrice/src/interface/widgets/general/display/charts/bars/bar_chart_background_widget.h @@ -1,8 +1,8 @@ #ifndef COCKATRICE_BAR_CHART_BACKGROUND_WIDGET_H #define COCKATRICE_BAR_CHART_BACKGROUND_WIDGET_H -#include #include +#include class BarChartBackgroundWidget : public QWidget { diff --git a/cockatrice/src/interface/widgets/general/display/charts/bars/bar_chart_widget.cpp b/cockatrice/src/interface/widgets/general/display/charts/bars/bar_chart_widget.cpp index 04315d0ce..484ac861d 100644 --- a/cockatrice/src/interface/widgets/general/display/charts/bars/bar_chart_widget.cpp +++ b/cockatrice/src/interface/widgets/general/display/charts/bars/bar_chart_widget.cpp @@ -1,9 +1,20 @@ #include "bar_chart_widget.h" +#include +#include +#include +#include #include #include #include +#include +#include +#include +#include +#include #include +#include +#include BarChartWidget::BarChartWidget(QWidget *parent) : QWidget(parent) { diff --git a/cockatrice/src/interface/widgets/general/display/charts/bars/bar_chart_widget.h b/cockatrice/src/interface/widgets/general/display/charts/bars/bar_chart_widget.h index e80a3f8e8..a596c094a 100644 --- a/cockatrice/src/interface/widgets/general/display/charts/bars/bar_chart_widget.h +++ b/cockatrice/src/interface/widgets/general/display/charts/bars/bar_chart_widget.h @@ -2,9 +2,12 @@ #define COCKATRICE_BAR_CHART_WIDGET_H #include +#include #include +#include #include #include +#include struct BarSegment { diff --git a/cockatrice/src/interface/widgets/general/display/charts/bars/bar_widget.cpp b/cockatrice/src/interface/widgets/general/display/charts/bars/bar_widget.cpp index 2194b6b03..82d15d5be 100644 --- a/cockatrice/src/interface/widgets/general/display/charts/bars/bar_widget.cpp +++ b/cockatrice/src/interface/widgets/general/display/charts/bars/bar_widget.cpp @@ -2,6 +2,10 @@ #include #include +#include +#include +#include +#include BarWidget::BarWidget(QString label, int value, int total, QColor barColor, QWidget *parent) : QWidget(parent), label(std::move(label)), value(value), total(total), barColor(barColor) diff --git a/cockatrice/src/interface/widgets/general/display/charts/bars/bar_widget.h b/cockatrice/src/interface/widgets/general/display/charts/bars/bar_widget.h index 05814f15b..18da1f939 100644 --- a/cockatrice/src/interface/widgets/general/display/charts/bars/bar_widget.h +++ b/cockatrice/src/interface/widgets/general/display/charts/bars/bar_widget.h @@ -8,7 +8,11 @@ #ifndef BAR_WIDGET_H #define BAR_WIDGET_H +#include +#include #include +#include +#include class BarWidget : public QWidget { diff --git a/cockatrice/src/interface/widgets/general/display/charts/bars/color_bar.cpp b/cockatrice/src/interface/widgets/general/display/charts/bars/color_bar.cpp index 1087c621e..28118cc9c 100644 --- a/cockatrice/src/interface/widgets/general/display/charts/bars/color_bar.cpp +++ b/cockatrice/src/interface/widgets/general/display/charts/bars/color_bar.cpp @@ -2,10 +2,21 @@ #include "libcockatrice/utility/color.h" +#include #include +#include #include #include +#include +#include +#include +#include +#include +#include #include +#include +#include +#include ColorBar::ColorBar(const QMap &_colors, QWidget *parent) : QWidget(parent), colors(GameSpecificColors::MTG::sortManaMapWUBRGCFirst(_colors)) diff --git a/cockatrice/src/interface/widgets/general/display/charts/bars/color_bar.h b/cockatrice/src/interface/widgets/general/display/charts/bars/color_bar.h index 1d435cec1..3acb7f97f 100644 --- a/cockatrice/src/interface/widgets/general/display/charts/bars/color_bar.h +++ b/cockatrice/src/interface/widgets/general/display/charts/bars/color_bar.h @@ -2,9 +2,13 @@ #define COCKATRICE_COLOR_BAR_H #include -#include +#include +#include #include #include +#include + +template class QMap; /** * @class ColorBar diff --git a/cockatrice/src/interface/widgets/general/display/charts/bars/percent_bar_widget.cpp b/cockatrice/src/interface/widgets/general/display/charts/bars/percent_bar_widget.cpp index 3726dd061..33195a518 100644 --- a/cockatrice/src/interface/widgets/general/display/charts/bars/percent_bar_widget.cpp +++ b/cockatrice/src/interface/widgets/general/display/charts/bars/percent_bar_widget.cpp @@ -1,5 +1,13 @@ #include "percent_bar_widget.h" +#include +#include +#include +#include +#include +#include +#include + PercentBarWidget::PercentBarWidget(QWidget *parent, double initialValue) : QWidget(parent), valueToDisplay(initialValue) { setMinimumSize(50, 10); diff --git a/cockatrice/src/interface/widgets/general/display/charts/bars/percent_bar_widget.h b/cockatrice/src/interface/widgets/general/display/charts/bars/percent_bar_widget.h index 9cd6039c8..f12cb8ae7 100644 --- a/cockatrice/src/interface/widgets/general/display/charts/bars/percent_bar_widget.h +++ b/cockatrice/src/interface/widgets/general/display/charts/bars/percent_bar_widget.h @@ -8,8 +8,9 @@ #ifndef PERCENT_BAR_WIDGET_H #define PERCENT_BAR_WIDGET_H -#include #include +#include +#include class PercentBarWidget : public QWidget { diff --git a/cockatrice/src/interface/widgets/general/display/charts/bars/segmented_bar_widget.cpp b/cockatrice/src/interface/widgets/general/display/charts/bars/segmented_bar_widget.cpp index 03c69373a..5a3130964 100644 --- a/cockatrice/src/interface/widgets/general/display/charts/bars/segmented_bar_widget.cpp +++ b/cockatrice/src/interface/widgets/general/display/charts/bars/segmented_bar_widget.cpp @@ -1,9 +1,19 @@ #include "segmented_bar_widget.h" +#include +#include +#include #include #include #include +#include +#include +#include +#include +#include #include +#include +#include SegmentedBarWidget::SegmentedBarWidget(QString label, QVector segments, int total, QWidget *parent) : QWidget(parent), label(std::move(label)), segments(std::move(segments)), total(total) diff --git a/cockatrice/src/interface/widgets/general/display/charts/bars/segmented_bar_widget.h b/cockatrice/src/interface/widgets/general/display/charts/bars/segmented_bar_widget.h index 4df54e42e..c8c7dc2b9 100644 --- a/cockatrice/src/interface/widgets/general/display/charts/bars/segmented_bar_widget.h +++ b/cockatrice/src/interface/widgets/general/display/charts/bars/segmented_bar_widget.h @@ -2,8 +2,12 @@ #define COCKATRICE_SEGMENTED_BAR_WIDGET_H #include +#include +#include +#include #include #include +#include class SegmentedBarWidget : public QWidget { diff --git a/cockatrice/src/interface/widgets/general/display/charts/pies/color_pie.cpp b/cockatrice/src/interface/widgets/general/display/charts/pies/color_pie.cpp index bd4641981..82542a663 100644 --- a/cockatrice/src/interface/widgets/general/display/charts/pies/color_pie.cpp +++ b/cockatrice/src/interface/widgets/general/display/charts/pies/color_pie.cpp @@ -2,10 +2,22 @@ #include "libcockatrice/utility/color.h" +#include +#include #include #include +#include +#include +#include +#include +#include +#include #include +#include #include +#include +#include +#include ColorPie::ColorPie(const QMap &_colors, QWidget *parent) : QWidget(parent), colors(GameSpecificColors::MTG::sortManaMapWUBRGCFirst(_colors)) diff --git a/cockatrice/src/interface/widgets/general/display/charts/pies/color_pie.h b/cockatrice/src/interface/widgets/general/display/charts/pies/color_pie.h index 60d8e18f2..0fe023f63 100644 --- a/cockatrice/src/interface/widgets/general/display/charts/pies/color_pie.h +++ b/cockatrice/src/interface/widgets/general/display/charts/pies/color_pie.h @@ -1,6 +1,12 @@ #ifndef COCKATRICE_COLOR_PIE_H #define COCKATRICE_COLOR_PIE_H +#include +#include +#include +#include + +class QPoint; #ifndef COLOR_PIE_H #define COLOR_PIE_H diff --git a/cockatrice/src/interface/widgets/general/display/dynamic_font_size_label.cpp b/cockatrice/src/interface/widgets/general/display/dynamic_font_size_label.cpp index f485e0040..0609eb16a 100644 --- a/cockatrice/src/interface/widgets/general/display/dynamic_font_size_label.cpp +++ b/cockatrice/src/interface/widgets/general/display/dynamic_font_size_label.cpp @@ -1,7 +1,16 @@ #include "dynamic_font_size_label.h" -#define FONT_PRECISION (0.5) -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define FONT_PRECISION (0.5) DynamicFontSizeLabel::DynamicFontSizeLabel(QWidget *parent, Qt::WindowFlags f) : QLabel(parent, f) { diff --git a/cockatrice/src/interface/widgets/general/display/dynamic_font_size_label.h b/cockatrice/src/interface/widgets/general/display/dynamic_font_size_label.h index c9b159b02..cd029902a 100644 --- a/cockatrice/src/interface/widgets/general/display/dynamic_font_size_label.h +++ b/cockatrice/src/interface/widgets/general/display/dynamic_font_size_label.h @@ -9,6 +9,12 @@ #include #include +#include +#include +#include +#include + +class QWidget; class DynamicFontSizeLabel : public QLabel { diff --git a/cockatrice/src/interface/widgets/general/display/dynamic_font_size_push_button.cpp b/cockatrice/src/interface/widgets/general/display/dynamic_font_size_push_button.cpp index 653b2cd5c..25e8ca48f 100644 --- a/cockatrice/src/interface/widgets/general/display/dynamic_font_size_push_button.cpp +++ b/cockatrice/src/interface/widgets/general/display/dynamic_font_size_push_button.cpp @@ -2,7 +2,14 @@ #include "dynamic_font_size_label.h" +#include +#include +#include #include +#include +#include +#include +#include DynamicFontSizePushButton::DynamicFontSizePushButton(QWidget *parent) : QPushButton(parent) { diff --git a/cockatrice/src/interface/widgets/general/display/dynamic_font_size_push_button.h b/cockatrice/src/interface/widgets/general/display/dynamic_font_size_push_button.h index 540abfe6b..dfbb03d20 100644 --- a/cockatrice/src/interface/widgets/general/display/dynamic_font_size_push_button.h +++ b/cockatrice/src/interface/widgets/general/display/dynamic_font_size_push_button.h @@ -7,9 +7,12 @@ #ifndef DYNAMICFONTSIZEPUSHBUTTON_H #define DYNAMICFONTSIZEPUSHBUTTON_H -#include +#include #include -#include +#include +#include + +class QWidget; class DynamicFontSizePushButton : public QPushButton { diff --git a/cockatrice/src/interface/widgets/general/display/labeled_input.cpp b/cockatrice/src/interface/widgets/general/display/labeled_input.cpp index ee26c78d9..40ee91bcc 100644 --- a/cockatrice/src/interface/widgets/general/display/labeled_input.cpp +++ b/cockatrice/src/interface/widgets/general/display/labeled_input.cpp @@ -1,5 +1,12 @@ #include "labeled_input.h" +#include +#include +#include +#include +#include +#include + LabeledInput::LabeledInput(QWidget *parent, const QString &labelText) : QWidget(parent) { label = new QLabel(labelText, this); diff --git a/cockatrice/src/interface/widgets/general/display/labeled_input.h b/cockatrice/src/interface/widgets/general/display/labeled_input.h index 838dfb280..a07d50dbb 100644 --- a/cockatrice/src/interface/widgets/general/display/labeled_input.h +++ b/cockatrice/src/interface/widgets/general/display/labeled_input.h @@ -7,11 +7,15 @@ #ifndef LABELED_INPUT_H #define LABELED_INPUT_H -#include -#include -#include -#include +#include +#include #include +#include + +class QComboBox; +class QHBoxLayout; +class QLabel; +class QSpinBox; class LabeledInput final : public QWidget { diff --git a/cockatrice/src/interface/widgets/general/display/shadow_background_label.cpp b/cockatrice/src/interface/widgets/general/display/shadow_background_label.cpp index 7db18c57d..e1218a6fb 100644 --- a/cockatrice/src/interface/widgets/general/display/shadow_background_label.cpp +++ b/cockatrice/src/interface/widgets/general/display/shadow_background_label.cpp @@ -1,7 +1,13 @@ #include "shadow_background_label.h" -#include +#include +#include #include +#include +#include +#include + +class QWidget; /** * @class ShadowBackgroundLabel diff --git a/cockatrice/src/interface/widgets/general/display/shadow_background_label.h b/cockatrice/src/interface/widgets/general/display/shadow_background_label.h index 69232691e..e64b9ca5b 100644 --- a/cockatrice/src/interface/widgets/general/display/shadow_background_label.h +++ b/cockatrice/src/interface/widgets/general/display/shadow_background_label.h @@ -8,6 +8,10 @@ #define STYLEDLABEL_H #include +#include +#include + +class QWidget; class ShadowBackgroundLabel : public QLabel { diff --git a/cockatrice/src/interface/widgets/general/home_styled_button.cpp b/cockatrice/src/interface/widgets/general/home_styled_button.cpp index c7bdd1e5e..7f23827bc 100644 --- a/cockatrice/src/interface/widgets/general/home_styled_button.cpp +++ b/cockatrice/src/interface/widgets/general/home_styled_button.cpp @@ -1,9 +1,19 @@ #include "home_styled_button.h" +#include +#include #include #include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include + +class QWidget; HomeStyledButton::HomeStyledButton(const QString &text, QPair _gradientColors, QWidget *parent) : QPushButton(text, parent), gradientColors(_gradientColors) diff --git a/cockatrice/src/interface/widgets/general/home_styled_button.h b/cockatrice/src/interface/widgets/general/home_styled_button.h index f8d97e9aa..55ac5550f 100644 --- a/cockatrice/src/interface/widgets/general/home_styled_button.h +++ b/cockatrice/src/interface/widgets/general/home_styled_button.h @@ -6,7 +6,13 @@ #ifndef HOME_STYLED_BUTTON_H #define HOME_STYLED_BUTTON_H +#include +#include #include +#include +#include + +class QWidget; class HomeStyledButton : public QPushButton { diff --git a/cockatrice/src/interface/widgets/general/home_widget.cpp b/cockatrice/src/interface/widgets/general/home_widget.cpp index 648d315f9..c77fd76fd 100644 --- a/cockatrice/src/interface/widgets/general/home_widget.cpp +++ b/cockatrice/src/interface/widgets/general/home_widget.cpp @@ -2,25 +2,68 @@ #include "../../../client/settings/cache_settings.h" #include "../../../interface/widgets/tabs/tab_supervisor.h" +#include "../../deck_loader/deck_file_format.h" +#include "../../deck_loader/deck_loader.h" +#include "../../deck_loader/loaded_deck.h" #include "../../pixel_map_generator.h" +#include "../../theme_config.h" #include "../../theme_manager.h" #include "../../window_main.h" #include "../cards/art_crop_attribution.h" +#include "../cards/card_info_picture_art_crop_widget.h" +#include "abstract_client.h" #include "background_sources.h" #include "home_styled_button.h" #include "home_tab_button_color.h" +#include "libcockatrice/card/card_info.h" +#include "libcockatrice/card/database/card_database.h" +#include "libcockatrice/card/database/card_database_loader.h" +#include "libcockatrice/card/database/card_database_querier.h" +#include "libcockatrice/card/printing/exact_card.h" +#include "libcockatrice/card/printing/printing_info.h" +#include "libcockatrice/card/set/card_set.h" +#include "libcockatrice/utility/card_ref.h" +#include +#include +#include +#include +#include +#include #include +#include #include #include +#include +#include +#include #include #include +#include +#include #include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include +#include +#include +#include #include #include #include #include +#include +#include +#include +#include HomeWidget::HomeWidget(QWidget *parent, TabSupervisor *_tabSupervisor) : QWidget(parent), tabSupervisor(_tabSupervisor), background(themePixmap(QStringLiteral("backgrounds/home"))) diff --git a/cockatrice/src/interface/widgets/general/home_widget.h b/cockatrice/src/interface/widgets/general/home_widget.h index 1cadc4a67..fb9566cad 100644 --- a/cockatrice/src/interface/widgets/general/home_widget.h +++ b/cockatrice/src/interface/widgets/general/home_widget.h @@ -7,16 +7,23 @@ #ifndef HOME_WIDGET_H #define HOME_WIDGET_H -#include "../../../interface/widgets/tabs/tab_supervisor.h" -#include "../cards/card_info_picture_art_crop_widget.h" -#include "home_styled_button.h" +#include "libcockatrice/deck_list/deck_list.h" -#include +#include +#include +#include #include #include +#include class QGridLayout; class QLabel; +class CardInfoPictureArtCropWidget; +class ExactCard; +class HomeStyledButton; +class QGroupBox; +class QTimer; +class TabSupervisor; class HomeWidget : public QWidget { diff --git a/cockatrice/src/interface/widgets/general/layout_containers/flow_widget.cpp b/cockatrice/src/interface/widgets/general/layout_containers/flow_widget.cpp index 01c9ac34e..6a6025ec2 100644 --- a/cockatrice/src/interface/widgets/general/layout_containers/flow_widget.cpp +++ b/cockatrice/src/interface/widgets/general/layout_containers/flow_widget.cpp @@ -6,10 +6,17 @@ #include "flow_widget.h" +#include "../../../layouts/flow_layout.h" + +#include #include #include +#include +#include +#include #include #include +#include #include #include diff --git a/cockatrice/src/interface/widgets/general/layout_containers/flow_widget.h b/cockatrice/src/interface/widgets/general/layout_containers/flow_widget.h index 4d52db3f1..dbf33d07f 100644 --- a/cockatrice/src/interface/widgets/general/layout_containers/flow_widget.h +++ b/cockatrice/src/interface/widgets/general/layout_containers/flow_widget.h @@ -8,13 +8,17 @@ #ifndef FLOW_WIDGET_H #define FLOW_WIDGET_H -#include "../../../layouts/flow_layout.h" - -#include -#include #include -#include #include +#include +#include +#include + +class FlowLayout; +class QHBoxLayout; +class QKeyEvent; +class QLayoutItem; +class QScrollArea; inline Q_LOGGING_CATEGORY(FlowWidgetLog, "flow_widget", QtInfoMsg); inline Q_LOGGING_CATEGORY(FlowWidgetSizeLog, "flow_widget.size", QtInfoMsg); diff --git a/cockatrice/src/interface/widgets/general/layout_containers/overlap_control_widget.cpp b/cockatrice/src/interface/widgets/general/layout_containers/overlap_control_widget.cpp index 97068978d..8cfe190e2 100644 --- a/cockatrice/src/interface/widgets/general/layout_containers/overlap_control_widget.cpp +++ b/cockatrice/src/interface/widgets/general/layout_containers/overlap_control_widget.cpp @@ -1,7 +1,11 @@ #include "overlap_control_widget.h" +#include "../display/labeled_input.h" #include "overlap_widget.h" +#include +#include + OverlapControlWidget::OverlapControlWidget(int overlapPercentage, int maxColumns, int maxRows, diff --git a/cockatrice/src/interface/widgets/general/layout_containers/overlap_control_widget.h b/cockatrice/src/interface/widgets/general/layout_containers/overlap_control_widget.h index 104a97da9..c5639110f 100644 --- a/cockatrice/src/interface/widgets/general/layout_containers/overlap_control_widget.h +++ b/cockatrice/src/interface/widgets/general/layout_containers/overlap_control_widget.h @@ -6,12 +6,14 @@ #ifndef OVERLAP_CONTROL_WIDGET_H #define OVERLAP_CONTROL_WIDGET_H -#include "../display/labeled_input.h" -#include "overlap_widget.h" - -#include -#include #include +#include +#include + +class LabeledInput; +class OverlapWidget; +class QHBoxLayout; +class QSlider; class OverlapControlWidget final : public QWidget { diff --git a/cockatrice/src/interface/widgets/general/layout_containers/overlap_widget.cpp b/cockatrice/src/interface/widgets/general/layout_containers/overlap_widget.cpp index 1c4ee30ab..03240211c 100644 --- a/cockatrice/src/interface/widgets/general/layout_containers/overlap_widget.cpp +++ b/cockatrice/src/interface/widgets/general/layout_containers/overlap_widget.cpp @@ -1,9 +1,9 @@ #include "overlap_widget.h" -#include "../../../layouts/flow_layout.h" +#include "../../../layouts/overlap_layout.h" +#include #include -#include /** * @class OverlapWidget diff --git a/cockatrice/src/interface/widgets/general/layout_containers/overlap_widget.h b/cockatrice/src/interface/widgets/general/layout_containers/overlap_widget.h index 62c620201..c103c5f80 100644 --- a/cockatrice/src/interface/widgets/general/layout_containers/overlap_widget.h +++ b/cockatrice/src/interface/widgets/general/layout_containers/overlap_widget.h @@ -7,9 +7,12 @@ #ifndef OVERLAP_WIDGET_H #define OVERLAP_WIDGET_H -#include "../../../layouts/overlap_layout.h" - +#include #include +#include +#include + +class OverlapLayout; class OverlapWidget final : public QWidget { diff --git a/cockatrice/src/interface/widgets/menus/deck_editor_menu.cpp b/cockatrice/src/interface/widgets/menus/deck_editor_menu.cpp index 6e27b4e42..b0503ec22 100644 --- a/cockatrice/src/interface/widgets/menus/deck_editor_menu.cpp +++ b/cockatrice/src/interface/widgets/menus/deck_editor_menu.cpp @@ -2,9 +2,14 @@ #include "../../../client/settings/cache_settings.h" #include "../../../client/settings/shortcuts_settings.h" +#include "../deck_editor/deck_editor_filter_dock_widget.h" #include "../tabs/abstract_tab_deck_editor.h" +#include +#include +#include #include + DeckEditorMenu::DeckEditorMenu(AbstractTabDeckEditor *parent) : QMenu(parent), deckEditor(parent) { aNewDeck = new QAction(QString(), this); diff --git a/cockatrice/src/interface/widgets/menus/deck_editor_menu.h b/cockatrice/src/interface/widgets/menus/deck_editor_menu.h index 08ce7bba1..904fbb6f4 100644 --- a/cockatrice/src/interface/widgets/menus/deck_editor_menu.h +++ b/cockatrice/src/interface/widgets/menus/deck_editor_menu.h @@ -8,8 +8,11 @@ #define DECK_EDITOR_MENU_H #include +#include class AbstractTabDeckEditor; +class QAction; + class DeckEditorMenu : public QMenu { Q_OBJECT diff --git a/cockatrice/src/interface/widgets/onboarding/first_run_wizard.cpp b/cockatrice/src/interface/widgets/onboarding/first_run_wizard.cpp index 4af02fe4f..6441a7864 100644 --- a/cockatrice/src/interface/widgets/onboarding/first_run_wizard.cpp +++ b/cockatrice/src/interface/widgets/onboarding/first_run_wizard.cpp @@ -10,7 +10,6 @@ #include "shader_banner_widget.h" #include "step_indicator_widget.h" -#include #include #include #include @@ -18,6 +17,10 @@ #include #include #include +#include +#include + +class QWidget; FirstRunWizard::FirstRunWizard(QWidget *parent) : QDialog(parent) { diff --git a/cockatrice/src/interface/widgets/onboarding/first_run_wizard.h b/cockatrice/src/interface/widgets/onboarding/first_run_wizard.h index 21d7b6e06..bd0e79679 100644 --- a/cockatrice/src/interface/widgets/onboarding/first_run_wizard.h +++ b/cockatrice/src/interface/widgets/onboarding/first_run_wizard.h @@ -3,6 +3,9 @@ #include #include +#include +#include +#include class BannerHost; class FirstRunWizardPage; @@ -11,6 +14,7 @@ class CardDatabaseSetupPage; class QLabel; class QPushButton; class QStackedWidget; +class QWidget; /** @brief Polished first-run onboarding flow: card database setup, theme * selection, server account setup, and a handful of key preferences. diff --git a/cockatrice/src/interface/widgets/onboarding/first_run_wizard_page.h b/cockatrice/src/interface/widgets/onboarding/first_run_wizard_page.h index bdcd123bd..e7b818810 100644 --- a/cockatrice/src/interface/widgets/onboarding/first_run_wizard_page.h +++ b/cockatrice/src/interface/widgets/onboarding/first_run_wizard_page.h @@ -1,7 +1,9 @@ #ifndef FIRST_RUN_WIZARD_PAGE_H #define FIRST_RUN_WIZARD_PAGE_H +#include #include +#include /** @brief Base class for a single step of FirstRunWizard. * diff --git a/cockatrice/src/interface/widgets/onboarding/pages/account_setup_page.cpp b/cockatrice/src/interface/widgets/onboarding/pages/account_setup_page.cpp index 2107ea8bf..16a1d2254 100644 --- a/cockatrice/src/interface/widgets/onboarding/pages/account_setup_page.cpp +++ b/cockatrice/src/interface/widgets/onboarding/pages/account_setup_page.cpp @@ -1,8 +1,14 @@ #include "account_setup_page.h" +#include "../first_run_wizard_page.h" + #include #include +#include #include +#include + +class QWidget; AccountSetupPage::AccountSetupPage(QWidget *parent) : FirstRunWizardPage(parent) { diff --git a/cockatrice/src/interface/widgets/onboarding/pages/account_setup_page.h b/cockatrice/src/interface/widgets/onboarding/pages/account_setup_page.h index 0d9b76699..344b4e41a 100644 --- a/cockatrice/src/interface/widgets/onboarding/pages/account_setup_page.h +++ b/cockatrice/src/interface/widgets/onboarding/pages/account_setup_page.h @@ -3,8 +3,11 @@ #include "../first_run_wizard_page.h" +#include + class QLabel; class QPushButton; +class QWidget; /** @brief First-run account step. Does NOT embed DlgRegister's fields: they exist * to be handed to ConnectionController's network registration flow, which diff --git a/cockatrice/src/interface/widgets/onboarding/pages/card_database_setup_page.cpp b/cockatrice/src/interface/widgets/onboarding/pages/card_database_setup_page.cpp index 50e8ff63d..feff78088 100644 --- a/cockatrice/src/interface/widgets/onboarding/pages/card_database_setup_page.cpp +++ b/cockatrice/src/interface/widgets/onboarding/pages/card_database_setup_page.cpp @@ -1,23 +1,31 @@ #include "card_database_setup_page.h" #include "../../client/settings/cache_settings.h" +#include "../first_run_wizard_page.h" +#include "libcockatrice/card/database/card_database.h" #include #include #include #include +#include #include #include #include #include #include +#include #include #include #include #include +#include +#include +#include #include #include #include +#include CardDatabaseSetupPage::CardDatabaseSetupPage(QWidget *parent) : FirstRunWizardPage(parent) { diff --git a/cockatrice/src/interface/widgets/onboarding/pages/card_database_setup_page.h b/cockatrice/src/interface/widgets/onboarding/pages/card_database_setup_page.h index 870e759ea..77631dc77 100644 --- a/cockatrice/src/interface/widgets/onboarding/pages/card_database_setup_page.h +++ b/cockatrice/src/interface/widgets/onboarding/pages/card_database_setup_page.h @@ -4,6 +4,9 @@ #include "../first_run_wizard_page.h" #include +#include +#include +#include class QComboBox; class QLabel; diff --git a/cockatrice/src/interface/widgets/onboarding/pages/finish_page.cpp b/cockatrice/src/interface/widgets/onboarding/pages/finish_page.cpp index 4205fa532..1adf35282 100644 --- a/cockatrice/src/interface/widgets/onboarding/pages/finish_page.cpp +++ b/cockatrice/src/interface/widgets/onboarding/pages/finish_page.cpp @@ -1,7 +1,13 @@ #include "finish_page.h" +#include "../first_run_wizard_page.h" + #include +#include #include +#include + +class QWidget; FinishPage::FinishPage(QWidget *parent) : FirstRunWizardPage(parent) { diff --git a/cockatrice/src/interface/widgets/onboarding/pages/finish_page.h b/cockatrice/src/interface/widgets/onboarding/pages/finish_page.h index 40ebc6ed0..b78e40ec5 100644 --- a/cockatrice/src/interface/widgets/onboarding/pages/finish_page.h +++ b/cockatrice/src/interface/widgets/onboarding/pages/finish_page.h @@ -3,7 +3,10 @@ #include "../first_run_wizard_page.h" +#include + class QLabel; +class QWidget; class FinishPage : public FirstRunWizardPage { diff --git a/cockatrice/src/interface/widgets/onboarding/pages/preferences_setup_page.cpp b/cockatrice/src/interface/widgets/onboarding/pages/preferences_setup_page.cpp index fceb34deb..da08e3a12 100644 --- a/cockatrice/src/interface/widgets/onboarding/pages/preferences_setup_page.cpp +++ b/cockatrice/src/interface/widgets/onboarding/pages/preferences_setup_page.cpp @@ -2,6 +2,7 @@ #include "../../client/settings/cache_settings.h" #include "../../client/sound_engine.h" +#include "../first_run_wizard_page.h" #include "libcockatrice/settings/interface_settings.h" #include "libcockatrice/settings/sound_settings.h" #include "libcockatrice/settings/tabs_settings.h" @@ -9,10 +10,16 @@ #include #include #include +#include #include #include +#include #include +#include #include +#include +#include +#include namespace { diff --git a/cockatrice/src/interface/widgets/onboarding/pages/preferences_setup_page.h b/cockatrice/src/interface/widgets/onboarding/pages/preferences_setup_page.h index eed1b3aed..18d6c0e8f 100644 --- a/cockatrice/src/interface/widgets/onboarding/pages/preferences_setup_page.h +++ b/cockatrice/src/interface/widgets/onboarding/pages/preferences_setup_page.h @@ -3,10 +3,13 @@ #include "../first_run_wizard_page.h" +#include + class QCheckBox; class QComboBox; class QGroupBox; class QLabel; +class QWidget; /** @brief A curated subset of settings for the user to adjust. **/ diff --git a/cockatrice/src/interface/widgets/onboarding/pages/theme_setup_page.cpp b/cockatrice/src/interface/widgets/onboarding/pages/theme_setup_page.cpp index 797fe4425..66554d85c 100644 --- a/cockatrice/src/interface/widgets/onboarding/pages/theme_setup_page.cpp +++ b/cockatrice/src/interface/widgets/onboarding/pages/theme_setup_page.cpp @@ -1,10 +1,12 @@ #include "theme_setup_page.h" +#include "../../../theme_config.h" #include "../../client/settings/cache_settings.h" #include "../../interface/palette_editor/palette_generator.h" #include "../../interface/palette_editor/quick_setup_panel.h" #include "../../interface/theme_manager.h" #include "../../interface/widgets/general/background_sources.h" +#include "../first_run_wizard_page.h" #include "libcockatrice/settings/appearance_settings.h" #include @@ -12,12 +14,21 @@ #include #include #include -#include +#include +#include +#include #include +#include #include +#include +#include #include +#include +#include +#include #include -#include + +class QWidget; namespace { diff --git a/cockatrice/src/interface/widgets/onboarding/pages/theme_setup_page.h b/cockatrice/src/interface/widgets/onboarding/pages/theme_setup_page.h index 16a3c9a5d..b0d717043 100644 --- a/cockatrice/src/interface/widgets/onboarding/pages/theme_setup_page.h +++ b/cockatrice/src/interface/widgets/onboarding/pages/theme_setup_page.h @@ -3,9 +3,14 @@ #include "../first_run_wizard_page.h" +#include +#include +#include + class QComboBox; class QGroupBox; class QuickSetupPanel; +class QWidget; /** @brief First-run theme step. Reuses the same building blocks as Appearance * settings and the Palette Editor (ThemeManager, PaletteConfig, diff --git a/cockatrice/src/interface/widgets/onboarding/pages/welcome_page.cpp b/cockatrice/src/interface/widgets/onboarding/pages/welcome_page.cpp index 16e0719d2..71d2fa409 100644 --- a/cockatrice/src/interface/widgets/onboarding/pages/welcome_page.cpp +++ b/cockatrice/src/interface/widgets/onboarding/pages/welcome_page.cpp @@ -3,15 +3,23 @@ #include "../../../../main.h" #include "../../client/settings/cache_settings.h" #include "../../settings_page/general_settings_page.h" +#include "../first_run_wizard_page.h" #include "libcockatrice/settings/personal_settings.h" #include +#include #include #include #include +#include #include -#include +#include #include +#include +#include +#include + +class QWidget; WelcomePage::WelcomePage(QWidget *parent) : FirstRunWizardPage(parent) { diff --git a/cockatrice/src/interface/widgets/onboarding/pages/welcome_page.h b/cockatrice/src/interface/widgets/onboarding/pages/welcome_page.h index 93b24d83d..289034ab1 100644 --- a/cockatrice/src/interface/widgets/onboarding/pages/welcome_page.h +++ b/cockatrice/src/interface/widgets/onboarding/pages/welcome_page.h @@ -3,8 +3,11 @@ #include "../first_run_wizard_page.h" +#include + class QComboBox; class QLabel; +class QWidget; class WelcomePage : public FirstRunWizardPage { diff --git a/cockatrice/src/interface/widgets/onboarding/shader_banner_widget.cpp b/cockatrice/src/interface/widgets/onboarding/shader_banner_widget.cpp index 0b9f65783..c17399957 100644 --- a/cockatrice/src/interface/widgets/onboarding/shader_banner_widget.cpp +++ b/cockatrice/src/interface/widgets/onboarding/shader_banner_widget.cpp @@ -1,16 +1,27 @@ #include "shader_banner_widget.h" +#include "../../theme_config.h" #include "../../theme_manager.h" #include "banner_shader_config.h" #include "brand_colors.h" #include +#include +#include +#include #include +#include #include #include #include -#include +#include #include +#include +#include +#include +#include +#include +#include namespace { diff --git a/cockatrice/src/interface/widgets/onboarding/shader_banner_widget.h b/cockatrice/src/interface/widgets/onboarding/shader_banner_widget.h index ac47b1141..6fa0c703f 100644 --- a/cockatrice/src/interface/widgets/onboarding/shader_banner_widget.h +++ b/cockatrice/src/interface/widgets/onboarding/shader_banner_widget.h @@ -5,6 +5,8 @@ #include #include #include +#include +#include class BannerShaderConfig; class QQuickWidget; diff --git a/cockatrice/src/interface/widgets/onboarding/step_indicator_widget.cpp b/cockatrice/src/interface/widgets/onboarding/step_indicator_widget.cpp index d25e8544b..004bdcc11 100644 --- a/cockatrice/src/interface/widgets/onboarding/step_indicator_widget.cpp +++ b/cockatrice/src/interface/widgets/onboarding/step_indicator_widget.cpp @@ -1,7 +1,13 @@ #include "step_indicator_widget.h" +#include +#include #include #include +#include +#include +#include +#include StepIndicatorWidget::StepIndicatorWidget(QWidget *parent) : QWidget(parent) { diff --git a/cockatrice/src/interface/widgets/onboarding/step_indicator_widget.h b/cockatrice/src/interface/widgets/onboarding/step_indicator_widget.h index 1b85be04f..d2b5dfcb5 100644 --- a/cockatrice/src/interface/widgets/onboarding/step_indicator_widget.h +++ b/cockatrice/src/interface/widgets/onboarding/step_indicator_widget.h @@ -2,6 +2,7 @@ #define STEP_INDICATOR_WIDGET_H #include +#include /** @brief Row of dots showing progress through a fixed-length sequence of steps, * in the style of a mobile/OS setup flow. Purely presentational. */ diff --git a/cockatrice/src/interface/widgets/playmat/playmat_collection_dialog.cpp b/cockatrice/src/interface/widgets/playmat/playmat_collection_dialog.cpp index e970f8413..f77aefb33 100644 --- a/cockatrice/src/interface/widgets/playmat/playmat_collection_dialog.cpp +++ b/cockatrice/src/interface/widgets/playmat/playmat_collection_dialog.cpp @@ -1,6 +1,9 @@ #include "playmat_collection_dialog.h" #include "../../../client/settings/cache_settings.h" +#include "libcockatrice/interfaces/interface_interface_settings_provider.h" +#include "libcockatrice/utility/card_ref.h" +#include "libcockatrice/utility/playmat_params.h" #include "playmat_settings_dialog.h" #include @@ -8,10 +11,15 @@ #include #include #include +#include #include +#include #include +#include #include +class QWidget; + PlaymatCollectionDialog::PlaymatCollectionDialog(QWidget *parent) : QDialog(parent) { setMinimumWidth(420); diff --git a/cockatrice/src/interface/widgets/playmat/playmat_collection_dialog.h b/cockatrice/src/interface/widgets/playmat/playmat_collection_dialog.h index 167893f8e..a04cfdf54 100644 --- a/cockatrice/src/interface/widgets/playmat/playmat_collection_dialog.h +++ b/cockatrice/src/interface/widgets/playmat/playmat_collection_dialog.h @@ -2,13 +2,15 @@ #define COCKATRICE_PLAYMAT_COLLECTION_DIALOG_H #include +#include #include +#include class QComboBox; class QLabel; class QListWidget; -class QListWidgetItem; class QPushButton; +class QWidget; /** * @brief Dialog for editing the user-level playmat collection. diff --git a/cockatrice/src/interface/widgets/playmat/playmat_preview_widget.cpp b/cockatrice/src/interface/widgets/playmat/playmat_preview_widget.cpp index 130daadf4..881866292 100644 --- a/cockatrice/src/interface/widgets/playmat/playmat_preview_widget.cpp +++ b/cockatrice/src/interface/widgets/playmat/playmat_preview_widget.cpp @@ -3,13 +3,22 @@ #include "../cards/art_crop_attribution.h" #include "playmat_utils.h" +#include +#include +#include #include #include #include #include -#include +#include +#include +#include +#include +#include #include +#include #include +#include namespace { diff --git a/cockatrice/src/interface/widgets/playmat/playmat_preview_widget.h b/cockatrice/src/interface/widgets/playmat/playmat_preview_widget.h index 88b9ec41d..5e54e96eb 100644 --- a/cockatrice/src/interface/widgets/playmat/playmat_preview_widget.h +++ b/cockatrice/src/interface/widgets/playmat/playmat_preview_widget.h @@ -1,10 +1,15 @@ #ifndef COCKATRICE_PLAYMAT_PREVIEW_WIDGET_H #define COCKATRICE_PLAYMAT_PREVIEW_WIDGET_H -#include +#include "libcockatrice/utility/playmat_params.h" + #include +#include +#include +#include #include -#include +#include +#include /** * @brief Interactive crop surface showing how a playmat card art will appear diff --git a/cockatrice/src/interface/widgets/playmat/playmat_settings_dialog.cpp b/cockatrice/src/interface/widgets/playmat/playmat_settings_dialog.cpp index 9459c5ea9..5a4457d34 100644 --- a/cockatrice/src/interface/widgets/playmat/playmat_settings_dialog.cpp +++ b/cockatrice/src/interface/widgets/playmat/playmat_settings_dialog.cpp @@ -6,6 +6,11 @@ #include "../utility/completer_utils.h" #include "card_database_display_model.h" #include "card_database_model.h" +#include "libcockatrice/card/card_info.h" +#include "libcockatrice/card/database/card_database_querier.h" +#include "libcockatrice/card/printing/exact_card.h" +#include "libcockatrice/card/printing/printing_info.h" +#include "libcockatrice/card/set/card_set.h" #include "playmat_preview_widget.h" #include @@ -15,14 +20,18 @@ #include #include #include -#include #include #include -#include -#include +#include #include +#include +#include +#include #include +#include #include +#include +#include PlaymatSettingsDialog::PlaymatSettingsDialog(const CardRef &initialCard, const PlaymatParams &initialParams, diff --git a/cockatrice/src/interface/widgets/playmat/playmat_settings_dialog.h b/cockatrice/src/interface/widgets/playmat/playmat_settings_dialog.h index 9ef306a5f..07833af25 100644 --- a/cockatrice/src/interface/widgets/playmat/playmat_settings_dialog.h +++ b/cockatrice/src/interface/widgets/playmat/playmat_settings_dialog.h @@ -1,9 +1,14 @@ #ifndef COCKATRICE_PLAYMAT_SETTINGS_DIALOG_H #define COCKATRICE_PLAYMAT_SETTINGS_DIALOG_H +#include "libcockatrice/utility/card_ref.h" +#include "libcockatrice/utility/playmat_params.h" + #include +#include #include -#include +#include +#include class QCheckBox; class QComboBox; diff --git a/cockatrice/src/interface/widgets/printing_selector/all_zones_card_amount_widget.cpp b/cockatrice/src/interface/widgets/printing_selector/all_zones_card_amount_widget.cpp index 579106540..bad88ddbb 100644 --- a/cockatrice/src/interface/widgets/printing_selector/all_zones_card_amount_widget.cpp +++ b/cockatrice/src/interface/widgets/printing_selector/all_zones_card_amount_widget.cpp @@ -1,8 +1,21 @@ #include "all_zones_card_amount_widget.h" #include "../general/display/shadow_background_label.h" +#include "card_amount_widget.h" +#include "libcockatrice/card/card_info.h" +#include "libcockatrice/card/printing/exact_card.h" +#include "libcockatrice/deck_list/tree/inner_deck_list_node.h" +#include +#include +#include +#include #include +#include +#include +#include + +class DeckStateManager; /** * @brief Constructor for the AllZonesCardAmountWidget class. diff --git a/cockatrice/src/interface/widgets/printing_selector/all_zones_card_amount_widget.h b/cockatrice/src/interface/widgets/printing_selector/all_zones_card_amount_widget.h index 325dd1c1b..cefabe293 100644 --- a/cockatrice/src/interface/widgets/printing_selector/all_zones_card_amount_widget.h +++ b/cockatrice/src/interface/widgets/printing_selector/all_zones_card_amount_widget.h @@ -7,11 +7,15 @@ #ifndef ALL_ZONES_CARD_AMOUNT_WIDGET_H #define ALL_ZONES_CARD_AMOUNT_WIDGET_H -#include "../../deck_loader/deck_loader.h" -#include "card_amount_widget.h" - #include -#include +#include + +class CardAmountWidget; +class DeckStateManager; +class ExactCard; +class QLabel; +class QSlider; +class QVBoxLayout; class AllZonesCardAmountWidget : public QWidget { diff --git a/cockatrice/src/interface/widgets/printing_selector/card_amount_widget.cpp b/cockatrice/src/interface/widgets/printing_selector/card_amount_widget.cpp index ff47e7b9c..4b5040741 100644 --- a/cockatrice/src/interface/widgets/printing_selector/card_amount_widget.cpp +++ b/cockatrice/src/interface/widgets/printing_selector/card_amount_widget.cpp @@ -1,9 +1,30 @@ #include "card_amount_widget.h" #include "../deck_editor/deck_state_manager.h" +#include "../general/display/dynamic_font_size_push_button.h" +#include "deck_list_model.h" +#include "libcockatrice/card/printing/printing_info.h" +#include "libcockatrice/card/set/card_set.h" +#include "libcockatrice/deck_list/tree/inner_deck_list_node.h" +#include +#include +#include +#include +#include +#include #include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +class QModelIndex; /** * @brief Constructs a widget for displaying and controlling the card count in a specific zone. diff --git a/cockatrice/src/interface/widgets/printing_selector/card_amount_widget.h b/cockatrice/src/interface/widgets/printing_selector/card_amount_widget.h index 2780e3ad2..6f5889fc7 100644 --- a/cockatrice/src/interface/widgets/printing_selector/card_amount_widget.h +++ b/cockatrice/src/interface/widgets/printing_selector/card_amount_widget.h @@ -8,15 +8,17 @@ #ifndef CARD_AMOUNT_WIDGET_H #define CARD_AMOUNT_WIDGET_H -#include "../../../interface/widgets/tabs/abstract_tab_deck_editor.h" -#include "../general/display/dynamic_font_size_push_button.h" +#include "libcockatrice/card/printing/exact_card.h" -#include -#include -#include +#include #include -#include -#include +#include + +class DeckStateManager; +class DynamicFontSizePushButton; +class QHBoxLayout; +class QLabel; +class QSlider; class CardAmountWidget : public QWidget { diff --git a/cockatrice/src/interface/widgets/printing_selector/printing_selector.cpp b/cockatrice/src/interface/widgets/printing_selector/printing_selector.cpp index f16b4885c..27ae61b94 100644 --- a/cockatrice/src/interface/widgets/printing_selector/printing_selector.cpp +++ b/cockatrice/src/interface/widgets/printing_selector/printing_selector.cpp @@ -1,19 +1,38 @@ #include "printing_selector.h" #include "../../../client/settings/cache_settings.h" -#include "../../../interface/card_picture_loader/card_picture_loader.h" -#include "../../../interface/widgets/dialogs/dlg_select_set_for_cards.h" +#include "../cards/card_size_widget.h" #include "../deck_editor/deck_state_manager.h" +#include "../general/layout_containers/flow_widget.h" +#include "../quick_settings/settings_button_widget.h" +#include "../tabs/abstract_tab_deck_editor.h" +#include "deck_list_model.h" +#include "libcockatrice/card/card_info.h" +#include "libcockatrice/card/printing/exact_card.h" +#include "libcockatrice/card/printing/printing_info.h" +#include "libcockatrice/deck_list/tree/deck_list_card_node.h" +#include "libcockatrice/deck_list/tree/inner_deck_list_node.h" #include "printing_selector_card_display_widget.h" #include "printing_selector_card_search_widget.h" #include "printing_selector_card_selection_widget.h" #include "printing_selector_card_sorting_widget.h" #include "printing_selector_placeholder_widget.h" -#include +#include +#include +#include +#include +#include +#include #include +#include +#include +#include +#include +#include #include #include +#include /** * @brief Constructs a PrintingSelector widget to display and manage card printings. diff --git a/cockatrice/src/interface/widgets/printing_selector/printing_selector.h b/cockatrice/src/interface/widgets/printing_selector/printing_selector.h index 14d73f836..b9cb27ecd 100644 --- a/cockatrice/src/interface/widgets/printing_selector/printing_selector.h +++ b/cockatrice/src/interface/widgets/printing_selector/printing_selector.h @@ -7,18 +7,20 @@ #ifndef PRINTING_SELECTOR_H #define PRINTING_SELECTOR_H -#include "../cards/card_size_widget.h" -#include "../general/layout_containers/flow_widget.h" -#include "../quick_settings/settings_button_widget.h" -#include "printing_selector_placeholder_widget.h" - -#include -#include -#include -#include #include #include -#include +#include + +class CardSizeWidget; +class FlowWidget; +class PrintingSelectorPlaceholderWidget; +class QCheckBox; +class QHBoxLayout; +class QString; +class QTimer; +class QVBoxLayout; +class SettingsButtonWidget; +template class QMap; #define BATCH_SIZE 10 @@ -33,8 +35,8 @@ class DeckStateManager; class PrintingSelectorCardSearchWidget; class PrintingSelectorCardSelectionWidget; class PrintingSelectorCardSortingWidget; -class PrintingSelectorViewOptionsWidget; class AbstractTabDeckEditor; + class PrintingSelector : public QWidget { Q_OBJECT diff --git a/cockatrice/src/interface/widgets/printing_selector/printing_selector_card_display_widget.cpp b/cockatrice/src/interface/widgets/printing_selector/printing_selector_card_display_widget.cpp index edeba86d1..1c3cb635d 100644 --- a/cockatrice/src/interface/widgets/printing_selector/printing_selector_card_display_widget.cpp +++ b/cockatrice/src/interface/widgets/printing_selector/printing_selector_card_display_widget.cpp @@ -1,11 +1,22 @@ #include "printing_selector_card_display_widget.h" +#include "libcockatrice/card/card_info.h" +#include "libcockatrice/card/printing/printing_info.h" +#include "libcockatrice/card/set/card_set.h" +#include "printing_selector.h" #include "printing_selector_card_overlay_widget.h" #include "set_name_and_collectors_number_display_widget.h" -#include +#include +#include +#include +#include #include -#include +#include + +class AbstractTabDeckEditor; +class DeckStateManager; +class QSlider; /** * @brief Constructs a PrintingSelectorCardDisplayWidget to display card information. diff --git a/cockatrice/src/interface/widgets/printing_selector/printing_selector_card_display_widget.h b/cockatrice/src/interface/widgets/printing_selector/printing_selector_card_display_widget.h index 4de561f4f..f0a378fd3 100644 --- a/cockatrice/src/interface/widgets/printing_selector/printing_selector_card_display_widget.h +++ b/cockatrice/src/interface/widgets/printing_selector/printing_selector_card_display_widget.h @@ -7,12 +7,25 @@ #ifndef PRINTING_SELECTOR_CARD_DISPLAY_WIDGET_H #define PRINTING_SELECTOR_CARD_DISPLAY_WIDGET_H -#include "../../../interface/widgets/tabs/abstract_tab_deck_editor.h" -#include "printing_selector_card_overlay_widget.h" -#include "set_name_and_collectors_number_display_widget.h" +#include "libcockatrice/card/printing/exact_card.h" + +// IWYU pragma: keep +// ZoneCounts appears inside a QMap in a slot signature, so the moc-generated +// code needs the complete type. +#include "printing_selector.h" #include -#include +#include + +class AbstractTabDeckEditor; +class DeckStateManager; +class PrintingSelectorCardOverlayWidget; +class QSlider; +class QString; +class QVBoxLayout; +class SetNameAndCollectorsNumberDisplayWidget; +struct ZoneCounts; +template class QMap; class PrintingSelectorCardDisplayWidget : public QWidget { diff --git a/cockatrice/src/interface/widgets/printing_selector/printing_selector_card_overlay_widget.cpp b/cockatrice/src/interface/widgets/printing_selector/printing_selector_card_overlay_widget.cpp index e8816847e..bec9100a6 100644 --- a/cockatrice/src/interface/widgets/printing_selector/printing_selector_card_overlay_widget.cpp +++ b/cockatrice/src/interface/widgets/printing_selector/printing_selector_card_overlay_widget.cpp @@ -3,23 +3,46 @@ #include "../../../client/settings/cache_settings.h" #include "../../card_picture_loader/card_picture_loader.h" #include "../cards/card_info_picture_widget.h" -#include "printing_selector_card_display_widget.h" +#include "../tabs/abstract_tab_deck_editor.h" +#include "all_zones_card_amount_widget.h" +#include "libcockatrice/card/card_info.h" +#include "libcockatrice/card/database/card_database_querier.h" +#include "libcockatrice/card/printing/printing_info.h" +#include "libcockatrice/card/set/card_set.h" +#include #include +#include #include +#include +#include #include #include +#include #include #include #include +#include #include +#include +#include #include +#include +#include +#include +#include +#include +#include #include +#include +#include #include #include #include #include -#include +#include + +class DeckStateManager; namespace { diff --git a/cockatrice/src/interface/widgets/printing_selector/printing_selector_card_overlay_widget.h b/cockatrice/src/interface/widgets/printing_selector/printing_selector_card_overlay_widget.h index fbcfa9230..20d8f7b4b 100644 --- a/cockatrice/src/interface/widgets/printing_selector/printing_selector_card_overlay_widget.h +++ b/cockatrice/src/interface/widgets/printing_selector/printing_selector_card_overlay_widget.h @@ -7,14 +7,20 @@ #ifndef PRINTING_SELECTOR_CARD_OVERLAY_WIDGET_H #define PRINTING_SELECTOR_CARD_OVERLAY_WIDGET_H -#include "../../../interface/widgets/tabs/abstract_tab_deck_editor.h" -#include "all_zones_card_amount_widget.h" -#include "set_name_and_collectors_number_display_widget.h" +#include "libcockatrice/card/printing/exact_card.h" -#include +#include +#include class QAction; class QMenu; +class AbstractTabDeckEditor; +class AllZonesCardAmountWidget; +class CardInfoPictureWidget; +class DeckStateManager; +class QLabel; +class QPoint; +class QSlider; class PrintingSelectorCardOverlayWidget : public QWidget { diff --git a/cockatrice/src/interface/widgets/printing_selector/printing_selector_card_search_widget.cpp b/cockatrice/src/interface/widgets/printing_selector/printing_selector_card_search_widget.cpp index 3c42f06dc..718e24ea0 100644 --- a/cockatrice/src/interface/widgets/printing_selector/printing_selector_card_search_widget.cpp +++ b/cockatrice/src/interface/widgets/printing_selector/printing_selector_card_search_widget.cpp @@ -1,5 +1,11 @@ #include "printing_selector_card_search_widget.h" +#include "printing_selector.h" + +#include +#include +#include + /** * @brief Constructs a PrintingSelectorCardSearchWidget for searching cards by set name or set code. * diff --git a/cockatrice/src/interface/widgets/printing_selector/printing_selector_card_search_widget.h b/cockatrice/src/interface/widgets/printing_selector/printing_selector_card_search_widget.h index 3efabe13c..d54cf5fbc 100644 --- a/cockatrice/src/interface/widgets/printing_selector/printing_selector_card_search_widget.h +++ b/cockatrice/src/interface/widgets/printing_selector/printing_selector_card_search_widget.h @@ -7,11 +7,14 @@ #ifndef PRINTING_SELECTOR_CARD_SEARCH_WIDGET_H #define PRINTING_SELECTOR_CARD_SEARCH_WIDGET_H -#include "printing_selector.h" - -#include -#include +#include #include +#include + +class PrintingSelector; +class QHBoxLayout; +class QLineEdit; +class QTimer; class PrintingSelectorCardSearchWidget : public QWidget { diff --git a/cockatrice/src/interface/widgets/printing_selector/printing_selector_card_selection_widget.cpp b/cockatrice/src/interface/widgets/printing_selector/printing_selector_card_selection_widget.cpp index 2eb2ef245..da66591b3 100644 --- a/cockatrice/src/interface/widgets/printing_selector/printing_selector_card_selection_widget.cpp +++ b/cockatrice/src/interface/widgets/printing_selector/printing_selector_card_selection_widget.cpp @@ -1,7 +1,12 @@ #include "printing_selector_card_selection_widget.h" #include "../../../interface/widgets/dialogs/dlg_select_set_for_cards.h" -#include "../tabs/abstract_tab_deck_editor.h" +#include "printing_selector.h" + +#include +#include + +class DeckStateManager; /** * @brief Constructs a PrintingSelectorCardSelectionWidget for navigating through cards in the deck. diff --git a/cockatrice/src/interface/widgets/printing_selector/printing_selector_card_selection_widget.h b/cockatrice/src/interface/widgets/printing_selector/printing_selector_card_selection_widget.h index 0aa56c9d8..c619c5327 100644 --- a/cockatrice/src/interface/widgets/printing_selector/printing_selector_card_selection_widget.h +++ b/cockatrice/src/interface/widgets/printing_selector/printing_selector_card_selection_widget.h @@ -7,11 +7,13 @@ #ifndef PRINTING_SELECTOR_CARD_SELECTION_WIDGET_H #define PRINTING_SELECTOR_CARD_SELECTION_WIDGET_H -#include "printing_selector.h" - -#include -#include #include +#include + +class DeckStateManager; +class PrintingSelector; +class QHBoxLayout; +class QPushButton; class PrintingSelectorCardSelectionWidget : public QWidget { diff --git a/cockatrice/src/interface/widgets/printing_selector/printing_selector_card_sorting_widget.cpp b/cockatrice/src/interface/widgets/printing_selector/printing_selector_card_sorting_widget.cpp index f4a05cfc7..f47ba0746 100644 --- a/cockatrice/src/interface/widgets/printing_selector/printing_selector_card_sorting_widget.cpp +++ b/cockatrice/src/interface/widgets/printing_selector/printing_selector_card_sorting_widget.cpp @@ -1,11 +1,26 @@ #include "printing_selector_card_sorting_widget.h" #include "../../../client/settings/cache_settings.h" +#include "deck_list_model.h" +#include "libcockatrice/card/set/card_set.h" +#include "libcockatrice/deck_list/tree/inner_deck_list_node.h" +#include "printing_selector.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include #include +#include +#include const QString PrintingSelectorCardSortingWidget::SORT_OPTIONS_ALPHABETICAL = tr("Alphabetical"); const QString PrintingSelectorCardSortingWidget::SORT_OPTIONS_PREFERENCE = tr("Preference"); diff --git a/cockatrice/src/interface/widgets/printing_selector/printing_selector_card_sorting_widget.h b/cockatrice/src/interface/widgets/printing_selector/printing_selector_card_sorting_widget.h index bb5b60cdc..1cd99457b 100644 --- a/cockatrice/src/interface/widgets/printing_selector/printing_selector_card_sorting_widget.h +++ b/cockatrice/src/interface/widgets/printing_selector/printing_selector_card_sorting_widget.h @@ -7,11 +7,20 @@ #ifndef PRINTING_SELECTOR_CARD_SORTING_WIDGET_H #define PRINTING_SELECTOR_CARD_SORTING_WIDGET_H -#include "printing_selector.h" +#include "libcockatrice/card/card_info.h" +#include "libcockatrice/card/printing/printing_info.h" -#include -#include +#include +#include +#include #include +#include + +class DeckListModel; +class PrintingSelector; +class QComboBox; +class QHBoxLayout; +class QPushButton; class PrintingSelectorCardSortingWidget : public QWidget { diff --git a/cockatrice/src/interface/widgets/printing_selector/printing_selector_placeholder_widget.cpp b/cockatrice/src/interface/widgets/printing_selector/printing_selector_placeholder_widget.cpp index aee34bccd..7f9ad66c8 100644 --- a/cockatrice/src/interface/widgets/printing_selector/printing_selector_placeholder_widget.cpp +++ b/cockatrice/src/interface/widgets/printing_selector/printing_selector_placeholder_widget.cpp @@ -1,5 +1,10 @@ #include "printing_selector_placeholder_widget.h" +#include +#include +#include +#include + PrintingSelectorPlaceholderWidget::PrintingSelectorPlaceholderWidget(QWidget *parent) : QWidget(parent) { setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); diff --git a/cockatrice/src/interface/widgets/printing_selector/printing_selector_placeholder_widget.h b/cockatrice/src/interface/widgets/printing_selector/printing_selector_placeholder_widget.h index abf030c69..6702d325a 100644 --- a/cockatrice/src/interface/widgets/printing_selector/printing_selector_placeholder_widget.h +++ b/cockatrice/src/interface/widgets/printing_selector/printing_selector_placeholder_widget.h @@ -1,9 +1,11 @@ #ifndef COCKATRICE_PRINTING_SELECTOR_PLACEHOLDER_WIDGET_H #define COCKATRICE_PRINTING_SELECTOR_PLACEHOLDER_WIDGET_H -#include -#include #include +#include + +class QLabel; +class QVBoxLayout; class PrintingSelectorPlaceholderWidget : public QWidget { diff --git a/cockatrice/src/interface/widgets/printing_selector/set_name_and_collectors_number_display_widget.cpp b/cockatrice/src/interface/widgets/printing_selector/set_name_and_collectors_number_display_widget.cpp index e12775a04..9bc92ad90 100644 --- a/cockatrice/src/interface/widgets/printing_selector/set_name_and_collectors_number_display_widget.cpp +++ b/cockatrice/src/interface/widgets/printing_selector/set_name_and_collectors_number_display_widget.cpp @@ -1,6 +1,11 @@ #include "set_name_and_collectors_number_display_widget.h" -#include +#include +#include +#include +#include +#include +#include /** * @class SetNameAndCollectorsNumberDisplayWidget diff --git a/cockatrice/src/interface/widgets/printing_selector/set_name_and_collectors_number_display_widget.h b/cockatrice/src/interface/widgets/printing_selector/set_name_and_collectors_number_display_widget.h index 140f190df..54e580b67 100644 --- a/cockatrice/src/interface/widgets/printing_selector/set_name_and_collectors_number_display_widget.h +++ b/cockatrice/src/interface/widgets/printing_selector/set_name_and_collectors_number_display_widget.h @@ -8,10 +8,12 @@ #ifndef SET_NAME_AND_COLLECTORS_NUMBER_DISPLAY_WIDGET_H #define SET_NAME_AND_COLLECTORS_NUMBER_DISPLAY_WIDGET_H -#include -#include -#include +#include #include +#include + +class QLabel; +class QVBoxLayout; class SetNameAndCollectorsNumberDisplayWidget : public QWidget { diff --git a/cockatrice/src/interface/widgets/quick_settings/settings_button_widget.cpp b/cockatrice/src/interface/widgets/quick_settings/settings_button_widget.cpp index 881c3e3ac..981ed843c 100644 --- a/cockatrice/src/interface/widgets/quick_settings/settings_button_widget.cpp +++ b/cockatrice/src/interface/widgets/quick_settings/settings_button_widget.cpp @@ -1,11 +1,21 @@ #include "settings_button_widget.h" #include "../../pixel_map_generator.h" +#include "settings_popup_widget.h" #include #include #include +#include +#include +#include +#include #include +#include +#include +#include +#include +#include SettingsButtonWidget::SettingsButtonWidget(QWidget *parent) : QWidget(parent), button(new QToolButton(this)), popup(new SettingsPopupWidget(nullptr)) diff --git a/cockatrice/src/interface/widgets/quick_settings/settings_button_widget.h b/cockatrice/src/interface/widgets/quick_settings/settings_button_widget.h index 1dc52ac72..015300bf8 100644 --- a/cockatrice/src/interface/widgets/quick_settings/settings_button_widget.h +++ b/cockatrice/src/interface/widgets/quick_settings/settings_button_widget.h @@ -8,10 +8,14 @@ #ifndef SETTINGS_BUTTON_WIDGET_H #define SETTINGS_BUTTON_WIDGET_H -#include "settings_popup_widget.h" - -#include +#include #include +#include + +class QHBoxLayout; +class QPixmap; +class QToolButton; +class SettingsPopupWidget; class SettingsButtonWidget : public QWidget { diff --git a/cockatrice/src/interface/widgets/quick_settings/settings_popup_widget.cpp b/cockatrice/src/interface/widgets/quick_settings/settings_popup_widget.cpp index 8389caea9..7ace155a7 100644 --- a/cockatrice/src/interface/widgets/quick_settings/settings_popup_widget.cpp +++ b/cockatrice/src/interface/widgets/quick_settings/settings_popup_widget.cpp @@ -1,10 +1,14 @@ #include "settings_popup_widget.h" #include -#include +#include #include +#include #include #include +#include +#include +#include SettingsPopupWidget::SettingsPopupWidget(QWidget *parent) : QWidget(parent, Qt::Popup | Qt::FramelessWindowHint) { diff --git a/cockatrice/src/interface/widgets/quick_settings/settings_popup_widget.h b/cockatrice/src/interface/widgets/quick_settings/settings_popup_widget.h index 01e86abfe..61b2cb013 100644 --- a/cockatrice/src/interface/widgets/quick_settings/settings_popup_widget.h +++ b/cockatrice/src/interface/widgets/quick_settings/settings_popup_widget.h @@ -8,10 +8,11 @@ #ifndef SETTINGS_POPUP_WIDGET_H #define SETTINGS_POPUP_WIDGET_H -#include -#include -#include #include +#include + +class QScrollArea; +class QVBoxLayout; class SettingsPopupWidget : public QWidget { diff --git a/cockatrice/src/interface/widgets/replay/replay_manager.cpp b/cockatrice/src/interface/widgets/replay/replay_manager.cpp index c51b96b6c..f3f1da2c4 100644 --- a/cockatrice/src/interface/widgets/replay/replay_manager.cpp +++ b/cockatrice/src/interface/widgets/replay/replay_manager.cpp @@ -1,10 +1,16 @@ #include "replay_manager.h" #include "../../../client/settings/cache_settings.h" +#include "../../../game/player/event_processing_options.h" +#include "libcockatrice/protocol/pb/game_event.pb.h" +#include "libcockatrice/protocol/pb/game_event_container.pb.h" +#include "libcockatrice/protocol/pb/game_replay.pb.h" #include +#include #include #include +#include static constexpr int TIMER_INTERVAL_MS = 200; static constexpr int EMPTY_SECTION_MARGIN_MS = 500; diff --git a/cockatrice/src/interface/widgets/replay/replay_manager.h b/cockatrice/src/interface/widgets/replay/replay_manager.h index 81e66824d..3b33deada 100644 --- a/cockatrice/src/interface/widgets/replay/replay_manager.h +++ b/cockatrice/src/interface/widgets/replay/replay_manager.h @@ -3,11 +3,14 @@ #include "../../../game/player/event_processing_options.h" +#include #include -#include +#include +#include class GameReplay; class QTimer; +class GameEventContainer; /** * @brief This class handles all logic to do with playing back replays diff --git a/cockatrice/src/interface/widgets/replay/replay_quick_settings_widget.cpp b/cockatrice/src/interface/widgets/replay/replay_quick_settings_widget.cpp index 5d58705d2..5b3829af2 100644 --- a/cockatrice/src/interface/widgets/replay/replay_quick_settings_widget.cpp +++ b/cockatrice/src/interface/widgets/replay/replay_quick_settings_widget.cpp @@ -1,10 +1,14 @@ #include "replay_quick_settings_widget.h" #include "../../../client/settings/cache_settings.h" +#include "../quick_settings/settings_button_widget.h" +#include "libcockatrice/utility/macros.h" +#include #include #include #include +#include #include #include diff --git a/cockatrice/src/interface/widgets/replay/replay_quick_settings_widget.h b/cockatrice/src/interface/widgets/replay/replay_quick_settings_widget.h index a337ea0a6..d0be7d58d 100644 --- a/cockatrice/src/interface/widgets/replay/replay_quick_settings_widget.h +++ b/cockatrice/src/interface/widgets/replay/replay_quick_settings_widget.h @@ -5,7 +5,12 @@ #include #include +#include +#include #include +#include + +class QWidget; class ReplayQuickSettingsWidget : public SettingsButtonWidget { diff --git a/cockatrice/src/interface/widgets/replay/replay_timeline_widget.cpp b/cockatrice/src/interface/widgets/replay/replay_timeline_widget.cpp index fe4ac330b..48a43dba8 100644 --- a/cockatrice/src/interface/widgets/replay/replay_timeline_widget.cpp +++ b/cockatrice/src/interface/widgets/replay/replay_timeline_widget.cpp @@ -1,9 +1,15 @@ #include "replay_timeline_widget.h" -#include "../../../client/settings/cache_settings.h" - +#include +#include +#include #include #include +#include +#include +#include +#include +#include static constexpr int BIN_LENGTH = 5000; static constexpr int MIN_RESOLUTION_MS = 1000; diff --git a/cockatrice/src/interface/widgets/replay/replay_timeline_widget.h b/cockatrice/src/interface/widgets/replay/replay_timeline_widget.h index 47d19a741..2c277228f 100644 --- a/cockatrice/src/interface/widgets/replay/replay_timeline_widget.h +++ b/cockatrice/src/interface/widgets/replay/replay_timeline_widget.h @@ -7,13 +7,9 @@ #ifndef REPLAY_TIMELINE_WIDGET #define REPLAY_TIMELINE_WIDGET -#include "../../../game/player/event_processing_options.h" - -#include +#include #include - -class QPaintEvent; -class QTimer; +#include class ReplayTimelineWidget : public QWidget { diff --git a/cockatrice/src/interface/widgets/replay/replay_widget.cpp b/cockatrice/src/interface/widgets/replay/replay_widget.cpp index c92771f8c..07b4e72ce 100644 --- a/cockatrice/src/interface/widgets/replay/replay_widget.cpp +++ b/cockatrice/src/interface/widgets/replay/replay_widget.cpp @@ -3,12 +3,21 @@ #include "../../../client/settings/cache_settings.h" #include "../../../client/settings/shortcuts_settings.h" #include "../../pixel_map_generator.h" -#include "../interface/widgets/tabs/tab_game.h" +#include "libcockatrice/settings/interface_settings.h" #include "replay_manager.h" #include "replay_quick_settings_widget.h" +#include "replay_timeline_widget.h" +#include #include +#include +#include +#include +#include #include +#include + +class GameReplay; ReplayWidget::ReplayWidget(QWidget *parent, GameReplay *replay) : QWidget(parent), replayPlayButton(nullptr), replayFastForwardButton(nullptr), aReplaySkipForward(nullptr), diff --git a/cockatrice/src/interface/widgets/replay/replay_widget.h b/cockatrice/src/interface/widgets/replay/replay_widget.h index 6d2b7a043..74aace570 100644 --- a/cockatrice/src/interface/widgets/replay/replay_widget.h +++ b/cockatrice/src/interface/widgets/replay/replay_widget.h @@ -8,15 +8,18 @@ #ifndef REPLAY_WIDGET_H #define REPLAY_WIDGET_H -#include "replay_timeline_widget.h" +#include "../../../game/player/event_processing_options.h" -#include #include -#include +#include class ReplayManager; class ReplayQuickSettingsWidget; -class TabGame; +class GameEventContainer; +class GameReplay; +class QAction; +class QToolButton; +class ReplayTimelineWidget; /** * @brief The top-level widget that is put in the replay dock widget. diff --git a/cockatrice/src/interface/widgets/server/chat_view/chat_view.cpp b/cockatrice/src/interface/widgets/server/chat_view/chat_view.cpp index 91a7cb965..037a4a1e5 100644 --- a/cockatrice/src/interface/widgets/server/chat_view/chat_view.cpp +++ b/cockatrice/src/interface/widgets/server/chat_view/chat_view.cpp @@ -4,22 +4,47 @@ #include "../../client/sound_engine.h" #include "../../interface/card_localization.h" #include "../../interface/pixel_map_generator.h" -#include "../../interface/widgets/tabs/tab_account.h" +#include "../../tabs/tab_supervisor.h" #include "../user/user_context_menu.h" #include "../user/user_list_manager.h" #include "../user/user_list_proxy.h" +#include "libcockatrice/card/card_info.h" +#include "libcockatrice/card/database/card_database_querier.h" +#include "libcockatrice/protocol/pb/event_room_say.pb.h" +#include "room_message_type.h" #include +#include +#include #include #include +#include +#include +#include +#include #include +#include +#include +#include +#include +#include #include +#include +#include +#include #include #include #include +#include +#include #include #include #include +#include +#include +#include + +class QPoint; const QColor DEFAULT_MENTION_COLOR = QColor(194, 31, 47); diff --git a/cockatrice/src/interface/widgets/server/chat_view/chat_view.h b/cockatrice/src/interface/widgets/server/chat_view/chat_view.h index 06e3a0ed8..3fa7224e5 100644 --- a/cockatrice/src/interface/widgets/server/chat_view/chat_view.h +++ b/cockatrice/src/interface/widgets/server/chat_view/chat_view.h @@ -8,22 +8,34 @@ #ifndef CHATVIEW_H #define CHATVIEW_H -#include "../../interface/widgets/tabs/tab_supervisor.h" -#include "../user/user_list_widget.h" +#include "libcockatrice/protocol/pb/serverinfo_user.pb.h" -#include #include +#include +#include +#include +#include +#include +#include #include +#include #include #include +#include #include #include +#include class AbstractGame; -class QTextTable; -class QMouseEvent; class UserContextMenu; class UserListProxy; +class QAction; +class QPoint; +class QUrl; +class QWidget; +class TabSupervisor; +struct CardRef; +template class QFlags; class UserMessagePosition { diff --git a/cockatrice/src/interface/widgets/server/game_filter_configs.h b/cockatrice/src/interface/widgets/server/game_filter_configs.h index 5cb048669..1b7322c55 100644 --- a/cockatrice/src/interface/widgets/server/game_filter_configs.h +++ b/cockatrice/src/interface/widgets/server/game_filter_configs.h @@ -1,6 +1,11 @@ #ifndef COCKATRICE_GAME_FILTER_CONFIGS_H #define COCKATRICE_GAME_FILTER_CONFIGS_H +#include +#include +#include +#include +#include #include /** diff --git a/cockatrice/src/interface/widgets/server/game_selector.cpp b/cockatrice/src/interface/widgets/server/game_selector.cpp index 659325987..27464e14e 100644 --- a/cockatrice/src/interface/widgets/server/game_selector.cpp +++ b/cockatrice/src/interface/widgets/server/game_selector.cpp @@ -1,32 +1,54 @@ #include "game_selector.h" +#include "../../../client/settings/cache_settings.h" #include "../../pixel_map_generator.h" #include "../interface/widgets/dialogs/dlg_create_game.h" #include "../interface/widgets/dialogs/dlg_filter_games.h" -#include "../interface/widgets/tabs/tab_account.h" -#include "../interface/widgets/tabs/tab_game.h" #include "../interface/widgets/tabs/tab_room.h" #include "../interface/widgets/tabs/tab_supervisor.h" #include "../interface/widgets/utility/get_text_with_max.h" #include "game_link.h" +#include "game_selector_quick_filter_toolbar.h" #include "games_model.h" +#include "libcockatrice/protocol/pb/event_add_to_list.pb.h" +#include "libcockatrice/protocol/pb/event_remove_from_list.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_user.pb.h" #include "user/user_list_manager.h" +#include #include #include #include #include #include +#include +#include +#include +#include #include +#include #include +#include +#include +#include #include +#include +#include +#include #include #include #include #include #include -#include #include +#include +#include +#include + +class QModelIndex; +class QPoint; +class QWidget; +template class QList; GameSelector::GameSelector(AbstractClient *_client, TabSupervisor *_tabSupervisor, diff --git a/cockatrice/src/interface/widgets/server/game_selector.h b/cockatrice/src/interface/widgets/server/game_selector.h index 9af39cf50..01e093b06 100644 --- a/cockatrice/src/interface/widgets/server/game_selector.h +++ b/cockatrice/src/interface/widgets/server/game_selector.h @@ -1,25 +1,34 @@ #ifndef GAMESELECTOR_H #define GAMESELECTOR_H -#include "game_selector_quick_filter_toolbar.h" #include "game_type_map.h" #include -#include -#include -#include +#include +// IWYU pragma: keep +// ServerInfo_User appears by value and inside QList in slot signatures, so the +// moc-generated code needs the complete type. +#include class QTreeView; class GamesModel; class GamesProxyModel; class QPushButton; -class QCheckBox; -class QLabel; class AbstractClient; class TabSupervisor; class TabRoom; class ServerInfo_Game; class Response; +class Event_AddToList; +class Event_RemoveFromList; +class GameSelectorQuickFilterToolBar; +class QModelIndex; +class QPoint; +class QString; +class QWidget; +class ServerInfo_User; +template class QMap; +template class QList; /** * @class GameSelector diff --git a/cockatrice/src/interface/widgets/server/game_selector_quick_filter_toolbar.cpp b/cockatrice/src/interface/widgets/server/game_selector_quick_filter_toolbar.cpp index d668b1c33..0fc3d879c 100644 --- a/cockatrice/src/interface/widgets/server/game_selector_quick_filter_toolbar.cpp +++ b/cockatrice/src/interface/widgets/server/game_selector_quick_filter_toolbar.cpp @@ -1,12 +1,22 @@ #include "game_selector_quick_filter_toolbar.h" +#include "game_filter_configs.h" #include "games_model.h" -#include "user/user_list_manager.h" #include #include #include #include +#include +#include +#include +#include +#include +#include +#include + +class TabSupervisor; +template class QMap; GameSelectorQuickFilterToolBar::GameSelectorQuickFilterToolBar(QWidget *parent, TabSupervisor *_tabSupervisor, diff --git a/cockatrice/src/interface/widgets/server/game_selector_quick_filter_toolbar.h b/cockatrice/src/interface/widgets/server/game_selector_quick_filter_toolbar.h index 9b7b6e61f..99ed179b5 100644 --- a/cockatrice/src/interface/widgets/server/game_selector_quick_filter_toolbar.h +++ b/cockatrice/src/interface/widgets/server/game_selector_quick_filter_toolbar.h @@ -1,12 +1,19 @@ #ifndef COCKATRICE_GAME_SELECTOR_QUICK_FILTER_TOOLBAR_H #define COCKATRICE_GAME_SELECTOR_QUICK_FILTER_TOOLBAR_H -#include "../tabs/tab_supervisor.h" -#include "games_model.h" - -#include -#include #include +#include +#include + +class GamesProxyModel; +class QCheckBox; +class QComboBox; +class QHBoxLayout; +class QLineEdit; +class QString; +class TabSupervisor; +struct GameFilterConfigs; +template class QMap; class GameSelectorQuickFilterToolBar : public QWidget { diff --git a/cockatrice/src/interface/widgets/server/games_model.cpp b/cockatrice/src/interface/widgets/server/games_model.cpp index 127badbb2..289dbee44 100644 --- a/cockatrice/src/interface/widgets/server/games_model.cpp +++ b/cockatrice/src/interface/widgets/server/games_model.cpp @@ -2,13 +2,26 @@ #include "../../../client/settings/cache_settings.h" #include "../interface/pixel_map_generator.h" -#include "../interface/widgets/tabs/tab_account.h" -#include "user/user_list_manager.h" -#include "user/user_list_widget.h" +#include "libcockatrice/protocol/pb/serverinfo_user.pb.h" +#include "user/user_list_proxy.h" +#include "user_level.h" +#include +#include #include +#include #include +#include +#include +#include +#include +#include +#include #include +#include +#include +#include +#include #include #include diff --git a/cockatrice/src/interface/widgets/server/games_model.h b/cockatrice/src/interface/widgets/server/games_model.h index b5f86c291..9bf54b83a 100644 --- a/cockatrice/src/interface/widgets/server/games_model.h +++ b/cockatrice/src/interface/widgets/server/games_model.h @@ -4,13 +4,18 @@ #include "game_filter_configs.h" #include "game_type_map.h" +#include #include -#include +#include +#include #include -#include +#include #include +#include +#include class UserListProxy; +class QObject; /** * @class GamesModel diff --git a/cockatrice/src/interface/widgets/server/handle_public_servers.cpp b/cockatrice/src/interface/widgets/server/handle_public_servers.cpp index f5d682c36..08b7837dd 100644 --- a/cockatrice/src/interface/widgets/server/handle_public_servers.cpp +++ b/cockatrice/src/interface/widgets/server/handle_public_servers.cpp @@ -2,10 +2,19 @@ #include "../../../client/settings/cache_settings.h" +#include +#include #include +#include +#include #include +#include +#include #include +#include +#include #include +#include #define PUBLIC_SERVERS_JSON "https://cockatrice.github.io/public-servers.json" diff --git a/cockatrice/src/interface/widgets/server/handle_public_servers.h b/cockatrice/src/interface/widgets/server/handle_public_servers.h index fa924b183..bacc7d3bf 100644 --- a/cockatrice/src/interface/widgets/server/handle_public_servers.h +++ b/cockatrice/src/interface/widgets/server/handle_public_servers.h @@ -9,8 +9,17 @@ #include "user/user_info_connection.h" +#include +#include +#include +#include +#include +#include +#include + class QNetworkReply; class QNetworkAccessManager; +class QVariant; /** * This class is used to update the servers.ini file and ensure diff --git a/cockatrice/src/interface/widgets/server/remote/remote_decklist_tree_widget.cpp b/cockatrice/src/interface/widgets/server/remote/remote_decklist_tree_widget.cpp index df9dfbf53..74e403ea8 100644 --- a/cockatrice/src/interface/widgets/server/remote/remote_decklist_tree_widget.cpp +++ b/cockatrice/src/interface/widgets/server/remote/remote_decklist_tree_widget.cpp @@ -1,14 +1,23 @@ #include "remote_decklist_tree_widget.h" +#include "libcockatrice/protocol/pb/response.pb.h" + +#include #include #include +#include +#include #include +#include #include #include #include #include #include +class QObject; +class QWidget; + RemoteDeckList_TreeModel::DirectoryNode::DirectoryNode(const QString &_name, RemoteDeckList_TreeModel::DirectoryNode *_parent) : RemoteDeckList_TreeModel::Node(_name, _parent) diff --git a/cockatrice/src/interface/widgets/server/remote/remote_decklist_tree_widget.h b/cockatrice/src/interface/widgets/server/remote/remote_decklist_tree_widget.h index 2cf09aff7..d553ffe9e 100644 --- a/cockatrice/src/interface/widgets/server/remote/remote_decklist_tree_widget.h +++ b/cockatrice/src/interface/widgets/server/remote/remote_decklist_tree_widget.h @@ -8,13 +8,23 @@ #ifndef REMOTEDECKLIST_TREEWIDGET_H #define REMOTEDECKLIST_TREEWIDGET_H +#include #include +#include +#include +#include +#include +#include #include +#include +#include class Response; class AbstractClient; class QSortFilterProxyModel; class ServerInfo_DeckStorage_TreeItem; +class QObject; +class QWidget; class RemoteDeckList_TreeModel : public QAbstractItemModel { @@ -22,6 +32,7 @@ class RemoteDeckList_TreeModel : public QAbstractItemModel public: class DirectoryNode; class FileNode; + class Node { protected: diff --git a/cockatrice/src/interface/widgets/server/remote/remote_replay_list_tree_widget.cpp b/cockatrice/src/interface/widgets/server/remote/remote_replay_list_tree_widget.cpp index d62bf81aa..c131c3cbf 100644 --- a/cockatrice/src/interface/widgets/server/remote/remote_replay_list_tree_widget.cpp +++ b/cockatrice/src/interface/widgets/server/remote/remote_replay_list_tree_widget.cpp @@ -1,16 +1,27 @@ #include "remote_replay_list_tree_widget.h" #include "../../../pixel_map_generator.h" +#include "libcockatrice/protocol/pb/response.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_replay_match.pb.h" +#include +#include #include #include +#include #include +#include +#include +#include #include #include #include #include #include +class QObject; +class QWidget; + const int RemoteReplayList_TreeModel::numberOfColumns = 6; RemoteReplayList_TreeModel::MatchNode::MatchNode(const ServerInfo_ReplayMatch &_matchInfo) diff --git a/cockatrice/src/interface/widgets/server/remote/remote_replay_list_tree_widget.h b/cockatrice/src/interface/widgets/server/remote/remote_replay_list_tree_widget.h index 10e698aee..e99702e60 100644 --- a/cockatrice/src/interface/widgets/server/remote/remote_replay_list_tree_widget.h +++ b/cockatrice/src/interface/widgets/server/remote/remote_replay_list_tree_widget.h @@ -9,21 +9,30 @@ #ifndef REMOTEREPLAYLIST_TREEWIDGET_H #define REMOTEREPLAYLIST_TREEWIDGET_H -#include +#include +#include +#include +#include +#include +#include #include #include #include +#include +#include class Response; class AbstractClient; class QSortFilterProxyModel; +class QObject; +class QWidget; class RemoteReplayList_TreeModel : public QAbstractItemModel { Q_OBJECT private: - class MatchNode; class ReplayNode; + class Node { protected: diff --git a/cockatrice/src/interface/widgets/server/user/user_avatar_provider.cpp b/cockatrice/src/interface/widgets/server/user/user_avatar_provider.cpp index c115caa47..cb5f84eef 100644 --- a/cockatrice/src/interface/widgets/server/user/user_avatar_provider.cpp +++ b/cockatrice/src/interface/widgets/server/user/user_avatar_provider.cpp @@ -1,8 +1,15 @@ #include "user_avatar_provider.h" +#include "libcockatrice/protocol/pb/response.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_user.pb.h" +#include "libcockatrice/protocol/pb/session_commands.pb.h" + +#include #include #include #include +#include +#include UserAvatarProvider::UserAvatarProvider(AbstractClient *client, QObject *parent) : QObject(parent), client(client) { diff --git a/cockatrice/src/interface/widgets/server/user/user_avatar_provider.h b/cockatrice/src/interface/widgets/server/user/user_avatar_provider.h index 44491e544..c1e75bc1c 100644 --- a/cockatrice/src/interface/widgets/server/user/user_avatar_provider.h +++ b/cockatrice/src/interface/widgets/server/user/user_avatar_provider.h @@ -5,6 +5,8 @@ #include #include #include +#include +#include class AbstractClient; diff --git a/cockatrice/src/interface/widgets/server/user/user_card_art_provider.cpp b/cockatrice/src/interface/widgets/server/user/user_card_art_provider.cpp index 2ba745715..d84bd5804 100644 --- a/cockatrice/src/interface/widgets/server/user/user_card_art_provider.cpp +++ b/cockatrice/src/interface/widgets/server/user/user_card_art_provider.cpp @@ -2,9 +2,22 @@ #include "../../../card_picture_loader/card_picture_loader.h" #include "../../cards/card_art_utils.h" +#include "libcockatrice/card/card_info.h" +#include "libcockatrice/card/database/card_database.h" +#include "libcockatrice/card/database/card_database_loader.h" +#include "libcockatrice/card/database/card_database_querier.h" +#include "libcockatrice/card/printing/exact_card.h" +#include "libcockatrice/card/printing/printing_info.h" +#include +#include #include +#include +#include +#include #include +#include +#include static QString makeKey(const QString &user, const QString &card, const QString &providerId) { diff --git a/cockatrice/src/interface/widgets/server/user/user_card_art_provider.h b/cockatrice/src/interface/widgets/server/user/user_card_art_provider.h index e8283a891..ce9225b00 100644 --- a/cockatrice/src/interface/widgets/server/user/user_card_art_provider.h +++ b/cockatrice/src/interface/widgets/server/user/user_card_art_provider.h @@ -1,12 +1,16 @@ #ifndef COCKATRICE_USER_CARD_ART_PROVIDER_H #define COCKATRICE_USER_CARD_ART_PROVIDER_H +#include #include #include #include #include #include -#include +#include +#include + +class ExactCard; class UserCardArtProvider : public QObject { diff --git a/cockatrice/src/interface/widgets/server/user/user_card_settings_dialog.cpp b/cockatrice/src/interface/widgets/server/user/user_card_settings_dialog.cpp index d49e3d540..f8b57cfc2 100644 --- a/cockatrice/src/interface/widgets/server/user/user_card_settings_dialog.cpp +++ b/cockatrice/src/interface/widgets/server/user/user_card_settings_dialog.cpp @@ -3,30 +3,50 @@ #include "../../../card_picture_loader/card_picture_loader.h" #include "../../cards/art_crop_attribution.h" #include "../../utility/completer_utils.h" -#include "card/card_search_model.h" #include "card_database_display_model.h" #include "card_database_model.h" +#include "libcockatrice/card/card_info.h" +#include "libcockatrice/card/database/card_database_querier.h" +#include "libcockatrice/card/printing/exact_card.h" +#include "libcockatrice/card/printing/printing_info.h" +#include "libcockatrice/card/set/card_set.h" #include "user_card_art_provider.h" #include "user_list_painter.h" +#include +#include +#include #include #include #include +#include #include #include -#include #include #include #include +#include +#include #include #include #include +#include +#include #include -#include +#include +#include +#include +#include +#include #include +#include #include +#include #include #include +#include +#include +#include namespace { diff --git a/cockatrice/src/interface/widgets/server/user/user_card_settings_dialog.h b/cockatrice/src/interface/widgets/server/user/user_card_settings_dialog.h index 24e14dce5..bfba8b007 100644 --- a/cockatrice/src/interface/widgets/server/user/user_card_settings_dialog.h +++ b/cockatrice/src/interface/widgets/server/user/user_card_settings_dialog.h @@ -3,24 +3,26 @@ #include "user_list_painter.h" -#include #include +#include #include +#include +#include +#include +#include +#include class QCompleter; -class QFocusEvent; class QGroupBox; -class QKeyEvent; -class QMouseEvent; class QLineEdit; class QDoubleSpinBox; class QLabel; class QPushButton; -class QWheelEvent; class CardDatabaseModel; class CardDatabaseDisplayModel; class CardSearchModel; class CardCompleterProxyModel; +class QComboBox; /** * @brief Interactive preview of the user list banner art. diff --git a/cockatrice/src/interface/widgets/server/user/user_context_menu.cpp b/cockatrice/src/interface/widgets/server/user/user_context_menu.cpp index f95ad88e4..c8fe97cda 100644 --- a/cockatrice/src/interface/widgets/server/user/user_context_menu.cpp +++ b/cockatrice/src/interface/widgets/server/user/user_context_menu.cpp @@ -1,20 +1,42 @@ #include "user_context_menu.h" +#include "../../../../game/abstract_game.h" +#include "../../../../game/game_event_handler.h" +#include "../../../../game/game_meta_info.h" #include "../../dialogs/dlg_report_user.h" -#include "../../interface/widgets/tabs/tab_account.h" -#include "../../interface/widgets/tabs/tab_game.h" #include "../../interface/widgets/tabs/tab_supervisor.h" #include "../chat_view/chat_view.h" +#include "../game_link.h" #include "../game_selector.h" +#include "../game_type_map.h" +#include "libcockatrice/protocol/pb/admin_commands.pb.h" +#include "libcockatrice/protocol/pb/response.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_ban.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_gametype.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_room.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_user.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_warning.pb.h" #include "user_info_box.h" +#include "user_level.h" #include "user_list_dialog.h" #include "user_list_manager.h" #include "user_list_proxy.h" #include +#include +#include +#include +#include +#include +#include +#include #include -#include -#include +#include +#include +#include +#include +#include +#include #include #include #include @@ -27,6 +49,10 @@ #include #include #include +#include +#include + +class QVariant; UserContextMenu::UserContextMenu(TabSupervisor *_tabSupervisor, QWidget *parent, AbstractGame *_game) : QObject(parent), client(_tabSupervisor->getClient()), tabSupervisor(_tabSupervisor), diff --git a/cockatrice/src/interface/widgets/server/user/user_context_menu.h b/cockatrice/src/interface/widgets/server/user/user_context_menu.h index 0922eae94..2536819a4 100644 --- a/cockatrice/src/interface/widgets/server/user/user_context_menu.h +++ b/cockatrice/src/interface/widgets/server/user/user_context_menu.h @@ -11,19 +11,22 @@ #include #include +#include #include #include +#include +#include + class AbstractGame; class UserListProxy; class AbstractClient; class ChatView; class CommandContainer; class QAction; -class QMenu; class QPoint; class Response; -class ServerInfo_User; class TabSupervisor; +class QWidget; class UserContextMenu : public QObject { diff --git a/cockatrice/src/interface/widgets/server/user/user_info_box.cpp b/cockatrice/src/interface/widgets/server/user/user_info_box.cpp index 3d89cecf5..ff3d9a224 100644 --- a/cockatrice/src/interface/widgets/server/user/user_info_box.cpp +++ b/cockatrice/src/interface/widgets/server/user/user_info_box.cpp @@ -5,20 +5,36 @@ #include "../../interface/widgets/dialogs/dlg_edit_password.h" #include "../../interface/widgets/dialogs/dlg_edit_user.h" #include "../../interface/widgets/utility/get_text_with_max.h" +#include "libcockatrice/protocol/pb/response.pb.h" +#include "libcockatrice/utility/days_years_between.h" #include "user_card_settings_dialog.h" +#include "user_level.h" +#include "user_list_painter.h" +#include +#include #include +#include +#include +#include #include #include -#include #include +#include +#include #include +#include +#include +#include +#include #include #include #include #include #include #include +#include +#include UserInfoBox::UserInfoBox(AbstractClient *_client, bool _editable, QWidget *parent, Qt::WindowFlags flags) : QWidget(parent, flags), client(_client), editable(_editable) diff --git a/cockatrice/src/interface/widgets/server/user/user_info_box.h b/cockatrice/src/interface/widgets/server/user/user_info_box.h index 955cb9d3d..6bc571a37 100644 --- a/cockatrice/src/interface/widgets/server/user/user_info_box.h +++ b/cockatrice/src/interface/widgets/server/user/user_info_box.h @@ -7,13 +7,15 @@ #ifndef USERINFOBOX_H #define USERINFOBOX_H -#include #include +#include #include +#include #include #include #include -#include +#include +#include class AbstractClient; class Response; diff --git a/cockatrice/src/interface/widgets/server/user/user_info_connection.cpp b/cockatrice/src/interface/widgets/server/user/user_info_connection.cpp index f934960f8..d23ac63ba 100644 --- a/cockatrice/src/interface/widgets/server/user/user_info_connection.cpp +++ b/cockatrice/src/interface/widgets/server/user/user_info_connection.cpp @@ -2,7 +2,10 @@ #include "../../../../client/settings/cache_settings.h" -#include +#include +#include +#include +#include #include #include diff --git a/cockatrice/src/interface/widgets/server/user/user_info_connection.h b/cockatrice/src/interface/widgets/server/user/user_info_connection.h index 6278815a9..b44d97d42 100644 --- a/cockatrice/src/interface/widgets/server/user/user_info_connection.h +++ b/cockatrice/src/interface/widgets/server/user/user_info_connection.h @@ -7,12 +7,11 @@ #ifndef USERCONNECTION_INFORMATION_H #define USERCONNECTION_INFORMATION_H -#include -#include -#include #include -#include -#include +#include +#include +#include +#include inline Q_LOGGING_CATEGORY(UserInfoConnectionLog, "user_info_connection"); diff --git a/cockatrice/src/interface/widgets/server/user/user_info_popup.cpp b/cockatrice/src/interface/widgets/server/user/user_info_popup.cpp index 967de2f2c..c3e880084 100644 --- a/cockatrice/src/interface/widgets/server/user/user_info_popup.cpp +++ b/cockatrice/src/interface/widgets/server/user/user_info_popup.cpp @@ -4,26 +4,61 @@ #include "../../interface/pixel_map_generator.h" #include "../../interface/theme_manager.h" #include "../../interface/widgets/tabs/tab_supervisor.h" +#include "libcockatrice/card/database/card_database_querier.h" +#include "libcockatrice/card/printing/exact_card.h" +#include "libcockatrice/protocol/pb/response.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_game.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_user.pb.h" +#include "libcockatrice/protocol/pb/session_commands.pb.h" +#include "user_level.h" #include "user_list_painter.h" #include +#include +#include +#include +#include +#include +#include #include #include +#include #include +#include +#include +#include +#include +#include +#include +#include #include #include -#include +#include +#include #include -#include -#include +#include +#include +#include +#include +#include #include +#include +#include +#include +#include #include #include +#include +#include #include #include -#include #include #include +#include +#include +#include + +class QAction; /// Qt stylesheets accept #aarrggbb, which is QColor::name(QColor::HexArgb). static QString colorStr(const QColor &color) diff --git a/cockatrice/src/interface/widgets/server/user/user_info_popup.h b/cockatrice/src/interface/widgets/server/user/user_info_popup.h index ed7320fba..f2a91d025 100644 --- a/cockatrice/src/interface/widgets/server/user/user_info_popup.h +++ b/cockatrice/src/interface/widgets/server/user/user_info_popup.h @@ -1,24 +1,29 @@ #ifndef COCKATRICE_USER_INFO_POPUP_H #define COCKATRICE_USER_INFO_POPUP_H -#include "../../interface/widgets/server/game_type_map.h" #include "user_list_painter.h" +#include #include -#include -#include +#include #include -#include +#include +#include #include -#include -#include -#include #include +#include +#include +#include class AbstractClient; class QLabel; class QPushButton; class TabSupervisor; +class QListView; +class QPoint; +class QStandardItemModel; +class Response; +template class QMap; // ── Roles ───────────────────────────────────────────────────────────────────── diff --git a/cockatrice/src/interface/widgets/server/user/user_list_dialog.cpp b/cockatrice/src/interface/widgets/server/user/user_list_dialog.cpp index fc5b520ad..605c89734 100644 --- a/cockatrice/src/interface/widgets/server/user/user_list_dialog.cpp +++ b/cockatrice/src/interface/widgets/server/user/user_list_dialog.cpp @@ -1,17 +1,26 @@ #include "user_list_dialog.h" +#include "libcockatrice/protocol/pb/serverinfo_user.pb.h" + #include #include +#include #include +#include #include #include #include #include #include #include +#include #include #include +#include #include +#include + +class QWidget; BanDialog::BanDialog(const ServerInfo_User &info, QWidget *parent) : QDialog(parent) { diff --git a/cockatrice/src/interface/widgets/server/user/user_list_dialog.h b/cockatrice/src/interface/widgets/server/user/user_list_dialog.h index fa7d5de92..e10fca5bb 100644 --- a/cockatrice/src/interface/widgets/server/user/user_list_dialog.h +++ b/cockatrice/src/interface/widgets/server/user/user_list_dialog.h @@ -2,7 +2,8 @@ #define COCKATRICE_USER_LIST_DIALOG_H #include -#include +#include +#include class QComboBox; class QLabel; @@ -11,6 +12,8 @@ class QRadioButton; class QSpinBox; class QLineEdit; class QCheckBox; +class QWidget; +class ServerInfo_User; class BanDialog : public QDialog { diff --git a/cockatrice/src/interface/widgets/server/user/user_list_manager.cpp b/cockatrice/src/interface/widgets/server/user/user_list_manager.cpp index 216420006..385a969fd 100644 --- a/cockatrice/src/interface/widgets/server/user/user_list_manager.cpp +++ b/cockatrice/src/interface/widgets/server/user/user_list_manager.cpp @@ -1,8 +1,11 @@ #include "user_list_manager.h" -#include "../../client/sound_engine.h" -#include "user_info_box.h" +#include "libcockatrice/protocol/pb/response.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_user.pb.h" +#include +#include +#include #include #include #include diff --git a/cockatrice/src/interface/widgets/server/user/user_list_manager.h b/cockatrice/src/interface/widgets/server/user/user_list_manager.h index 6238f0799..b2ff69286 100644 --- a/cockatrice/src/interface/widgets/server/user/user_list_manager.h +++ b/cockatrice/src/interface/widgets/server/user/user_list_manager.h @@ -10,18 +10,22 @@ #include "user_list_proxy.h" #include -#include +#include +#include +#include +// IWYU pragma: keep +// ServerInfo_User appears by value and inside QList in slot signatures, so the +// moc-generated code needs the complete type. #include class AbstractClient; class Event_AddToList; -class Event_ListRooms; class Event_RemoveFromList; class Event_UserJoined; class Event_UserLeft; class Response; class ServerInfo_User; -class TabSupervisor; +template class QList; class UserListManager : public QObject, public UserListProxy { diff --git a/cockatrice/src/interface/widgets/server/user/user_list_painter.cpp b/cockatrice/src/interface/widgets/server/user/user_list_painter.cpp index 34a3d6ae1..08eaaaff7 100644 --- a/cockatrice/src/interface/widgets/server/user/user_list_painter.cpp +++ b/cockatrice/src/interface/widgets/server/user/user_list_painter.cpp @@ -1,14 +1,35 @@ #include "user_list_painter.h" #include "../../interface/pixel_map_generator.h" +#include "libcockatrice/protocol/pb/serverinfo_user.pb.h" #include #include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include +#include +#include +#include #include +#include #include #include +#include +#include +#include +#include +#include static constexpr int RowHeight = 72; static constexpr int AvatarSize = 36; diff --git a/cockatrice/src/interface/widgets/server/user/user_list_painter.h b/cockatrice/src/interface/widgets/server/user/user_list_painter.h index 352a01f6b..e7293a097 100644 --- a/cockatrice/src/interface/widgets/server/user/user_list_painter.h +++ b/cockatrice/src/interface/widgets/server/user/user_list_painter.h @@ -5,16 +5,19 @@ #include #include -#include #include -#include #include +#include #include +#include +#include class QPainter; class QModelIndex; class QStyleOptionViewItem; class ServerInfo_User; +class QPixmap; +template class QMap; struct CardArtParams { diff --git a/cockatrice/src/interface/widgets/server/user/user_list_panel_widget.cpp b/cockatrice/src/interface/widgets/server/user/user_list_panel_widget.cpp index 937058024..78d45d120 100644 --- a/cockatrice/src/interface/widgets/server/user/user_list_panel_widget.cpp +++ b/cockatrice/src/interface/widgets/server/user/user_list_panel_widget.cpp @@ -1,12 +1,13 @@ #include "user_list_panel_widget.h" #include "../../../../client/settings/cache_settings.h" -#include "user_list_manager.h" #include "user_list_widget.h" #include +#include +#include +#include #include -#include #include namespace diff --git a/cockatrice/src/interface/widgets/server/user/user_list_panel_widget.h b/cockatrice/src/interface/widgets/server/user/user_list_panel_widget.h index 7ae14dfcf..088365bbc 100644 --- a/cockatrice/src/interface/widgets/server/user/user_list_panel_widget.h +++ b/cockatrice/src/interface/widgets/server/user/user_list_panel_widget.h @@ -8,7 +8,9 @@ #include "user_list_widget.h" +#include #include +#include class AbstractClient; class QLineEdit; diff --git a/cockatrice/src/interface/widgets/server/user/user_list_widget.cpp b/cockatrice/src/interface/widgets/server/user/user_list_widget.cpp index 3b8fc08b7..b3fd1d1a9 100644 --- a/cockatrice/src/interface/widgets/server/user/user_list_widget.cpp +++ b/cockatrice/src/interface/widgets/server/user/user_list_widget.cpp @@ -4,18 +4,64 @@ #include "../../interface/pixel_map_generator.h" #include "../../interface/theme_manager.h" #include "../../interface/widgets/tabs/tab_supervisor.h" +#include "user_avatar_provider.h" +#include "user_card_art_provider.h" #include "user_context_menu.h" +#include "user_info_popup.h" +#include "user_level.h" +#include "user_list_manager.h" #include "user_list_painter.h" +#include "user_list_proxy.h" +#include +#include +#include +#include +#include +#include +#include #include +#include +#include +#include +#include +#include +#include #include +#include +#include +#include +#include +#include #include +#include #include +#include #include +#include +#include +#include +#include +#include +#include #include +#include +#include +#include +#include +#include +#include #include +#include #include +#include +#include +#include #include +#include + +class QPixmap; +struct GameInviteOption; namespace UserListRoles { diff --git a/cockatrice/src/interface/widgets/server/user/user_list_widget.h b/cockatrice/src/interface/widgets/server/user/user_list_widget.h index 9802387b2..8093222ea 100644 --- a/cockatrice/src/interface/widgets/server/user/user_list_widget.h +++ b/cockatrice/src/interface/widgets/server/user/user_list_widget.h @@ -7,33 +7,34 @@ #ifndef USERLIST_H #define USERLIST_H -#include "../../cards/card_info_picture_art_crop_widget.h" -#include "../../interface/widgets/server/game_link.h" -#include "user_avatar_provider.h" -#include "user_card_art_provider.h" -#include "user_info_popup.h" -#include "user_list_manager.h" -#include "user_list_painter.h" +#include "libcockatrice/protocol/pb/serverinfo_user.pb.h" -#include #include +#include +#include #include +#include #include -#include #include #include -#include -#include +#include +#include -class QTreeWidget; -class ServerInfo_User; class AbstractClient; class TabSupervisor; -class Response; -class CommandContainer; class UserContextMenu; class UserListWidget; -class QShowEvent; +class QModelIndex; +class QPixmap; +class QPoint; +class QTimer; +class QWidget; +class UserAvatarProvider; +class UserCardArtProvider; +class UserInfoPopup; +class UserListManager; +struct CardArtParams; +struct GameInviteOption; class UserListItemDelegate : public QStyledItemDelegate { diff --git a/cockatrice/src/interface/widgets/settings_page/abstract_settings_page.cpp b/cockatrice/src/interface/widgets/settings_page/abstract_settings_page.cpp index 9a70e94c5..9c43d1f7b 100644 --- a/cockatrice/src/interface/widgets/settings_page/abstract_settings_page.cpp +++ b/cockatrice/src/interface/widgets/settings_page/abstract_settings_page.cpp @@ -2,14 +2,22 @@ #include "settings_search_model.h" +#include #include #include #include #include +#include #include +#include #include +#include #include #include +#include +#include +#include +#include /** * @brief Recursively collects all widgets within a layout diff --git a/cockatrice/src/interface/widgets/settings_page/abstract_settings_page.h b/cockatrice/src/interface/widgets/settings_page/abstract_settings_page.h index 3140f94f3..722a91e62 100644 --- a/cockatrice/src/interface/widgets/settings_page/abstract_settings_page.h +++ b/cockatrice/src/interface/widgets/settings_page/abstract_settings_page.h @@ -3,6 +3,7 @@ #include #include +#include #define WIKI_CUSTOM_PIC_URL "https://github.com/Cockatrice/Cockatrice/wiki/Custom-Picture-Download-URLs" #define WIKI_CUSTOM_SHORTCUTS "https://github.com/Cockatrice/Cockatrice/wiki/Custom-Keyboard-Shortcuts" diff --git a/cockatrice/src/interface/widgets/settings_page/appearance_settings_page.cpp b/cockatrice/src/interface/widgets/settings_page/appearance_settings_page.cpp index 415eef6b9..159db767d 100644 --- a/cockatrice/src/interface/widgets/settings_page/appearance_settings_page.cpp +++ b/cockatrice/src/interface/widgets/settings_page/appearance_settings_page.cpp @@ -1,29 +1,44 @@ #include "appearance_settings_page.h" #include "../../../client/settings/cache_settings.h" -#include "../../../client/settings/card_counter_settings.h" #include "../../client/settings/card_counter_settings.h" #include "../../palette_editor/palette_editor_dialog.h" +#include "../../theme_config.h" #include "../dialogs/override_printing_warning.h" #include "../general/home_tab_button_color.h" #include "../interface/theme_manager.h" #include "../interface/widgets/general/background_sources.h" #include "../playmat/playmat_collection_dialog.h" -#include "../playmat/playmat_settings_dialog.h" +#include "libcockatrice/interfaces/interface_interface_settings_provider.h" +#include "libcockatrice/utility/macros.h" +#include #include +#include #include +#include #include +#include #include -#include +#include #include +#include +#include +#include +#include +#include #include #include +#include +#include +#include +#include #include #include #include #include #include +#include AppearanceSettingsPage::AppearanceSettingsPage() { diff --git a/cockatrice/src/interface/widgets/settings_page/appearance_settings_page.h b/cockatrice/src/interface/widgets/settings_page/appearance_settings_page.h index bec4cd72f..096ba0915 100644 --- a/cockatrice/src/interface/widgets/settings_page/appearance_settings_page.h +++ b/cockatrice/src/interface/widgets/settings_page/appearance_settings_page.h @@ -5,11 +5,14 @@ #include #include -#include #include +#include #include #include #include +#include + +class QGroupBox; class AppearanceSettingsPage : public AbstractSettingsPage { diff --git a/cockatrice/src/interface/widgets/settings_page/deck_editor_settings_page.cpp b/cockatrice/src/interface/widgets/settings_page/deck_editor_settings_page.cpp index bdbb38c95..2020b2031 100644 --- a/cockatrice/src/interface/widgets/settings_page/deck_editor_settings_page.cpp +++ b/cockatrice/src/interface/widgets/settings_page/deck_editor_settings_page.cpp @@ -4,19 +4,39 @@ #include "../../pixel_map_generator.h" #include "update/card_spoiler/spoiler_background_updater.h" +#include +#include +#include +#include +#include +#include +#include #include #include +#include +#include #include +#include #include #include +#include +#include +#include #include #include +#include +#include +#include #include #include +#include +#include #include #include #include #include +#include +#include DeckEditorSettingsPage::DeckEditorSettingsPage() { diff --git a/cockatrice/src/interface/widgets/settings_page/deck_editor_settings_page.h b/cockatrice/src/interface/widgets/settings_page/deck_editor_settings_page.h index 23e33fa20..47f840191 100644 --- a/cockatrice/src/interface/widgets/settings_page/deck_editor_settings_page.h +++ b/cockatrice/src/interface/widgets/settings_page/deck_editor_settings_page.h @@ -4,10 +4,17 @@ #include "abstract_settings_page.h" #include -#include #include -#include #include +#include +#include + +class QAction; +class QGroupBox; +class QLineEdit; +class QListWidget; +class QListWidgetItem; +class QModelIndex; class DeckEditorSettingsPage : public AbstractSettingsPage { diff --git a/cockatrice/src/interface/widgets/settings_page/general_settings_page.cpp b/cockatrice/src/interface/widgets/settings_page/general_settings_page.cpp index 57099fb4a..a4597014a 100644 --- a/cockatrice/src/interface/widgets/settings_page/general_settings_page.cpp +++ b/cockatrice/src/interface/widgets/settings_page/general_settings_page.cpp @@ -6,13 +6,26 @@ #include "../server/user/user_info_connection.h" #include "update/client/release_channel.h" +#include #include +#include +#include #include #include #include +#include #include +#include +#include #include +#include +#include +#include #include +#include +#include +#include +#include #include #include #include @@ -22,6 +35,9 @@ #include #include #include +#include +#include +#include enum startupCardUpdateCheckBehaviorIndex { diff --git a/cockatrice/src/interface/widgets/settings_page/general_settings_page.h b/cockatrice/src/interface/widgets/settings_page/general_settings_page.h index 07e0ba3a9..fca300670 100644 --- a/cockatrice/src/interface/widgets/settings_page/general_settings_page.h +++ b/cockatrice/src/interface/widgets/settings_page/general_settings_page.h @@ -5,11 +5,16 @@ #include #include -#include #include #include -#include #include +#include +#include +#include + +class QGroupBox; +class QLineEdit; +class QPushButton; inline Q_LOGGING_CATEGORY(GeneralSettingsPageLog, "general_settings_page"); diff --git a/cockatrice/src/interface/widgets/settings_page/messages_settings_page.cpp b/cockatrice/src/interface/widgets/settings_page/messages_settings_page.cpp index 68e3f2ac7..9494155af 100644 --- a/cockatrice/src/interface/widgets/settings_page/messages_settings_page.cpp +++ b/cockatrice/src/interface/widgets/settings_page/messages_settings_page.cpp @@ -3,14 +3,27 @@ #include "../../../client/settings/cache_settings.h" #include "../../pixel_map_generator.h" #include "../interface/widgets/utility/get_text_with_max.h" +#include "libcockatrice/utility/macros.h" +#include +#include +#include #include +#include +#include #include +#include +#include +#include +#include #include +#include +#include #include #include #include #include +#include MessagesSettingsPage::MessagesSettingsPage() { diff --git a/cockatrice/src/interface/widgets/settings_page/messages_settings_page.h b/cockatrice/src/interface/widgets/settings_page/messages_settings_page.h index 4d491136f..e85e6cca7 100644 --- a/cockatrice/src/interface/widgets/settings_page/messages_settings_page.h +++ b/cockatrice/src/interface/widgets/settings_page/messages_settings_page.h @@ -4,10 +4,15 @@ #include "abstract_settings_page.h" #include -#include #include -#include +#include #include +#include + +class QAction; +class QGroupBox; +class QLineEdit; +class QListWidget; class MessagesSettingsPage : public AbstractSettingsPage { diff --git a/cockatrice/src/interface/widgets/settings_page/settings_search_delegate.cpp b/cockatrice/src/interface/widgets/settings_page/settings_search_delegate.cpp index 2fdff3bce..bf35b7557 100644 --- a/cockatrice/src/interface/widgets/settings_page/settings_search_delegate.cpp +++ b/cockatrice/src/interface/widgets/settings_page/settings_search_delegate.cpp @@ -7,7 +7,24 @@ #include "settings_search_model.h" +#include +#include +#include +#include +#include #include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +class QObject; SettingsSearchDelegate::SettingsSearchDelegate(QObject *parent) : QStyledItemDelegate(parent) { diff --git a/cockatrice/src/interface/widgets/settings_page/settings_search_delegate.h b/cockatrice/src/interface/widgets/settings_page/settings_search_delegate.h index aa296049a..2e48a3de9 100644 --- a/cockatrice/src/interface/widgets/settings_page/settings_search_delegate.h +++ b/cockatrice/src/interface/widgets/settings_page/settings_search_delegate.h @@ -6,8 +6,14 @@ #ifndef COCKATRICE_SETTINGS_SEARCH_DELEGATE_H #define COCKATRICE_SETTINGS_SEARCH_DELEGATE_H +#include #include +#include +#include #include +#include + +class QObject; /** * @brief Custom paint delegate for settings search result items diff --git a/cockatrice/src/interface/widgets/settings_page/settings_search_model.cpp b/cockatrice/src/interface/widgets/settings_page/settings_search_model.cpp index 71f859d4b..015a7d45d 100644 --- a/cockatrice/src/interface/widgets/settings_page/settings_search_model.cpp +++ b/cockatrice/src/interface/widgets/settings_page/settings_search_model.cpp @@ -6,7 +6,14 @@ #include "settings_search_model.h" #include +#include +#include +#include +#include #include +#include + +class QObject; SettingsSearchModel::SettingsSearchModel(QObject *parent) : QAbstractListModel(parent) { diff --git a/cockatrice/src/interface/widgets/settings_page/settings_search_model.h b/cockatrice/src/interface/widgets/settings_page/settings_search_model.h index 0b590f180..902a29312 100644 --- a/cockatrice/src/interface/widgets/settings_page/settings_search_model.h +++ b/cockatrice/src/interface/widgets/settings_page/settings_search_model.h @@ -7,9 +7,17 @@ #define COCKATRICE_SETTINGS_SEARCH_MODEL_H #include +#include #include +#include +#include #include -#include +#include +#include +#include + +class QObject; +class QWidget; /** * @brief Represents a single searchable setting entry diff --git a/cockatrice/src/interface/widgets/settings_page/shortcut_settings_page.cpp b/cockatrice/src/interface/widgets/settings_page/shortcut_settings_page.cpp index 1277d0e49..ea7ed745c 100644 --- a/cockatrice/src/interface/widgets/settings_page/shortcut_settings_page.cpp +++ b/cockatrice/src/interface/widgets/settings_page/shortcut_settings_page.cpp @@ -8,8 +8,17 @@ #include "../interface/widgets/utility/sequence_edit.h" #include +#include +#include +#include +#include #include +#include +#include +#include +#include #include +#include ShortcutSettingsPage::ShortcutSettingsPage() { diff --git a/cockatrice/src/interface/widgets/settings_page/shortcut_settings_page.h b/cockatrice/src/interface/widgets/settings_page/shortcut_settings_page.h index 05391df77..6ae7fbfa7 100644 --- a/cockatrice/src/interface/widgets/settings_page/shortcut_settings_page.h +++ b/cockatrice/src/interface/widgets/settings_page/shortcut_settings_page.h @@ -3,14 +3,18 @@ #include "abstract_settings_page.h" -#include -#include -#include -#include +#include +#include class SequenceEdit; class ShortcutTreeView; class SearchLineEdit; +class QGridLayout; +class QGroupBox; +class QHBoxLayout; +class QLabel; +class QPushButton; +class QVBoxLayout; class ShortcutSettingsPage : public AbstractSettingsPage { diff --git a/cockatrice/src/interface/widgets/settings_page/sound_settings_page.cpp b/cockatrice/src/interface/widgets/settings_page/sound_settings_page.cpp index 2bd776671..05725bb42 100644 --- a/cockatrice/src/interface/widgets/settings_page/sound_settings_page.cpp +++ b/cockatrice/src/interface/widgets/settings_page/sound_settings_page.cpp @@ -3,10 +3,21 @@ #include "../../../client/settings/cache_settings.h" #include "../client/sound_engine.h" +#include #include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include +#include SoundSettingsPage::SoundSettingsPage() { diff --git a/cockatrice/src/interface/widgets/settings_page/sound_settings_page.h b/cockatrice/src/interface/widgets/settings_page/sound_settings_page.h index f90bcbc5a..acaa4f7c4 100644 --- a/cockatrice/src/interface/widgets/settings_page/sound_settings_page.h +++ b/cockatrice/src/interface/widgets/settings_page/sound_settings_page.h @@ -5,10 +5,13 @@ #include #include -#include #include #include -#include +#include + +class QGroupBox; +class QSlider; +class QSpinBox; class SoundSettingsPage : public AbstractSettingsPage { diff --git a/cockatrice/src/interface/widgets/settings_page/storage_settings_page.cpp b/cockatrice/src/interface/widgets/settings_page/storage_settings_page.cpp index 4aad91115..a71296820 100644 --- a/cockatrice/src/interface/widgets/settings_page/storage_settings_page.cpp +++ b/cockatrice/src/interface/widgets/settings_page/storage_settings_page.cpp @@ -5,12 +5,21 @@ #include "../../card_picture_loader/card_picture_loader_local_schemes.h" #include "../interface/card_picture_loader/card_picture_loader.h" +#include #include #include +#include +#include +#include #include +#include +#include +#include +#include #include #include #include +#include StorageSettingsPage::StorageSettingsPage() { diff --git a/cockatrice/src/interface/widgets/settings_page/storage_settings_page.h b/cockatrice/src/interface/widgets/settings_page/storage_settings_page.h index 5c8a00981..1c9a35323 100644 --- a/cockatrice/src/interface/widgets/settings_page/storage_settings_page.h +++ b/cockatrice/src/interface/widgets/settings_page/storage_settings_page.h @@ -3,11 +3,13 @@ #include "abstract_settings_page.h" -#include -#include #include #include #include +#include + +class QComboBox; +class QGroupBox; class StorageSettingsPage : public AbstractSettingsPage { diff --git a/cockatrice/src/interface/widgets/settings_page/user_interface_settings_page.cpp b/cockatrice/src/interface/widgets/settings_page/user_interface_settings_page.cpp index 03b9455fa..0a5f57e1f 100644 --- a/cockatrice/src/interface/widgets/settings_page/user_interface_settings_page.cpp +++ b/cockatrice/src/interface/widgets/settings_page/user_interface_settings_page.cpp @@ -3,13 +3,22 @@ #include "../../../client/settings/cache_settings.h" #include "../interface/widgets/tabs/tab_supervisor.h" #include "../tabs/api/commander_spellbook/commander_spellbook_bracket_explainer.h" +#include "libcockatrice/utility/macros.h" +#include #include +#include +#include +#include +#include +#include +#include #include #include #include #include #include +#include enum visualDeckStoragePromptForConversionIndex { diff --git a/cockatrice/src/interface/widgets/settings_page/user_interface_settings_page.h b/cockatrice/src/interface/widgets/settings_page/user_interface_settings_page.h index 277c5461e..297d80c35 100644 --- a/cockatrice/src/interface/widgets/settings_page/user_interface_settings_page.h +++ b/cockatrice/src/interface/widgets/settings_page/user_interface_settings_page.h @@ -5,13 +5,14 @@ #include #include -#include #include #include #include #include -#include #include +#include + +class QGroupBox; class UserInterfaceSettingsPage : public AbstractSettingsPage { diff --git a/cockatrice/src/interface/widgets/tabs/abstract_tab_deck_editor.cpp b/cockatrice/src/interface/widgets/tabs/abstract_tab_deck_editor.cpp index 6423c581b..4044f03db 100644 --- a/cockatrice/src/interface/widgets/tabs/abstract_tab_deck_editor.cpp +++ b/cockatrice/src/interface/widgets/tabs/abstract_tab_deck_editor.cpp @@ -11,35 +11,49 @@ #include "../../../client/settings/cache_settings.h" #include "../../../client/settings/shortcuts_settings.h" +#include "../../deck_loader/deck_file_format.h" +#include "../../deck_loader/deck_loader.h" +#include "../../deck_loader/loaded_deck.h" #include "../cards/additional_info/deck_color_identity.h" +#include "../cards/card_info_frame_widget.h" #include "../client/network/interfaces/deck_stats_interface.h" #include "../client/network/interfaces/tapped_out_interface.h" +#include "../deck_editor/deck_editor_card_database_dock_widget.h" +#include "../deck_editor/deck_editor_card_info_dock_widget.h" +#include "../deck_editor/deck_editor_deck_dock_widget.h" +#include "../deck_editor/deck_editor_filter_dock_widget.h" +#include "../deck_editor/deck_editor_printing_selector_dock_widget.h" #include "../deck_editor/deck_state_manager.h" #include "../interface/card_picture_loader/card_picture_loader.h" -#include "../interface/pixel_map_generator.h" #include "../interface/widgets/dialogs/dlg_load_deck.h" #include "../interface/widgets/dialogs/dlg_load_deck_from_clipboard.h" #include "../interface/widgets/dialogs/dlg_load_deck_from_website.h" #include "../interface/widgets/dialogs/dlg_share_deck.h" +#include "../menus/deck_editor_menu.h" +#include "../printing_selector/printing_selector.h" #include "../utility/visibility_change_listener.h" +#include "libcockatrice/card/database/card_database_querier.h" +#include "libcockatrice/card/printing/exact_card.h" +#include "libcockatrice/deck_list/deck_list.h" +#include "libcockatrice/utility/card_ref.h" #include "tab_supervisor.h" #include -#include #include #include +#include #include -#include -#include +#include +#include +#include +#include #include #include #include -#include #include -#include -#include -#include +#include #include +#include #include #include #include @@ -50,6 +64,8 @@ #include #include #include +#include +#include /** * @brief Constructs the AbstractTabDeckEditor. diff --git a/cockatrice/src/interface/widgets/tabs/abstract_tab_deck_editor.h b/cockatrice/src/interface/widgets/tabs/abstract_tab_deck_editor.h index dae8f5b0a..1782e7afd 100644 --- a/cockatrice/src/interface/widgets/tabs/abstract_tab_deck_editor.h +++ b/cockatrice/src/interface/widgets/tabs/abstract_tab_deck_editor.h @@ -9,48 +9,31 @@ #define TAB_GENERIC_DECK_EDITOR_H #include "../../deck_loader/deck_loader.h" -#include "../interface/widgets/deck_editor/deck_editor_card_database_dock_widget.h" -#include "../interface/widgets/deck_editor/deck_editor_card_info_dock_widget.h" -#include "../interface/widgets/deck_editor/deck_editor_database_display_widget.h" -#include "../interface/widgets/deck_editor/deck_editor_deck_dock_widget.h" -#include "../interface/widgets/deck_editor/deck_editor_filter_dock_widget.h" -#include "../interface/widgets/deck_editor/deck_editor_printing_selector_dock_widget.h" -#include "../interface/widgets/menus/deck_editor_menu.h" -#include "../interface/widgets/visual_deck_storage/deck_preview/deck_preview_deck_tags_display_widget.h" +#include "libcockatrice/card/card_info.h" #include "tab.h" -#include +#include +#include +#include +#include class DeckStateManager; class CardDatabaseModel; -class CardDatabaseDisplayModel; - -class CardInfoFrameWidget; -class DeckLoader; class DeckEditorMenu; class DeckEditorCardInfoDockWidget; class DeckEditorCardDatabaseDockWidget; class DeckEditorDeckDockWidget; class DeckEditorFilterDockWidget; class DeckEditorPrintingSelectorDockWidget; -class DeckPreviewDeckTagsDisplayWidget; class Response; class FilterTree; -class FilterTreeModel; -class FilterBuilder; - -class QTreeView; -class QTextEdit; -class QLabel; -class QComboBox; -class QGroupBox; class QMessageBox; -class QHBoxLayout; -class QVBoxLayout; -class QPushButton; class QDockWidget; class QMenu; class QAction; +class ExactCard; +class TabSupervisor; +struct LoadedDeck; /** * @class AbstractTabDeckEditor diff --git a/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/archidekt_deck_listing_api_response.cpp b/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/archidekt_deck_listing_api_response.cpp index 40882db04..8d023cd61 100644 --- a/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/archidekt_deck_listing_api_response.cpp +++ b/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/archidekt_deck_listing_api_response.cpp @@ -2,6 +2,9 @@ #include #include +#include +#include +#include void ArchidektDeckListingApiResponse::fromJson(const QJsonObject &json) { diff --git a/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/archidekt_deck_listing_api_response.h b/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/archidekt_deck_listing_api_response.h index 723c65ce2..c42bc1315 100644 --- a/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/archidekt_deck_listing_api_response.h +++ b/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/archidekt_deck_listing_api_response.h @@ -4,8 +4,9 @@ #include "deck_listings/archidekt_api_response_deck_listing_container.h" #include -#include +#include #include +#include class ArchidektDeckListingApiResponse { diff --git a/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/card/archidekt_api_response_card.cpp b/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/card/archidekt_api_response_card.cpp index 46c229156..d118301bb 100644 --- a/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/card/archidekt_api_response_card.cpp +++ b/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/card/archidekt_api_response_card.cpp @@ -1,5 +1,9 @@ #include "archidekt_api_response_card.h" +#include +#include +#include + void ArchidektApiResponseCard::fromJson(const QJsonObject &json) { id = json.value("id").toInt(); diff --git a/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/card/archidekt_api_response_card.h b/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/card/archidekt_api_response_card.h index 559580da2..8e9e0b12a 100644 --- a/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/card/archidekt_api_response_card.h +++ b/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/card/archidekt_api_response_card.h @@ -3,11 +3,10 @@ #include "archidekt_api_response_edition.h" -#include -#include #include +#include #include -#include +#include class ArchidektApiResponseCard { diff --git a/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/card/archidekt_api_response_card_entry.cpp b/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/card/archidekt_api_response_card_entry.cpp index f51d0f3e7..14b13a4ed 100644 --- a/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/card/archidekt_api_response_card_entry.cpp +++ b/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/card/archidekt_api_response_card_entry.cpp @@ -1,5 +1,11 @@ #include "archidekt_api_response_card_entry.h" +#include +#include +#include +#include +#include + void ArchidektApiResponseCardEntry::fromJson(const QJsonObject &json) { id = json.value("id").toInt(); diff --git a/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/card/archidekt_api_response_card_entry.h b/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/card/archidekt_api_response_card_entry.h index 118cf5b13..eb7c4190c 100644 --- a/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/card/archidekt_api_response_card_entry.h +++ b/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/card/archidekt_api_response_card_entry.h @@ -3,11 +3,10 @@ #include "archidekt_api_response_card.h" -#include -#include #include +#include #include -#include +#include struct Category { diff --git a/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/card/archidekt_api_response_edition.cpp b/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/card/archidekt_api_response_edition.cpp index 122617a22..73836b9c8 100644 --- a/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/card/archidekt_api_response_edition.cpp +++ b/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/card/archidekt_api_response_edition.cpp @@ -1,5 +1,9 @@ #include "archidekt_api_response_edition.h" +#include +#include +#include + void ArchidektApiResponseEdition::fromJson(const QJsonObject &json) { editionCode = json.value("editioncode").toString(); diff --git a/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/card/archidekt_api_response_edition.h b/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/card/archidekt_api_response_edition.h index b898cd816..63d29652f 100644 --- a/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/card/archidekt_api_response_edition.h +++ b/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/card/archidekt_api_response_edition.h @@ -1,11 +1,8 @@ #ifndef COCKATRICE_ARCHIDEKT_API_RESPONSE_EDITION_H #define COCKATRICE_ARCHIDEKT_API_RESPONSE_EDITION_H -#include -#include #include #include -#include class ArchidektApiResponseEdition { diff --git a/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/deck/archidekt_api_response_deck.cpp b/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/deck/archidekt_api_response_deck.cpp index a27d8d961..362ac0f63 100644 --- a/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/deck/archidekt_api_response_deck.cpp +++ b/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/deck/archidekt_api_response_deck.cpp @@ -1,6 +1,13 @@ #include "archidekt_api_response_deck.h" #include "../card/archidekt_api_response_card_entry.h" +#include "../deck_listings/archidekt_api_response_deck_owner.h" + +#include +#include +#include +#include +#include void ArchidektApiResponseDeck::fromJson(const QJsonObject &json) { diff --git a/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/deck/archidekt_api_response_deck.h b/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/deck/archidekt_api_response_deck.h index b539d9dd1..6af0a01c5 100644 --- a/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/deck/archidekt_api_response_deck.h +++ b/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/deck/archidekt_api_response_deck.h @@ -1,15 +1,14 @@ #ifndef COCKATRICE_ARCHIDEKT_API_RESPONSE_DECK_H #define COCKATRICE_ARCHIDEKT_API_RESPONSE_DECK_H -#include "../card/archidekt_api_response_card.h" #include "../card/archidekt_api_response_card_entry.h" #include "../deck_listings/archidekt_api_response_deck_owner.h" #include "archidekt_api_response_deck_category.h" -#include -#include #include +#include #include +#include #include class ArchidektApiResponseDeck diff --git a/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/deck/archidekt_api_response_deck_category.cpp b/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/deck/archidekt_api_response_deck_category.cpp index 990293bc6..0df8b9f68 100644 --- a/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/deck/archidekt_api_response_deck_category.cpp +++ b/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/deck/archidekt_api_response_deck_category.cpp @@ -1,5 +1,9 @@ #include "archidekt_api_response_deck_category.h" +#include +#include +#include + void ArchidektApiResponseDeckCategory::fromJson(const QJsonObject &json) { id = json.value("id").toInt(); diff --git a/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/deck/archidekt_api_response_deck_category.h b/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/deck/archidekt_api_response_deck_category.h index 5e218b6a4..b31743643 100644 --- a/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/deck/archidekt_api_response_deck_category.h +++ b/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/deck/archidekt_api_response_deck_category.h @@ -1,15 +1,8 @@ #ifndef COCKATRICE_ARCHIDEKT_API_RESPONSE_DECK_CATEGORY_H #define COCKATRICE_ARCHIDEKT_API_RESPONSE_DECK_CATEGORY_H -#include "../card/archidekt_api_response_card.h" -#include "../card/archidekt_api_response_card_entry.h" -#include "../deck_listings/archidekt_api_response_deck_owner.h" - -#include -#include #include #include -#include class ArchidektApiResponseDeckCategory { diff --git a/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/deck_listings/archidekt_api_response_deck_listing_container.cpp b/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/deck_listings/archidekt_api_response_deck_listing_container.cpp index 416621b41..0f5290f02 100644 --- a/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/deck_listings/archidekt_api_response_deck_listing_container.cpp +++ b/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/deck_listings/archidekt_api_response_deck_listing_container.cpp @@ -3,8 +3,10 @@ #include "archidekt_api_response_deck_owner.h" #include -#include #include +#include +#include +#include void ArchidektApiResponseDeckListingContainer::fromJson(const QJsonObject &json) { diff --git a/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/deck_listings/archidekt_api_response_deck_listing_container.h b/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/deck_listings/archidekt_api_response_deck_listing_container.h index 8924bb3f5..904d6b624 100644 --- a/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/deck_listings/archidekt_api_response_deck_listing_container.h +++ b/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/deck_listings/archidekt_api_response_deck_listing_container.h @@ -3,11 +3,11 @@ #include "archidekt_api_response_deck_owner.h" -#include -#include #include +#include +#include #include -#include +#include class ArchidektApiResponseDeckListingContainer { diff --git a/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/deck_listings/archidekt_api_response_deck_owner.cpp b/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/deck_listings/archidekt_api_response_deck_owner.cpp index 3d6eac03d..67b80d67a 100644 --- a/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/deck_listings/archidekt_api_response_deck_owner.cpp +++ b/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/deck_listings/archidekt_api_response_deck_owner.cpp @@ -1,5 +1,9 @@ #include "archidekt_api_response_deck_owner.h" +#include +#include +#include + void ArchidektApiResponseDeckOwner::fromJson(const QJsonObject &json) { id = json.value("id").toInt(); diff --git a/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/deck_listings/archidekt_api_response_deck_owner.h b/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/deck_listings/archidekt_api_response_deck_owner.h index df3f48fd2..f63d6af0e 100644 --- a/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/deck_listings/archidekt_api_response_deck_owner.h +++ b/cockatrice/src/interface/widgets/tabs/api/archidekt/api_response/deck_listings/archidekt_api_response_deck_owner.h @@ -1,11 +1,11 @@ #ifndef COCKATRICE_ARCHIDEKT_API_RESPONSE_DECK_OWNER_H #define COCKATRICE_ARCHIDEKT_API_RESPONSE_DECK_OWNER_H -#include -#include #include +#include #include -#include +#include +#include class ArchidektApiResponseDeckOwner { diff --git a/cockatrice/src/interface/widgets/tabs/api/archidekt/display/archidekt_api_response_deck_display_widget.cpp b/cockatrice/src/interface/widgets/tabs/api/archidekt/display/archidekt_api_response_deck_display_widget.cpp index 657ef3dbe..555ec7ec5 100644 --- a/cockatrice/src/interface/widgets/tabs/api/archidekt/display/archidekt_api_response_deck_display_widget.cpp +++ b/cockatrice/src/interface/widgets/tabs/api/archidekt/display/archidekt_api_response_deck_display_widget.cpp @@ -2,16 +2,39 @@ #include "../../../../../../client/settings/cache_settings.h" #include "../../../../../deck_loader/card_node_function.h" -#include "../../../../../deck_loader/deck_loader.h" -#include "../../../../cards/card_size_widget.h" +#include "../../../../../deck_loader/loaded_deck.h" #include "../../../../cards/deck_card_zone_display_widget.h" #include "../../../../visual_deck_editor/visual_deck_display_options_widget.h" +#include "../../../../visual_deck_editor/visual_deck_editor_widget.h" #include "../api_response/archidekt_formats.h" +#include "../api_response/card/archidekt_api_response_card.h" +#include "../api_response/card/archidekt_api_response_card_entry.h" +#include "../api_response/card/archidekt_api_response_edition.h" #include "../api_response/deck/archidekt_api_response_deck.h" +#include "deck_list_model.h" +#include "libcockatrice/deck_list/deck_list.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include +#include +#include +#include +#include #include #include +#include +#include + +class CardSizeWidget; ArchidektApiResponseDeckDisplayWidget::ArchidektApiResponseDeckDisplayWidget(QWidget *parent, ArchidektApiResponseDeck _response, diff --git a/cockatrice/src/interface/widgets/tabs/api/archidekt/display/archidekt_api_response_deck_display_widget.h b/cockatrice/src/interface/widgets/tabs/api/archidekt/display/archidekt_api_response_deck_display_widget.h index aaf272718..cdacc70b3 100644 --- a/cockatrice/src/interface/widgets/tabs/api/archidekt/display/archidekt_api_response_deck_display_widget.h +++ b/cockatrice/src/interface/widgets/tabs/api/archidekt/display/archidekt_api_response_deck_display_widget.h @@ -1,18 +1,22 @@ #ifndef COCKATRICE_ARCHIDEKT_API_RESPONSE_DECK_DISPLAY_WIDGET_H #define COCKATRICE_ARCHIDEKT_API_RESPONSE_DECK_DISPLAY_WIDGET_H -#include "../../../../../deck_loader/deck_loader.h" -#include "../../../../cards/card_size_widget.h" -#include "../../../../general/layout_containers/flow_widget.h" -#include "../../../../visual_deck_editor/visual_deck_display_options_widget.h" #include "../api_response/deck/archidekt_api_response_deck.h" -#include "deck_list_model.h" -#include -#include -#include -#include +#include +#include +#include #include +#include + +class CardSizeWidget; +class DeckListModel; +class QHBoxLayout; +class QPushButton; +class QScrollArea; +class QVBoxLayout; +class VisualDeckDisplayOptionsWidget; +struct LoadedDeck; /** * @class ArchidektApiResponseDeckDisplayWidget diff --git a/cockatrice/src/interface/widgets/tabs/api/archidekt/display/archidekt_api_response_deck_entry_display_widget.cpp b/cockatrice/src/interface/widgets/tabs/api/archidekt/display/archidekt_api_response_deck_entry_display_widget.cpp index c35c2d0b8..b5e28fcf5 100644 --- a/cockatrice/src/interface/widgets/tabs/api/archidekt/display/archidekt_api_response_deck_entry_display_widget.cpp +++ b/cockatrice/src/interface/widgets/tabs/api/archidekt/display/archidekt_api_response_deck_entry_display_widget.cpp @@ -1,17 +1,30 @@ #include "archidekt_api_response_deck_entry_display_widget.h" #include "../../../../../card_picture_loader/card_picture_loader.h" -#include "../../../../cards/card_info_picture_with_text_overlay_widget.h" #include "../../../../general/display/background_plate_widget.h" #include "../../../../general/display/charts/bars/color_bar.h" +#include "../../../../general/display/shadow_background_label.h" +#include "../api_response/deck_listings/archidekt_api_response_deck_listing_container.h" +#include "../api_response/deck_listings/archidekt_api_response_deck_owner.h" #include "archidekt_deck_preview_image_display_widget.h" -#include +#include +#include +#include #include #include #include +#include #include +#include +#include +#include +#include +#include +#include #include +#include +#include #include #define ARCHIDEKT_DEFAULT_IMAGE "https://storage.googleapis.com/topdekt-user/images/archidekt_deck_card_shadow.jpg" diff --git a/cockatrice/src/interface/widgets/tabs/api/archidekt/display/archidekt_api_response_deck_entry_display_widget.h b/cockatrice/src/interface/widgets/tabs/api/archidekt/display/archidekt_api_response_deck_entry_display_widget.h index 575a81b5f..e8ed8561d 100644 --- a/cockatrice/src/interface/widgets/tabs/api/archidekt/display/archidekt_api_response_deck_entry_display_widget.h +++ b/cockatrice/src/interface/widgets/tabs/api/archidekt/display/archidekt_api_response_deck_entry_display_widget.h @@ -1,17 +1,20 @@ #ifndef COCKATRICE_ARCHIDEKT_API_RESPONSE_DECK_ENTRY_DISPLAY_WIDGET_H #define COCKATRICE_ARCHIDEKT_API_RESPONSE_DECK_ENTRY_DISPLAY_WIDGET_H -#include "../../../../cards/card_info_picture_with_text_overlay_widget.h" #include "../api_response/deck_listings/archidekt_api_response_deck_listing_container.h" -#include "archidekt_deck_preview_image_display_widget.h" -#include -#include -#include -#include +#include +#include +#include #include +#include class BackgroundPlateWidget; +class ArchidektDeckPreviewImageDisplayWidget; +class QLabel; +class QNetworkAccessManager; +class QNetworkReply; +class QVBoxLayout; /** * @class ArchidektApiResponseDeckEntryDisplayWidget diff --git a/cockatrice/src/interface/widgets/tabs/api/archidekt/display/archidekt_api_response_deck_listings_display_widget.cpp b/cockatrice/src/interface/widgets/tabs/api/archidekt/display/archidekt_api_response_deck_listings_display_widget.cpp index 21e8e3f9a..9c4ea59ab 100644 --- a/cockatrice/src/interface/widgets/tabs/api/archidekt/display/archidekt_api_response_deck_listings_display_widget.cpp +++ b/cockatrice/src/interface/widgets/tabs/api/archidekt/display/archidekt_api_response_deck_listings_display_widget.cpp @@ -1,8 +1,18 @@ #include "archidekt_api_response_deck_listings_display_widget.h" -#include "../../../../cards/card_info_picture_with_text_overlay_widget.h" +#include "../../../../cards/card_size_widget.h" +#include "../../../../general/layout_containers/flow_widget.h" +#include "../api_response/archidekt_deck_listing_api_response.h" +#include "../api_response/deck_listings/archidekt_api_response_deck_listing_container.h" #include "archidekt_api_response_deck_entry_display_widget.h" +#include +#include +#include +#include +#include +#include + ArchidektApiResponseDeckListingsDisplayWidget::ArchidektApiResponseDeckListingsDisplayWidget( QWidget *parent, ArchidektDeckListingApiResponse response, diff --git a/cockatrice/src/interface/widgets/tabs/api/archidekt/display/archidekt_api_response_deck_listings_display_widget.h b/cockatrice/src/interface/widgets/tabs/api/archidekt/display/archidekt_api_response_deck_listings_display_widget.h index f9a887aa4..a9a7da7a1 100644 --- a/cockatrice/src/interface/widgets/tabs/api/archidekt/display/archidekt_api_response_deck_listings_display_widget.h +++ b/cockatrice/src/interface/widgets/tabs/api/archidekt/display/archidekt_api_response_deck_listings_display_widget.h @@ -1,15 +1,15 @@ #ifndef COCKATRICE_ARCHIDEKT_API_RESPONSE_DECK_LISTINGS_DISPLAY_WIDGET_H #define COCKATRICE_ARCHIDEKT_API_RESPONSE_DECK_LISTINGS_DISPLAY_WIDGET_H -#include "../../../../cards/card_size_widget.h" -#include "../../../../general/layout_containers/flow_widget.h" -#include "../api_response/archidekt_deck_listing_api_response.h" - -#include -#include -#include -#include +#include #include +#include + +class ArchidektDeckListingApiResponse; +class CardSizeWidget; +class FlowWidget; +class QHBoxLayout; +class QNetworkAccessManager; /** * @class ArchidektApiResponseDeckListingsDisplayWidget diff --git a/cockatrice/src/interface/widgets/tabs/api/archidekt/display/archidekt_deck_preview_image_display_widget.cpp b/cockatrice/src/interface/widgets/tabs/api/archidekt/display/archidekt_deck_preview_image_display_widget.cpp index ced08491e..97383534f 100644 --- a/cockatrice/src/interface/widgets/tabs/api/archidekt/display/archidekt_deck_preview_image_display_widget.cpp +++ b/cockatrice/src/interface/widgets/tabs/api/archidekt/display/archidekt_deck_preview_image_display_widget.cpp @@ -1,7 +1,11 @@ #include "archidekt_deck_preview_image_display_widget.h" -#include -#include +#include "../../../../general/display/shadow_background_label.h" + +#include +#include +#include +#include ArchidektDeckPreviewImageDisplayWidget::ArchidektDeckPreviewImageDisplayWidget(QWidget *parent) : QWidget(parent) { diff --git a/cockatrice/src/interface/widgets/tabs/api/archidekt/display/archidekt_deck_preview_image_display_widget.h b/cockatrice/src/interface/widgets/tabs/api/archidekt/display/archidekt_deck_preview_image_display_widget.h index 053823c45..991f27b6a 100644 --- a/cockatrice/src/interface/widgets/tabs/api/archidekt/display/archidekt_deck_preview_image_display_widget.h +++ b/cockatrice/src/interface/widgets/tabs/api/archidekt/display/archidekt_deck_preview_image_display_widget.h @@ -1,10 +1,11 @@ #ifndef COCKATRICE_ARCHIDEKT_DECK_PREVIEW_IMAGE_DISPLAY_WIDGET_H #define COCKATRICE_ARCHIDEKT_DECK_PREVIEW_IMAGE_DISPLAY_WIDGET_H -#include "../../../../general/display/shadow_background_label.h" - -#include #include +#include + +class QLabel; +class ShadowBackgroundLabel; /** * @class ArchidektDeckPreviewImageDisplayWidget diff --git a/cockatrice/src/interface/widgets/tabs/api/archidekt/tab_archidekt.cpp b/cockatrice/src/interface/widgets/tabs/api/archidekt/tab_archidekt.cpp index 888197f53..02badf1aa 100644 --- a/cockatrice/src/interface/widgets/tabs/api/archidekt/tab_archidekt.cpp +++ b/cockatrice/src/interface/widgets/tabs/api/archidekt/tab_archidekt.cpp @@ -3,31 +3,54 @@ #include "../../../../../client/settings/cache_settings.h" #include "../../../../pixel_map_generator.h" #include "../../../cards/additional_info/mana_symbol_widget.h" +#include "../../../cards/card_size_widget.h" +#include "../../../quick_settings/settings_button_widget.h" #include "../../../utility/completer_utils.h" +#include "../../tab.h" #include "../../tab_supervisor.h" #include "api_response/archidekt_deck_listing_api_response.h" +#include "api_response/deck/archidekt_api_response_deck.h" +#include "card_database_display_model.h" +#include "card_database_model.h" #include "display/archidekt_api_response_deck_display_widget.h" #include "display/archidekt_api_response_deck_listings_display_widget.h" +#include +#include +#include #include -#include +#include #include -#include #include #include #include #include +#include +#include +#include +#include #include #include +#include +#include #include -#include #include -#include +#include +#include +#include +#include +#include +#include +#include #include +#include +#include +#include +#include #include -#include -#include #include +#include +#include #include TabArchidekt::TabArchidekt(TabSupervisor *_tabSupervisor) diff --git a/cockatrice/src/interface/widgets/tabs/api/archidekt/tab_archidekt.h b/cockatrice/src/interface/widgets/tabs/api/archidekt/tab_archidekt.h index e837e672b..015b8590b 100644 --- a/cockatrice/src/interface/widgets/tabs/api/archidekt/tab_archidekt.h +++ b/cockatrice/src/interface/widgets/tabs/api/archidekt/tab_archidekt.h @@ -1,26 +1,35 @@ #ifndef COCKATRICE_TAB_ARCHIDEKT_H #define COCKATRICE_TAB_ARCHIDEKT_H -#include "../../interface/widgets/cards/card_size_widget.h" -#include "../../interface/widgets/quick_settings/settings_button_widget.h" #include "../../tab.h" -#include "display/archidekt_api_response_deck_listings_display_widget.h" +#include "libcockatrice/card/card_info.h" -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include #include -#include #include -#include -#include -#include -#include +#include +#include + +class ArchidektApiResponseDeckListingsDisplayWidget; +class CardSizeWidget; +class QCheckBox; +class QComboBox; +class QHBoxLayout; +class QLabel; +class QLineEdit; +class QNetworkAccessManager; +class QNetworkReply; +class QPushButton; +class QScrollArea; +class QSpinBox; +class QTimer; +class QVBoxLayout; +class QWidget; +class SettingsButtonWidget; +class TabSupervisor; /** Base API link for Archidekt deck search */ inline QString archidektApiLink = "https://archidekt.com/api/decks/v3/?name="; diff --git a/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/api_response/card_in_deck_request.cpp b/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/api_response/card_in_deck_request.cpp index 3c95a4553..aa892d0d4 100644 --- a/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/api_response/card_in_deck_request.cpp +++ b/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/api_response/card_in_deck_request.cpp @@ -1,5 +1,7 @@ #include "card_in_deck_request.h" +#include + CardInDeckRequest CardInDeckRequest::fromJson(const QJsonObject &json) { CardInDeckRequest request; diff --git a/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/api_response/card_in_deck_request.h b/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/api_response/card_in_deck_request.h index b7eb96211..6bcaca42f 100644 --- a/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/api_response/card_in_deck_request.h +++ b/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/api_response/card_in_deck_request.h @@ -1,6 +1,7 @@ #ifndef COCKATRICE_CARD_IN_DECK_REQUEST_H #define COCKATRICE_CARD_IN_DECK_REQUEST_H #include +#include struct CardInDeckRequest { diff --git a/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/api_response/commander_spellbook_card_result.cpp b/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/api_response/commander_spellbook_card_result.cpp index 14558d234..0ae5dd360 100644 --- a/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/api_response/commander_spellbook_card_result.cpp +++ b/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/api_response/commander_spellbook_card_result.cpp @@ -1,5 +1,7 @@ #include "commander_spellbook_card_result.h" +#include + CommanderSpellbookCardResult CommanderSpellbookCardResult::fromJson(const QJsonObject &json) { CommanderSpellbookCardResult result; diff --git a/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/api_response/commander_spellbook_deck_request.cpp b/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/api_response/commander_spellbook_deck_request.cpp index 166469353..ac259f3aa 100644 --- a/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/api_response/commander_spellbook_deck_request.cpp +++ b/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/api_response/commander_spellbook_deck_request.cpp @@ -1,6 +1,14 @@ #include "commander_spellbook_deck_request.h" +#include "libcockatrice/deck_list/deck_list.h" +#include "libcockatrice/deck_list/tree/inner_deck_list_node.h" +#include "libcockatrice/utility/card_ref.h" + #include +#include +#include +#include +#include #include CommanderSpellbookDeckRequest CommanderSpellbookDeckRequest::fromJson(const QJsonObject &json) diff --git a/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/api_response/commander_spellbook_deck_request.h b/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/api_response/commander_spellbook_deck_request.h index 46d8e053b..002f7666f 100644 --- a/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/api_response/commander_spellbook_deck_request.h +++ b/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/api_response/commander_spellbook_deck_request.h @@ -1,11 +1,12 @@ #ifndef COCKATRICE_COMMANDER_SPELLBOOK_DECK_REQUEST_H #define COCKATRICE_COMMANDER_SPELLBOOK_DECK_REQUEST_H #include "card_in_deck_request.h" -#include "libcockatrice/deck_list/deck_list.h" #include #include +class DeckList; + struct CommanderSpellbookDeckRequest { static CommanderSpellbookDeckRequest fromJson(const QJsonObject &json); diff --git a/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/api_response/commander_spellbook_estimate_bracket_result.cpp b/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/api_response/commander_spellbook_estimate_bracket_result.cpp index c3640ce79..35ba954a1 100644 --- a/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/api_response/commander_spellbook_estimate_bracket_result.cpp +++ b/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/api_response/commander_spellbook_estimate_bracket_result.cpp @@ -1,5 +1,9 @@ #include "commander_spellbook_estimate_bracket_result.h" +#include +#include +#include + EstimateBracketResult EstimateBracketResult::fromJson(const QJsonObject &json) { EstimateBracketResult result; diff --git a/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/api_response/commander_spellbook_estimate_bracket_result.h b/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/api_response/commander_spellbook_estimate_bracket_result.h index bb589a901..c9c152d35 100644 --- a/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/api_response/commander_spellbook_estimate_bracket_result.h +++ b/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/api_response/commander_spellbook_estimate_bracket_result.h @@ -6,6 +6,7 @@ #include #include +#include struct EstimateBracketResult { diff --git a/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/api_response/commander_spellbook_variant_result.cpp b/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/api_response/commander_spellbook_variant_result.cpp index bbc23e15e..53630a69e 100644 --- a/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/api_response/commander_spellbook_variant_result.cpp +++ b/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/api_response/commander_spellbook_variant_result.cpp @@ -1,5 +1,7 @@ #include "commander_spellbook_variant_result.h" +#include + CommanderSpellbookVariantResult CommanderSpellbookVariantResult::fromJson(const QJsonObject &json) { CommanderSpellbookVariantResult result; diff --git a/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/api_response/commander_spellbook_variant_result.h b/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/api_response/commander_spellbook_variant_result.h index d908f1299..49f45f92c 100644 --- a/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/api_response/commander_spellbook_variant_result.h +++ b/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/api_response/commander_spellbook_variant_result.h @@ -3,6 +3,7 @@ #include #include +#include struct CommanderSpellbookVariantResult { diff --git a/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/commander_bracket_service.cpp b/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/commander_bracket_service.cpp index b85129a3f..8e0448faa 100644 --- a/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/commander_bracket_service.cpp +++ b/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/commander_bracket_service.cpp @@ -4,6 +4,8 @@ #include +class DeckList; + CommanderBracketService &CommanderBracketService::instance() { static CommanderBracketService service; diff --git a/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/commander_bracket_service.h b/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/commander_bracket_service.h index e0c2a9d55..22962cc95 100644 --- a/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/commander_bracket_service.h +++ b/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/commander_bracket_service.h @@ -1,10 +1,15 @@ #ifndef COCKATRICE_COMMANDER_BRACKET_SERVICE_H #define COCKATRICE_COMMANDER_BRACKET_SERVICE_H +#include "api_response/commander_spellbook_estimate_bracket_result.h" #include "commander_spellbook_api_accessor.h" -#include "libcockatrice/deck_list/deck_list.h" #include +#include +#include +#include + +class DeckList; struct CommanderBracketEstimate { diff --git a/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/commander_bracket_widget.cpp b/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/commander_bracket_widget.cpp index 2cbbedfa4..06a76dd19 100644 --- a/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/commander_bracket_widget.cpp +++ b/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/commander_bracket_widget.cpp @@ -3,7 +3,9 @@ #include "../../../../../client/settings/cache_settings.h" #include "../../../../pixel_map_generator.h" #include "commander_bracket_service.h" +#include "libcockatrice/deck_list/deck_list.h" +#include #include #include #include @@ -11,11 +13,17 @@ #include #include #include +#include +#include #include +#include #include #include #include #include +#include + +template class QSharedPointer; CommanderBracketWidget::CommanderBracketWidget(QWidget *parent) : QWidget(parent) { diff --git a/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/commander_bracket_widget.h b/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/commander_bracket_widget.h index a45610fcf..f5b2b7958 100644 --- a/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/commander_bracket_widget.h +++ b/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/commander_bracket_widget.h @@ -4,12 +4,17 @@ #include "commander_spellbook_bracket_explainer.h" #include +#include #include -#include +#include +#include class QLabel; class QToolButton; struct CommanderBracketEstimate; +class DeckList; +class QObject; +template class QSharedPointer; class CommanderBracketWidget : public QWidget { diff --git a/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/commander_spellbook_api_accessor.cpp b/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/commander_spellbook_api_accessor.cpp index 590692d98..bd8d9379d 100644 --- a/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/commander_spellbook_api_accessor.cpp +++ b/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/commander_spellbook_api_accessor.cpp @@ -1,13 +1,21 @@ #include "commander_spellbook_api_accessor.h" #include "api_response/commander_spellbook_deck_request.h" +#include "api_response/commander_spellbook_estimate_bracket_result.h" +#include #include #include +#include +#include #include +#include #include +#include #include +class DeckList; + static const QUrl ESTIMATE_BRACKET_URL(QStringLiteral("https://backend.commanderspellbook.com/estimate-bracket")); CommanderSpellbookApiAccessor &CommanderSpellbookApiAccessor::instance() diff --git a/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/commander_spellbook_api_accessor.h b/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/commander_spellbook_api_accessor.h index 682a48524..98e7e3710 100644 --- a/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/commander_spellbook_api_accessor.h +++ b/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/commander_spellbook_api_accessor.h @@ -1,12 +1,15 @@ #ifndef COCKATRICE_COMMANDER_SPELLBOOK_API_ACCESSOR_H #define COCKATRICE_COMMANDER_SPELLBOOK_API_ACCESSOR_H -#include "api_response/commander_spellbook_estimate_bracket_result.h" - #include -#include #include -#include +#include +#include +#include + +class DeckList; +class QNetworkReply; +struct EstimateBracketResult; class CommanderSpellbookApiAccessor final : public QObject { diff --git a/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/commander_spellbook_bracket_explainer.cpp b/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/commander_spellbook_bracket_explainer.cpp index fc308ed60..06250f1ea 100644 --- a/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/commander_spellbook_bracket_explainer.cpp +++ b/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/commander_spellbook_bracket_explainer.cpp @@ -1,5 +1,9 @@ #include "commander_spellbook_bracket_explainer.h" +#include "api_response/commander_spellbook_card_result.h" +#include "api_response/commander_spellbook_estimate_bracket_result.h" +#include "api_response/commander_spellbook_variant_result.h" + static QString cardList(const QList &cards, int max = 5) { QStringList names; diff --git a/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/commander_spellbook_bracket_explainer.h b/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/commander_spellbook_bracket_explainer.h index 9ed499742..3ab317df9 100644 --- a/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/commander_spellbook_bracket_explainer.h +++ b/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/commander_spellbook_bracket_explainer.h @@ -1,6 +1,12 @@ #ifndef COCKATRICE_COMMANDER_SPELLBOOK_BRACKET_EXPLAINER_H #define COCKATRICE_COMMANDER_SPELLBOOK_BRACKET_EXPLAINER_H -#include "api_response/commander_spellbook_estimate_bracket_result.h" + +#include +#include +#include +#include + +struct EstimateBracketResult; namespace CommanderBracketNames { diff --git a/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/handle_commander_brackets.cpp b/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/handle_commander_brackets.cpp index 90b490efe..22200ffa2 100644 --- a/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/handle_commander_brackets.cpp +++ b/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/handle_commander_brackets.cpp @@ -2,9 +2,16 @@ #include "../../../../../client/settings/cache_settings.h" +#include #include -#include +#include +#include +#include +#include +#include +#include #include +#include #include static const QUrl COMMANDER_BRACKET_JSON_URL(QStringLiteral("https://cockatrice.github.io/commander-brackets.json")); diff --git a/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/handle_commander_brackets.h b/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/handle_commander_brackets.h index b8348b13c..39bddba05 100644 --- a/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/handle_commander_brackets.h +++ b/cockatrice/src/interface/widgets/tabs/api/commander_spellbook/handle_commander_brackets.h @@ -1,9 +1,12 @@ #ifndef COCKATRICE_HANDLE_COMMANDER_BRACKETS_H #define COCKATRICE_HANDLE_COMMANDER_BRACKETS_H -#include #include #include +#include +#include + +class QNetworkAccessManager; class HandleCommanderBrackets : public QObject { diff --git a/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/archidekt_links/edhrec_api_response_archidekt_links.cpp b/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/archidekt_links/edhrec_api_response_archidekt_links.cpp index 145a3fca0..411fdd5ed 100644 --- a/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/archidekt_links/edhrec_api_response_archidekt_links.cpp +++ b/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/archidekt_links/edhrec_api_response_archidekt_links.cpp @@ -3,6 +3,9 @@ #include #include #include +#include +#include +#include void EdhrecApiResponseArchidektLink::fromJson(const QJsonObject &json) { diff --git a/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/archidekt_links/edhrec_api_response_archidekt_links.h b/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/archidekt_links/edhrec_api_response_archidekt_links.h index d265c164d..0786550fe 100644 --- a/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/archidekt_links/edhrec_api_response_archidekt_links.h +++ b/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/archidekt_links/edhrec_api_response_archidekt_links.h @@ -1,7 +1,9 @@ #ifndef ARCHIDEKTENTRY_H #define ARCHIDEKTENTRY_H +#include #include +#include #include #include diff --git a/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/average_deck/edhrec_average_deck_api_response.cpp b/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/average_deck/edhrec_average_deck_api_response.cpp index 1297fc157..b6ecac0af 100644 --- a/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/average_deck/edhrec_average_deck_api_response.cpp +++ b/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/average_deck/edhrec_average_deck_api_response.cpp @@ -1,7 +1,13 @@ #include "edhrec_average_deck_api_response.h" +#include "../archidekt_links/edhrec_api_response_archidekt_links.h" +#include "../cards/edhrec_api_response_card_container.h" +#include "../commander/edhrec_commander_api_response_average_deck_statistics.h" + #include #include +#include +#include void EdhrecAverageDeckApiResponse::fromJson(const QJsonObject &json) { diff --git a/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/average_deck/edhrec_deck_api_response.cpp b/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/average_deck/edhrec_deck_api_response.cpp index 1cb070c30..324dce52a 100644 --- a/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/average_deck/edhrec_deck_api_response.cpp +++ b/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/average_deck/edhrec_deck_api_response.cpp @@ -1,10 +1,14 @@ #include "edhrec_deck_api_response.h" -#include #include #include -#include +#include +#include +#include +#include +#include #include +#include void EdhrecDeckApiResponse::fromJson(const QJsonArray &json) { diff --git a/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/average_deck/edhrec_deck_api_response.h b/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/average_deck/edhrec_deck_api_response.h index 7bc97c431..a47fcc10b 100644 --- a/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/average_deck/edhrec_deck_api_response.h +++ b/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/average_deck/edhrec_deck_api_response.h @@ -7,7 +7,9 @@ #ifndef EDHREC_DECK_API_RESPONSE_H #define EDHREC_DECK_API_RESPONSE_H -#include "../../../../../../deck_loader/deck_loader.h" +#include "libcockatrice/deck_list/deck_list.h" + +#include class EdhrecDeckApiResponse { diff --git a/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/card_prices/edhrec_api_response_card_prices.cpp b/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/card_prices/edhrec_api_response_card_prices.cpp index 1231d147a..26502f1de 100644 --- a/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/card_prices/edhrec_api_response_card_prices.cpp +++ b/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/card_prices/edhrec_api_response_card_prices.cpp @@ -1,6 +1,8 @@ #include "edhrec_api_response_card_prices.h" #include +#include +#include void CardPrices::fromJson(const QJsonObject &json) { diff --git a/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/cards/edhrec_api_response_card_container.cpp b/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/cards/edhrec_api_response_card_container.cpp index 3fef8be34..8660cac50 100644 --- a/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/cards/edhrec_api_response_card_container.cpp +++ b/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/cards/edhrec_api_response_card_container.cpp @@ -3,6 +3,9 @@ #include #include #include +#include +#include +#include void EdhrecApiResponseCardContainer::fromJson(const QJsonObject &json) { diff --git a/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/cards/edhrec_api_response_card_container.h b/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/cards/edhrec_api_response_card_container.h index d76dda490..70d39474d 100644 --- a/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/cards/edhrec_api_response_card_container.h +++ b/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/cards/edhrec_api_response_card_container.h @@ -11,6 +11,7 @@ #include "edhrec_commander_api_response_commander_details.h" #include +#include #include #include diff --git a/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/cards/edhrec_api_response_card_details.cpp b/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/cards/edhrec_api_response_card_details.cpp index a4a746c61..ebf09d2a9 100644 --- a/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/cards/edhrec_api_response_card_details.cpp +++ b/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/cards/edhrec_api_response_card_details.cpp @@ -1,6 +1,8 @@ #include "edhrec_api_response_card_details.h" #include +#include +#include EdhrecApiResponseCardDetails::EdhrecApiResponseCardDetails() : synergy(0.0), inclusion(0), numDecks(0), potentialDecks(0) diff --git a/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/cards/edhrec_api_response_card_list.cpp b/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/cards/edhrec_api_response_card_list.cpp index 72d6fe2cc..0cf585ee9 100644 --- a/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/cards/edhrec_api_response_card_list.cpp +++ b/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/cards/edhrec_api_response_card_list.cpp @@ -1,6 +1,10 @@ #include "edhrec_api_response_card_list.h" #include +#include +#include +#include +#include EdhrecApiResponseCardList::EdhrecApiResponseCardList() { diff --git a/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/cards/edhrec_api_response_card_list.h b/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/cards/edhrec_api_response_card_list.h index 2df29de0c..d6e0d7f75 100644 --- a/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/cards/edhrec_api_response_card_list.h +++ b/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/cards/edhrec_api_response_card_list.h @@ -9,7 +9,7 @@ #include "edhrec_api_response_card_details.h" -#include +#include #include #include diff --git a/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/cards/edhrec_commander_api_response_commander_details.cpp b/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/cards/edhrec_commander_api_response_commander_details.cpp index 7b220603e..7383677c8 100644 --- a/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/cards/edhrec_commander_api_response_commander_details.cpp +++ b/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/cards/edhrec_commander_api_response_commander_details.cpp @@ -1,6 +1,11 @@ #include "edhrec_commander_api_response_commander_details.h" +#include "../card_prices/edhrec_api_response_card_prices.h" + #include +#include +#include +#include void EdhrecCommanderApiResponseCommanderDetails::fromJson(const QJsonObject &json) { diff --git a/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/cards/edhrec_commander_api_response_commander_details.h b/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/cards/edhrec_commander_api_response_commander_details.h index 293e9a150..a0858e9d2 100644 --- a/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/cards/edhrec_commander_api_response_commander_details.h +++ b/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/cards/edhrec_commander_api_response_commander_details.h @@ -10,6 +10,8 @@ #include "../card_prices/edhrec_api_response_card_prices.h" #include +#include +#include #include #include diff --git a/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/commander/edhrec_commander_api_response.cpp b/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/commander/edhrec_commander_api_response.cpp index da2a9c052..1e0304e8a 100644 --- a/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/commander/edhrec_commander_api_response.cpp +++ b/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/commander/edhrec_commander_api_response.cpp @@ -1,7 +1,12 @@ #include "edhrec_commander_api_response.h" +#include "../archidekt_links/edhrec_api_response_archidekt_links.h" +#include "../cards/edhrec_api_response_card_container.h" + #include #include +#include +#include void EdhrecCommanderApiResponse::fromJson(const QJsonObject &json) { diff --git a/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/commander/edhrec_commander_api_response_average_deck_statistics.cpp b/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/commander/edhrec_commander_api_response_average_deck_statistics.cpp index 74cce5322..996ec3c0c 100644 --- a/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/commander/edhrec_commander_api_response_average_deck_statistics.cpp +++ b/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/commander/edhrec_commander_api_response_average_deck_statistics.cpp @@ -1,5 +1,7 @@ #include "edhrec_commander_api_response_average_deck_statistics.h" +#include + void EdhrecCommanderApiResponseAverageDeckStatistics::fromJson(const QJsonObject &json) { creature = json.value("creature").toInt(0); diff --git a/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/top_cards/edhrec_top_cards_api_response.cpp b/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/top_cards/edhrec_top_cards_api_response.cpp index 26122ce89..4df2f3523 100644 --- a/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/top_cards/edhrec_top_cards_api_response.cpp +++ b/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/top_cards/edhrec_top_cards_api_response.cpp @@ -1,7 +1,10 @@ #include "edhrec_top_cards_api_response.h" +#include "../cards/edhrec_api_response_card_container.h" + #include -#include +#include +#include void EdhrecTopCardsApiResponse::fromJson(const QJsonObject &json) { diff --git a/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/top_cards/edhrec_top_cards_api_response.h b/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/top_cards/edhrec_top_cards_api_response.h index 695498e2b..cdf0d4a71 100644 --- a/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/top_cards/edhrec_top_cards_api_response.h +++ b/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/top_cards/edhrec_top_cards_api_response.h @@ -9,6 +9,7 @@ #include "../cards/edhrec_api_response_card_container.h" +#include #include class EdhrecTopCardsApiResponse diff --git a/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/top_commanders/edhrec_top_commanders_api_response.cpp b/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/top_commanders/edhrec_top_commanders_api_response.cpp index 83b10c9e5..c1bf71cb2 100644 --- a/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/top_commanders/edhrec_top_commanders_api_response.cpp +++ b/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/top_commanders/edhrec_top_commanders_api_response.cpp @@ -1,7 +1,10 @@ #include "edhrec_top_commanders_api_response.h" +#include "../cards/edhrec_api_response_card_container.h" + #include -#include +#include +#include void EdhrecTopCommandersApiResponse::fromJson(const QJsonObject &json) { diff --git a/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/top_commanders/edhrec_top_commanders_api_response.h b/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/top_commanders/edhrec_top_commanders_api_response.h index 10aa51ff4..4579632c6 100644 --- a/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/top_commanders/edhrec_top_commanders_api_response.h +++ b/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/top_commanders/edhrec_top_commanders_api_response.h @@ -9,6 +9,7 @@ #include "../cards/edhrec_api_response_card_container.h" +#include #include class EdhrecTopCommandersApiResponse diff --git a/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/top_tags/edhrec_top_tags_api_response.cpp b/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/top_tags/edhrec_top_tags_api_response.cpp index 56eb4fa4f..cf6ea5df8 100644 --- a/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/top_tags/edhrec_top_tags_api_response.cpp +++ b/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/top_tags/edhrec_top_tags_api_response.cpp @@ -1,7 +1,10 @@ #include "edhrec_top_tags_api_response.h" +#include "../cards/edhrec_api_response_card_container.h" + #include -#include +#include +#include void EdhrecTopTagsApiResponse::fromJson(const QJsonObject &json) { diff --git a/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/top_tags/edhrec_top_tags_api_response.h b/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/top_tags/edhrec_top_tags_api_response.h index 0337d94f8..e6e25d97b 100644 --- a/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/top_tags/edhrec_top_tags_api_response.h +++ b/cockatrice/src/interface/widgets/tabs/api/edhrec/api_response/top_tags/edhrec_top_tags_api_response.h @@ -9,6 +9,7 @@ #include "../cards/edhrec_api_response_card_container.h" +#include #include class EdhrecTopTagsApiResponse diff --git a/cockatrice/src/interface/widgets/tabs/api/edhrec/display/card_prices/edhrec_api_response_card_prices_display_widget.cpp b/cockatrice/src/interface/widgets/tabs/api/edhrec/display/card_prices/edhrec_api_response_card_prices_display_widget.cpp index 75902daad..0ba74fd60 100644 --- a/cockatrice/src/interface/widgets/tabs/api/edhrec/display/card_prices/edhrec_api_response_card_prices_display_widget.cpp +++ b/cockatrice/src/interface/widgets/tabs/api/edhrec/display/card_prices/edhrec_api_response_card_prices_display_widget.cpp @@ -1,5 +1,13 @@ #include "edhrec_api_response_card_prices_display_widget.h" +#include "../../api_response/card_prices/edhrec_api_response_card_prices.h" + +#include +#include +#include +#include +#include + EdhrecApiResponseCardPricesDisplayWidget::EdhrecApiResponseCardPricesDisplayWidget(QWidget *parent, const CardPrices &_cardPrices) : QWidget(parent), cardPrices(_cardPrices) diff --git a/cockatrice/src/interface/widgets/tabs/api/edhrec/display/card_prices/edhrec_api_response_card_prices_display_widget.h b/cockatrice/src/interface/widgets/tabs/api/edhrec/display/card_prices/edhrec_api_response_card_prices_display_widget.h index 8943ae9f3..75fe033dc 100644 --- a/cockatrice/src/interface/widgets/tabs/api/edhrec/display/card_prices/edhrec_api_response_card_prices_display_widget.h +++ b/cockatrice/src/interface/widgets/tabs/api/edhrec/display/card_prices/edhrec_api_response_card_prices_display_widget.h @@ -9,9 +9,11 @@ #include "../../api_response/card_prices/edhrec_api_response_card_prices.h" -#include -#include #include +#include + +class QGridLayout; +class QLabel; class EdhrecApiResponseCardPricesDisplayWidget : public QWidget { diff --git a/cockatrice/src/interface/widgets/tabs/api/edhrec/display/cards/edhrec_api_response_card_details_display_widget.cpp b/cockatrice/src/interface/widgets/tabs/api/edhrec/display/cards/edhrec_api_response_card_details_display_widget.cpp index 00c1741df..0728b3154 100644 --- a/cockatrice/src/interface/widgets/tabs/api/edhrec/display/cards/edhrec_api_response_card_details_display_widget.cpp +++ b/cockatrice/src/interface/widgets/tabs/api/edhrec/display/cards/edhrec_api_response_card_details_display_widget.cpp @@ -1,10 +1,21 @@ #include "edhrec_api_response_card_details_display_widget.h" +#include "../../../../../cards/card_info_picture_widget.h" +#include "../../../../../cards/card_size_widget.h" #include "../../../../../general/display/background_plate_widget.h" +#include "../../api_response/cards/edhrec_api_response_card_details.h" #include "../../tab_edhrec_main.h" +#include "edhrec_api_response_card_inclusion_display_widget.h" +#include "edhrec_api_response_card_synergy_display_widget.h" +#include "libcockatrice/card/database/card_database_querier.h" +#include #include +#include +#include +#include #include +#include EdhrecApiResponseCardDetailsDisplayWidget::EdhrecApiResponseCardDetailsDisplayWidget( QWidget *parent, diff --git a/cockatrice/src/interface/widgets/tabs/api/edhrec/display/cards/edhrec_api_response_card_details_display_widget.h b/cockatrice/src/interface/widgets/tabs/api/edhrec/display/cards/edhrec_api_response_card_details_display_widget.h index b09cc4e04..d738f4685 100644 --- a/cockatrice/src/interface/widgets/tabs/api/edhrec/display/cards/edhrec_api_response_card_details_display_widget.h +++ b/cockatrice/src/interface/widgets/tabs/api/edhrec/display/cards/edhrec_api_response_card_details_display_widget.h @@ -7,15 +7,18 @@ #ifndef EDHREC_COMMANDER_API_RESPONSE_CARD_DETAILS_DISPLAY_WIDGET_H #define EDHREC_COMMANDER_API_RESPONSE_CARD_DETAILS_DISPLAY_WIDGET_H -#include "../../../../../cards/card_info_picture_widget.h" -#include "../../../../../general/display/background_plate_widget.h" #include "../../api_response/cards/edhrec_api_response_card_details.h" -#include "edhrec_api_response_card_inclusion_display_widget.h" -#include "edhrec_api_response_card_synergy_display_widget.h" -#include -#include +#include #include +#include + +class BackgroundPlateWidget; +class CardInfoPictureWidget; +class EdhrecApiResponseCardInclusionDisplayWidget; +class EdhrecApiResponseCardSynergyDisplayWidget; +class QLabel; +class QVBoxLayout; class EdhrecApiResponseCardDetailsDisplayWidget : public QWidget { diff --git a/cockatrice/src/interface/widgets/tabs/api/edhrec/display/cards/edhrec_api_response_card_inclusion_display_widget.cpp b/cockatrice/src/interface/widgets/tabs/api/edhrec/display/cards/edhrec_api_response_card_inclusion_display_widget.cpp index 8292b00ea..6786b006e 100644 --- a/cockatrice/src/interface/widgets/tabs/api/edhrec/display/cards/edhrec_api_response_card_inclusion_display_widget.cpp +++ b/cockatrice/src/interface/widgets/tabs/api/edhrec/display/cards/edhrec_api_response_card_inclusion_display_widget.cpp @@ -1,5 +1,13 @@ #include "edhrec_api_response_card_inclusion_display_widget.h" +#include "../../../../../general/display/charts/bars/percent_bar_widget.h" +#include "../../api_response/cards/edhrec_api_response_card_details.h" + +#include +#include +#include +#include + EdhrecApiResponseCardInclusionDisplayWidget::EdhrecApiResponseCardInclusionDisplayWidget( QWidget *parent, const EdhrecApiResponseCardDetails &_toDisplay) diff --git a/cockatrice/src/interface/widgets/tabs/api/edhrec/display/cards/edhrec_api_response_card_inclusion_display_widget.h b/cockatrice/src/interface/widgets/tabs/api/edhrec/display/cards/edhrec_api_response_card_inclusion_display_widget.h index 516d820eb..61a1bd645 100644 --- a/cockatrice/src/interface/widgets/tabs/api/edhrec/display/cards/edhrec_api_response_card_inclusion_display_widget.h +++ b/cockatrice/src/interface/widgets/tabs/api/edhrec/display/cards/edhrec_api_response_card_inclusion_display_widget.h @@ -7,12 +7,14 @@ #ifndef EDHREC_API_RESPONSE_CARD_INCLUSION_DISPLAY_WIDGET_H #define EDHREC_API_RESPONSE_CARD_INCLUSION_DISPLAY_WIDGET_H -#include "../../../../../general/display/charts/bars/percent_bar_widget.h" #include "../../api_response/cards/edhrec_api_response_card_details.h" -#include -#include #include +#include + +class PercentBarWidget; +class QLabel; +class QVBoxLayout; class EdhrecApiResponseCardInclusionDisplayWidget : public QWidget { diff --git a/cockatrice/src/interface/widgets/tabs/api/edhrec/display/cards/edhrec_api_response_card_list_display_widget.cpp b/cockatrice/src/interface/widgets/tabs/api/edhrec/display/cards/edhrec_api_response_card_list_display_widget.cpp index 841ef315b..5295b92d5 100644 --- a/cockatrice/src/interface/widgets/tabs/api/edhrec/display/cards/edhrec_api_response_card_list_display_widget.cpp +++ b/cockatrice/src/interface/widgets/tabs/api/edhrec/display/cards/edhrec_api_response_card_list_display_widget.cpp @@ -1,9 +1,19 @@ #include "edhrec_api_response_card_list_display_widget.h" #include "../../../../../general/display/banner_widget.h" +#include "../../../../../general/layout_containers/flow_widget.h" +#include "../../api_response/cards/edhrec_api_response_card_details.h" +#include "../../api_response/cards/edhrec_api_response_card_list.h" #include "edhrec_api_response_card_details_display_widget.h" -#include +#include +#include +#include +#include +#include +#include +#include +#include EdhrecApiResponseCardListDisplayWidget::EdhrecApiResponseCardListDisplayWidget(QWidget *parent, EdhrecApiResponseCardList toDisplay) diff --git a/cockatrice/src/interface/widgets/tabs/api/edhrec/display/cards/edhrec_api_response_card_list_display_widget.h b/cockatrice/src/interface/widgets/tabs/api/edhrec/display/cards/edhrec_api_response_card_list_display_widget.h index 555da6ecf..20bdad8ea 100644 --- a/cockatrice/src/interface/widgets/tabs/api/edhrec/display/cards/edhrec_api_response_card_list_display_widget.h +++ b/cockatrice/src/interface/widgets/tabs/api/edhrec/display/cards/edhrec_api_response_card_list_display_widget.h @@ -8,12 +8,14 @@ #define EDHREC_COMMANDER_API_RESPONSE_CARD_LIST_DISPLAY_WIDGET_H #include "../../../../../general/display/banner_widget.h" -#include "../../../../../general/layout_containers/flow_widget.h" -#include "../../api_response/cards/edhrec_api_response_card_list.h" -#include -#include +#include #include +#include + +class EdhrecApiResponseCardList; +class FlowWidget; +class QVBoxLayout; class EdhrecApiResponseCardListDisplayWidget : public QWidget { diff --git a/cockatrice/src/interface/widgets/tabs/api/edhrec/display/cards/edhrec_api_response_card_synergy_display_widget.cpp b/cockatrice/src/interface/widgets/tabs/api/edhrec/display/cards/edhrec_api_response_card_synergy_display_widget.cpp index 9d5571a8f..5f4b02327 100644 --- a/cockatrice/src/interface/widgets/tabs/api/edhrec/display/cards/edhrec_api_response_card_synergy_display_widget.cpp +++ b/cockatrice/src/interface/widgets/tabs/api/edhrec/display/cards/edhrec_api_response_card_synergy_display_widget.cpp @@ -1,5 +1,13 @@ #include "edhrec_api_response_card_synergy_display_widget.h" +#include "../../../../../general/display/charts/bars/percent_bar_widget.h" +#include "../../api_response/cards/edhrec_api_response_card_details.h" + +#include +#include +#include +#include + EdhrecApiResponseCardSynergyDisplayWidget::EdhrecApiResponseCardSynergyDisplayWidget( QWidget *parent, const EdhrecApiResponseCardDetails &_toDisplay) diff --git a/cockatrice/src/interface/widgets/tabs/api/edhrec/display/cards/edhrec_api_response_card_synergy_display_widget.h b/cockatrice/src/interface/widgets/tabs/api/edhrec/display/cards/edhrec_api_response_card_synergy_display_widget.h index 5800b5497..71cca6ca4 100644 --- a/cockatrice/src/interface/widgets/tabs/api/edhrec/display/cards/edhrec_api_response_card_synergy_display_widget.h +++ b/cockatrice/src/interface/widgets/tabs/api/edhrec/display/cards/edhrec_api_response_card_synergy_display_widget.h @@ -7,12 +7,14 @@ #ifndef EDHREC_API_RESPONSE_CARD_SYNERGY_DISPLAY_WIDGET_H #define EDHREC_API_RESPONSE_CARD_SYNERGY_DISPLAY_WIDGET_H -#include "../../../../../general/display/charts/bars/percent_bar_widget.h" #include "../../api_response/cards/edhrec_api_response_card_details.h" -#include -#include #include +#include + +class PercentBarWidget; +class QLabel; +class QVBoxLayout; class EdhrecApiResponseCardSynergyDisplayWidget : public QWidget { diff --git a/cockatrice/src/interface/widgets/tabs/api/edhrec/display/commander/edhrec_api_response_commander_details_display_widget.cpp b/cockatrice/src/interface/widgets/tabs/api/edhrec/display/commander/edhrec_api_response_commander_details_display_widget.cpp index 40a803e77..3da050edd 100644 --- a/cockatrice/src/interface/widgets/tabs/api/edhrec/display/commander/edhrec_api_response_commander_details_display_widget.cpp +++ b/cockatrice/src/interface/widgets/tabs/api/edhrec/display/commander/edhrec_api_response_commander_details_display_widget.cpp @@ -1,11 +1,20 @@ #include "edhrec_api_response_commander_details_display_widget.h" #include "../../../../../cards/card_info_picture_widget.h" +#include "../../../../../cards/card_size_widget.h" +#include "../../api_response/cards/edhrec_commander_api_response_commander_details.h" #include "../../tab_edhrec_main.h" #include "../card_prices/edhrec_api_response_card_prices_display_widget.h" -#include "edhrec_commander_api_response_bracket_navigation_widget.h" +#include "edhrec_commander_api_response_navigation_widget.h" +#include "libcockatrice/card/database/card_database_querier.h" +#include +#include +#include +#include +#include #include +#include EdhrecCommanderResponseCommanderDetailsDisplayWidget::EdhrecCommanderResponseCommanderDetailsDisplayWidget( QWidget *parent, diff --git a/cockatrice/src/interface/widgets/tabs/api/edhrec/display/commander/edhrec_api_response_commander_details_display_widget.h b/cockatrice/src/interface/widgets/tabs/api/edhrec/display/commander/edhrec_api_response_commander_details_display_widget.h index 4201ce3b3..197263512 100644 --- a/cockatrice/src/interface/widgets/tabs/api/edhrec/display/commander/edhrec_api_response_commander_details_display_widget.h +++ b/cockatrice/src/interface/widgets/tabs/api/edhrec/display/commander/edhrec_api_response_commander_details_display_widget.h @@ -7,16 +7,19 @@ #ifndef EDHREC_COMMANDER_API_RESPONSE_COMMANDER_DETAILS_DISPLAY_WIDGET_H #define EDHREC_COMMANDER_API_RESPONSE_COMMANDER_DETAILS_DISPLAY_WIDGET_H -#include "../../../../../cards/card_info_picture_widget.h" #include "../../api_response/cards/edhrec_commander_api_response_commander_details.h" -#include "../card_prices/edhrec_api_response_card_prices_display_widget.h" -#include "edhrec_commander_api_response_navigation_widget.h" -#include -#include +#include #include +#include class EdhrecCommanderApiResponseNavigationWidget; +class CardInfoPictureWidget; +class EdhrecApiResponseCardPricesDisplayWidget; +class QHBoxLayout; +class QLabel; +class QVBoxLayout; + class EdhrecCommanderResponseCommanderDetailsDisplayWidget : public QWidget { Q_OBJECT diff --git a/cockatrice/src/interface/widgets/tabs/api/edhrec/display/commander/edhrec_commander_api_response_bracket_navigation_widget.cpp b/cockatrice/src/interface/widgets/tabs/api/edhrec/display/commander/edhrec_commander_api_response_bracket_navigation_widget.cpp index c3ab23e41..b26a7e574 100644 --- a/cockatrice/src/interface/widgets/tabs/api/edhrec/display/commander/edhrec_commander_api_response_bracket_navigation_widget.cpp +++ b/cockatrice/src/interface/widgets/tabs/api/edhrec/display/commander/edhrec_commander_api_response_bracket_navigation_widget.cpp @@ -1,6 +1,12 @@ #include "edhrec_commander_api_response_bracket_navigation_widget.h" +#include +#include +#include +#include #include +#include +#include EdhrecCommanderApiResponseBracketNavigationWidget::EdhrecCommanderApiResponseBracketNavigationWidget( QWidget *parent, diff --git a/cockatrice/src/interface/widgets/tabs/api/edhrec/display/commander/edhrec_commander_api_response_bracket_navigation_widget.h b/cockatrice/src/interface/widgets/tabs/api/edhrec/display/commander/edhrec_commander_api_response_bracket_navigation_widget.h index 713ef2791..a741b6696 100644 --- a/cockatrice/src/interface/widgets/tabs/api/edhrec/display/commander/edhrec_commander_api_response_bracket_navigation_widget.h +++ b/cockatrice/src/interface/widgets/tabs/api/edhrec/display/commander/edhrec_commander_api_response_bracket_navigation_widget.h @@ -1,11 +1,16 @@ #ifndef COCKATRICE_EDHREC_COMMANDER_API_RESPONSE_BRACKET_NAVIGATION_WIDGET_H #define COCKATRICE_EDHREC_COMMANDER_API_RESPONSE_BRACKET_NAVIGATION_WIDGET_H -#include -#include +#include #include -#include +#include +#include #include +#include + +class QGridLayout; +class QLabel; +class QPushButton; class EdhrecCommanderApiResponseBracketNavigationWidget : public QWidget { diff --git a/cockatrice/src/interface/widgets/tabs/api/edhrec/display/commander/edhrec_commander_api_response_budget_navigation_widget.cpp b/cockatrice/src/interface/widgets/tabs/api/edhrec/display/commander/edhrec_commander_api_response_budget_navigation_widget.cpp index 1845c020d..48704d010 100644 --- a/cockatrice/src/interface/widgets/tabs/api/edhrec/display/commander/edhrec_commander_api_response_budget_navigation_widget.cpp +++ b/cockatrice/src/interface/widgets/tabs/api/edhrec/display/commander/edhrec_commander_api_response_budget_navigation_widget.cpp @@ -1,6 +1,12 @@ #include "edhrec_commander_api_response_budget_navigation_widget.h" +#include +#include +#include +#include #include +#include +#include EdhrecCommanderApiResponseBudgetNavigationWidget::EdhrecCommanderApiResponseBudgetNavigationWidget( QWidget *parent, diff --git a/cockatrice/src/interface/widgets/tabs/api/edhrec/display/commander/edhrec_commander_api_response_budget_navigation_widget.h b/cockatrice/src/interface/widgets/tabs/api/edhrec/display/commander/edhrec_commander_api_response_budget_navigation_widget.h index 666edba16..8013d1d6b 100644 --- a/cockatrice/src/interface/widgets/tabs/api/edhrec/display/commander/edhrec_commander_api_response_budget_navigation_widget.h +++ b/cockatrice/src/interface/widgets/tabs/api/edhrec/display/commander/edhrec_commander_api_response_budget_navigation_widget.h @@ -1,11 +1,16 @@ #ifndef COCKATRICE_EDHREC_COMMANDER_API_RESPONSE_BUDGET_NAVIGATION_WIDGET_H #define COCKATRICE_EDHREC_COMMANDER_API_RESPONSE_BUDGET_NAVIGATION_WIDGET_H -#include -#include +#include #include -#include +#include +#include #include +#include + +class QGridLayout; +class QLabel; +class QPushButton; class EdhrecCommanderApiResponseBudgetNavigationWidget : public QWidget { diff --git a/cockatrice/src/interface/widgets/tabs/api/edhrec/display/commander/edhrec_commander_api_response_display_widget.cpp b/cockatrice/src/interface/widgets/tabs/api/edhrec/display/commander/edhrec_commander_api_response_display_widget.cpp index 230858d6c..111d91b91 100644 --- a/cockatrice/src/interface/widgets/tabs/api/edhrec/display/commander/edhrec_commander_api_response_display_widget.cpp +++ b/cockatrice/src/interface/widgets/tabs/api/edhrec/display/commander/edhrec_commander_api_response_display_widget.cpp @@ -1,15 +1,30 @@ #include "edhrec_commander_api_response_display_widget.h" -#include "../../../../../cards/card_info_picture_widget.h" +#include "../../api_response/cards/edhrec_api_response_card_container.h" +#include "../../api_response/cards/edhrec_api_response_card_list.h" #include "../../api_response/commander/edhrec_commander_api_response.h" #include "../cards/edhrec_api_response_card_list_display_widget.h" #include "edhrec_api_response_commander_details_display_widget.h" +#include +#include +#include +#include +#include #include +#include +#include #include #include +#include #include +#include #include +#include +#include +#include + +class QModelIndex; EdhrecCommanderApiResponseDisplayWidget::EdhrecCommanderApiResponseDisplayWidget(QWidget *parent, EdhrecCommanderApiResponse response, diff --git a/cockatrice/src/interface/widgets/tabs/api/edhrec/display/commander/edhrec_commander_api_response_display_widget.h b/cockatrice/src/interface/widgets/tabs/api/edhrec/display/commander/edhrec_commander_api_response_display_widget.h index 80da8a7f8..5ada40df3 100644 --- a/cockatrice/src/interface/widgets/tabs/api/edhrec/display/commander/edhrec_commander_api_response_display_widget.h +++ b/cockatrice/src/interface/widgets/tabs/api/edhrec/display/commander/edhrec_commander_api_response_display_widget.h @@ -7,11 +7,14 @@ #ifndef EDHREC_COMMANDER_API_RESPONSE_DISPLAY_WIDGET_H #define EDHREC_COMMANDER_API_RESPONSE_DISPLAY_WIDGET_H -#include "../../api_response/commander/edhrec_commander_api_response.h" - -#include -#include +#include #include +#include + +class EdhrecCommanderApiResponse; +class QHBoxLayout; +class QScrollArea; +class QVBoxLayout; class EdhrecCommanderApiResponseDisplayWidget : public QWidget { diff --git a/cockatrice/src/interface/widgets/tabs/api/edhrec/display/commander/edhrec_commander_api_response_navigation_widget.cpp b/cockatrice/src/interface/widgets/tabs/api/edhrec/display/commander/edhrec_commander_api_response_navigation_widget.cpp index c42d2ed90..fd02c4261 100644 --- a/cockatrice/src/interface/widgets/tabs/api/edhrec/display/commander/edhrec_commander_api_response_navigation_widget.cpp +++ b/cockatrice/src/interface/widgets/tabs/api/edhrec/display/commander/edhrec_commander_api_response_navigation_widget.cpp @@ -1,6 +1,12 @@ #include "edhrec_commander_api_response_navigation_widget.h" #include "../../tab_edhrec_main.h" +#include "edhrec_commander_api_response_bracket_navigation_widget.h" +#include "edhrec_commander_api_response_budget_navigation_widget.h" + +#include +#include +#include EdhrecCommanderApiResponseNavigationWidget::EdhrecCommanderApiResponseNavigationWidget( QWidget *parent, diff --git a/cockatrice/src/interface/widgets/tabs/api/edhrec/display/commander/edhrec_commander_api_response_navigation_widget.h b/cockatrice/src/interface/widgets/tabs/api/edhrec/display/commander/edhrec_commander_api_response_navigation_widget.h index 9b46b54ba..737558625 100644 --- a/cockatrice/src/interface/widgets/tabs/api/edhrec/display/commander/edhrec_commander_api_response_navigation_widget.h +++ b/cockatrice/src/interface/widgets/tabs/api/edhrec/display/commander/edhrec_commander_api_response_navigation_widget.h @@ -7,14 +7,16 @@ #ifndef EDHREC_COMMANDER_API_RESPONSE_NAVIGATION_WIDGET_H #define EDHREC_COMMANDER_API_RESPONSE_NAVIGATION_WIDGET_H -#include "edhrec_api_response_commander_details_display_widget.h" -#include "edhrec_commander_api_response_bracket_navigation_widget.h" -#include "edhrec_commander_api_response_budget_navigation_widget.h" +#include "../../api_response/cards/edhrec_commander_api_response_commander_details.h" -#include -#include -#include +#include #include +#include + +class EdhrecCommanderApiResponseBracketNavigationWidget; +class EdhrecCommanderApiResponseBudgetNavigationWidget; +class QGridLayout; +class QPushButton; class EdhrecCommanderApiResponseNavigationWidget : public QWidget { diff --git a/cockatrice/src/interface/widgets/tabs/api/edhrec/display/top_cards/edhrec_top_cards_api_response_display_widget.cpp b/cockatrice/src/interface/widgets/tabs/api/edhrec/display/top_cards/edhrec_top_cards_api_response_display_widget.cpp index ae07c9dc8..6f32db102 100644 --- a/cockatrice/src/interface/widgets/tabs/api/edhrec/display/top_cards/edhrec_top_cards_api_response_display_widget.cpp +++ b/cockatrice/src/interface/widgets/tabs/api/edhrec/display/top_cards/edhrec_top_cards_api_response_display_widget.cpp @@ -1,8 +1,17 @@ #include "edhrec_top_cards_api_response_display_widget.h" +#include "../../api_response/cards/edhrec_api_response_card_container.h" +#include "../../api_response/cards/edhrec_api_response_card_list.h" #include "../../api_response/top_cards/edhrec_top_cards_api_response.h" #include "../cards/edhrec_api_response_card_list_display_widget.h" +#include +#include +#include +#include +#include +#include + EdhrecTopCardsApiResponseDisplayWidget::EdhrecTopCardsApiResponseDisplayWidget(QWidget *parent, EdhrecTopCardsApiResponse response) : QWidget(parent) diff --git a/cockatrice/src/interface/widgets/tabs/api/edhrec/display/top_cards/edhrec_top_cards_api_response_display_widget.h b/cockatrice/src/interface/widgets/tabs/api/edhrec/display/top_cards/edhrec_top_cards_api_response_display_widget.h index 30998391c..8b5ddfad0 100644 --- a/cockatrice/src/interface/widgets/tabs/api/edhrec/display/top_cards/edhrec_top_cards_api_response_display_widget.h +++ b/cockatrice/src/interface/widgets/tabs/api/edhrec/display/top_cards/edhrec_top_cards_api_response_display_widget.h @@ -7,12 +7,13 @@ #ifndef EDHREC_TOP_CARDS_API_RESPONSE_DISPLAY_WIDGET_H #define EDHREC_TOP_CARDS_API_RESPONSE_DISPLAY_WIDGET_H -#include "../../api_response/top_cards/edhrec_top_cards_api_response.h" - -#include -#include -#include #include +#include + +class EdhrecTopCardsApiResponse; +class QHBoxLayout; +class QScrollArea; +class QVBoxLayout; class EdhrecTopCardsApiResponseDisplayWidget : public QWidget { diff --git a/cockatrice/src/interface/widgets/tabs/api/edhrec/display/top_commander/edhrec_top_commanders_api_response_display_widget.cpp b/cockatrice/src/interface/widgets/tabs/api/edhrec/display/top_commander/edhrec_top_commanders_api_response_display_widget.cpp index 13f54a979..4ab333fd4 100644 --- a/cockatrice/src/interface/widgets/tabs/api/edhrec/display/top_commander/edhrec_top_commanders_api_response_display_widget.cpp +++ b/cockatrice/src/interface/widgets/tabs/api/edhrec/display/top_commander/edhrec_top_commanders_api_response_display_widget.cpp @@ -1,8 +1,20 @@ #include "edhrec_top_commanders_api_response_display_widget.h" +#include "../../api_response/cards/edhrec_api_response_card_container.h" +#include "../../api_response/cards/edhrec_api_response_card_list.h" #include "../../api_response/top_commanders/edhrec_top_commanders_api_response.h" #include "../cards/edhrec_api_response_card_list_display_widget.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include + EdhrecTopCommandersApiResponseDisplayWidget::EdhrecTopCommandersApiResponseDisplayWidget( QWidget *parent, EdhrecTopCommandersApiResponse response) diff --git a/cockatrice/src/interface/widgets/tabs/api/edhrec/display/top_commander/edhrec_top_commanders_api_response_display_widget.h b/cockatrice/src/interface/widgets/tabs/api/edhrec/display/top_commander/edhrec_top_commanders_api_response_display_widget.h index 2b9563ea5..8471a8dda 100644 --- a/cockatrice/src/interface/widgets/tabs/api/edhrec/display/top_commander/edhrec_top_commanders_api_response_display_widget.h +++ b/cockatrice/src/interface/widgets/tabs/api/edhrec/display/top_commander/edhrec_top_commanders_api_response_display_widget.h @@ -7,12 +7,13 @@ #ifndef EDHREC_TOP_COMMANDERS_API_RESPONSE_DISPLAY_WIDGET_H #define EDHREC_TOP_COMMANDERS_API_RESPONSE_DISPLAY_WIDGET_H -#include "../../api_response/top_commanders/edhrec_top_commanders_api_response.h" - -#include -#include -#include #include +#include + +class EdhrecTopCommandersApiResponse; +class QHBoxLayout; +class QScrollArea; +class QVBoxLayout; class EdhrecTopCommandersApiResponseDisplayWidget : public QWidget { diff --git a/cockatrice/src/interface/widgets/tabs/api/edhrec/display/top_tags/edhrec_top_tags_api_response_display_widget.cpp b/cockatrice/src/interface/widgets/tabs/api/edhrec/display/top_tags/edhrec_top_tags_api_response_display_widget.cpp index 91a1ce3fa..9c7ce8d06 100644 --- a/cockatrice/src/interface/widgets/tabs/api/edhrec/display/top_tags/edhrec_top_tags_api_response_display_widget.cpp +++ b/cockatrice/src/interface/widgets/tabs/api/edhrec/display/top_tags/edhrec_top_tags_api_response_display_widget.cpp @@ -1,8 +1,17 @@ #include "edhrec_top_tags_api_response_display_widget.h" +#include "../../api_response/cards/edhrec_api_response_card_container.h" +#include "../../api_response/cards/edhrec_api_response_card_list.h" #include "../../api_response/top_tags/edhrec_top_tags_api_response.h" #include "../cards/edhrec_api_response_card_list_display_widget.h" +#include +#include +#include +#include +#include +#include + EdhrecTopTagsApiResponseDisplayWidget::EdhrecTopTagsApiResponseDisplayWidget(QWidget *parent, EdhrecTopTagsApiResponse response) : QWidget(parent) diff --git a/cockatrice/src/interface/widgets/tabs/api/edhrec/display/top_tags/edhrec_top_tags_api_response_display_widget.h b/cockatrice/src/interface/widgets/tabs/api/edhrec/display/top_tags/edhrec_top_tags_api_response_display_widget.h index 4a4fc8991..2c13d069f 100644 --- a/cockatrice/src/interface/widgets/tabs/api/edhrec/display/top_tags/edhrec_top_tags_api_response_display_widget.h +++ b/cockatrice/src/interface/widgets/tabs/api/edhrec/display/top_tags/edhrec_top_tags_api_response_display_widget.h @@ -7,11 +7,13 @@ #ifndef EDHREC_TOP_TAGS_API_RESPONSE_DISPLAY_WIDGET_H #define EDHREC_TOP_TAGS_API_RESPONSE_DISPLAY_WIDGET_H -#include "../../api_response/top_tags/edhrec_top_tags_api_response.h" - -#include -#include #include +#include + +class EdhrecTopTagsApiResponse; +class QHBoxLayout; +class QScrollArea; +class QVBoxLayout; class EdhrecTopTagsApiResponseDisplayWidget : public QWidget { diff --git a/cockatrice/src/interface/widgets/tabs/api/edhrec/tab_edhrec.cpp b/cockatrice/src/interface/widgets/tabs/api/edhrec/tab_edhrec.cpp index 10389f4eb..3aa395126 100644 --- a/cockatrice/src/interface/widgets/tabs/api/edhrec/tab_edhrec.cpp +++ b/cockatrice/src/interface/widgets/tabs/api/edhrec/tab_edhrec.cpp @@ -1,16 +1,26 @@ #include "tab_edhrec.h" +#include "../../tab.h" #include "api_response/commander/edhrec_commander_api_response.h" #include "display/commander/edhrec_commander_api_response_display_widget.h" +#include "libcockatrice/card/card_info.h" +#include +#include #include #include #include #include +#include #include #include +#include #include -#include +#include +#include +#include + +class TabSupervisor; TabEdhRec::TabEdhRec(TabSupervisor *_tabSupervisor) : Tab(_tabSupervisor) { diff --git a/cockatrice/src/interface/widgets/tabs/api/edhrec/tab_edhrec.h b/cockatrice/src/interface/widgets/tabs/api/edhrec/tab_edhrec.h index 5ce36c9cf..4e3c9c8ba 100644 --- a/cockatrice/src/interface/widgets/tabs/api/edhrec/tab_edhrec.h +++ b/cockatrice/src/interface/widgets/tabs/api/edhrec/tab_edhrec.h @@ -8,10 +8,16 @@ #define TAB_EDHREC_H #include "../../tab.h" -#include "display/commander/edhrec_commander_api_response_display_widget.h" -#include +#include +#include #include +#include + +class EdhrecCommanderApiResponseDisplayWidget; +class QNetworkAccessManager; +class QNetworkReply; +class TabSupervisor; class TabEdhRec : public Tab { diff --git a/cockatrice/src/interface/widgets/tabs/api/edhrec/tab_edhrec_main.cpp b/cockatrice/src/interface/widgets/tabs/api/edhrec/tab_edhrec_main.cpp index bd52dd3b5..ca575dc02 100644 --- a/cockatrice/src/interface/widgets/tabs/api/edhrec/tab_edhrec_main.cpp +++ b/cockatrice/src/interface/widgets/tabs/api/edhrec/tab_edhrec_main.cpp @@ -1,6 +1,9 @@ #include "tab_edhrec_main.h" #include "../../../../../client/settings/cache_settings.h" +#include "../../../../deck_loader/loaded_deck.h" +#include "../../../cards/card_size_widget.h" +#include "../../../quick_settings/settings_button_widget.h" #include "../../../utility/completer_utils.h" #include "../../tab_supervisor.h" #include "api_response/average_deck/edhrec_average_deck_api_response.h" @@ -18,13 +21,17 @@ #include #include #include +#include #include #include #include #include #include +#include #include #include +#include +#include #include #include diff --git a/cockatrice/src/interface/widgets/tabs/api/edhrec/tab_edhrec_main.h b/cockatrice/src/interface/widgets/tabs/api/edhrec/tab_edhrec_main.h index a7ed83efd..5d0245ed4 100644 --- a/cockatrice/src/interface/widgets/tabs/api/edhrec/tab_edhrec_main.h +++ b/cockatrice/src/interface/widgets/tabs/api/edhrec/tab_edhrec_main.h @@ -7,16 +7,25 @@ #ifndef TAB_EDHREC_MAIN_H #define TAB_EDHREC_MAIN_H -#include "../../interface/widgets/cards/card_size_widget.h" -#include "../../interface/widgets/quick_settings/settings_button_widget.h" #include "../../tab.h" -#include "display/commander/edhrec_commander_api_response_display_widget.h" +#include "libcockatrice/card/card_info.h" -#include -#include -#include -#include -#include +#include +#include +#include +#include + +class CardSizeWidget; +class EdhrecCommanderApiResponseDisplayWidget; +class QHBoxLayout; +class QLineEdit; +class QNetworkAccessManager; +class QNetworkReply; +class QPushButton; +class QVBoxLayout; +class QWidget; +class SettingsButtonWidget; +class TabSupervisor; class TabEdhRecMain : public Tab { diff --git a/cockatrice/src/interface/widgets/tabs/tab.cpp b/cockatrice/src/interface/widgets/tabs/tab.cpp index 3dcb3b523..5ef4d18b8 100644 --- a/cockatrice/src/interface/widgets/tabs/tab.cpp +++ b/cockatrice/src/interface/widgets/tabs/tab.cpp @@ -1,12 +1,17 @@ #include "tab.h" #include "../interface/widgets/cards/card_info_display_widget.h" +#include "libcockatrice/utility/card_ref.h" #include "tab_supervisor.h" #include -#include -#include +#include +#include +#include #include +#include +#include +#include Tab::Tab(TabSupervisor *_tabSupervisor) : QMainWindow(_tabSupervisor), tabSupervisor(_tabSupervisor), contentsChanged(false), infoPopup(0) diff --git a/cockatrice/src/interface/widgets/tabs/tab.h b/cockatrice/src/interface/widgets/tabs/tab.h index bddf325e2..e114f9bd9 100644 --- a/cockatrice/src/interface/widgets/tabs/tab.h +++ b/cockatrice/src/interface/widgets/tabs/tab.h @@ -7,12 +7,16 @@ #ifndef TAB_H #define TAB_H +#include #include +#include #include +#include class QMenu; class TabSupervisor; class CardInfoDisplayWidget; +class QPoint; class Tab : public QMainWindow { diff --git a/cockatrice/src/interface/widgets/tabs/tab_account.cpp b/cockatrice/src/interface/widgets/tabs/tab_account.cpp index dbcf50966..e55dc55d0 100644 --- a/cockatrice/src/interface/widgets/tabs/tab_account.cpp +++ b/cockatrice/src/interface/widgets/tabs/tab_account.cpp @@ -6,10 +6,17 @@ #include "../interface/widgets/server/user/user_list_manager.h" #include "../interface/widgets/server/user/user_list_widget.h" #include "../interface/widgets/utility/custom_line_edit.h" +#include "libcockatrice/protocol/pb/response.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_user.pb.h" #include "tab_supervisor.h" +#include +#include +#include #include +#include #include +#include #include #include #include @@ -19,6 +26,7 @@ #include #include #include +#include TabAccount::TabAccount(TabSupervisor *_tabSupervisor, AbstractClient *_client, const ServerInfo_User &userInfo) : Tab(_tabSupervisor), client(_client) diff --git a/cockatrice/src/interface/widgets/tabs/tab_account.h b/cockatrice/src/interface/widgets/tabs/tab_account.h index 68054c7a1..ab2c4b38d 100644 --- a/cockatrice/src/interface/widgets/tabs/tab_account.h +++ b/cockatrice/src/interface/widgets/tabs/tab_account.h @@ -9,11 +9,16 @@ #include "tab.h" +#include +#include +#include +// IWYU pragma: keep +// ServerInfo_User appears by value and inside QList in slot signatures, so the +// moc-generated code needs the complete type. #include class AbstractClient; class Event_AddToList; -class Event_ListRooms; class Event_RemoveFromList; class Event_UserJoined; class Event_UserLeft; @@ -23,6 +28,8 @@ class Response; class ServerInfo_User; class UserInfoBox; class UserListWidget; +class TabSupervisor; +template class QList; class TabAccount : public Tab { diff --git a/cockatrice/src/interface/widgets/tabs/tab_admin.cpp b/cockatrice/src/interface/widgets/tabs/tab_admin.cpp index 16f17e03e..cfbd00538 100644 --- a/cockatrice/src/interface/widgets/tabs/tab_admin.cpp +++ b/cockatrice/src/interface/widgets/tabs/tab_admin.cpp @@ -1,19 +1,31 @@ #include "tab_admin.h" +#include "libcockatrice/protocol/pb/response.pb.h" + #include #include #include +#include #include #include #include #include #include +#include +#include +#include #include #include #include #include #include #include +#include +#include + +class CommandContainer; +class QVariant; +class TabSupervisor; ShutdownDialog::ShutdownDialog(QWidget *parent) : QDialog(parent) { diff --git a/cockatrice/src/interface/widgets/tabs/tab_admin.h b/cockatrice/src/interface/widgets/tabs/tab_admin.h index 0da098ba5..8eb139a8e 100644 --- a/cockatrice/src/interface/widgets/tabs/tab_admin.h +++ b/cockatrice/src/interface/widgets/tabs/tab_admin.h @@ -10,15 +10,17 @@ #include "tab.h" #include -#include -#include +#include +#include class AbstractClient; - class QGroupBox; class QPushButton; class QSpinBox; class QLineEdit; +class QWidget; +class Response; +class TabSupervisor; class ShutdownDialog : public QDialog { diff --git a/cockatrice/src/interface/widgets/tabs/tab_card_art_rules.cpp b/cockatrice/src/interface/widgets/tabs/tab_card_art_rules.cpp index 999bc3db0..1fc2854ce 100644 --- a/cockatrice/src/interface/widgets/tabs/tab_card_art_rules.cpp +++ b/cockatrice/src/interface/widgets/tabs/tab_card_art_rules.cpp @@ -1,16 +1,39 @@ #include "tab_card_art_rules.h" #include "../utility/completer_utils.h" +#include "card_database_display_model.h" +#include "card_database_model.h" +#include "libcockatrice/card/card_info.h" #include "libcockatrice/card/database/card_database_manager.h" +#include "libcockatrice/card/database/card_database_querier.h" +#include "libcockatrice/card/printing/exact_card.h" +#include "libcockatrice/card/printing/printing_info.h" +#include "libcockatrice/card/set/card_set.h" +#include "libcockatrice/protocol/pb/response.pb.h" +#include +#include #include #include #include +#include +#include +#include +#include +#include #include +#include +#include +#include +#include #include #include #include #include +#include + +class QObject; +class TabSupervisor; CardArtRulesModel::CardArtRulesModel(AbstractClient *client, QObject *parent) : QAbstractTableModel(parent), client(client) diff --git a/cockatrice/src/interface/widgets/tabs/tab_card_art_rules.h b/cockatrice/src/interface/widgets/tabs/tab_card_art_rules.h index b9ea2ca83..f34300179 100644 --- a/cockatrice/src/interface/widgets/tabs/tab_card_art_rules.h +++ b/cockatrice/src/interface/widgets/tabs/tab_card_art_rules.h @@ -1,16 +1,28 @@ #ifndef COCKATRICE_DLG_CARD_ART_RULES_H #define COCKATRICE_DLG_CARD_ART_RULES_H -#include "card/card_search_model.h" -#include "tab_supervisor.h" +#include "tab.h" #include -#include -#include -#include -#include +#include +#include +#include +#include +#include class AbstractClient; +class CardCompleterProxyModel; +class CardDatabaseDisplayModel; +class CardDatabaseModel; +class CardSearchModel; +class QComboBox; +class QCompleter; +class QLineEdit; +class QObject; +class QPushButton; +class QTableView; +class Response; +class TabSupervisor; class CardArtRulesModel : public QAbstractTableModel { diff --git a/cockatrice/src/interface/widgets/tabs/tab_deck_editor.cpp b/cockatrice/src/interface/widgets/tabs/tab_deck_editor.cpp index 8439aef70..7ca179cea 100644 --- a/cockatrice/src/interface/widgets/tabs/tab_deck_editor.cpp +++ b/cockatrice/src/interface/widgets/tabs/tab_deck_editor.cpp @@ -2,28 +2,28 @@ #include "../../../client/settings/cache_settings.h" #include "../../../client/settings/shortcuts_settings.h" +#include "../deck_editor/deck_editor_card_database_dock_widget.h" +#include "../deck_editor/deck_editor_card_info_dock_widget.h" +#include "../deck_editor/deck_editor_deck_dock_widget.h" +#include "../deck_editor/deck_editor_printing_selector_dock_widget.h" #include "../deck_editor/deck_state_manager.h" -#include "../filters/filter_builder.h" -#include "../interface/pixel_map_generator.h" -#include "../interface/widgets/cards/card_info_frame_widget.h" #include "../interface/widgets/deck_editor/deck_editor_filter_dock_widget.h" #include "../interface/widgets/menus/deck_editor_menu.h" -#include "tab_supervisor.h" #include -#include -#include -#include +#include #include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include #include #include +#include + +class TabSupervisor; /** * @brief Constructs a new TabDeckEditor object. diff --git a/cockatrice/src/interface/widgets/tabs/tab_deck_editor.h b/cockatrice/src/interface/widgets/tabs/tab_deck_editor.h index 14be59cd7..afe62e962 100644 --- a/cockatrice/src/interface/widgets/tabs/tab_deck_editor.h +++ b/cockatrice/src/interface/widgets/tabs/tab_deck_editor.h @@ -1,17 +1,11 @@ #ifndef WINDOW_DECKEDITOR_H #define WINDOW_DECKEDITOR_H -#include "../../key_signals.h" -#include "../interface/widgets/visual_deck_storage/deck_preview/deck_preview_deck_tags_display_widget.h" #include "abstract_tab_deck_editor.h" -#include +#include -class CardDatabaseModel; -class CardDatabaseDisplayModel; -class DeckListModel; - -class QLabel; +class TabSupervisor; /** * @class TabDeckEditor diff --git a/cockatrice/src/interface/widgets/tabs/tab_deck_storage.cpp b/cockatrice/src/interface/widgets/tabs/tab_deck_storage.cpp index 41ebb17a2..44d04bd24 100644 --- a/cockatrice/src/interface/widgets/tabs/tab_deck_storage.cpp +++ b/cockatrice/src/interface/widgets/tabs/tab_deck_storage.cpp @@ -1,32 +1,55 @@ #include "tab_deck_storage.h" #include "../../../client/settings/cache_settings.h" +#include "../../deck_loader/deck_file_format.h" #include "../../deck_loader/deck_loader.h" +#include "../../deck_loader/loaded_deck.h" #include "../../pixel_map_generator.h" #include "../cards/additional_info/deck_color_identity.h" #include "../deck_share/deck_share_utils.h" #include "../deck_share/share_bar_widget.h" #include "../interface/widgets/server/remote/remote_decklist_tree_widget.h" #include "../interface/widgets/utility/get_text_with_max.h" +#include "abstract_client.h" +#include "libcockatrice/protocol/pb/commands.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_user.pb.h" +#include "libcockatrice/protocol/pb/session_commands.pb.h" +#include +#include #include #include -#include #include #include #include +#include +#include #include +#include #include #include #include #include +#include +#include #include #include +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include #include #include +#include +#include +#include #include #include #include @@ -38,12 +61,17 @@ #include #include #include -#include #include #include #include #include #include +#include +#include +#include +#include + +class TabSupervisor; namespace { diff --git a/cockatrice/src/interface/widgets/tabs/tab_deck_storage.h b/cockatrice/src/interface/widgets/tabs/tab_deck_storage.h index f8d585880..35a4649c7 100644 --- a/cockatrice/src/interface/widgets/tabs/tab_deck_storage.h +++ b/cockatrice/src/interface/widgets/tabs/tab_deck_storage.h @@ -11,22 +11,26 @@ #include "../interface/widgets/server/remote/remote_decklist_tree_widget.h" #include "tab.h" +#include +#include #include +#include #include +#include struct LoadedDeck; class ServerInfo_User; -class AbstractClient; class QTreeView; class QFileSystemModel; class QToolBar; -class QTreeWidget; -class QTreeWidgetItem; class QGroupBox; class QTimer; class CommandContainer; class Response; class ShareBarWidget; +class QAction; +class QModelIndex; +class TabSupervisor; class TabDeckStorage : public Tab { diff --git a/cockatrice/src/interface/widgets/tabs/tab_developer.cpp b/cockatrice/src/interface/widgets/tabs/tab_developer.cpp index 39652ef7d..d641a1ea5 100644 --- a/cockatrice/src/interface/widgets/tabs/tab_developer.cpp +++ b/cockatrice/src/interface/widgets/tabs/tab_developer.cpp @@ -6,21 +6,35 @@ #include "tab_developer.h" +#include "libcockatrice/protocol/pb/response.pb.h" + +#include #include #include +#include #include #include #include +#include #include +#include +#include #include #include +#include #include #include +#include +#include #include +#include #include #include #include #include +#include + +class TabSupervisor; static constexpr int DEFAULT_AUTO_REFRESH_INTERVAL_SECS = 30; diff --git a/cockatrice/src/interface/widgets/tabs/tab_developer.h b/cockatrice/src/interface/widgets/tabs/tab_developer.h index 727a56bcb..1a4e5904f 100644 --- a/cockatrice/src/interface/widgets/tabs/tab_developer.h +++ b/cockatrice/src/interface/widgets/tabs/tab_developer.h @@ -9,6 +9,10 @@ #include "tab.h" +#include +#include +#include + class AbstractClient; class QCheckBox; class QLabel; @@ -17,6 +21,7 @@ class QSpinBox; class QTableWidget; class QTimer; class Response; +class TabSupervisor; class TabDeveloper : public Tab { diff --git a/cockatrice/src/interface/widgets/tabs/tab_game.cpp b/cockatrice/src/interface/widgets/tabs/tab_game.cpp index 23976340b..9a6862b2c 100644 --- a/cockatrice/src/interface/widgets/tabs/tab_game.cpp +++ b/cockatrice/src/interface/widgets/tabs/tab_game.cpp @@ -2,11 +2,16 @@ #include "../../../client/settings/cache_settings.h" #include "../../../client/settings/shortcuts_settings.h" +#include "../../../game/abstract_game.h" +#include "../../../game/game_event_handler.h" +#include "../../../game/game_meta_info.h" +#include "../../../game/game_state.h" +#include "../../../game/player/player_info.h" +#include "../../../game/player/player_manager.h" +#include "../../../game_graphics/board/abstract_card_item.h" #include "../game/game.h" #include "../game/player/player_logic.h" #include "../game/replay.h" -#include "../game_graphics/board/arrow_item.h" -#include "../game_graphics/board/card_item.h" #include "../game_graphics/deckview/deck_view_container.h" #include "../game_graphics/deckview/tabbed_deck_view_container.h" #include "../game_graphics/game_scene.h" @@ -25,37 +30,48 @@ #include "../interface/widgets/server/user/user_list_manager.h" #include "../interface/widgets/utility/completer_utils.h" #include "../interface/widgets/utility/line_edit_completer.h" -#include "../interface/window_main.h" #include "../main.h" +#include "../menus/tearoff_menu.h" +#include "../replay/replay_widget.h" #include "../utility/visibility_change_listener.h" #include "card/card_completer_proxy_model.h" #include "card/card_search_model.h" #include "card_database_display_model.h" #include "card_database_model.h" +#include "libcockatrice/card/database/card_database_querier.h" +#include "libcockatrice/card/printing/exact_card.h" +#include "libcockatrice/deck_list/deck_list.h" +#include "libcockatrice/protocol/pb/serverinfo_game.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_playerproperties.pb.h" +#include "libcockatrice/utility/card_ref.h" #include "tab_supervisor.h" #include #include #include +#include #include #include #include +#include #include #include +#include #include #include +#include #include #include +#include #include #include +#include #include #include #include -#include +#include #include #include -#include -#include #include #include #include @@ -63,6 +79,18 @@ #include #include #include +#include +#include +#include + +class Event_GameJoined; +namespace google +{ +namespace protobuf +{ +class Message; +} // namespace protobuf +} // namespace google TabGame::TabGame(TabSupervisor *_tabSupervisor, GameReplay *_replay) : Tab(_tabSupervisor), sayLabel(nullptr), sayEdit(nullptr) diff --git a/cockatrice/src/interface/widgets/tabs/tab_game.h b/cockatrice/src/interface/widgets/tabs/tab_game.h index 29a2f40a3..7bc52202f 100644 --- a/cockatrice/src/interface/widgets/tabs/tab_game.h +++ b/cockatrice/src/interface/widgets/tabs/tab_game.h @@ -9,47 +9,55 @@ #ifndef TAB_GAME_H #define TAB_GAME_H -#include "../game/abstract_game.h" -#include "../game/player/player_logic.h" -#include "../game_graphics/log/message_log_widget.h" -#include "../interface/widgets/menus/tearoff_menu.h" -#include "../interface/widgets/replay/replay_widget.h" #include "tab.h" -#include +#include #include #include -#include +#include +#include +#include +#include +#include +#include +// IWYU pragma: keep +// ServerInfo_User appears by value and inside QList in slot signatures, so the +// moc-generated code needs the complete type. +#include class CardMenu; -class ServerInfo_PlayerProperties; class TabbedDeckViewContainer; +class AbstractGame; +class Event_GameJoined; +class GameEventContext; +class MessageLogWidget; +class PlayerLogic; +class QAction; +class QCompleter; +class QStringListModel; +class QWidget; +class ServerInfo_Player; +class ServerInfo_User; +class TabSupervisor; +class TearOffMenu; +struct CardRef; +struct LoadedDeck; + inline Q_LOGGING_CATEGORY(TabGameLog, "tab_game"); class UserListProxy; -class DeckViewContainer; class AbstractClient; -class CardDatabase; class GameView; class GameScene; class ReplayWidget; class CardInfoFrameWidget; -class QTimer; -class QSplitter; class QLabel; class QPushButton; -class QToolButton; class QMenu; -class ZoneViewLayout; -class ZoneViewWidget; class PhasesToolbar; class PlayerListWidget; -class ReplayTimelineWidget; -class CardZone; class AbstractCardItem; -class CardItem; class QVBoxLayout; -class QHBoxLayout; class GameReplay; class LineEditCompleter; class QDockWidget; diff --git a/cockatrice/src/interface/widgets/tabs/tab_home.cpp b/cockatrice/src/interface/widgets/tabs/tab_home.cpp index 7a79b1785..1358645d0 100644 --- a/cockatrice/src/interface/widgets/tabs/tab_home.cpp +++ b/cockatrice/src/interface/widgets/tabs/tab_home.cpp @@ -1,5 +1,9 @@ #include "tab_home.h" +#include "../general/home_widget.h" + +class TabSupervisor; + TabHome::TabHome(TabSupervisor *_tabSupervisor, AbstractClient *_client) : Tab(_tabSupervisor), client(_client) { homeWidget = new HomeWidget(this, tabSupervisor); diff --git a/cockatrice/src/interface/widgets/tabs/tab_home.h b/cockatrice/src/interface/widgets/tabs/tab_home.h index 3aae19c2b..bc86348cb 100644 --- a/cockatrice/src/interface/widgets/tabs/tab_home.h +++ b/cockatrice/src/interface/widgets/tabs/tab_home.h @@ -7,12 +7,14 @@ #ifndef TAB_HOME_H #define TAB_HOME_H -#include "../interface/widgets/general/home_widget.h" #include "tab.h" -#include +#include +#include class AbstractClient; +class HomeWidget; +class TabSupervisor; class TabHome : public Tab { diff --git a/cockatrice/src/interface/widgets/tabs/tab_logs.cpp b/cockatrice/src/interface/widgets/tabs/tab_logs.cpp index f73d06b57..9f17afea2 100644 --- a/cockatrice/src/interface/widgets/tabs/tab_logs.cpp +++ b/cockatrice/src/interface/widgets/tabs/tab_logs.cpp @@ -1,23 +1,35 @@ #include "tab_logs.h" #include "../interface/widgets/utility/custom_line_edit.h" +#include "libcockatrice/protocol/pb/response.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_chat_message.pb.h" #include #include #include #include #include +#include #include #include #include +#include +#include #include #include #include +#include +#include +#include #include #include #include #include #include +#include +#include + +class TabSupervisor; TabLog::TabLog(TabSupervisor *_tabSupervisor, AbstractClient *_client, bool _canUseDeveloperCommands) : Tab(_tabSupervisor), client(_client), canUseDeveloperCommands(_canUseDeveloperCommands) diff --git a/cockatrice/src/interface/widgets/tabs/tab_logs.h b/cockatrice/src/interface/widgets/tabs/tab_logs.h index 8e914ea64..fc8ef1ea0 100644 --- a/cockatrice/src/interface/widgets/tabs/tab_logs.h +++ b/cockatrice/src/interface/widgets/tabs/tab_logs.h @@ -9,7 +9,8 @@ #include "tab.h" -#include +#include +#include class AbstractClient; class LineEditUnfocusable; @@ -24,9 +25,8 @@ class QWidget; class QGridLayout; class QVBoxLayout; class QTableWidget; -class CommandContainer; class Response; -class AbstractClient; +class TabSupervisor; class TabLog : public Tab { diff --git a/cockatrice/src/interface/widgets/tabs/tab_message.cpp b/cockatrice/src/interface/widgets/tabs/tab_message.cpp index 418843178..65186e396 100644 --- a/cockatrice/src/interface/widgets/tabs/tab_message.cpp +++ b/cockatrice/src/interface/widgets/tabs/tab_message.cpp @@ -6,12 +6,18 @@ #include "../interface/widgets/server/user/user_list_manager.h" #include "../interface/widgets/utility/custom_line_edit.h" #include "../main.h" +#include "libcockatrice/protocol/pb/response.pb.h" +#include "tab_supervisor.h" +#include #include -#include +#include #include +#include +#include #include #include +#include #include #include #include @@ -19,6 +25,7 @@ #include #include #include +#include TabMessage::TabMessage(TabSupervisor *_tabSupervisor, AbstractClient *_client, diff --git a/cockatrice/src/interface/widgets/tabs/tab_message.h b/cockatrice/src/interface/widgets/tabs/tab_message.h index 0e6d66d4c..bea58ecb3 100644 --- a/cockatrice/src/interface/widgets/tabs/tab_message.h +++ b/cockatrice/src/interface/widgets/tabs/tab_message.h @@ -10,6 +10,13 @@ #include "tab.h" #include +#include +#include +#include + +class QAction; +class QMenu; +class TabSupervisor; inline Q_LOGGING_CATEGORY(TabMessageLog, "tab_message"); diff --git a/cockatrice/src/interface/widgets/tabs/tab_moderation.cpp b/cockatrice/src/interface/widgets/tabs/tab_moderation.cpp index b9c37f1af..09a640540 100644 --- a/cockatrice/src/interface/widgets/tabs/tab_moderation.cpp +++ b/cockatrice/src/interface/widgets/tabs/tab_moderation.cpp @@ -1,8 +1,13 @@ #include "tab_moderation.h" #include "abstract_client.h" -#include "tab_supervisor.h" +#include "libcockatrice/protocol/pb/admin_commands.pb.h" +#include "libcockatrice/protocol/pb/response.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_moderator_login.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_user_alt.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_user_session.pb.h" +#include #include #include #include @@ -10,12 +15,17 @@ #include #include #include +#include #include #include +#include #include +#include #include +#include #include #include +#include #include #include #include @@ -26,6 +36,10 @@ #include #include #include +#include +#include + +class TabSupervisor; namespace { diff --git a/cockatrice/src/interface/widgets/tabs/tab_moderation.h b/cockatrice/src/interface/widgets/tabs/tab_moderation.h index 0a534992b..e352e90bb 100644 --- a/cockatrice/src/interface/widgets/tabs/tab_moderation.h +++ b/cockatrice/src/interface/widgets/tabs/tab_moderation.h @@ -3,7 +3,9 @@ #include "tab.h" -#include +#include +#include +#include class AbstractClient; class QGroupBox; @@ -12,6 +14,8 @@ class QLineEdit; class QPushButton; class QTableWidget; class QTextEdit; +class Response; +class TabSupervisor; /** * Staff investigation tool. Lets moderators look up a user's account data, diff --git a/cockatrice/src/interface/widgets/tabs/tab_public_decks.cpp b/cockatrice/src/interface/widgets/tabs/tab_public_decks.cpp index d13f9d1e3..6bf3f6be7 100644 --- a/cockatrice/src/interface/widgets/tabs/tab_public_decks.cpp +++ b/cockatrice/src/interface/widgets/tabs/tab_public_decks.cpp @@ -2,6 +2,7 @@ #include "../../../client/settings/cache_settings.h" #include "../../deck_loader/deck_loader.h" +#include "../../deck_loader/loaded_deck.h" #include "../cards/card_size_widget.h" #include "../general/layout_containers/flow_widget.h" #include "../visual_deck_storage/deck_preview/deck_preview_color_identity_filter_widget.h" @@ -12,14 +13,21 @@ #include "../visual_deck_storage/visual_deck_storage_tag_filter_widget.h" #include "tab_supervisor.h" -#include +#include +#include +#include +#include #include #include +#include #include #include +#include #include #include #include +#include +#include #include #include #include @@ -27,6 +35,7 @@ #include #include #include +#include TabPublicDecks::TabPublicDecks(TabSupervisor *_tabSupervisor, AbstractClient *_client, const QString &_userName) : Tab(_tabSupervisor), client(_client), userName(_userName) diff --git a/cockatrice/src/interface/widgets/tabs/tab_public_decks.h b/cockatrice/src/interface/widgets/tabs/tab_public_decks.h index 492fdeafa..847479e78 100644 --- a/cockatrice/src/interface/widgets/tabs/tab_public_decks.h +++ b/cockatrice/src/interface/widgets/tabs/tab_public_decks.h @@ -8,11 +8,13 @@ #include "tab.h" +#include +#include + class AbstractClient; class CommandContainer; class DeckPreviewColorIdentityFilterWidget; class FlowWidget; -class PublicDeckPreviewWidget; class QLabel; class QToolButton; class RemotePublicDecksModel; @@ -20,6 +22,7 @@ class Response; class VisualDeckStorageQuickSettingsWidget; class VisualDeckStorageSearchWidget; class VisualDeckStorageTagFilterWidget; +class TabSupervisor; /** * @brief A visual grid of the public decks published by another user. diff --git a/cockatrice/src/interface/widgets/tabs/tab_replays.cpp b/cockatrice/src/interface/widgets/tabs/tab_replays.cpp index e26bea2a3..52bc4cd8f 100644 --- a/cockatrice/src/interface/widgets/tabs/tab_replays.cpp +++ b/cockatrice/src/interface/widgets/tabs/tab_replays.cpp @@ -3,22 +3,51 @@ #include "../../../client/settings/cache_settings.h" #include "../../pixel_map_generator.h" #include "../interface/widgets/server/remote/remote_replay_list_tree_widget.h" -#include "tab_game.h" +#include "libcockatrice/protocol/pb/commands.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_replay.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_replay_match.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_user.pb.h" +#include "libcockatrice/protocol/pb/session_commands.pb.h" +#include +#include #include #include +#include #include +#include #include #include +#include +#include #include +#include #include #include #include +#include #include +#include +#include +#include +#include #include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include +#include +#include #include #include #include @@ -32,6 +61,11 @@ #include #include #include +#include +#include +#include + +class TabSupervisor; inline Q_LOGGING_CATEGORY(TabReplaysLog, "replays_tab"); diff --git a/cockatrice/src/interface/widgets/tabs/tab_replays.h b/cockatrice/src/interface/widgets/tabs/tab_replays.h index aa4ec039c..e29e29bd7 100644 --- a/cockatrice/src/interface/widgets/tabs/tab_replays.h +++ b/cockatrice/src/interface/widgets/tabs/tab_replays.h @@ -10,19 +10,26 @@ #include "tab.h" +#include +#include #include +// IWYU pragma: keep +// GameReplay is a protobuf message passed through the openReplay signal, +// so the moc-generated code needs the complete type. +#include +#include class ServerInfo_User; class Response; -class AbstractClient; class QTreeView; class QFileSystemModel; -class QToolBar; class QGroupBox; class RemoteReplayList_TreeWidget; -class GameReplay; class Event_ReplayAdded; class CommandContainer; +class QAction; +class QModelIndex; +class TabSupervisor; class TabReplays : public Tab { diff --git a/cockatrice/src/interface/widgets/tabs/tab_report.cpp b/cockatrice/src/interface/widgets/tabs/tab_report.cpp index 0b9108f9b..5f158e9b1 100644 --- a/cockatrice/src/interface/widgets/tabs/tab_report.cpp +++ b/cockatrice/src/interface/widgets/tabs/tab_report.cpp @@ -2,11 +2,16 @@ #include "../utility/report_utils.h" #include "abstract_client.h" +#include "libcockatrice/protocol/pb/response.pb.h" #include "tab_supervisor.h" +#include +#include #include #include #include +#include +#include #include #include #include @@ -15,16 +20,19 @@ #include #include #include -#include #include +#include #include #include #include +#include #include #include #include #include +#include #include +#include #include #include #include @@ -41,6 +49,8 @@ #include #include #include +#include +#include namespace { diff --git a/cockatrice/src/interface/widgets/tabs/tab_report.h b/cockatrice/src/interface/widgets/tabs/tab_report.h index b62a99ce2..645f949de 100644 --- a/cockatrice/src/interface/widgets/tabs/tab_report.h +++ b/cockatrice/src/interface/widgets/tabs/tab_report.h @@ -4,8 +4,9 @@ #include "tab.h" #include -#include +#include #include +#include class AbstractClient; class QCheckBox; @@ -19,6 +20,8 @@ class QTableWidget; class QTextEdit; class QTimer; class GameReplay; +class Response; +class TabSupervisor; class TabReport : public Tab { diff --git a/cockatrice/src/interface/widgets/tabs/tab_room.cpp b/cockatrice/src/interface/widgets/tabs/tab_room.cpp index 866324367..67106ba34 100644 --- a/cockatrice/src/interface/widgets/tabs/tab_room.cpp +++ b/cockatrice/src/interface/widgets/tabs/tab_room.cpp @@ -11,27 +11,39 @@ #include "../interface/widgets/server/user/user_list_panel_widget.h" #include "../interface/widgets/server/user/user_list_widget.h" #include "../main.h" +#include "../server/game_type_map.h" +#include "../server/user/user_list_proxy.h" #include "../utility/completer_utils.h" +#include "../utility/line_edit_completer.h" #include "card/card_completer_proxy_model.h" #include "card/card_search_model.h" #include "card_database_display_model.h" #include "card_database_model.h" -#include "tab_account.h" +#include "libcockatrice/protocol/pb/response.pb.h" +#include "libcockatrice/protocol/pb/room_event.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_gametype.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_user.pb.h" #include "tab_supervisor.h" +#include "user_level.h" +#include #include +#include #include +#include +#include +#include +#include #include #include -#include -#include #include #include #include +#include #include #include #include -#include +#include #include #include #include @@ -46,6 +58,8 @@ #include #include #include +#include +#include TabRoom::TabRoom(TabSupervisor *_tabSupervisor, AbstractClient *_client, diff --git a/cockatrice/src/interface/widgets/tabs/tab_room.h b/cockatrice/src/interface/widgets/tabs/tab_room.h index 7d01d5cf6..031056145 100644 --- a/cockatrice/src/interface/widgets/tabs/tab_room.h +++ b/cockatrice/src/interface/widgets/tabs/tab_room.h @@ -8,16 +8,21 @@ #ifndef TAB_ROOM_H #define TAB_ROOM_H -#include "../interface/widgets/utility/line_edit_completer.h" #include "tab.h" -#include -#include +#include #include -#include +#include +#include +#include class UserListProxy; -class UserListManager; +class QAction; +class QGroupBox; +class QMenu; +class QStringListModel; +class TabSupervisor; + namespace google { namespace protobuf @@ -30,12 +35,9 @@ class UserListWidget; class UserListPanelWidget; class QLabel; class ChatView; -class QPushButton; -class QTextTable; class QCompleter; class RoomEvent; class ServerInfo_Room; -class ServerInfo_Game; class Event_ListGames; class Event_JoinRoom; class Event_LeaveRoom; diff --git a/cockatrice/src/interface/widgets/tabs/tab_server.cpp b/cockatrice/src/interface/widgets/tabs/tab_server.cpp index fca32094c..0f3e76c76 100644 --- a/cockatrice/src/interface/widgets/tabs/tab_server.cpp +++ b/cockatrice/src/interface/widgets/tabs/tab_server.cpp @@ -1,14 +1,20 @@ #include "tab_server.h" -#include "../interface/widgets/server/user/user_list_widget.h" +#include "libcockatrice/protocol/pb/response.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_room.pb.h" #include "tab_supervisor.h" #include #include -#include +#include #include #include -#include +#include +#include +#include +#include +#include +#include #include #include #include @@ -16,6 +22,9 @@ #include #include #include +#include + +class TabRoom; RoomSelector::RoomSelector(AbstractClient *_client, QWidget *parent) : QGroupBox(parent), client(_client) { diff --git a/cockatrice/src/interface/widgets/tabs/tab_server.h b/cockatrice/src/interface/widgets/tabs/tab_server.h index 121ff814d..eb2f572fe 100644 --- a/cockatrice/src/interface/widgets/tabs/tab_server.h +++ b/cockatrice/src/interface/widgets/tabs/tab_server.h @@ -12,20 +12,21 @@ #include #include #include -#include -#include +#include +#include +#include class AbstractClient; -class QTextEdit; -class QLabel; -class UserListWidget; class QPushButton; - class Event_ListRooms; class Event_ServerMessage; class Response; class ServerInfo_Room; class CommandContainer; +class QTextBrowser; +class QTreeWidget; +class QWidget; +class TabSupervisor; class RoomSelector : public QGroupBox { diff --git a/cockatrice/src/interface/widgets/tabs/tab_supervisor.cpp b/cockatrice/src/interface/widgets/tabs/tab_supervisor.cpp index 0dc246eaa..70014ec47 100644 --- a/cockatrice/src/interface/widgets/tabs/tab_supervisor.cpp +++ b/cockatrice/src/interface/widgets/tabs/tab_supervisor.cpp @@ -2,14 +2,27 @@ #include "../../../client/settings/cache_settings.h" #include "../../../client/settings/shortcuts_settings.h" +#include "../../../game/abstract_game.h" +#include "../../../game/game_event_handler.h" +#include "../../../game/game_meta_info.h" +#include "../../deck_loader/loaded_deck.h" +#include "../../intents/contexts/context_connect_to_server.h" +#include "../../intents/contexts/context_join_game.h" +#include "../../intents/contexts/context_join_room.h" +#include "../../intents/intent.h" #include "../../intents/intent_join_server_game.h" #include "../interface/pixel_map_generator.h" #include "../interface/widgets/server/game_link.h" #include "../interface/widgets/server/user/user_list_manager.h" -#include "../interface/widgets/server/user/user_list_widget.h" #include "../main.h" +#include "abstract_tab_deck_editor.h" #include "api/archidekt/tab_archidekt.h" +#include "api/edhrec/tab_edhrec.h" #include "api/edhrec/tab_edhrec_main.h" +#include "latency_tracker.h" +#include "libcockatrice/protocol/pb/serverinfo_game.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_gametype.pb.h" +#include "tab.h" #include "tab_account.h" #include "tab_admin.h" #include "tab_card_art_rules.h" @@ -27,14 +40,31 @@ #include "tab_room.h" #include "tab_server.h" #include "tab_visual_database_display.h" +#include "user_level.h" #include "visual_deck_editor/tab_deck_editor_visual.h" -#include "visual_deck_editor/tab_deck_editor_visual_tab_widget.h" #include "visual_deck_storage/tab_deck_storage_visual.h" +#include #include +#include +#include +#include +#include +#include +#include +#include +#include #include +#include +#include #include +#include +#include +#include +#include +#include #include +#include #include #include #include @@ -45,11 +75,16 @@ #include #include #include -#include #include #include #include #include +#include +#include +#include +#include + +class QWidget; QRect MacOSTabFixStyle::subElementRect(SubElement element, const QStyleOption *option, const QWidget *widget) const { diff --git a/cockatrice/src/interface/widgets/tabs/tab_supervisor.h b/cockatrice/src/interface/widgets/tabs/tab_supervisor.h index 1a4f7f749..9c7dc48d1 100644 --- a/cockatrice/src/interface/widgets/tabs/tab_supervisor.h +++ b/cockatrice/src/interface/widgets/tabs/tab_supervisor.h @@ -8,29 +8,36 @@ #ifndef TAB_SUPERVISOR_H #define TAB_SUPERVISOR_H -#include "../../deck_loader/deck_loader.h" #include "../interface/widgets/server/game_link.h" -#include "../interface/widgets/server/user/user_list_proxy.h" -#include "abstract_tab_deck_editor.h" -#include "api/archidekt/tab_archidekt.h" -#include "api/edhrec/tab_edhrec.h" -#include "api/edhrec/tab_edhrec_main.h" -#include "tab_visual_database_display.h" -#include "visual_deck_editor/tab_deck_editor_visual.h" -#include "visual_deck_storage/tab_deck_storage_visual.h" +#include "libcockatrice/card/card_info.h" #include +#include #include #include +#include #include +#include +#include #include #include +#include class TabCardArtRules; +class AbstractTabDeckEditor; +class QAction; +class QWidget; +class TabArchidekt; +class TabDeckEditorVisual; +class TabDeckStorageVisual; +class TabEdhRec; +class TabEdhRecMain; +class TabVisualDatabaseDisplay; +struct LoadedDeck; + inline Q_LOGGING_CATEGORY(TabSupervisorLog, "tab_supervisor"); class UserListManager; -class QMenu; class AbstractClient; class Tab; class TabServer; @@ -56,7 +63,6 @@ class Event_NotifyUser; class ServerInfo_Room; class ServerInfo_User; class GameReplay; -class DeckList; class MacOSTabFixStyle : public QProxyStyle { diff --git a/cockatrice/src/interface/widgets/tabs/tab_visual_database_display.cpp b/cockatrice/src/interface/widgets/tabs/tab_visual_database_display.cpp index 3112e7ada..f4b007072 100644 --- a/cockatrice/src/interface/widgets/tabs/tab_visual_database_display.cpp +++ b/cockatrice/src/interface/widgets/tabs/tab_visual_database_display.cpp @@ -1,6 +1,7 @@ #include "tab_visual_database_display.h" -#include "tab_deck_editor.h" +#include "../visual_database_display/visual_database_display_widget.h" +#include "card_database_model.h" #include "tab_supervisor.h" #include diff --git a/cockatrice/src/interface/widgets/tabs/tab_visual_database_display.h b/cockatrice/src/interface/widgets/tabs/tab_visual_database_display.h index 3a4bcd6ea..31633f10c 100644 --- a/cockatrice/src/interface/widgets/tabs/tab_visual_database_display.h +++ b/cockatrice/src/interface/widgets/tabs/tab_visual_database_display.h @@ -8,8 +8,14 @@ #define TAB_VISUAL_DATABASE_DISPLAY_H #include "../interface/widgets/visual_database_display/visual_database_display_widget.h" +#include "libcockatrice/card/card_info.h" #include "tab.h" +#include +#include + +class TabSupervisor; + class TabVisualDatabaseDisplay : public Tab { Q_OBJECT diff --git a/cockatrice/src/interface/widgets/tabs/visual_deck_editor/tab_deck_editor_visual.cpp b/cockatrice/src/interface/widgets/tabs/visual_deck_editor/tab_deck_editor_visual.cpp index 0f43893d3..be7255dc3 100644 --- a/cockatrice/src/interface/widgets/tabs/visual_deck_editor/tab_deck_editor_visual.cpp +++ b/cockatrice/src/interface/widgets/tabs/visual_deck_editor/tab_deck_editor_visual.cpp @@ -2,37 +2,53 @@ #include "../../../../client/settings/cache_settings.h" #include "../../../../client/settings/shortcuts_settings.h" -#include "../../cards/card_info_display_widget.h" +#include "../../../deck_loader/loaded_deck.h" +#include "../../deck_editor/deck_editor_card_database_dock_widget.h" +#include "../../deck_editor/deck_editor_card_info_dock_widget.h" +#include "../../deck_editor/deck_editor_deck_dock_widget.h" +#include "../../deck_editor/deck_editor_filter_dock_widget.h" +#include "../../deck_editor/deck_editor_printing_selector_dock_widget.h" #include "../../deck_editor/deck_state_manager.h" #include "../../deck_editor/deck_zone_dialog.h" -#include "../../filters/filter_builder.h" -#include "../../interface/pixel_map_generator.h" -#include "../../interface/widgets/cards/card_info_frame_widget.h" #include "../../interface/widgets/deck_analytics/deck_analytics_widget.h" #include "../../interface/widgets/visual_deck_editor/visual_deck_editor_widget.h" -#include "../tab_deck_editor.h" +#include "../../menus/deck_editor_menu.h" +#include "../../visual_database_display/visual_database_display_widget.h" +#include "../../visual_deck_editor/visual_deck_editor_sample_hand_widget.h" #include "../tab_supervisor.h" +#include "libcockatrice/card/printing/exact_card.h" +#include "libcockatrice/deck_list/tree/inner_deck_list_node.h" #include "tab_deck_editor_visual_tab_widget.h" #include -#include -#include -#include +#include +#include +#include #include -#include +#include +#include +#include +#include #include +#include +#include +#include +#include #include -#include -#include -#include +#include +#include +#include +#include #include #include #include +#include +#include #include -#include -#include #include #include +#include +#include /** * @brief Constructs the TabDeckEditorVisual instance. diff --git a/cockatrice/src/interface/widgets/tabs/visual_deck_editor/tab_deck_editor_visual.h b/cockatrice/src/interface/widgets/tabs/visual_deck_editor/tab_deck_editor_visual.h index fb09578c4..f5eb9981a 100644 --- a/cockatrice/src/interface/widgets/tabs/visual_deck_editor/tab_deck_editor_visual.h +++ b/cockatrice/src/interface/widgets/tabs/visual_deck_editor/tab_deck_editor_visual.h @@ -1,8 +1,19 @@ #ifndef WINDOW_DECKEDITORVISUAL_H #define WINDOW_DECKEDITORVISUAL_H -#include "../tab.h" -#include "tab_deck_editor_visual_tab_widget.h" +#include "../abstract_tab_deck_editor.h" + +#include +#include +#include + +class ExactCard; +class QDockWidget; +class QHBoxLayout; +class QVBoxLayout; +class QWidget; +class TabDeckEditorVisualTabWidget; +class TabSupervisor; /** * @class TabDeckEditorVisual diff --git a/cockatrice/src/interface/widgets/tabs/visual_deck_editor/tab_deck_editor_visual_tab_widget.cpp b/cockatrice/src/interface/widgets/tabs/visual_deck_editor/tab_deck_editor_visual_tab_widget.cpp index 5ccfcc28f..8e01ff983 100644 --- a/cockatrice/src/interface/widgets/tabs/visual_deck_editor/tab_deck_editor_visual_tab_widget.cpp +++ b/cockatrice/src/interface/widgets/tabs/visual_deck_editor/tab_deck_editor_visual_tab_widget.cpp @@ -1,7 +1,24 @@ #include "tab_deck_editor_visual_tab_widget.h" +#include "../../deck_analytics/deck_analytics_widget.h" +#include "../../deck_analytics/deck_list_statistics_analyzer.h" +#include "../../deck_editor/deck_editor_deck_dock_widget.h" #include "../../interface/widgets/visual_database_display/visual_database_display_widget.h" +#include "../../visual_deck_editor/visual_deck_editor_sample_hand_widget.h" +#include "../../visual_deck_editor/visual_deck_editor_widget.h" #include "../abstract_tab_deck_editor.h" +#include "libcockatrice/card/printing/exact_card.h" +#include "libcockatrice/deck_list/tree/inner_deck_list_node.h" + +#include +#include +#include +#include +#include + +class CardDatabaseModel; +class DeckListModel; +class QMouseEvent; /** * @brief Constructs the TabDeckEditorVisualTabWidget. diff --git a/cockatrice/src/interface/widgets/tabs/visual_deck_editor/tab_deck_editor_visual_tab_widget.h b/cockatrice/src/interface/widgets/tabs/visual_deck_editor/tab_deck_editor_visual_tab_widget.h index 4f04b51f6..fff978f42 100644 --- a/cockatrice/src/interface/widgets/tabs/visual_deck_editor/tab_deck_editor_visual_tab_widget.h +++ b/cockatrice/src/interface/widgets/tabs/visual_deck_editor/tab_deck_editor_visual_tab_widget.h @@ -1,16 +1,25 @@ #ifndef TAB_DECK_EDITOR_VISUAL_TAB_WIDGET_H #define TAB_DECK_EDITOR_VISUAL_TAB_WIDGET_H -#include "../../interface/widgets/deck_analytics/deck_analytics_widget.h" -#include "../../interface/widgets/printing_selector/printing_selector.h" -#include "../../interface/widgets/visual_database_display/visual_database_display_widget.h" -#include "../../interface/widgets/visual_deck_editor/visual_deck_editor_sample_hand_widget.h" -#include "../../interface/widgets/visual_deck_editor/visual_deck_editor_widget.h" -#include "../abstract_tab_deck_editor.h" +#include "libcockatrice/card/card_info.h" +#include +#include #include -#include -#include +#include + +class AbstractTabDeckEditor; +class CardDatabaseModel; +class DeckAnalyticsWidget; +class DeckListModel; +class DeckListStatisticsAnalyzer; +class ExactCard; +class PrintingSelector; +class QVBoxLayout; +class QWidget; +class VisualDatabaseDisplayWidget; +class VisualDeckEditorSampleHandWidget; +class VisualDeckEditorWidget; /** * @class TabDeckEditorVisualTabWidget diff --git a/cockatrice/src/interface/widgets/tabs/visual_deck_storage/tab_deck_storage_visual.cpp b/cockatrice/src/interface/widgets/tabs/visual_deck_storage/tab_deck_storage_visual.cpp index 03df76b03..cb6dfab9c 100644 --- a/cockatrice/src/interface/widgets/tabs/visual_deck_storage/tab_deck_storage_visual.cpp +++ b/cockatrice/src/interface/widgets/tabs/visual_deck_storage/tab_deck_storage_visual.cpp @@ -1,23 +1,30 @@ #include "tab_deck_storage_visual.h" #include "../../../../client/settings/cache_settings.h" +#include "../../../deck_loader/deck_file_format.h" #include "../../../deck_loader/deck_loader.h" +#include "../../../deck_loader/loaded_deck.h" #include "../../cards/additional_info/deck_color_identity.h" #include "../../deck_share/deck_share_utils.h" +#include "../../deck_share/share_bar_widget.h" #include "../../interface/widgets/visual_deck_storage/visual_deck_storage_widget.h" +#include "../tab.h" #include "../tab_supervisor.h" #include #include #include +#include +#include #include #include #include #include #include -#include #include #include +#include +#include TabDeckStorageVisual::TabDeckStorageVisual(TabSupervisor *_tabSupervisor, AbstractClient *_client) : Tab(_tabSupervisor), visualDeckStorageWidget(new VisualDeckStorageWidget(this)), client(_client), diff --git a/cockatrice/src/interface/widgets/tabs/visual_deck_storage/tab_deck_storage_visual.h b/cockatrice/src/interface/widgets/tabs/visual_deck_storage/tab_deck_storage_visual.h index 7cd4e7d17..13a078fce 100644 --- a/cockatrice/src/interface/widgets/tabs/visual_deck_storage/tab_deck_storage_visual.h +++ b/cockatrice/src/interface/widgets/tabs/visual_deck_storage/tab_deck_storage_visual.h @@ -10,22 +10,18 @@ #include "../../deck_share/share_bar_widget.h" #include "../tab.h" +#include +#include #include #include +#include struct LoadedDeck; -class AbstractClient; class CommandContainer; -class DeckPreviewWidget; -class QFileSystemModel; -class QGroupBox; class QTimer; -class QToolBar; -class QTreeView; -class QTreeWidget; -class QTreeWidgetItem; class Response; class VisualDeckStorageWidget; +class TabSupervisor; class TabDeckStorageVisual final : public Tab { diff --git a/cockatrice/src/interface/widgets/utility/card_completer_delegate.cpp b/cockatrice/src/interface/widgets/utility/card_completer_delegate.cpp index 29bf2263e..8042fb9fc 100644 --- a/cockatrice/src/interface/widgets/utility/card_completer_delegate.cpp +++ b/cockatrice/src/interface/widgets/utility/card_completer_delegate.cpp @@ -2,18 +2,42 @@ #include "../../pixel_map_generator.h" #include "../cards/additional_info/mana_cost_widget.h" +#include "libcockatrice/card/database/card_database_querier.h" +#include "libcockatrice/card/set/card_set.h" +#include +#include +#include +#include #include #include +#include +#include #include #include +#include +#include +#include +#include +#include +#include #include #include +#include +#include +#include +#include #include +#include +#include #include #include #include #include +#include + +class QObject; +template class QSharedPointer; // --------------------------------------------------------------------------- // Internal colour helpers diff --git a/cockatrice/src/interface/widgets/utility/card_completer_delegate.h b/cockatrice/src/interface/widgets/utility/card_completer_delegate.h index 78667f56b..ad81d86e4 100644 --- a/cockatrice/src/interface/widgets/utility/card_completer_delegate.h +++ b/cockatrice/src/interface/widgets/utility/card_completer_delegate.h @@ -9,10 +9,16 @@ #include #include -#include +#include #include +#include class CardInfo; +class QObject; +class QPainter; +class QPoint; +class QRect; +template class QSharedPointer; /** * @brief Paints styled card completer popup rows. diff --git a/cockatrice/src/interface/widgets/utility/card_completer_styler.cpp b/cockatrice/src/interface/widgets/utility/card_completer_styler.cpp index 6794ccbb4..0f1585f3c 100644 --- a/cockatrice/src/interface/widgets/utility/card_completer_styler.cpp +++ b/cockatrice/src/interface/widgets/utility/card_completer_styler.cpp @@ -2,20 +2,37 @@ #include "../cards/card_info_picture_enlarged_widget.h" #include "card_completer_delegate.h" +#include "libcockatrice/card/database/card_database_querier.h" +#include "libcockatrice/card/printing/exact_card.h" #include "reversed_completer_model.h" +#include #include #include +#include #include #include +#include #include +#include #include +#include #include +#include #include +#include #include +#include +#include +#include +#include #include #include #include +#include +#include + +template class QSharedPointer; namespace { diff --git a/cockatrice/src/interface/widgets/utility/card_completer_styler.h b/cockatrice/src/interface/widgets/utility/card_completer_styler.h index 616e3fe61..9245c9095 100644 --- a/cockatrice/src/interface/widgets/utility/card_completer_styler.h +++ b/cockatrice/src/interface/widgets/utility/card_completer_styler.h @@ -9,6 +9,7 @@ #include #include +#include class CardInfoPictureEnlargedWidget; class QCompleter; diff --git a/cockatrice/src/interface/widgets/utility/compact_push_button.cpp b/cockatrice/src/interface/widgets/utility/compact_push_button.cpp index cf98bfede..7df105d15 100644 --- a/cockatrice/src/interface/widgets/utility/compact_push_button.cpp +++ b/cockatrice/src/interface/widgets/utility/compact_push_button.cpp @@ -1,5 +1,9 @@ #include "compact_push_button.h" +#include +#include +#include + CompactPushButton::CompactPushButton(QWidget *parent) : QPushButton(parent) { setCheckable(true); diff --git a/cockatrice/src/interface/widgets/utility/compact_push_button.h b/cockatrice/src/interface/widgets/utility/compact_push_button.h index b0017beee..fa8c8080a 100644 --- a/cockatrice/src/interface/widgets/utility/compact_push_button.h +++ b/cockatrice/src/interface/widgets/utility/compact_push_button.h @@ -1,7 +1,12 @@ #ifndef COCKATRICE_COMPACT_PUSH_BUTTON_H #define COCKATRICE_COMPACT_PUSH_BUTTON_H +#include #include +#include +#include + +class QWidget; class CompactPushButton : public QPushButton { diff --git a/cockatrice/src/interface/widgets/utility/completer_utils.cpp b/cockatrice/src/interface/widgets/utility/completer_utils.cpp index 23ddb30b0..53db58b70 100644 --- a/cockatrice/src/interface/widgets/utility/completer_utils.cpp +++ b/cockatrice/src/interface/widgets/utility/completer_utils.cpp @@ -7,12 +7,13 @@ #include #include #include +#include #include #include #include #include -#include #include +#include namespace { diff --git a/cockatrice/src/interface/widgets/utility/custom_line_edit.cpp b/cockatrice/src/interface/widgets/utility/custom_line_edit.cpp index 05f56c275..d524041c3 100644 --- a/cockatrice/src/interface/widgets/utility/custom_line_edit.cpp +++ b/cockatrice/src/interface/widgets/utility/custom_line_edit.cpp @@ -3,11 +3,17 @@ #include "../../../client/settings/cache_settings.h" #include "../../../client/settings/shortcuts_settings.h" +#include +#include +#include #include +#include #include -#include +#include +#include #include -#include +#include +#include LineEditUnfocusable::LineEditUnfocusable(QWidget *parent) : QLineEdit(parent) { diff --git a/cockatrice/src/interface/widgets/utility/custom_line_edit.h b/cockatrice/src/interface/widgets/utility/custom_line_edit.h index 8c389b797..4d256d3dc 100644 --- a/cockatrice/src/interface/widgets/utility/custom_line_edit.h +++ b/cockatrice/src/interface/widgets/utility/custom_line_edit.h @@ -8,6 +8,7 @@ #define CUSTOMLINEEDIT_H #include +#include class QTreeView; class QKeyEvent; diff --git a/cockatrice/src/interface/widgets/utility/get_text_with_max.cpp b/cockatrice/src/interface/widgets/utility/get_text_with_max.cpp index 134352eb3..1a1bc924d 100644 --- a/cockatrice/src/interface/widgets/utility/get_text_with_max.cpp +++ b/cockatrice/src/interface/widgets/utility/get_text_with_max.cpp @@ -2,6 +2,8 @@ #include +class QWidget; + QString getTextWithMax(QWidget *parent, const QString &title, const QString &label, diff --git a/cockatrice/src/interface/widgets/utility/get_text_with_max.h b/cockatrice/src/interface/widgets/utility/get_text_with_max.h index 424bb0c6a..f1c89c703 100644 --- a/cockatrice/src/interface/widgets/utility/get_text_with_max.h +++ b/cockatrice/src/interface/widgets/utility/get_text_with_max.h @@ -8,8 +8,11 @@ #define GETTEXTWITHMAX_H #include -#include +#include #include +#include + +class QWidget; QString getTextWithMax(QWidget *parent, const QString &title, diff --git a/cockatrice/src/interface/widgets/utility/line_edit_completer.cpp b/cockatrice/src/interface/widgets/utility/line_edit_completer.cpp index 3a678029d..38e3e4350 100644 --- a/cockatrice/src/interface/widgets/utility/line_edit_completer.cpp +++ b/cockatrice/src/interface/widgets/utility/line_edit_completer.cpp @@ -1,8 +1,16 @@ #include "line_edit_completer.h" #include +#include +#include #include #include +#include +#include +#include +#include + +class QWidget; LineEditCompleter::LineEditCompleter(QWidget *parent) : LineEditUnfocusable(parent) { diff --git a/cockatrice/src/interface/widgets/utility/line_edit_completer.h b/cockatrice/src/interface/widgets/utility/line_edit_completer.h index 369b7b553..c141682bf 100644 --- a/cockatrice/src/interface/widgets/utility/line_edit_completer.h +++ b/cockatrice/src/interface/widgets/utility/line_edit_completer.h @@ -10,12 +10,12 @@ #include "custom_line_edit.h" -#include -#include -#include #include #include -#include +#include + +class QCompleter; +class QWidget; enum class CompleterTrigger { diff --git a/cockatrice/src/interface/widgets/utility/report_utils.cpp b/cockatrice/src/interface/widgets/utility/report_utils.cpp index aa4558e5c..a581c9837 100644 --- a/cockatrice/src/interface/widgets/utility/report_utils.cpp +++ b/cockatrice/src/interface/widgets/utility/report_utils.cpp @@ -1,12 +1,20 @@ #include "report_utils.h" +#include "libcockatrice/protocol/pb/serverinfo_report.pb.h" + #include #include +#include +#include #include #include +#include #include +#include #include #include +#include +#include namespace report_utils { diff --git a/cockatrice/src/interface/widgets/utility/report_utils.h b/cockatrice/src/interface/widgets/utility/report_utils.h index c6cc96c18..679989486 100644 --- a/cockatrice/src/interface/widgets/utility/report_utils.h +++ b/cockatrice/src/interface/widgets/utility/report_utils.h @@ -2,10 +2,11 @@ #define REPORT_UTILS_H #include -#include +#include class QTableWidget; class QTextEdit; +class ServerInfo_Report; namespace report_utils { diff --git a/cockatrice/src/interface/widgets/utility/reversed_completer_model.cpp b/cockatrice/src/interface/widgets/utility/reversed_completer_model.cpp index 1bc9ba14b..3702798fd 100644 --- a/cockatrice/src/interface/widgets/utility/reversed_completer_model.cpp +++ b/cockatrice/src/interface/widgets/utility/reversed_completer_model.cpp @@ -1,7 +1,10 @@ #include "reversed_completer_model.h" #include +#include +#include #include +#include #include void ReversedCompleterModel::setSourceModel(QAbstractItemModel *sourceModel) diff --git a/cockatrice/src/interface/widgets/utility/reversed_completer_model.h b/cockatrice/src/interface/widgets/utility/reversed_completer_model.h index 64233a1b0..cf4b44974 100644 --- a/cockatrice/src/interface/widgets/utility/reversed_completer_model.h +++ b/cockatrice/src/interface/widgets/utility/reversed_completer_model.h @@ -8,8 +8,8 @@ #define REVERSED_COMPLETER_MODEL_H #include - -class QAbstractItemModel; +#include +#include /** * @brief A completer model that can present its rows bottom-to-top. diff --git a/cockatrice/src/interface/widgets/utility/sequence_edit.cpp b/cockatrice/src/interface/widgets/utility/sequence_edit.cpp index 06561a41d..e92287c9a 100644 --- a/cockatrice/src/interface/widgets/utility/sequence_edit.cpp +++ b/cockatrice/src/interface/widgets/utility/sequence_edit.cpp @@ -4,8 +4,16 @@ #include "../../../client/settings/shortcuts_settings.h" #include "../../pixel_map_generator.h" +#include +#include +#include #include #include +#include +#include +#include +#include +#include #include SequenceEdit::SequenceEdit(const QString &_shortcutName, QWidget *parent) : QWidget(parent) diff --git a/cockatrice/src/interface/widgets/utility/sequence_edit.h b/cockatrice/src/interface/widgets/utility/sequence_edit.h index 28e18d42f..0cdd48ceb 100644 --- a/cockatrice/src/interface/widgets/utility/sequence_edit.h +++ b/cockatrice/src/interface/widgets/utility/sequence_edit.h @@ -7,10 +7,15 @@ #ifndef SEQUENCEEDIT_H #define SEQUENCEEDIT_H -#include -#include -#include +#include +#include #include +#include +#include + +class QKeyEvent; +class QLineEdit; +class QPushButton; class SequenceEdit : public QWidget { diff --git a/cockatrice/src/interface/widgets/utility/visibility_change_listener.h b/cockatrice/src/interface/widgets/utility/visibility_change_listener.h index 10928caf6..f154918d6 100644 --- a/cockatrice/src/interface/widgets/utility/visibility_change_listener.h +++ b/cockatrice/src/interface/widgets/utility/visibility_change_listener.h @@ -2,6 +2,9 @@ #define COCKATRICE_VISIBILITY_LISTENER_H #include +#include + +class QWidget; /** * @brief This filter listens to the visibility changes of a target widget, emitting signals whenever the visibility of diff --git a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_color_filter_widget.cpp b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_color_filter_widget.cpp index 57c6da762..cf815ace0 100644 --- a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_color_filter_widget.cpp +++ b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_color_filter_widget.cpp @@ -1,8 +1,19 @@ #include "visual_database_display_color_filter_widget.h" #include "../cards/additional_info/mana_symbol_widget.h" +#include "filter_tree_model.h" +#include "libcockatrice/filters/filter_card.h" +#include +#include +#include +#include +#include +#include +#include #include +#include +#include #include /** diff --git a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_color_filter_widget.h b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_color_filter_widget.h index 497d25fce..38812b02a 100644 --- a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_color_filter_widget.h +++ b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_color_filter_widget.h @@ -7,11 +7,16 @@ #ifndef VISUAL_DATABASE_DISPLAY_COLOR_FILTER_WIDGET_H #define VISUAL_DATABASE_DISPLAY_COLOR_FILTER_WIDGET_H -#include "../../../filters/filter_tree_model.h" - -#include -#include +#include +#include +#include +#include #include +#include + +class FilterTreeModel; +class QComboBox; +class QHBoxLayout; class VisualDatabaseDisplayColorFilterCircleWidget : public QWidget { diff --git a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_filter_save_load_widget.cpp b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_filter_save_load_widget.cpp index 76a611d52..fd005b315 100644 --- a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_filter_save_load_widget.cpp +++ b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_filter_save_load_widget.cpp @@ -1,13 +1,28 @@ #include "visual_database_display_filter_save_load_widget.h" #include "../../../client/settings/cache_settings.h" +#include "../general/layout_containers/flow_widget.h" +#include "filter_tree_model.h" +#include "libcockatrice/filters/filter_card.h" #include "visual_database_filter_display_widget.h" -#include +#include +#include +#include +#include +#include #include #include +#include +#include +#include +#include +#include +#include +#include #include #include +#include VisualDatabaseDisplayFilterSaveLoadWidget::VisualDatabaseDisplayFilterSaveLoadWidget(QWidget *parent, FilterTreeModel *_filterModel) diff --git a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_filter_save_load_widget.h b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_filter_save_load_widget.h index 459633e42..ea8a0ed6b 100644 --- a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_filter_save_load_widget.h +++ b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_filter_save_load_widget.h @@ -7,17 +7,19 @@ #ifndef VISUAL_DATABASE_DISPLAY_FILTER_SAVE_LOAD_WIDGET_H #define VISUAL_DATABASE_DISPLAY_FILTER_SAVE_LOAD_WIDGET_H -#include "../../../filters/filter_tree_model.h" -#include "../general/layout_containers/flow_widget.h" - -#include -#include -#include -#include +#include #include -#include -#include +#include +#include +#include #include +#include + +class FilterTreeModel; +class FlowWidget; +class QLineEdit; +class QPushButton; +class QVBoxLayout; class VisualDatabaseDisplayFilterSaveLoadWidget : public QWidget { diff --git a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_filter_toolbar_widget.cpp b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_filter_toolbar_widget.cpp index a59a068dd..3e9d9e525 100644 --- a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_filter_toolbar_widget.cpp +++ b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_filter_toolbar_widget.cpp @@ -2,9 +2,36 @@ #include "../../pixel_map_generator.h" #include "../deck_editor/card_database_view.h" +#include "../quick_settings/settings_button_widget.h" +#include "card_database_display_model.h" +#include "visual_database_display_filter_save_load_widget.h" +#include "visual_database_display_format_legality_filter_widget.h" +#include "visual_database_display_main_type_filter_widget.h" +#include "visual_database_display_name_filter_widget.h" +#include "visual_database_display_set_filter_widget.h" +#include "visual_database_display_sub_type_filter_widget.h" #include "visual_database_display_widget.h" +#include +#include #include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +class DeckListModel; VisualDatabaseDisplayFilterToolbarWidget::VisualDatabaseDisplayFilterToolbarWidget(VisualDatabaseDisplayWidget *_parent, DeckListModel *deckListModel) diff --git a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_filter_toolbar_widget.h b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_filter_toolbar_widget.h index 8a3555455..f97310c1b 100644 --- a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_filter_toolbar_widget.h +++ b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_filter_toolbar_widget.h @@ -1,14 +1,22 @@ #ifndef COCKATRICE_VISUAL_DATABASE_DISPLAY_FILTER_TOOLBAR_WIDGET_H #define COCKATRICE_VISUAL_DATABASE_DISPLAY_FILTER_TOOLBAR_WIDGET_H -#include "visual_database_display_filter_save_load_widget.h" -#include "visual_database_display_format_legality_filter_widget.h" -#include "visual_database_display_main_type_filter_widget.h" -#include "visual_database_display_name_filter_widget.h" -#include "visual_database_display_set_filter_widget.h" -#include "visual_database_display_sub_type_filter_widget.h" +#include "../general/layout_containers/flow_widget.h" + +#include class VisualDatabaseDisplayWidget; +class DeckListModel; +class QComboBox; +class QGroupBox; +class QLabel; +class SettingsButtonWidget; +class VisualDatabaseDisplayFilterSaveLoadWidget; +class VisualDatabaseDisplayFormatLegalityFilterWidget; +class VisualDatabaseDisplayMainTypeFilterWidget; +class VisualDatabaseDisplayNameFilterWidget; +class VisualDatabaseDisplaySetFilterWidget; +class VisualDatabaseDisplaySubTypeFilterWidget; class VisualDatabaseDisplayFilterToolbarWidget : public FlowWidget { diff --git a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_format_legality_filter_widget.cpp b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_format_legality_filter_widget.cpp index 633f07af7..a5725ff3f 100644 --- a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_format_legality_filter_widget.cpp +++ b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_format_legality_filter_widget.cpp @@ -1,14 +1,29 @@ #include "visual_database_display_format_legality_filter_widget.h" #include "../../../filters/filter_tree_model.h" +#include "../general/layout_containers/flow_widget.h" +#include "libcockatrice/card/database/card_database_querier.h" +#include "libcockatrice/filters/filter_card.h" #include "visual_database_display_filter_button.h" +#include +#include +#include #include +#include +#include #include +#include +#include #include #include +#include +#include +#include #include #include +#include +#include VisualDatabaseDisplayFormatLegalityFilterWidget::VisualDatabaseDisplayFormatLegalityFilterWidget( QWidget *parent, diff --git a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_format_legality_filter_widget.h b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_format_legality_filter_widget.h index 1b1a1382e..e94593e67 100644 --- a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_format_legality_filter_widget.h +++ b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_format_legality_filter_widget.h @@ -1,16 +1,17 @@ #ifndef COCKATRICE_VISUAL_DATABASE_DISPLAY_FORMAT_LEGALITY_FILTER_WIDGET_H #define COCKATRICE_VISUAL_DATABASE_DISPLAY_FORMAT_LEGALITY_FILTER_WIDGET_H -#include "../../../filters/filter_tree_model.h" -#include "../general/layout_containers/flow_widget.h" - -#include #include -#include -#include -#include -#include +#include #include +#include + +class FilterTreeModel; +class FlowWidget; +class QLabel; +class QPushButton; +class QSpinBox; +class QVBoxLayout; class VisualDatabaseDisplayFormatLegalityFilterWidget : public QWidget { diff --git a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_main_type_filter_widget.cpp b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_main_type_filter_widget.cpp index c44489c1b..eff0fe10b 100644 --- a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_main_type_filter_widget.cpp +++ b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_main_type_filter_widget.cpp @@ -1,14 +1,27 @@ #include "visual_database_display_main_type_filter_widget.h" #include "../../../filters/filter_tree_model.h" +#include "../general/layout_containers/flow_widget.h" +#include "libcockatrice/card/database/card_database_querier.h" +#include "libcockatrice/filters/filter_card.h" #include "visual_database_display_filter_button.h" +#include +#include +#include #include +#include +#include #include +#include +#include #include #include +#include +#include #include #include +#include VisualDatabaseDisplayMainTypeFilterWidget::VisualDatabaseDisplayMainTypeFilterWidget(QWidget *parent, FilterTreeModel *_filterModel) diff --git a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_main_type_filter_widget.h b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_main_type_filter_widget.h index 6dec58319..b5a6f332c 100644 --- a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_main_type_filter_widget.h +++ b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_main_type_filter_widget.h @@ -7,15 +7,17 @@ #ifndef VISUAL_DATABASE_DISPLAY_MAIN_TYPE_FILTER_WIDGET_H #define VISUAL_DATABASE_DISPLAY_MAIN_TYPE_FILTER_WIDGET_H -#include "../../../filters/filter_tree_model.h" -#include "../general/layout_containers/flow_widget.h" - -#include #include -#include -#include -#include +#include #include +#include + +class FilterTreeModel; +class FlowWidget; +class QLabel; +class QPushButton; +class QSpinBox; +class QVBoxLayout; class VisualDatabaseDisplayMainTypeFilterWidget : public QWidget { diff --git a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_name_filter_widget.cpp b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_name_filter_widget.cpp index 3fa1a782a..d3e497b21 100644 --- a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_name_filter_widget.cpp +++ b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_name_filter_widget.cpp @@ -1,11 +1,26 @@ #include "visual_database_display_name_filter_widget.h" #include "../../../interface/widgets/dialogs/dlg_load_deck_from_clipboard.h" -#include "../../../interface/widgets/tabs/abstract_tab_deck_editor.h" -#include "../deck_editor/deck_state_manager.h" +#include "../general/layout_containers/flow_widget.h" +#include "deck_list_model.h" +#include "filter_tree_model.h" +#include "libcockatrice/deck_list/deck_list.h" +#include "libcockatrice/filters/filter_card.h" +#include "libcockatrice/filters/filter_tree.h" #include "visual_database_display_filter_button.h" -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include VisualDatabaseDisplayNameFilterWidget::VisualDatabaseDisplayNameFilterWidget(QWidget *parent, FilterTreeModel *_filterModel, diff --git a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_name_filter_widget.h b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_name_filter_widget.h index 0c10408ae..1629cb93b 100644 --- a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_name_filter_widget.h +++ b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_name_filter_widget.h @@ -7,14 +7,17 @@ #ifndef VISUAL_DATABASE_DISPLAY_NAME_FILTER_WIDGET_H #define VISUAL_DATABASE_DISPLAY_NAME_FILTER_WIDGET_H -#include "../../../filters/filter_tree_model.h" -#include "../../../interface/widgets/tabs/abstract_tab_deck_editor.h" -#include "../general/layout_containers/flow_widget.h" - -#include #include -#include +#include #include +#include + +class DeckListModel; +class FilterTreeModel; +class FlowWidget; +class QLineEdit; +class QPushButton; +class QVBoxLayout; class VisualDatabaseDisplayNameFilterWidget : public QWidget { diff --git a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_set_filter_widget.cpp b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_set_filter_widget.cpp index 358c3ed88..3d76fb78a 100644 --- a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_set_filter_widget.cpp +++ b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_set_filter_widget.cpp @@ -2,15 +2,35 @@ #include "../../../client/settings/cache_settings.h" #include "../../../filters/filter_tree_model.h" +#include "../general/layout_containers/flow_widget.h" +#include "libcockatrice/card/database/card_database.h" +#include "libcockatrice/card/set/card_set.h" +#include "libcockatrice/card/set/card_set_list.h" +#include "libcockatrice/filters/filter_card.h" +#include "libcockatrice/utility/macros.h" #include "visual_database_display_filter_button.h" +#include +#include +#include +#include +#include #include +#include +#include #include +#include +#include +#include #include +#include +#include #include +#include #include #include #include +#include VisualDatabaseDisplayRecentSetFilterSettingsWidget::VisualDatabaseDisplayRecentSetFilterSettingsWidget(QWidget *parent) : QWidget(parent) diff --git a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_set_filter_widget.h b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_set_filter_widget.h index bcc5e93c2..468e97e0d 100644 --- a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_set_filter_widget.h +++ b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_set_filter_widget.h @@ -7,16 +7,19 @@ #ifndef VISUAL_DATABASE_DISPLAY_SET_FILTER_WIDGET_H #define VISUAL_DATABASE_DISPLAY_SET_FILTER_WIDGET_H -#include "../../../filters/filter_tree_model.h" -#include "../general/layout_containers/flow_widget.h" - -#include -#include #include -#include -#include -#include +#include #include +#include + +class FilterTreeModel; +class FlowWidget; +class QCheckBox; +class QHBoxLayout; +class QLineEdit; +class QPushButton; +class QSpinBox; +class QVBoxLayout; class VisualDatabaseDisplayRecentSetFilterSettingsWidget : public QWidget { diff --git a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_sub_type_filter_widget.cpp b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_sub_type_filter_widget.cpp index 6d4bcb58e..705bb8efa 100644 --- a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_sub_type_filter_widget.cpp +++ b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_sub_type_filter_widget.cpp @@ -1,15 +1,28 @@ #include "visual_database_display_sub_type_filter_widget.h" #include "../../../filters/filter_tree_model.h" +#include "../general/layout_containers/flow_widget.h" +#include "libcockatrice/card/database/card_database_querier.h" +#include "libcockatrice/filters/filter_card.h" #include "visual_database_display_filter_button.h" +#include +#include +#include #include #include +#include +#include #include +#include +#include #include #include +#include +#include #include #include +#include VisualDatabaseDisplaySubTypeFilterWidget::VisualDatabaseDisplaySubTypeFilterWidget(QWidget *parent, FilterTreeModel *_filterModel) diff --git a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_sub_type_filter_widget.h b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_sub_type_filter_widget.h index d713c7f99..7929063fd 100644 --- a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_sub_type_filter_widget.h +++ b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_sub_type_filter_widget.h @@ -7,14 +7,18 @@ #ifndef VISUAL_DATABASE_DISPLAY_SUB_TYPE_FILTER_WIDGET_H #define VISUAL_DATABASE_DISPLAY_SUB_TYPE_FILTER_WIDGET_H -#include "../../../filters/filter_tree_model.h" -#include "../general/layout_containers/flow_widget.h" - -#include #include -#include -#include +#include #include +#include + +class FilterTreeModel; +class FlowWidget; +class QLabel; +class QLineEdit; +class QPushButton; +class QSpinBox; +class QVBoxLayout; class VisualDatabaseDisplaySubTypeFilterWidget : public QWidget { diff --git a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_widget.cpp b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_widget.cpp index 6e0fee53f..599ac97b4 100644 --- a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_widget.cpp +++ b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_widget.cpp @@ -3,21 +3,52 @@ #include "../../../client/settings/cache_settings.h" #include "../../../filters/filter_tree_model.h" #include "../../../filters/syntax_help.h" +#include "../../key_signals.h" #include "../../pixel_map_generator.h" +#include "../cards/card_info_picture_widget.h" #include "../cards/card_info_picture_with_text_overlay_widget.h" +#include "../cards/card_size_widget.h" #include "../deck_editor/card_database_view.h" +#include "../general/layout_containers/flow_widget.h" #include "../utility/custom_line_edit.h" +#include "card_database_display_model.h" +#include "card_database_model.h" +#include "deck_list_model.h" +#include "libcockatrice/card/card_localization.h" +#include "libcockatrice/card/database/card_database_loader.h" +#include "libcockatrice/card/database/card_database_querier.h" +#include "libcockatrice/card/printing/exact_card.h" +#include "libcockatrice/card/printing/printing_info.h" +#include "libcockatrice/filters/filter_card.h" +#include "libcockatrice/filters/filter_tree.h" #include "visual_database_display_color_filter_widget.h" -#include "visual_database_display_filter_save_load_widget.h" -#include "visual_database_display_main_type_filter_widget.h" -#include "visual_database_display_name_filter_widget.h" -#include "visual_database_display_set_filter_widget.h" -#include "visual_database_display_sub_type_filter_widget.h" +#include "visual_database_display_filter_toolbar_widget.h" -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include -#include +#include +#include +#include +#include #include +#include +#include +#include +#include +#include +#include #include #include #include @@ -25,6 +56,8 @@ #include #include +class QMouseEvent; + VisualDatabaseDisplayWidget::VisualDatabaseDisplayWidget(QWidget *parent, CardDatabaseModel *database_model, DeckListModel *deckListModel) diff --git a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_widget.h b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_widget.h index d161ce362..9771e55c1 100644 --- a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_widget.h +++ b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_widget.h @@ -7,25 +7,38 @@ #ifndef VISUAL_DATABASE_DISPLAY_WIDGET_H #define VISUAL_DATABASE_DISPLAY_WIDGET_H -#include "../../../filters/filter_tree_model.h" -#include "../../../interface/widgets/tabs/abstract_tab_deck_editor.h" -#include "../../key_signals.h" -#include "../cards/card_info_picture_with_text_overlay_widget.h" -#include "../cards/card_size_widget.h" -#include "../general/layout_containers/flow_widget.h" -#include "../general/layout_containers/overlap_control_widget.h" -#include "../utility/custom_line_edit.h" -#include "visual_database_display_color_filter_widget.h" -#include "visual_database_display_filter_toolbar_widget.h" +#include "libcockatrice/card/card_info.h" #include -#include -#include +#include +#include +#include #include #include -#include -#include -#include +#include +#include + +class CardDatabaseDisplayModel; +class CardDatabaseModel; +class CardDatabaseView; +class CardSizeWidget; +class DeckList; +class DeckListModel; +class ExactCard; +class FilterTreeModel; +class FlowWidget; +class OverlapControlWidget; +class QLabel; +class QModelIndex; +class QPushButton; +class QScrollArea; +class QTimer; +class QToolButton; +class QVBoxLayout; +class SearchLineEdit; +class VisualDatabaseDisplayColorFilterWidget; +class VisualDatabaseDisplayFilterToolbarWidget; +template class QList; inline Q_LOGGING_CATEGORY(VisualDatabaseDisplayLog, "visual_database_display"); diff --git a/cockatrice/src/interface/widgets/visual_database_display/visual_database_filter_display_widget.cpp b/cockatrice/src/interface/widgets/visual_database_display/visual_database_filter_display_widget.cpp index bb5b333d9..0f6ac51ec 100644 --- a/cockatrice/src/interface/widgets/visual_database_display/visual_database_filter_display_widget.cpp +++ b/cockatrice/src/interface/widgets/visual_database_display/visual_database_filter_display_widget.cpp @@ -2,13 +2,18 @@ #include "../../../client/settings/cache_settings.h" +#include #include #include #include #include #include +#include #include +#include +#include #include +#include FilterDisplayWidget::FilterDisplayWidget(QWidget *parent, const QString &filename, FilterTreeModel *_filterModel) : QWidget(parent), filterFilename(filename), filterModel(_filterModel) diff --git a/cockatrice/src/interface/widgets/visual_database_display/visual_database_filter_display_widget.h b/cockatrice/src/interface/widgets/visual_database_display/visual_database_filter_display_widget.h index 5fe29fa2d..6d051bcf7 100644 --- a/cockatrice/src/interface/widgets/visual_database_display/visual_database_filter_display_widget.h +++ b/cockatrice/src/interface/widgets/visual_database_display/visual_database_filter_display_widget.h @@ -7,12 +7,12 @@ #ifndef VISUAL_DATABASE_FILTER_DISPLAY_WIDGET_H #define VISUAL_DATABASE_FILTER_DISPLAY_WIDGET_H -#include -#include #include #include +#include class FilterTreeModel; +class QPushButton; class FilterDisplayWidget : public QWidget { diff --git a/cockatrice/src/interface/widgets/visual_deck_editor/visual_deck_display_options_widget.cpp b/cockatrice/src/interface/widgets/visual_deck_editor/visual_deck_display_options_widget.cpp index 28abe480e..25ba41aa9 100644 --- a/cockatrice/src/interface/widgets/visual_deck_editor/visual_deck_display_options_widget.cpp +++ b/cockatrice/src/interface/widgets/visual_deck_editor/visual_deck_display_options_widget.cpp @@ -1,9 +1,27 @@ #include "visual_deck_display_options_widget.h" #include "../../pixel_map_generator.h" +#include "../deck_editor/deck_editor_deck_dock_widget.h" +#include "../quick_settings/settings_button_widget.h" #include "../tabs/visual_deck_editor/tab_deck_editor_visual.h" +#include "../utility/compact_push_button.h" +#include "deck_list_model.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include +#include VisualDeckDisplayOptionsWidget::VisualDeckDisplayOptionsWidget(QWidget *parent) : QWidget(parent) { diff --git a/cockatrice/src/interface/widgets/visual_deck_editor/visual_deck_display_options_widget.h b/cockatrice/src/interface/widgets/visual_deck_editor/visual_deck_display_options_widget.h index bc11884df..96600c587 100644 --- a/cockatrice/src/interface/widgets/visual_deck_editor/visual_deck_display_options_widget.h +++ b/cockatrice/src/interface/widgets/visual_deck_editor/visual_deck_display_options_widget.h @@ -3,12 +3,18 @@ #include "visual_deck_editor_widget.h" -#include -#include -#include -#include -#include +#include +#include +#include #include +#include + +class CompactPushButton; +class QComboBox; +class QHBoxLayout; +class QLabel; +class QListWidget; +class SettingsButtonWidget; /** * @class VisualDeckDisplayOptionsWidget diff --git a/cockatrice/src/interface/widgets/visual_deck_editor/visual_deck_editor_placeholder_widget.cpp b/cockatrice/src/interface/widgets/visual_deck_editor/visual_deck_editor_placeholder_widget.cpp index da4fe09e5..76c3d0908 100644 --- a/cockatrice/src/interface/widgets/visual_deck_editor/visual_deck_editor_placeholder_widget.cpp +++ b/cockatrice/src/interface/widgets/visual_deck_editor/visual_deck_editor_placeholder_widget.cpp @@ -1,5 +1,9 @@ #include "visual_deck_editor_placeholder_widget.h" +#include +#include +#include + VisualDeckEditorPlaceholderWidget::VisualDeckEditorPlaceholderWidget(QWidget *parent) : QWidget(parent) { mainLayout = new QVBoxLayout(this); diff --git a/cockatrice/src/interface/widgets/visual_deck_editor/visual_deck_editor_placeholder_widget.h b/cockatrice/src/interface/widgets/visual_deck_editor/visual_deck_editor_placeholder_widget.h index de2362a81..84a3142d8 100644 --- a/cockatrice/src/interface/widgets/visual_deck_editor/visual_deck_editor_placeholder_widget.h +++ b/cockatrice/src/interface/widgets/visual_deck_editor/visual_deck_editor_placeholder_widget.h @@ -1,9 +1,11 @@ #ifndef COCKATRICE_VISUAL_DECK_EDITOR_PLACEHOLDER_WIDGET_H #define COCKATRICE_VISUAL_DECK_EDITOR_PLACEHOLDER_WIDGET_H -#include -#include #include +#include + +class QLabel; +class QVBoxLayout; class VisualDeckEditorPlaceholderWidget : public QWidget { diff --git a/cockatrice/src/interface/widgets/visual_deck_editor/visual_deck_editor_sample_hand_widget.cpp b/cockatrice/src/interface/widgets/visual_deck_editor/visual_deck_editor_sample_hand_widget.cpp index cee268228..1554dceb8 100644 --- a/cockatrice/src/interface/widgets/visual_deck_editor/visual_deck_editor_sample_hand_widget.cpp +++ b/cockatrice/src/interface/widgets/visual_deck_editor/visual_deck_editor_sample_hand_widget.cpp @@ -1,16 +1,37 @@ #include "visual_deck_editor_sample_hand_widget.h" #include "../../../client/settings/cache_settings.h" -#include "../../deck_loader/deck_loader.h" #include "../cards/card_info_picture_widget.h" +#include "../cards/card_size_widget.h" #include "../deck_analytics/analyzer_modules/draw_probability/draw_probability_widget.h" -#include "../deck_analytics/deck_list_statistics_analyzer.h" +#include "../general/layout_containers/flow_widget.h" +#include "deck_list_model.h" +#include "libcockatrice/card/card_info.h" +#include "libcockatrice/card/database/card_database_querier.h" +#include "libcockatrice/deck_list/tree/deck_list_card_node.h" +#include "libcockatrice/deck_list/tree/inner_deck_list_node.h" +#include +#include +#include +#include +#include +#include #include +#include +#include +#include +#include +#include #include #include +#include +#include +#include #include +class DeckListStatisticsAnalyzer; + VisualDeckEditorSampleHandWidget::VisualDeckEditorSampleHandWidget(QWidget *parent, DeckListModel *_deckListModel, DeckListStatisticsAnalyzer *_statsAnalyzer) diff --git a/cockatrice/src/interface/widgets/visual_deck_editor/visual_deck_editor_sample_hand_widget.h b/cockatrice/src/interface/widgets/visual_deck_editor/visual_deck_editor_sample_hand_widget.h index c6c07dd55..16f343b75 100644 --- a/cockatrice/src/interface/widgets/visual_deck_editor/visual_deck_editor_sample_hand_widget.h +++ b/cockatrice/src/interface/widgets/visual_deck_editor/visual_deck_editor_sample_hand_widget.h @@ -7,16 +7,22 @@ #ifndef VISUAL_DECK_EDITOR_SAMPLE_HAND_WIDGET_H #define VISUAL_DECK_EDITOR_SAMPLE_HAND_WIDGET_H -#include "../cards/card_size_widget.h" -#include "../deck_analytics/deck_list_statistics_analyzer.h" -#include "../general/layout_containers/flow_widget.h" +#include "libcockatrice/card/printing/exact_card.h" -#include -#include +#include #include -#include +#include class DrawProbabilityWidget; +class CardSizeWidget; +class DeckListModel; +class DeckListStatisticsAnalyzer; +class FlowWidget; +class QHBoxLayout; +class QPushButton; +class QSpinBox; +class QVBoxLayout; + class VisualDeckEditorSampleHandWidget : public QWidget { Q_OBJECT diff --git a/cockatrice/src/interface/widgets/visual_deck_editor/visual_deck_editor_widget.cpp b/cockatrice/src/interface/widgets/visual_deck_editor/visual_deck_editor_widget.cpp index 60e354d6e..74b940586 100644 --- a/cockatrice/src/interface/widgets/visual_deck_editor/visual_deck_editor_widget.cpp +++ b/cockatrice/src/interface/widgets/visual_deck_editor/visual_deck_editor_widget.cpp @@ -1,33 +1,48 @@ #include "visual_deck_editor_widget.h" #include "../../../client/settings/cache_settings.h" -#include "../../../main.h" -#include "../../deck_loader/deck_loader.h" -#include "../../layouts/overlap_layout.h" #include "../../pixel_map_generator.h" -#include "../cards/card_info_picture_with_text_overlay_widget.h" +#include "../cards/card_size_widget.h" #include "../cards/deck_card_zone_display_widget.h" #include "../general/layout_containers/flow_widget.h" -#include "../tabs/visual_deck_editor/tab_deck_editor_visual.h" -#include "../tabs/visual_deck_editor/tab_deck_editor_visual_tab_widget.h" #include "../utility/compact_push_button.h" #include "../utility/completer_utils.h" +#include "card/card_completer_proxy_model.h" +#include "card_database_display_model.h" +#include "libcockatrice/card/database/card_database_querier.h" +#include "libcockatrice/card/printing/exact_card.h" #include "visual_deck_display_options_widget.h" +#include "visual_deck_editor_placeholder_widget.h" -#include +#include +#include #include +#include #include +#include +#include +#include +#include #include +#include +#include #include -#include +#include +#include +#include +#include +#include +#include +#include #include -#include -#include +#include +#include +#include #include #include #include #include -#include +#include VisualDeckEditorWidget::VisualDeckEditorWidget(QWidget *parent, DeckListModel *_deckListModel, diff --git a/cockatrice/src/interface/widgets/visual_deck_editor/visual_deck_editor_widget.h b/cockatrice/src/interface/widgets/visual_deck_editor/visual_deck_editor_widget.h index cc045fca2..0b8ff19fb 100644 --- a/cockatrice/src/interface/widgets/visual_deck_editor/visual_deck_editor_widget.h +++ b/cockatrice/src/interface/widgets/visual_deck_editor/visual_deck_editor_widget.h @@ -7,26 +7,35 @@ #ifndef VISUAL_DECK_EDITOR_H #define VISUAL_DECK_EDITOR_H -#include "../cards/card_info_picture_with_text_overlay_widget.h" -#include "../cards/card_size_widget.h" -#include "../general/layout_containers/overlap_control_widget.h" -#include "../quick_settings/settings_button_widget.h" -#include "../utility/compact_push_button.h" -#include "visual_deck_editor_placeholder_widget.h" - -#include -#include -#include +#include +#include +#include +#include +#include #include -#include -#include -#include -#include -#include -#include +#include class VisualDeckDisplayOptionsWidget; class DeckCardZoneDisplayWidget; +class CardCompleterProxyModel; +class CardDatabaseDisplayModel; +class CardDatabaseModel; +class CardSizeWidget; +class CompactPushButton; +class DeckList; +class DeckListModel; +class ExactCard; +class FlowWidget; +class QCompleter; +class QHBoxLayout; +class QItemSelection; +class QItemSelectionModel; +class QLineEdit; +class QModelIndex; +class QScrollArea; +class QVBoxLayout; +class VisualDeckEditorPlaceholderWidget; + enum class DisplayType { Flat, diff --git a/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_color_identity_filter_widget.cpp b/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_color_identity_filter_widget.cpp index d1a780c38..1ac4c856c 100644 --- a/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_color_identity_filter_widget.cpp +++ b/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_color_identity_filter_widget.cpp @@ -1,8 +1,13 @@ #include "deck_preview_color_identity_filter_widget.h" #include "../../cards/additional_info/mana_symbol_widget.h" +#include "../visual_deck_storage_sort_filter_proxy_model.h" +#include +#include #include +#include +#include DeckPreviewColorIdentityFilterWidget::DeckPreviewColorIdentityFilterWidget(QWidget *parent) : QWidget(parent), layout(new QHBoxLayout(this)) diff --git a/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_color_identity_filter_widget.h b/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_color_identity_filter_widget.h index d54984bcf..e0c90034c 100644 --- a/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_color_identity_filter_widget.h +++ b/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_color_identity_filter_widget.h @@ -8,11 +8,14 @@ #include "../visual_deck_storage_sort_filter_proxy_model.h" -#include +#include #include -#include #include #include +#include + +class QHBoxLayout; +class QPushButton; class DeckPreviewColorIdentityFilterWidget : public QWidget { diff --git a/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_deck_tags_display_widget.cpp b/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_deck_tags_display_widget.cpp index 41d87ccb1..dc619e9fa 100644 --- a/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_deck_tags_display_widget.cpp +++ b/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_deck_tags_display_widget.cpp @@ -1,15 +1,23 @@ #include "deck_preview_deck_tags_display_widget.h" #include "../../../../client/settings/cache_settings.h" +#include "../../../deck_loader/deck_file_format.h" #include "../../../deck_loader/deck_loader.h" +#include "../../../deck_loader/loaded_deck.h" #include "../../general/layout_containers/flow_widget.h" #include "deck_preview_tag_addition_widget.h" #include "deck_preview_tag_dialog.h" #include "deck_preview_tag_display_widget.h" +#include "libcockatrice/deck_list/deck_list.h" +#include +#include #include #include +#include #include +#include +#include DeckPreviewDeckTagsDisplayWidget::DeckPreviewDeckTagsDisplayWidget(QWidget *_parent, const QStringList &_tags) : QWidget(_parent), currentTags(_tags) diff --git a/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_deck_tags_display_widget.h b/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_deck_tags_display_widget.h index 64bd5aa1a..a12f6ec3c 100644 --- a/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_deck_tags_display_widget.h +++ b/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_deck_tags_display_widget.h @@ -6,9 +6,12 @@ #ifndef DECK_PREVIEW_DECK_TAGS_DISPLAY_WIDGET_H #define DECK_PREVIEW_DECK_TAGS_DISPLAY_WIDGET_H +#include +#include #include #include #include +#include class FlowWidget; diff --git a/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_tag_addition_widget.cpp b/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_tag_addition_widget.cpp index fdf4b2a28..82ed6191c 100644 --- a/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_tag_addition_widget.cpp +++ b/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_tag_addition_widget.cpp @@ -1,12 +1,19 @@ #include "deck_preview_tag_addition_widget.h" -#include "../../../../client/settings/cache_settings.h" -#include "../../../../interface/widgets/tabs/abstract_tab_deck_editor.h" - +#include +#include +#include +#include #include #include #include #include +#include +#include +#include +#include +#include +#include #include DeckPreviewTagAdditionWidget::DeckPreviewTagAdditionWidget(QWidget *_parent, QString _tagName) diff --git a/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_tag_addition_widget.h b/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_tag_addition_widget.h index 7a3a735a2..30ce46249 100644 --- a/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_tag_addition_widget.h +++ b/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_tag_addition_widget.h @@ -7,7 +7,9 @@ #ifndef DECK_PREVIEW_TAG_ADDITION_WIDGET_H #define DECK_PREVIEW_TAG_ADDITION_WIDGET_H -#include "deck_preview_deck_tags_display_widget.h" +#include +#include +#include class DeckPreviewTagAdditionWidget : public QWidget { diff --git a/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_tag_dialog.cpp b/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_tag_dialog.cpp index f27d11d36..2a6a42e9d 100644 --- a/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_tag_dialog.cpp +++ b/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_tag_dialog.cpp @@ -8,10 +8,17 @@ #include #include #include +#include +#include #include +#include #include +#include #include +#include +#include #include +#include DeckPreviewTagDialog::DeckPreviewTagDialog(const QStringList &knownTags, const QStringList &_activeTags, diff --git a/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_tag_dialog.h b/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_tag_dialog.h index 4d9040af4..80d5560a0 100644 --- a/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_tag_dialog.h +++ b/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_tag_dialog.h @@ -9,10 +9,18 @@ #define DECK_PREVIEW_TAG_DIALOG_H #include -#include -#include -#include -#include +#include +#include +#include +#include + +class QHBoxLayout; +class QLabel; +class QLineEdit; +class QListWidget; +class QPushButton; +class QVBoxLayout; +class QWidget; class DeckPreviewTagDialog : public QDialog { diff --git a/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_tag_display_widget.cpp b/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_tag_display_widget.cpp index a7fef5031..e62570241 100644 --- a/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_tag_display_widget.cpp +++ b/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_tag_display_widget.cpp @@ -1,9 +1,19 @@ #include "deck_preview_tag_display_widget.h" +#include +#include +#include +#include #include #include #include #include +#include +#include +#include +#include +#include +#include DeckPreviewTagDisplayWidget::DeckPreviewTagDisplayWidget(QWidget *parent, const QString &_tagName) : QWidget(parent), tagName(_tagName), state(TagState::NotSelected) diff --git a/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_tag_display_widget.h b/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_tag_display_widget.h index df2a6b404..d3f5e7326 100644 --- a/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_tag_display_widget.h +++ b/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_tag_display_widget.h @@ -7,10 +7,12 @@ #ifndef DECK_PREVIEW_TAG_DISPLAY_WIDGET_H #define DECK_PREVIEW_TAG_DISPLAY_WIDGET_H -#include -#include #include #include +#include + +class QLabel; +class QPushButton; enum class TagState { diff --git a/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_tag_item_widget.cpp b/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_tag_item_widget.cpp index d9ea9fc30..7796f893b 100644 --- a/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_tag_item_widget.cpp +++ b/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_tag_item_widget.cpp @@ -1,5 +1,8 @@ #include "deck_preview_tag_item_widget.h" +#include +#include + DeckPreviewTagItemWidget::DeckPreviewTagItemWidget(const QString &tagName, bool isChecked, QWidget *parent) : QWidget(parent), checkBox_(new QCheckBox(this)) { diff --git a/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_tag_item_widget.h b/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_tag_item_widget.h index a3301799a..a09eb7501 100644 --- a/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_tag_item_widget.h +++ b/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_tag_item_widget.h @@ -7,9 +7,11 @@ #ifndef DECK_PREVIEW_TAG_ITEM_WIDGET_H #define DECK_PREVIEW_TAG_ITEM_WIDGET_H -#include -#include +#include #include +#include + +class QCheckBox; class DeckPreviewTagItemWidget : public QWidget { diff --git a/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_widget.cpp b/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_widget.cpp index 53fe32314..220c55788 100644 --- a/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_widget.cpp +++ b/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_widget.cpp @@ -3,26 +3,51 @@ #include "../../../../client/settings/cache_settings.h" #include "../../../../interface/widgets/dialogs/dlg_convert_deck_to_cod_format.h" #include "../../../deck_loader/deck_loader.h" +#include "../../../deck_loader/loaded_deck.h" #include "../../cards/additional_info/color_identity_widget.h" #include "../../cards/deck_preview_card_picture_widget.h" +#include "../visual_deck_storage_model.h" #include "../visual_deck_storage_quick_settings_widget.h" #include "../visual_deck_storage_tag_filter_widget.h" #include "../visual_deck_storage_widget.h" #include "deck_preview_deck_tags_display_widget.h" +#include "libcockatrice/card/database/card_database_querier.h" +#include "libcockatrice/card/printing/exact_card.h" +#include "libcockatrice/deck_list/deck_list.h" +#include "libcockatrice/deck_list/tree/deck_list_card_node.h" +#include "libcockatrice/utility/card_ref.h" +#include +#include +#include +#include #include #include #include #include +#include #include #include +#include #include +#include +#include #include +#include +#include +#include #include +#include #include +#include +#include #include +#include +#include #include #include +#include +#include DeckPreviewWidget::DeckPreviewWidget(QWidget *_parent, VisualDeckStorageWidget *_visualDeckStorageWidget, diff --git a/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_widget.h b/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_widget.h index f4909eda8..cdeed87c7 100644 --- a/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_widget.h +++ b/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_widget.h @@ -6,17 +6,18 @@ #ifndef DECK_PREVIEW_WIDGET_H #define DECK_PREVIEW_WIDGET_H -#include "../../cards/deck_preview_card_picture_widget.h" -#include "../visual_deck_storage_model.h" - #include +#include #include #include #include -#include +#include +#include +#include +#include #include +#include -class QEnterEvent; class QFrame; class QLabel; class QMenu; @@ -26,6 +27,8 @@ class DeckPreviewCardPictureWidget; class DeckPreviewDeckTagsDisplayWidget; class VisualDeckStorageModel; class VisualDeckStorageWidget; +class QVBoxLayout; +struct LoadedDeck; class DeckPreviewWidget final : public QWidget { diff --git a/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/public_deck_preview_widget.cpp b/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/public_deck_preview_widget.cpp index b49d6f9f4..361747423 100644 --- a/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/public_deck_preview_widget.cpp +++ b/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/public_deck_preview_widget.cpp @@ -4,15 +4,19 @@ #include "../../cards/additional_info/color_identity_widget.h" #include "../../cards/deck_preview_card_picture_widget.h" #include "../../general/layout_containers/flow_widget.h" +#include "../remote_public_decks_model.h" #include "deck_preview_tag_display_widget.h" +#include "libcockatrice/card/database/card_database_querier.h" +#include "libcockatrice/card/printing/exact_card.h" +#include "libcockatrice/utility/card_ref.h" +#include #include #include -#include -#include #include #include #include +#include PublicDeckPreviewWidget::PublicDeckPreviewWidget(QWidget *parent, const RemotePublicDecksModel::DeckEntry &entry) : QWidget(parent) diff --git a/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/public_deck_preview_widget.h b/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/public_deck_preview_widget.h index a0e5dd43a..103120c7f 100644 --- a/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/public_deck_preview_widget.h +++ b/cockatrice/src/interface/widgets/visual_deck_storage/deck_preview/public_deck_preview_widget.h @@ -9,16 +9,15 @@ #include "../remote_public_decks_model.h" #include +#include #include #include +#include class ColorIdentityWidget; class DeckPreviewCardPictureWidget; class FlowWidget; -class QKeyEvent; class QLabel; -class QMouseEvent; -class QResizeEvent; /** * @brief A preview tile for a public deck published by another user. diff --git a/cockatrice/src/interface/widgets/visual_deck_storage/remote_public_decks_model.cpp b/cockatrice/src/interface/widgets/visual_deck_storage/remote_public_decks_model.cpp index a1cabd729..9b8daf87c 100644 --- a/cockatrice/src/interface/widgets/visual_deck_storage/remote_public_decks_model.cpp +++ b/cockatrice/src/interface/widgets/visual_deck_storage/remote_public_decks_model.cpp @@ -3,7 +3,10 @@ #include "../../../client/settings/cache_settings.h" #include +#include +#include #include +#include #include #include #include @@ -11,6 +14,9 @@ #include #include #include +#include + +class QObject; RemotePublicDecksModel::RemotePublicDecksModel(AbstractClient *_client, QObject *parent) : QAbstractListModel(parent), client(_client) diff --git a/cockatrice/src/interface/widgets/visual_deck_storage/remote_public_decks_model.h b/cockatrice/src/interface/widgets/visual_deck_storage/remote_public_decks_model.h index eeb606442..cb1f786e4 100644 --- a/cockatrice/src/interface/widgets/visual_deck_storage/remote_public_decks_model.h +++ b/cockatrice/src/interface/widgets/visual_deck_storage/remote_public_decks_model.h @@ -9,10 +9,15 @@ #include "visual_deck_storage_sort_filter_proxy_model.h" #include +#include #include #include +#include #include +#include #include +#include +#include class AbstractClient; class CommandContainer; @@ -20,6 +25,7 @@ class QTimer; class Response; class ServerInfo_DeckStorage_Folder; class ServerInfo_DeckStorage_TreeItem; +class QObject; /** * @brief Flat, read-only list of the public decks published by another user. diff --git a/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_folder_display_widget.cpp b/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_folder_display_widget.cpp index 53f21d1a1..44b7a1a06 100644 --- a/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_folder_display_widget.cpp +++ b/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_folder_display_widget.cpp @@ -2,6 +2,7 @@ #include "../cards/card_info_picture_widget.h" #include "../cards/card_size_widget.h" +#include "../cards/deck_preview_card_picture_widget.h" #include "../general/display/banner_widget.h" #include "../general/layout_containers/flow_widget.h" #include "deck_preview/deck_preview_widget.h" @@ -10,10 +11,20 @@ #include "visual_deck_storage_sort_filter_proxy_model.h" #include "visual_deck_storage_widget.h" +#include +#include +#include #include +#include +#include +#include +#include #include +#include #include #include +#include +#include VisualDeckStorageFolderDisplayWidget::VisualDeckStorageFolderDisplayWidget( QWidget *parent, diff --git a/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_folder_display_widget.h b/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_folder_display_widget.h index 5a81457b0..998619c0b 100644 --- a/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_folder_display_widget.h +++ b/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_folder_display_widget.h @@ -17,9 +17,12 @@ #define VISUAL_DECK_STORAGE_FOLDER_DISPLAY_WIDGET_H #include +#include #include #include +#include #include +#include class BannerWidget; class DeckPreviewWidget; diff --git a/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_model.cpp b/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_model.cpp index daca55fc8..e84631e52 100644 --- a/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_model.cpp +++ b/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_model.cpp @@ -1,19 +1,32 @@ #include "visual_deck_storage_model.h" +#include "../../deck_loader/deck_file_format.h" #include "../../deck_loader/deck_loader.h" +#include "../../deck_loader/loaded_deck.h" #include "../cards/additional_info/deck_color_identity.h" +#include "libcockatrice/deck_list/deck_list.h" +#include #include #include #include #include #include #include +#include +#include #include +#include +#include #include +#include #include +#include +#include #include +class QObject; + namespace { /** diff --git a/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_model.h b/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_model.h index 330205356..57eaebacf 100644 --- a/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_model.h +++ b/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_model.h @@ -14,14 +14,20 @@ #define VISUAL_DECK_STORAGE_MODEL_H #include "../../deck_loader/loaded_deck.h" +#include "libcockatrice/utility/card_ref.h" #include #include #include #include +#include +#include #include -#include -#include +#include +#include +#include + +class QObject; namespace VisualDeckStorageRoles { diff --git a/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_quick_settings_widget.cpp b/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_quick_settings_widget.cpp index c19ac0fec..9bb6e0fae 100644 --- a/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_quick_settings_widget.cpp +++ b/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_quick_settings_widget.cpp @@ -2,14 +2,23 @@ #include "../../../client/settings/cache_settings.h" #include "../cards/card_size_widget.h" -#include "visual_deck_storage_widget.h" +#include "../quick_settings/settings_button_widget.h" +#include "libcockatrice/utility/macros.h" #include #include +#include +#include +#include +#include #include +#include +#include +#include #include #include #include +#include VisualDeckStorageQuickSettingsWidget::VisualDeckStorageQuickSettingsWidget(QWidget *parent) : SettingsButtonWidget(parent) diff --git a/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_quick_settings_widget.h b/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_quick_settings_widget.h index a85e9e654..7bce34d8c 100644 --- a/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_quick_settings_widget.h +++ b/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_quick_settings_widget.h @@ -11,11 +11,14 @@ #include "../quick_settings/settings_button_widget.h" +#include + class CardSizeWidget; class QLabel; class QSpinBox; class QCheckBox; class QComboBox; +class QWidget; class VisualDeckStorageQuickSettingsWidget : public SettingsButtonWidget { diff --git a/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_search_widget.cpp b/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_search_widget.cpp index 406527893..2c03666c1 100644 --- a/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_search_widget.cpp +++ b/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_search_widget.cpp @@ -4,6 +4,10 @@ #include "../../pixel_map_generator.h" #include +#include +#include +#include +#include #include /** diff --git a/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_search_widget.h b/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_search_widget.h index 7769ea911..87a8dc9f8 100644 --- a/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_search_widget.h +++ b/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_search_widget.h @@ -6,11 +6,13 @@ #ifndef VISUAL_DECK_STORAGE_SEARCH_WIDGET_H #define VISUAL_DECK_STORAGE_SEARCH_WIDGET_H -#include -#include +#include #include +#include class QTimer; +class QHBoxLayout; +class QLineEdit; class VisualDeckStorageSearchWidget : public QWidget { diff --git a/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_sort_filter_proxy_model.cpp b/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_sort_filter_proxy_model.cpp index 0ad6ebcb2..abe3327af 100644 --- a/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_sort_filter_proxy_model.cpp +++ b/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_sort_filter_proxy_model.cpp @@ -1,10 +1,20 @@ #include "visual_deck_storage_sort_filter_proxy_model.h" #include "../../../client/settings/cache_settings.h" +#include "../../deck_loader/loaded_deck.h" #include "../../filters/deck_filter_string.h" +#include "visual_deck_storage_model.h" +#include +#include #include +#include +#include +#include +#include +#include #include +#include #include #include diff --git a/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_sort_filter_proxy_model.h b/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_sort_filter_proxy_model.h index a6c40a2d7..51732adc8 100644 --- a/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_sort_filter_proxy_model.h +++ b/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_sort_filter_proxy_model.h @@ -15,11 +15,15 @@ #ifndef VISUAL_DECK_STORAGE_SORT_FILTER_PROXY_MODEL_H #define VISUAL_DECK_STORAGE_SORT_FILTER_PROXY_MODEL_H -#include "visual_deck_storage_model.h" - +#include +#include #include #include #include +#include + +class QObject; +class VisualDeckStorageModel; class VisualDeckStorageSortFilterProxyModel : public QSortFilterProxyModel { diff --git a/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_sort_widget.cpp b/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_sort_widget.cpp index 6289a4941..f798a72a9 100644 --- a/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_sort_widget.cpp +++ b/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_sort_widget.cpp @@ -3,6 +3,9 @@ #include "../../../client/settings/cache_settings.h" #include "visual_deck_storage_widget.h" +#include +#include +#include #include VisualDeckStorageSortWidget::VisualDeckStorageSortWidget(VisualDeckStorageWidget *parent) : QWidget(parent) diff --git a/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_sort_widget.h b/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_sort_widget.h index 633924d84..df3f39eb5 100644 --- a/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_sort_widget.h +++ b/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_sort_widget.h @@ -8,11 +8,13 @@ #include "visual_deck_storage_sort_filter_proxy_model.h" -#include -#include #include +#include class VisualDeckStorageWidget; +class QComboBox; +class QHBoxLayout; + class VisualDeckStorageSortWidget : public QWidget { Q_OBJECT diff --git a/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_tag_filter_widget.cpp b/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_tag_filter_widget.cpp index 6f954b01b..d6b7aedbb 100644 --- a/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_tag_filter_widget.cpp +++ b/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_tag_filter_widget.cpp @@ -4,6 +4,13 @@ #include "deck_preview/deck_preview_tag_display_widget.h" #include +#include +#include +#include +#include +#include +#include +#include VisualDeckStorageTagFilterWidget::VisualDeckStorageTagFilterWidget(QWidget *parent) : QWidget(parent) { diff --git a/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_tag_filter_widget.h b/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_tag_filter_widget.h index 5e3cb398c..13a27c10a 100644 --- a/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_tag_filter_widget.h +++ b/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_tag_filter_widget.h @@ -6,13 +6,16 @@ #ifndef VISUAL_DECK_STORAGE_TAG_FILTER_WIDGET_H #define VISUAL_DECK_STORAGE_TAG_FILTER_WIDGET_H -#include +#include #include #include #include +#include class DeckPreviewTagDisplayWidget; class FlowWidget; +class QString; +template class QSet; class VisualDeckStorageTagFilterWidget : public QWidget { diff --git a/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_widget.cpp b/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_widget.cpp index c7218f195..51e9c70e7 100644 --- a/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_widget.cpp +++ b/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_widget.cpp @@ -2,22 +2,38 @@ #include "../../../client/settings/cache_settings.h" #include "../../pixel_map_generator.h" -#include "../quick_settings/settings_button_widget.h" #include "deck_preview/deck_preview_color_identity_filter_widget.h" #include "deck_preview/deck_preview_widget.h" +#include "libcockatrice/card/database/card_database.h" +#include "libcockatrice/card/database/card_database_loader.h" #include "visual_deck_storage_folder_display_widget.h" +#include "visual_deck_storage_model.h" #include "visual_deck_storage_quick_settings_widget.h" #include "visual_deck_storage_search_widget.h" +#include "visual_deck_storage_sort_filter_proxy_model.h" #include "visual_deck_storage_sort_widget.h" #include "visual_deck_storage_tag_filter_widget.h" +#include +#include +#include +#include #include +#include +#include +#include +#include +#include #include +#include #include +#include +#include #include #include #include #include +#include VisualDeckStorageWidget::VisualDeckStorageWidget(QWidget *parent) : QWidget(parent) { diff --git a/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_widget.h b/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_widget.h index dfb715bea..b512dd87c 100644 --- a/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_widget.h +++ b/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_widget.h @@ -6,18 +6,13 @@ #ifndef VISUAL_DECK_STORAGE_WIDGET_H #define VISUAL_DECK_STORAGE_WIDGET_H -#include "visual_deck_storage_model.h" -#include "visual_deck_storage_sort_filter_proxy_model.h" - -#include -#include -#include -#include +#include +#include +#include #include +#include class QLabel; -class QResizeEvent; -class QShowEvent; class QTimer; class DeckPreviewColorIdentityFilterWidget; class VisualDeckStorageFolderDisplayWidget; @@ -25,6 +20,13 @@ class VisualDeckStorageQuickSettingsWidget; class VisualDeckStorageSearchWidget; class VisualDeckStorageSortWidget; class VisualDeckStorageTagFilterWidget; +class QHBoxLayout; +class QScrollArea; +class QToolButton; +class QVBoxLayout; +class VisualDeckStorageModel; +class VisualDeckStorageSortFilterProxyModel; +struct LoadedDeck; class VisualDeckStorageWidget final : public QWidget { diff --git a/cockatrice/src/interface/window_main.cpp b/cockatrice/src/interface/window_main.cpp index 77cc85130..889e81bfe 100644 --- a/cockatrice/src/interface/window_main.cpp +++ b/cockatrice/src/interface/window_main.cpp @@ -21,7 +21,6 @@ #include "../client/latency_status_widget.h" #include "../client/network/update/client/client_update_checker.h" -#include "../client/network/update/client/release_channel.h" #include "../client/settings/cache_settings.h" #include "../client/settings/shortcuts_settings.h" #include "../interface/widgets/dialogs/dlg_edit_tokens.h" @@ -34,50 +33,63 @@ #include "../interface/widgets/dialogs/dlg_view_log.h" #include "../interface/widgets/onboarding/first_run_wizard.h" #include "../interface/widgets/settings_page/general_settings_page.h" -#include "../interface/widgets/tabs/tab_game.h" #include "../interface/widgets/tabs/tab_server.h" #include "../interface/widgets/tabs/tab_supervisor.h" #include "../main.h" +#include "abstract_client.h" #include "intents/contexts/context_connect_to_server.h" #include "intents/contexts/context_join_room.h" +#include "intents/intent.h" #include "intents/intent_connect_to_server.h" #include "intents/intent_login.h" #include "intents/intent_open_server_room_by_name.h" #include "intents/url_parser.h" +#include "latency_tracker.h" #include "logger.h" #include "pixel_map_generator.h" #include "version_string.h" #include "widgets/dialogs/dlg_connect.h" #include "widgets/server/handle_public_servers.h" +#include "widgets/settings_page/abstract_settings_page.h" #include "widgets/tabs/api/commander_spellbook/handle_commander_brackets.h" -#include "widgets/utility/get_text_with_max.h" #include #include #include #include #include +#include #include +#include +#include #include #include -#include +#include +#include +#include #include #include #include +#include +#include +#include #include +#include +#include #include +#include #include -#include #include -#include -#include -#include +#include +#include +#include +#include +#include #include #include #include #include #include -#include #include #include #include @@ -91,6 +103,13 @@ #include #include #include +#include +#include +#include +#include +#include + +class LocalServerInterface; #define GITHUB_PAGES_URL "https://cockatrice.github.io" #define GITHUB_CONTRIBUTORS_URL "https://github.com/Cockatrice/Cockatrice/graphs/contributors" diff --git a/cockatrice/src/interface/window_main.h b/cockatrice/src/interface/window_main.h index 1c4dde300..5223332a0 100644 --- a/cockatrice/src/interface/window_main.h +++ b/cockatrice/src/interface/window_main.h @@ -26,16 +26,26 @@ #define WINDOW_H #include "../client/lag_monitor.h" +#include "../client/network/update/client/release_channel.h" #include "connection_controller/remote_connection_controller.h" -#include "widgets/dialogs/dlg_local_game_options.h" +#include +#include #include +#include #include -#include -#include -#include +#include +#include +#include +#include +#include +#include #include -#include +#include + +class QAction; +class QWidget; +struct LocalGameOptions; inline Q_LOGGING_CATEGORY(WindowMainLog, "window_main"); inline Q_LOGGING_CATEGORY(WindowMainStartupLog, "window_main.startup"); @@ -43,18 +53,11 @@ inline Q_LOGGING_CATEGORY(WindowMainStartupVersionLog, "window_main.startup.vers inline Q_LOGGING_CATEGORY(WindowMainStartupShortcutsLog, "window_main.startup.shortcuts"); inline Q_LOGGING_CATEGORY(WindowMainStartupAutoconnectLog, "window_main.startup.autoconnect"); -class Release; -class DlgConnect; class DlgViewLog; class GameReplay; -class HandlePublicServers; -class LocalClient; class LocalServer; -class QLabel; class LatencyStatusWidget; -class QThread; class RemoteClient; -class ServerInfo_User; class TabSupervisor; class WndSets; class DlgTipOfTheDay; diff --git a/cockatrice/src/main.cpp b/cockatrice/src/main.cpp index af519f436..b9cc8dabc 100644 --- a/cockatrice/src/main.cpp +++ b/cockatrice/src/main.cpp @@ -25,36 +25,55 @@ #include "client/sound_engine.h" #include "client/url_scheme_event_filter.h" #include "database/interface/settings_card_preference_provider.h" +#include "interface/intents/intent.h" #include "interface/intents/intent_open_local_deck.h" #include "interface/logger.h" #include "interface/pixel_map_generator.h" #include "interface/theme_manager.h" -#include "interface/widgets/dialogs/dlg_settings.h" -#include "interface/widgets/tabs/tab_supervisor.h" #include "interface/window_main.h" +#include "libcockatrice/card/database/card_database.h" +#include "libcockatrice/rng/rng_abstract.h" #include "single_instance_manager.h" #include "version_string.h" #include +#include +#include +#include +#include +#include #include -#include #include +#include +#include +#include +#include #include #include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include +#include #include #include #include -#include #include -#include #include #include #include #include #include +#include +#include +#include QTranslator *translator, *qtTranslator; RNG_Abstract *rng; @@ -91,6 +110,7 @@ static void CockatriceLogger(QtMsgType type, const QMessageLogContext &ctx, cons #include #include #include + #pragma comment(lib, "DbgHelp.lib") // Link the DbgHelp library // clang-format on diff --git a/cockatrice/src/main.h b/cockatrice/src/main.h index eee262d2c..3d772915b 100644 --- a/cockatrice/src/main.h +++ b/cockatrice/src/main.h @@ -15,7 +15,6 @@ class CardDatabase; class QString; class QSystemTrayIcon; class QTranslator; -class SoundEngine; extern CardDatabase *db; diff --git a/cockatrice/src/single_instance_manager.cpp b/cockatrice/src/single_instance_manager.cpp index 8d363ff34..89fc6b578 100644 --- a/cockatrice/src/single_instance_manager.cpp +++ b/cockatrice/src/single_instance_manager.cpp @@ -1,7 +1,16 @@ #include "single_instance_manager.h" +#include +#include #include +#include +#include +#include +#include #include +#include +#include +#include namespace { diff --git a/cockatrice/src/single_instance_manager.h b/cockatrice/src/single_instance_manager.h index d3884a60f..727994208 100644 --- a/cockatrice/src/single_instance_manager.h +++ b/cockatrice/src/single_instance_manager.h @@ -1,10 +1,12 @@ #ifndef COCKATRICE_SINGLE_INSTANCE_MANAGER_H #define COCKATRICE_SINGLE_INSTANCE_MANAGER_H -#include -#include -#include -#include +#include +#include +#include +#include + +class QLocalServer; class SingleInstanceManager : public QObject { diff --git a/libcockatrice_card/libcockatrice/card/card_info.cpp b/libcockatrice_card/libcockatrice/card/card_info.cpp index 56c737793..bd33f18e7 100644 --- a/libcockatrice_card/libcockatrice/card/card_info.cpp +++ b/libcockatrice_card/libcockatrice/card/card_info.cpp @@ -1,21 +1,17 @@ #include "card_info.h" #include "game_specific_terms.h" +#include "libcockatrice/card/lazy_properties_hash.h" #include "printing/printing_info.h" #include "relation/card_relation.h" #include "set/card_set.h" -#include +#include #include #include #include -#include #include -class CardRelation; -class CardSet; -class CardInfo; - using CardInfoPtr = QSharedPointer; const QHash &CardInfo::getPropertiesHash() const diff --git a/libcockatrice_card/libcockatrice/card/card_info.h b/libcockatrice_card/libcockatrice/card/card_info.h index 17894cec5..356da0546 100644 --- a/libcockatrice_card/libcockatrice/card/card_info.h +++ b/libcockatrice_card/libcockatrice/card/card_info.h @@ -5,15 +5,19 @@ #include "lazy_properties_hash.h" #include "printing/printing_info.h" -#include +#include +#include #include #include #include #include #include -#include +#include +#include #include -#include +#include +#include +#include #include inline Q_LOGGING_CATEGORY(CardInfoLog, "card_info"); @@ -21,7 +25,6 @@ inline Q_LOGGING_CATEGORY(CardInfoLog, "card_info"); class CardInfo; class CardSet; class CardRelation; -class ICardDatabaseParser; typedef QSharedPointer CardInfoPtr; typedef QSharedPointer CardSetPtr; diff --git a/libcockatrice_card/libcockatrice/card/card_info_comparator.cpp b/libcockatrice_card/libcockatrice/card/card_info_comparator.cpp index cc0314e21..d0800e596 100644 --- a/libcockatrice_card/libcockatrice/card/card_info_comparator.cpp +++ b/libcockatrice_card/libcockatrice/card/card_info_comparator.cpp @@ -1,5 +1,11 @@ #include "card_info_comparator.h" +#include "libcockatrice/card/card_info.h" + +#include +#include +#include + CardInfoComparator::CardInfoComparator(const QStringList &properties, Qt::SortOrder order) : m_properties(properties), m_order(order) { diff --git a/libcockatrice_card/libcockatrice/card/card_info_comparator.h b/libcockatrice_card/libcockatrice/card/card_info_comparator.h index b6df8c7a3..b184f5d55 100644 --- a/libcockatrice_card/libcockatrice/card/card_info_comparator.h +++ b/libcockatrice_card/libcockatrice/card/card_info_comparator.h @@ -9,6 +9,9 @@ #include "card_info.h" +#include +#include +#include #include #include diff --git a/libcockatrice_card/libcockatrice/card/card_localization.cpp b/libcockatrice_card/libcockatrice/card/card_localization.cpp index 03c6c659b..4f91bac78 100644 --- a/libcockatrice_card/libcockatrice/card/card_localization.cpp +++ b/libcockatrice_card/libcockatrice/card/card_localization.cpp @@ -1,8 +1,10 @@ #include "card_localization.h" #include +#include #include #include +#include namespace CardLocalization { diff --git a/libcockatrice_card/libcockatrice/card/card_localization.h b/libcockatrice_card/libcockatrice/card/card_localization.h index 1bde506cb..ee2aaa9b7 100644 --- a/libcockatrice_card/libcockatrice/card/card_localization.h +++ b/libcockatrice_card/libcockatrice/card/card_localization.h @@ -1,6 +1,8 @@ #ifndef CARD_LOCALIZATION_H #define CARD_LOCALIZATION_H +#include +#include #include #include diff --git a/libcockatrice_card/libcockatrice/card/database/card_database.cpp b/libcockatrice_card/libcockatrice/card/database/card_database.cpp index 209b9d2c2..f61da204f 100644 --- a/libcockatrice_card/libcockatrice/card/database/card_database.cpp +++ b/libcockatrice_card/libcockatrice/card/database/card_database.cpp @@ -1,17 +1,27 @@ #include "card_database.h" #include "../relation/card_relation.h" -#include "card_database_manager.h" -#include "parser/cockatrice_xml_4.h" +#include "libcockatrice/card/database/card_database_data.h" +#include "libcockatrice/card/database/card_database_loader.h" +#include "libcockatrice/card/database/card_database_querier.h" +#include "libcockatrice/card/database/parser/card_database_parser.h" +#include "libcockatrice/card/format/format_legality_rules.h" +#include "libcockatrice/card/printing/printing_info.h" +#include "libcockatrice/card/set/card_set.h" +#include "libcockatrice/card/set/card_set_list.h" -#include #include -#include -#include -#include -#include +#include +#include +#include +#include +#include #include +class ICardDatabasePathProvider; +class ICardPreferenceProvider; +class ICardSetPriorityController; + CardDatabase::CardDatabase(QObject *parent, ICardPreferenceProvider *prefs, ICardDatabasePathProvider *pathProvider, diff --git a/libcockatrice_card/libcockatrice/card/database/card_database.h b/libcockatrice_card/libcockatrice/card/database/card_database.h index b10e3c726..44d554df7 100644 --- a/libcockatrice_card/libcockatrice/card/database/card_database.h +++ b/libcockatrice_card/libcockatrice/card/database/card_database.h @@ -2,18 +2,26 @@ #define CARDDATABASE_H #include "../set/card_set_list.h" -#include "card_database_data.h" #include "card_database_loader.h" -#include "card_database_querier.h" + +// IWYU pragma: keep +// CardDatabaseData is passed by value to the swapInDatabaseData() slot, and +// CardInfoPtr is passed by value to the cardAdded()/cardRemoved() signals, so +// the moc-generated code needs the complete types. +#include "card_database_data.h" +#include "libcockatrice/card/card_info.h" #include -#include -#include -#include #include -#include -#include -#include +#include +#include +#include +#include + +class CardDatabaseQuerier; +class ICardDatabasePathProvider; +class ICardPreferenceProvider; +class ICardSetPriorityController; inline Q_LOGGING_CATEGORY(CardDatabaseLog, "card_database"); diff --git a/libcockatrice_card/libcockatrice/card/database/card_database_cache.cpp b/libcockatrice_card/libcockatrice/card/database/card_database_cache.cpp index 3165ff871..4ab4d1fca 100644 --- a/libcockatrice_card/libcockatrice/card/database/card_database_cache.cpp +++ b/libcockatrice_card/libcockatrice/card/database/card_database_cache.cpp @@ -4,15 +4,32 @@ #include "../format/format_legality_rules.h" #include "../printing/printing_info.h" #include "../relation/card_relation.h" -#include "../relation/card_relation_type.h" #include "../set/card_set.h" #include "card_database_loader.h" +#include "libcockatrice/card/database/card_database_data.h" +#include "libcockatrice/card/lazy_properties_hash.h" #include +#include #include +#include +#include #include #include +#include +#include +#include +#include +#include #include +#include +#include +#include +#include + +class ICardSetPriorityController; +enum class CardRelationType; +template class QHash; namespace { diff --git a/libcockatrice_card/libcockatrice/card/database/card_database_cache.h b/libcockatrice_card/libcockatrice/card/database/card_database_cache.h index 40ff96541..178b3ac6e 100644 --- a/libcockatrice_card/libcockatrice/card/database/card_database_cache.h +++ b/libcockatrice_card/libcockatrice/card/database/card_database_cache.h @@ -1,10 +1,11 @@ #ifndef CARDDATABASE_CACHE_H #define CARDDATABASE_CACHE_H -#include "card_database_data.h" +#include -#include -#include +class ICardSetPriorityController; +class QByteArray; +struct CardDatabaseData; namespace CardDatabaseCache { diff --git a/libcockatrice_card/libcockatrice/card/database/card_database_loader.cpp b/libcockatrice_card/libcockatrice/card/database/card_database_loader.cpp index 47f7eee6d..0f0b28b2a 100644 --- a/libcockatrice_card/libcockatrice/card/database/card_database_loader.cpp +++ b/libcockatrice_card/libcockatrice/card/database/card_database_loader.cpp @@ -2,6 +2,10 @@ #include "card_database.h" #include "card_database_cache.h" +#include "libcockatrice/card/card_info.h" +#include "libcockatrice/card/database/card_database_data.h" +#include "libcockatrice/card/set/card_set.h" +#include "libcockatrice/interfaces/interface_card_database_path_provider.h" #include "parser/card_database_parser.h" #include "parser/cockatrice_xml_3.h" #include "parser/cockatrice_xml_4.h" @@ -9,11 +13,22 @@ #include #include #include +#include #include +#include #include #include #include +#include +#include +#include +#include #include +#include +#include + +class ICardPreferenceProvider; +class ICardSetPriorityController; CardDatabaseLoader::CardDatabaseLoader(QObject *parent, CardDatabase *db, diff --git a/libcockatrice_card/libcockatrice/card/database/card_database_loader.h b/libcockatrice_card/libcockatrice/card/database/card_database_loader.h index 6dcb06bf2..706e31ab2 100644 --- a/libcockatrice_card/libcockatrice/card/database/card_database_loader.h +++ b/libcockatrice_card/libcockatrice/card/database/card_database_loader.h @@ -2,12 +2,22 @@ #define COCKATRICE_CARD_DATABASE_LOADER_H #include +#include #include #include -#include -#include -#include -#include +#include +#include +#include +#include + +class ICardDatabasePathProvider; +class ICardPreferenceProvider; +class ICardSetPriorityController; + +// IWYU pragma: keep +// CardDatabaseData is passed by value to the databaseDataReady() signal, so the +// moc-generated code needs the complete type. +#include "card_database_data.h" inline Q_LOGGING_CATEGORY(CardDatabaseLoadingLog, "card_database.loading"); inline Q_LOGGING_CATEGORY(CardDatabaseLoadingSuccessOrFailureLog, "card_database.loading.success_or_failure"); diff --git a/libcockatrice_card/libcockatrice/card/database/card_database_manager.cpp b/libcockatrice_card/libcockatrice/card/database/card_database_manager.cpp index 614b4a7f8..b06c258fa 100644 --- a/libcockatrice_card/libcockatrice/card/database/card_database_manager.cpp +++ b/libcockatrice_card/libcockatrice/card/database/card_database_manager.cpp @@ -1,9 +1,16 @@ #include "card_database_manager.h" +#include "libcockatrice/card/database/card_database.h" + #include #include #include +class CardDatabaseQuerier; +class ICardDatabasePathProvider; +class ICardPreferenceProvider; +class ICardSetPriorityController; + ICardPreferenceProvider *CardDatabaseManager::cardPreferenceProvider = new NoopCardPreferenceProvider(); ICardDatabasePathProvider *CardDatabaseManager::pathProvider = new NoopCardDatabasePathProvider(); ICardSetPriorityController *CardDatabaseManager::setPriorityController = new NoopCardSetPriorityController(); diff --git a/libcockatrice_card/libcockatrice/card/database/card_database_manager.h b/libcockatrice_card/libcockatrice/card/database/card_database_manager.h index c7de66a25..074154a41 100644 --- a/libcockatrice_card/libcockatrice/card/database/card_database_manager.h +++ b/libcockatrice_card/libcockatrice/card/database/card_database_manager.h @@ -2,7 +2,12 @@ #define CARD_DATABASE_ACCESSOR_H #pragma once -#include "card_database.h" + +class CardDatabase; +class CardDatabaseQuerier; +class ICardDatabasePathProvider; +class ICardPreferenceProvider; +class ICardSetPriorityController; /** * @class CardDatabaseManager diff --git a/libcockatrice_card/libcockatrice/card/database/card_database_querier.cpp b/libcockatrice_card/libcockatrice/card/database/card_database_querier.cpp index 5b9c5a4b5..2fad5212d 100644 --- a/libcockatrice_card/libcockatrice/card/database/card_database_querier.cpp +++ b/libcockatrice_card/libcockatrice/card/database/card_database_querier.cpp @@ -4,8 +4,15 @@ #include "../printing/exact_card.h" #include "../set/card_set_comparator.h" #include "card_database.h" +#include "libcockatrice/card/set/card_set.h" +#include "libcockatrice/interfaces/interface_card_preference_provider.h" +#include "libcockatrice/utility/card_ref.h" -#include +#include +#include +#include +#include +#include CardDatabaseQuerier::CardDatabaseQuerier(QObject *_parent, const CardDatabase *_db, diff --git a/libcockatrice_card/libcockatrice/card/database/card_database_querier.h b/libcockatrice_card/libcockatrice/card/database/card_database_querier.h index f195a8170..a1409b3cc 100644 --- a/libcockatrice_card/libcockatrice/card/database/card_database_querier.h +++ b/libcockatrice_card/libcockatrice/card/database/card_database_querier.h @@ -3,12 +3,18 @@ #include "../card_info.h" #include "../printing/exact_card.h" +#include "libcockatrice/card/printing/printing_info.h" +#include +#include #include -#include -#include +#include +#include +#include class CardDatabase; +class ICardPreferenceProvider; +struct CardRef; /** * @class CardDatabaseQuerier diff --git a/libcockatrice_card/libcockatrice/card/database/parser/card_database_parser.cpp b/libcockatrice_card/libcockatrice/card/database/parser/card_database_parser.cpp index 00ed9377d..1374533ca 100644 --- a/libcockatrice_card/libcockatrice/card/database/parser/card_database_parser.cpp +++ b/libcockatrice_card/libcockatrice/card/database/parser/card_database_parser.cpp @@ -1,6 +1,11 @@ #include "card_database_parser.h" -#include +#include "libcockatrice/card/card_info.h" +#include "libcockatrice/card/database/card_database_data.h" + +#include + +class ICardSetPriorityController; SetNameMap ICardDatabaseParser::sets; diff --git a/libcockatrice_card/libcockatrice/card/database/parser/card_database_parser.h b/libcockatrice_card/libcockatrice/card/database/parser/card_database_parser.h index 6d9c91260..b82d9aed7 100644 --- a/libcockatrice_card/libcockatrice/card/database/parser/card_database_parser.h +++ b/libcockatrice_card/libcockatrice/card/database/parser/card_database_parser.h @@ -2,10 +2,17 @@ #define CARDDATABASE_PARSER_H #include "../../card_info.h" -#include "../card_database_data.h" +#include "libcockatrice/card/database/parser/card_database_parser.h" +#include "libcockatrice/card/set/card_set.h" -#include +#include +#include #include +#include + +class ICardSetPriorityController; +class QIODevice; +struct CardDatabaseData; #define COCKATRICE_XML_XSI_NAMESPACE "http://www.w3.org/2001/XMLSchema-instance" diff --git a/libcockatrice_card/libcockatrice/card/database/parser/cockatrice_xml_3.cpp b/libcockatrice_card/libcockatrice/card/database/parser/cockatrice_xml_3.cpp index 64202ab21..b17eb8b5e 100644 --- a/libcockatrice_card/libcockatrice/card/database/parser/cockatrice_xml_3.cpp +++ b/libcockatrice_card/libcockatrice/card/database/parser/cockatrice_xml_3.cpp @@ -2,13 +2,33 @@ #include "../../relation/card_relation.h" #include "../../relation/card_relation_type.h" +#include "libcockatrice/card/database/card_database_data.h" +#include "libcockatrice/card/database/parser/card_database_parser.h" +#include "libcockatrice/card/lazy_properties_hash.h" +#include "libcockatrice/card/printing/printing_info.h" +#include "libcockatrice/card/set/card_set.h" +#include #include +#include +#include #include #include +#include +#include +#include +#include +#include +#include +#include #include +#include +#include +#include #include +class ICardSetPriorityController; + #define COCKATRICE_XML3_TAGNAME "cockatrice_carddatabase" #define COCKATRICE_XML3_TAGVER 3 #define COCKATRICE_XML3_SCHEMALOCATION \ diff --git a/libcockatrice_card/libcockatrice/card/database/parser/cockatrice_xml_3.h b/libcockatrice_card/libcockatrice/card/database/parser/cockatrice_xml_3.h index 83b736257..cb76e960d 100644 --- a/libcockatrice_card/libcockatrice/card/database/parser/cockatrice_xml_3.h +++ b/libcockatrice_card/libcockatrice/card/database/parser/cockatrice_xml_3.h @@ -2,9 +2,14 @@ #define COCKATRICE_XML3_H #include "card_database_parser.h" +#include "libcockatrice/card/card_info.h" #include -#include +#include +#include + +class ICardSetPriorityController; +class QXmlStreamReader; inline Q_LOGGING_CATEGORY(CockatriceXml3Log, "cockatrice_xml.xml_3_parser"); diff --git a/libcockatrice_card/libcockatrice/card/database/parser/cockatrice_xml_4.cpp b/libcockatrice_card/libcockatrice/card/database/parser/cockatrice_xml_4.cpp index 19e972a7a..eb1416817 100644 --- a/libcockatrice_card/libcockatrice/card/database/parser/cockatrice_xml_4.cpp +++ b/libcockatrice_card/libcockatrice/card/database/parser/cockatrice_xml_4.cpp @@ -1,14 +1,37 @@ #include "cockatrice_xml_4.h" #include "../../relation/card_relation.h" +#include "libcockatrice/card/database/card_database_data.h" +#include "libcockatrice/card/database/parser/card_database_parser.h" +#include "libcockatrice/card/lazy_properties_hash.h" +#include "libcockatrice/card/printing/printing_info.h" +#include "libcockatrice/card/relation/card_relation_type.h" +#include "libcockatrice/card/set/card_set.h" +#include "libcockatrice/interfaces/interface_card_preference_provider.h" #include +#include +#include #include #include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include +#include #include +#include +#include #include +class ICardSetPriorityController; + #define COCKATRICE_XML4_TAGNAME "cockatrice_carddatabase" #define COCKATRICE_XML4_TAGVER 4 #define COCKATRICE_XML4_SCHEMALOCATION \ diff --git a/libcockatrice_card/libcockatrice/card/database/parser/cockatrice_xml_4.h b/libcockatrice_card/libcockatrice/card/database/parser/cockatrice_xml_4.h index 55f7c5a3b..5ddf672ee 100644 --- a/libcockatrice_card/libcockatrice/card/database/parser/cockatrice_xml_4.h +++ b/libcockatrice_card/libcockatrice/card/database/parser/cockatrice_xml_4.h @@ -2,10 +2,16 @@ #define COCKATRICE_XML4_H #include "card_database_parser.h" +#include "libcockatrice/card/card_info.h" +#include #include -#include -#include +#include +#include + +class ICardPreferenceProvider; +class ICardSetPriorityController; +class QXmlStreamReader; inline Q_LOGGING_CATEGORY(CockatriceXml4Log, "cockatrice_xml.xml_4_parser"); diff --git a/libcockatrice_card/libcockatrice/card/format/format_legality_rules.cpp b/libcockatrice_card/libcockatrice/card/format/format_legality_rules.cpp index a6b3bb038..64785759e 100644 --- a/libcockatrice_card/libcockatrice/card/format/format_legality_rules.cpp +++ b/libcockatrice_card/libcockatrice/card/format/format_legality_rules.cpp @@ -1,6 +1,9 @@ #include "format_legality_rules.h" +#include +#include #include +#include bool cardMatchesCondition(const CardInfo &card, const CardCondition &cond) { diff --git a/libcockatrice_card/libcockatrice/card/format/format_legality_rules.h b/libcockatrice_card/libcockatrice/card/format/format_legality_rules.h index 8778ab17e..15ba46728 100644 --- a/libcockatrice_card/libcockatrice/card/format/format_legality_rules.h +++ b/libcockatrice_card/libcockatrice/card/format/format_legality_rules.h @@ -1,11 +1,12 @@ #ifndef COCKATRICE_FORMAT_LEGALITY_RULES_H #define COCKATRICE_FORMAT_LEGALITY_RULES_H -#include +#include #include #include class CardInfo; + using CardInfoPtr = QSharedPointer; struct CardCondition diff --git a/libcockatrice_card/libcockatrice/card/import/card_name_normalizer.cpp b/libcockatrice_card/libcockatrice/card/import/card_name_normalizer.cpp index 91ebd6647..975f7f2d6 100644 --- a/libcockatrice_card/libcockatrice/card/import/card_name_normalizer.cpp +++ b/libcockatrice_card/libcockatrice/card/import/card_name_normalizer.cpp @@ -2,8 +2,14 @@ #include "../database/card_database_manager.h" #include "../printing/exact_card.h" +#include "libcockatrice/card/database/card_database_querier.h" +#include +#include #include +#include +#include +#include /** * @brief Resolves the complete display name of a card. diff --git a/libcockatrice_card/libcockatrice/card/lazy_properties_hash.cpp b/libcockatrice_card/libcockatrice/card/lazy_properties_hash.cpp index 4d903a3bd..a12de469b 100644 --- a/libcockatrice_card/libcockatrice/card/lazy_properties_hash.cpp +++ b/libcockatrice_card/libcockatrice/card/lazy_properties_hash.cpp @@ -1,6 +1,8 @@ #include "lazy_properties_hash.h" -#include +#include +#include +#include LazyPropertiesHash::LazyPropertiesHash() : isMaterialized(true) { diff --git a/libcockatrice_card/libcockatrice/card/lazy_properties_hash.h b/libcockatrice_card/libcockatrice/card/lazy_properties_hash.h index 0ed8c215b..04f5d0251 100644 --- a/libcockatrice_card/libcockatrice/card/lazy_properties_hash.h +++ b/libcockatrice_card/libcockatrice/card/lazy_properties_hash.h @@ -1,8 +1,10 @@ #ifndef COCKATRICE_LAZY_PROPERTIES_HASH_H #define COCKATRICE_LAZY_PROPERTIES_HASH_H +#include #include #include +#include /** * @brief A property map that can lazily deserialize blobs to avoid loading overhead. diff --git a/libcockatrice_card/libcockatrice/card/printing/exact_card.cpp b/libcockatrice_card/libcockatrice/card/printing/exact_card.cpp index 993b5b96e..19e902b27 100644 --- a/libcockatrice_card/libcockatrice/card/printing/exact_card.cpp +++ b/libcockatrice_card/libcockatrice/card/printing/exact_card.cpp @@ -3,6 +3,10 @@ #include "../card_info.h" #include "printing_info.h" +#include +#include +#include + /** * Default constructor. * This will set the CardInfoPtr to null. diff --git a/libcockatrice_card/libcockatrice/card/printing/exact_card.h b/libcockatrice_card/libcockatrice/card/printing/exact_card.h index 74fc75da3..ea49072fb 100644 --- a/libcockatrice_card/libcockatrice/card/printing/exact_card.h +++ b/libcockatrice_card/libcockatrice/card/printing/exact_card.h @@ -2,6 +2,11 @@ #define EXACT_CARD_H #include "../card_info.h" +#include "libcockatrice/card/printing/printing_info.h" + +#include +#include +#include /** * @class ExactCard diff --git a/libcockatrice_card/libcockatrice/card/printing/printing_info.cpp b/libcockatrice_card/libcockatrice/card/printing/printing_info.cpp index 3d185583a..654efac5e 100644 --- a/libcockatrice_card/libcockatrice/card/printing/printing_info.cpp +++ b/libcockatrice_card/libcockatrice/card/printing/printing_info.cpp @@ -2,9 +2,6 @@ #include "../set/card_set.h" -#include -#include - PrintingInfo::PrintingInfo(const CardSetPtr &_set, const LazyPropertiesHash &_properties) : set(_set), properties(_properties) { diff --git a/libcockatrice_card/libcockatrice/card/printing/printing_info.h b/libcockatrice_card/libcockatrice/card/printing/printing_info.h index 974c7bb95..038960e86 100644 --- a/libcockatrice_card/libcockatrice/card/printing/printing_info.h +++ b/libcockatrice_card/libcockatrice/card/printing/printing_info.h @@ -4,9 +4,12 @@ #include "../set/card_set.h" #include "libcockatrice/card/lazy_properties_hash.h" +#include #include #include #include +#include +#include class PrintingInfo; diff --git a/libcockatrice_card/libcockatrice/card/relation/card_relation.cpp b/libcockatrice_card/libcockatrice/card/relation/card_relation.cpp index 8903c892d..410b25682 100644 --- a/libcockatrice_card/libcockatrice/card/relation/card_relation.cpp +++ b/libcockatrice_card/libcockatrice/card/relation/card_relation.cpp @@ -1,7 +1,5 @@ #include "card_relation.h" -#include "card_relation_type.h" - CardRelation::CardRelation(const QString &_name, CardRelationType _attachType, bool _isCreateAllExclusion, diff --git a/libcockatrice_card/libcockatrice/card/relation/card_relation.h b/libcockatrice_card/libcockatrice/card/relation/card_relation.h index a1864f5b2..3a1366f2b 100644 --- a/libcockatrice_card/libcockatrice/card/relation/card_relation.h +++ b/libcockatrice_card/libcockatrice/card/relation/card_relation.h @@ -5,6 +5,7 @@ #include #include +#include /** * @class CardRelation diff --git a/libcockatrice_card/libcockatrice/card/set/card_set.cpp b/libcockatrice_card/libcockatrice/card/set/card_set.cpp index 92060f6c4..e873eeeab 100644 --- a/libcockatrice_card/libcockatrice/card/set/card_set.cpp +++ b/libcockatrice_card/libcockatrice/card/set/card_set.cpp @@ -1,5 +1,7 @@ #include "card_set.h" +#include "libcockatrice/interfaces/interface_card_set_priority_controller.h" + #include #include diff --git a/libcockatrice_card/libcockatrice/card/set/card_set.h b/libcockatrice_card/libcockatrice/card/set/card_set.h index 8e16e01df..538d78852 100644 --- a/libcockatrice_card/libcockatrice/card/set/card_set.h +++ b/libcockatrice_card/libcockatrice/card/set/card_set.h @@ -5,12 +5,14 @@ #include #include #include -#include class CardInfo; +class ICardSetPriorityController; + using CardInfoPtr = QSharedPointer; class CardSet; + using CardSetPtr = QSharedPointer; /** diff --git a/libcockatrice_card/libcockatrice/card/set/card_set_list.cpp b/libcockatrice_card/libcockatrice/card/set/card_set_list.cpp index 8d6aa7365..2e030adab 100644 --- a/libcockatrice_card/libcockatrice/card/set/card_set_list.cpp +++ b/libcockatrice_card/libcockatrice/card/set/card_set_list.cpp @@ -1,5 +1,12 @@ #include "card_set_list.h" +#include "libcockatrice/card/set/card_set.h" + +#include +#include +#include +#include + class CardSetList::KeyCompareFunctor { public: diff --git a/libcockatrice_card/libcockatrice/card/set/card_set_list.h b/libcockatrice_card/libcockatrice/card/set/card_set_list.h index 81d605374..b9c7b2a7a 100644 --- a/libcockatrice_card/libcockatrice/card/set/card_set_list.h +++ b/libcockatrice_card/libcockatrice/card/set/card_set_list.h @@ -4,6 +4,8 @@ #include "card_set.h" #include +#include +#include /** * @class CardSetList diff --git a/libcockatrice_deck_list/libcockatrice/deck_list/deck_list.cpp b/libcockatrice_deck_list/libcockatrice/deck_list/deck_list.cpp index 90f63c09d..821b53dff 100644 --- a/libcockatrice_deck_list/libcockatrice/deck_list/deck_list.cpp +++ b/libcockatrice_deck_list/libcockatrice/deck_list/deck_list.cpp @@ -2,16 +2,26 @@ #include "deck_list_memento.h" #include "deck_list_plain_text_parser.h" -#include "tree/abstract_deck_list_node.h" +#include "libcockatrice/deck_list/deck_list_node_tree.h" +#include "libcockatrice/deck_list/sideboard_plan.h" +#include "libcockatrice/utility/playmat_params.h" #include "tree/deck_list_card_node.h" #include "tree/inner_deck_list_node.h" -#include +#include #include -#include #include +#include +#include #include +#include +#include +#include +#include #include +#include +#include +#include static const QString CURRENT_SIDEBOARD_PLAN_KEY = ""; diff --git a/libcockatrice_deck_list/libcockatrice/deck_list/deck_list.h b/libcockatrice_deck_list/libcockatrice/deck_list/deck_list.h index 199d3a9a8..6796e9c33 100644 --- a/libcockatrice_deck_list/libcockatrice/deck_list/deck_list.h +++ b/libcockatrice_deck_list/libcockatrice/deck_list/deck_list.h @@ -12,20 +12,24 @@ #include "deck_list_memento.h" #include "deck_list_node_tree.h" +#include "libcockatrice/protocol/pb/move_card_to_zone.pb.h" +#include "libcockatrice/utility/card_ref.h" #include "sideboard_plan.h" #include "tree/inner_deck_list_node.h" +#include #include -#include -#include +#include +#include +#include +#include #include -class AbstractDecklistNode; class DecklistCardNode; -class CardDatabase; class QIODevice; class QTextStream; -class InnerDecklistNode; +class QXmlStreamReader; +class QXmlStreamWriter; /** * @class DeckList diff --git a/libcockatrice_deck_list/libcockatrice/deck_list/deck_list_history_manager.cpp b/libcockatrice_deck_list/libcockatrice/deck_list/deck_list_history_manager.cpp index b6d0687b4..cba926fd5 100644 --- a/libcockatrice_deck_list/libcockatrice/deck_list/deck_list_history_manager.cpp +++ b/libcockatrice_deck_list/libcockatrice/deck_list/deck_list_history_manager.cpp @@ -1,5 +1,10 @@ #include "deck_list_history_manager.h" +#include "libcockatrice/deck_list/deck_list.h" +#include "libcockatrice/deck_list/deck_list_memento.h" + +#include + void DeckListHistoryManager::save(const DeckListMemento &memento) { undoStack.push(memento); diff --git a/libcockatrice_deck_list/libcockatrice/deck_list/deck_list_history_manager.h b/libcockatrice_deck_list/libcockatrice/deck_list/deck_list_history_manager.h index 6acdb199e..dce9e0af8 100644 --- a/libcockatrice_deck_list/libcockatrice/deck_list/deck_list_history_manager.h +++ b/libcockatrice_deck_list/libcockatrice/deck_list/deck_list_history_manager.h @@ -1,11 +1,13 @@ #ifndef COCKATRICE_DECK_LIST_HISTORY_MANAGER_H #define COCKATRICE_DECK_LIST_HISTORY_MANAGER_H -#include "deck_list.h" #include "deck_list_memento.h" #include #include +#include + +class DeckList; class DeckListHistoryManager : public QObject { diff --git a/libcockatrice_deck_list/libcockatrice/deck_list/deck_list_node_tree.cpp b/libcockatrice_deck_list/libcockatrice/deck_list/deck_list_node_tree.cpp index 66f228d19..5c26030bf 100644 --- a/libcockatrice_deck_list/libcockatrice/deck_list/deck_list_node_tree.cpp +++ b/libcockatrice_deck_list/libcockatrice/deck_list/deck_list_node_tree.cpp @@ -1,9 +1,19 @@ #include "deck_list_node_tree.h" +#include "libcockatrice/deck_list/tree/abstract_deck_list_node.h" +#include "libcockatrice/deck_list/tree/inner_deck_list_node.h" #include "tree/deck_list_card_node.h" +#include +#include #include #include +#include +#include +#include +#include +#include +#include static constexpr int MAX_DECK_SIZE = 1e5; diff --git a/libcockatrice_deck_list/libcockatrice/deck_list/deck_list_node_tree.h b/libcockatrice_deck_list/libcockatrice/deck_list/deck_list_node_tree.h index 2c66b34ff..08b4b0d73 100644 --- a/libcockatrice_deck_list/libcockatrice/deck_list/deck_list_node_tree.h +++ b/libcockatrice_deck_list/libcockatrice/deck_list/deck_list_node_tree.h @@ -1,11 +1,17 @@ #ifndef COCKATRICE_DECKLIST_NODE_TREE_H #define COCKATRICE_DECKLIST_NODE_TREE_H -#include "libcockatrice/utility/card_ref.h" #include "tree/deck_list_card_node.h" #include "tree/inner_deck_list_node.h" +#include #include +#include +#include + +class AbstractDecklistNode; +class QXmlStreamReader; +class QXmlStreamWriter; class DecklistNodeTree { diff --git a/libcockatrice_deck_list/libcockatrice/deck_list/deck_list_plain_text_parser.cpp b/libcockatrice_deck_list/libcockatrice/deck_list/deck_list_plain_text_parser.cpp index de50d743b..61af36540 100644 --- a/libcockatrice_deck_list/libcockatrice/deck_list/deck_list_plain_text_parser.cpp +++ b/libcockatrice_deck_list/libcockatrice/deck_list/deck_list_plain_text_parser.cpp @@ -1,10 +1,17 @@ #include "deck_list_plain_text_parser.h" #include "deck_list_node_tree.h" +#include "libcockatrice/deck_list/deck_list.h" #include "tree/inner_deck_list_node.h" +#include +#include #include +#include +#include #include +#include +#include namespace DeckListPlainText { diff --git a/libcockatrice_deck_list/libcockatrice/deck_list/deck_list_plain_text_parser.h b/libcockatrice_deck_list/libcockatrice/deck_list/deck_list_plain_text_parser.h index e0f456a18..0845f7935 100644 --- a/libcockatrice_deck_list/libcockatrice/deck_list/deck_list_plain_text_parser.h +++ b/libcockatrice_deck_list/libcockatrice/deck_list/deck_list_plain_text_parser.h @@ -3,10 +3,11 @@ #include "deck_list.h" -#include #include class QTextStream; +class DecklistNodeTree; +class QString; namespace DeckListPlainText { diff --git a/libcockatrice_deck_list/libcockatrice/deck_list/playmat_resolver.cpp b/libcockatrice_deck_list/libcockatrice/deck_list/playmat_resolver.cpp index fd72fea0b..d1d44cca5 100644 --- a/libcockatrice_deck_list/libcockatrice/deck_list/playmat_resolver.cpp +++ b/libcockatrice_deck_list/libcockatrice/deck_list/playmat_resolver.cpp @@ -1,6 +1,12 @@ #include "playmat_resolver.h" +#include "libcockatrice/deck_list/deck_list.h" +#include "libcockatrice/interfaces/interface_interface_settings_provider.h" +#include "libcockatrice/utility/card_ref.h" + +#include #include +#include PlaymatInfo resolveEffectivePlaymat(const DeckList &deck, const PlaymatInfo &force, diff --git a/libcockatrice_deck_list/libcockatrice/deck_list/playmat_resolver.h b/libcockatrice_deck_list/libcockatrice/deck_list/playmat_resolver.h index 59bc449c8..411ca81fd 100644 --- a/libcockatrice_deck_list/libcockatrice/deck_list/playmat_resolver.h +++ b/libcockatrice_deck_list/libcockatrice/deck_list/playmat_resolver.h @@ -1,10 +1,13 @@ #ifndef COCKATRICE_PLAYMAT_RESOLVER_H #define COCKATRICE_PLAYMAT_RESOLVER_H -#include "deck_list.h" +#include "libcockatrice/utility/playmat_params.h" #include +class DeckList; +template class QList; + /** * @brief Resolves the effective playmat for a deck per the resolution chain: * force override > deck-configured playmat > fallback list > none. diff --git a/libcockatrice_deck_list/libcockatrice/deck_list/sideboard_plan.cpp b/libcockatrice_deck_list/libcockatrice/deck_list/sideboard_plan.cpp index 855062c18..3a47bf1a5 100644 --- a/libcockatrice_deck_list/libcockatrice/deck_list/sideboard_plan.cpp +++ b/libcockatrice_deck_list/libcockatrice/deck_list/sideboard_plan.cpp @@ -1,6 +1,12 @@ #include "sideboard_plan.h" +#include "libcockatrice/protocol/pb/move_card_to_zone.pb.h" + +#include +#include #include +#include +#include namespace { diff --git a/libcockatrice_deck_list/libcockatrice/deck_list/sideboard_plan.h b/libcockatrice_deck_list/libcockatrice/deck_list/sideboard_plan.h index fff4ff2f3..ee29991d6 100644 --- a/libcockatrice_deck_list/libcockatrice/deck_list/sideboard_plan.h +++ b/libcockatrice_deck_list/libcockatrice/deck_list/sideboard_plan.h @@ -2,6 +2,7 @@ #define COCKATRICE_SIDEBOARD_PLAN_H #include +#include #include class QXmlStreamWriter; diff --git a/libcockatrice_deck_list/libcockatrice/deck_list/tree/abstract_deck_list_card_node.cpp b/libcockatrice_deck_list/libcockatrice/deck_list/tree/abstract_deck_list_card_node.cpp index 685238d53..5c7b4bf84 100644 --- a/libcockatrice_deck_list/libcockatrice/deck_list/tree/abstract_deck_list_card_node.cpp +++ b/libcockatrice_deck_list/libcockatrice/deck_list/tree/abstract_deck_list_card_node.cpp @@ -1,5 +1,10 @@ #include "abstract_deck_list_card_node.h" +#include "libcockatrice/deck_list/tree/abstract_deck_list_node.h" + +#include +#include + bool AbstractDecklistCardNode::compare(AbstractDecklistNode *other) const { switch (sortMethod) { diff --git a/libcockatrice_deck_list/libcockatrice/deck_list/tree/abstract_deck_list_card_node.h b/libcockatrice_deck_list/libcockatrice/deck_list/tree/abstract_deck_list_card_node.h index 0942a4601..ebfd9a0b6 100644 --- a/libcockatrice_deck_list/libcockatrice/deck_list/tree/abstract_deck_list_card_node.h +++ b/libcockatrice_deck_list/libcockatrice/deck_list/tree/abstract_deck_list_card_node.h @@ -13,6 +13,10 @@ #include "abstract_deck_list_node.h" +#include + +class InnerDecklistNode; + /** * @class AbstractDecklistCardNode * @ingroup DeckModels diff --git a/libcockatrice_deck_list/libcockatrice/deck_list/tree/abstract_deck_list_node.h b/libcockatrice_deck_list/libcockatrice/deck_list/tree/abstract_deck_list_node.h index 38d1d44b8..406c6fb4d 100644 --- a/libcockatrice_deck_list/libcockatrice/deck_list/tree/abstract_deck_list_node.h +++ b/libcockatrice_deck_list/libcockatrice/deck_list/tree/abstract_deck_list_node.h @@ -17,7 +17,9 @@ #ifndef COCKATRICE_ABSTRACT_DECK_LIST_NODE_H #define COCKATRICE_ABSTRACT_DECK_LIST_NODE_H -#include +#include + +class QXmlStreamWriter; /** * @enum DeckSortMethod diff --git a/libcockatrice_deck_list/libcockatrice/deck_list/tree/deck_list_card_node.cpp b/libcockatrice_deck_list/libcockatrice/deck_list/tree/deck_list_card_node.cpp index 1791c09a6..803737f1e 100644 --- a/libcockatrice_deck_list/libcockatrice/deck_list/tree/deck_list_card_node.cpp +++ b/libcockatrice_deck_list/libcockatrice/deck_list/tree/deck_list_card_node.cpp @@ -1,5 +1,9 @@ #include "deck_list_card_node.h" +#include "libcockatrice/deck_list/tree/abstract_deck_list_card_node.h" + +class InnerDecklistNode; + DecklistCardNode::DecklistCardNode(DecklistCardNode *other, InnerDecklistNode *_parent) : AbstractDecklistCardNode(_parent), name(other->getName()), number(other->getNumber()), cardSetShortName(other->getCardSetShortName()), cardSetNumber(other->getCardCollectorNumber()), diff --git a/libcockatrice_deck_list/libcockatrice/deck_list/tree/deck_list_card_node.h b/libcockatrice_deck_list/libcockatrice/deck_list/tree/deck_list_card_node.h index 3bab5405a..c96a764af 100644 --- a/libcockatrice_deck_list/libcockatrice/deck_list/tree/deck_list_card_node.h +++ b/libcockatrice_deck_list/libcockatrice/deck_list/tree/deck_list_card_node.h @@ -14,7 +14,11 @@ #include "abstract_deck_list_card_node.h" +#include #include +#include + +class InnerDecklistNode; /** * @class DecklistCardNode diff --git a/libcockatrice_deck_list/libcockatrice/deck_list/tree/inner_deck_list_node.cpp b/libcockatrice_deck_list/libcockatrice/deck_list/tree/inner_deck_list_node.cpp index 86f7f5363..b7b1e0b8f 100644 --- a/libcockatrice_deck_list/libcockatrice/deck_list/tree/inner_deck_list_node.cpp +++ b/libcockatrice_deck_list/libcockatrice/deck_list/tree/inner_deck_list_node.cpp @@ -1,6 +1,18 @@ #include "inner_deck_list_node.h" #include "deck_list_card_node.h" +#include "libcockatrice/deck_list/tree/abstract_deck_list_card_node.h" +#include "libcockatrice/deck_list/tree/abstract_deck_list_node.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include InnerDecklistNode::InnerDecklistNode(InnerDecklistNode *other, InnerDecklistNode *_parent) : AbstractDecklistNode(_parent), name(other->getName()) diff --git a/libcockatrice_deck_list/libcockatrice/deck_list/tree/inner_deck_list_node.h b/libcockatrice_deck_list/libcockatrice/deck_list/tree/inner_deck_list_node.h index 8404d7116..6086f9efa 100644 --- a/libcockatrice_deck_list/libcockatrice/deck_list/tree/inner_deck_list_node.h +++ b/libcockatrice_deck_list/libcockatrice/deck_list/tree/inner_deck_list_node.h @@ -19,7 +19,13 @@ #include "abstract_deck_list_node.h" #include +#include #include +#include +#include +#include + +class QXmlStreamReader; /** @brief Constant for the "main" deck zone name. */ #define DECK_ZONE_MAIN "main" diff --git a/libcockatrice_filters/libcockatrice/filters/filter_card.cpp b/libcockatrice_filters/libcockatrice/filters/filter_card.cpp index 5fdce7ae0..26cddd53c 100644 --- a/libcockatrice_filters/libcockatrice/filters/filter_card.cpp +++ b/libcockatrice_filters/libcockatrice/filters/filter_card.cpp @@ -1,6 +1,9 @@ #include "filter_card.h" #include +#include +#include +#include QJsonObject CardFilter::toJson() const { diff --git a/libcockatrice_filters/libcockatrice/filters/filter_card.h b/libcockatrice_filters/libcockatrice/filters/filter_card.h index bb1e0ef53..e6a37ee40 100644 --- a/libcockatrice_filters/libcockatrice/filters/filter_card.h +++ b/libcockatrice_filters/libcockatrice/filters/filter_card.h @@ -7,8 +7,10 @@ #ifndef CARDFILTER_H #define CARDFILTER_H +#include #include #include +#include class CardFilter : public QObject { diff --git a/libcockatrice_filters/libcockatrice/filters/filter_string.cpp b/libcockatrice_filters/libcockatrice/filters/filter_string.cpp index df0c70ae7..bc137b0f6 100644 --- a/libcockatrice_filters/libcockatrice/filters/filter_string.cpp +++ b/libcockatrice_filters/libcockatrice/filters/filter_string.cpp @@ -1,12 +1,35 @@ #include "filter_string.h" +#include "libcockatrice/card/card_info.h" +#include "libcockatrice/card/card_localization.h" +#include "libcockatrice/card/database/card_database.h" +#include "libcockatrice/card/printing/printing_info.h" +#include "libcockatrice/card/set/card_set.h" +#include "libcockatrice/card/set/card_set_list.h" + #include +#include +#include #include +#include +#include #include +#include +#include #include +#include +#include +#include +#include #include #include #include +#include +#include +#include +#include +#include +#include static peg::parser search(R"( Start <- QueryPartList diff --git a/libcockatrice_filters/libcockatrice/filters/filter_string.h b/libcockatrice_filters/libcockatrice/filters/filter_string.h index 015df0cf4..2abe95201 100644 --- a/libcockatrice_filters/libcockatrice/filters/filter_string.h +++ b/libcockatrice_filters/libcockatrice/filters/filter_string.h @@ -7,15 +7,13 @@ #ifndef FILTER_STRING_H #define FILTER_STRING_H -#include "filter_tree.h" - #include -#include #include #include #include #include -#include + +struct CardSearchLanguage; inline Q_LOGGING_CATEGORY(FilterStringLog, "filter_string"); @@ -29,6 +27,7 @@ namespace peg { template struct AstBase; struct EmptyType; + typedef AstBase Ast; } // namespace peg diff --git a/libcockatrice_filters/libcockatrice/filters/filter_tree.cpp b/libcockatrice_filters/libcockatrice/filters/filter_tree.cpp index a5d91d9d3..742b44e97 100644 --- a/libcockatrice_filters/libcockatrice/filters/filter_tree.cpp +++ b/libcockatrice_filters/libcockatrice/filters/filter_tree.cpp @@ -1,8 +1,16 @@ #include "filter_tree.h" #include "filter_card.h" +#include "libcockatrice/card/card_localization.h" +#include "libcockatrice/card/printing/printing_info.h" +#include "libcockatrice/card/set/card_set.h" +#include #include +#include +#include +#include +#include template FilterTreeNode *FilterTreeBranch::nodeAt(int i) const { diff --git a/libcockatrice_filters/libcockatrice/filters/filter_tree.h b/libcockatrice_filters/libcockatrice/filters/filter_tree.h index dd47a1ebc..0defd466b 100644 --- a/libcockatrice_filters/libcockatrice/filters/filter_tree.h +++ b/libcockatrice_filters/libcockatrice/filters/filter_tree.h @@ -8,13 +8,16 @@ #define FILTERTREE_H #include "filter_card.h" +#include "libcockatrice/card/card_info.h" #include #include -#include -#include +#include +#include #include +struct CardSearchLanguage; + class FilterTreeNode { private: @@ -120,6 +123,7 @@ public: class FilterItemList; class FilterTree; + class LogicMap : public FilterTreeBranch { @@ -142,6 +146,7 @@ public: }; class FilterItem; + class FilterItemList : public FilterTreeBranch { private: diff --git a/libcockatrice_models/libcockatrice/models/database/card/card_completer_proxy_model.cpp b/libcockatrice_models/libcockatrice/models/database/card/card_completer_proxy_model.cpp index f31463b50..b99b8b0f7 100644 --- a/libcockatrice_models/libcockatrice/models/database/card/card_completer_proxy_model.cpp +++ b/libcockatrice_models/libcockatrice/models/database/card/card_completer_proxy_model.cpp @@ -1,5 +1,14 @@ #include "card_completer_proxy_model.h" +#include +#include +#include +#include +#include +#include + +class QObject; + CardCompleterProxyModel::CardCompleterProxyModel(QObject *parent) : QSortFilterProxyModel(parent) { } diff --git a/libcockatrice_models/libcockatrice/models/database/card/card_completer_proxy_model.h b/libcockatrice_models/libcockatrice/models/database/card/card_completer_proxy_model.h index 91dc06335..8aa671af7 100644 --- a/libcockatrice_models/libcockatrice/models/database/card/card_completer_proxy_model.h +++ b/libcockatrice_models/libcockatrice/models/database/card/card_completer_proxy_model.h @@ -8,6 +8,9 @@ #define CARD_COMPLETER_PROXY_MODEL_H #include +#include + +class QObject; class CardCompleterProxyModel : public QSortFilterProxyModel { diff --git a/libcockatrice_models/libcockatrice/models/database/card/card_search_model.cpp b/libcockatrice_models/libcockatrice/models/database/card/card_search_model.cpp index 3a734ed37..5bde6e3fc 100644 --- a/libcockatrice_models/libcockatrice/models/database/card/card_search_model.cpp +++ b/libcockatrice_models/libcockatrice/models/database/card/card_search_model.cpp @@ -3,6 +3,10 @@ #include "../card_database_display_model.h" #include "../card_database_model.h" +#include +#include +#include +#include #include #include diff --git a/libcockatrice_models/libcockatrice/models/database/card/card_search_model.h b/libcockatrice_models/libcockatrice/models/database/card/card_search_model.h index b877a9385..08d0e8636 100644 --- a/libcockatrice_models/libcockatrice/models/database/card/card_search_model.h +++ b/libcockatrice_models/libcockatrice/models/database/card/card_search_model.h @@ -7,9 +7,20 @@ #ifndef CARD_SEARCH_MODEL_H #define CARD_SEARCH_MODEL_H -#include "../card_database_display_model.h" +#include "libcockatrice/card/card_info.h" +#include "libcockatrice/card/card_localization.h" #include +#include +#include +#include +#include +#include +#include +#include + +class CardDatabaseDisplayModel; +class QObject; class CardSearchModel : public QAbstractListModel { diff --git a/libcockatrice_models/libcockatrice/models/database/card_database_display_model.cpp b/libcockatrice_models/libcockatrice/models/database/card_database_display_model.cpp index 7f89677c8..39bb8314c 100644 --- a/libcockatrice_models/libcockatrice/models/database/card_database_display_model.cpp +++ b/libcockatrice_models/libcockatrice/models/database/card_database_display_model.cpp @@ -1,6 +1,23 @@ #include "card_database_display_model.h" #include "card_database_model.h" +#include "libcockatrice/card/card_localization.h" +#include "libcockatrice/filters/filter_string.h" +#include "libcockatrice/filters/filter_tree.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +class QObject; CardDatabaseDisplayModel::CardDatabaseDisplayModel(QObject *parent) : QSortFilterProxyModel(parent), isToken(ShowAll), filterString(nullptr) diff --git a/libcockatrice_models/libcockatrice/models/database/card_database_display_model.h b/libcockatrice_models/libcockatrice/models/database/card_database_display_model.h index e6aadd8c6..d12dd1fb4 100644 --- a/libcockatrice_models/libcockatrice/models/database/card_database_display_model.h +++ b/libcockatrice_models/libcockatrice/models/database/card_database_display_model.h @@ -8,12 +8,21 @@ #ifndef COCKATRICE_CARD_DATABASE_DISPLAY_MODEL_H #define COCKATRICE_CARD_DATABASE_DISPLAY_MODEL_H +#include "libcockatrice/card/card_info.h" + +#include +#include #include +#include #include #include #include +#include class FilterTree; +class QObject; +template class QMap; + class CardDatabaseDisplayModel : public QSortFilterProxyModel { Q_OBJECT diff --git a/libcockatrice_models/libcockatrice/models/database/card_database_model.cpp b/libcockatrice_models/libcockatrice/models/database/card_database_model.cpp index ecd26a9f8..1ede554f8 100644 --- a/libcockatrice_models/libcockatrice/models/database/card_database_model.cpp +++ b/libcockatrice_models/libcockatrice/models/database/card_database_model.cpp @@ -1,8 +1,16 @@ #include "card_database_model.h" -#include +#include "libcockatrice/card/printing/printing_info.h" +#include "libcockatrice/card/set/card_set.h" + +#include +#include +#include +#include #include +class QObject; + #define CARDDBMODEL_COLUMNS 6 CardDatabaseModel::CardDatabaseModel(CardDatabase *_db, bool _showOnlyCardsFromEnabledSets, QObject *parent) diff --git a/libcockatrice_models/libcockatrice/models/database/card_database_model.h b/libcockatrice_models/libcockatrice/models/database/card_database_model.h index ad84de6f4..208240109 100644 --- a/libcockatrice_models/libcockatrice/models/database/card_database_model.h +++ b/libcockatrice_models/libcockatrice/models/database/card_database_model.h @@ -7,10 +7,17 @@ #ifndef CARDDATABASEMODEL_H #define CARDDATABASEMODEL_H +#include "libcockatrice/card/card_info.h" + #include #include +#include #include -#include +#include +#include + +class CardDatabase; +class QObject; class CardDatabaseModel : public QAbstractListModel { diff --git a/libcockatrice_models/libcockatrice/models/database/card_set/card_sets_model.cpp b/libcockatrice_models/libcockatrice/models/database/card_set/card_sets_model.cpp index 8fd5311f2..1bc1b9e38 100644 --- a/libcockatrice_models/libcockatrice/models/database/card_set/card_sets_model.cpp +++ b/libcockatrice_models/libcockatrice/models/database/card_set/card_sets_model.cpp @@ -1,6 +1,19 @@ #include "card_sets_model.h" +#include "libcockatrice/card/database/card_database.h" +#include "libcockatrice/card/set/card_set.h" +#include "libcockatrice/interfaces/interface_card_set_priority_controller.h" + +#include +#include +#include +#include +#include +#include +#include #include +#include +#include SetsModel::SetsModel(CardDatabase *_db, QObject *parent) : QAbstractTableModel(parent), sets(_db->getSetList()) { diff --git a/libcockatrice_models/libcockatrice/models/database/card_set/card_sets_model.h b/libcockatrice_models/libcockatrice/models/database/card_set/card_sets_model.h index 2adf71def..354414dc8 100644 --- a/libcockatrice_models/libcockatrice/models/database/card_set/card_sets_model.h +++ b/libcockatrice_models/libcockatrice/models/database/card_set/card_sets_model.h @@ -7,13 +7,24 @@ #ifndef SETSMODEL_H #define SETSMODEL_H +#include "libcockatrice/card/card_info.h" +#include "libcockatrice/card/set/card_set_list.h" + #include +#include #include +#include +#include #include #include -#include +#include +#include +#include +#include +#include -class SetsProxyModel; +class CardDatabase; +class QObject; class SetsMimeData : public QMimeData { diff --git a/libcockatrice_models/libcockatrice/models/database/token/token_display_model.cpp b/libcockatrice_models/libcockatrice/models/database/token/token_display_model.cpp index 4282c6dc8..e08183576 100644 --- a/libcockatrice_models/libcockatrice/models/database/token/token_display_model.cpp +++ b/libcockatrice_models/libcockatrice/models/database/token/token_display_model.cpp @@ -1,6 +1,12 @@ #include "token_display_model.h" #include "../card_database_model.h" +#include "card_database_display_model.h" +#include "libcockatrice/card/card_info.h" + +#include + +class QObject; TokenDisplayModel::TokenDisplayModel(QObject *parent) : CardDatabaseDisplayModel(parent) { diff --git a/libcockatrice_models/libcockatrice/models/database/token/token_display_model.h b/libcockatrice_models/libcockatrice/models/database/token/token_display_model.h index c8f767189..a8625368f 100644 --- a/libcockatrice_models/libcockatrice/models/database/token/token_display_model.h +++ b/libcockatrice_models/libcockatrice/models/database/token/token_display_model.h @@ -9,6 +9,11 @@ #include "../card_database_display_model.h" +#include +#include + +class QObject; + class TokenDisplayModel : public CardDatabaseDisplayModel { Q_OBJECT diff --git a/libcockatrice_models/libcockatrice/models/database/token/token_edit_model.cpp b/libcockatrice_models/libcockatrice/models/database/token/token_edit_model.cpp index 89a1f71b1..9636ed665 100644 --- a/libcockatrice_models/libcockatrice/models/database/token/token_edit_model.cpp +++ b/libcockatrice_models/libcockatrice/models/database/token/token_edit_model.cpp @@ -2,9 +2,13 @@ #include "../card_database_display_model.h" #include "../card_database_model.h" +#include "libcockatrice/card/set/card_set.h" +#include #include +class QObject; + TokenEditModel::TokenEditModel(QObject *parent) : CardDatabaseDisplayModel(parent) { } diff --git a/libcockatrice_models/libcockatrice/models/database/token/token_edit_model.h b/libcockatrice_models/libcockatrice/models/database/token/token_edit_model.h index 92dfaadd7..2f3398899 100644 --- a/libcockatrice_models/libcockatrice/models/database/token/token_edit_model.h +++ b/libcockatrice_models/libcockatrice/models/database/token/token_edit_model.h @@ -9,6 +9,11 @@ #include "../card_database_display_model.h" +#include +#include + +class QObject; + class TokenEditModel : public CardDatabaseDisplayModel { Q_OBJECT diff --git a/libcockatrice_models/libcockatrice/models/deck_list/deck_list_model.cpp b/libcockatrice_models/libcockatrice/models/deck_list/deck_list_model.cpp index a5628a844..4b4088972 100644 --- a/libcockatrice_models/libcockatrice/models/deck_list/deck_list_model.cpp +++ b/libcockatrice_models/libcockatrice/models/deck_list/deck_list_model.cpp @@ -1,6 +1,27 @@ #include "deck_list_model.h" +#include "deck_list_model_custom_zones.h" +#include "libcockatrice/card/database/card_database_querier.h" +#include "libcockatrice/card/format/format_legality_rules.h" +#include "libcockatrice/card/printing/exact_card.h" +#include "libcockatrice/card/printing/printing_info.h" +#include "libcockatrice/card/set/card_set.h" +#include "libcockatrice/deck_list/deck_list.h" +#include "libcockatrice/deck_list/deck_list_node_tree.h" +#include "libcockatrice/deck_list/tree/abstract_deck_list_node.h" +#include "libcockatrice/deck_list/tree/deck_list_card_node.h" + +#include +#include +#include +#include +#include +#include #include +#include +#include + +class QObject; DeckListModel::DeckListModel(QObject *parent) : QAbstractItemModel(parent), lastKnownColumn(1), lastKnownOrder(Qt::AscendingOrder) diff --git a/libcockatrice_models/libcockatrice/models/deck_list/deck_list_model.h b/libcockatrice_models/libcockatrice/models/deck_list/deck_list_model.h index ce6d7f8cb..7334d48ef 100644 --- a/libcockatrice_models/libcockatrice/models/deck_list/deck_list_model.h +++ b/libcockatrice_models/libcockatrice/models/deck_list/deck_list_model.h @@ -1,18 +1,26 @@ #ifndef DECKLISTMODEL_H #define DECKLISTMODEL_H -#include "deck_list_model_custom_zones.h" +#include "libcockatrice/card/card_info.h" +#include "libcockatrice/deck_list/tree/inner_deck_list_node.h" +#include "libcockatrice/utility/card_ref.h" #include <../../../../libcockatrice_deck_list/libcockatrice/deck_list/tree/abstract_deck_list_card_node.h> #include <../../../../libcockatrice_deck_list/libcockatrice/deck_list/tree/deck_list_card_node.h> #include #include -#include -#include +#include +#include +#include +#include +#include +#include +#include -class CardDatabase; -class QPrinter; -class QTextCursor; +class AbstractDecklistNode; +class DeckList; +class ExactCard; +class QObject; /** * @namespace DeckRoles diff --git a/libcockatrice_models/libcockatrice/models/deck_list/deck_list_model_custom_zones.cpp b/libcockatrice_models/libcockatrice/models/deck_list/deck_list_model_custom_zones.cpp index 1dc745e63..419c38b04 100644 --- a/libcockatrice_models/libcockatrice/models/deck_list/deck_list_model_custom_zones.cpp +++ b/libcockatrice_models/libcockatrice/models/deck_list/deck_list_model_custom_zones.cpp @@ -1,10 +1,14 @@ #include "deck_list_model_custom_zones.h" #include "deck_list_model.h" +#include "libcockatrice/deck_list/tree/abstract_deck_list_node.h" +#include "libcockatrice/deck_list/tree/inner_deck_list_node.h" #include <../../../../libcockatrice_deck_list/libcockatrice/deck_list/tree/deck_list_card_node.h> #include +#include #include +#include namespace DeckListModelCustomZones { diff --git a/libcockatrice_models/libcockatrice/models/deck_list/deck_list_model_custom_zones.h b/libcockatrice_models/libcockatrice/models/deck_list/deck_list_model_custom_zones.h index 518a9e1d2..53bdeaa1e 100644 --- a/libcockatrice_models/libcockatrice/models/deck_list/deck_list_model_custom_zones.h +++ b/libcockatrice_models/libcockatrice/models/deck_list/deck_list_model_custom_zones.h @@ -4,7 +4,10 @@ #include <../../../../libcockatrice_deck_list/libcockatrice/deck_list/tree/inner_deck_list_node.h> #include #include -#include +#include +#include + +class AbstractDecklistNode; /** * @class DecklistModelSubZoneNode diff --git a/libcockatrice_models/libcockatrice/models/deck_list/deck_list_sort_filter_proxy_model.cpp b/libcockatrice_models/libcockatrice/models/deck_list/deck_list_sort_filter_proxy_model.cpp index 3d433153a..dcb294ec8 100644 --- a/libcockatrice_models/libcockatrice/models/deck_list/deck_list_sort_filter_proxy_model.cpp +++ b/libcockatrice_models/libcockatrice/models/deck_list/deck_list_sort_filter_proxy_model.cpp @@ -1,6 +1,16 @@ #include "deck_list_sort_filter_proxy_model.h" #include "deck_list_model.h" +#include "libcockatrice/card/card_info.h" +#include "libcockatrice/card/database/card_database_manager.h" +#include "libcockatrice/card/database/card_database_querier.h" +#include "libcockatrice/card/printing/exact_card.h" + +#include +#include +#include +#include +#include bool DeckListSortFilterProxyModel::lessThan(const QModelIndex &left, const QModelIndex &right) const { diff --git a/libcockatrice_models/libcockatrice/models/deck_list/deck_list_sort_filter_proxy_model.h b/libcockatrice_models/libcockatrice/models/deck_list/deck_list_sort_filter_proxy_model.h index 1565417f0..522ed1e23 100644 --- a/libcockatrice_models/libcockatrice/models/deck_list/deck_list_sort_filter_proxy_model.h +++ b/libcockatrice_models/libcockatrice/models/deck_list/deck_list_sort_filter_proxy_model.h @@ -7,8 +7,13 @@ #ifndef COCKATRICE_DECK_LIST_SORT_FILTER_PROXY_MODEL_H #define COCKATRICE_DECK_LIST_SORT_FILTER_PROXY_MODEL_H +#include #include -#include +#include +#include +#include + +class QObject; class DeckListSortFilterProxyModel : public QSortFilterProxyModel { diff --git a/libcockatrice_network/libcockatrice/network/client/abstract/abstract_client.cpp b/libcockatrice_network/libcockatrice/network/client/abstract/abstract_client.cpp index 687d93666..d66653fb1 100644 --- a/libcockatrice_network/libcockatrice/network/client/abstract/abstract_client.cpp +++ b/libcockatrice_network/libcockatrice/network/client/abstract/abstract_client.cpp @@ -1,6 +1,25 @@ #include "abstract_client.h" +#include "libcockatrice/protocol/pb/admin_commands.pb.h" +#include "libcockatrice/protocol/pb/developer_commands.pb.h" +#include "libcockatrice/protocol/pb/game_event_container.pb.h" +#include "libcockatrice/protocol/pb/moderator_commands.pb.h" +#include "libcockatrice/protocol/pb/response.pb.h" +#include "libcockatrice/protocol/pb/room_commands.pb.h" +#include "libcockatrice/protocol/pb/room_event.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_user.pb.h" +#include "libcockatrice/protocol/pb/session_commands.pb.h" +#include "libcockatrice/protocol/pb/session_event.pb.h" + +#include +#include +#include +#include +#include +#include +#include #include +#include #include #include #include diff --git a/libcockatrice_network/libcockatrice/network/client/abstract/abstract_client.h b/libcockatrice_network/libcockatrice/network/client/abstract/abstract_client.h index af22a5c9d..442e96eb2 100644 --- a/libcockatrice_network/libcockatrice/network/client/abstract/abstract_client.h +++ b/libcockatrice_network/libcockatrice/network/client/abstract/abstract_client.h @@ -11,10 +11,27 @@ #include #include +#include #include -#include -#include +#include +#include +#include + +// IWYU pragma: keep +// ServerInfo_User appears in signal signatures, including inside QList, so the +// moc-generated code needs the complete type. +#include #include +#include + +namespace google +{ +namespace protobuf +{ +class Message; +} // namespace protobuf +} // namespace google +template class QList; inline Q_LOGGING_CATEGORY(AbstractClientLog, "abstract_client"); @@ -36,7 +53,6 @@ class Event_NotifyUser; class Event_ConnectionClosed; class Event_ServerShutdown; class Event_ReplayAdded; -class FeatureSet; enum ClientStatus { diff --git a/libcockatrice_network/libcockatrice/network/client/abstract/latency_tracker.cpp b/libcockatrice_network/libcockatrice/network/client/abstract/latency_tracker.cpp index 98b353fdf..bc6230621 100644 --- a/libcockatrice_network/libcockatrice/network/client/abstract/latency_tracker.cpp +++ b/libcockatrice_network/libcockatrice/network/client/abstract/latency_tracker.cpp @@ -1,7 +1,10 @@ #include "latency_tracker.h" +#include +#include #include #include +#include void LatencyTracker::addSample(qint64 ms) { diff --git a/libcockatrice_network/libcockatrice/network/client/abstract/latency_tracker.h b/libcockatrice_network/libcockatrice/network/client/abstract/latency_tracker.h index 75f18ac0c..cae11ea4d 100644 --- a/libcockatrice_network/libcockatrice/network/client/abstract/latency_tracker.h +++ b/libcockatrice_network/libcockatrice/network/client/abstract/latency_tracker.h @@ -6,8 +6,10 @@ #ifndef LATENCY_TRACKER_H #define LATENCY_TRACKER_H +#include #include #include +#include #include /** diff --git a/libcockatrice_network/libcockatrice/network/client/local/local_client.cpp b/libcockatrice_network/libcockatrice/network/client/local/local_client.cpp index eefa3a2f3..c1c1cc976 100644 --- a/libcockatrice_network/libcockatrice/network/client/local/local_client.cpp +++ b/libcockatrice_network/libcockatrice/network/client/local/local_client.cpp @@ -1,9 +1,17 @@ #include "local_client.h" #include "../../server/local/local_server_interface.h" +#include "abstract_client.h" +#include "libcockatrice/protocol/pb/commands.pb.h" +#include "libcockatrice/protocol/pb/server_message.pb.h" +#include +#include #include #include +#include + +class QObject; LocalClient::LocalClient(LocalServerInterface *_lsi, const QString &_playerName, diff --git a/libcockatrice_network/libcockatrice/network/client/local/local_client.h b/libcockatrice_network/libcockatrice/network/client/local/local_client.h index 9e1c89ddd..3ae570255 100644 --- a/libcockatrice_network/libcockatrice/network/client/local/local_client.h +++ b/libcockatrice_network/libcockatrice/network/client/local/local_client.h @@ -10,6 +10,11 @@ #include "../abstract/abstract_client.h" #include +#include +#include + +class QObject; +class ServerMessage; inline Q_LOGGING_CATEGORY(LocalClientLog, "local_client"); diff --git a/libcockatrice_network/libcockatrice/network/client/remote/remote_client.cpp b/libcockatrice_network/libcockatrice/network/client/remote/remote_client.cpp index de2cc720f..feda9e3f4 100644 --- a/libcockatrice_network/libcockatrice/network/client/remote/remote_client.cpp +++ b/libcockatrice_network/libcockatrice/network/client/remote/remote_client.cpp @@ -1,5 +1,8 @@ #include "remote_client.h" +#include "abstract_client.h" +#include "libcockatrice/protocol/pb/commands.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_user.pb.h" #include "version_string.h" #include @@ -7,13 +10,21 @@ #include #include #include +#include +#include +#include +#include +#include #include #include +#include #include +#include +#include +#include #include #include #include -#include #include #include #include @@ -22,6 +33,10 @@ #include #include #include +#include + +class Event_ConnectionClosed; +class QObject; static const unsigned int protocolVersion = 14; diff --git a/libcockatrice_network/libcockatrice/network/client/remote/remote_client.h b/libcockatrice_network/libcockatrice/network/client/remote/remote_client.h index 862dac06e..4d8c24fd2 100644 --- a/libcockatrice_network/libcockatrice/network/client/remote/remote_client.h +++ b/libcockatrice_network/libcockatrice/network/client/remote/remote_client.h @@ -8,11 +8,23 @@ #define REMOTECLIENT_H #include "../abstract/abstract_client.h" +#include "libcockatrice/protocol/pb/response.pb.h" +#include "libcockatrice/protocol/pb/session_commands.pb.h" +#include +#include #include +#include +#include #include -#include -#include +#include +#include + +class Event_ConnectionClosed; +class Event_ServerIdentification; +class INetworkSettingsProvider; +class QObject; +template class QList; inline Q_LOGGING_CATEGORY(RemoteClientLog, "remote_client"); diff --git a/libcockatrice_network/libcockatrice/network/server/local/local_server.cpp b/libcockatrice_network/libcockatrice/network/server/local/local_server.cpp index 8f9d82aa4..ebfc9bdeb 100644 --- a/libcockatrice_network/libcockatrice/network/server/local/local_server.cpp +++ b/libcockatrice_network/libcockatrice/network/server/local/local_server.cpp @@ -1,8 +1,17 @@ #include "local_server.h" +#include "../remote/server.h" +#include "../remote/server_database_interface.h" +#include "../remote/server_protocolhandler.h" +#include "libcockatrice/protocol/pb/serverinfo_user.pb.h" #include "local_server_interface.h" #include <../remote/server_room.h> +#include +#include +#include + +class QObject; LocalServer::LocalServer(QObject *parent) : Server(parent) { diff --git a/libcockatrice_network/libcockatrice/network/server/local/local_server.h b/libcockatrice_network/libcockatrice/network/server/local/local_server.h index 0112afa72..ee8d487d2 100644 --- a/libcockatrice_network/libcockatrice/network/server/local/local_server.h +++ b/libcockatrice_network/libcockatrice/network/server/local/local_server.h @@ -9,8 +9,11 @@ #include <../remote/server.h> #include <../remote/server_database_interface.h> +#include +#include class LocalServerInterface; +class QObject; class LocalServer : public Server { diff --git a/libcockatrice_network/libcockatrice/network/server/local/local_server_interface.cpp b/libcockatrice_network/libcockatrice/network/server/local/local_server_interface.cpp index bb86198af..b7c8d4bfa 100644 --- a/libcockatrice_network/libcockatrice/network/server/local/local_server_interface.cpp +++ b/libcockatrice_network/libcockatrice/network/server/local/local_server_interface.cpp @@ -1,8 +1,10 @@ #include "local_server_interface.h" +#include "../remote/server_protocolhandler.h" #include "local_server.h" -#include +class CommandContainer; +class Server_DatabaseInterface; LocalServerInterface::LocalServerInterface(LocalServer *_server, Server_DatabaseInterface *_databaseInterface) : Server_ProtocolHandler(_server, _databaseInterface, _server) diff --git a/libcockatrice_network/libcockatrice/network/server/local/local_server_interface.h b/libcockatrice_network/libcockatrice/network/server/local/local_server_interface.h index 44e3b3e53..8aadb40ca 100644 --- a/libcockatrice_network/libcockatrice/network/server/local/local_server_interface.h +++ b/libcockatrice_network/libcockatrice/network/server/local/local_server_interface.h @@ -8,8 +8,13 @@ #define LOCALSERVERINTERFACE_H #include <../remote/server_protocolhandler.h> +#include +#include class LocalServer; +class CommandContainer; +class ServerMessage; +class Server_DatabaseInterface; class LocalServerInterface : public Server_ProtocolHandler { diff --git a/libcockatrice_network/libcockatrice/network/server/remote/game/server_abstract_participant.cpp b/libcockatrice_network/libcockatrice/network/server/remote/game/server_abstract_participant.cpp index a6280ffa1..5b8d901bb 100644 --- a/libcockatrice_network/libcockatrice/network/server/remote/game/server_abstract_participant.cpp +++ b/libcockatrice_network/libcockatrice/network/server/remote/game/server_abstract_participant.cpp @@ -4,10 +4,16 @@ #include "../server_abstractuserinterface.h" #include "../server_database_interface.h" #include "../server_room.h" -#include "server_card.h" +#include "game/server_abstract_player.h" +#include "libcockatrice/protocol/pb/event_leave.pb.h" +#include "libcockatrice/protocol/pb/game_commands.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_playerproperties.pb.h" #include "server_game.h" -#include "server_player.h" +#include "server_response_containers.h" +#include "serverinfo_user_container.h" +#include +#include #include #include #include @@ -50,6 +56,7 @@ #include #include #include +#include Server_AbstractParticipant::Server_AbstractParticipant(Server_Game *_game, int _playerId, diff --git a/libcockatrice_network/libcockatrice/network/server/remote/game/server_abstract_participant.h b/libcockatrice_network/libcockatrice/network/server/remote/game/server_abstract_participant.h index c78ae78c1..195da9b7f 100644 --- a/libcockatrice_network/libcockatrice/network/server/remote/game/server_abstract_participant.h +++ b/libcockatrice_network/libcockatrice/network/server/remote/game/server_abstract_participant.h @@ -5,8 +5,8 @@ #include "server_arrowtarget.h" #include -#include #include +#include class Server_Game; class Server_AbstractUserInterface; @@ -17,7 +17,6 @@ class GameEventContainer; class GameEventStorage; class ResponseContainer; class GameCommand; - class Command_KickFromGame; class Command_LeaveGame; class Command_GameSay; diff --git a/libcockatrice_network/libcockatrice/network/server/remote/game/server_abstract_player.cpp b/libcockatrice_network/libcockatrice/network/server/remote/game/server_abstract_player.cpp index 6b4101a99..47c810d0d 100644 --- a/libcockatrice_network/libcockatrice/network/server/remote/game/server_abstract_player.cpp +++ b/libcockatrice_network/libcockatrice/network/server/remote/game/server_abstract_player.cpp @@ -1,14 +1,33 @@ #include "server_abstract_player.h" +#include "game/server_abstract_participant.h" +#include "game/server_arrowtarget.h" +#include "libcockatrice/protocol/pb/card_attributes.pb.h" +#include "libcockatrice/protocol/pb/color.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_arrow.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_card.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_cardcounter.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_playerproperties.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_zone.pb.h" +#include "libcockatrice/utility/card_ref.h" +#include "libcockatrice/utility/playmat_params.h" #include "server_arrow.h" #include "server_card.h" #include "server_cardzone.h" #include "server_game.h" #include "server_move_card_struct.h" +#include "server_response_containers.h" -#include -#include +#include +#include +#include +#include +#include +#include +#include #include +#include +#include #include #include #include @@ -50,8 +69,11 @@ #include #include #include -#include #include +#include +#include + +class Server_AbstractUserInterface; Server_AbstractPlayer::Server_AbstractPlayer(Server_Game *_game, int _playerId, diff --git a/libcockatrice_network/libcockatrice/network/server/remote/game/server_abstract_player.h b/libcockatrice_network/libcockatrice/network/server/remote/game/server_abstract_player.h index 4cc79c5fe..eff5034b4 100644 --- a/libcockatrice_network/libcockatrice/network/server/remote/game/server_abstract_player.h +++ b/libcockatrice_network/libcockatrice/network/server/remote/game/server_abstract_player.h @@ -1,25 +1,32 @@ #ifndef ABSTRACT_PLAYER_H #define ABSTRACT_PLAYER_H -#include "../serverinfo_user_container.h" +#include "libcockatrice/protocol/pb/response.pb.h" #include "server_abstract_participant.h" #include #include +#include class CardToMove; class DeckList; class Server_Arrow; class Server_Card; class Server_CardZone; -class Server_Counter; struct MoveCardStruct; +class GameEventStorage; +class ServerInfo_User; +class Server_AbstractUserInterface; +class Server_Game; +enum CardAttribute : int; +template class QList; class Server_AbstractPlayer : public Server_AbstractParticipant { Q_OBJECT private: class MoveCardCompareFunctor; + QMap arrows; void sendCreateTokenEvents(Server_CardZone *zone, Server_Card *card, int xCoord, int yCoord, GameEventStorage &ges); diff --git a/libcockatrice_network/libcockatrice/network/server/remote/game/server_arrow.cpp b/libcockatrice_network/libcockatrice/network/server/remote/game/server_arrow.cpp index 2ad38b977..b5ccff8fe 100644 --- a/libcockatrice_network/libcockatrice/network/server/remote/game/server_arrow.cpp +++ b/libcockatrice_network/libcockatrice/network/server/remote/game/server_arrow.cpp @@ -1,10 +1,16 @@ #include "server_arrow.h" +#include "game/server_abstract_player.h" +#include "game/server_arrowtarget.h" +#include "libcockatrice/protocol/pb/color.pb.h" #include "server_card.h" #include "server_cardzone.h" #include "server_player.h" +#include +#include #include +#include Server_Arrow::Server_Arrow(int _id, Server_Card *_startCard, diff --git a/libcockatrice_network/libcockatrice/network/server/remote/game/server_arrowtarget.h b/libcockatrice_network/libcockatrice/network/server/remote/game/server_arrowtarget.h index 5a080018d..c4da725c2 100644 --- a/libcockatrice_network/libcockatrice/network/server/remote/game/server_arrowtarget.h +++ b/libcockatrice_network/libcockatrice/network/server/remote/game/server_arrowtarget.h @@ -2,6 +2,7 @@ #define SERVER_ARROWTARGET_H #include +#include class Server_ArrowTarget : public QObject { diff --git a/libcockatrice_network/libcockatrice/network/server/remote/game/server_card.cpp b/libcockatrice_network/libcockatrice/network/server/remote/game/server_card.cpp index 8c7feadba..c79f13634 100644 --- a/libcockatrice_network/libcockatrice/network/server/remote/game/server_card.cpp +++ b/libcockatrice_network/libcockatrice/network/server/remote/game/server_card.cpp @@ -19,16 +19,22 @@ ***************************************************************************/ #include "server_card.h" +#include "game/server_abstract_player.h" +#include "libcockatrice/protocol/pb/card_attributes.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_cardcounter.pb.h" +#include "libcockatrice/utility/card_ref.h" #include "server_cardzone.h" -#include "server_player.h" +#include +#include #include +#include #include #include #include #include #include -#include +#include Server_Card::Server_Card(const CardRef &cardRef, int _id, int _coord_x, int _coord_y, Server_CardZone *_zone) : zone(_zone), id(_id), coord_x(_coord_x), coord_y(_coord_y), cardRef(cardRef), tapped(false), attacking(false), diff --git a/libcockatrice_network/libcockatrice/network/server/remote/game/server_card.h b/libcockatrice_network/libcockatrice/network/server/remote/game/server_card.h index a2698ad61..cffd9eb40 100644 --- a/libcockatrice_network/libcockatrice/network/server/remote/game/server_card.h +++ b/libcockatrice_network/libcockatrice/network/server/remote/game/server_card.h @@ -22,15 +22,18 @@ #include "server_arrowtarget.h" +#include #include #include -#include -#include +#include #include +#include class Server_CardZone; class Event_SetCardCounter; class Event_SetCardAttr; +class ServerInfo_Card; +enum CardAttribute : int; class Server_Card : public Server_ArrowTarget { diff --git a/libcockatrice_network/libcockatrice/network/server/remote/game/server_cardzone.cpp b/libcockatrice_network/libcockatrice/network/server/remote/game/server_cardzone.cpp index 1db4f9c4c..5f40aa480 100644 --- a/libcockatrice_network/libcockatrice/network/server/remote/game/server_cardzone.cpp +++ b/libcockatrice_network/libcockatrice/network/server/remote/game/server_cardzone.cpp @@ -19,13 +19,21 @@ ***************************************************************************/ #include "server_cardzone.h" +#include "libcockatrice/protocol/pb/serverinfo_zone.pb.h" #include "server_abstract_player.h" #include "server_card.h" #include +#include +#include +#include #include +#include +#include #include #include +#include +#include Server_CardZone::Server_CardZone(Server_AbstractPlayer *_player, const QString &_name, diff --git a/libcockatrice_network/libcockatrice/network/server/remote/game/server_cardzone.h b/libcockatrice_network/libcockatrice/network/server/remote/game/server_cardzone.h index 77fea54ca..9ed39a159 100644 --- a/libcockatrice_network/libcockatrice/network/server/remote/game/server_cardzone.h +++ b/libcockatrice_network/libcockatrice/network/server/remote/game/server_cardzone.h @@ -20,15 +20,16 @@ #ifndef SERVER_CARDZONE_H #define SERVER_CARDZONE_H +#include #include #include #include +#include #include class Server_Card; class Server_AbstractPlayer; class Server_AbstractParticipant; -class Server_Game; class GameEventStorage; class Server_CardZone diff --git a/libcockatrice_network/libcockatrice/network/server/remote/game/server_counter.cpp b/libcockatrice_network/libcockatrice/network/server/remote/game/server_counter.cpp index b18e11c2b..f3dcb0fb1 100644 --- a/libcockatrice_network/libcockatrice/network/server/remote/game/server_counter.cpp +++ b/libcockatrice_network/libcockatrice/network/server/remote/game/server_counter.cpp @@ -1,6 +1,9 @@ #include "server_counter.h" +#include "libcockatrice/protocol/pb/color.pb.h" + #include +#include Server_Counter::Server_Counter(int _id, const QString &_name, const color &_counterColor, int _radius, int _count) : id(_id), name(_name), counterColor(_counterColor), radius(_radius), count(_count) diff --git a/libcockatrice_network/libcockatrice/network/server/remote/game/server_game.cpp b/libcockatrice_network/libcockatrice/network/server/remote/game/server_game.cpp index 131ff1077..330d473b2 100644 --- a/libcockatrice_network/libcockatrice/network/server/remote/game/server_game.cpp +++ b/libcockatrice_network/libcockatrice/network/server/remote/game/server_game.cpp @@ -23,21 +23,44 @@ #include "../server_database_interface.h" #include "../server_protocolhandler.h" #include "../server_room.h" +#include "game/game_config.h" +#include "game/server_abstract_participant.h" +#include "game/server_arrowtarget.h" +#include "game/server_deck_validation_strategy.h" +#include "game/server_game_lifecycle_strategy.h" +#include "game/server_match_result_strategy.h" #include "libcockatrice/protocol/pb/command_move_card.pb.h" +#include "libcockatrice/protocol/pb/game_event.pb.h" +#include "libcockatrice/protocol/pb/game_event_container.pb.h" +#include "libcockatrice/protocol/pb/response.pb.h" +#include "libcockatrice/protocol/pb/server_message.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_game.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_gametype.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_playerproperties.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_replay.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_replay_match.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_user.pb.h" +#include "libcockatrice/protocol/pb/session_event.pb.h" #include "server_abstract_player.h" +#include "server_abstractuserinterface.h" #include "server_arrow.h" #include "server_card.h" #include "server_cardzone.h" #include "server_player.h" +#include "server_response_containers.h" #include "server_spectator.h" #include #include +#include +#include #include +#include +#include +#include #include #include -#include -#include +#include #include #include #include @@ -53,6 +76,9 @@ #include #include #include +#include +#include +#include Server_Game::Server_Game(const GameConfig &config, Server_Room *_room) : QObject(), room(_room), nextPlayerId(0), hostId(0), creatorInfo(new ServerInfo_User(config.creatorInfo)), diff --git a/libcockatrice_network/libcockatrice/network/server/remote/game/server_game.h b/libcockatrice_network/libcockatrice/network/server/remote/game/server_game.h index 1ed4fe4ca..c7f8d0929 100644 --- a/libcockatrice_network/libcockatrice/network/server/remote/game/server_game.h +++ b/libcockatrice_network/libcockatrice/network/server/remote/game/server_game.h @@ -21,21 +21,25 @@ #define SERVERGAME_H #include "../server_response_containers.h" -#include "game_config.h" -#include "server_deck_validation_strategy.h" -#include "server_game_lifecycle_strategy.h" -#include "server_match_result_strategy.h" +#include "libcockatrice/protocol/pb/game_event_context.pb.h" +// IWYU pragma: keep +// ServerInfo_Game is passed by value to the gameInfoChanged() signal, so the +// moc-generated code needs the complete type. #include +#include #include -#include #include +#include #include #include -#include +#include +#include +#include #include #include #include +#include class QTimer; class GameEventContainer; @@ -47,6 +51,17 @@ class ServerInfo_User; class ServerInfo_Game; class Server_AbstractUserInterface; class Event_GameStateChanged; +class Server_DeckValidationStrategy; +class Server_GameLifecycleStrategy; +class Server_MatchResultStrategy; +namespace google +{ +namespace protobuf +{ +class Message; +} // namespace protobuf +} // namespace google +struct GameConfig; class Server_Game : public QObject { diff --git a/libcockatrice_network/libcockatrice/network/server/remote/game/server_player.cpp b/libcockatrice_network/libcockatrice/network/server/remote/game/server_player.cpp index cafa33c07..a4c904c01 100644 --- a/libcockatrice_network/libcockatrice/network/server/remote/game/server_player.cpp +++ b/libcockatrice_network/libcockatrice/network/server/remote/game/server_player.cpp @@ -1,23 +1,34 @@ #include "server_player.h" #include "../server.h" -#include "../server_abstractuserinterface.h" #include "../server_database_interface.h" #include "../server_room.h" +#include "game/server_abstract_participant.h" +#include "game/server_abstract_player.h" +#include "libcockatrice/deck_list/tree/inner_deck_list_node.h" +#include "libcockatrice/protocol/pb/color.pb.h" +#include "libcockatrice/protocol/pb/move_card_to_zone.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_card.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_counter.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_playerproperties.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_zone.pb.h" +#include "libcockatrice/utility/card_ref.h" +#include "libcockatrice/utility/playmat_params.h" #include "server_card.h" #include "server_cardzone.h" #include "server_counter.h" #include "server_game.h" #include "server_move_card_struct.h" +#include "server_response_containers.h" -#include -#include -#include +#include +#include +#include +#include +#include +#include #include -#include -#include #include -#include #include #include #include @@ -43,13 +54,15 @@ #include #include #include -#include #include #include -#include #include #include #include +#include +#include + +class Server_AbstractUserInterface; Server_Player::Server_Player(Server_Game *_game, int _playerId, diff --git a/libcockatrice_network/libcockatrice/network/server/remote/game/server_player.h b/libcockatrice_network/libcockatrice/network/server/remote/game/server_player.h index c35428480..5d514a344 100644 --- a/libcockatrice_network/libcockatrice/network/server/remote/game/server_player.h +++ b/libcockatrice_network/libcockatrice/network/server/remote/game/server_player.h @@ -1,8 +1,19 @@ #ifndef PLAYER_H #define PLAYER_H +#include "libcockatrice/protocol/pb/response.pb.h" #include "server_abstract_player.h" +#include +#include +#include + +class GameEventStorage; +class ServerInfo_User; +class Server_AbstractUserInterface; +class Server_Counter; +class Server_Game; + class Server_Player : public Server_AbstractPlayer { Q_OBJECT diff --git a/libcockatrice_network/libcockatrice/network/server/remote/game/server_spectator.cpp b/libcockatrice_network/libcockatrice/network/server/remote/game/server_spectator.cpp index bc873e386..d1c369949 100644 --- a/libcockatrice_network/libcockatrice/network/server/remote/game/server_spectator.cpp +++ b/libcockatrice_network/libcockatrice/network/server/remote/game/server_spectator.cpp @@ -1,5 +1,11 @@ #include "server_spectator.h" +#include "game/server_abstract_participant.h" + +class ServerInfo_User; +class Server_AbstractUserInterface; +class Server_Game; + Server_Spectator::Server_Spectator(Server_Game *_game, int _playerId, const ServerInfo_User &_userInfo, diff --git a/libcockatrice_network/libcockatrice/network/server/remote/game/server_spectator.h b/libcockatrice_network/libcockatrice/network/server/remote/game/server_spectator.h index 4d3928a63..2a8995ec3 100644 --- a/libcockatrice_network/libcockatrice/network/server/remote/game/server_spectator.h +++ b/libcockatrice_network/libcockatrice/network/server/remote/game/server_spectator.h @@ -3,6 +3,12 @@ #include "server_abstract_participant.h" +#include + +class ServerInfo_User; +class Server_AbstractUserInterface; +class Server_Game; + class Server_Spectator : public Server_AbstractParticipant { Q_OBJECT diff --git a/libcockatrice_network/libcockatrice/network/server/remote/server.cpp b/libcockatrice_network/libcockatrice/network/server/remote/server.cpp index 7abccfca8..73b13e23e 100644 --- a/libcockatrice_network/libcockatrice/network/server/remote/server.cpp +++ b/libcockatrice_network/libcockatrice/network/server/remote/server.cpp @@ -19,16 +19,36 @@ ***************************************************************************/ #include "server.h" +#include "game/server_abstract_participant.h" #include "game/server_game.h" -#include "game/server_player.h" +#include "libcockatrice/protocol/pb/commands.pb.h" +#include "libcockatrice/protocol/pb/game_commands.pb.h" +#include "libcockatrice/protocol/pb/game_event_container.pb.h" +#include "libcockatrice/protocol/pb/response.pb.h" +#include "libcockatrice/protocol/pb/room_commands.pb.h" +#include "libcockatrice/protocol/pb/room_event.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_ban.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_game.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_room.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_user.pb.h" +#include "server_abstractuserinterface.h" #include "server_database_interface.h" #include "server_protocolhandler.h" #include "server_remoteuserinterface.h" +#include "server_response_containers.h" #include "server_room.h" +#include "serverinfo_user_container.h" -#include +#include #include +#include +#include +#include +#include +#include #include +#include +#include #include #include #include @@ -36,6 +56,10 @@ #include #include #include +#include +#include +#include +#include Server::Server(QObject *parent) : QObject(parent), nextLocalGameId(0), tcpUserCount(0), webSocketUserCount(0) { diff --git a/libcockatrice_network/libcockatrice/network/server/remote/server.h b/libcockatrice_network/libcockatrice/network/server/remote/server.h index 3d27f4210..99247bb67 100644 --- a/libcockatrice_network/libcockatrice/network/server/remote/server.h +++ b/libcockatrice_network/libcockatrice/network/server/remote/server.h @@ -3,30 +3,32 @@ #include "server_player_reference.h" +#include +#include #include #include +#include #include #include -#include -#include -#include +#include +#include +#include class Server_DatabaseInterface; -class Server_Game; class Server_Room; class Server_ProtocolHandler; class Server_AbstractUserInterface; -class GameReplay; class IslMessage; class SessionEvent; class RoomEvent; -class DeckList; class ServerInfo_Game; class ServerInfo_Room; class Response; class GameEventContainer; class CommandContainer; class Command_JoinGame; +class QThread; +class ServerInfo_User; enum AuthenticationResult { diff --git a/libcockatrice_network/libcockatrice/network/server/remote/server_abstractuserinterface.cpp b/libcockatrice_network/libcockatrice/network/server/remote/server_abstractuserinterface.cpp index 31fa13d81..25aa415fc 100644 --- a/libcockatrice_network/libcockatrice/network/server/remote/server_abstractuserinterface.cpp +++ b/libcockatrice_network/libcockatrice/network/server/remote/server_abstractuserinterface.cpp @@ -1,7 +1,13 @@ #include "server_abstractuserinterface.h" +#include "game/server_abstract_participant.h" #include "game/server_game.h" -#include "game/server_player.h" +#include "libcockatrice/protocol/pb/game_event_container.pb.h" +#include "libcockatrice/protocol/pb/response.pb.h" +#include "libcockatrice/protocol/pb/room_event.pb.h" +#include "libcockatrice/protocol/pb/server_message.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_user.pb.h" +#include "libcockatrice/protocol/pb/session_event.pb.h" #include "server.h" #include "server_player_reference.h" #include "server_response_containers.h" @@ -9,8 +15,13 @@ #include #include +#include +#include +#include #include -#include +#include +#include +#include void Server_AbstractUserInterface::sendProtocolItemByType(ServerMessage::MessageType type, const ::google::protobuf::Message &item) diff --git a/libcockatrice_network/libcockatrice/network/server/remote/server_abstractuserinterface.h b/libcockatrice_network/libcockatrice/network/server/remote/server_abstractuserinterface.h index 2da72c01d..a19475e34 100644 --- a/libcockatrice_network/libcockatrice/network/server/remote/server_abstractuserinterface.h +++ b/libcockatrice_network/libcockatrice/network/server/remote/server_abstractuserinterface.h @@ -5,6 +5,8 @@ #include #include +#include +#include #include #include @@ -12,9 +14,15 @@ class SessionEvent; class GameEventContainer; class RoomEvent; class ResponseContainer; - class Server; class Server_Game; +namespace google +{ +namespace protobuf +{ +class Message; +} // namespace protobuf +} // namespace google class Server_AbstractUserInterface : public ServerInfo_User_Container { diff --git a/libcockatrice_network/libcockatrice/network/server/remote/server_database_interface.h b/libcockatrice_network/libcockatrice/network/server/remote/server_database_interface.h index 1e4fc990b..e0be7990b 100644 --- a/libcockatrice_network/libcockatrice/network/server/remote/server_database_interface.h +++ b/libcockatrice_network/libcockatrice/network/server/remote/server_database_interface.h @@ -1,9 +1,22 @@ #ifndef SERVER_DATABASE_INTERFACE_H #define SERVER_DATABASE_INTERFACE_H +#include "libcockatrice/protocol/pb/serverinfo_user.pb.h" #include "server.h" +#include #include +#include +#include +#include +#include + +class DeckList; +class GameReplay; +class ServerInfo_Game; +class Server_ProtocolHandler; +template class QList; +template class QSet; class Server_DatabaseInterface : public QObject { diff --git a/libcockatrice_network/libcockatrice/network/server/remote/server_protocolhandler.cpp b/libcockatrice_network/libcockatrice/network/server/remote/server_protocolhandler.cpp index 8422d703d..fc5cfa148 100644 --- a/libcockatrice_network/libcockatrice/network/server/remote/server_protocolhandler.cpp +++ b/libcockatrice_network/libcockatrice/network/server/remote/server_protocolhandler.cpp @@ -1,20 +1,43 @@ #include "server_protocolhandler.h" #include "game/game_config.h" +#include "game/server_abstract_participant.h" #include "game/server_game.h" -#include "game/server_player.h" +#include "libcockatrice/protocol/pb/admin_commands.pb.h" +#include "libcockatrice/protocol/pb/developer_commands.pb.h" +#include "libcockatrice/protocol/pb/game_commands.pb.h" +#include "libcockatrice/protocol/pb/game_event_container.pb.h" +#include "libcockatrice/protocol/pb/moderator_commands.pb.h" +#include "libcockatrice/protocol/pb/room_commands.pb.h" +#include "libcockatrice/protocol/pb/room_event.pb.h" +#include "libcockatrice/protocol/pb/server_message.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_chat_message.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_game.pb.h" +#include "libcockatrice/protocol/pb/session_commands.pb.h" +#include "libcockatrice/protocol/pb/session_event.pb.h" #include "server_database_interface.h" +#include "server_response_containers.h" #include "server_room.h" +#include "serverinfo_user_container.h" +#include #include #include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include -#include +#include #include #include #include #include -#include #include #include #include @@ -28,6 +51,9 @@ #include #include #include +#include +#include +#include Server_ProtocolHandler::Server_ProtocolHandler(Server *_server, Server_DatabaseInterface *_databaseInterface, diff --git a/libcockatrice_network/libcockatrice/network/server/remote/server_protocolhandler.h b/libcockatrice_network/libcockatrice/network/server/remote/server_protocolhandler.h index 2c8efe50e..a12706757 100644 --- a/libcockatrice_network/libcockatrice/network/server/remote/server_protocolhandler.h +++ b/libcockatrice_network/libcockatrice/network/server/remote/server_protocolhandler.h @@ -4,34 +4,24 @@ #include "server.h" #include "server_abstractuserinterface.h" +#include +#include #include +#include #include -#include +#include -class Features; class Server_DatabaseInterface; -class Server_Player; -class ServerInfo_User; class Server_Room; -class QTimer; -class FeatureSet; - class ServerMessage; -class Response; -class SessionEvent; -class GameEventContainer; -class RoomEvent; class ResponseContainer; - class CommandContainer; class SessionCommand; class ModeratorCommand; class AdminCommand; class DeveloperCommand; - class Command_Ping; class Command_Login; -class Command_Register; class Command_Message; class Command_ListUsers; class Command_GetGamesOfUser; diff --git a/libcockatrice_network/libcockatrice/network/server/remote/server_remoteuserinterface.h b/libcockatrice_network/libcockatrice/network/server/remote/server_remoteuserinterface.h index d68656b9d..3bdf04220 100644 --- a/libcockatrice_network/libcockatrice/network/server/remote/server_remoteuserinterface.h +++ b/libcockatrice_network/libcockatrice/network/server/remote/server_remoteuserinterface.h @@ -3,6 +3,9 @@ #include "server_abstractuserinterface.h" +class Server; +class ServerInfo_User_Container; + class Server_RemoteUserInterface : public Server_AbstractUserInterface { public: diff --git a/libcockatrice_network/libcockatrice/network/server/remote/server_response_containers.cpp b/libcockatrice_network/libcockatrice/network/server/remote/server_response_containers.cpp index 22fb199fb..4c4f351c9 100644 --- a/libcockatrice_network/libcockatrice/network/server/remote/server_response_containers.cpp +++ b/libcockatrice_network/libcockatrice/network/server/remote/server_response_containers.cpp @@ -1,8 +1,13 @@ #include "server_response_containers.h" #include "game/server_game.h" +#include "libcockatrice/protocol/pb/game_event.pb.h" +#include "libcockatrice/protocol/pb/game_event_container.pb.h" +#include "libcockatrice/protocol/pb/game_event_context.pb.h" #include +#include +#include GameEventStorageItem::GameEventStorageItem(const ::google::protobuf::Message &_event, int _playerId, diff --git a/libcockatrice_network/libcockatrice/network/server/remote/server_response_containers.h b/libcockatrice_network/libcockatrice/network/server/remote/server_response_containers.h index 118b32d38..32b7a80a2 100644 --- a/libcockatrice_network/libcockatrice/network/server/remote/server_response_containers.h +++ b/libcockatrice_network/libcockatrice/network/server/remote/server_response_containers.h @@ -1,10 +1,14 @@ #ifndef SERVER_RESPONSE_CONTAINERS_H #define SERVER_RESPONSE_CONTAINERS_H +#include #include #include +#include #include +class GameEvent; + namespace google { namespace protobuf diff --git a/libcockatrice_network/libcockatrice/network/server/remote/server_room.cpp b/libcockatrice_network/libcockatrice/network/server/remote/server_room.cpp index 1f29e62fb..614de8d63 100644 --- a/libcockatrice_network/libcockatrice/network/server/remote/server_room.cpp +++ b/libcockatrice_network/libcockatrice/network/server/remote/server_room.cpp @@ -1,11 +1,26 @@ #include "server_room.h" #include "game/server_game.h" +#include "libcockatrice/protocol/pb/response.pb.h" +#include "libcockatrice/protocol/pb/room_event.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_game.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_gametype.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_user.pb.h" +#include "server.h" +#include "server_abstractuserinterface.h" #include "server_protocolhandler.h" +#include "server_response_containers.h" +#include "serverinfo_user_container.h" #include -#include +#include +#include +#include +#include +#include #include +#include +#include #include #include #include @@ -16,6 +31,10 @@ #include #include #include +#include +#include +#include +#include Server_Room::Server_Room(int _id, int _chatHistorySize, diff --git a/libcockatrice_network/libcockatrice/network/server/remote/server_room.h b/libcockatrice_network/libcockatrice/network/server/remote/server_room.h index 3d9988f20..5933894d5 100644 --- a/libcockatrice_network/libcockatrice/network/server/remote/server_room.h +++ b/libcockatrice_network/libcockatrice/network/server/remote/server_room.h @@ -1,16 +1,16 @@ #ifndef SERVER_ROOM_H #define SERVER_ROOM_H -#include "serverinfo_user_container.h" - +#include #include -#include #include #include +#include +#include #include #include +#include -class Server_DatabaseInterface; class Server_ProtocolHandler; class RoomEvent; class ServerInfo_User; @@ -18,10 +18,17 @@ class ServerInfo_Room; class ServerInfo_Game; class Server_Game; class Server; - class Command_JoinGame; class ResponseContainer; class Server_AbstractUserInterface; +class ServerInfo_User_Container; +namespace google +{ +namespace protobuf +{ +class Message; +} // namespace protobuf +} // namespace google class Server_Room : public QObject { diff --git a/libcockatrice_protocol/libcockatrice/protocol/debug_pb_message.cpp b/libcockatrice_protocol/libcockatrice/protocol/debug_pb_message.cpp index 4d4889323..f892c3f15 100644 --- a/libcockatrice_protocol/libcockatrice/protocol/debug_pb_message.cpp +++ b/libcockatrice_protocol/libcockatrice/protocol/debug_pb_message.cpp @@ -1,11 +1,13 @@ #include "debug_pb_message.h" -#include #include #include #include +#include #include #include +#include +#include // FastFieldValuePrinter is added in protobuf 3.4, going out of our way to add the old FieldValuePrinter is not worth it #if GOOGLE_PROTOBUF_VERSION > 3004000 diff --git a/libcockatrice_protocol/libcockatrice/protocol/featureset.cpp b/libcockatrice_protocol/libcockatrice/protocol/featureset.cpp index 3e687ef56..0f8fd4210 100644 --- a/libcockatrice_protocol/libcockatrice/protocol/featureset.cpp +++ b/libcockatrice_protocol/libcockatrice/protocol/featureset.cpp @@ -1,6 +1,7 @@ #include "featureset.h" #include +#include FeatureSet::FeatureSet() { diff --git a/libcockatrice_protocol/libcockatrice/protocol/get_pb_extension.cpp b/libcockatrice_protocol/libcockatrice/protocol/get_pb_extension.cpp index a693ea5a7..b9d2f18d0 100644 --- a/libcockatrice_protocol/libcockatrice/protocol/get_pb_extension.cpp +++ b/libcockatrice_protocol/libcockatrice/protocol/get_pb_extension.cpp @@ -2,6 +2,7 @@ #include #include +#include int getPbExtension(const ::google::protobuf::Message &message) { diff --git a/libcockatrice_protocol/libcockatrice/protocol/pending_command.cpp b/libcockatrice_protocol/libcockatrice/protocol/pending_command.cpp index 62d35313e..4a23fb6ef 100644 --- a/libcockatrice_protocol/libcockatrice/protocol/pending_command.cpp +++ b/libcockatrice_protocol/libcockatrice/protocol/pending_command.cpp @@ -1,5 +1,8 @@ #include "pending_command.h" +class CommandContainer; +class Response; + PendingCommand::PendingCommand(const CommandContainer &_commandContainer, QVariant _extraData) : commandContainer(_commandContainer), extraData(_extraData), ticks(0) { diff --git a/libcockatrice_protocol/libcockatrice/protocol/pending_command.h b/libcockatrice_protocol/libcockatrice/protocol/pending_command.h index b8f861d08..9ed8a863c 100644 --- a/libcockatrice_protocol/libcockatrice/protocol/pending_command.h +++ b/libcockatrice_protocol/libcockatrice/protocol/pending_command.h @@ -8,9 +8,13 @@ #define PENDING_COMMAND_H #include +#include #include +#include #include -#include +#include + +class Response; class PendingCommand : public QObject { diff --git a/libcockatrice_rng/libcockatrice/rng/rng_abstract.cpp b/libcockatrice_rng/libcockatrice/rng/rng_abstract.cpp index 82404d351..34a778ca9 100644 --- a/libcockatrice_rng/libcockatrice/rng/rng_abstract.cpp +++ b/libcockatrice_rng/libcockatrice/rng/rng_abstract.cpp @@ -1,6 +1,8 @@ #include "rng_abstract.h" #include +#include +#include QVector RNG_Abstract::makeNumbersVector(int n, int min, int max) { diff --git a/libcockatrice_rng/libcockatrice/rng/rng_abstract.h b/libcockatrice_rng/libcockatrice/rng/rng_abstract.h index 903e6ef1a..49fb89612 100644 --- a/libcockatrice_rng/libcockatrice/rng/rng_abstract.h +++ b/libcockatrice_rng/libcockatrice/rng/rng_abstract.h @@ -3,6 +3,7 @@ #include #include +#include class RNG_Abstract : public QObject { diff --git a/libcockatrice_rng/libcockatrice/rng/rng_sfmt.cpp b/libcockatrice_rng/libcockatrice/rng/rng_sfmt.cpp index 4c578b4e4..13e6fe680 100644 --- a/libcockatrice_rng/libcockatrice/rng/rng_sfmt.cpp +++ b/libcockatrice_rng/libcockatrice/rng/rng_sfmt.cpp @@ -1,8 +1,13 @@ #include "rng_sfmt.h" -#include -#include +#include "libcockatrice/rng/rng_abstract.h" +#include "libcockatrice/rng/sfmt/SFMT.h" + +#include #include +#include + +class QObject; // This is from gcc sources, namely from fixincludes/inclhack.def // On C++11 systems, could be included instead. diff --git a/libcockatrice_rng/libcockatrice/rng/rng_sfmt.h b/libcockatrice_rng/libcockatrice/rng/rng_sfmt.h index a180dad99..e178812ab 100644 --- a/libcockatrice_rng/libcockatrice/rng/rng_sfmt.h +++ b/libcockatrice_rng/libcockatrice/rng/rng_sfmt.h @@ -5,7 +5,10 @@ #include "sfmt/SFMT.h" #include -#include +#include +#include + +class QObject; /** * This class encapsulates a state of the art PRNG and can be used diff --git a/libcockatrice_settings/libcockatrice/settings/appearance_settings.cpp b/libcockatrice_settings/libcockatrice/settings/appearance_settings.cpp index 839e33be4..14969dae6 100644 --- a/libcockatrice_settings/libcockatrice/settings/appearance_settings.cpp +++ b/libcockatrice_settings/libcockatrice/settings/appearance_settings.cpp @@ -1,5 +1,11 @@ #include "appearance_settings.h" +#include "libcockatrice/settings/settings_manager.h" + +#include + +class QObject; + AppearanceSettings::AppearanceSettings(const QString &settingPath, QObject *parent) : SettingsManager(settingPath + "appearance.ini", "appearance", QString(), parent) { diff --git a/libcockatrice_settings/libcockatrice/settings/appearance_settings.h b/libcockatrice_settings/libcockatrice/settings/appearance_settings.h index a4504798e..9d15caddd 100644 --- a/libcockatrice_settings/libcockatrice/settings/appearance_settings.h +++ b/libcockatrice_settings/libcockatrice/settings/appearance_settings.h @@ -9,6 +9,11 @@ #include "settings_manager.h" +#include +#include + +class QObject; + class AppearanceSettings : public SettingsManager { Q_OBJECT diff --git a/libcockatrice_settings/libcockatrice/settings/cache_storage_settings.cpp b/libcockatrice_settings/libcockatrice/settings/cache_storage_settings.cpp index c800cc024..aaea87791 100644 --- a/libcockatrice_settings/libcockatrice/settings/cache_storage_settings.cpp +++ b/libcockatrice_settings/libcockatrice/settings/cache_storage_settings.cpp @@ -1,5 +1,11 @@ #include "cache_storage_settings.h" +#include "libcockatrice/settings/settings_manager.h" + +#include + +class QObject; + CacheStorageSettings::CacheStorageSettings(const QString &settingPath, QObject *parent) : SettingsManager(settingPath + "cache_storage.ini", "cache_storage", QString(), parent) { diff --git a/libcockatrice_settings/libcockatrice/settings/cache_storage_settings.h b/libcockatrice_settings/libcockatrice/settings/cache_storage_settings.h index 4a4e73461..a4c8a197d 100644 --- a/libcockatrice_settings/libcockatrice/settings/cache_storage_settings.h +++ b/libcockatrice_settings/libcockatrice/settings/cache_storage_settings.h @@ -3,7 +3,11 @@ #include "settings_manager.h" +#include #include +#include + +class QObject; // In MB (Increments of 64) #define PIXMAPCACHE_SIZE_DEFAULT 2048 diff --git a/libcockatrice_settings/libcockatrice/settings/card_database_settings.cpp b/libcockatrice_settings/libcockatrice/settings/card_database_settings.cpp index b55c97909..7d41e5165 100644 --- a/libcockatrice_settings/libcockatrice/settings/card_database_settings.cpp +++ b/libcockatrice_settings/libcockatrice/settings/card_database_settings.cpp @@ -1,6 +1,16 @@ #include "card_database_settings.h" +#include "libcockatrice/interfaces/interface_card_set_priority_controller.h" +#include "libcockatrice/settings/settings_manager.h" + +#include #include +#include +#include +#include +#include + +class QObject; CardDatabaseSettings::CardDatabaseSettings(const QString &settingPath, QObject *parent) : SettingsManager(settingPath + "cardDatabase.ini", QString(), QString(), parent) diff --git a/libcockatrice_settings/libcockatrice/settings/card_database_settings.h b/libcockatrice_settings/libcockatrice/settings/card_database_settings.h index 4553f197f..07a5788b9 100644 --- a/libcockatrice_settings/libcockatrice/settings/card_database_settings.h +++ b/libcockatrice_settings/libcockatrice/settings/card_database_settings.h @@ -12,7 +12,12 @@ #include #include +#include +#include #include +#include + +class QObject; class CardDatabaseSettings : public SettingsManager, public ICardSetPriorityController { diff --git a/libcockatrice_settings/libcockatrice/settings/card_override_settings.cpp b/libcockatrice_settings/libcockatrice/settings/card_override_settings.cpp index a61a4693b..5a853a927 100644 --- a/libcockatrice_settings/libcockatrice/settings/card_override_settings.cpp +++ b/libcockatrice_settings/libcockatrice/settings/card_override_settings.cpp @@ -1,5 +1,12 @@ #include "card_override_settings.h" +#include "libcockatrice/settings/settings_manager.h" +#include "libcockatrice/utility/card_ref.h" + +#include + +class QObject; + CardOverrideSettings::CardOverrideSettings(const QString &settingPath, QObject *parent) : SettingsManager(settingPath + "cardPreferenceOverrides.ini", "cards", QString(), parent) { diff --git a/libcockatrice_settings/libcockatrice/settings/card_override_settings.h b/libcockatrice_settings/libcockatrice/settings/card_override_settings.h index cd515d4da..a9e8b2d69 100644 --- a/libcockatrice_settings/libcockatrice/settings/card_override_settings.h +++ b/libcockatrice_settings/libcockatrice/settings/card_override_settings.h @@ -9,8 +9,11 @@ #include "settings_manager.h" -#include -#include +#include +#include + +class QObject; +struct CardRef; class CardOverrideSettings : public SettingsManager { diff --git a/libcockatrice_settings/libcockatrice/settings/cards_display_settings.cpp b/libcockatrice_settings/libcockatrice/settings/cards_display_settings.cpp index 3af607198..1addef70f 100644 --- a/libcockatrice_settings/libcockatrice/settings/cards_display_settings.cpp +++ b/libcockatrice_settings/libcockatrice/settings/cards_display_settings.cpp @@ -1,5 +1,13 @@ #include "cards_display_settings.h" +#include "libcockatrice/card/card_localization.h" +#include "libcockatrice/settings/settings_manager.h" + +#include +#include + +class QObject; + CardsDisplaySettings::CardsDisplaySettings(const QString &settingPath, QObject *parent) : SettingsManager(settingPath + "cards_display.ini", "cards", QString(), parent) { diff --git a/libcockatrice_settings/libcockatrice/settings/cards_display_settings.h b/libcockatrice_settings/libcockatrice/settings/cards_display_settings.h index 77924d14c..4e6b92d27 100644 --- a/libcockatrice_settings/libcockatrice/settings/cards_display_settings.h +++ b/libcockatrice_settings/libcockatrice/settings/cards_display_settings.h @@ -3,8 +3,11 @@ #include "settings_manager.h" -#include +#include #include +#include + +class QObject; class CardsDisplaySettings : public SettingsManager, public ICardsDisplaySettingsProvider { diff --git a/libcockatrice_settings/libcockatrice/settings/chat_settings.cpp b/libcockatrice_settings/libcockatrice/settings/chat_settings.cpp index 0ee29b4f5..d9ae0ddac 100644 --- a/libcockatrice_settings/libcockatrice/settings/chat_settings.cpp +++ b/libcockatrice_settings/libcockatrice/settings/chat_settings.cpp @@ -1,5 +1,11 @@ #include "chat_settings.h" +#include "libcockatrice/settings/settings_manager.h" + +#include + +class QObject; + ChatSettings::ChatSettings(const QString &settingPath, QObject *parent) : SettingsManager(settingPath + "chat.ini", "chat", QString(), parent) { diff --git a/libcockatrice_settings/libcockatrice/settings/chat_settings.h b/libcockatrice_settings/libcockatrice/settings/chat_settings.h index d928b23b7..e00da4527 100644 --- a/libcockatrice_settings/libcockatrice/settings/chat_settings.h +++ b/libcockatrice_settings/libcockatrice/settings/chat_settings.h @@ -3,7 +3,11 @@ #include "settings_manager.h" +#include #include +#include + +class QObject; class ChatSettings : public SettingsManager, public IChatSettingsProvider { diff --git a/libcockatrice_settings/libcockatrice/settings/commander_bracket_settings.cpp b/libcockatrice_settings/libcockatrice/settings/commander_bracket_settings.cpp index 0c5f5521e..eb692fe81 100644 --- a/libcockatrice_settings/libcockatrice/settings/commander_bracket_settings.cpp +++ b/libcockatrice_settings/libcockatrice/settings/commander_bracket_settings.cpp @@ -1,6 +1,16 @@ #include "commander_bracket_settings.h" +#include "libcockatrice/settings/settings_manager.h" + +#include +#include #include +#include +#include +#include +#include + +class QObject; QVariantList CommanderBracketSettings::defaultDefinitions() { diff --git a/libcockatrice_settings/libcockatrice/settings/commander_bracket_settings.h b/libcockatrice_settings/libcockatrice/settings/commander_bracket_settings.h index 5a29f5dc7..ad012fc30 100644 --- a/libcockatrice_settings/libcockatrice/settings/commander_bracket_settings.h +++ b/libcockatrice_settings/libcockatrice/settings/commander_bracket_settings.h @@ -4,9 +4,11 @@ #include "settings_manager.h" #include -#include #include #include +#include + +class QObject; struct CommanderBracketDefinition { diff --git a/libcockatrice_settings/libcockatrice/settings/debug_settings.cpp b/libcockatrice_settings/libcockatrice/settings/debug_settings.cpp index 5bf6eca30..c36e7187e 100644 --- a/libcockatrice_settings/libcockatrice/settings/debug_settings.cpp +++ b/libcockatrice_settings/libcockatrice/settings/debug_settings.cpp @@ -1,6 +1,11 @@ #include "debug_settings.h" -#include +#include "libcockatrice/settings/settings_manager.h" + +#include +#include + +class QObject; DebugSettings::DebugSettings(const QString &settingPath, QObject *parent) : SettingsManager(settingPath + "debug.ini", "debug", QString(), parent) diff --git a/libcockatrice_settings/libcockatrice/settings/debug_settings.h b/libcockatrice_settings/libcockatrice/settings/debug_settings.h index acb5cf313..9521a7738 100644 --- a/libcockatrice_settings/libcockatrice/settings/debug_settings.h +++ b/libcockatrice_settings/libcockatrice/settings/debug_settings.h @@ -8,6 +8,11 @@ #define DEBUG_SETTINGS_H #include "settings_manager.h" +#include +#include + +class QObject; + class DebugSettings : public SettingsManager { Q_OBJECT diff --git a/libcockatrice_settings/libcockatrice/settings/deck_editor_settings.cpp b/libcockatrice_settings/libcockatrice/settings/deck_editor_settings.cpp index 44cdcd86f..ee570ed67 100644 --- a/libcockatrice_settings/libcockatrice/settings/deck_editor_settings.cpp +++ b/libcockatrice_settings/libcockatrice/settings/deck_editor_settings.cpp @@ -1,5 +1,11 @@ #include "deck_editor_settings.h" +#include "libcockatrice/settings/settings_manager.h" + +#include + +class QObject; + DeckEditorSettings::DeckEditorSettings(const QString &settingPath, QObject *parent) : SettingsManager(settingPath + "deck_editor.ini", "deckeditor", QString(), parent) { diff --git a/libcockatrice_settings/libcockatrice/settings/deck_editor_settings.h b/libcockatrice_settings/libcockatrice/settings/deck_editor_settings.h index 0c87a270a..aa024910d 100644 --- a/libcockatrice_settings/libcockatrice/settings/deck_editor_settings.h +++ b/libcockatrice_settings/libcockatrice/settings/deck_editor_settings.h @@ -3,7 +3,11 @@ #include "settings_manager.h" +#include #include +#include + +class QObject; enum commanderSpellbookIntegrationEnabledIndex { diff --git a/libcockatrice_settings/libcockatrice/settings/download_settings.cpp b/libcockatrice_settings/libcockatrice/settings/download_settings.cpp index 6e22a84f4..84a6a7509 100644 --- a/libcockatrice_settings/libcockatrice/settings/download_settings.cpp +++ b/libcockatrice_settings/libcockatrice/settings/download_settings.cpp @@ -2,6 +2,14 @@ #include "settings_manager.h" +#include +#include +#include +#include +#include + +class QObject; + const QStringList DownloadSettings::DEFAULT_DOWNLOAD_URLS = { "https://cards.scryfall.io/large/!prop:side!/!set:uuid_substr_0_1!/!set:uuid_substr_1_1!/!set:uuid!.jpg", "https://api.scryfall.com/cards/!set:uuid!?format=image&face=!prop:side!&lang=!sflang!", diff --git a/libcockatrice_settings/libcockatrice/settings/download_settings.h b/libcockatrice_settings/libcockatrice/settings/download_settings.h index 7eca77df6..f7cf482e1 100644 --- a/libcockatrice_settings/libcockatrice/settings/download_settings.h +++ b/libcockatrice_settings/libcockatrice/settings/download_settings.h @@ -10,6 +10,11 @@ #include "settings_manager.h" #include +#include +#include +#include + +class QObject; class DownloadSettings : public SettingsManager { diff --git a/libcockatrice_settings/libcockatrice/settings/game_filters_settings.cpp b/libcockatrice_settings/libcockatrice/settings/game_filters_settings.cpp index 0edba44dd..79d1bc9e2 100644 --- a/libcockatrice_settings/libcockatrice/settings/game_filters_settings.cpp +++ b/libcockatrice_settings/libcockatrice/settings/game_filters_settings.cpp @@ -1,7 +1,15 @@ #include "game_filters_settings.h" +#include "libcockatrice/settings/settings_manager.h" + +#include #include +#include +#include #include +#include + +class QObject; GameFiltersSettings::GameFiltersSettings(const QString &settingPath, QObject *parent) : SettingsManager(settingPath + "gamefilters.ini", "filter_games", QString(), parent) diff --git a/libcockatrice_settings/libcockatrice/settings/game_filters_settings.h b/libcockatrice_settings/libcockatrice/settings/game_filters_settings.h index 11480d483..ec5e3fdc2 100644 --- a/libcockatrice_settings/libcockatrice/settings/game_filters_settings.h +++ b/libcockatrice_settings/libcockatrice/settings/game_filters_settings.h @@ -10,6 +10,13 @@ #include "settings_manager.h" +#include +#include +#include +#include + +class QObject; + class GameFiltersSettings : public SettingsManager { Q_OBJECT diff --git a/libcockatrice_settings/libcockatrice/settings/game_settings.cpp b/libcockatrice_settings/libcockatrice/settings/game_settings.cpp index dfd67c98a..c8c6463e3 100644 --- a/libcockatrice_settings/libcockatrice/settings/game_settings.cpp +++ b/libcockatrice_settings/libcockatrice/settings/game_settings.cpp @@ -1,5 +1,11 @@ #include "game_settings.h" +#include "libcockatrice/settings/settings_manager.h" + +#include + +class QObject; + GameSettings::GameSettings(const QString &settingPath, QObject *parent) : SettingsManager(settingPath + "game.ini", QString(), QString(), parent) { diff --git a/libcockatrice_settings/libcockatrice/settings/game_settings.h b/libcockatrice_settings/libcockatrice/settings/game_settings.h index e0a484bac..3e64234fc 100644 --- a/libcockatrice_settings/libcockatrice/settings/game_settings.h +++ b/libcockatrice_settings/libcockatrice/settings/game_settings.h @@ -3,7 +3,11 @@ #include "settings_manager.h" +#include #include +#include + +class QObject; class GameSettings : public SettingsManager, public IGameSettingsProvider { diff --git a/libcockatrice_settings/libcockatrice/settings/interface_settings.cpp b/libcockatrice_settings/libcockatrice/settings/interface_settings.cpp index b5a172e85..256d9eb26 100644 --- a/libcockatrice_settings/libcockatrice/settings/interface_settings.cpp +++ b/libcockatrice_settings/libcockatrice/settings/interface_settings.cpp @@ -1,5 +1,16 @@ #include "interface_settings.h" +#include "libcockatrice/settings/settings_manager.h" +#include "libcockatrice/utility/card_ref.h" +#include "libcockatrice/utility/playmat_params.h" + +#include +#include +#include +#include + +class QObject; + namespace { const QChar PLAYMAT_FIELD_SEP = QChar(0x1F); ///< Separator between PlaymatInfo fields. diff --git a/libcockatrice_settings/libcockatrice/settings/interface_settings.h b/libcockatrice_settings/libcockatrice/settings/interface_settings.h index 6b226f307..41bb6ee17 100644 --- a/libcockatrice_settings/libcockatrice/settings/interface_settings.h +++ b/libcockatrice_settings/libcockatrice/settings/interface_settings.h @@ -3,7 +3,15 @@ #include "settings_manager.h" +#include +#include +#include #include +#include + +class QObject; +struct PlaymatInfo; +template class QList; class InterfaceSettings : public SettingsManager, public IInterfaceSettingsProvider { diff --git a/libcockatrice_settings/libcockatrice/settings/layouts_settings.cpp b/libcockatrice_settings/libcockatrice/settings/layouts_settings.cpp index e914dc2d8..aba620026 100644 --- a/libcockatrice_settings/libcockatrice/settings/layouts_settings.cpp +++ b/libcockatrice_settings/libcockatrice/settings/layouts_settings.cpp @@ -1,5 +1,11 @@ #include "layouts_settings.h" +#include "libcockatrice/settings/settings_manager.h" + +#include + +class QObject; + const static QString STATE_PROP = "state"; const static QString GEOMETRY_PROP = "geometry"; const static QString SIZE_PROP = "widgetSize"; diff --git a/libcockatrice_settings/libcockatrice/settings/layouts_settings.h b/libcockatrice_settings/libcockatrice/settings/layouts_settings.h index d5f26b61b..91b0a2ea6 100644 --- a/libcockatrice_settings/libcockatrice/settings/layouts_settings.h +++ b/libcockatrice_settings/libcockatrice/settings/layouts_settings.h @@ -9,7 +9,11 @@ #include "settings_manager.h" -#include +#include +#include +#include + +class QObject; class LayoutsSettings : public SettingsManager { diff --git a/libcockatrice_settings/libcockatrice/settings/message_settings.cpp b/libcockatrice_settings/libcockatrice/settings/message_settings.cpp index 50da39df6..ca77246ef 100644 --- a/libcockatrice_settings/libcockatrice/settings/message_settings.cpp +++ b/libcockatrice_settings/libcockatrice/settings/message_settings.cpp @@ -1,5 +1,11 @@ #include "message_settings.h" +#include "libcockatrice/settings/settings_manager.h" + +#include + +class QObject; + MessageSettings::MessageSettings(const QString &settingPath, QObject *parent) : SettingsManager(settingPath + "messages.ini", "messages", QString(), parent) { diff --git a/libcockatrice_settings/libcockatrice/settings/message_settings.h b/libcockatrice_settings/libcockatrice/settings/message_settings.h index 8276aa39d..83513d562 100644 --- a/libcockatrice_settings/libcockatrice/settings/message_settings.h +++ b/libcockatrice_settings/libcockatrice/settings/message_settings.h @@ -9,6 +9,11 @@ #include "settings_manager.h" +#include +#include + +class QObject; + class MessageSettings : public SettingsManager { Q_OBJECT diff --git a/libcockatrice_settings/libcockatrice/settings/network_settings.cpp b/libcockatrice_settings/libcockatrice/settings/network_settings.cpp index 2d34d47ad..6d0fa9d1c 100644 --- a/libcockatrice_settings/libcockatrice/settings/network_settings.cpp +++ b/libcockatrice_settings/libcockatrice/settings/network_settings.cpp @@ -1,5 +1,11 @@ #include "network_settings.h" +#include "libcockatrice/settings/settings_manager.h" + +#include + +class QObject; + NetworkSettings::NetworkSettings(const QString &settingPath, QObject *parent) : SettingsManager(settingPath + "network.ini", "network", QString(), parent) { diff --git a/libcockatrice_settings/libcockatrice/settings/network_settings.h b/libcockatrice_settings/libcockatrice/settings/network_settings.h index 446bb51d3..4367f9cb3 100644 --- a/libcockatrice_settings/libcockatrice/settings/network_settings.h +++ b/libcockatrice_settings/libcockatrice/settings/network_settings.h @@ -9,6 +9,11 @@ #include "settings_manager.h" +#include +#include + +class QObject; + class NetworkSettings : public SettingsManager { Q_OBJECT diff --git a/libcockatrice_settings/libcockatrice/settings/paths_settings.cpp b/libcockatrice_settings/libcockatrice/settings/paths_settings.cpp index 67032e38f..5f5725395 100644 --- a/libcockatrice_settings/libcockatrice/settings/paths_settings.cpp +++ b/libcockatrice_settings/libcockatrice/settings/paths_settings.cpp @@ -1,7 +1,10 @@ #include "paths_settings.h" -#include -#include +#include "libcockatrice/settings/settings_manager.h" + +#include + +class QObject; PathsSettings::PathsSettings(const QString &settingPath, QObject *parent) : SettingsManager(settingPath + "paths.ini", "paths", QString(), parent) diff --git a/libcockatrice_settings/libcockatrice/settings/paths_settings.h b/libcockatrice_settings/libcockatrice/settings/paths_settings.h index ab1ea05c8..399337bbb 100644 --- a/libcockatrice_settings/libcockatrice/settings/paths_settings.h +++ b/libcockatrice_settings/libcockatrice/settings/paths_settings.h @@ -3,7 +3,11 @@ #include "settings_manager.h" +#include #include +#include + +class QObject; class PathsSettings : public SettingsManager, public IPathsSettingsProvider { diff --git a/libcockatrice_settings/libcockatrice/settings/personal_settings.cpp b/libcockatrice_settings/libcockatrice/settings/personal_settings.cpp index d1cb74d09..682144485 100644 --- a/libcockatrice_settings/libcockatrice/settings/personal_settings.cpp +++ b/libcockatrice_settings/libcockatrice/settings/personal_settings.cpp @@ -1,5 +1,12 @@ #include "personal_settings.h" +#include "libcockatrice/settings/settings_manager.h" + +#include +#include + +class QObject; + PersonalSettings::PersonalSettings(const QString &settingPath, QObject *parent) : SettingsManager(settingPath + "personal.ini", "personal", QString(), parent) { diff --git a/libcockatrice_settings/libcockatrice/settings/personal_settings.h b/libcockatrice_settings/libcockatrice/settings/personal_settings.h index 04eab2a8a..0819af41b 100644 --- a/libcockatrice_settings/libcockatrice/settings/personal_settings.h +++ b/libcockatrice_settings/libcockatrice/settings/personal_settings.h @@ -3,9 +3,12 @@ #include "settings_manager.h" -#include -#include +#include #include +#include + +class QObject; +template class QList; class PersonalSettings : public SettingsManager, public IPersonalSettingsProvider { diff --git a/libcockatrice_settings/libcockatrice/settings/recents_settings.cpp b/libcockatrice_settings/libcockatrice/settings/recents_settings.cpp index 5f16af179..4f2c06c88 100644 --- a/libcockatrice_settings/libcockatrice/settings/recents_settings.cpp +++ b/libcockatrice_settings/libcockatrice/settings/recents_settings.cpp @@ -1,5 +1,12 @@ #include "recents_settings.h" +#include "libcockatrice/settings/settings_manager.h" + +#include +#include + +class QObject; + #define MAX_RECENT_DECK_COUNT 10 RecentsSettings::RecentsSettings(const QString &settingPath, QObject *parent) diff --git a/libcockatrice_settings/libcockatrice/settings/recents_settings.h b/libcockatrice_settings/libcockatrice/settings/recents_settings.h index 01b2a37bc..dc5853908 100644 --- a/libcockatrice_settings/libcockatrice/settings/recents_settings.h +++ b/libcockatrice_settings/libcockatrice/settings/recents_settings.h @@ -9,6 +9,12 @@ #include "settings_manager.h" +#include +#include +#include + +class QObject; + class RecentsSettings : public SettingsManager { Q_OBJECT diff --git a/libcockatrice_settings/libcockatrice/settings/servers_settings.cpp b/libcockatrice_settings/libcockatrice/settings/servers_settings.cpp index 436e260c5..c5c4b2592 100644 --- a/libcockatrice_settings/libcockatrice/settings/servers_settings.cpp +++ b/libcockatrice_settings/libcockatrice/settings/servers_settings.cpp @@ -1,8 +1,17 @@ #include "servers_settings.h" +#include "libcockatrice/settings/settings_manager.h" + #include +#include +#include +#include +#include +#include #include +class QObject; + ServersSettings::ServersSettings(const QString &settingPath, QObject *parent) : SettingsManager(settingPath + "servers.ini", "server", QString(), parent) { diff --git a/libcockatrice_settings/libcockatrice/settings/servers_settings.h b/libcockatrice_settings/libcockatrice/settings/servers_settings.h index 93651c813..40648baa9 100644 --- a/libcockatrice_settings/libcockatrice/settings/servers_settings.h +++ b/libcockatrice_settings/libcockatrice/settings/servers_settings.h @@ -10,7 +10,12 @@ #include "settings_manager.h" #include -#include +#include +#include +#include + +class QObject; + #define SERVERSETTINGS_DEFAULT_HOST "server.cockatrice.us" #define SERVERSETTINGS_DEFAULT_PORT "4748" diff --git a/libcockatrice_settings/libcockatrice/settings/settings_manager.h b/libcockatrice_settings/libcockatrice/settings/settings_manager.h index 3d3c95d3e..8d3110106 100644 --- a/libcockatrice_settings/libcockatrice/settings/settings_manager.h +++ b/libcockatrice_settings/libcockatrice/settings/settings_manager.h @@ -7,9 +7,12 @@ #ifndef SETTINGSMANAGER_H #define SETTINGSMANAGER_H +#include #include -#include +#include #include +#include +#include class SettingsManager : public QObject { diff --git a/libcockatrice_settings/libcockatrice/settings/settings_migration.cpp b/libcockatrice_settings/libcockatrice/settings/settings_migration.cpp index c22bd3c02..d8b637210 100644 --- a/libcockatrice_settings/libcockatrice/settings/settings_migration.cpp +++ b/libcockatrice_settings/libcockatrice/settings/settings_migration.cpp @@ -1,15 +1,25 @@ #include "settings_migration.h" +#include #include +#include #include #include #include #include +#include +#include +#include #include #include +#include #include +#include #include +#include +#include #include +#include inline Q_LOGGING_CATEGORY(SettingsMigrationLog, "settings_migration"); diff --git a/libcockatrice_settings/libcockatrice/settings/sound_settings.cpp b/libcockatrice_settings/libcockatrice/settings/sound_settings.cpp index 82b724a07..5de7f9105 100644 --- a/libcockatrice_settings/libcockatrice/settings/sound_settings.cpp +++ b/libcockatrice_settings/libcockatrice/settings/sound_settings.cpp @@ -1,5 +1,11 @@ #include "sound_settings.h" +#include "libcockatrice/settings/settings_manager.h" + +#include + +class QObject; + SoundSettings::SoundSettings(const QString &settingPath, QObject *parent) : SettingsManager(settingPath + "sound.ini", "sound", QString(), parent) { diff --git a/libcockatrice_settings/libcockatrice/settings/sound_settings.h b/libcockatrice_settings/libcockatrice/settings/sound_settings.h index ffaed2a7c..df6332cae 100644 --- a/libcockatrice_settings/libcockatrice/settings/sound_settings.h +++ b/libcockatrice_settings/libcockatrice/settings/sound_settings.h @@ -3,7 +3,11 @@ #include "settings_manager.h" +#include #include +#include + +class QObject; class SoundSettings : public SettingsManager, public ISoundSettingsProvider { diff --git a/libcockatrice_settings/libcockatrice/settings/tabs_settings.cpp b/libcockatrice_settings/libcockatrice/settings/tabs_settings.cpp index cf5bfd81a..7ed6c4433 100644 --- a/libcockatrice_settings/libcockatrice/settings/tabs_settings.cpp +++ b/libcockatrice_settings/libcockatrice/settings/tabs_settings.cpp @@ -1,5 +1,12 @@ #include "tabs_settings.h" +#include "libcockatrice/settings/settings_manager.h" + +#include +#include + +class QObject; + TabsSettings::TabsSettings(const QString &settingPath, QObject *parent) : SettingsManager(settingPath + "tabs.ini", "tabs", QString(), parent) { diff --git a/libcockatrice_settings/libcockatrice/settings/tabs_settings.h b/libcockatrice_settings/libcockatrice/settings/tabs_settings.h index eb78d311b..5411a6721 100644 --- a/libcockatrice_settings/libcockatrice/settings/tabs_settings.h +++ b/libcockatrice_settings/libcockatrice/settings/tabs_settings.h @@ -3,7 +3,11 @@ #include "settings_manager.h" +#include #include +#include + +class QObject; /** * @brief The tab the application selects after launch. diff --git a/libcockatrice_settings/libcockatrice/settings/updates_settings.cpp b/libcockatrice_settings/libcockatrice/settings/updates_settings.cpp index 166bc0aa8..f1d638a99 100644 --- a/libcockatrice_settings/libcockatrice/settings/updates_settings.cpp +++ b/libcockatrice_settings/libcockatrice/settings/updates_settings.cpp @@ -1,6 +1,13 @@ #include "updates_settings.h" +#include "libcockatrice/settings/settings_manager.h" + +#include #include +#include +#include + +class QObject; UpdatesSettings::UpdatesSettings(const QString &settingPath, QObject *parent) : SettingsManager(settingPath + "updates.ini", "updates", QString(), parent) diff --git a/libcockatrice_settings/libcockatrice/settings/updates_settings.h b/libcockatrice_settings/libcockatrice/settings/updates_settings.h index 6df0f8ce4..76bb07e86 100644 --- a/libcockatrice_settings/libcockatrice/settings/updates_settings.h +++ b/libcockatrice_settings/libcockatrice/settings/updates_settings.h @@ -3,8 +3,12 @@ #include "settings_manager.h" -#include +#include #include +#include + +class QDate; +class QObject; class UpdatesSettings : public SettingsManager, public IUpdatesSettingsProvider { diff --git a/libcockatrice_settings/libcockatrice/settings/visual_deck_storage_settings.cpp b/libcockatrice_settings/libcockatrice/settings/visual_deck_storage_settings.cpp index 3320598d8..4667a278c 100644 --- a/libcockatrice_settings/libcockatrice/settings/visual_deck_storage_settings.cpp +++ b/libcockatrice_settings/libcockatrice/settings/visual_deck_storage_settings.cpp @@ -1,5 +1,12 @@ #include "visual_deck_storage_settings.h" +#include "libcockatrice/settings/settings_manager.h" + +#include +#include + +class QObject; + namespace { QStringList defaultTags = { diff --git a/libcockatrice_settings/libcockatrice/settings/visual_deck_storage_settings.h b/libcockatrice_settings/libcockatrice/settings/visual_deck_storage_settings.h index 9bc9d4172..12b96fd8b 100644 --- a/libcockatrice_settings/libcockatrice/settings/visual_deck_storage_settings.h +++ b/libcockatrice_settings/libcockatrice/settings/visual_deck_storage_settings.h @@ -3,8 +3,12 @@ #include "settings_manager.h" +#include #include #include +#include + +class QObject; class VisualDeckStorageSettings : public SettingsManager, public IVisualDeckStorageSettingsProvider { diff --git a/libcockatrice_utility/libcockatrice/utility/cryptoutil.cpp b/libcockatrice_utility/libcockatrice/utility/cryptoutil.cpp index 416ef261b..fb59022de 100644 --- a/libcockatrice_utility/libcockatrice/utility/cryptoutil.cpp +++ b/libcockatrice_utility/libcockatrice/utility/cryptoutil.cpp @@ -1,6 +1,7 @@ #include "cryptoutil.h" #include +#include namespace CryptoUtil { diff --git a/libcockatrice_utility/libcockatrice/utility/expression.cpp b/libcockatrice_utility/libcockatrice/utility/expression.cpp index 718b0fe18..85d1cdddc 100644 --- a/libcockatrice_utility/libcockatrice/utility/expression.cpp +++ b/libcockatrice_utility/libcockatrice/utility/expression.cpp @@ -5,7 +5,12 @@ #include #include #include +#include #include +#include +#include +#include +#include peg::parser math(R"( EXPRESSION <- P0 diff --git a/libcockatrice_utility/libcockatrice/utility/levenshtein.cpp b/libcockatrice_utility/libcockatrice/utility/levenshtein.cpp index f39d325fb..f7d8459cb 100644 --- a/libcockatrice_utility/libcockatrice/utility/levenshtein.cpp +++ b/libcockatrice_utility/libcockatrice/utility/levenshtein.cpp @@ -1,5 +1,7 @@ #include "levenshtein.h" +#include +#include #include #include diff --git a/libcockatrice_utility/libcockatrice/utility/passwordhasher.cpp b/libcockatrice_utility/libcockatrice/utility/passwordhasher.cpp index 1c22fdcfa..b4a412fa6 100644 --- a/libcockatrice_utility/libcockatrice/utility/passwordhasher.cpp +++ b/libcockatrice_utility/libcockatrice/utility/passwordhasher.cpp @@ -1,5 +1,7 @@ #include "passwordhasher.h" +#include +#include #include #include diff --git a/libcockatrice_utility/libcockatrice/utility/passwordhasher.h b/libcockatrice_utility/libcockatrice/utility/passwordhasher.h index 811ecef15..8ad83f089 100644 --- a/libcockatrice_utility/libcockatrice/utility/passwordhasher.h +++ b/libcockatrice_utility/libcockatrice/utility/passwordhasher.h @@ -1,7 +1,7 @@ #ifndef PASSWORDHASHER_H #define PASSWORDHASHER_H -#include +#include class PasswordHasher { diff --git a/libcockatrice_utility/libcockatrice/utility/report_categories.cpp b/libcockatrice_utility/libcockatrice/utility/report_categories.cpp index 8551c1ca1..f3576d7fd 100644 --- a/libcockatrice_utility/libcockatrice/utility/report_categories.cpp +++ b/libcockatrice_utility/libcockatrice/utility/report_categories.cpp @@ -1,5 +1,8 @@ #include "report_categories.h" +#include +#include + namespace ReportCategories { const QStringList &keys() diff --git a/libcockatrice_utility/libcockatrice/utility/server_rate_limiter.cpp b/libcockatrice_utility/libcockatrice/utility/server_rate_limiter.cpp index 2a1e3b283..50340c350 100644 --- a/libcockatrice_utility/libcockatrice/utility/server_rate_limiter.cpp +++ b/libcockatrice_utility/libcockatrice/utility/server_rate_limiter.cpp @@ -1,5 +1,9 @@ #include "server_rate_limiter.h" +#include +#include +#include + bool ServerRateLimiter::isRateLimited(const QString &host, const QDateTime &now) const { auto it = backoffUntil.constFind(host); diff --git a/libcockatrice_utility/libcockatrice/utility/server_rate_limiter.h b/libcockatrice_utility/libcockatrice/utility/server_rate_limiter.h index e071b9189..cae26983d 100644 --- a/libcockatrice_utility/libcockatrice/utility/server_rate_limiter.h +++ b/libcockatrice_utility/libcockatrice/utility/server_rate_limiter.h @@ -4,6 +4,7 @@ #include #include #include +#include /** * @class ServerRateLimiter diff --git a/libcockatrice_utility/libcockatrice/utility/translation_loader.cpp b/libcockatrice_utility/libcockatrice/utility/translation_loader.cpp index b06bcffc6..41c6107b3 100644 --- a/libcockatrice_utility/libcockatrice/utility/translation_loader.cpp +++ b/libcockatrice_utility/libcockatrice/utility/translation_loader.cpp @@ -1,13 +1,23 @@ #include "translation_loader.h" +#include #include +#include #include #include +#include #include +#include #include +#include #include +#include +#include +#include #include +#include #include +#include // Kept under the historical category name so existing QT_LOGGING_RULES filters keep working. Q_LOGGING_CATEGORY(TranslationLoaderLog, "qt_translator") diff --git a/libcockatrice_utility/libcockatrice/utility/warning_categories.cpp b/libcockatrice_utility/libcockatrice/utility/warning_categories.cpp index b5ca563ff..ad0fc86f0 100644 --- a/libcockatrice_utility/libcockatrice/utility/warning_categories.cpp +++ b/libcockatrice_utility/libcockatrice/utility/warning_categories.cpp @@ -1,5 +1,9 @@ #include "warning_categories.h" +#include +#include +#include + QList parseWarningCategories(const QString &value) { QList categories; diff --git a/oracle/src/main.cpp b/oracle/src/main.cpp index 103c72784..cae2ee37d 100644 --- a/oracle/src/main.cpp +++ b/oracle/src/main.cpp @@ -5,8 +5,12 @@ #include <../../cockatrice/src/client/settings/cache_settings.h> #include +#include #include +#include +#include #include +#include #include #include #include diff --git a/oracle/src/oracleimporter.cpp b/oracle/src/oracleimporter.cpp index 88b522197..b30565ed0 100644 --- a/oracle/src/oracleimporter.cpp +++ b/oracle/src/oracleimporter.cpp @@ -1,20 +1,36 @@ #include "oracleimporter.h" +#include "libcockatrice/card/card_info.h" +#include "libcockatrice/card/format/format_legality_rules.h" +#include "libcockatrice/card/lazy_properties_hash.h" +#include "libcockatrice/card/relation/card_relation_type.h" #include "libcockatrice/interfaces/noop_card_preference_provider.h" #include "libcockatrice/interfaces/noop_card_set_priority_controller.h" #include "parsehelpers.h" +#include #include #include #include #include +#include +#include +#include +#include #include +#include #include +#include +#include +#include #include #include #include #include #include +#include + +class ICardSetPriorityController; static const QList kConstructedCounts = {{4, "legal"}, {0, "banned"}}; diff --git a/oracle/src/oracleimporter.h b/oracle/src/oracleimporter.h index c8d3a19bf..4057144c1 100644 --- a/oracle/src/oracleimporter.h +++ b/oracle/src/oracleimporter.h @@ -1,18 +1,29 @@ #ifndef ORACLEIMPORTER_H #define ORACLEIMPORTER_H +#include "libcockatrice/card/printing/printing_info.h" +#include "libcockatrice/card/set/card_set.h" #include "raw_json_scanner.h" #include #include +#include +#include #include #include +#include #include -#include -#include +#include +#include +#include #include +#include +#include #include +class CardRelation; +class QRegularExpression; + // many users prefer not to see these sets with non english arts // they will given priority PriorityLowest const QStringList nonEnglishSets = {"4BB", "FBB", "PS11", "PSAL", "REN", "RIN"}; diff --git a/oracle/src/oraclewizard.cpp b/oracle/src/oraclewizard.cpp index 9ce0d7b51..b92feae8f 100644 --- a/oracle/src/oraclewizard.cpp +++ b/oracle/src/oraclewizard.cpp @@ -6,17 +6,24 @@ #include "pages.h" #include "pagetemplates.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include +#include + +class QWidget; OracleWizard::OracleWizard(QWidget *parent) : QWizard(parent) { diff --git a/oracle/src/oraclewizard.h b/oracle/src/oraclewizard.h index 9a509ce5e..2dfcc2cdc 100644 --- a/oracle/src/oraclewizard.h +++ b/oracle/src/oraclewizard.h @@ -1,21 +1,16 @@ #ifndef ORACLEWIZARD_H #define ORACLEWIZARD_H +#include +#include #include +#include #include -class QCheckBox; -class QGroupBox; -class QComboBox; -class QLabel; -class QLineEdit; -class QRadioButton; -class QProgressBar; class QNetworkAccessManager; -class QTextEdit; -class QVBoxLayout; class OracleImporter; class QSettings; +class QWidget; class OracleWizard : public QWizard { diff --git a/oracle/src/pages.cpp b/oracle/src/pages.cpp index 566c88520..43c863495 100644 --- a/oracle/src/pages.cpp +++ b/oracle/src/pages.cpp @@ -4,36 +4,59 @@ #include "main.h" #include "oracleimporter.h" #include "oraclewizard.h" -#include "pages.h" #include "pagetemplates.h" #include "version_string.h" -#include #include #include #include +#include #include #include +#include #include +#include #include +#include +#include +#include #include #include +#include +#include #include #include #include +#include +#include #include #include #include #include #include -#include +#include +#include #include #include -#include -#include +#include +#include +#include +#include +#include +#include +#include #include +#include #include #include +#include +#include +#include +#include +#include +#include + +class QWidget; #ifdef HAS_LZMA #include "lzma/decompress.h" diff --git a/oracle/src/pages.h b/oracle/src/pages.h index d0a9fcd43..221f032d3 100644 --- a/oracle/src/pages.h +++ b/oracle/src/pages.h @@ -7,22 +7,20 @@ #include #include #include -#include -#include -#include +#include +#include +#include class QCheckBox; -class QGroupBox; class QComboBox; class QLabel; class QLineEdit; class QRadioButton; class QProgressBar; -class QNetworkAccessManager; class QTextEdit; -class QVBoxLayout; -class OracleImporter; -class QSettings; +class QPushButton; +class QUrl; +class QWidget; class IntroPage : public OracleWizardPage { diff --git a/oracle/src/pagetemplates.cpp b/oracle/src/pagetemplates.cpp index 0ffeabbb3..d37818dcb 100644 --- a/oracle/src/pagetemplates.cpp +++ b/oracle/src/pagetemplates.cpp @@ -3,17 +3,32 @@ #include "oraclewizard.h" #include +#include #include +#include #include +#include #include +#include #include #include +#include #include +#include #include +#include +#include #include #include #include -#include +#include +#include +#include +#include +#include +#include + +class QWidget; SimpleDownloadFilePage::SimpleDownloadFilePage(QWidget *parent) : OracleWizardPage(parent) { diff --git a/oracle/src/pagetemplates.h b/oracle/src/pagetemplates.h index ccad7ec62..2a996801d 100644 --- a/oracle/src/pagetemplates.h +++ b/oracle/src/pagetemplates.h @@ -1,15 +1,21 @@ #ifndef PAGETEMPLATES_H #define PAGETEMPLATES_H +#include +#include #include +#include +#include -class QFile; class QRadioButton; class OracleWizard; class QCheckBox; class QLabel; class QLineEdit; class QProgressBar; +class QPushButton; +class QUrl; +class QWidget; class OracleWizardPage : public QWizardPage { diff --git a/oracle/src/parsehelpers.cpp b/oracle/src/parsehelpers.cpp index ee7c4eb2e..2c897031f 100644 --- a/oracle/src/parsehelpers.cpp +++ b/oracle/src/parsehelpers.cpp @@ -1,7 +1,11 @@ #include "parsehelpers.h" #include +#include #include +#include +#include +#include /** * Parses the card text to determine if the card should have the cipt tag diff --git a/oracle/src/raw_json_scanner.cpp b/oracle/src/raw_json_scanner.cpp index 8c4633598..2396b59ae 100644 --- a/oracle/src/raw_json_scanner.cpp +++ b/oracle/src/raw_json_scanner.cpp @@ -1,5 +1,9 @@ #include "raw_json_scanner.h" +#include +#include +#include +#include #include #include diff --git a/oracle/src/raw_json_scanner.h b/oracle/src/raw_json_scanner.h index 04fcc52e4..18030d834 100644 --- a/oracle/src/raw_json_scanner.h +++ b/oracle/src/raw_json_scanner.h @@ -1,11 +1,13 @@ #ifndef RAW_JSON_SCANNER_H #define RAW_JSON_SCANNER_H -#include #include #include +#include #include +class QByteArray; + namespace RawJson { diff --git a/servatrice/src/email_parser.cpp b/servatrice/src/email_parser.cpp index d8c30d852..44c788e67 100644 --- a/servatrice/src/email_parser.cpp +++ b/servatrice/src/email_parser.cpp @@ -1,6 +1,8 @@ #include "email_parser.h" #include +#include +#include #include QPair EmailParser::parseEmailAddress(const QString &dirtyEmailAddress) diff --git a/servatrice/src/event_loop_watchdog.cpp b/servatrice/src/event_loop_watchdog.cpp index e50bd4201..a2f20ff1c 100644 --- a/servatrice/src/event_loop_watchdog.cpp +++ b/servatrice/src/event_loop_watchdog.cpp @@ -8,6 +8,8 @@ #include "servatrice.h" #include +#include +#include EventLoopWatchdog::EventLoopWatchdog(Servatrice *_servatrice, QString _threadName) : QObject(nullptr), servatrice(_servatrice), threadName(std::move(_threadName)) diff --git a/servatrice/src/event_loop_watchdog.h b/servatrice/src/event_loop_watchdog.h index b9061ff97..d05430eaa 100644 --- a/servatrice/src/event_loop_watchdog.h +++ b/servatrice/src/event_loop_watchdog.h @@ -9,6 +9,7 @@ #include #include #include +#include class Servatrice; class QTimer; diff --git a/servatrice/src/isl_interface.cpp b/servatrice/src/isl_interface.cpp index b0ee201bf..b1a27bbaa 100644 --- a/servatrice/src/isl_interface.cpp +++ b/servatrice/src/isl_interface.cpp @@ -1,11 +1,34 @@ #include "isl_interface.h" +#include "libcockatrice/protocol/pb/commands.pb.h" +#include "libcockatrice/protocol/pb/room_commands.pb.h" +#include "libcockatrice/protocol/pb/room_event.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_game.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_room.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_user.pb.h" +#include "libcockatrice/protocol/pb/session_event.pb.h" #include "main.h" +#include "servatrice.h" +#include "server_abstractuserinterface.h" #include "server_logger.h" +#include "serverinfo_user_container.h" +#include +#include +#include #include +#include +#include +#include +#include +#include +#include +#include +#include #include #include +#include +#include #include #include #include @@ -17,8 +40,9 @@ #include #include #include -#include #include +#include +#include #include #include diff --git a/servatrice/src/isl_interface.h b/servatrice/src/isl_interface.h index 27e5b8293..f7680c0a2 100644 --- a/servatrice/src/isl_interface.h +++ b/servatrice/src/isl_interface.h @@ -1,21 +1,26 @@ #ifndef ISL_INTERFACE_H #define ISL_INTERFACE_H -#include "servatrice.h" - +#include +#include +#include +#include #include -#include +#include + +// IWYU pragma: keep +// ServerInfo_User and ServerInfo_Game are passed by value to signals, so the +// moc-generated code needs the complete types. +#include #include -#include #include +#include class Servatrice; class QSslSocket; class QSslKey; class IslMessage; - class Event_ServerCompleteList; -class Event_UserMessage; class Event_UserJoined; class Event_UserLeft; class Event_JoinRoom; @@ -24,6 +29,11 @@ class Event_RoomSay; class Event_ListGames; class Event_RemoveMessages; class Command_JoinGame; +class CommandContainer; +class GameEventContainer; +class Response; +class RoomEvent; +class SessionEvent; class IslInterface : public QObject { diff --git a/servatrice/src/main.cpp b/servatrice/src/main.cpp index 13bf95a82..eb019a2b7 100644 --- a/servatrice/src/main.cpp +++ b/servatrice/src/main.cpp @@ -18,6 +18,7 @@ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ +#include "libcockatrice/rng/rng_abstract.h" #include "servatrice.h" #include "server_logger.h" #include "settingscache.h" @@ -25,16 +26,29 @@ #include "smtpclient.h" #include "version_string.h" +#include #include #include #include +#include #include +#include +#include #include -#include +#include +#include +#include +#include +#include +#include +#include #include #include #include #include +#include +#include +#include RNG_Abstract *rng; ServerLogger *logger; diff --git a/servatrice/src/metrics_registry.cpp b/servatrice/src/metrics_registry.cpp index 99ce390f1..51abb7e3e 100644 --- a/servatrice/src/metrics_registry.cpp +++ b/servatrice/src/metrics_registry.cpp @@ -1,6 +1,7 @@ #include "metrics_registry.h" #include +#include void MetricsRegistry::observeCommand(int typeId, qint64 elapsedMs) { diff --git a/servatrice/src/metrics_registry.h b/servatrice/src/metrics_registry.h index 4df1057c2..1175d03c4 100644 --- a/servatrice/src/metrics_registry.h +++ b/servatrice/src/metrics_registry.h @@ -7,7 +7,7 @@ #define METRICS_REGISTRY_H #include -#include +#include #include #include diff --git a/servatrice/src/servatrice.cpp b/servatrice/src/servatrice.cpp index 3dd7ab510..0329a31fd 100644 --- a/servatrice/src/servatrice.cpp +++ b/servatrice/src/servatrice.cpp @@ -22,10 +22,14 @@ #include "email_parser.h" #include "event_loop_watchdog.h" #include "isl_interface.h" +#include "libcockatrice/protocol/pb/response_report_stats.pb.h" +#include "libcockatrice/protocol/pb/session_event.pb.h" #include "main.h" #include "servatrice_connection_pool.h" #include "servatrice_database_interface.h" +#include "server.h" #include "server_logger.h" +#include "server_protocolhandler.h" #include "serversocketinterface.h" #include "settingscache.h" #include "smtpclient.h" @@ -33,20 +37,37 @@ #include #include #include +#include +#include +#include +#include +#include #include +#include +#include +#include #include +#include #include #include +#include #include +#include #include +#include +#include +#include #include -#include -#include +#include #include #include #include #include +#include +#include +#include #include +#include Servatrice_GameServer::Servatrice_GameServer(Servatrice *_server, int _numberPools, diff --git a/servatrice/src/servatrice.h b/servatrice/src/servatrice.h index f39a44d51..242d445ad 100644 --- a/servatrice/src/servatrice.h +++ b/servatrice/src/servatrice.h @@ -22,34 +22,44 @@ #include "metrics_registry.h" +#include #include #include +#include +#include #include #include +#include #include -#include #include #include +#include + +// IWYU pragma: keep +// Q_DECLARE_METATYPE below needs the complete type. +#include #include #include +#include #include #include #include +#include #include #include +class QObject; +class QThread; +class SessionEvent; + Q_DECLARE_METATYPE(QSqlDatabase) -class QSqlQuery; class QTimer; - -class GameReplay; class Servatrice; class Servatrice_ConnectionPool; class Servatrice_DatabaseInterface; class AbstractServerSocketInterface; class IslInterface; -class FeatureSet; class Servatrice_GameServer : public QTcpServer { diff --git a/servatrice/src/servatrice_connection_pool.h b/servatrice/src/servatrice_connection_pool.h index 7479122cf..ddd12fc95 100644 --- a/servatrice/src/servatrice_connection_pool.h +++ b/servatrice/src/servatrice_connection_pool.h @@ -4,6 +4,7 @@ #include #include #include +#include class Servatrice_DatabaseInterface; diff --git a/servatrice/src/servatrice_database_interface.cpp b/servatrice/src/servatrice_database_interface.cpp index bb67d78eb..ac3a19c8e 100644 --- a/servatrice/src/servatrice_database_interface.cpp +++ b/servatrice/src/servatrice_database_interface.cpp @@ -1,24 +1,46 @@ #include "servatrice_database_interface.h" #include "deck_tag_serialization.h" +#include "libcockatrice/protocol/pb/response.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_chat_message.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_game.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_moderator_login.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_user_alt.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_user_session.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_warning.pb.h" #include "servatrice.h" -#include "serversocketinterface.h" +#include "server.h" +#include "server_protocolhandler.h" #include "settingscache.h" +#include #include #include #include -#include #include #include +#include #include +#include +#include +#include +#include +#include +#include +#include #include #include #include +#include +#include +#include #include #include #include #include +#include +#include +#include inline Q_LOGGING_CATEGORY(DatabaseInterfaceLog, "database_interface"); diff --git a/servatrice/src/servatrice_database_interface.h b/servatrice/src/servatrice_database_interface.h index ce51a2474..0509d1a03 100644 --- a/servatrice/src/servatrice_database_interface.h +++ b/servatrice/src/servatrice_database_interface.h @@ -1,18 +1,26 @@ #ifndef SERVATRICE_DATABASE_INTERFACE_H #define SERVATRICE_DATABASE_INTERFACE_H -#include +#include "libcockatrice/protocol/pb/serverinfo_user.pb.h" + #include -#include +#include #include +#include +#include +#include +#include #include #include #include #include #include +#include #include #include +class QSqlQuery; + #define DATABASE_SCHEMA_VERSION 37 class Servatrice; diff --git a/servatrice/src/server_logger.cpp b/servatrice/src/server_logger.cpp index 620780052..1972444f1 100644 --- a/servatrice/src/server_logger.cpp +++ b/servatrice/src/server_logger.cpp @@ -6,8 +6,16 @@ #include #include #include +#include +#include #include +#include +#include +#include #include +#include +#include +#include ServerLogger::ServerLogger(bool _logToConsole, QObject *parent) : QObject(parent), logToConsole(_logToConsole), flushRunning(false) diff --git a/servatrice/src/server_logger.h b/servatrice/src/server_logger.h index 0ad092b66..f2875a6a3 100644 --- a/servatrice/src/server_logger.h +++ b/servatrice/src/server_logger.h @@ -1,14 +1,14 @@ #ifndef SERVER_LOGGER_H #define SERVER_LOGGER_H +#include #include #include +#include #include -#include -#include +#include class QFile; -class Server_ProtocolHandler; class ServerLogger : public QObject { diff --git a/servatrice/src/serversocketinterface.cpp b/servatrice/src/serversocketinterface.cpp index a8d13675d..a5332dab0 100644 --- a/servatrice/src/serversocketinterface.cpp +++ b/servatrice/src/serversocketinterface.cpp @@ -22,28 +22,63 @@ #include "deck_tag_serialization.h" #include "email_parser.h" +#include "libcockatrice/protocol/pb/admin_commands.pb.h" +#include "libcockatrice/protocol/pb/developer_commands.pb.h" +#include "libcockatrice/protocol/pb/moderator_commands.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_deck_share_item.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_deck_share_summary.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_replay_match.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_report.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_warning.pb.h" +#include "libcockatrice/protocol/pb/session_commands.pb.h" +#include "libcockatrice/protocol/pb/session_event.pb.h" +#include "libcockatrice/utility/card_ref.h" #include "main.h" +#include "metrics_registry.h" #include "servatrice.h" #include "servatrice_database_interface.h" +#include "server.h" +#include "server_database_interface.h" #include "server_logger.h" +#include "server_protocolhandler.h" #include "settingscache.h" #include "version_string.h" +#include +#include #include #include #include #include #include #include +#include +#include #include +#include +#include +#include +#include +#include +#include #include -#include +#include +#include +#include #include #include #include +#include +#include +#include +#include #include -#include +#include #include +#include +#include +#include +#include #include #include #include @@ -85,8 +120,6 @@ #include #include #include -#include -#include #include #include #include @@ -131,9 +164,16 @@ #include #include #include +#include +#include +#include #include #include +#include #include +#include + +class QObject; inline Q_LOGGING_CATEGORY(AbstractServerSocketInterfaceLog, "abstract_server_socket_interface"); inline Q_LOGGING_CATEGORY(TcpServerSocketInterfaceLog, "tcp_server_socket_interface"); diff --git a/servatrice/src/serversocketinterface.h b/servatrice/src/serversocketinterface.h index 36b900d28..27708ed27 100644 --- a/servatrice/src/serversocketinterface.h +++ b/servatrice/src/serversocketinterface.h @@ -20,28 +20,26 @@ #ifndef SERVERSOCKETINTERFACE_H #define SERVERSOCKETINTERFACE_H +#include "libcockatrice/protocol/pb/response.pb.h" +#include "libcockatrice/protocol/pb/server_message.pb.h" + +#include +#include #include +#include #include +#include +#include #include #include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include #include class Servatrice; class Servatrice_DatabaseInterface; class DeckList; class ServerInfo_DeckStorage_Folder; - class Command_AddToList; class Command_RemoveFromList; class Command_DeckList; @@ -64,16 +62,51 @@ class Command_ReplayModifyMatch; class Command_ReplayDeleteMatch; class Command_ReplayGetCode; class Command_ReplaySubmitCode; - class Command_BanFromServer; class Command_UpdateServerMessage; class Command_ShutdownServer; class Command_ReloadConfig; class Command_ReplayDownloadByGameId; - class Command_AccountEdit; class Command_AccountImage; class Command_AccountPassword; +class Command_Activate; +class Command_AddCardArtRule; +class Command_AdjustMod; +class Command_ForceActivateUser; +class Command_ForgotPasswordChallenge; +class Command_ForgotPasswordRequest; +class Command_ForgotPasswordReset; +class Command_GetAdminNotes; +class Command_GetBanHistory; +class Command_GetModeratorLastLogins; +class Command_GetServerStats; +class Command_GetUserAlts; +class Command_GetUserSessions; +class Command_GetWarnHistory; +class Command_GetWarnList; +class Command_GrantReplayAccess; +class Command_ListCardArtRules; +class Command_Register; +class Command_RemoveCardArtRule; +class Command_RemoveUserAvatar; +class Command_Report; +class Command_ReportAddComment; +class Command_ReportAssign; +class Command_ReportDetails; +class Command_ReportList; +class Command_ReportMyList; +class Command_ReportResolve; +class Command_ReportStats; +class Command_ReportUserInfo; +class Command_RequestPasswordSalt; +class Command_ResetUserPassword; +class Command_SetCardArtParams; +class Command_UpdateAdminNotes; +class Command_ViewLogHistory; +class Command_WarnUser; +class QObject; +class ResponseContainer; class AbstractServerSocketInterface : public Server_ProtocolHandler { diff --git a/servatrice/src/settingscache.cpp b/servatrice/src/settingscache.cpp index f6c862904..4ecac7319 100644 --- a/servatrice/src/settingscache.cpp +++ b/servatrice/src/settingscache.cpp @@ -4,6 +4,13 @@ #include #include #include +#include +#include +#include +#include +#include + +class QObject; SettingsCache::SettingsCache(const QString &fileName, QSettings::Format format, QObject *parent) : QSettings(fileName, format, parent) diff --git a/servatrice/src/settingscache.h b/servatrice/src/settingscache.h index 6922d3508..817a62bfa 100644 --- a/servatrice/src/settingscache.h +++ b/servatrice/src/settingscache.h @@ -5,6 +5,9 @@ #include #include #include +#include + +class QObject; class SettingsCache : public QSettings { diff --git a/servatrice/src/signalhandler.cpp b/servatrice/src/signalhandler.cpp index b4513979f..32cd5b206 100644 --- a/servatrice/src/signalhandler.cpp +++ b/servatrice/src/signalhandler.cpp @@ -5,6 +5,10 @@ #include "settingscache.h" #include +#include +#include +#include +#include #ifdef Q_OS_UNIX #include diff --git a/servatrice/src/signalhandler.h b/servatrice/src/signalhandler.h index bf8d9e52a..82652a43a 100644 --- a/servatrice/src/signalhandler.h +++ b/servatrice/src/signalhandler.h @@ -2,6 +2,7 @@ #define SIGNALHANDLER_H #include +#include class QSocketNotifier; diff --git a/servatrice/src/smtpclient.cpp b/servatrice/src/smtpclient.cpp index 3ec333413..a45588b8b 100644 --- a/servatrice/src/smtpclient.cpp +++ b/servatrice/src/smtpclient.cpp @@ -1,10 +1,18 @@ #include "smtpclient.h" #include "settingscache.h" +#include "smtp/qxtmailmessage.h" #include "smtp/qxtsmtp.h" +#include +#include +#include +#include #include #include +#include +#include +#include SmtpClient::SmtpClient(QObject *parent) : QObject(parent) { diff --git a/servatrice/src/smtpclient.h b/servatrice/src/smtpclient.h index be97ed44d..8fc4e35cb 100644 --- a/servatrice/src/smtpclient.h +++ b/servatrice/src/smtpclient.h @@ -2,9 +2,11 @@ #define SMTPCLIENT_H #include +#include +#include class QxtSmtp; -class QxtMailMessage; +class QByteArray; class SmtpClient : public QObject { diff --git a/tests/card_zone_algorithms/card_zone_algorithms_test.cpp b/tests/card_zone_algorithms/card_zone_algorithms_test.cpp index 8fab42566..4f5282235 100644 --- a/tests/card_zone_algorithms/card_zone_algorithms_test.cpp +++ b/tests/card_zone_algorithms/card_zone_algorithms_test.cpp @@ -1,6 +1,7 @@ #include "card_zone_algorithms.h" #include +#include #include struct MockCardRef diff --git a/tests/carddatabase/carddatabase_test.cpp b/tests/carddatabase/carddatabase_test.cpp index 392f6395a..0bfd8a5dd 100644 --- a/tests/carddatabase/carddatabase_test.cpp +++ b/tests/carddatabase/carddatabase_test.cpp @@ -1,7 +1,18 @@ -#include "mocks.h" +#include "libcockatrice/card/database/card_database.h" +#include "libcockatrice/card/database/card_database_loader.h" +#include "libcockatrice/card/database/card_database_querier.h" +#include "libcockatrice/card/set/card_set.h" +#include "libcockatrice/card/set/card_set_list.h" #include "test_card_database_path_provider.h" #include "gtest/gtest.h" +#include +#include +#include +#include +#include +#include +#include #include #include #include @@ -10,6 +21,8 @@ #include #include #include +#include + namespace { diff --git a/tests/carddatabase/filter_string_test.cpp b/tests/carddatabase/filter_string_test.cpp index dcf1cf0a2..95225e28c 100644 --- a/tests/carddatabase/filter_string_test.cpp +++ b/tests/carddatabase/filter_string_test.cpp @@ -1,13 +1,29 @@ -#include "mocks.h" +#include "libcockatrice/card/card_localization.h" +#include "libcockatrice/card/database/card_database.h" +#include "libcockatrice/card/database/card_database_querier.h" +#include "libcockatrice/card/set/card_set.h" #include "test_card_database_path_provider.h" #include "gtest/gtest.h" +#include +#include +#include +#include +#include +#include #include #include #include #include #include #include +#include +#include + +namespace +{ +class CardQuery; +} #define QUERY(name, card, query, match) \ TEST_F(CardQuery, name) \ diff --git a/tests/carddatabase/load_benchmark.cpp b/tests/carddatabase/load_benchmark.cpp index 8e9e80e4d..5492b9531 100644 --- a/tests/carddatabase/load_benchmark.cpp +++ b/tests/carddatabase/load_benchmark.cpp @@ -12,25 +12,30 @@ * (~/.local/share/Cockatrice/Cockatrice/...). */ -#include "mocks.h" +#include "libcockatrice/card/card_info.h" +#include "libcockatrice/card/set/card_set_list.h" -#include "gtest/gtest.h" #include #include -#include +#include #include #include -#include #include +#include +#include #include +#include +#include +#include #include -#include +#include #include #include #include #include #include #include +#include static QString defaultXdgPath(const QString &file) { diff --git a/tests/carddatabase/mocks.h b/tests/carddatabase/mocks.h index 016642005..b7cfe8243 100644 --- a/tests/carddatabase/mocks.h +++ b/tests/carddatabase/mocks.h @@ -7,7 +7,7 @@ #define PICTURELOADER_H -#include +#include "libcockatrice/card/card_info.h" class CardPictureLoader { diff --git a/tests/clamped_arithmetic_test.cpp b/tests/clamped_arithmetic_test.cpp index 2471d5870..e5fd070b0 100644 --- a/tests/clamped_arithmetic_test.cpp +++ b/tests/clamped_arithmetic_test.cpp @@ -6,6 +6,7 @@ #include #include #include +#include TEST(AddClamped, AddsWithinBounds) { diff --git a/tests/deck_hash_performance_test.cpp b/tests/deck_hash_performance_test.cpp index 154283e8e..135c218c5 100644 --- a/tests/deck_hash_performance_test.cpp +++ b/tests/deck_hash_performance_test.cpp @@ -1,6 +1,10 @@ #include "gtest/gtest.h" -#include +#include +#include +#include +#include #include +#include static constexpr int amount = 1e5; QString repeatDeck; diff --git a/tests/deck_list_model/deck_list_model_custom_zones_test.cpp b/tests/deck_list_model/deck_list_model_custom_zones_test.cpp index 7f4ab81e1..95df74702 100644 --- a/tests/deck_list_model/deck_list_model_custom_zones_test.cpp +++ b/tests/deck_list_model/deck_list_model_custom_zones_test.cpp @@ -9,10 +9,19 @@ * full model and card database machinery. */ +#include "deck_list_model_custom_zones.h" +#include "libcockatrice/deck_list/tree/abstract_deck_list_node.h" + +#include +#include +#include #include #include #include #include +#include +#include +#include namespace { diff --git a/tests/deck_list_model/deck_list_model_zone_integration_test.cpp b/tests/deck_list_model/deck_list_model_zone_integration_test.cpp index a4562c95d..63c904910 100644 --- a/tests/deck_list_model/deck_list_model_zone_integration_test.cpp +++ b/tests/deck_list_model/deck_list_model_zone_integration_test.cpp @@ -1,3 +1,12 @@ +#include "libcockatrice/card/database/card_database.h" +#include "libcockatrice/deck_list/tree/abstract_deck_list_node.h" + +#include +#include +#include +#include +#include +#include #include #include #include @@ -8,6 +17,10 @@ #include #include #include +#include +#include + +class QModelIndex; namespace { diff --git a/tests/deck_list_zones/deck_list_zones_test.cpp b/tests/deck_list_zones/deck_list_zones_test.cpp index 801f226a9..1903b70df 100644 --- a/tests/deck_list_zones/deck_list_zones_test.cpp +++ b/tests/deck_list_zones/deck_list_zones_test.cpp @@ -7,12 +7,20 @@ * "main" are still mainboard cards for hashing, sideboard size, legality and export. */ +#include "libcockatrice/deck_list/tree/abstract_deck_list_node.h" + +#include +#include +#include +#include #include +#include #include #include #include #include #include +#include namespace { diff --git a/tests/dummy_test.cpp b/tests/dummy_test.cpp index 31a01bcff..8fd9c78dd 100644 --- a/tests/dummy_test.cpp +++ b/tests/dummy_test.cpp @@ -1,4 +1,5 @@ #include "gtest/gtest.h" +#include namespace { diff --git a/tests/expression_test.cpp b/tests/expression_test.cpp index 4fbe98cb9..b3c4b586c 100644 --- a/tests/expression_test.cpp +++ b/tests/expression_test.cpp @@ -1,6 +1,7 @@ #include "gtest/gtest.h" #include #include +#include #define TEST_EXPR(name, a, b) \ TEST(ExpressionTest, name) \ diff --git a/tests/lag_monitor_test.cpp b/tests/lag_monitor_test.cpp index 9948eeabb..b404a2c9e 100644 --- a/tests/lag_monitor_test.cpp +++ b/tests/lag_monitor_test.cpp @@ -5,6 +5,8 @@ #include #include #include +#include +#include namespace { diff --git a/tests/latency_tracker_test.cpp b/tests/latency_tracker_test.cpp index 68631b7ca..a77051799 100644 --- a/tests/latency_tracker_test.cpp +++ b/tests/latency_tracker_test.cpp @@ -1,5 +1,9 @@ +#include +#include #include +#include #include +#include TEST(LatencyTrackerTest, EmptyTrackerYieldsZeroedStats) { diff --git a/tests/loader_local_matching_test.cpp b/tests/loader_local_matching_test.cpp index 6ce684fdd..13d3e5bb3 100644 --- a/tests/loader_local_matching_test.cpp +++ b/tests/loader_local_matching_test.cpp @@ -1,7 +1,11 @@ #include "client/settings/cache_settings.h" #include "interface/card_picture_loader/card_picture_loader_local.h" +#include "libcockatrice/card/card_info.h" +#include "libcockatrice/card/printing/printing_info.h" #include "gtest/gtest.h" +#include +#include #include #include #include @@ -9,13 +13,18 @@ #include #include #include +#include #include +#include #include +#include #include #include #include #include #include +#include +#include namespace { diff --git a/tests/loading_from_clipboard/clipboard_testing.cpp b/tests/loading_from_clipboard/clipboard_testing.cpp index a9977b800..3f652a495 100644 --- a/tests/loading_from_clipboard/clipboard_testing.cpp +++ b/tests/loading_from_clipboard/clipboard_testing.cpp @@ -1,6 +1,12 @@ #include "clipboard_testing.h" +#include "libcockatrice/deck_list/deck_list.h" +#include "libcockatrice/deck_list/tree/inner_deck_list_node.h" + +#include #include +#include +#include #include #include diff --git a/tests/loading_from_clipboard/clipboard_testing.h b/tests/loading_from_clipboard/clipboard_testing.h index 41d8ea794..c9852e5d7 100644 --- a/tests/loading_from_clipboard/clipboard_testing.h +++ b/tests/loading_from_clipboard/clipboard_testing.h @@ -1,8 +1,11 @@ #ifndef CLIPBOARD_TESTING_H #define CLIPBOARD_TESTING_H -#include "gtest/gtest.h" -#include +#include +#include +#include +#include +#include // using std types because qt types aren't understood by gtest (without this you'll get less nice errors) using CardRows = QVector>; diff --git a/tests/loading_from_clipboard/loading_from_clipboard_test.cpp b/tests/loading_from_clipboard/loading_from_clipboard_test.cpp index fcfbb22db..840d926ff 100644 --- a/tests/loading_from_clipboard/loading_from_clipboard_test.cpp +++ b/tests/loading_from_clipboard/loading_from_clipboard_test.cpp @@ -1,5 +1,11 @@ #include "clipboard_testing.h" +#include +#include +#include +#include +#include + // Testing is done by using the DeckList::loadFromString_Plain function in common/decklist.h // It does not check if cards are in the database at all, so no comparisons to the database will be made. diff --git a/tests/metrics_registry_test.cpp b/tests/metrics_registry_test.cpp index 1abef58e1..39a8f8aaf 100644 --- a/tests/metrics_registry_test.cpp +++ b/tests/metrics_registry_test.cpp @@ -2,6 +2,7 @@ #include #include #include +#include TEST(MetricsRegistryTest, EmptyRegistryHasZeroedCounters) { diff --git a/tests/movecard_tests/reverse_card_move_test.cpp b/tests/movecard_tests/reverse_card_move_test.cpp index 64c93078c..6bed20d18 100644 --- a/tests/movecard_tests/reverse_card_move_test.cpp +++ b/tests/movecard_tests/reverse_card_move_test.cpp @@ -3,15 +3,20 @@ #include "game/server_card.h" #include "game/server_cardzone.h" #include "game/server_game.h" +#include "libcockatrice/protocol/pb/response.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_zone.pb.h" #include "server_response_containers.h" #include "server_room.h" #include "server_test_helpers.h" +#include +#include #include #include #include #include #include +#include RNG_Abstract *rng = nullptr; // this needs to be defined due to other functions in server diff --git a/tests/oracle/oracle_importer_benchmark_test.cpp b/tests/oracle/oracle_importer_benchmark_test.cpp index 633c9e40a..77b44af71 100644 --- a/tests/oracle/oracle_importer_benchmark_test.cpp +++ b/tests/oracle/oracle_importer_benchmark_test.cpp @@ -1,21 +1,37 @@ #include "../../oracle/src/oracleimporter.h" +#include "libcockatrice/card/card_info.h" +#include "libcockatrice/card/set/card_set.h" #include "gtest/gtest.h" #include +#include +#include #include #include #include #include #include +#include #include #include #include +#include +#include +#include #include #include #include +#include +#include +#include #include #include +#include #include +#include +#include +#include +#include #if defined(HAS_LZMA) #include "../../oracle/src/lzma/decompress.h" diff --git a/tests/oracle/oracle_importer_test.cpp b/tests/oracle/oracle_importer_test.cpp index f66616e37..83d77d465 100644 --- a/tests/oracle/oracle_importer_test.cpp +++ b/tests/oracle/oracle_importer_test.cpp @@ -1,15 +1,34 @@ #include "../../oracle/src/oracleimporter.h" +#include "../../oracle/src/raw_json_scanner.h" +#include "libcockatrice/card/card_info.h" #include "gtest/gtest.h" +#include +#include +#include #include #include #include +#include +#include +#include +#include +#include #include #include -#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include +#include +#include class OracleImporterTest : public ::testing::Test { diff --git a/tests/oracle/parse_cipt_test.cpp b/tests/oracle/parse_cipt_test.cpp index f5036f962..10268d659 100644 --- a/tests/oracle/parse_cipt_test.cpp +++ b/tests/oracle/parse_cipt_test.cpp @@ -1,6 +1,7 @@ #include "../../oracle/src/parsehelpers.h" #include "gtest/gtest.h" +#include TEST(ParseCiptTest, parsesThisEntersTapped) { diff --git a/tests/password_hash_test.cpp b/tests/password_hash_test.cpp index 2b8f8bdb7..2a504b81c 100644 --- a/tests/password_hash_test.cpp +++ b/tests/password_hash_test.cpp @@ -1,6 +1,9 @@ #include "gtest/gtest.h" +#include +#include #include #include +#include namespace { diff --git a/tests/picture_loader_benchmark/picture_loader_benchmark.cpp b/tests/picture_loader_benchmark/picture_loader_benchmark.cpp index f991f2ec0..587cef65f 100644 --- a/tests/picture_loader_benchmark/picture_loader_benchmark.cpp +++ b/tests/picture_loader_benchmark/picture_loader_benchmark.cpp @@ -25,22 +25,34 @@ #include "client/settings/cache_settings.h" #include "interface/card_picture_loader/card_picture_loader_worker.h" #include "interface/card_picture_loader/card_picture_to_load.h" +#include "libcockatrice/card/card_info.h" +#include "libcockatrice/card/database/card_database_loader.h" +#include #include #include #include #include #include +#include #include +#include #include #include #include #include +#include +#include +#include +#include +#include +#include #include #include #include #include -#include +#include +#include #include #include #include @@ -51,6 +63,8 @@ #include #include #include +#include +#include class BenchmarkCardDatabasePathProvider : public ICardDatabasePathProvider { diff --git a/tests/picture_loader_benchmark/settings_cache_mock.cpp b/tests/picture_loader_benchmark/settings_cache_mock.cpp index d93c7e002..13e831b62 100644 --- a/tests/picture_loader_benchmark/settings_cache_mock.cpp +++ b/tests/picture_loader_benchmark/settings_cache_mock.cpp @@ -17,15 +17,21 @@ #include "client/settings/cache_settings.h" #include "interface/card_picture_loader/card_picture_loader_cache_method.h" +#include #include #include +#include +#include #include +#include #include +#include +#include #include #include #include #include -#include +#include QString SettingsCache::getDataPath() { diff --git a/tests/playmat_resolver_test.cpp b/tests/playmat_resolver_test.cpp index a931c0647..6730ec137 100644 --- a/tests/playmat_resolver_test.cpp +++ b/tests/playmat_resolver_test.cpp @@ -1,6 +1,15 @@ +#include "libcockatrice/interfaces/interface_interface_settings_provider.h" +#include "libcockatrice/utility/card_ref.h" +#include "libcockatrice/utility/playmat_params.h" + +#include +#include +#include +#include #include #include #include +#include namespace { diff --git a/tests/report_categories_test.cpp b/tests/report_categories_test.cpp index 790b2cff6..1e08938db 100644 --- a/tests/report_categories_test.cpp +++ b/tests/report_categories_test.cpp @@ -3,6 +3,7 @@ #include #include #include +#include TEST(ReportCategoriesTest, CanonicalListIsNonEmptyAndStable) { diff --git a/tests/server_card_counter_test.cpp b/tests/server_card_counter_test.cpp index c8bc43f8f..6308d80b9 100644 --- a/tests/server_card_counter_test.cpp +++ b/tests/server_card_counter_test.cpp @@ -3,12 +3,14 @@ * @ingroup Tests */ +#include +#include #include #include #include #include #include -#include +#include TEST(ServerCardCounter, IncrementNewCounter) { diff --git a/tests/server_counter_test.cpp b/tests/server_counter_test.cpp index 0f41f2cbd..492aecf66 100644 --- a/tests/server_counter_test.cpp +++ b/tests/server_counter_test.cpp @@ -3,9 +3,13 @@ * @ingroup Tests */ +#include "libcockatrice/protocol/pb/color.pb.h" + +#include #include #include #include +#include TEST(ServerCounter, IncrementDoesNotOverflow) { diff --git a/tests/server_developer_role_test.cpp b/tests/server_developer_role_test.cpp index 127f606a8..c77fc5b21 100644 --- a/tests/server_developer_role_test.cpp +++ b/tests/server_developer_role_test.cpp @@ -3,6 +3,10 @@ * @ingroup Tests */ +#include "libcockatrice/protocol/pb/response.pb.h" +#include "libcockatrice/protocol/pb/server_message.pb.h" + +#include #include #include #include @@ -11,6 +15,8 @@ #include #include #include +#include +#include // The server_remote library references the global RNG, which is normally // defined by the servatrice/client executable main(). Provide a stub so the diff --git a/tests/server_game_join_test.cpp b/tests/server_game_join_test.cpp index c84e4e066..8a2ae8c45 100644 --- a/tests/server_game_join_test.cpp +++ b/tests/server_game_join_test.cpp @@ -3,14 +3,19 @@ * @ingroup Tests */ +#include "game/game_config.h" #include "game/server_game.h" +#include "libcockatrice/protocol/pb/response.pb.h" #include "server.h" #include "server_database_interface.h" #include "server_room.h" +#include +#include #include #include #include +#include RNG_Abstract *rng = nullptr; // referenced by the server_remote library diff --git a/tests/server_rate_limiter_test.cpp b/tests/server_rate_limiter_test.cpp index bc15ca421..8459c9690 100644 --- a/tests/server_rate_limiter_test.cpp +++ b/tests/server_rate_limiter_test.cpp @@ -1,7 +1,11 @@ #include "gtest/gtest.h" #include +#include #include +#include +#include #include +#include namespace { diff --git a/tests/settings/settings_defaults_test.cpp b/tests/settings/settings_defaults_test.cpp index 379f6cd84..03de21e8a 100644 --- a/tests/settings/settings_defaults_test.cpp +++ b/tests/settings/settings_defaults_test.cpp @@ -1,5 +1,10 @@ +#include "libcockatrice/card/card_localization.h" + #include "gtest/gtest.h" -#include +#include +#include +#include +#include #include #include #include @@ -15,6 +20,8 @@ #include #include #include +#include +#include namespace { diff --git a/tests/settings/settings_manager_test.cpp b/tests/settings/settings_manager_test.cpp index 51eb66dbb..23d27aa78 100644 --- a/tests/settings/settings_manager_test.cpp +++ b/tests/settings/settings_manager_test.cpp @@ -1,7 +1,11 @@ #include "gtest/gtest.h" #include +#include #include +#include +#include #include +#include namespace { diff --git a/tests/settings/settings_migration_test.cpp b/tests/settings/settings_migration_test.cpp index 84b948d2e..8994ebca6 100644 --- a/tests/settings/settings_migration_test.cpp +++ b/tests/settings/settings_migration_test.cpp @@ -1,13 +1,24 @@ #include "gtest/gtest.h" +#include +#include +#include #include #include #include #include #include +#include +#include #include +#include #include +#include #include +#include +#include #include +#include +#include namespace { diff --git a/tests/single_instance_manager_test.cpp b/tests/single_instance_manager_test.cpp index 49193850d..bc8074580 100644 --- a/tests/single_instance_manager_test.cpp +++ b/tests/single_instance_manager_test.cpp @@ -1,12 +1,18 @@ #include "single_instance_manager.h" +#include #include #include #include +#include +#include #include #include +#include #include +#include #include +#include namespace { diff --git a/tests/test_age_formatting.cpp b/tests/test_age_formatting.cpp index 6a9d5d4af..8602ffdc0 100644 --- a/tests/test_age_formatting.cpp +++ b/tests/test_age_formatting.cpp @@ -1,5 +1,8 @@ #include "gtest/gtest.h" +#include +#include #include +#include namespace { diff --git a/tests/theme_migration/theme_migration_test.cpp b/tests/theme_migration/theme_migration_test.cpp index 147833630..d77c2f62d 100644 --- a/tests/theme_migration/theme_migration_test.cpp +++ b/tests/theme_migration/theme_migration_test.cpp @@ -1,11 +1,15 @@ #include "interface/theme_manager.h" +#include #include #include #include +#include #include +#include #include #include +#include // Owned by main.cpp in the real application; pixel_map_generator.cpp references // it, so the test binary needs a definition even though it never renders. diff --git a/tests/translation_loader_test.cpp b/tests/translation_loader_test.cpp index d54001ad3..745cd04bc 100644 --- a/tests/translation_loader_test.cpp +++ b/tests/translation_loader_test.cpp @@ -1,12 +1,17 @@ #include "gtest/gtest.h" +#include #include #include #include +#include #include #include +#include +#include #include #include #include +#include // The directory holding translation_loader_test_de.qm, compiled from translation_loader_test.ts by the // build. QTranslator rejects anything that is not a real .qm file, so a stub cannot stand in here. diff --git a/tests/warning_categories_test.cpp b/tests/warning_categories_test.cpp index 432885dd9..549c373b5 100644 --- a/tests/warning_categories_test.cpp +++ b/tests/warning_categories_test.cpp @@ -1,6 +1,8 @@ #include "gtest/gtest.h" +#include #include #include +#include TEST(WarningCategoriesTest, EmptyValueYieldsNoCategories) { From 870ab23608ac59925b2fa4348725f3689daeab4a Mon Sep 17 00:00:00 2001 From: BruebachL <44814898+BruebachL@users.noreply.github.com> Date: Thu, 8 Oct 2026 11:17:01 +0200 Subject: [PATCH 10/28] [Tooling] Add IWYU Qt6 mapping, generator, and runner script (#7454) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Lukas Brübach --- iwyu.sh | 226 +++ qt6.imp | 2471 +++++++++++++++++++++++++++++++++ tools/generate_qt_mappings.py | 208 +++ 3 files changed, 2905 insertions(+) create mode 100755 iwyu.sh create mode 100644 qt6.imp create mode 100755 tools/generate_qt_mappings.py diff --git a/iwyu.sh b/iwyu.sh new file mode 100755 index 000000000..279200adf --- /dev/null +++ b/iwyu.sh @@ -0,0 +1,226 @@ +#!/bin/bash + +# This script runs include-what-you-use on the given source files or +# directories, applies its suggestions (forward declarations, minimal and +# canonical #includes), then reformats the touched files with clang-format. +# +# Uses include-what-you-use, iwyu_tool.py, fix_includes.py, clang-format and +# python3. Requires a build directory configured with +# -DCMAKE_EXPORT_COMPILE_COMMANDS=ON to provide compile_commands.json. +# +# The Qt 6 mapping (qt6.imp) makes IWYU prefer capital includes like +# #include over #include and keeps forward declarations +# where possible. Regenerate it with tools/generate_qt_mappings.py whenever the +# installed Qt version changes. +# +# Usage: +# ./iwyu.sh [-b ] [-m ] [-j ] [-n] +# +# Options: +# -b, --build-dir DIR build dir with compile_commands.json (default: build) +# -m, --mapping FILE IWYU mapping file (default: qt6.imp) +# -j, --jobs N IWYU parallel jobs (default: 2) +# -n, --dry-run only print IWYU output, do not modify any file + +set -o pipefail + +# go to the project root directory, this file should be located in the project root directory +cd "${BASH_SOURCE%/*}/" || exit 2 # could not find path, this could happen with special links etc. + +# defaults +build_dir="build" +mapping="qt6.imp" +jobs=2 +dry_run=0 + +# 3rd party code that must not be touched by IWYU or clang-format +excludes=("libcockatrice_rng/libcockatrice/rng/sfmt/" \ +"libcockatrice_utility/libcockatrice/utility/peglib.h" \ +"oracle/src/lzma/" \ +"oracle/src/qt-json/" \ +"oracle/src/zip/" \ +"servatrice/src/smtp/") + +usage() { + cat <] [-m ] [-j ] [-n] + +Runs include-what-you-use on the given files/directories, applies the +suggested include changes in place, and reformats touched files. + +Options: + -b, --build-dir DIR build dir with compile_commands.json (default: build) + -m, --mapping FILE IWYU mapping file (default: qt6.imp) + -j, --jobs N IWYU parallel jobs (default: 2) + -n, --dry-run only print IWYU output, do not modify any file + -h, --help show this help +EOM +} + +# parse options +while [[ $* ]]; do + case "$1" in + '-b'|'--build-dir') + build_dir=$2 + shift 2 + ;; + '-m'|'--mapping') + mapping=$2 + shift 2 + ;; + '-j'|'--jobs') + jobs=$2 + shift 2 + ;; + '-n'|'--dry-run') + dry_run=1 + shift + ;; + '-h'|'--help') + usage + exit 0 + ;; + *) + targets+=("$1") + shift + ;; + esac +done + +# find the IWYU tools, preferring PATH and falling back to the LLVM dir +find_tool() { + local tool=$1 + local path + if path=$(command -v "$tool" 2>/dev/null); then + echo "$path" + elif [ -x "/usr/lib/llvm/22/bin/$tool" ]; then + echo "/usr/lib/llvm/22/bin/$tool" + else + return 1 + fi +} + +find_tool include-what-you-use > /dev/null || { echo "error: include-what-you-use not found"; exit 1; } +IWYU_TOOL=$(find_tool iwyu_tool.py) || { echo "error: iwyu_tool.py not found"; exit 1; } +FIX_INCLUDES=$(find_tool fix_includes.py) || { echo "error: fix_includes.py not found"; exit 1; } +command -v clang-format >/dev/null 2>&1 || { echo "error: clang-format not found"; exit 1; } + +if [ "${#targets[@]}" -eq 0 ]; then + echo "error: specify at least one source file or directory" >&2 + usage + exit 1 +fi + +if [ ! -f "$mapping" ]; then + echo "error: mapping file '$mapping' not found" >&2 + exit 1 +fi + +if [ ! -f "$build_dir/compile_commands.json" ]; then + echo "error: '$build_dir/compile_commands.json' not found" >&2 + echo "configure the build with -DCMAKE_EXPORT_COMPILE_COMMANDS=ON first" >&2 + exit 1 +fi + +tmpdir=$(mktemp -d /tmp/iwyu.XXXXXX) +trap 'rm -rf "$tmpdir"' EXIT + +# filter the compilation database: drop excluded 3rd party code and strip the +# GCC-only flags that clang/include-what-you-use rejects +root="$PWD" +python3 - "$build_dir/compile_commands.json" "$root" "${excludes[@]}" <<'PYEOF' > "$tmpdir/compile_commands.json" +import json +import os +import re +import sys + +cc_path, root = sys.argv[1], sys.argv[2] +excludes = sys.argv[3:] +root = os.path.normpath(root) +excl_norm = [os.path.normpath(os.path.join(root, e)) for e in excludes] + +out = [] +for entry in json.load(open(cc_path)): + path = os.path.normpath(entry['file']) + if not path.startswith(root + os.sep): + continue + # skip generated code: protobuf output and moc autogen files + if re.search(r'\.pb\.(h|cc)$', path) or '_autogen/' in path: + continue + if any(path.startswith(e + os.sep) or path == e for e in excl_norm): + continue + command = entry.get('command', '') + command = re.sub(r'-mno-direct-extern-access', '', command) + command = re.sub(r'--coverage', '', command) + out.append(dict(entry, command=command)) + +json.dump(out, sys.stdout) +PYEOF + +mapping_abs="$PWD/$mapping" +if [ "$dry_run" = 1 ]; then + python3 "$IWYU_TOOL" -p "$tmpdir" -o iwyu -j "$jobs" "${targets[@]}" \ + -- -Xiwyu "--mapping_file=$mapping_abs" +else + before=$(git diff --name-only 2>/dev/null | sort -u) + + python3 "$IWYU_TOOL" -p "$tmpdir" -o iwyu -j "$jobs" "${targets[@]}" \ + -- -Xiwyu "--mapping_file=$mapping_abs" | + python3 "$FIX_INCLUDES" --nosafe_headers --nocomments --noreorder --basedir="$root" + + # fix_includes can emit absolute paths for headers that the compiler resolved + # through an absolute -I entry. Those are machine-specific and break every + # other checkout and CI, so rewrite them into the project-relative quoted + # form the codebase uses. Must run before clang-format so the regroup/sort + # pass sees the final paths. + python3 - "$root" <<'PYEOF' +import os +import re +import subprocess +import sys + +root = os.path.normpath(sys.argv[1]) +pattern = re.compile(r'^(\s*#\s*include\s*)"(/)') + +# Collect from git so untracked scratch files are left alone. +changed = subprocess.run( + ['git', 'diff', '--name-only', '--diff-filter=ACMR'], + capture_output=True, text=True, check=True).stdout.split() + +for rel in changed: + if not rel.endswith(('.h', '.cpp', '.cc', '.cxx')): + continue + path = os.path.join(root, rel) + if not os.path.isfile(path): + continue + src = open(path, encoding='utf-8').read() + if '"' + os.sep not in src: + continue + out = [] + for line in src.split('\n'): + m = pattern.match(line) + if not m: + out.append(line) + continue + target = os.path.normpath(line[m.end(1) + 1:].rstrip('"')) + if not target.startswith(root + os.sep): + out.append(line) + continue + spelled = os.path.relpath(target, os.path.dirname(path)) + out.append(f'{m.group(1)}"{spelled}"') + new = '\n'.join(out) + if new != src: + open(path, 'w', encoding='utf-8').write(new) +PYEOF + + # reformat every file this IWYU pass modified (fix_includes also touches + # headers pulled in by the requested files) + touched=$(comm -13 <(printf '%s\n' "$before") <(git diff --name-only 2>/dev/null | sort -u)) + for file in $touched; do + case "$file" in + *.h|*.cpp) + clang-format -i "$file" + ;; + esac + done +fi diff --git a/qt6.imp b/qt6.imp new file mode 100644 index 000000000..4f09d6406 --- /dev/null +++ b/qt6.imp @@ -0,0 +1,2471 @@ +# Do not edit! Generated by generate_qt_mappings.py from +# /usr/include/qt6 +[ + { "symbol": [ "QAbstractAnimation", "private", "", "public"] }, + { "symbol": [ "QAbstractButton", "private", "", "public"] }, + { "symbol": [ "QAbstractEventDispatcher", "private", "", "public"] }, + { "symbol": [ "QAbstractEventDispatcherV2", "private", "", "public"] }, + { "symbol": [ "QAbstractFileIconProvider", "private", "", "public"] }, + { "symbol": [ "QAbstractGraphicsShapeItem", "private", "", "public"] }, + { "symbol": [ "QAbstractItemDelegate", "private", "", "public"] }, + { "symbol": [ "QAbstractItemModel", "private", "", "public"] }, + { "symbol": [ "QAbstractItemModelTester", "private", "", "public"] }, + { "symbol": [ "QAbstractItemView", "private", "", "public"] }, + { "symbol": [ "QAbstractListModel", "private", "", "public"] }, + { "symbol": [ "QAbstractNativeEventFilter", "private", "", "public"] }, + { "symbol": [ "QAbstractNetworkCache", "private", "", "public"] }, + { "symbol": [ "QAbstractOAuth", "private", "", "public"] }, + { "symbol": [ "QAbstractOAuth2", "private", "", "public"] }, + { "symbol": [ "QAbstractOAuthReplyHandler", "private", "", "public"] }, + { "symbol": [ "QAbstractPrintDialog", "private", "", "public"] }, + { "symbol": [ "QAbstractProxyModel", "private", "", "public"] }, + { "symbol": [ "QAbstractScrollArea", "private", "", "public"] }, + { "symbol": [ "QAbstractSlider", "private", "", "public"] }, + { "symbol": [ "QAbstractSocket", "private", "", "public"] }, + { "symbol": [ "QAbstractSpinBox", "private", "", "public"] }, + { "symbol": [ "QAbstractState", "private", "", "public"] }, + { "symbol": [ "QAbstractTableModel", "private", "", "public"] }, + { "symbol": [ "QAbstractTextDocumentLayout", "private", "", "public"] }, + { "symbol": [ "QAbstractTransition", "private", "", "public"] }, + { "symbol": [ "QAbstractUndoItem", "private", "", "public"] }, + { "symbol": [ "QAbstractVideoBuffer", "private", "", "public"] }, + { "symbol": [ "QAccessibilityHints", "private", "", "public"] }, + { "symbol": [ "QAccessible", "private", "", "public"] }, + { "symbol": [ "QAccessibleActionInterface", "private", "", "public"] }, + { "symbol": [ "QAccessibleAnnouncementEvent", "private", "", "public"] }, + { "symbol": [ "QAccessibleApplication", "private", "", "public"] }, + { "symbol": [ "QAccessibleAttributesInterface", "private", "", "public"] }, + { "symbol": [ "QAccessibleBridge", "private", "", "public"] }, + { "symbol": [ "QAccessibleBridgePlugin", "private", "", "public"] }, + { "symbol": [ "QAccessibleEditableTextInterface", "private", "", "public"] }, + { "symbol": [ "QAccessibleEvent", "private", "", "public"] }, + { "symbol": [ "QAccessibleHyperlinkInterface", "private", "", "public"] }, + { "symbol": [ "QAccessibleImageInterface", "private", "", "public"] }, + { "symbol": [ "QAccessibleInterface", "private", "", "public"] }, + { "symbol": [ "QAccessibleObject", "private", "", "public"] }, + { "symbol": [ "QAccessiblePlugin", "private", "", "public"] }, + { "symbol": [ "QAccessibleSelectionInterface", "private", "", "public"] }, + { "symbol": [ "QAccessibleStateChangeEvent", "private", "", "public"] }, + { "symbol": [ "QAccessibleTableCellInterface", "private", "", "public"] }, + { "symbol": [ "QAccessibleTableInterface", "private", "", "public"] }, + { "symbol": [ "QAccessibleTableModelChangeEvent", "private", "", "public"] }, + { "symbol": [ "QAccessibleTextCursorEvent", "private", "", "public"] }, + { "symbol": [ "QAccessibleTextInsertEvent", "private", "", "public"] }, + { "symbol": [ "QAccessibleTextInterface", "private", "", "public"] }, + { "symbol": [ "QAccessibleTextRemoveEvent", "private", "", "public"] }, + { "symbol": [ "QAccessibleTextSelectionEvent", "private", "", "public"] }, + { "symbol": [ "QAccessibleTextUpdateEvent", "private", "", "public"] }, + { "symbol": [ "QAccessibleValueChangeEvent", "private", "", "public"] }, + { "symbol": [ "QAccessibleValueInterface", "private", "", "public"] }, + { "symbol": [ "QAccessibleWidget", "private", "", "public"] }, + { "symbol": [ "QAccessibleWidgetV2", "private", "", "public"] }, + { "symbol": [ "QAction", "private", "", "public"] }, + { "symbol": [ "QActionEvent", "private", "", "public"] }, + { "symbol": [ "QActionGroup", "private", "", "public"] }, + { "symbol": [ "QAmbientSound", "private", "", "public"] }, + { "symbol": [ "QAnimationDriver", "private", "", "public"] }, + { "symbol": [ "QAnimationGroup", "private", "", "public"] }, + { "symbol": [ "QAnyStringView", "private", "", "public"] }, + { "symbol": [ "QApplication", "private", "", "public"] }, + { "symbol": [ "QApplicationStateChangeEvent", "private", "", "public"] }, + { "symbol": [ "QApplicationStatic", "private", "", "public"] }, + { "symbol": [ "QArgument", "private", "", "public"] }, + { "symbol": [ "QArrayData", "private", "", "public"] }, + { "symbol": [ "QArrayDataOps", "private", "", "public"] }, + { "symbol": [ "QArrayDataPointer", "private", "", "public"] }, + { "symbol": [ "QAssociativeConstIterator", "private", "", "public"] }, + { "symbol": [ "QAssociativeIterable", "private", "", "public"] }, + { "symbol": [ "QAssociativeIterator", "private", "", "public"] }, + { "symbol": [ "QAtomicInt", "private", "", "public"] }, + { "symbol": [ "QAtomicInteger", "private", "", "public"] }, + { "symbol": [ "QAtomicPointer", "private", "", "public"] }, + { "symbol": [ "QAtomicScopedValueRollback", "private", "", "public"] }, + { "symbol": [ "QAudio", "private", "", "public"] }, + { "symbol": [ "QAudioBuffer", "private", "", "public"] }, + { "symbol": [ "QAudioBufferInput", "private", "", "public"] }, + { "symbol": [ "QAudioBufferOutput", "private", "", "public"] }, + { "symbol": [ "QAudioDecoder", "private", "", "public"] }, + { "symbol": [ "QAudioDevice", "private", "", "public"] }, + { "symbol": [ "QAudioEngine", "private", "", "public"] }, + { "symbol": [ "QAudioFormat", "private", "", "public"] }, + { "symbol": [ "QAudioFrame", "private", "", "public"] }, + { "symbol": [ "QAudioInput", "private", "", "public"] }, + { "symbol": [ "QAudioListener", "private", "", "public"] }, + { "symbol": [ "QAudioOutput", "private", "", "public"] }, + { "symbol": [ "QAudioRoom", "private", "", "public"] }, + { "symbol": [ "QAudioSink", "private", "", "public"] }, + { "symbol": [ "QAudioSource", "private", "", "public"] }, + { "symbol": [ "QAuthenticator", "private", "", "public"] }, + { "symbol": [ "QBEInteger", "private", "", "public"] }, + { "symbol": [ "QBackingStore", "private", "", "public"] }, + { "symbol": [ "QBaseIterator", "private", "", "public"] }, + { "symbol": [ "QBasicMutex", "private", "", "public"] }, + { "symbol": [ "QBasicReadWriteLock", "private", "", "public"] }, + { "symbol": [ "QBasicTimer", "private", "", "public"] }, + { "symbol": [ "QBasicUtf8StringView", "private", "", "public"] }, + { "symbol": [ "QBigEndianStorageType", "private", "", "public"] }, + { "symbol": [ "QBinaryJson", "private", "", "public"] }, + { "symbol": [ "QBindable", "private", "", "public"] }, + { "symbol": [ "QBindingStatus", "private", "", "public"] }, + { "symbol": [ "QBindingStorage", "private", "", "public"] }, + { "symbol": [ "QBitArray", "private", "", "public"] }, + { "symbol": [ "QBitRef", "private", "", "public"] }, + { "symbol": [ "QBitmap", "private", "", "public"] }, + { "symbol": [ "QBluetoothAddress", "private", "", "public"] }, + { "symbol": [ "QBluetoothDeviceDiscoveryAgent", "private", "", "public"] }, + { "symbol": [ "QBluetoothDeviceInfo", "private", "", "public"] }, + { "symbol": [ "QBluetoothHostInfo", "private", "", "public"] }, + { "symbol": [ "QBluetoothLocalDevice", "private", "", "public"] }, + { "symbol": [ "QBluetoothPermission", "private", "", "public"] }, + { "symbol": [ "QBluetoothServer", "private", "", "public"] }, + { "symbol": [ "QBluetoothServiceDiscoveryAgent", "private", "", "public"] }, + { "symbol": [ "QBluetoothServiceInfo", "private", "", "public"] }, + { "symbol": [ "QBluetoothSocket", "private", "", "public"] }, + { "symbol": [ "QBluetoothUuid", "private", "", "public"] }, + { "symbol": [ "QBoxLayout", "private", "", "public"] }, + { "symbol": [ "QBrush", "private", "", "public"] }, + { "symbol": [ "QBrushData", "private", "", "public"] }, + { "symbol": [ "QBrushDataPointerDeleter", "private", "", "public"] }, + { "symbol": [ "QBuffer", "private", "", "public"] }, + { "symbol": [ "QButtonGroup", "private", "", "public"] }, + { "symbol": [ "QByteArray", "private", "", "public"] }, + { "symbol": [ "QByteArrayAlgorithms", "private", "", "public"] }, + { "symbol": [ "QByteArrayList", "private", "", "public"] }, + { "symbol": [ "QByteArrayListIterator", "private", "", "public"] }, + { "symbol": [ "QByteArrayMatcher", "private", "", "public"] }, + { "symbol": [ "QByteArrayView", "private", "", "public"] }, + { "symbol": [ "QCache", "private", "", "public"] }, + { "symbol": [ "QCalendar", "private", "", "public"] }, + { "symbol": [ "QCalendarPermission", "private", "", "public"] }, + { "symbol": [ "QCalendarWidget", "private", "", "public"] }, + { "symbol": [ "QCamera", "private", "", "public"] }, + { "symbol": [ "QCameraDevice", "private", "", "public"] }, + { "symbol": [ "QCameraFormat", "private", "", "public"] }, + { "symbol": [ "QCapturableWindow", "private", "", "public"] }, + { "symbol": [ "QCborArray", "private", "", "public"] }, + { "symbol": [ "QCborError", "private", "", "public"] }, + { "symbol": [ "QCborMap", "private", "", "public"] }, + { "symbol": [ "QCborParserError", "private", "", "public"] }, + { "symbol": [ "QCborStreamReader", "private", "", "public"] }, + { "symbol": [ "QCborStreamWriter", "private", "", "public"] }, + { "symbol": [ "QCborValue", "private", "", "public"] }, + { "symbol": [ "QCborValueConstRef", "private", "", "public"] }, + { "symbol": [ "QCborValueRef", "private", "", "public"] }, + { "symbol": [ "QChar", "private", "", "public"] }, + { "symbol": [ "QCheckBox", "private", "", "public"] }, + { "symbol": [ "QChildEvent", "private", "", "public"] }, + { "symbol": [ "QChildWindowEvent", "private", "", "public"] }, + { "symbol": [ "QChronoTimer", "private", "", "public"] }, + { "symbol": [ "QClipboard", "private", "", "public"] }, + { "symbol": [ "QCloseEvent", "private", "", "public"] }, + { "symbol": [ "QCollator", "private", "", "public"] }, + { "symbol": [ "QCollatorSortKey", "private", "", "public"] }, + { "symbol": [ "QColor", "private", "", "public"] }, + { "symbol": [ "QColorDialog", "private", "", "public"] }, + { "symbol": [ "QColorSpace", "private", "", "public"] }, + { "symbol": [ "QColorTransform", "private", "", "public"] }, + { "symbol": [ "QColormap", "private", "", "public"] }, + { "symbol": [ "QColumnView", "private", "", "public"] }, + { "symbol": [ "QComboBox", "private", "", "public"] }, + { "symbol": [ "QCommandLineOption", "private", "", "public"] }, + { "symbol": [ "QCommandLineParser", "private", "", "public"] }, + { "symbol": [ "QCommandLinkButton", "private", "", "public"] }, + { "symbol": [ "QCommonStyle", "private", "", "public"] }, + { "symbol": [ "QCompleter", "private", "", "public"] }, + { "symbol": [ "QCompressedHelpInfo", "private", "", "public"] }, + { "symbol": [ "QConcatenateTablesProxyModel", "private", "", "public"] }, + { "symbol": [ "QConicalGradient", "private", "", "public"] }, + { "symbol": [ "QConstIterator", "private", "", "public"] }, + { "symbol": [ "QContactsPermission", "private", "", "public"] }, + { "symbol": [ "QContextMenuEvent", "private", "", "public"] }, + { "symbol": [ "QContiguousCache", "private", "", "public"] }, + { "symbol": [ "QContiguousCacheData", "private", "", "public"] }, + { "symbol": [ "QContiguousCacheTypedData", "private", "", "public"] }, + { "symbol": [ "QCoreApplication", "private", "", "public"] }, + { "symbol": [ "QCryptographicHash", "private", "", "public"] }, + { "symbol": [ "QCursor", "private", "", "public"] }, + { "symbol": [ "QDBusAbstractAdaptor", "private", "", "public"] }, + { "symbol": [ "QDBusAbstractInterface", "private", "", "public"] }, + { "symbol": [ "QDBusAbstractInterfaceBase", "private", "", "public"] }, + { "symbol": [ "QDBusArgument", "private", "", "public"] }, + { "symbol": [ "QDBusConnection", "private", "", "public"] }, + { "symbol": [ "QDBusConnectionInterface", "private", "", "public"] }, + { "symbol": [ "QDBusContext", "private", "", "public"] }, + { "symbol": [ "QDBusError", "private", "", "public"] }, + { "symbol": [ "QDBusInterface", "private", "", "public"] }, + { "symbol": [ "QDBusMessage", "private", "", "public"] }, + { "symbol": [ "QDBusMetaType", "private", "", "public"] }, + { "symbol": [ "QDBusObjectPath", "private", "", "public"] }, + { "symbol": [ "QDBusPendingCall", "private", "", "public"] }, + { "symbol": [ "QDBusPendingCallWatcher", "private", "", "public"] }, + { "symbol": [ "QDBusPendingReply", "private", "", "public"] }, + { "symbol": [ "QDBusPendingReplyBase", "private", "", "public"] }, + { "symbol": [ "QDBusReply", "private", "", "public"] }, + { "symbol": [ "QDBusServer", "private", "", "public"] }, + { "symbol": [ "QDBusServiceWatcher", "private", "", "public"] }, + { "symbol": [ "QDBusSignature", "private", "", "public"] }, + { "symbol": [ "QDBusUnixFileDescriptor", "private", "", "public"] }, + { "symbol": [ "QDBusVariant", "private", "", "public"] }, + { "symbol": [ "QDBusVirtualObject", "private", "", "public"] }, + { "symbol": [ "QDataStream", "private", "", "public"] }, + { "symbol": [ "QDataWidgetMapper", "private", "", "public"] }, + { "symbol": [ "QDate", "private", "", "public"] }, + { "symbol": [ "QDateEdit", "private", "", "public"] }, + { "symbol": [ "QDateTime", "private", "", "public"] }, + { "symbol": [ "QDateTimeEdit", "private", "", "public"] }, + { "symbol": [ "QDeadlineTimer", "private", "", "public"] }, + { "symbol": [ "QDebug", "private", "", "public"] }, + { "symbol": [ "QDebugStateSaver", "private", "", "public"] }, + { "symbol": [ "QDesignerExportWidget", "private", "", "public"] }, + { "symbol": [ "QDesktopServices", "private", "", "public"] }, + { "symbol": [ "QDial", "private", "", "public"] }, + { "symbol": [ "QDialog", "private", "", "public"] }, + { "symbol": [ "QDialogButtonBox", "private", "", "public"] }, + { "symbol": [ "QDir", "private", "", "public"] }, + { "symbol": [ "QDirIterator", "private", "", "public"] }, + { "symbol": [ "QDirListing", "private", "", "public"] }, + { "symbol": [ "QDnsDomainNameRecord", "private", "", "public"] }, + { "symbol": [ "QDnsHostAddressRecord", "private", "", "public"] }, + { "symbol": [ "QDnsLookup", "private", "", "public"] }, + { "symbol": [ "QDnsMailExchangeRecord", "private", "", "public"] }, + { "symbol": [ "QDnsServiceRecord", "private", "", "public"] }, + { "symbol": [ "QDnsTextRecord", "private", "", "public"] }, + { "symbol": [ "QDnsTlsAssociationRecord", "private", "", "public"] }, + { "symbol": [ "QDockWidget", "private", "", "public"] }, + { "symbol": [ "QDomAttr", "private", "", "public"] }, + { "symbol": [ "QDomCDATASection", "private", "", "public"] }, + { "symbol": [ "QDomCharacterData", "private", "", "public"] }, + { "symbol": [ "QDomComment", "private", "", "public"] }, + { "symbol": [ "QDomDocument", "private", "", "public"] }, + { "symbol": [ "QDomDocumentFragment", "private", "", "public"] }, + { "symbol": [ "QDomDocumentType", "private", "", "public"] }, + { "symbol": [ "QDomElement", "private", "", "public"] }, + { "symbol": [ "QDomEntity", "private", "", "public"] }, + { "symbol": [ "QDomEntityReference", "private", "", "public"] }, + { "symbol": [ "QDomImplementation", "private", "", "public"] }, + { "symbol": [ "QDomNamedNodeMap", "private", "", "public"] }, + { "symbol": [ "QDomNode", "private", "", "public"] }, + { "symbol": [ "QDomNodeList", "private", "", "public"] }, + { "symbol": [ "QDomNotation", "private", "", "public"] }, + { "symbol": [ "QDomProcessingInstruction", "private", "", "public"] }, + { "symbol": [ "QDomText", "private", "", "public"] }, + { "symbol": [ "QDoubleSpinBox", "private", "", "public"] }, + { "symbol": [ "QDoubleValidator", "private", "", "public"] }, + { "symbol": [ "QDrag", "private", "", "public"] }, + { "symbol": [ "QDragEnterEvent", "private", "", "public"] }, + { "symbol": [ "QDragLeaveEvent", "private", "", "public"] }, + { "symbol": [ "QDragMoveEvent", "private", "", "public"] }, + { "symbol": [ "QDropEvent", "private", "", "public"] }, + { "symbol": [ "QDtls", "private", "", "public"] }, + { "symbol": [ "QDtlsClientVerifier", "private", "", "public"] }, + { "symbol": [ "QDynamicPropertyChangeEvent", "private", "", "public"] }, + { "symbol": [ "QEasingCurve", "private", "", "public"] }, + { "symbol": [ "QElapsedTimer", "private", "", "public"] }, + { "symbol": [ "QEnableSharedFromThis", "private", "", "public"] }, + { "symbol": [ "QEnterEvent", "private", "", "public"] }, + { "symbol": [ "QErrorMessage", "private", "", "public"] }, + { "symbol": [ "QEvent", "private", "", "public"] }, + { "symbol": [ "QEventLoop", "private", "", "public"] }, + { "symbol": [ "QEventLoopLocker", "private", "", "public"] }, + { "symbol": [ "QEventPoint", "private", "", "public"] }, + { "symbol": [ "QEventTransition", "private", "", "public"] }, + { "symbol": [ "QException", "private", "", "public"] }, + { "symbol": [ "QExplicitlySharedDataPointer", "private", "", "public"] }, + { "symbol": [ "QExposeEvent", "private", "", "public"] }, + { "symbol": [ "QFactoryInterface", "private", "", "public"] }, + { "symbol": [ "QFile", "private", "", "public"] }, + { "symbol": [ "QFileDevice", "private", "", "public"] }, + { "symbol": [ "QFileDialog", "private", "", "public"] }, + { "symbol": [ "QFileIconProvider", "private", "", "public"] }, + { "symbol": [ "QFileInfo", "private", "", "public"] }, + { "symbol": [ "QFileInfoList", "private", "", "public"] }, + { "symbol": [ "QFileOpenEvent", "private", "", "public"] }, + { "symbol": [ "QFileSelector", "private", "", "public"] }, + { "symbol": [ "QFileSystemModel", "private", "", "public"] }, + { "symbol": [ "QFileSystemWatcher", "private", "", "public"] }, + { "symbol": [ "QFinalState", "private", "", "public"] }, + { "symbol": [ "QFlag", "private", "", "public"] }, + { "symbol": [ "QFlags", "private", "", "public"] }, + { "symbol": [ "QFloat16", "private", "", "public"] }, + { "symbol": [ "QFocusEvent", "private", "", "public"] }, + { "symbol": [ "QFocusFrame", "private", "", "public"] }, + { "symbol": [ "QFont", "private", "", "public"] }, + { "symbol": [ "QFontComboBox", "private", "", "public"] }, + { "symbol": [ "QFontDatabase", "private", "", "public"] }, + { "symbol": [ "QFontDialog", "private", "", "public"] }, + { "symbol": [ "QFontInfo", "private", "", "public"] }, + { "symbol": [ "QFontMetrics", "private", "", "public"] }, + { "symbol": [ "QFontMetricsF", "private", "", "public"] }, + { "symbol": [ "QFontVariableAxis", "private", "", "public"] }, + { "symbol": [ "QForeach", "private", "", "public"] }, + { "symbol": [ "QFormDataBuilder", "private", "", "public"] }, + { "symbol": [ "QFormDataPartBuilder", "private", "", "public"] }, + { "symbol": [ "QFormLayout", "private", "", "public"] }, + { "symbol": [ "QFrame", "private", "", "public"] }, + { "symbol": [ "QFunctionPointer", "private", "", "public"] }, + { "symbol": [ "QFuture", "private", "", "public"] }, + { "symbol": [ "QFutureInterface", "private", "", "public"] }, + { "symbol": [ "QFutureInterfaceBase", "private", "", "public"] }, + { "symbol": [ "QFutureIterator", "private", "", "public"] }, + { "symbol": [ "QFutureSynchronizer", "private", "", "public"] }, + { "symbol": [ "QFutureWatcher", "private", "", "public"] }, + { "symbol": [ "QFutureWatcherBase", "private", "", "public"] }, + { "symbol": [ "QGenericArgument", "private", "", "public"] }, + { "symbol": [ "QGenericMatrix", "private", "", "public"] }, + { "symbol": [ "QGenericPlugin", "private", "", "public"] }, + { "symbol": [ "QGenericPluginFactory", "private", "", "public"] }, + { "symbol": [ "QGenericReturnArgument", "private", "", "public"] }, + { "symbol": [ "QGesture", "private", "", "public"] }, + { "symbol": [ "QGestureEvent", "private", "", "public"] }, + { "symbol": [ "QGestureRecognizer", "private", "", "public"] }, + { "symbol": [ "QGlobalStatic", "private", "", "public"] }, + { "symbol": [ "QGlyphRun", "private", "", "public"] }, + { "symbol": [ "QGradient", "private", "", "public"] }, + { "symbol": [ "QGradientStop", "private", "", "public"] }, + { "symbol": [ "QGradientStops", "private", "", "public"] }, + { "symbol": [ "QGraphicsAnchor", "private", "", "public"] }, + { "symbol": [ "QGraphicsAnchorLayout", "private", "", "public"] }, + { "symbol": [ "QGraphicsBlurEffect", "private", "", "public"] }, + { "symbol": [ "QGraphicsColorizeEffect", "private", "", "public"] }, + { "symbol": [ "QGraphicsDropShadowEffect", "private", "", "public"] }, + { "symbol": [ "QGraphicsEffect", "private", "", "public"] }, + { "symbol": [ "QGraphicsEllipseItem", "private", "", "public"] }, + { "symbol": [ "QGraphicsGridLayout", "private", "", "public"] }, + { "symbol": [ "QGraphicsItem", "private", "", "public"] }, + { "symbol": [ "QGraphicsItemAnimation", "private", "", "public"] }, + { "symbol": [ "QGraphicsItemGroup", "private", "", "public"] }, + { "symbol": [ "QGraphicsLayout", "private", "", "public"] }, + { "symbol": [ "QGraphicsLayoutItem", "private", "", "public"] }, + { "symbol": [ "QGraphicsLineItem", "private", "", "public"] }, + { "symbol": [ "QGraphicsLinearLayout", "private", "", "public"] }, + { "symbol": [ "QGraphicsObject", "private", "", "public"] }, + { "symbol": [ "QGraphicsOpacityEffect", "private", "", "public"] }, + { "symbol": [ "QGraphicsPathItem", "private", "", "public"] }, + { "symbol": [ "QGraphicsPixmapItem", "private", "", "public"] }, + { "symbol": [ "QGraphicsPolygonItem", "private", "", "public"] }, + { "symbol": [ "QGraphicsProxyWidget", "private", "", "public"] }, + { "symbol": [ "QGraphicsRectItem", "private", "", "public"] }, + { "symbol": [ "QGraphicsRotation", "private", "", "public"] }, + { "symbol": [ "QGraphicsScale", "private", "", "public"] }, + { "symbol": [ "QGraphicsScene", "private", "", "public"] }, + { "symbol": [ "QGraphicsSceneContextMenuEvent", "private", "", "public"] }, + { "symbol": [ "QGraphicsSceneDragDropEvent", "private", "", "public"] }, + { "symbol": [ "QGraphicsSceneEvent", "private", "", "public"] }, + { "symbol": [ "QGraphicsSceneHelpEvent", "private", "", "public"] }, + { "symbol": [ "QGraphicsSceneHoverEvent", "private", "", "public"] }, + { "symbol": [ "QGraphicsSceneMouseEvent", "private", "", "public"] }, + { "symbol": [ "QGraphicsSceneMoveEvent", "private", "", "public"] }, + { "symbol": [ "QGraphicsSceneResizeEvent", "private", "", "public"] }, + { "symbol": [ "QGraphicsSceneWheelEvent", "private", "", "public"] }, + { "symbol": [ "QGraphicsSimpleTextItem", "private", "", "public"] }, + { "symbol": [ "QGraphicsSvgItem", "private", "", "public"] }, + { "symbol": [ "QGraphicsTextItem", "private", "", "public"] }, + { "symbol": [ "QGraphicsTransform", "private", "", "public"] }, + { "symbol": [ "QGraphicsVideoItem", "private", "", "public"] }, + { "symbol": [ "QGraphicsView", "private", "", "public"] }, + { "symbol": [ "QGraphicsWidget", "private", "", "public"] }, + { "symbol": [ "QGridLayout", "private", "", "public"] }, + { "symbol": [ "QGroupBox", "private", "", "public"] }, + { "symbol": [ "QGuiApplication", "private", "", "public"] }, + { "symbol": [ "QHBoxLayout", "private", "", "public"] }, + { "symbol": [ "QHash", "private", "", "public"] }, + { "symbol": [ "QHashDummyValue", "private", "", "public"] }, + { "symbol": [ "QHashFunctions", "private", "", "public"] }, + { "symbol": [ "QHashHeterogeneousSearch", "private", "", "public"] }, + { "symbol": [ "QHashIterator", "private", "", "public"] }, + { "symbol": [ "QHashSeed", "private", "", "public"] }, + { "symbol": [ "QHeaderView", "private", "", "public"] }, + { "symbol": [ "QHelpContentItem", "private", "", "public"] }, + { "symbol": [ "QHelpContentModel", "private", "", "public"] }, + { "symbol": [ "QHelpContentWidget", "private", "", "public"] }, + { "symbol": [ "QHelpEngine", "private", "", "public"] }, + { "symbol": [ "QHelpEngineCore", "private", "", "public"] }, + { "symbol": [ "QHelpEvent", "private", "", "public"] }, + { "symbol": [ "QHelpFilterData", "private", "", "public"] }, + { "symbol": [ "QHelpFilterEngine", "private", "", "public"] }, + { "symbol": [ "QHelpFilterSettingsWidget", "private", "", "public"] }, + { "symbol": [ "QHelpGlobal", "private", "", "public"] }, + { "symbol": [ "QHelpIndexModel", "private", "", "public"] }, + { "symbol": [ "QHelpIndexWidget", "private", "", "public"] }, + { "symbol": [ "QHelpLink", "private", "", "public"] }, + { "symbol": [ "QHelpSearchEngine", "private", "", "public"] }, + { "symbol": [ "QHelpSearchEngineCore", "private", "", "public"] }, + { "symbol": [ "QHelpSearchQuery", "private", "", "public"] }, + { "symbol": [ "QHelpSearchQueryWidget", "private", "", "public"] }, + { "symbol": [ "QHelpSearchResult", "private", "", "public"] }, + { "symbol": [ "QHelpSearchResultWidget", "private", "", "public"] }, + { "symbol": [ "QHideEvent", "private", "", "public"] }, + { "symbol": [ "QHistoryState", "private", "", "public"] }, + { "symbol": [ "QHostAddress", "private", "", "public"] }, + { "symbol": [ "QHostInfo", "private", "", "public"] }, + { "symbol": [ "QHoverEvent", "private", "", "public"] }, + { "symbol": [ "QHstsPolicy", "private", "", "public"] }, + { "symbol": [ "QHttp1Configuration", "private", "", "public"] }, + { "symbol": [ "QHttp2Configuration", "private", "", "public"] }, + { "symbol": [ "QHttpHeaders", "private", "", "public"] }, + { "symbol": [ "QHttpMultiPart", "private", "", "public"] }, + { "symbol": [ "QHttpPart", "private", "", "public"] }, + { "symbol": [ "QIODevice", "private", "", "public"] }, + { "symbol": [ "QIODeviceBase", "private", "", "public"] }, + { "symbol": [ "QIPv6Address", "private", "", "public"] }, + { "symbol": [ "QIcon", "private", "", "public"] }, + { "symbol": [ "QIconDragEvent", "private", "", "public"] }, + { "symbol": [ "QIconEngine", "private", "", "public"] }, + { "symbol": [ "QIconEnginePlugin", "private", "", "public"] }, + { "symbol": [ "QIdentityProxyModel", "private", "", "public"] }, + { "symbol": [ "QImage", "private", "", "public"] }, + { "symbol": [ "QImageCapture", "private", "", "public"] }, + { "symbol": [ "QImageCleanupFunction", "private", "", "public"] }, + { "symbol": [ "QImageIOHandler", "private", "", "public"] }, + { "symbol": [ "QImageIOPlugin", "private", "", "public"] }, + { "symbol": [ "QImageReader", "private", "", "public"] }, + { "symbol": [ "QImageWriter", "private", "", "public"] }, + { "symbol": [ "QIncompatibleFlag", "private", "", "public"] }, + { "symbol": [ "QInputDevice", "private", "", "public"] }, + { "symbol": [ "QInputDialog", "private", "", "public"] }, + { "symbol": [ "QInputEvent", "private", "", "public"] }, + { "symbol": [ "QInputMethod", "private", "", "public"] }, + { "symbol": [ "QInputMethodEvent", "private", "", "public"] }, + { "symbol": [ "QInputMethodQueryEvent", "private", "", "public"] }, + { "symbol": [ "QIntValidator", "private", "", "public"] }, + { "symbol": [ "QInternal", "private", "", "public"] }, + { "symbol": [ "QItemDelegate", "private", "", "public"] }, + { "symbol": [ "QItemEditorCreator", "private", "", "public"] }, + { "symbol": [ "QItemEditorCreatorBase", "private", "", "public"] }, + { "symbol": [ "QItemEditorFactory", "private", "", "public"] }, + { "symbol": [ "QItemSelection", "private", "", "public"] }, + { "symbol": [ "QItemSelectionModel", "private", "", "public"] }, + { "symbol": [ "QItemSelectionRange", "private", "", "public"] }, + { "symbol": [ "QIterable", "private", "", "public"] }, + { "symbol": [ "QIterator", "private", "", "public"] }, + { "symbol": [ "QJSEngine", "private", "", "public"] }, + { "symbol": [ "QJSList", "private", "", "public"] }, + { "symbol": [ "QJSListForInIterator", "private", "", "public"] }, + { "symbol": [ "QJSListForOfIterator", "private", "", "public"] }, + { "symbol": [ "QJSListIndexClamp", "private", "", "public"] }, + { "symbol": [ "QJSManagedValue", "private", "", "public"] }, + { "symbol": [ "QJSNumberCoercion", "private", "", "public"] }, + { "symbol": [ "QJSPrimitiveValue", "private", "", "public"] }, + { "symbol": [ "QJSValue", "private", "", "public"] }, + { "symbol": [ "QJSValueIterator", "private", "", "public"] }, + { "symbol": [ "QJSValueList", "private", "", "public"] }, + { "symbol": [ "QJsonArray", "private", "", "public"] }, + { "symbol": [ "QJsonDocument", "private", "", "public"] }, + { "symbol": [ "QJsonObject", "private", "", "public"] }, + { "symbol": [ "QJsonParseError", "private", "", "public"] }, + { "symbol": [ "QJsonValue", "private", "", "public"] }, + { "symbol": [ "QJsonValueConstRef", "private", "", "public"] }, + { "symbol": [ "QJsonValueRef", "private", "", "public"] }, + { "symbol": [ "QKeyCombination", "private", "", "public"] }, + { "symbol": [ "QKeyEvent", "private", "", "public"] }, + { "symbol": [ "QKeyEventTransition", "private", "", "public"] }, + { "symbol": [ "QKeySequence", "private", "", "public"] }, + { "symbol": [ "QKeySequenceEdit", "private", "", "public"] }, + { "symbol": [ "QKeyValueIterator", "private", "", "public"] }, + { "symbol": [ "QLCDNumber", "private", "", "public"] }, + { "symbol": [ "QLEInteger", "private", "", "public"] }, + { "symbol": [ "QLabel", "private", "", "public"] }, + { "symbol": [ "QLatin1Char", "private", "", "public"] }, + { "symbol": [ "QLatin1String", "private", "", "public"] }, + { "symbol": [ "QLatin1StringMatcher", "private", "", "public"] }, + { "symbol": [ "QLatin1StringView", "private", "", "public"] }, + { "symbol": [ "QLayout", "private", "", "public"] }, + { "symbol": [ "QLayoutItem", "private", "", "public"] }, + { "symbol": [ "QLibrary", "private", "", "public"] }, + { "symbol": [ "QLibraryInfo", "private", "", "public"] }, + { "symbol": [ "QLine", "private", "", "public"] }, + { "symbol": [ "QLineEdit", "private", "", "public"] }, + { "symbol": [ "QLineF", "private", "", "public"] }, + { "symbol": [ "QLinearGradient", "private", "", "public"] }, + { "symbol": [ "QLinkedList", "private", "", "public"] }, + { "symbol": [ "QLinkedListData", "private", "", "public"] }, + { "symbol": [ "QLinkedListIterator", "private", "", "public"] }, + { "symbol": [ "QLinkedListNode", "private", "", "public"] }, + { "symbol": [ "QList", "private", "", "public"] }, + { "symbol": [ "QListIterator", "private", "", "public"] }, + { "symbol": [ "QListSpecialMethods", "private", "", "public"] }, + { "symbol": [ "QListSpecialMethodsBase", "private", "", "public"] }, + { "symbol": [ "QListView", "private", "", "public"] }, + { "symbol": [ "QListWidget", "private", "", "public"] }, + { "symbol": [ "QListWidgetItem", "private", "", "public"] }, + { "symbol": [ "QLittleEndianStorageType", "private", "", "public"] }, + { "symbol": [ "QLocalServer", "private", "", "public"] }, + { "symbol": [ "QLocalSocket", "private", "", "public"] }, + { "symbol": [ "QLocale", "private", "", "public"] }, + { "symbol": [ "QLocationPermission", "private", "", "public"] }, + { "symbol": [ "QLockFile", "private", "", "public"] }, + { "symbol": [ "QLoggingCategory", "private", "", "public"] }, + { "symbol": [ "QLowEnergyAdvertisingData", "private", "", "public"] }, + { "symbol": [ "QLowEnergyAdvertisingParameters", "private", "", "public"] }, + { "symbol": [ "QLowEnergyCharacteristic", "private", "", "public"] }, + { "symbol": [ "QLowEnergyCharacteristicData", "private", "", "public"] }, + { "symbol": [ "QLowEnergyConnectionParameters", "private", "", "public"] }, + { "symbol": [ "QLowEnergyController", "private", "", "public"] }, + { "symbol": [ "QLowEnergyDescriptor", "private", "", "public"] }, + { "symbol": [ "QLowEnergyDescriptorData", "private", "", "public"] }, + { "symbol": [ "QLowEnergyHandle", "private", "", "public"] }, + { "symbol": [ "QLowEnergyService", "private", "", "public"] }, + { "symbol": [ "QLowEnergyServiceData", "private", "", "public"] }, + { "symbol": [ "QMainWindow", "private", "", "public"] }, + { "symbol": [ "QMap", "private", "", "public"] }, + { "symbol": [ "QMapData", "private", "", "public"] }, + { "symbol": [ "QMapIterator", "private", "", "public"] }, + { "symbol": [ "QMargins", "private", "", "public"] }, + { "symbol": [ "QMarginsF", "private", "", "public"] }, + { "symbol": [ "QMaskGenerator", "private", "", "public"] }, + { "symbol": [ "QMatrix2x2", "private", "", "public"] }, + { "symbol": [ "QMatrix2x3", "private", "", "public"] }, + { "symbol": [ "QMatrix2x4", "private", "", "public"] }, + { "symbol": [ "QMatrix3x2", "private", "", "public"] }, + { "symbol": [ "QMatrix3x3", "private", "", "public"] }, + { "symbol": [ "QMatrix3x4", "private", "", "public"] }, + { "symbol": [ "QMatrix4x2", "private", "", "public"] }, + { "symbol": [ "QMatrix4x3", "private", "", "public"] }, + { "symbol": [ "QMatrix4x4", "private", "", "public"] }, + { "symbol": [ "QMdiArea", "private", "", "public"] }, + { "symbol": [ "QMdiSubWindow", "private", "", "public"] }, + { "symbol": [ "QMediaCaptureSession", "private", "", "public"] }, + { "symbol": [ "QMediaDevices", "private", "", "public"] }, + { "symbol": [ "QMediaFormat", "private", "", "public"] }, + { "symbol": [ "QMediaMetaData", "private", "", "public"] }, + { "symbol": [ "QMediaPlayer", "private", "", "public"] }, + { "symbol": [ "QMediaRecorder", "private", "", "public"] }, + { "symbol": [ "QMediaTimeRange", "private", "", "public"] }, + { "symbol": [ "QMenu", "private", "", "public"] }, + { "symbol": [ "QMenuBar", "private", "", "public"] }, + { "symbol": [ "QMessageAuthenticationCode", "private", "", "public"] }, + { "symbol": [ "QMessageBox", "private", "", "public"] }, + { "symbol": [ "QMessageLogContext", "private", "", "public"] }, + { "symbol": [ "QMessageLogger", "private", "", "public"] }, + { "symbol": [ "QMetaAssociation", "private", "", "public"] }, + { "symbol": [ "QMetaClassInfo", "private", "", "public"] }, + { "symbol": [ "QMetaContainer", "private", "", "public"] }, + { "symbol": [ "QMetaEnum", "private", "", "public"] }, + { "symbol": [ "QMetaMethod", "private", "", "public"] }, + { "symbol": [ "QMetaMethodArgument", "private", "", "public"] }, + { "symbol": [ "QMetaMethodReturnArgument", "private", "", "public"] }, + { "symbol": [ "QMetaObject", "private", "", "public"] }, + { "symbol": [ "QMetaProperty", "private", "", "public"] }, + { "symbol": [ "QMetaSequence", "private", "", "public"] }, + { "symbol": [ "QMetaType", "private", "", "public"] }, + { "symbol": [ "QMetaTypeId", "private", "", "public"] }, + { "symbol": [ "QMetaTypeId2", "private", "", "public"] }, + { "symbol": [ "QMetaTypeIdQObject", "private", "", "public"] }, + { "symbol": [ "QMethodRawArguments", "private", "", "public"] }, + { "symbol": [ "QMimeData", "private", "", "public"] }, + { "symbol": [ "QMimeDatabase", "private", "", "public"] }, + { "symbol": [ "QMimeType", "private", "", "public"] }, + { "symbol": [ "QModelIndex", "private", "", "public"] }, + { "symbol": [ "QModelIndexList", "private", "", "public"] }, + { "symbol": [ "QModelRoleData", "private", "", "public"] }, + { "symbol": [ "QModelRoleDataSpan", "private", "", "public"] }, + { "symbol": [ "QMouseEvent", "private", "", "public"] }, + { "symbol": [ "QMouseEventTransition", "private", "", "public"] }, + { "symbol": [ "QMoveEvent", "private", "", "public"] }, + { "symbol": [ "QMovie", "private", "", "public"] }, + { "symbol": [ "QMultiHash", "private", "", "public"] }, + { "symbol": [ "QMultiHashIterator", "private", "", "public"] }, + { "symbol": [ "QMultiMap", "private", "", "public"] }, + { "symbol": [ "QMultiMapIterator", "private", "", "public"] }, + { "symbol": [ "QMutableByteArrayListIterator", "private", "", "public"] }, + { "symbol": [ "QMutableFutureIterator", "private", "", "public"] }, + { "symbol": [ "QMutableHashIterator", "private", "", "public"] }, + { "symbol": [ "QMutableLinkedListIterator", "private", "", "public"] }, + { "symbol": [ "QMutableListIterator", "private", "", "public"] }, + { "symbol": [ "QMutableMapIterator", "private", "", "public"] }, + { "symbol": [ "QMutableMultiHashIterator", "private", "", "public"] }, + { "symbol": [ "QMutableMultiMapIterator", "private", "", "public"] }, + { "symbol": [ "QMutableSetIterator", "private", "", "public"] }, + { "symbol": [ "QMutableVectorIterator", "private", "", "public"] }, + { "symbol": [ "QMutex", "private", "", "public"] }, + { "symbol": [ "QMutexLocker", "private", "", "public"] }, + { "symbol": [ "QNativeGestureEvent", "private", "", "public"] }, + { "symbol": [ "QNativeIpcKey", "private", "", "public"] }, + { "symbol": [ "QNetworkAccessManager", "private", "", "public"] }, + { "symbol": [ "QNetworkAddressEntry", "private", "", "public"] }, + { "symbol": [ "QNetworkCacheMetaData", "private", "", "public"] }, + { "symbol": [ "QNetworkCookie", "private", "", "public"] }, + { "symbol": [ "QNetworkCookieJar", "private", "", "public"] }, + { "symbol": [ "QNetworkDatagram", "private", "", "public"] }, + { "symbol": [ "QNetworkDiskCache", "private", "", "public"] }, + { "symbol": [ "QNetworkInformation", "private", "", "public"] }, + { "symbol": [ "QNetworkInterface", "private", "", "public"] }, + { "symbol": [ "QNetworkProxy", "private", "", "public"] }, + { "symbol": [ "QNetworkProxyFactory", "private", "", "public"] }, + { "symbol": [ "QNetworkProxyQuery", "private", "", "public"] }, + { "symbol": [ "QNetworkReply", "private", "", "public"] }, + { "symbol": [ "QNetworkRequest", "private", "", "public"] }, + { "symbol": [ "QNetworkRequestFactory", "private", "", "public"] }, + { "symbol": [ "QNoDebug", "private", "", "public"] }, + { "symbol": [ "QNtfsPermissionCheckGuard", "private", "", "public"] }, + { "symbol": [ "QOAuth1", "private", "", "public"] }, + { "symbol": [ "QOAuth1Signature", "private", "", "public"] }, + { "symbol": [ "QOAuth2AuthorizationCodeFlow", "private", "", "public"] }, + { "symbol": [ "QOAuth2DeviceAuthorizationFlow", "private", "", "public"] }, + { "symbol": [ "QOAuthHttpServerReplyHandler", "private", "", "public"] }, + { "symbol": [ "QOAuthOobReplyHandler", "private", "", "public"] }, + { "symbol": [ "QOAuthUriSchemeReplyHandler", "private", "", "public"] }, + { "symbol": [ "QObject", "private", "", "public"] }, + { "symbol": [ "QObjectBindableProperty", "private", "", "public"] }, + { "symbol": [ "QObjectCleanupHandler", "private", "", "public"] }, + { "symbol": [ "QObjectComputedProperty", "private", "", "public"] }, + { "symbol": [ "QObjectData", "private", "", "public"] }, + { "symbol": [ "QObjectList", "private", "", "public"] }, + { "symbol": [ "QOcspResponse", "private", "", "public"] }, + { "symbol": [ "QOffscreenSurface", "private", "", "public"] }, + { "symbol": [ "QOpenGLBuffer", "private", "", "public"] }, + { "symbol": [ "QOpenGLContext", "private", "", "public"] }, + { "symbol": [ "QOpenGLContextGroup", "private", "", "public"] }, + { "symbol": [ "QOpenGLDebugLogger", "private", "", "public"] }, + { "symbol": [ "QOpenGLDebugMessage", "private", "", "public"] }, + { "symbol": [ "QOpenGLExtraFunctions", "private", "", "public"] }, + { "symbol": [ "QOpenGLExtraFunctionsPrivate", "private", "", "public"] }, + { "symbol": [ "QOpenGLFramebufferObject", "private", "", "public"] }, + { "symbol": [ "QOpenGLFramebufferObjectFormat", "private", "", "public"] }, + { "symbol": [ "QOpenGLFunctions", "private", "", "public"] }, + { "symbol": [ "QOpenGLFunctionsPrivate", "private", "", "public"] }, + { "symbol": [ "QOpenGLFunctions_1_0", "private", "", "public"] }, + { "symbol": [ "QOpenGLFunctions_1_1", "private", "", "public"] }, + { "symbol": [ "QOpenGLFunctions_1_2", "private", "", "public"] }, + { "symbol": [ "QOpenGLFunctions_1_3", "private", "", "public"] }, + { "symbol": [ "QOpenGLFunctions_1_4", "private", "", "public"] }, + { "symbol": [ "QOpenGLFunctions_1_5", "private", "", "public"] }, + { "symbol": [ "QOpenGLFunctions_2_0", "private", "", "public"] }, + { "symbol": [ "QOpenGLFunctions_2_1", "private", "", "public"] }, + { "symbol": [ "QOpenGLFunctions_3_0", "private", "", "public"] }, + { "symbol": [ "QOpenGLFunctions_3_1", "private", "", "public"] }, + { "symbol": [ "QOpenGLFunctions_3_2_Compatibility", "private", "", "public"] }, + { "symbol": [ "QOpenGLFunctions_3_2_Core", "private", "", "public"] }, + { "symbol": [ "QOpenGLFunctions_3_3_Compatibility", "private", "", "public"] }, + { "symbol": [ "QOpenGLFunctions_3_3_Core", "private", "", "public"] }, + { "symbol": [ "QOpenGLFunctions_4_0_Compatibility", "private", "", "public"] }, + { "symbol": [ "QOpenGLFunctions_4_0_Core", "private", "", "public"] }, + { "symbol": [ "QOpenGLFunctions_4_1_Compatibility", "private", "", "public"] }, + { "symbol": [ "QOpenGLFunctions_4_1_Core", "private", "", "public"] }, + { "symbol": [ "QOpenGLFunctions_4_2_Compatibility", "private", "", "public"] }, + { "symbol": [ "QOpenGLFunctions_4_2_Core", "private", "", "public"] }, + { "symbol": [ "QOpenGLFunctions_4_3_Compatibility", "private", "", "public"] }, + { "symbol": [ "QOpenGLFunctions_4_3_Core", "private", "", "public"] }, + { "symbol": [ "QOpenGLFunctions_4_4_Compatibility", "private", "", "public"] }, + { "symbol": [ "QOpenGLFunctions_4_4_Core", "private", "", "public"] }, + { "symbol": [ "QOpenGLFunctions_4_5_Compatibility", "private", "", "public"] }, + { "symbol": [ "QOpenGLFunctions_4_5_Core", "private", "", "public"] }, + { "symbol": [ "QOpenGLPaintDevice", "private", "", "public"] }, + { "symbol": [ "QOpenGLPixelTransferOptions", "private", "", "public"] }, + { "symbol": [ "QOpenGLShader", "private", "", "public"] }, + { "symbol": [ "QOpenGLShaderProgram", "private", "", "public"] }, + { "symbol": [ "QOpenGLTexture", "private", "", "public"] }, + { "symbol": [ "QOpenGLTextureBlitter", "private", "", "public"] }, + { "symbol": [ "QOpenGLTimeMonitor", "private", "", "public"] }, + { "symbol": [ "QOpenGLTimerQuery", "private", "", "public"] }, + { "symbol": [ "QOpenGLVersionFunctions", "private", "", "public"] }, + { "symbol": [ "QOpenGLVersionFunctionsFactory", "private", "", "public"] }, + { "symbol": [ "QOpenGLVersionProfile", "private", "", "public"] }, + { "symbol": [ "QOpenGLVertexArrayObject", "private", "", "public"] }, + { "symbol": [ "QOpenGLWidget", "private", "", "public"] }, + { "symbol": [ "QOpenGLWindow", "private", "", "public"] }, + { "symbol": [ "QOperatingSystemVersion", "private", "", "public"] }, + { "symbol": [ "QOperatingSystemVersionBase", "private", "", "public"] }, + { "symbol": [ "QOperatingSystemVersionUnexported", "private", "", "public"] }, + { "symbol": [ "QPageLayout", "private", "", "public"] }, + { "symbol": [ "QPageRanges", "private", "", "public"] }, + { "symbol": [ "QPageSetupDialog", "private", "", "public"] }, + { "symbol": [ "QPageSize", "private", "", "public"] }, + { "symbol": [ "QPagedPaintDevice", "private", "", "public"] }, + { "symbol": [ "QPaintDevice", "private", "", "public"] }, + { "symbol": [ "QPaintDeviceWindow", "private", "", "public"] }, + { "symbol": [ "QPaintEngine", "private", "", "public"] }, + { "symbol": [ "QPaintEngineState", "private", "", "public"] }, + { "symbol": [ "QPaintEvent", "private", "", "public"] }, + { "symbol": [ "QPainter", "private", "", "public"] }, + { "symbol": [ "QPainterPath", "private", "", "public"] }, + { "symbol": [ "QPainterPathStroker", "private", "", "public"] }, + { "symbol": [ "QPainterStateGuard", "private", "", "public"] }, + { "symbol": [ "QPair", "private", "", "public"] }, + { "symbol": [ "QPalette", "private", "", "public"] }, + { "symbol": [ "QPanGesture", "private", "", "public"] }, + { "symbol": [ "QParallelAnimationGroup", "private", "", "public"] }, + { "symbol": [ "QPartialOrdering", "private", "", "public"] }, + { "symbol": [ "QPasswordDigestor", "private", "", "public"] }, + { "symbol": [ "QPauseAnimation", "private", "", "public"] }, + { "symbol": [ "QPdfBookmarkModel", "private", "", "public"] }, + { "symbol": [ "QPdfDocument", "private", "", "public"] }, + { "symbol": [ "QPdfDocumentRenderOptions", "private", "", "public"] }, + { "symbol": [ "QPdfLink", "private", "", "public"] }, + { "symbol": [ "QPdfLinkModel", "private", "", "public"] }, + { "symbol": [ "QPdfOutputIntent", "private", "", "public"] }, + { "symbol": [ "QPdfPageNavigator", "private", "", "public"] }, + { "symbol": [ "QPdfPageRenderer", "private", "", "public"] }, + { "symbol": [ "QPdfPageSelector", "private", "", "public"] }, + { "symbol": [ "QPdfSearchModel", "private", "", "public"] }, + { "symbol": [ "QPdfSelection", "private", "", "public"] }, + { "symbol": [ "QPdfView", "private", "", "public"] }, + { "symbol": [ "QPdfWriter", "private", "", "public"] }, + { "symbol": [ "QPen", "private", "", "public"] }, + { "symbol": [ "QPermission", "private", "", "public"] }, + { "symbol": [ "QPermissions", "private", "", "public"] }, + { "symbol": [ "QPersistentModelIndex", "private", "", "public"] }, + { "symbol": [ "QPicture", "private", "", "public"] }, + { "symbol": [ "QPinchGesture", "private", "", "public"] }, + { "symbol": [ "QPixelFormat", "private", "", "public"] }, + { "symbol": [ "QPixmap", "private", "", "public"] }, + { "symbol": [ "QPixmapCache", "private", "", "public"] }, + { "symbol": [ "QPlainTextDocumentLayout", "private", "", "public"] }, + { "symbol": [ "QPlainTextEdit", "private", "", "public"] }, + { "symbol": [ "QPlatformSurfaceEvent", "private", "", "public"] }, + { "symbol": [ "QPlaybackOptions", "private", "", "public"] }, + { "symbol": [ "QPluginLoader", "private", "", "public"] }, + { "symbol": [ "QPluginMetaData", "private", "", "public"] }, + { "symbol": [ "QPluginMetaDataV2", "private", "", "public"] }, + { "symbol": [ "QPoint", "private", "", "public"] }, + { "symbol": [ "QPointF", "private", "", "public"] }, + { "symbol": [ "QPointer", "private", "", "public"] }, + { "symbol": [ "QPointerEvent", "private", "", "public"] }, + { "symbol": [ "QPointingDevice", "private", "", "public"] }, + { "symbol": [ "QPointingDeviceUniqueId", "private", "", "public"] }, + { "symbol": [ "QPolygon", "private", "", "public"] }, + { "symbol": [ "QPolygonF", "private", "", "public"] }, + { "symbol": [ "QPrintDialog", "private", "", "public"] }, + { "symbol": [ "QPrintEngine", "private", "", "public"] }, + { "symbol": [ "QPrintPreviewDialog", "private", "", "public"] }, + { "symbol": [ "QPrintPreviewWidget", "private", "", "public"] }, + { "symbol": [ "QPrinter", "private", "", "public"] }, + { "symbol": [ "QPrinterInfo", "private", "", "public"] }, + { "symbol": [ "QProcess", "private", "", "public"] }, + { "symbol": [ "QProcessEnvironment", "private", "", "public"] }, + { "symbol": [ "QProgressBar", "private", "", "public"] }, + { "symbol": [ "QProgressDialog", "private", "", "public"] }, + { "symbol": [ "QPromise", "private", "", "public"] }, + { "symbol": [ "QProperty", "private", "", "public"] }, + { "symbol": [ "QPropertyAnimation", "private", "", "public"] }, + { "symbol": [ "QPropertyBinding", "private", "", "public"] }, + { "symbol": [ "QPropertyBindingError", "private", "", "public"] }, + { "symbol": [ "QPropertyBindingPrivatePtr", "private", "", "public"] }, + { "symbol": [ "QPropertyBindingSourceLocation", "private", "", "public"] }, + { "symbol": [ "QPropertyChangeHandler", "private", "", "public"] }, + { "symbol": [ "QPropertyData", "private", "", "public"] }, + { "symbol": [ "QPropertyNotifier", "private", "", "public"] }, + { "symbol": [ "QPropertyObserver", "private", "", "public"] }, + { "symbol": [ "QPropertyObserverBase", "private", "", "public"] }, + { "symbol": [ "QPropertyProxyBindingData", "private", "", "public"] }, + { "symbol": [ "QProxyStyle", "private", "", "public"] }, + { "symbol": [ "QPushButton", "private", "", "public"] }, + { "symbol": [ "QQmlAbstractUrlInterceptor", "private", "", "public"] }, + { "symbol": [ "QQmlApplicationEngine", "private", "", "public"] }, + { "symbol": [ "QQmlComponent", "private", "", "public"] }, + { "symbol": [ "QQmlContext", "private", "", "public"] }, + { "symbol": [ "QQmlDebuggingEnabler", "private", "", "public"] }, + { "symbol": [ "QQmlEngine", "private", "", "public"] }, + { "symbol": [ "QQmlEngineExtensionInterface", "private", "", "public"] }, + { "symbol": [ "QQmlEngineExtensionPlugin", "private", "", "public"] }, + { "symbol": [ "QQmlError", "private", "", "public"] }, + { "symbol": [ "QQmlExpression", "private", "", "public"] }, + { "symbol": [ "QQmlExtensionInterface", "private", "", "public"] }, + { "symbol": [ "QQmlExtensionPlugin", "private", "", "public"] }, + { "symbol": [ "QQmlFile", "private", "", "public"] }, + { "symbol": [ "QQmlFileSelector", "private", "", "public"] }, + { "symbol": [ "QQmlImageProviderBase", "private", "", "public"] }, + { "symbol": [ "QQmlIncubationController", "private", "", "public"] }, + { "symbol": [ "QQmlIncubator", "private", "", "public"] }, + { "symbol": [ "QQmlInfo", "private", "", "public"] }, + { "symbol": [ "QQmlListProperty", "private", "", "public"] }, + { "symbol": [ "QQmlListReference", "private", "", "public"] }, + { "symbol": [ "QQmlModuleRegistration", "private", "", "public"] }, + { "symbol": [ "QQmlNetworkAccessManagerFactory", "private", "", "public"] }, + { "symbol": [ "QQmlParserStatus", "private", "", "public"] }, + { "symbol": [ "QQmlProperties", "private", "", "public"] }, + { "symbol": [ "QQmlProperty", "private", "", "public"] }, + { "symbol": [ "QQmlPropertyMap", "private", "", "public"] }, + { "symbol": [ "QQmlPropertyValueSource", "private", "", "public"] }, + { "symbol": [ "QQmlScriptString", "private", "", "public"] }, + { "symbol": [ "QQmlTypeInfo", "private", "", "public"] }, + { "symbol": [ "QQmlTypeNotAvailable", "private", "", "public"] }, + { "symbol": [ "QQmlTypesExtensionInterface", "private", "", "public"] }, + { "symbol": [ "QQmlWebChannel", "private", "", "public"] }, + { "symbol": [ "QQuaternion", "private", "", "public"] }, + { "symbol": [ "QQueue", "private", "", "public"] }, + { "symbol": [ "QQuick3D", "private", "", "public"] }, + { "symbol": [ "QQuick3DGeometry", "private", "", "public"] }, + { "symbol": [ "QQuick3DInstancing", "private", "", "public"] }, + { "symbol": [ "QQuick3DObject", "private", "", "public"] }, + { "symbol": [ "QQuick3DRenderExtension", "private", "", "public"] }, + { "symbol": [ "QQuick3DTextureData", "private", "", "public"] }, + { "symbol": [ "QQuick3DTextureProviderExtension", "private", "", "public"] }, + { "symbol": [ "QQuickAsyncImageProvider", "private", "", "public"] }, + { "symbol": [ "QQuickAttachedPropertyPropagator", "private", "", "public"] }, + { "symbol": [ "QQuickFramebufferObject", "private", "", "public"] }, + { "symbol": [ "QQuickGraphicsConfiguration", "private", "", "public"] }, + { "symbol": [ "QQuickGraphicsDevice", "private", "", "public"] }, + { "symbol": [ "QQuickImageProvider", "private", "", "public"] }, + { "symbol": [ "QQuickImageResponse", "private", "", "public"] }, + { "symbol": [ "QQuickItem", "private", "", "public"] }, + { "symbol": [ "QQuickItemGrabResult", "private", "", "public"] }, + { "symbol": [ "QQuickOpenGLUtils", "private", "", "public"] }, + { "symbol": [ "QQuickPaintedItem", "private", "", "public"] }, + { "symbol": [ "QQuickRenderControl", "private", "", "public"] }, + { "symbol": [ "QQuickRenderTarget", "private", "", "public"] }, + { "symbol": [ "QQuickRhiItem", "private", "", "public"] }, + { "symbol": [ "QQuickRhiItemRenderer", "private", "", "public"] }, + { "symbol": [ "QQuickStyle", "private", "", "public"] }, + { "symbol": [ "QQuickTextDocument", "private", "", "public"] }, + { "symbol": [ "QQuickTextureFactory", "private", "", "public"] }, + { "symbol": [ "QQuickTransform", "private", "", "public"] }, + { "symbol": [ "QQuickView", "private", "", "public"] }, + { "symbol": [ "QQuickWebEngineDownloadRequest", "private", "", "public"] }, + { "symbol": [ "QQuickWebEngineProfile", "private", "", "public"] }, + { "symbol": [ "QQuickWidget", "private", "", "public"] }, + { "symbol": [ "QQuickWindow", "private", "", "public"] }, + { "symbol": [ "QRadialGradient", "private", "", "public"] }, + { "symbol": [ "QRadioButton", "private", "", "public"] }, + { "symbol": [ "QRandomGenerator", "private", "", "public"] }, + { "symbol": [ "QRandomGenerator64", "private", "", "public"] }, + { "symbol": [ "QRangeModel", "private", "", "public"] }, + { "symbol": [ "QRangeModelAdapter", "private", "", "public"] }, + { "symbol": [ "QRasterWindow", "private", "", "public"] }, + { "symbol": [ "QRawFont", "private", "", "public"] }, + { "symbol": [ "QReadLocker", "private", "", "public"] }, + { "symbol": [ "QReadWriteLock", "private", "", "public"] }, + { "symbol": [ "QRect", "private", "", "public"] }, + { "symbol": [ "QRectF", "private", "", "public"] }, + { "symbol": [ "QRecursiveMutex", "private", "", "public"] }, + { "symbol": [ "QRegExp", "private", "", "public"] }, + { "symbol": [ "QRegion", "private", "", "public"] }, + { "symbol": [ "QRegularExpression", "private", "", "public"] }, + { "symbol": [ "QRegularExpressionMatch", "private", "", "public"] }, + { "symbol": [ "QRegularExpressionMatchIterator", "private", "", "public"] }, + { "symbol": [ "QRegularExpressionValidator", "private", "", "public"] }, + { "symbol": [ "QResizeEvent", "private", "", "public"] }, + { "symbol": [ "QResource", "private", "", "public"] }, + { "symbol": [ "QRestAccessManager", "private", "", "public"] }, + { "symbol": [ "QRestReply", "private", "", "public"] }, + { "symbol": [ "QReturnArgument", "private", "", "public"] }, + { "symbol": [ "QRgb", "private", "", "public"] }, + { "symbol": [ "QRgba64", "private", "", "public"] }, + { "symbol": [ "QRgbaFloat", "private", "", "public"] }, + { "symbol": [ "QRgbaFloat16", "private", "", "public"] }, + { "symbol": [ "QRgbaFloat32", "private", "", "public"] }, + { "symbol": [ "QRhiWidget", "private", "", "public"] }, + { "symbol": [ "QRubberBand", "private", "", "public"] }, + { "symbol": [ "QRunnable", "private", "", "public"] }, + { "symbol": [ "QSGBasicGeometryNode", "private", "", "public"] }, + { "symbol": [ "QSGClipNode", "private", "", "public"] }, + { "symbol": [ "QSGDynamicTexture", "private", "", "public"] }, + { "symbol": [ "QSGFlatColorMaterial", "private", "", "public"] }, + { "symbol": [ "QSGGeometry", "private", "", "public"] }, + { "symbol": [ "QSGGeometryNode", "private", "", "public"] }, + { "symbol": [ "QSGImageNode", "private", "", "public"] }, + { "symbol": [ "QSGMaterial", "private", "", "public"] }, + { "symbol": [ "QSGMaterialShader", "private", "", "public"] }, + { "symbol": [ "QSGNinePatchNode", "private", "", "public"] }, + { "symbol": [ "QSGNode", "private", "", "public"] }, + { "symbol": [ "QSGNodeVisitor", "private", "", "public"] }, + { "symbol": [ "QSGOpacityNode", "private", "", "public"] }, + { "symbol": [ "QSGOpaqueTextureMaterial", "private", "", "public"] }, + { "symbol": [ "QSGRectangleNode", "private", "", "public"] }, + { "symbol": [ "QSGRenderNode", "private", "", "public"] }, + { "symbol": [ "QSGRendererInterface", "private", "", "public"] }, + { "symbol": [ "QSGRootNode", "private", "", "public"] }, + { "symbol": [ "QSGSimpleRectNode", "private", "", "public"] }, + { "symbol": [ "QSGSimpleTextureNode", "private", "", "public"] }, + { "symbol": [ "QSGTextNode", "private", "", "public"] }, + { "symbol": [ "QSGTexture", "private", "", "public"] }, + { "symbol": [ "QSGTextureMaterial", "private", "", "public"] }, + { "symbol": [ "QSGTextureProvider", "private", "", "public"] }, + { "symbol": [ "QSGTransformNode", "private", "", "public"] }, + { "symbol": [ "QSGVertexColorMaterial", "private", "", "public"] }, + { "symbol": [ "QSaveFile", "private", "", "public"] }, + { "symbol": [ "QScopeGuard", "private", "", "public"] }, + { "symbol": [ "QScopedArrayPointer", "private", "", "public"] }, + { "symbol": [ "QScopedPointer", "private", "", "public"] }, + { "symbol": [ "QScopedPointerArrayDeleter", "private", "", "public"] }, + { "symbol": [ "QScopedPointerDeleteLater", "private", "", "public"] }, + { "symbol": [ "QScopedPointerDeleter", "private", "", "public"] }, + { "symbol": [ "QScopedPointerObjectDeleteLater", "private", "", "public"] }, + { "symbol": [ "QScopedPointerPodDeleter", "private", "", "public"] }, + { "symbol": [ "QScopedPropertyUpdateGroup", "private", "", "public"] }, + { "symbol": [ "QScopedValueRollback", "private", "", "public"] }, + { "symbol": [ "QScreen", "private", "", "public"] }, + { "symbol": [ "QScreenCapture", "private", "", "public"] }, + { "symbol": [ "QScreenOrientationChangeEvent", "private", "", "public"] }, + { "symbol": [ "QScrollArea", "private", "", "public"] }, + { "symbol": [ "QScrollBar", "private", "", "public"] }, + { "symbol": [ "QScrollEvent", "private", "", "public"] }, + { "symbol": [ "QScrollPrepareEvent", "private", "", "public"] }, + { "symbol": [ "QScroller", "private", "", "public"] }, + { "symbol": [ "QScrollerProperties", "private", "", "public"] }, + { "symbol": [ "QScxmlCompiler", "private", "", "public"] }, + { "symbol": [ "QScxmlCppDataModel", "private", "", "public"] }, + { "symbol": [ "QScxmlDataModel", "private", "", "public"] }, + { "symbol": [ "QScxmlDynamicScxmlServiceFactory", "private", "", "public"] }, + { "symbol": [ "QScxmlError", "private", "", "public"] }, + { "symbol": [ "QScxmlEvent", "private", "", "public"] }, + { "symbol": [ "QScxmlInvokableService", "private", "", "public"] }, + { "symbol": [ "QScxmlInvokableServiceFactory", "private", "", "public"] }, + { "symbol": [ "QScxmlNullDataModel", "private", "", "public"] }, + { "symbol": [ "QScxmlStateMachine", "private", "", "public"] }, + { "symbol": [ "QScxmlStaticScxmlServiceFactory", "private", "", "public"] }, + { "symbol": [ "QScxmlTableData", "private", "", "public"] }, + { "symbol": [ "QSemaphore", "private", "", "public"] }, + { "symbol": [ "QSemaphoreReleaser", "private", "", "public"] }, + { "symbol": [ "QSequentialAnimationGroup", "private", "", "public"] }, + { "symbol": [ "QSequentialConstIterator", "private", "", "public"] }, + { "symbol": [ "QSequentialIterable", "private", "", "public"] }, + { "symbol": [ "QSequentialIterator", "private", "", "public"] }, + { "symbol": [ "QSessionManager", "private", "", "public"] }, + { "symbol": [ "QSet", "private", "", "public"] }, + { "symbol": [ "QSetIterator", "private", "", "public"] }, + { "symbol": [ "QSettings", "private", "", "public"] }, + { "symbol": [ "QSharedData", "private", "", "public"] }, + { "symbol": [ "QSharedDataPointer", "private", "", "public"] }, + { "symbol": [ "QSharedDataPointerBase", "private", "", "public"] }, + { "symbol": [ "QSharedMemory", "private", "", "public"] }, + { "symbol": [ "QSharedPointer", "private", "", "public"] }, + { "symbol": [ "QShortcut", "private", "", "public"] }, + { "symbol": [ "QShortcutEvent", "private", "", "public"] }, + { "symbol": [ "QShowEvent", "private", "", "public"] }, + { "symbol": [ "QSignalBlocker", "private", "", "public"] }, + { "symbol": [ "QSignalMapper", "private", "", "public"] }, + { "symbol": [ "QSignalSpy", "private", "", "public"] }, + { "symbol": [ "QSignalTransition", "private", "", "public"] }, + { "symbol": [ "QSinglePointEvent", "private", "", "public"] }, + { "symbol": [ "QSize", "private", "", "public"] }, + { "symbol": [ "QSizeF", "private", "", "public"] }, + { "symbol": [ "QSizeGrip", "private", "", "public"] }, + { "symbol": [ "QSizePolicy", "private", "", "public"] }, + { "symbol": [ "QSlider", "private", "", "public"] }, + { "symbol": [ "QSocketDescriptor", "private", "", "public"] }, + { "symbol": [ "QSocketNotifier", "private", "", "public"] }, + { "symbol": [ "QSortFilterProxyModel", "private", "", "public"] }, + { "symbol": [ "QSoundEffect", "private", "", "public"] }, + { "symbol": [ "QSpacerItem", "private", "", "public"] }, + { "symbol": [ "QSpan", "private", "", "public"] }, + { "symbol": [ "QSpatialSound", "private", "", "public"] }, + { "symbol": [ "QSpecialInteger", "private", "", "public"] }, + { "symbol": [ "QSpinBox", "private", "", "public"] }, + { "symbol": [ "QSplashScreen", "private", "", "public"] }, + { "symbol": [ "QSplitter", "private", "", "public"] }, + { "symbol": [ "QSplitterHandle", "private", "", "public"] }, + { "symbol": [ "QSpontaneKeyEvent", "private", "", "public"] }, + { "symbol": [ "QSql", "private", "", "public"] }, + { "symbol": [ "QSqlDatabase", "private", "", "public"] }, + { "symbol": [ "QSqlDatabaseDefaultConnectionName", "private", "", "public"] }, + { "symbol": [ "QSqlDriver", "private", "", "public"] }, + { "symbol": [ "QSqlDriverCreator", "private", "", "public"] }, + { "symbol": [ "QSqlDriverCreatorBase", "private", "", "public"] }, + { "symbol": [ "QSqlDriverPlugin", "private", "", "public"] }, + { "symbol": [ "QSqlError", "private", "", "public"] }, + { "symbol": [ "QSqlField", "private", "", "public"] }, + { "symbol": [ "QSqlIndex", "private", "", "public"] }, + { "symbol": [ "QSqlQuery", "private", "", "public"] }, + { "symbol": [ "QSqlQueryModel", "private", "", "public"] }, + { "symbol": [ "QSqlRecord", "private", "", "public"] }, + { "symbol": [ "QSqlRelation", "private", "", "public"] }, + { "symbol": [ "QSqlRelationalDelegate", "private", "", "public"] }, + { "symbol": [ "QSqlRelationalTableModel", "private", "", "public"] }, + { "symbol": [ "QSqlResult", "private", "", "public"] }, + { "symbol": [ "QSqlTableModel", "private", "", "public"] }, + { "symbol": [ "QSsl", "private", "", "public"] }, + { "symbol": [ "QSslCertificate", "private", "", "public"] }, + { "symbol": [ "QSslCertificateExtension", "private", "", "public"] }, + { "symbol": [ "QSslCipher", "private", "", "public"] }, + { "symbol": [ "QSslConfiguration", "private", "", "public"] }, + { "symbol": [ "QSslDiffieHellmanParameters", "private", "", "public"] }, + { "symbol": [ "QSslEllipticCurve", "private", "", "public"] }, + { "symbol": [ "QSslError", "private", "", "public"] }, + { "symbol": [ "QSslKey", "private", "", "public"] }, + { "symbol": [ "QSslPreSharedKeyAuthenticator", "private", "", "public"] }, + { "symbol": [ "QSslServer", "private", "", "public"] }, + { "symbol": [ "QSslSocket", "private", "", "public"] }, + { "symbol": [ "QStack", "private", "", "public"] }, + { "symbol": [ "QStackedLayout", "private", "", "public"] }, + { "symbol": [ "QStackedWidget", "private", "", "public"] }, + { "symbol": [ "QStandardItem", "private", "", "public"] }, + { "symbol": [ "QStandardItemEditorCreator", "private", "", "public"] }, + { "symbol": [ "QStandardItemModel", "private", "", "public"] }, + { "symbol": [ "QStandardPaths", "private", "", "public"] }, + { "symbol": [ "QState", "private", "", "public"] }, + { "symbol": [ "QStateMachine", "private", "", "public"] }, + { "symbol": [ "QStaticByteArrayMatcher", "private", "", "public"] }, + { "symbol": [ "QStaticByteArrayMatcherBase", "private", "", "public"] }, + { "symbol": [ "QStaticLatin1StringMatcher", "private", "", "public"] }, + { "symbol": [ "QStaticPlugin", "private", "", "public"] }, + { "symbol": [ "QStaticText", "private", "", "public"] }, + { "symbol": [ "QStatusBar", "private", "", "public"] }, + { "symbol": [ "QStatusTipEvent", "private", "", "public"] }, + { "symbol": [ "QStorageInfo", "private", "", "public"] }, + { "symbol": [ "QString", "private", "", "public"] }, + { "symbol": [ "QStringAlgorithms", "private", "", "public"] }, + { "symbol": [ "QStringBuilder", "private", "", "public"] }, + { "symbol": [ "QStringConverter", "private", "", "public"] }, + { "symbol": [ "QStringConverterBase", "private", "", "public"] }, + { "symbol": [ "QStringDecoder", "private", "", "public"] }, + { "symbol": [ "QStringEncoder", "private", "", "public"] }, + { "symbol": [ "QStringList", "private", "", "public"] }, + { "symbol": [ "QStringListModel", "private", "", "public"] }, + { "symbol": [ "QStringLiteral", "private", "", "public"] }, + { "symbol": [ "QStringMatcher", "private", "", "public"] }, + { "symbol": [ "QStringRef", "private", "", "public"] }, + { "symbol": [ "QStringTokenizer", "private", "", "public"] }, + { "symbol": [ "QStringTokenizerBase", "private", "", "public"] }, + { "symbol": [ "QStringTokenizerBaseBase", "private", "", "public"] }, + { "symbol": [ "QStringView", "private", "", "public"] }, + { "symbol": [ "QStyle", "private", "", "public"] }, + { "symbol": [ "QStyleFactory", "private", "", "public"] }, + { "symbol": [ "QStyleHintReturn", "private", "", "public"] }, + { "symbol": [ "QStyleHintReturnMask", "private", "", "public"] }, + { "symbol": [ "QStyleHintReturnVariant", "private", "", "public"] }, + { "symbol": [ "QStyleHints", "private", "", "public"] }, + { "symbol": [ "QStyleOption", "private", "", "public"] }, + { "symbol": [ "QStyleOptionButton", "private", "", "public"] }, + { "symbol": [ "QStyleOptionComboBox", "private", "", "public"] }, + { "symbol": [ "QStyleOptionComplex", "private", "", "public"] }, + { "symbol": [ "QStyleOptionDockWidget", "private", "", "public"] }, + { "symbol": [ "QStyleOptionFocusRect", "private", "", "public"] }, + { "symbol": [ "QStyleOptionFrame", "private", "", "public"] }, + { "symbol": [ "QStyleOptionGraphicsItem", "private", "", "public"] }, + { "symbol": [ "QStyleOptionGroupBox", "private", "", "public"] }, + { "symbol": [ "QStyleOptionHeader", "private", "", "public"] }, + { "symbol": [ "QStyleOptionHeaderV2", "private", "", "public"] }, + { "symbol": [ "QStyleOptionMenuItem", "private", "", "public"] }, + { "symbol": [ "QStyleOptionMenuItemV2", "private", "", "public"] }, + { "symbol": [ "QStyleOptionProgressBar", "private", "", "public"] }, + { "symbol": [ "QStyleOptionRubberBand", "private", "", "public"] }, + { "symbol": [ "QStyleOptionSizeGrip", "private", "", "public"] }, + { "symbol": [ "QStyleOptionSlider", "private", "", "public"] }, + { "symbol": [ "QStyleOptionSpinBox", "private", "", "public"] }, + { "symbol": [ "QStyleOptionTab", "private", "", "public"] }, + { "symbol": [ "QStyleOptionTabBarBase", "private", "", "public"] }, + { "symbol": [ "QStyleOptionTabWidgetFrame", "private", "", "public"] }, + { "symbol": [ "QStyleOptionTitleBar", "private", "", "public"] }, + { "symbol": [ "QStyleOptionToolBar", "private", "", "public"] }, + { "symbol": [ "QStyleOptionToolBox", "private", "", "public"] }, + { "symbol": [ "QStyleOptionToolButton", "private", "", "public"] }, + { "symbol": [ "QStyleOptionViewItem", "private", "", "public"] }, + { "symbol": [ "QStylePainter", "private", "", "public"] }, + { "symbol": [ "QStylePlugin", "private", "", "public"] }, + { "symbol": [ "QStyledItemDelegate", "private", "", "public"] }, + { "symbol": [ "QSurface", "private", "", "public"] }, + { "symbol": [ "QSurfaceFormat", "private", "", "public"] }, + { "symbol": [ "QSvgGenerator", "private", "", "public"] }, + { "symbol": [ "QSvgRenderer", "private", "", "public"] }, + { "symbol": [ "QSvgWidget", "private", "", "public"] }, + { "symbol": [ "QSwipeGesture", "private", "", "public"] }, + { "symbol": [ "QSyntaxHighlighter", "private", "", "public"] }, + { "symbol": [ "QSysInfo", "private", "", "public"] }, + { "symbol": [ "QSystemSemaphore", "private", "", "public"] }, + { "symbol": [ "QSystemTrayIcon", "private", "", "public"] }, + { "symbol": [ "QTabBar", "private", "", "public"] }, + { "symbol": [ "QTabWidget", "private", "", "public"] }, + { "symbol": [ "QTableView", "private", "", "public"] }, + { "symbol": [ "QTableWidget", "private", "", "public"] }, + { "symbol": [ "QTableWidgetItem", "private", "", "public"] }, + { "symbol": [ "QTableWidgetSelectionRange", "private", "", "public"] }, + { "symbol": [ "QTabletEvent", "private", "", "public"] }, + { "symbol": [ "QTaggedIterator", "private", "", "public"] }, + { "symbol": [ "QTaggedPointer", "private", "", "public"] }, + { "symbol": [ "QTapAndHoldGesture", "private", "", "public"] }, + { "symbol": [ "QTapGesture", "private", "", "public"] }, + { "symbol": [ "QTcpServer", "private", "", "public"] }, + { "symbol": [ "QTcpSocket", "private", "", "public"] }, + { "symbol": [ "QTemplatedMetaMethodReturnArgument", "private", "", "public"] }, + { "symbol": [ "QTemporaryDir", "private", "", "public"] }, + { "symbol": [ "QTemporaryFile", "private", "", "public"] }, + { "symbol": [ "QTest", "private", "", "public"] }, + { "symbol": [ "QTestAccessibility", "private", "", "public"] }, + { "symbol": [ "QTestData", "private", "", "public"] }, + { "symbol": [ "QTestDelayEvent", "private", "", "public"] }, + { "symbol": [ "QTestEvent", "private", "", "public"] }, + { "symbol": [ "QTestEventList", "private", "", "public"] }, + { "symbol": [ "QTestEventLoop", "private", "", "public"] }, + { "symbol": [ "QTestKeyClicksEvent", "private", "", "public"] }, + { "symbol": [ "QTestKeyEvent", "private", "", "public"] }, + { "symbol": [ "QTestMouseEvent", "private", "", "public"] }, + { "symbol": [ "QTextBlock", "private", "", "public"] }, + { "symbol": [ "QTextBlockFormat", "private", "", "public"] }, + { "symbol": [ "QTextBlockGroup", "private", "", "public"] }, + { "symbol": [ "QTextBlockUserData", "private", "", "public"] }, + { "symbol": [ "QTextBoundaryFinder", "private", "", "public"] }, + { "symbol": [ "QTextBrowser", "private", "", "public"] }, + { "symbol": [ "QTextCharFormat", "private", "", "public"] }, + { "symbol": [ "QTextCodec", "private", "", "public"] }, + { "symbol": [ "QTextCursor", "private", "", "public"] }, + { "symbol": [ "QTextDecoder", "private", "", "public"] }, + { "symbol": [ "QTextDocument", "private", "", "public"] }, + { "symbol": [ "QTextDocumentFragment", "private", "", "public"] }, + { "symbol": [ "QTextDocumentWriter", "private", "", "public"] }, + { "symbol": [ "QTextEdit", "private", "", "public"] }, + { "symbol": [ "QTextEncoder", "private", "", "public"] }, + { "symbol": [ "QTextFormat", "private", "", "public"] }, + { "symbol": [ "QTextFragment", "private", "", "public"] }, + { "symbol": [ "QTextFrame", "private", "", "public"] }, + { "symbol": [ "QTextFrameFormat", "private", "", "public"] }, + { "symbol": [ "QTextFrameLayoutData", "private", "", "public"] }, + { "symbol": [ "QTextImageFormat", "private", "", "public"] }, + { "symbol": [ "QTextInlineObject", "private", "", "public"] }, + { "symbol": [ "QTextItem", "private", "", "public"] }, + { "symbol": [ "QTextLayout", "private", "", "public"] }, + { "symbol": [ "QTextLength", "private", "", "public"] }, + { "symbol": [ "QTextLine", "private", "", "public"] }, + { "symbol": [ "QTextList", "private", "", "public"] }, + { "symbol": [ "QTextListFormat", "private", "", "public"] }, + { "symbol": [ "QTextObject", "private", "", "public"] }, + { "symbol": [ "QTextObjectInterface", "private", "", "public"] }, + { "symbol": [ "QTextOption", "private", "", "public"] }, + { "symbol": [ "QTextStream", "private", "", "public"] }, + { "symbol": [ "QTextStreamFunction", "private", "", "public"] }, + { "symbol": [ "QTextStreamManipulator", "private", "", "public"] }, + { "symbol": [ "QTextTable", "private", "", "public"] }, + { "symbol": [ "QTextTableCell", "private", "", "public"] }, + { "symbol": [ "QTextTableCellFormat", "private", "", "public"] }, + { "symbol": [ "QTextTableFormat", "private", "", "public"] }, + { "symbol": [ "QThread", "private", "", "public"] }, + { "symbol": [ "QThreadPool", "private", "", "public"] }, + { "symbol": [ "QThreadStorage", "private", "", "public"] }, + { "symbol": [ "QThreadStorageData", "private", "", "public"] }, + { "symbol": [ "QThreadStorageTraits", "private", "", "public"] }, + { "symbol": [ "QTileRules", "private", "", "public"] }, + { "symbol": [ "QTime", "private", "", "public"] }, + { "symbol": [ "QTimeEdit", "private", "", "public"] }, + { "symbol": [ "QTimeLine", "private", "", "public"] }, + { "symbol": [ "QTimeZone", "private", "", "public"] }, + { "symbol": [ "QTimer", "private", "", "public"] }, + { "symbol": [ "QTimerEvent", "private", "", "public"] }, + { "symbol": [ "QToolBar", "private", "", "public"] }, + { "symbol": [ "QToolBarChangeEvent", "private", "", "public"] }, + { "symbol": [ "QToolBox", "private", "", "public"] }, + { "symbol": [ "QToolButton", "private", "", "public"] }, + { "symbol": [ "QToolTip", "private", "", "public"] }, + { "symbol": [ "QTouchEvent", "private", "", "public"] }, + { "symbol": [ "QTransform", "private", "", "public"] }, + { "symbol": [ "QTranslator", "private", "", "public"] }, + { "symbol": [ "QTransposeProxyModel", "private", "", "public"] }, + { "symbol": [ "QTreeView", "private", "", "public"] }, + { "symbol": [ "QTreeWidget", "private", "", "public"] }, + { "symbol": [ "QTreeWidgetItem", "private", "", "public"] }, + { "symbol": [ "QTreeWidgetItemIterator", "private", "", "public"] }, + { "symbol": [ "QTypeInfo", "private", "", "public"] }, + { "symbol": [ "QTypeInfoMerger", "private", "", "public"] }, + { "symbol": [ "QTypeRevision", "private", "", "public"] }, + { "symbol": [ "QTypedArrayAllocationResult", "private", "", "public"] }, + { "symbol": [ "QTypedArrayData", "private", "", "public"] }, + { "symbol": [ "QUdpSocket", "private", "", "public"] }, + { "symbol": [ "QUiLoader", "private", "", "public"] }, + { "symbol": [ "QUndoCommand", "private", "", "public"] }, + { "symbol": [ "QUndoGroup", "private", "", "public"] }, + { "symbol": [ "QUndoStack", "private", "", "public"] }, + { "symbol": [ "QUndoView", "private", "", "public"] }, + { "symbol": [ "QUnhandledException", "private", "", "public"] }, + { "symbol": [ "QUntypedBindable", "private", "", "public"] }, + { "symbol": [ "QUntypedPropertyBinding", "private", "", "public"] }, + { "symbol": [ "QUntypedPropertyData", "private", "", "public"] }, + { "symbol": [ "QUrl", "private", "", "public"] }, + { "symbol": [ "QUrlQuery", "private", "", "public"] }, + { "symbol": [ "QUrlTwoFlags", "private", "", "public"] }, + { "symbol": [ "QUtf8StringView", "private", "", "public"] }, + { "symbol": [ "QUuid", "private", "", "public"] }, + { "symbol": [ "QVBoxLayout", "private", "", "public"] }, + { "symbol": [ "QValidator", "private", "", "public"] }, + { "symbol": [ "QVarLengthArray", "private", "", "public"] }, + { "symbol": [ "QVariant", "private", "", "public"] }, + { "symbol": [ "QVariantAnimation", "private", "", "public"] }, + { "symbol": [ "QVariantHash", "private", "", "public"] }, + { "symbol": [ "QVariantList", "private", "", "public"] }, + { "symbol": [ "QVariantMap", "private", "", "public"] }, + { "symbol": [ "QVector", "private", "", "public"] }, + { "symbol": [ "QVector2D", "private", "", "public"] }, + { "symbol": [ "QVector3D", "private", "", "public"] }, + { "symbol": [ "QVector4D", "private", "", "public"] }, + { "symbol": [ "QVectorIterator", "private", "", "public"] }, + { "symbol": [ "QVersionNumber", "private", "", "public"] }, + { "symbol": [ "QVideoFrame", "private", "", "public"] }, + { "symbol": [ "QVideoFrameFormat", "private", "", "public"] }, + { "symbol": [ "QVideoFrameInput", "private", "", "public"] }, + { "symbol": [ "QVideoSink", "private", "", "public"] }, + { "symbol": [ "QVideoWidget", "private", "", "public"] }, + { "symbol": [ "QVulkanDeviceFunctions", "private", "", "public"] }, + { "symbol": [ "QVulkanExtension", "private", "", "public"] }, + { "symbol": [ "QVulkanFunctions", "private", "", "public"] }, + { "symbol": [ "QVulkanInfoVector", "private", "", "public"] }, + { "symbol": [ "QVulkanInstance", "private", "", "public"] }, + { "symbol": [ "QVulkanLayer", "private", "", "public"] }, + { "symbol": [ "QVulkanWindow", "private", "", "public"] }, + { "symbol": [ "QVulkanWindowRenderer", "private", "", "public"] }, + { "symbol": [ "QWaitCondition", "private", "", "public"] }, + { "symbol": [ "QWaveDecoder", "private", "", "public"] }, + { "symbol": [ "QWaylandBufferRef", "private", "", "public"] }, + { "symbol": [ "QWaylandClient", "private", "", "public"] }, + { "symbol": [ "QWaylandClientExtension", "private", "", "public"] }, + { "symbol": [ "QWaylandClientExtensionTemplate", "private", "", "public"] }, + { "symbol": [ "QWaylandCompositor", "private", "", "public"] }, + { "symbol": [ "QWaylandCompositorExtension", "private", "", "public"] }, + { "symbol": [ "QWaylandCompositorExtensionTemplate", "private", "", "public"] }, + { "symbol": [ "QWaylandDestroyListener", "private", "", "public"] }, + { "symbol": [ "QWaylandDrag", "private", "", "public"] }, + { "symbol": [ "QWaylandIdleInhibitManagerV1", "private", "", "public"] }, + { "symbol": [ "QWaylandInputMethodControl", "private", "", "public"] }, + { "symbol": [ "QWaylandIviApplication", "private", "", "public"] }, + { "symbol": [ "QWaylandIviSurface", "private", "", "public"] }, + { "symbol": [ "QWaylandKeyboard", "private", "", "public"] }, + { "symbol": [ "QWaylandKeymap", "private", "", "public"] }, + { "symbol": [ "QWaylandObject", "private", "", "public"] }, + { "symbol": [ "QWaylandOutput", "private", "", "public"] }, + { "symbol": [ "QWaylandOutputMode", "private", "", "public"] }, + { "symbol": [ "QWaylandPointer", "private", "", "public"] }, + { "symbol": [ "QWaylandQtTextInputMethod", "private", "", "public"] }, + { "symbol": [ "QWaylandQtTextInputMethodManager", "private", "", "public"] }, + { "symbol": [ "QWaylandQtWindowManager", "private", "", "public"] }, + { "symbol": [ "QWaylandQuickCompositor", "private", "", "public"] }, + { "symbol": [ "QWaylandQuickExtension", "private", "", "public"] }, + { "symbol": [ "QWaylandQuickItem", "private", "", "public"] }, + { "symbol": [ "QWaylandQuickOutput", "private", "", "public"] }, + { "symbol": [ "QWaylandQuickShellIntegration", "private", "", "public"] }, + { "symbol": [ "QWaylandQuickShellSurfaceItem", "private", "", "public"] }, + { "symbol": [ "QWaylandQuickSurface", "private", "", "public"] }, + { "symbol": [ "QWaylandQuickXdgOutputV1", "private", "", "public"] }, + { "symbol": [ "QWaylandResource", "private", "", "public"] }, + { "symbol": [ "QWaylandSeat", "private", "", "public"] }, + { "symbol": [ "QWaylandShell", "private", "", "public"] }, + { "symbol": [ "QWaylandShellSurface", "private", "", "public"] }, + { "symbol": [ "QWaylandShellSurfaceTemplate", "private", "", "public"] }, + { "symbol": [ "QWaylandShellTemplate", "private", "", "public"] }, + { "symbol": [ "QWaylandSurface", "private", "", "public"] }, + { "symbol": [ "QWaylandSurfaceGrabber", "private", "", "public"] }, + { "symbol": [ "QWaylandSurfaceRole", "private", "", "public"] }, + { "symbol": [ "QWaylandTextInput", "private", "", "public"] }, + { "symbol": [ "QWaylandTextInputManager", "private", "", "public"] }, + { "symbol": [ "QWaylandTextInputManagerV3", "private", "", "public"] }, + { "symbol": [ "QWaylandTextInputV3", "private", "", "public"] }, + { "symbol": [ "QWaylandTouch", "private", "", "public"] }, + { "symbol": [ "QWaylandView", "private", "", "public"] }, + { "symbol": [ "QWaylandViewporter", "private", "", "public"] }, + { "symbol": [ "QWaylandWlShell", "private", "", "public"] }, + { "symbol": [ "QWaylandWlShellSurface", "private", "", "public"] }, + { "symbol": [ "QWaylandXdgDecorationManagerV1", "private", "", "public"] }, + { "symbol": [ "QWaylandXdgOutputManagerV1", "private", "", "public"] }, + { "symbol": [ "QWaylandXdgOutputV1", "private", "", "public"] }, + { "symbol": [ "QWaylandXdgPopup", "private", "", "public"] }, + { "symbol": [ "QWaylandXdgShell", "private", "", "public"] }, + { "symbol": [ "QWaylandXdgSurface", "private", "", "public"] }, + { "symbol": [ "QWaylandXdgToplevel", "private", "", "public"] }, + { "symbol": [ "QWeakPointer", "private", "", "public"] }, + { "symbol": [ "QWebChannel", "private", "", "public"] }, + { "symbol": [ "QWebChannelAbstractTransport", "private", "", "public"] }, + { "symbol": [ "QWebEngineCertificateError", "private", "", "public"] }, + { "symbol": [ "QWebEngineClientCertificateSelection", "private", "", "public"] }, + { "symbol": [ "QWebEngineClientCertificateStore", "private", "", "public"] }, + { "symbol": [ "QWebEngineClientHints", "private", "", "public"] }, + { "symbol": [ "QWebEngineContextMenuRequest", "private", "", "public"] }, + { "symbol": [ "QWebEngineCookieStore", "private", "", "public"] }, + { "symbol": [ "QWebEngineDesktopMediaRequest", "private", "", "public"] }, + { "symbol": [ "QWebEngineDownloadRequest", "private", "", "public"] }, + { "symbol": [ "QWebEngineExtensionInfo", "private", "", "public"] }, + { "symbol": [ "QWebEngineExtensionManager", "private", "", "public"] }, + { "symbol": [ "QWebEngineFileSystemAccessRequest", "private", "", "public"] }, + { "symbol": [ "QWebEngineFindTextResult", "private", "", "public"] }, + { "symbol": [ "QWebEngineFrame", "private", "", "public"] }, + { "symbol": [ "QWebEngineFullScreenRequest", "private", "", "public"] }, + { "symbol": [ "QWebEngineGlobalSettings", "private", "", "public"] }, + { "symbol": [ "QWebEngineHistory", "private", "", "public"] }, + { "symbol": [ "QWebEngineHistoryItem", "private", "", "public"] }, + { "symbol": [ "QWebEngineHistoryModel", "private", "", "public"] }, + { "symbol": [ "QWebEngineHttpRequest", "private", "", "public"] }, + { "symbol": [ "QWebEngineLoadingInfo", "private", "", "public"] }, + { "symbol": [ "QWebEngineNavigationRequest", "private", "", "public"] }, + { "symbol": [ "QWebEngineNewWindowRequest", "private", "", "public"] }, + { "symbol": [ "QWebEngineNotification", "private", "", "public"] }, + { "symbol": [ "QWebEnginePage", "private", "", "public"] }, + { "symbol": [ "QWebEnginePermission", "private", "", "public"] }, + { "symbol": [ "QWebEngineProfile", "private", "", "public"] }, + { "symbol": [ "QWebEngineProfileBuilder", "private", "", "public"] }, + { "symbol": [ "QWebEngineQuotaRequest", "private", "", "public"] }, + { "symbol": [ "QWebEngineRegisterProtocolHandlerRequest", "private", "", "public"] }, + { "symbol": [ "QWebEngineScript", "private", "", "public"] }, + { "symbol": [ "QWebEngineScriptCollection", "private", "", "public"] }, + { "symbol": [ "QWebEngineSettings", "private", "", "public"] }, + { "symbol": [ "QWebEngineUrlRequestInfo", "private", "", "public"] }, + { "symbol": [ "QWebEngineUrlRequestInterceptor", "private", "", "public"] }, + { "symbol": [ "QWebEngineUrlRequestJob", "private", "", "public"] }, + { "symbol": [ "QWebEngineUrlScheme", "private", "", "public"] }, + { "symbol": [ "QWebEngineUrlSchemeHandler", "private", "", "public"] }, + { "symbol": [ "QWebEngineView", "private", "", "public"] }, + { "symbol": [ "QWebEngineWebAuthPinRequest", "private", "", "public"] }, + { "symbol": [ "QWebEngineWebAuthUxRequest", "private", "", "public"] }, + { "symbol": [ "QWebSocket", "private", "", "public"] }, + { "symbol": [ "QWebSocketCorsAuthenticator", "private", "", "public"] }, + { "symbol": [ "QWebSocketHandshakeOptions", "private", "", "public"] }, + { "symbol": [ "QWebSocketProtocol", "private", "", "public"] }, + { "symbol": [ "QWebSocketServer", "private", "", "public"] }, + { "symbol": [ "QWhatsThis", "private", "", "public"] }, + { "symbol": [ "QWhatsThisClickedEvent", "private", "", "public"] }, + { "symbol": [ "QWheelEvent", "private", "", "public"] }, + { "symbol": [ "QWidget", "private", "", "public"] }, + { "symbol": [ "QWidgetAction", "private", "", "public"] }, + { "symbol": [ "QWidgetData", "private", "", "public"] }, + { "symbol": [ "QWidgetItem", "private", "", "public"] }, + { "symbol": [ "QWidgetItemV2", "private", "", "public"] }, + { "symbol": [ "QWidgetList", "private", "", "public"] }, + { "symbol": [ "QWidgetMapper", "private", "", "public"] }, + { "symbol": [ "QWidgetSet", "private", "", "public"] }, + { "symbol": [ "QWinEventNotifier", "private", "", "public"] }, + { "symbol": [ "QWindow", "private", "", "public"] }, + { "symbol": [ "QWindowCapture", "private", "", "public"] }, + { "symbol": [ "QWindowList", "private", "", "public"] }, + { "symbol": [ "QWindowStateChangeEvent", "private", "", "public"] }, + { "symbol": [ "QWizard", "private", "", "public"] }, + { "symbol": [ "QWizardPage", "private", "", "public"] }, + { "symbol": [ "QWriteLocker", "private", "", "public"] }, + { "symbol": [ "QXmlAttributes", "private", "", "public"] }, + { "symbol": [ "QXmlContentHandler", "private", "", "public"] }, + { "symbol": [ "QXmlDTDHandler", "private", "", "public"] }, + { "symbol": [ "QXmlDeclHandler", "private", "", "public"] }, + { "symbol": [ "QXmlDefaultHandler", "private", "", "public"] }, + { "symbol": [ "QXmlEntityResolver", "private", "", "public"] }, + { "symbol": [ "QXmlErrorHandler", "private", "", "public"] }, + { "symbol": [ "QXmlInputSource", "private", "", "public"] }, + { "symbol": [ "QXmlLexicalHandler", "private", "", "public"] }, + { "symbol": [ "QXmlLocator", "private", "", "public"] }, + { "symbol": [ "QXmlNamespaceSupport", "private", "", "public"] }, + { "symbol": [ "QXmlParseException", "private", "", "public"] }, + { "symbol": [ "QXmlReader", "private", "", "public"] }, + { "symbol": [ "QXmlSimpleReader", "private", "", "public"] }, + { "symbol": [ "QXmlStreamAttribute", "private", "", "public"] }, + { "symbol": [ "QXmlStreamAttributes", "private", "", "public"] }, + { "symbol": [ "QXmlStreamEntityDeclaration", "private", "", "public"] }, + { "symbol": [ "QXmlStreamEntityDeclarations", "private", "", "public"] }, + { "symbol": [ "QXmlStreamEntityResolver", "private", "", "public"] }, + { "symbol": [ "QXmlStreamNamespaceDeclaration", "private", "", "public"] }, + { "symbol": [ "QXmlStreamNamespaceDeclarations", "private", "", "public"] }, + { "symbol": [ "QXmlStreamNotationDeclaration", "private", "", "public"] }, + { "symbol": [ "QXmlStreamNotationDeclarations", "private", "", "public"] }, + { "symbol": [ "QXmlStreamReader", "private", "", "public"] }, + { "symbol": [ "QXmlStreamWriter", "private", "", "public"] }, + { "symbol": [ "Q_IPV6ADDR", "private", "", "public"] }, + { "symbol": [ "Qt", "private", "", "public"] }, + { "symbol": [ "QtAlgorithms", "private", "", "public"] }, + { "symbol": [ "QtAudio", "private", "", "public"] }, + { "symbol": [ "QtBluetoothVersion", "private", "", "public"] }, + { "symbol": [ "QtCborCommon", "private", "", "public"] }, + { "symbol": [ "QtCleanUpFunction", "private", "", "public"] }, + { "symbol": [ "QtCompare", "private", "", "public"] }, + { "symbol": [ "QtCompilerDetection", "private", "", "public"] }, + { "symbol": [ "QtConcurrentFilter", "private", "", "public"] }, + { "symbol": [ "QtConcurrentMap", "private", "", "public"] }, + { "symbol": [ "QtConcurrentRun", "private", "", "public"] }, + { "symbol": [ "QtConcurrentTask", "private", "", "public"] }, + { "symbol": [ "QtConcurrentVersion", "private", "", "public"] }, + { "symbol": [ "QtConfig", "private", "", "public"] }, + { "symbol": [ "QtConnectivityVersion", "private", "", "public"] }, + { "symbol": [ "QtConstructorMacros", "private", "", "public"] }, + { "symbol": [ "QtContainerFwd", "private", "", "public"] }, + { "symbol": [ "QtCore5CompatVersion", "private", "", "public"] }, + { "symbol": [ "QtCoreGlobal", "private", "", "public"] }, + { "symbol": [ "QtCoreVersion", "private", "", "public"] }, + { "symbol": [ "QtCoverageScanner", "private", "", "public"] }, + { "symbol": [ "QtDBusVersion", "private", "", "public"] }, + { "symbol": [ "QtDarwinHelpers", "private", "", "public"] }, + { "symbol": [ "QtDebug", "private", "", "public"] }, + { "symbol": [ "QtDeprecationMarkers", "private", "", "public"] }, + { "symbol": [ "QtDeviceDiscoverySupportVersion", "private", "", "public"] }, + { "symbol": [ "QtEndian", "private", "", "public"] }, + { "symbol": [ "QtEvents", "private", "", "public"] }, + { "symbol": [ "QtExceptionHandling", "private", "", "public"] }, + { "symbol": [ "QtFFmpegMediaPluginImplVersion", "private", "", "public"] }, + { "symbol": [ "QtFbSupportVersion", "private", "", "public"] }, + { "symbol": [ "QtGlobal", "private", "", "public"] }, + { "symbol": [ "QtGuiVersion", "private", "", "public"] }, + { "symbol": [ "QtHelpVersion", "private", "", "public"] }, + { "symbol": [ "QtInputSupportVersion", "private", "", "public"] }, + { "symbol": [ "QtKmsSupportVersion", "private", "", "public"] }, + { "symbol": [ "QtLabsAnimationVersion", "private", "", "public"] }, + { "symbol": [ "QtLabsFolderListModelVersion", "private", "", "public"] }, + { "symbol": [ "QtLabsPlatformVersion", "private", "", "public"] }, + { "symbol": [ "QtLabsQmlModelsVersion", "private", "", "public"] }, + { "symbol": [ "QtLabsSettingsVersion", "private", "", "public"] }, + { "symbol": [ "QtLabsSharedImageVersion", "private", "", "public"] }, + { "symbol": [ "QtLabsStyleKitImplVersion", "private", "", "public"] }, + { "symbol": [ "QtLabsStyleKitVersion", "private", "", "public"] }, + { "symbol": [ "QtLabsSynchronizerVersion", "private", "", "public"] }, + { "symbol": [ "QtLabsWavefrontMeshVersion", "private", "", "public"] }, + { "symbol": [ "QtLogging", "private", "", "public"] }, + { "symbol": [ "QtMalloc", "private", "", "public"] }, + { "symbol": [ "QtMath", "private", "", "public"] }, + { "symbol": [ "QtMessageHandler", "private", "", "public"] }, + { "symbol": [ "QtMultimediaQuickVersion", "private", "", "public"] }, + { "symbol": [ "QtMultimediaTestLibVersion", "private", "", "public"] }, + { "symbol": [ "QtMultimediaVersion", "private", "", "public"] }, + { "symbol": [ "QtMultimediaWidgetsVersion", "private", "", "public"] }, + { "symbol": [ "QtNetworkAuthVersion", "private", "", "public"] }, + { "symbol": [ "QtNetworkVersion", "private", "", "public"] }, + { "symbol": [ "QtNumeric", "private", "", "public"] }, + { "symbol": [ "QtOpenGLVersion", "private", "", "public"] }, + { "symbol": [ "QtOpenGLWidgetsVersion", "private", "", "public"] }, + { "symbol": [ "QtPacketProtocolVersion", "private", "", "public"] }, + { "symbol": [ "QtPdfQuickVersion", "private", "", "public"] }, + { "symbol": [ "QtPdfVersion", "private", "", "public"] }, + { "symbol": [ "QtPdfWidgetsVersion", "private", "", "public"] }, + { "symbol": [ "QtPlugin", "private", "", "public"] }, + { "symbol": [ "QtPluginInstanceFunction", "private", "", "public"] }, + { "symbol": [ "QtPluginMetaDataFunction", "private", "", "public"] }, + { "symbol": [ "QtPrintSupportVersion", "private", "", "public"] }, + { "symbol": [ "QtPrivate", "private", "", "public"] }, + { "symbol": [ "QtProcessorDetection", "private", "", "public"] }, + { "symbol": [ "QtQmlCompilerVersion", "private", "", "public"] }, + { "symbol": [ "QtQmlCoreVersion", "private", "", "public"] }, + { "symbol": [ "QtQmlDebugVersion", "private", "", "public"] }, + { "symbol": [ "QtQmlDomVersion", "private", "", "public"] }, + { "symbol": [ "QtQmlFormatVersion", "private", "", "public"] }, + { "symbol": [ "QtQmlIntegrationVersion", "private", "", "public"] }, + { "symbol": [ "QtQmlLocalStorageVersion", "private", "", "public"] }, + { "symbol": [ "QtQmlMetaVersion", "private", "", "public"] }, + { "symbol": [ "QtQmlModelsVersion", "private", "", "public"] }, + { "symbol": [ "QtQmlNetworkVersion", "private", "", "public"] }, + { "symbol": [ "QtQmlToolingSettingsVersion", "private", "", "public"] }, + { "symbol": [ "QtQmlTypeRegistrarVersion", "private", "", "public"] }, + { "symbol": [ "QtQmlVersion", "private", "", "public"] }, + { "symbol": [ "QtQmlWorkerScriptVersion", "private", "", "public"] }, + { "symbol": [ "QtQmlXmlListModelVersion", "private", "", "public"] }, + { "symbol": [ "QtQmltcVersion", "private", "", "public"] }, + { "symbol": [ "QtQuick3DAssetImportVersion", "private", "", "public"] }, + { "symbol": [ "QtQuick3DAssetUtilsVersion", "private", "", "public"] }, + { "symbol": [ "QtQuick3DGlslParserVersion", "private", "", "public"] }, + { "symbol": [ "QtQuick3DHelpersImplVersion", "private", "", "public"] }, + { "symbol": [ "QtQuick3DHelpersVersion", "private", "", "public"] }, + { "symbol": [ "QtQuick3DIblBakerVersion", "private", "", "public"] }, + { "symbol": [ "QtQuick3DParticlesVersion", "private", "", "public"] }, + { "symbol": [ "QtQuick3DRuntimeRenderVersion", "private", "", "public"] }, + { "symbol": [ "QtQuick3DSpatialAudioVersion", "private", "", "public"] }, + { "symbol": [ "QtQuick3DUtilsVersion", "private", "", "public"] }, + { "symbol": [ "QtQuick3DVersion", "private", "", "public"] }, + { "symbol": [ "QtQuickControls2BasicStyleImplVersion", "private", "", "public"] }, + { "symbol": [ "QtQuickControls2BasicVersion", "private", "", "public"] }, + { "symbol": [ "QtQuickControls2FluentWinUI3StyleImplVersion", "private", "", "public"] }, + { "symbol": [ "QtQuickControls2FusionStyleImplVersion", "private", "", "public"] }, + { "symbol": [ "QtQuickControls2FusionVersion", "private", "", "public"] }, + { "symbol": [ "QtQuickControls2ImagineStyleImplVersion", "private", "", "public"] }, + { "symbol": [ "QtQuickControls2ImagineVersion", "private", "", "public"] }, + { "symbol": [ "QtQuickControls2ImplVersion", "private", "", "public"] }, + { "symbol": [ "QtQuickControls2MaterialStyleImplVersion", "private", "", "public"] }, + { "symbol": [ "QtQuickControls2MaterialVersion", "private", "", "public"] }, + { "symbol": [ "QtQuickControls2UniversalStyleImplVersion", "private", "", "public"] }, + { "symbol": [ "QtQuickControls2UniversalVersion", "private", "", "public"] }, + { "symbol": [ "QtQuickControls2Version", "private", "", "public"] }, + { "symbol": [ "QtQuickControlsTestUtilsVersion", "private", "", "public"] }, + { "symbol": [ "QtQuickDialogs2QuickImplVersion", "private", "", "public"] }, + { "symbol": [ "QtQuickDialogs2UtilsVersion", "private", "", "public"] }, + { "symbol": [ "QtQuickDialogs2Version", "private", "", "public"] }, + { "symbol": [ "QtQuickEffectsVersion", "private", "", "public"] }, + { "symbol": [ "QtQuickLayoutsVersion", "private", "", "public"] }, + { "symbol": [ "QtQuickParticlesVersion", "private", "", "public"] }, + { "symbol": [ "QtQuickShapesDesignHelpersVersion", "private", "", "public"] }, + { "symbol": [ "QtQuickShapesVersion", "private", "", "public"] }, + { "symbol": [ "QtQuickTemplates2Version", "private", "", "public"] }, + { "symbol": [ "QtQuickTestUtilsVersion", "private", "", "public"] }, + { "symbol": [ "QtQuickTestVersion", "private", "", "public"] }, + { "symbol": [ "QtQuickTimelineBlendTreesVersion", "private", "", "public"] }, + { "symbol": [ "QtQuickTimelineVersion", "private", "", "public"] }, + { "symbol": [ "QtQuickVectorImageGeneratorVersion", "private", "", "public"] }, + { "symbol": [ "QtQuickVectorImageHelpersVersion", "private", "", "public"] }, + { "symbol": [ "QtQuickVectorImageVersion", "private", "", "public"] }, + { "symbol": [ "QtQuickVersion", "private", "", "public"] }, + { "symbol": [ "QtQuickWidgetsVersion", "private", "", "public"] }, + { "symbol": [ "QtResource", "private", "", "public"] }, + { "symbol": [ "QtScxmlGlobalVersion", "private", "", "public"] }, + { "symbol": [ "QtScxmlQmlVersion", "private", "", "public"] }, + { "symbol": [ "QtScxmlVersion", "private", "", "public"] }, + { "symbol": [ "QtShaderToolsVersion", "private", "", "public"] }, + { "symbol": [ "QtSpatialAudioVersion", "private", "", "public"] }, + { "symbol": [ "QtSqlVersion", "private", "", "public"] }, + { "symbol": [ "QtStartUpFunction", "private", "", "public"] }, + { "symbol": [ "QtStateMachineQmlVersion", "private", "", "public"] }, + { "symbol": [ "QtStateMachineVersion", "private", "", "public"] }, + { "symbol": [ "QtStdLibDetection", "private", "", "public"] }, + { "symbol": [ "QtSvgVersion", "private", "", "public"] }, + { "symbol": [ "QtSvgWidgetsVersion", "private", "", "public"] }, + { "symbol": [ "QtSwap", "private", "", "public"] }, + { "symbol": [ "QtSystemDetection", "private", "", "public"] }, + { "symbol": [ "QtTestGui", "private", "", "public"] }, + { "symbol": [ "QtTestNetwork", "private", "", "public"] }, + { "symbol": [ "QtTestVersion", "private", "", "public"] }, + { "symbol": [ "QtTestWidgets", "private", "", "public"] }, + { "symbol": [ "QtToolsVersion", "private", "", "public"] }, + { "symbol": [ "QtTypeTraits", "private", "", "public"] }, + { "symbol": [ "QtUiPluginVersion", "private", "", "public"] }, + { "symbol": [ "QtUiToolsVersion", "private", "", "public"] }, + { "symbol": [ "QtVersion", "private", "", "public"] }, + { "symbol": [ "QtWaylandClientVersion", "private", "", "public"] }, + { "symbol": [ "QtWaylandCompositorIviapplicationVersion", "private", "", "public"] }, + { "symbol": [ "QtWaylandCompositorPresentationTimeVersion", "private", "", "public"] }, + { "symbol": [ "QtWaylandCompositorVersion", "private", "", "public"] }, + { "symbol": [ "QtWaylandCompositorWLShellVersion", "private", "", "public"] }, + { "symbol": [ "QtWaylandCompositorXdgShellVersion", "private", "", "public"] }, + { "symbol": [ "QtWaylandEglCompositorHwIntegrationVersion", "private", "", "public"] }, + { "symbol": [ "QtWaylandGlobalVersion", "private", "", "public"] }, + { "symbol": [ "QtWebChannelQuickVersion", "private", "", "public"] }, + { "symbol": [ "QtWebChannelVersion", "private", "", "public"] }, + { "symbol": [ "QtWebEngineCoreVersion", "private", "", "public"] }, + { "symbol": [ "QtWebEngineQuickVersion", "private", "", "public"] }, + { "symbol": [ "QtWebEngineWidgetsVersion", "private", "", "public"] }, + { "symbol": [ "QtWebSocketsVersion", "private", "", "public"] }, + { "symbol": [ "QtWidgetsVersion", "private", "", "public"] }, + { "symbol": [ "QtWlShellIntegrationVersion", "private", "", "public"] }, + { "symbol": [ "QtXmlVersion", "private", "", "public"] }, + { "symbol": [ "operator==", "private", "", "public"] }, + { "symbol": [ "operator!=", "private", "", "public"] }, + { "symbol": [ "operator<", "private", "", "public"] }, + { "symbol": [ "operator<=", "private", "", "public"] }, + { "symbol": [ "operator>", "private", "", "public"] }, + { "symbol": [ "operator>=", "private", "", "public"] }, + { "symbol": [ "comparesEqual", "private", "", "public"] }, + { "include": [ "@[\"<](QtBluetooth/)?qbluetoothaddress\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtBluetooth/)?qbluetoothdevicediscoveryagent\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtBluetooth/)?qbluetoothdeviceinfo\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtBluetooth/)?qbluetoothhostinfo\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtBluetooth/)?qbluetoothlocaldevice\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtBluetooth/)?qbluetoothserver\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtBluetooth/)?qbluetoothservicediscoveryagent\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtBluetooth/)?qbluetoothserviceinfo\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtBluetooth/)?qbluetoothsocket\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtBluetooth/)?qbluetoothuuid\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtBluetooth/)?qlowenergyadvertisingdata\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtBluetooth/)?qlowenergyadvertisingparameters\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtBluetooth/)?qlowenergycharacteristic\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtBluetooth/)?qlowenergycharacteristicdata\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtBluetooth/)?qlowenergyconnectionparameters\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtBluetooth/)?qlowenergycontroller\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtBluetooth/)?qlowenergydescriptor\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtBluetooth/)?qlowenergydescriptordata\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtBluetooth/)?qlowenergyservice\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtBluetooth/)?qlowenergyservicedata\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtBluetooth/)?qtbluetoothversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtConcurrent/)?qtconcurrentfilter\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtConcurrent/)?qtconcurrentmap\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtConcurrent/)?qtconcurrentrun\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtConcurrent/)?qtconcurrenttask\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtConcurrent/)?qtconcurrentversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtConnectivity/)?qtconnectivityversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qabstractanimation\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qabstracteventdispatcher\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qabstractitemmodel\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qabstractnativeeventfilter\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qabstractproxymodel\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qanimationgroup\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qanystringview\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qapplicationstatic\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qarraydata\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qarraydataops\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qarraydatapointer\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qassert\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qassociativeiterable\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qatomicscopedvaluerollback\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qbasictimer\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qbindingstorage\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qbitarray\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qbuffer\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qbytearray\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qbytearrayalgorithms\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qbytearraylist\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qbytearraymatcher\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qbytearrayview\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qcache\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qcalendar\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qcborarray\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qcbormap\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qcborstreamreader\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qcborstreamwriter\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qcborvalue\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qchar\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qchronotimer\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qcollator\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qcommandlineoption\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qcommandlineparser\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qconcatenatetablesproxymodel\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qcontiguouscache\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qcoreapplication\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qcryptographichash\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qdatastream\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qdatetime\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qdeadlinetimer\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qdebug\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qdir\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qdiriterator\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qdirlisting\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qeasingcurve\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qelapsedtimer\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qeventloop\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qexception\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qfactoryinterface\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qfile\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qfiledevice\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qfileinfo\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qfileselector\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qfilesystemwatcher\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qflags\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qfloat16\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qforeach\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qfunctionpointer\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qfuture\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qfutureinterface\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qfuturesynchronizer\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qfuturewatcher\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qglobalstatic\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qhash\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qhashfunctions\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qidentityproxymodel\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qiodevice\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qiodevicebase\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qitemselectionmodel\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qiterable\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qjsonarray\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qjsondocument\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qjsonobject\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qjsonparseerror\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qjsonvalue\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qlatin1stringmatcher\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qlatin1stringview\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qlibrary\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qlibraryinfo\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qline\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qlist\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qlocale\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qlockfile\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qloggingcategory\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qmap\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qmargins\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qmessageauthenticationcode\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qmetaassociation\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qmetacontainer\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qmetasequence\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qmetatype\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qmimedata\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qmimedatabase\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qmimetype\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qminmax\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qmutex\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qobject\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qobjectcleanuphandler\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qoperatingsystemversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qoverload\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qpair\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qparallelanimationgroup\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qpauseanimation\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qpermissions\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qpluginloader\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qpoint\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qpointer\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qprocess\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qpromise\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qproperty\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qpropertyanimation\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qqueue\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qrangemodel\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qrangemodeladapter\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qreadwritelock\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qrect\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qregularexpression\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qresource\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qrunnable\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qsavefile\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qscopedpointer\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qscopedvaluerollback\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qscopeguard\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qsemaphore\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qsequentialanimationgroup\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qsequentialiterable\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qset\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qsettings\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qshareddata\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qsharedmemory\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qsharedpointer\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qsignalmapper\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qsize\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qsocketnotifier\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qsortfilterproxymodel\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qspan\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qstack\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qstandardpaths\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qstaticlatin1stringmatcher\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qstorageinfo\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qstring\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qstringalgorithms\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qstringbuilder\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qstringconverter\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qstringlist\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qstringlistmodel\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qstringliteral\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qstringmatcher\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qstringtokenizer\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qstringview\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qsysinfo\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qsystemsemaphore\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qtaggedpointer\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qtclasshelpermacros\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qtcoreglobal\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qtcoreversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qtdeprecationmarkers\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qtemporarydir\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qtemporaryfile\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qtenvironmentvariables\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qtextboundaryfinder\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qtextstream\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qthread\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qthreadpool\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qthreadstorage\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qtimeline\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qtimer\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qtimezone\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qtpreprocessorsupport\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qtranslator\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qtransposeproxymodel\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qtresource\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qttranslation\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qttypetraits\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qtversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qtversionchecks\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qtypeinfo\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qtyperevision\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qtypes\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qurl\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qurlquery\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qutf8stringview\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?quuid\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qvariant\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qvariantanimation\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qvarianthash\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qvariantlist\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qvariantmap\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qvarlengtharray\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qvector\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qversionnumber\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qwaitcondition\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore/)?qwineventnotifier\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore5Compat/)?qbinaryjson\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore5Compat/)?qlinkedlist\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore5Compat/)?qregexp\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore5Compat/)?qstringref\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore5Compat/)?qtcore5compatversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtCore5Compat/)?qtextcodec\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtDBus/)?qdbusabstractadaptor\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtDBus/)?qdbusabstractinterface\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtDBus/)?qdbusargument\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtDBus/)?qdbusconnection\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtDBus/)?qdbusconnectioninterface\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtDBus/)?qdbuscontext\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtDBus/)?qdbuserror\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtDBus/)?qdbusinterface\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtDBus/)?qdbusmessage\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtDBus/)?qdbusmetatype\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtDBus/)?qdbuspendingcall\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtDBus/)?qdbuspendingreply\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtDBus/)?qdbusreply\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtDBus/)?qdbusserver\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtDBus/)?qdbusservicewatcher\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtDBus/)?qdbusunixfiledescriptor\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtDBus/)?qdbusvirtualobject\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtDBus/)?qtdbusversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtDeviceDiscoverySupport/)?qtdevicediscoverysupportversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtFFmpegMediaPluginImpl/)?qtffmpegmediapluginimplversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtFbSupport/)?qtfbsupportversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qabstractfileiconprovider\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qabstracttextdocumentlayout\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qaccessibilityhints\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qaccessible\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qaccessiblebridge\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qaccessibleobject\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qaccessibleplugin\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qaction\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qactiongroup\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qbackingstore\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qbitmap\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qbrush\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qclipboard\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qcolor\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qcolorspace\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qcolortransform\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qcursor\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qdesktopservices\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qdrag\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qeventpoint\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qfilesystemmodel\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qfont\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qfontdatabase\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qfontinfo\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qfontmetrics\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qfontvariableaxis\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qgenericmatrix\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qgenericplugin\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qgenericpluginfactory\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qglyphrun\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qguiapplication\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qicon\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qiconengine\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qiconengineplugin\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qimage\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qimageiohandler\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qimagereader\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qimagewriter\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qinputdevice\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qinputmethod\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qkeysequence\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qmatrix4x4\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qmovie\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qoffscreensurface\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qopenglcontext\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qopenglextrafunctions\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qopenglfunctions\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qpagedpaintdevice\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qpagelayout\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qpageranges\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qpagesize\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qpaintdevice\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qpaintdevicewindow\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qpaintengine\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qpainter\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qpainterpath\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qpainterstateguard\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qpalette\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qpdfoutputintent\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qpdfwriter\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qpen\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qpicture\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qpixelformat\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qpixmap\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qpixmapcache\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qpointingdevice\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qpolygon\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qquaternion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qrasterwindow\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qrawfont\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qregion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qrgb\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qrgba64\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qrgbafloat\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qscreen\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qsessionmanager\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qshortcut\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qstandarditemmodel\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qstatictext\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qstylehints\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qsurface\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qsurfaceformat\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qsyntaxhighlighter\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qtextcursor\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qtextdocument\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qtextdocumentfragment\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qtextdocumentwriter\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qtextformat\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qtextlayout\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qtextlist\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qtextobject\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qtextoption\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qtexttable\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qtguiversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qtransform\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qundogroup\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qundostack\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qvalidator\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qvulkanfunctions\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qvulkaninstance\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qvulkanwindow\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtGui/)?qwindow\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtHelp/)?qcompressedhelpinfo\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtHelp/)?qhelpcontentitem\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtHelp/)?qhelpcontentwidget\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtHelp/)?qhelpengine\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtHelp/)?qhelpenginecore\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtHelp/)?qhelpfilterdata\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtHelp/)?qhelpfilterengine\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtHelp/)?qhelpfiltersettingswidget\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtHelp/)?qhelpindexwidget\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtHelp/)?qhelplink\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtHelp/)?qhelpsearchengine\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtHelp/)?qhelpsearchenginecore\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtHelp/)?qhelpsearchquerywidget\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtHelp/)?qhelpsearchresult\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtHelp/)?qhelpsearchresultwidget\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtHelp/)?qthelpversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtInputSupport/)?qtinputsupportversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtKmsSupport/)?qtkmssupportversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtLabsAnimation/)?qtlabsanimationversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtLabsFolderListModel/)?qtlabsfolderlistmodelversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtLabsPlatform/)?qtlabsplatformversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtLabsQmlModels/)?qtlabsqmlmodelsversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtLabsSettings/)?qtlabssettingsversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtLabsSharedImage/)?qtlabssharedimageversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtLabsStyleKit/)?qtlabsstylekitversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtLabsStyleKitImpl/)?qtlabsstylekitimplversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtLabsSynchronizer/)?qtlabssynchronizerversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtLabsWavefrontMesh/)?qtlabswavefrontmeshversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtMultimedia/)?qabstractvideobuffer\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtMultimedia/)?qaudio\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtMultimedia/)?qaudiobuffer\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtMultimedia/)?qaudiobufferinput\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtMultimedia/)?qaudiobufferoutput\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtMultimedia/)?qaudiodecoder\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtMultimedia/)?qaudiodevice\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtMultimedia/)?qaudioformat\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtMultimedia/)?qaudioinput\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtMultimedia/)?qaudiooutput\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtMultimedia/)?qaudiosink\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtMultimedia/)?qaudiosource\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtMultimedia/)?qcamera\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtMultimedia/)?qcameradevice\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtMultimedia/)?qcapturablewindow\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtMultimedia/)?qimagecapture\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtMultimedia/)?qmediacapturesession\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtMultimedia/)?qmediadevices\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtMultimedia/)?qmediaformat\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtMultimedia/)?qmediametadata\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtMultimedia/)?qmediaplayer\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtMultimedia/)?qmediarecorder\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtMultimedia/)?qmediatimerange\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtMultimedia/)?qplaybackoptions\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtMultimedia/)?qscreencapture\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtMultimedia/)?qsoundeffect\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtMultimedia/)?qtaudio\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtMultimedia/)?qtmultimediaversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtMultimedia/)?qvideoframe\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtMultimedia/)?qvideoframeformat\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtMultimedia/)?qvideoframeinput\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtMultimedia/)?qvideosink\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtMultimedia/)?qwavedecoder\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtMultimedia/)?qwindowcapture\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtMultimediaQuick/)?qtmultimediaquickversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtMultimediaTestLib/)?qtmultimediatestlibversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtMultimediaWidgets/)?qgraphicsvideoitem\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtMultimediaWidgets/)?qtmultimediawidgetsversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtMultimediaWidgets/)?qvideowidget\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtNetwork/)?qabstractnetworkcache\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtNetwork/)?qabstractsocket\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtNetwork/)?qauthenticator\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtNetwork/)?qdnslookup\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtNetwork/)?qdtls\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtNetwork/)?qformdatabuilder\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtNetwork/)?qhostaddress\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtNetwork/)?qhostinfo\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtNetwork/)?qhstspolicy\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtNetwork/)?qhttp1configuration\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtNetwork/)?qhttp2configuration\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtNetwork/)?qhttpheaders\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtNetwork/)?qhttpmultipart\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtNetwork/)?qlocalserver\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtNetwork/)?qlocalsocket\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtNetwork/)?qnetworkaccessmanager\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtNetwork/)?qnetworkcookie\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtNetwork/)?qnetworkcookiejar\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtNetwork/)?qnetworkdatagram\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtNetwork/)?qnetworkdiskcache\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtNetwork/)?qnetworkinformation\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtNetwork/)?qnetworkinterface\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtNetwork/)?qnetworkproxy\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtNetwork/)?qnetworkreply\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtNetwork/)?qnetworkrequest\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtNetwork/)?qnetworkrequestfactory\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtNetwork/)?qocspresponse\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtNetwork/)?qpassworddigestor\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtNetwork/)?qrestaccessmanager\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtNetwork/)?qrestreply\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtNetwork/)?qssl\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtNetwork/)?qsslcertificate\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtNetwork/)?qsslcertificateextension\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtNetwork/)?qsslcipher\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtNetwork/)?qsslconfiguration\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtNetwork/)?qssldiffiehellmanparameters\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtNetwork/)?qsslellipticcurve\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtNetwork/)?qsslerror\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtNetwork/)?qsslkey\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtNetwork/)?qsslpresharedkeyauthenticator\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtNetwork/)?qsslserver\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtNetwork/)?qsslsocket\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtNetwork/)?qtcpserver\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtNetwork/)?qtcpsocket\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtNetwork/)?qtnetworkversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtNetwork/)?qudpsocket\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtNetworkAuth/)?qabstractoauth\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtNetworkAuth/)?qabstractoauth2\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtNetworkAuth/)?qabstractoauthreplyhandler\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtNetworkAuth/)?qoauth1\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtNetworkAuth/)?qoauth1signature\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtNetworkAuth/)?qoauth2authorizationcodeflow\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtNetworkAuth/)?qoauth2deviceauthorizationflow\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtNetworkAuth/)?qoauthhttpserverreplyhandler\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtNetworkAuth/)?qoauthoobreplyhandler\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtNetworkAuth/)?qoauthurischemereplyhandler\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtNetworkAuth/)?qtnetworkauthversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtOpenGL/)?qopenglbuffer\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtOpenGL/)?qopenglframebufferobject\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtOpenGL/)?qopenglfunctions_1_0\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtOpenGL/)?qopenglfunctions_1_1\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtOpenGL/)?qopenglfunctions_1_2\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtOpenGL/)?qopenglfunctions_1_3\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtOpenGL/)?qopenglfunctions_1_4\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtOpenGL/)?qopenglfunctions_1_5\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtOpenGL/)?qopenglfunctions_2_0\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtOpenGL/)?qopenglfunctions_2_1\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtOpenGL/)?qopenglfunctions_3_0\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtOpenGL/)?qopenglfunctions_3_1\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtOpenGL/)?qopenglfunctions_3_2_compatibility\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtOpenGL/)?qopenglfunctions_3_2_core\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtOpenGL/)?qopenglfunctions_3_3_compatibility\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtOpenGL/)?qopenglfunctions_3_3_core\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtOpenGL/)?qopenglfunctions_4_0_compatibility\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtOpenGL/)?qopenglfunctions_4_0_core\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtOpenGL/)?qopenglfunctions_4_1_compatibility\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtOpenGL/)?qopenglfunctions_4_1_core\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtOpenGL/)?qopenglfunctions_4_2_compatibility\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtOpenGL/)?qopenglfunctions_4_2_core\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtOpenGL/)?qopenglfunctions_4_3_compatibility\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtOpenGL/)?qopenglfunctions_4_3_core\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtOpenGL/)?qopenglfunctions_4_4_compatibility\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtOpenGL/)?qopenglfunctions_4_4_core\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtOpenGL/)?qopenglfunctions_4_5_compatibility\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtOpenGL/)?qopenglfunctions_4_5_core\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtOpenGL/)?qopenglpaintdevice\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtOpenGL/)?qopenglpixeltransferoptions\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtOpenGL/)?qopenglshaderprogram\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtOpenGL/)?qopengltexture\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtOpenGL/)?qopengltextureblitter\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtOpenGL/)?qopengltimerquery\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtOpenGL/)?qopenglversionfunctions\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtOpenGL/)?qopenglversionfunctionsfactory\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtOpenGL/)?qopenglversionprofile\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtOpenGL/)?qopenglvertexarrayobject\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtOpenGL/)?qopenglwindow\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtOpenGL/)?qtopenglversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtOpenGLWidgets/)?qopenglwidget\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtOpenGLWidgets/)?qtopenglwidgetsversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtPacketProtocol/)?qtpacketprotocolversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtPdf/)?qpdfbookmarkmodel\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtPdf/)?qpdfdocument\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtPdf/)?qpdfdocumentrenderoptions\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtPdf/)?qpdflink\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtPdf/)?qpdflinkmodel\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtPdf/)?qpdfpagenavigator\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtPdf/)?qpdfpagerenderer\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtPdf/)?qpdfsearchmodel\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtPdf/)?qpdfselection\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtPdf/)?qtpdfversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtPdfQuick/)?qtpdfquickversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtPdfWidgets/)?qpdfpageselector\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtPdfWidgets/)?qpdfview\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtPdfWidgets/)?qtpdfwidgetsversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtPrintSupport/)?qabstractprintdialog\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtPrintSupport/)?qpagesetupdialog\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtPrintSupport/)?qprintdialog\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtPrintSupport/)?qprintengine\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtPrintSupport/)?qprinter\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtPrintSupport/)?qprinterinfo\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtPrintSupport/)?qprintpreviewdialog\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtPrintSupport/)?qprintpreviewwidget\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtPrintSupport/)?qtprintsupportversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQml/)?qjsengine\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQml/)?qjslist\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQml/)?qjsmanagedvalue\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQml/)?qjsnumbercoercion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQml/)?qjsprimitivevalue\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQml/)?qjsvalue\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQml/)?qjsvalueiterator\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQml/)?qqmlabstracturlinterceptor\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQml/)?qqmlapplicationengine\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQml/)?qqmlcomponent\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQml/)?qqmlcontext\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQml/)?qqmlengine\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQml/)?qqmlerror\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQml/)?qqmlexpression\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQml/)?qqmlextensioninterface\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQml/)?qqmlextensionplugin\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQml/)?qqmlfile\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQml/)?qqmlfileselector\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQml/)?qqmlincubator\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQml/)?qqmlinfo\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQml/)?qqmlmoduleregistration\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQml/)?qqmlnetworkaccessmanagerfactory\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQml/)?qqmlparserstatus\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQml/)?qqmlproperty\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQml/)?qqmlpropertymap\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQml/)?qqmlpropertyvaluesource\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQml/)?qqmlscriptstring\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQml/)?qtqmlversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQmlCompiler/)?qtqmlcompilerversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQmlCore/)?qtqmlcoreversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQmlDebug/)?qtqmldebugversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQmlDom/)?qtqmldomversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQmlFormat/)?qtqmlformatversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQmlIntegration/)?qtqmlintegrationversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQmlLocalStorage/)?qtqmllocalstorageversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQmlMeta/)?qtqmlmetaversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQmlModels/)?qtqmlmodelsversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQmlNetwork/)?qtqmlnetworkversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQmlToolingSettings/)?qtqmltoolingsettingsversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQmlTypeRegistrar/)?qtqmltyperegistrarversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQmlWorkerScript/)?qtqmlworkerscriptversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQmlXmlListModel/)?qtqmlxmllistmodelversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQmltc/)?qtqmltcversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuick/)?qquickframebufferobject\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuick/)?qquickgraphicsconfiguration\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuick/)?qquickgraphicsdevice\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuick/)?qquickimageprovider\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuick/)?qquickitem\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuick/)?qquickitemgrabresult\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuick/)?qquickopenglutils\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuick/)?qquickpainteditem\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuick/)?qquickrendercontrol\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuick/)?qquickrendertarget\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuick/)?qquickrhiitem\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuick/)?qquicktextdocument\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuick/)?qquickview\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuick/)?qquickwindow\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuick/)?qsgflatcolormaterial\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuick/)?qsggeometry\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuick/)?qsgimagenode\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuick/)?qsgmaterial\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuick/)?qsgmaterialshader\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuick/)?qsgninepatchnode\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuick/)?qsgnode\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuick/)?qsgrectanglenode\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuick/)?qsgrendererinterface\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuick/)?qsgrendernode\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuick/)?qsgsimplerectnode\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuick/)?qsgsimpletexturenode\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuick/)?qsgtextnode\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuick/)?qsgtexture\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuick/)?qsgtexturematerial\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuick/)?qsgtextureprovider\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuick/)?qsgvertexcolormaterial\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuick/)?qtquickversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuick3D/)?qquick3d\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuick3D/)?qquick3dgeometry\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuick3D/)?qquick3dinstancing\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuick3D/)?qquick3dobject\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuick3D/)?qquick3dtexturedata\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuick3D/)?qquick3dtextureproviderextension\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuick3D/)?qtquick3dversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuick3DAssetImport/)?qtquick3dassetimportversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuick3DAssetUtils/)?qtquick3dassetutilsversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuick3DGlslParser/)?qtquick3dglslparserversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuick3DHelpers/)?qtquick3dhelpersversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuick3DHelpersImpl/)?qtquick3dhelpersimplversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuick3DIblBaker/)?qtquick3diblbakerversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuick3DParticles/)?qtquick3dparticlesversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuick3DRuntimeRender/)?qtquick3druntimerenderversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuick3DSpatialAudio/)?qtquick3dspatialaudioversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuick3DUtils/)?qtquick3dutilsversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuickControls2/)?qquickattachedpropertypropagator\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuickControls2/)?qquickstyle\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuickControls2/)?qtquickcontrols2version\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuickControls2Basic/)?qtquickcontrols2basicversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuickControls2BasicStyleImpl/)?qtquickcontrols2basicstyleimplversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuickControls2FluentWinUI3StyleImpl/)?qtquickcontrols2fluentwinui3styleimplversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuickControls2Fusion/)?qtquickcontrols2fusionversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuickControls2FusionStyleImpl/)?qtquickcontrols2fusionstyleimplversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuickControls2Imagine/)?qtquickcontrols2imagineversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuickControls2ImagineStyleImpl/)?qtquickcontrols2imaginestyleimplversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuickControls2Impl/)?qtquickcontrols2implversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuickControls2Material/)?qtquickcontrols2materialversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuickControls2MaterialStyleImpl/)?qtquickcontrols2materialstyleimplversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuickControls2Universal/)?qtquickcontrols2universalversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuickControls2UniversalStyleImpl/)?qtquickcontrols2universalstyleimplversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuickControlsTestUtils/)?qtquickcontrolstestutilsversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuickDialogs2/)?qtquickdialogs2version\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuickDialogs2QuickImpl/)?qtquickdialogs2quickimplversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuickDialogs2Utils/)?qtquickdialogs2utilsversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuickEffects/)?qtquickeffectsversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuickLayouts/)?qtquicklayoutsversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuickParticles/)?qtquickparticlesversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuickShapes/)?qtquickshapesversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuickShapesDesignHelpers/)?qtquickshapesdesignhelpersversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuickTemplates2/)?qtquicktemplates2version\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuickTest/)?qtquicktestversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuickTestUtils/)?qtquicktestutilsversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuickTimeline/)?qtquicktimelineversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuickTimelineBlendTrees/)?qtquicktimelineblendtreesversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuickVectorImage/)?qtquickvectorimageversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuickVectorImageGenerator/)?qtquickvectorimagegeneratorversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuickVectorImageHelpers/)?qtquickvectorimagehelpersversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuickWidgets/)?qquickwidget\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtQuickWidgets/)?qtquickwidgetsversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtScxml/)?qscxmlcompiler\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtScxml/)?qscxmlcppdatamodel\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtScxml/)?qscxmldatamodel\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtScxml/)?qscxmlerror\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtScxml/)?qscxmlevent\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtScxml/)?qscxmlinvokableservice\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtScxml/)?qscxmlnulldatamodel\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtScxml/)?qscxmlstatemachine\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtScxml/)?qscxmltabledata\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtScxml/)?qtscxmlversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtScxmlGlobal/)?qtscxmlglobalversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtScxmlQml/)?qtscxmlqmlversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtShaderTools/)?qtshadertoolsversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtSpatialAudio/)?qambientsound\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtSpatialAudio/)?qaudioengine\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtSpatialAudio/)?qaudiolistener\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtSpatialAudio/)?qaudioroom\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtSpatialAudio/)?qspatialsound\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtSpatialAudio/)?qtspatialaudioversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtSql/)?qsqldatabase\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtSql/)?qsqldriver\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtSql/)?qsqldriverplugin\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtSql/)?qsqlerror\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtSql/)?qsqlfield\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtSql/)?qsqlindex\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtSql/)?qsqlquery\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtSql/)?qsqlquerymodel\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtSql/)?qsqlrecord\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtSql/)?qsqlrelationaldelegate\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtSql/)?qsqlrelationaltablemodel\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtSql/)?qsqlresult\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtSql/)?qsqltablemodel\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtSql/)?qtsqlversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtStateMachine/)?qabstractstate\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtStateMachine/)?qabstracttransition\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtStateMachine/)?qeventtransition\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtStateMachine/)?qfinalstate\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtStateMachine/)?qhistorystate\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtStateMachine/)?qkeyeventtransition\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtStateMachine/)?qmouseeventtransition\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtStateMachine/)?qsignaltransition\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtStateMachine/)?qstate\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtStateMachine/)?qstatemachine\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtStateMachine/)?qtstatemachineversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtStateMachineQml/)?qtstatemachineqmlversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtSvg/)?qsvggenerator\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtSvg/)?qsvgrenderer\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtSvg/)?qtsvgversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtSvgWidgets/)?qgraphicssvgitem\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtSvgWidgets/)?qsvgwidget\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtSvgWidgets/)?qtsvgwidgetsversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtTest/)?qabstractitemmodeltester\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtTest/)?qsignalspy\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtTest/)?qtest\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtTest/)?qtestdata\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtTest/)?qtestevent\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtTest/)?qtesteventloop\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtTest/)?qttestversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtTools/)?qttoolsversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtUiPlugin/)?qdesignerexportwidget\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtUiPlugin/)?qtuipluginversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtUiTools/)?qtuitoolsversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtUiTools/)?quiloader\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWaylandClient/)?qtwaylandclientversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWaylandClient/)?qwaylandclientextension\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWaylandCompositor/)?qtwaylandcompositorversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWaylandCompositor/)?qwaylandbufferref\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWaylandCompositor/)?qwaylandclient\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWaylandCompositor/)?qwaylandcompositor\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWaylandCompositor/)?qwaylandcompositorextension\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWaylandCompositor/)?qwaylanddestroylistener\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWaylandCompositor/)?qwaylanddrag\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWaylandCompositor/)?qwaylandinputmethodcontrol\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWaylandCompositor/)?qwaylandiviapplication\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWaylandCompositor/)?qwaylandivisurface\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWaylandCompositor/)?qwaylandkeyboard\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWaylandCompositor/)?qwaylandkeymap\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWaylandCompositor/)?qwaylandoutput\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWaylandCompositor/)?qwaylandoutputmode\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWaylandCompositor/)?qwaylandpointer\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWaylandCompositor/)?qwaylandqttextinputmethod\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWaylandCompositor/)?qwaylandqttextinputmethodmanager\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWaylandCompositor/)?qwaylandqtwindowmanager\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWaylandCompositor/)?qwaylandquickcompositor\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWaylandCompositor/)?qwaylandquickextension\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWaylandCompositor/)?qwaylandquickitem\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWaylandCompositor/)?qwaylandquickoutput\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWaylandCompositor/)?qwaylandquickshellintegration\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWaylandCompositor/)?qwaylandquickshellsurfaceitem\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWaylandCompositor/)?qwaylandquicksurface\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWaylandCompositor/)?qwaylandquickxdgoutputv1\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWaylandCompositor/)?qwaylandresource\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWaylandCompositor/)?qwaylandseat\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWaylandCompositor/)?qwaylandshell\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWaylandCompositor/)?qwaylandshellsurface\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWaylandCompositor/)?qwaylandsurface\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWaylandCompositor/)?qwaylandsurfacegrabber\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWaylandCompositor/)?qwaylandtextinput\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWaylandCompositor/)?qwaylandtextinputmanager\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWaylandCompositor/)?qwaylandtextinputmanagerv3\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWaylandCompositor/)?qwaylandtextinputv3\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWaylandCompositor/)?qwaylandtouch\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWaylandCompositor/)?qwaylandview\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWaylandCompositor/)?qwaylandviewporter\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWaylandCompositor/)?qwaylandwlshell\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWaylandCompositor/)?qwaylandxdgoutputv1\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWaylandCompositor/)?qwaylandxdgshell\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWaylandCompositorIviapplication/)?qtwaylandcompositoriviapplicationversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWaylandCompositorPresentationTime/)?qtwaylandcompositorpresentationtimeversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWaylandCompositorWLShell/)?qtwaylandcompositorwlshellversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWaylandCompositorXdgShell/)?qtwaylandcompositorxdgshellversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWaylandEglCompositorHwIntegration/)?qtwaylandeglcompositorhwintegrationversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWaylandGlobal/)?qtwaylandglobalversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWebChannel/)?qtwebchannelversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWebChannel/)?qwebchannel\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWebChannel/)?qwebchannelabstracttransport\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWebChannelQuick/)?qqmlwebchannel\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWebChannelQuick/)?qtwebchannelquickversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWebEngineCore/)?qtwebenginecoreversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWebEngineCore/)?qwebenginecertificateerror\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWebEngineCore/)?qwebengineclientcertificateselection\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWebEngineCore/)?qwebengineclientcertificatestore\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWebEngineCore/)?qwebengineclienthints\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWebEngineCore/)?qwebenginecontextmenurequest\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWebEngineCore/)?qwebenginecookiestore\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWebEngineCore/)?qwebenginedesktopmediarequest\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWebEngineCore/)?qwebenginedownloadrequest\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWebEngineCore/)?qwebengineextensioninfo\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWebEngineCore/)?qwebengineextensionmanager\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWebEngineCore/)?qwebenginefilesystemaccessrequest\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWebEngineCore/)?qwebenginefindtextresult\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWebEngineCore/)?qwebengineframe\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWebEngineCore/)?qwebenginefullscreenrequest\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWebEngineCore/)?qwebengineglobalsettings\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWebEngineCore/)?qwebenginehistory\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWebEngineCore/)?qwebenginehttprequest\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWebEngineCore/)?qwebengineloadinginfo\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWebEngineCore/)?qwebenginenavigationrequest\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWebEngineCore/)?qwebenginenewwindowrequest\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWebEngineCore/)?qwebenginenotification\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWebEngineCore/)?qwebenginepage\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWebEngineCore/)?qwebenginepermission\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWebEngineCore/)?qwebengineprofile\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWebEngineCore/)?qwebengineprofilebuilder\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWebEngineCore/)?qwebenginequotarequest\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWebEngineCore/)?qwebengineregisterprotocolhandlerrequest\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWebEngineCore/)?qwebenginescript\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWebEngineCore/)?qwebenginescriptcollection\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWebEngineCore/)?qwebenginesettings\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWebEngineCore/)?qwebengineurlrequestinfo\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWebEngineCore/)?qwebengineurlrequestinterceptor\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWebEngineCore/)?qwebengineurlrequestjob\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWebEngineCore/)?qwebengineurlscheme\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWebEngineCore/)?qwebengineurlschemehandler\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWebEngineCore/)?qwebenginewebauthuxrequest\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWebEngineQuick/)?qquickwebenginedownloadrequest\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWebEngineQuick/)?qquickwebengineprofile\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWebEngineQuick/)?qtwebenginequickversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWebEngineWidgets/)?qtwebenginewidgetsversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWebEngineWidgets/)?qwebengineview\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWebSockets/)?qmaskgenerator\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWebSockets/)?qtwebsocketsversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWebSockets/)?qwebsocket\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWebSockets/)?qwebsocketcorsauthenticator\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWebSockets/)?qwebsockethandshakeoptions\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWebSockets/)?qwebsocketprotocol\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWebSockets/)?qwebsocketserver\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qabstractbutton\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qabstractitemdelegate\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qabstractitemview\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qabstractscrollarea\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qabstractslider\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qabstractspinbox\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qaccessiblewidget\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qapplication\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qboxlayout\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qbuttongroup\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qcalendarwidget\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qcheckbox\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qcolordialog\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qcolormap\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qcolumnview\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qcombobox\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qcommandlinkbutton\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qcommonstyle\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qcompleter\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qdatawidgetmapper\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qdatetimeedit\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qdial\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qdialog\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qdialogbuttonbox\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qdockwidget\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qerrormessage\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qfiledialog\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qfileiconprovider\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qfocusframe\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qfontcombobox\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qfontdialog\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qformlayout\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qframe\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qgesture\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qgesturerecognizer\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qgraphicsanchorlayout\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qgraphicseffect\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qgraphicsgridlayout\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qgraphicsitem\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qgraphicsitemanimation\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qgraphicslayout\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qgraphicslayoutitem\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qgraphicslinearlayout\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qgraphicsproxywidget\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qgraphicsscene\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qgraphicssceneevent\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qgraphicstransform\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qgraphicsview\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qgraphicswidget\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qgridlayout\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qgroupbox\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qheaderview\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qinputdialog\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qitemdelegate\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qitemeditorfactory\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qkeysequenceedit\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qlabel\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qlayout\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qlayoutitem\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qlcdnumber\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qlineedit\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qlistview\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qlistwidget\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qmainwindow\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qmdiarea\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qmdisubwindow\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qmenu\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qmenubar\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qmessagebox\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qplaintextedit\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qprogressbar\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qprogressdialog\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qproxystyle\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qpushbutton\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qradiobutton\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qrhiwidget\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qrubberband\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qscrollarea\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qscrollbar\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qscroller\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qscrollerproperties\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qsizegrip\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qsizepolicy\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qslider\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qspinbox\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qsplashscreen\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qsplitter\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qstackedlayout\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qstackedwidget\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qstatusbar\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qstyle\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qstyleditemdelegate\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qstylefactory\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qstyleoption\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qstylepainter\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qstyleplugin\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qsystemtrayicon\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qtabbar\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qtableview\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qtablewidget\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qtabwidget\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qtextbrowser\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qtextedit\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qtoolbar\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qtoolbox\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qtoolbutton\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qtooltip\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qtreeview\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qtreewidget\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qtreewidgetitemiterator\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qtwidgetsversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qundoview\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qwhatsthis\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qwidget\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qwidgetaction\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWidgets/)?qwizard\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtWlShellIntegration/)?qtwlshellintegrationversion\\.h[\">]", "private", "", "public"] }, + { "include": [ "@[\"<](QtXml/)?qtxmlversion\\.h[\">]", "private", "", "public"] } +] diff --git a/tools/generate_qt_mappings.py b/tools/generate_qt_mappings.py new file mode 100755 index 000000000..42836b6da --- /dev/null +++ b/tools/generate_qt_mappings.py @@ -0,0 +1,208 @@ +#!/usr/bin/env python3 +"""Generate an include-what-you-use mapping file for Qt 6 headers. + +Qt 6 ships a capital forwarding header (e.g. ) for each lowercase +private header (e.g. qwidget.h). include-what-you-use resolves symbols to the +lowercase header by default, so this script emits a mapping that makes IWYU +prefer the canonical capital includes, mirroring the qt5_11.imp bundled with +IWYU but adapted to the Qt 6 module layout. + +For every capital header that forwards to exactly one lowercase header: + +* a "symbol" mapping is emitted so IWYU suggests when the definition + of a class is needed, and +* an "include" mapping is emitted so a literal `#include ` in source + is rewritten to its canonical capital header. + +A lowercase header can be forwarded to by several capital headers (e.g. +qevent.h provides QCloseEvent, QMouseEvent, ...). In that case the include +mapping targets the primary class, i.e. the capital header whose lowercased +name equals the private header (QWidget for qwidget.h); headers with no such +primary (aggregates like qevent.h) get no include mapping and are left alone. + +Usage: + tools/generate_qt_mappings.py [QT_INSTALL_HEADERS] + +QT_INSTALL_HEADERS defaults to `qmake6 -query QT_INSTALL_HEADERS` (falling back +to common locations). The mapping is written to stdout. +""" + +import argparse +import os +import re +import subprocess +import sys + +INCLUDE_RE = re.compile(r'^\s*#include\s*<\s*Qt[A-Za-z0-9_]+/+\s*([^>\s]+)>') +CAPITAL_NAME_RE = re.compile(r'^Q[A-Za-z0-9_]+$') +PRIVATE_NAME_RE = re.compile(r'^q[a-z0-9_]+\.h$') + +# Private Qt headers whose public spelling has to be named explicitly. Keep an +# entry here only if the target header exists in every Qt we support; IWYU would +# otherwise keep suggesting the private lowercase include, which is correct only +# for headers that have shipped publicly since Qt 5. +PORTABLE_WRAPPERS = { + # Qt 6.5 split the declarations that used to live in qglobal.h out into + # separate headers, under both a QtFoo wrapper and a qfoo.h private name. + # Neither spelling exists on the oldest Qt we support (6.4.2), and qtypes.h + # itself only appeared in Qt 6.9, so all of them are hard compile errors + # there. QtGlobal has been public since Qt 5, defines these declarations + # itself up to Qt 6.4, and includes the split headers from Qt 6.5 on, so it + # is the one spelling that resolves across the whole supported range. + 'qtypes.h': 'QtGlobal', + 'qtpreprocessorsupport.h': 'QtGlobal', + 'qtversionchecks.h': 'QtGlobal', + 'qassert.h': 'QtGlobal', + 'qminmax.h': 'QtGlobal', + 'qtclasshelpermacros.h': 'QtGlobal', + 'qtenvironmentvariables.h': 'QtGlobal', + 'qttranslation.h': 'QtGlobal', + 'qoverload.h': 'QtGlobal', +} + + +def run_or_empty(cmd): + try: + return subprocess.run(cmd, capture_output=True, text=True, + check=True).stdout.strip() + except (OSError, subprocess.CalledProcessError): + return '' + + +def default_qt_headers_dir(): + for cmd in (['qmake6', '-query', 'QT_INSTALL_HEADERS'], + ['qmake', '-query', 'QT_INSTALL_HEADERS']): + path = run_or_empty(cmd) + if path: + return path + for path in ('/usr/include/qt6', '/usr/lib64/qt6/include', + '/usr/local/include/qt6'): + if os.path.isdir(path): + return path + return '' + + +def collect_mappings(qt_headers_dir): + forwarders = {} # (module_dir, private) -> [capital names] + symbols = {} # capital name -> (module_dir, private) + for entry in sorted(os.listdir(qt_headers_dir)): + module_dir = os.path.join(qt_headers_dir, entry) + if not entry.startswith('Qt') or not os.path.isdir(module_dir): + continue + for name in sorted(os.listdir(module_dir)): + path = os.path.join(module_dir, name) + if not os.path.isfile(path) or not CAPITAL_NAME_RE.match(name): + continue + forwarded = [] + with open(path, 'r', encoding='utf-8', errors='replace') as f: + for line in f: + match = INCLUDE_RE.match(line) + if match: + forwarded.append(match.group(1)) + if len(forwarded) > 1: + break + if len(forwarded) != 1: + continue + private = forwarded[0] + if not PRIVATE_NAME_RE.match(private): + continue + forwarders.setdefault((module_dir, private), []).append(name) + symbols[name] = (module_dir, private) + return forwarders, symbols + + +def primary_include_mappings(forwarders): + mappings = {} + for (module_dir, private), names in sorted(forwarders.items()): + # Curated overrides win over the name rule below. They exist to redirect + # an include to a header that is valid across our whole supported Qt + # range, which the name rule cannot know about because it is generated + # from whatever Qt happens to be installed. + curated = PORTABLE_WRAPPERS.get(private) + if curated is not None: + mappings[(module_dir, private)] = curated + continue + # Prefer the forwarder whose name mirrors the private header + # (QAbstractAnimation -> qabstractanimation.h). + primary = next((n for n in names if n.lower() + '.h' == private), None) + if primary is not None: + mappings[(module_dir, private)] = primary + return mappings + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument('qt_headers_dir', nargs='?', default=None, + help='Qt 6 headers dir (default: qmake query)') + args = parser.parse_args() + + qt_headers_dir = args.qt_headers_dir or default_qt_headers_dir() + if not qt_headers_dir or not os.path.isdir(qt_headers_dir): + sys.stderr.write('error: could not locate Qt headers, pass the include ' + 'dir\n') + return 1 + + forwarders, symbols = collect_mappings(qt_headers_dir) + includes = primary_include_mappings(forwarders) + + # A curated key that matches nothing is almost always a typo, and it fails + # silently: the entry just falls back to the name rule and emits the + # version-incompatible wrapper the override was meant to prevent. + known_private = {private for (_module_dir, private) in forwarders} + unknown = sorted(set(PORTABLE_WRAPPERS) - known_private) + if unknown: + sys.stderr.write('error: PORTABLE_WRAPPERS keys not found in the Qt ' + 'headers: %s\n' % ', '.join(unknown)) + return 1 + + entries = [] + # Headers we redirect in PORTABLE_WRAPPERS do not exist on the oldest + # supported Qt, so do not advertise them as the home of a symbol either. + redirected = {name + for (module_dir, private), names in forwarders.items() + if private in PORTABLE_WRAPPERS + for name in names} + for name in sorted(symbols): + if name in redirected: + continue + entries.append( + f' {{ "symbol": [ "{name}", "private", "<{name}>", "public"] }},') + + # Free operators of QSharedPointer/QWeakPointer live in qsharedpointer.h. + # IWYU does not apply "include" mappings when *adding* an include for an + # operator or other non-class symbol, so map them to the canonical capital + # header explicitly. A use is only reported when the operator is not + # already covered by an included header, so this does not mis-attribute + # comparison operators of other types (which are provided by their own + # type headers). + for name in ('operator==', 'operator!=', 'operator<', 'operator<=', + 'operator>', 'operator>=', 'comparesEqual'): + entries.append( + f' {{ "symbol": [ "{name}", "private", "", "public"] }},') + for (module_dir, private), public in sorted(includes.items()): + module = os.path.basename(module_dir) + # IWYU's .imp tokenizer treats the value as a JSON-ish string: + # '\"' becomes a quote and '\\' becomes a backslash for the regex. + quoted = '\\"' # \" -- a JSON-escaped double quote in the .imp file + dotted = re.escape(private).replace('\\', '\\\\') + pattern = ('@[' + quoted + '<](' + re.escape(module) + r'/)?' + + dotted + '[' + quoted + '>]') + entries.append( + f' {{ "include": [ "{pattern}", "private", "<{public}>", "public"] }},') + + if not entries: + sys.stderr.write('error: no Qt header mappings found\n') + return 1 + + print(f'# Do not edit! Generated by {os.path.basename(__file__)} from') + print(f'# {qt_headers_dir}') + print('[') + for entry in entries[:-1]: + print(entry) + print(entries[-1].rstrip(',')) + print(']') + return 0 + + +if __name__ == '__main__': + sys.exit(main()) From 514014dc00bc83b38a80fb717d76e1cf8ead94f1 Mon Sep 17 00:00:00 2001 From: BruebachL <44814898+BruebachL@users.noreply.github.com> Date: Thu, 8 Oct 2026 14:38:11 +0200 Subject: [PATCH 11/28] [Completer] Stop line edit rewrite on popup highlight (#7447) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [Completer] Stop line edit rewrite on popup highlight * [Completer] Extract the completion index into a variable Make the popup selection update readable at a glance. --------- Co-authored-by: Lukas Brübach --- .../src/interface/widgets/utility/card_completer_styler.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/cockatrice/src/interface/widgets/utility/card_completer_styler.cpp b/cockatrice/src/interface/widgets/utility/card_completer_styler.cpp index 0f1585f3c..fef1dcbf7 100644 --- a/cockatrice/src/interface/widgets/utility/card_completer_styler.cpp +++ b/cockatrice/src/interface/widgets/utility/card_completer_styler.cpp @@ -149,7 +149,8 @@ bool CardCompleterStyler::handlePopupKeyPress(QKeyEvent *event) const int newRow = qBound(0, currentRow + step, rowCount - 1); if (newRow != currentRow) { - popup->setCurrentIndex(completer->completionModel()->index(newRow, completer->completionColumn())); + const QModelIndex newIndex = completer->completionModel()->index(newRow, completer->completionColumn()); + popup->selectionModel()->setCurrentIndex(newIndex, QItemSelectionModel::NoUpdate); } return true; @@ -178,7 +179,8 @@ void CardCompleterStyler::ensureClosestSelected() const int closestRow = rowCount - 1; if (currentRow != closestRow) { - popup->setCurrentIndex(completionModel->index(closestRow, completer->completionColumn())); + popup->selectionModel()->setCurrentIndex(completionModel->index(closestRow, completer->completionColumn()), + QItemSelectionModel::NoUpdate); } } From d0fc27e3a8f555eef94203ada4b41962f35a1cc1 Mon Sep 17 00:00:00 2001 From: BruebachL <44814898+BruebachL@users.noreply.github.com> Date: Thu, 8 Oct 2026 23:18:47 +0200 Subject: [PATCH 12/28] [Security] Harden network input handling and websocket proxying (#7076) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - TCP client connections: reject messages whose declared length is negative or exceeds a 1.5MB cap immediately instead of buffering indefinitely, preventing unbounded memory growth and the previously stuck state caused by negative lengths overflowing the int header. - ISL connections: apply the same length validation with a 4MB cap, disconnecting the peer on an implausible length. - Websockets: only trust the forwarded client-address header (e.g. X-Forwarded-For) when the websocket connection originates from an address in security/trusted_sources. Previously any client could spoof its address to bypass bans, user limits and rate limiting. Took 3 minutes Co-authored-by: Lukas Brübach --- servatrice/servatrice.ini.example | 6 ++++++ servatrice/src/isl_interface.cpp | 10 +++++++++ servatrice/src/serversocketinterface.cpp | 26 +++++++++++++++++++----- 3 files changed, 37 insertions(+), 5 deletions(-) diff --git a/servatrice/servatrice.ini.example b/servatrice/servatrice.ini.example index ccd4f3c3f..c625705da 100644 --- a/servatrice/servatrice.ini.example +++ b/servatrice/servatrice.ini.example @@ -41,6 +41,12 @@ websocket_host=any ; The TCP port number servatrice will listen on for websockets clients; default is 4748 websocket_port=4748 +; If websockets are served through a reverse proxy (e.g. nginx), the real client address can be +; read from an HTTP header such as X-Forwarded-For. The header is ONLY trusted when the websocket +; connection itself originates from an address listed in security/trusted_sources (default 127.0.0.1,::1), +; so that clients cannot spoof their address to bypass bans or rate limits. +web_socket_ip_header= + ; When database is enabled, servatrice writes the server status in the "update" database table; this ; setting defines every how many milliseconds servatrice will update its status; default is 15000 (15 secs) statusupdate=15000 diff --git a/servatrice/src/isl_interface.cpp b/servatrice/src/isl_interface.cpp index b1a27bbaa..a78ee9e72 100644 --- a/servatrice/src/isl_interface.cpp +++ b/servatrice/src/isl_interface.cpp @@ -46,6 +46,9 @@ #include #include +// Maximum size of a single ISL message. +static const int MAX_ISL_MESSAGE_SIZE = 4 * 1024 * 1024; + inline Q_LOGGING_CATEGORY(IslInterfaceLog, "isl_interface"); void IslInterface::sharedCtor(const QSslCertificate &cert, const QSslKey &privateKey) @@ -267,6 +270,13 @@ void IslInterface::readClient() (((quint32)(unsigned char)inputBuffer[1]) << 16) + (((quint32)(unsigned char)inputBuffer[2]) << 8) + ((quint32)(unsigned char)inputBuffer[3]); + // Reject implausible lengths instead of buffering until they arrive. + // This also handles lengths that overflow into negative int values. + if (messageLength < 0 || messageLength > MAX_ISL_MESSAGE_SIZE) { + qCWarning(IslInterfaceLog) << "Invalid message length" << messageLength << "from" << peerAddress; + socket->disconnectFromHost(); + return; + } inputBuffer.remove(0, 4); messageInProgress = true; } else { diff --git a/servatrice/src/serversocketinterface.cpp b/servatrice/src/serversocketinterface.cpp index a5332dab0..d46a9b0ee 100644 --- a/servatrice/src/serversocketinterface.cpp +++ b/servatrice/src/serversocketinterface.cpp @@ -181,6 +181,9 @@ inline Q_LOGGING_CATEGORY(WebsocketServerSocketInterfaceLog, "websocket_server_s static const int protocolVersion = 14; +// Maximum size of a single TCP protocol message. Matches the websocket limit. +static const int MAX_TCP_MESSAGE_SIZE = 1500000; + AbstractServerSocketInterface::AbstractServerSocketInterface(Servatrice *_server, Servatrice_DatabaseInterface *_databaseInterface, QObject *parent) @@ -4226,13 +4229,21 @@ void TcpServerSocketInterface::readClient() (((quint32)(unsigned char)inputBuffer[1]) << 16) + (((quint32)(unsigned char)inputBuffer[2]) << 8) + ((quint32)(unsigned char)inputBuffer[3]); + // Reject implausible lengths instead of buffering until they arrive. + // This also handles lengths that overflow into negative int values. + if (messageLength < 0 || messageLength > MAX_TCP_MESSAGE_SIZE) { + qCWarning(TcpServerSocketInterfaceLog) + << "Invalid message length" << messageLength << "from" << getAddress(); + prepareDestroy(); + return; + } inputBuffer.remove(0, 4); messageInProgress = true; } else { return; } } - if (inputBuffer.size() < messageLength || messageLength < 0) { + if (inputBuffer.size() < messageLength) { return; } @@ -4338,10 +4349,15 @@ void WebsocketServerSocketInterface::initConnection(void *_socket) QByteArray websocketIPHeader = settingsCache->value("server/web_socket_ip_header", "").toByteArray(); if (websocketIPHeader.length() > 0 && socket->request().hasRawHeader(websocketIPHeader)) { - QString header(socket->request().rawHeader(websocketIPHeader)); - QHostAddress parsed(header); - if (!parsed.isNull()) { - address = parsed; + // Only trust the forwarded header if the connection itself comes from a trusted proxy, + // otherwise a client could spoof its address to bypass bans and rate limits. + QString trustedSources = settingsCache->value("security/trusted_sources", "127.0.0.1,::1").toString(); + if (trustedSources.contains(socket->peerAddress().toString(), Qt::CaseInsensitive)) { + QString header(socket->request().rawHeader(websocketIPHeader)); + QHostAddress parsed(header); + if (!parsed.isNull()) { + address = parsed; + } } } From 95f02ac0a10230799a68d70a13bcbe010bbad3ed Mon Sep 17 00:00:00 2001 From: BruebachL <44814898+BruebachL@users.noreply.github.com> Date: Fri, 9 Oct 2026 06:02:47 +0200 Subject: [PATCH 13/28] [CardDB] Drop the rebalanced-cards setting entirely (#7457) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [CardDB] Drop rebalanced-card filtering from the v4 parser Rebalanced cards no longer exist, so the includeRebalancedCards preference has no data to filter. Always keep printings marked isRebalanced and remove the now-unused ICardPreferenceProvider plumbing from CockatriceXml4Parser and CardDatabaseLoader. The setting itself (CardsDisplaySettings, Manage Sets checkbox, Oracle attribute mapping) is removed in a follow-up. * [CardDB] Drop the rebalanced-cards setting entirely Rebalanced Alchemy cards no longer exist, so remove the includeRebalancedCards preference surface: the CardsDisplaySettings getter/setter/signal, the ICardPreferenceProvider and ICardsDisplaySettingsProvider methods, the Manage Sets checkbox, the legacy settings migration mapping, the isRebalanced attribute mapping in the Oracle importer, and the isRebalanced attribute in the v4 schema. Builds on #7448, which already stopped the v4 parser from filtering on the preference. * [CardDB] Drop the unused isOnlineOnly printing property The Arena-card detection switched from isOnlineOnly to isRebalanced in #5778, so nothing has read this printing property since; it only round-trips from the Oracle importer into cards.xml. Remove the importer mapping, the benchmark fixture field and the v4 schema attribute so regenerated databases stop carrying it. --------- Co-authored-by: Lukas Brübach --- .../settings_card_preference_provider.h | 5 ----- .../widgets/dialogs/dlg_manage_sets.cpp | 17 ++--------------- .../widgets/dialogs/dlg_manage_sets.h | 2 -- doc/carddatabase_v4/cards.xsd | 2 -- .../card/database/card_database.cpp | 2 +- .../card/database/card_database_loader.cpp | 3 +-- .../card/database/card_database_loader.h | 3 --- .../card/database/parser/cockatrice_xml_4.cpp | 18 +++--------------- .../card/database/parser/cockatrice_xml_4.h | 8 +------- .../interface_card_preference_provider.h | 1 - ...interface_cards_display_settings_provider.h | 1 - .../interfaces/noop_card_preference_provider.h | 5 ----- .../settings/cards_display_settings.cpp | 14 -------------- .../settings/cards_display_settings.h | 3 --- .../settings/settings_migration.cpp | 1 - oracle/src/oracleimporter.cpp | 16 ++++++---------- tests/carddatabase/carddatabase_test.cpp | 5 ++--- .../oracle/oracle_importer_benchmark_test.cpp | 4 +--- tests/settings/settings_migration_test.cpp | 2 -- 19 files changed, 17 insertions(+), 95 deletions(-) diff --git a/cockatrice/src/database/interface/settings_card_preference_provider.h b/cockatrice/src/database/interface/settings_card_preference_provider.h index 64502e3a7..1feb2006b 100644 --- a/cockatrice/src/database/interface/settings_card_preference_provider.h +++ b/cockatrice/src/database/interface/settings_card_preference_provider.h @@ -13,11 +13,6 @@ public: { return SettingsCache::instance().cardOverrides().getCardPreferenceOverride(cardName); } - - [[nodiscard]] bool getIncludeRebalancedCards() const override - { - return SettingsCache::instance().cardsDisplay().getIncludeRebalancedCards(); - } }; #endif // COCKATRICE_SETTINGS_CARD_PREFERENCE_PROVIDER_H diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_manage_sets.cpp b/cockatrice/src/interface/widgets/dialogs/dlg_manage_sets.cpp index b3da6d19c..dbfe38e26 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_manage_sets.cpp +++ b/cockatrice/src/interface/widgets/dialogs/dlg_manage_sets.cpp @@ -178,12 +178,6 @@ WndSets::WndSets(QWidget *parent) : QMainWindow(parent) sortWarning->setLayout(sortWarningLayout); sortWarning->setVisible(false); - includeRebalancedCards = SettingsCache::instance().cardsDisplay().getIncludeRebalancedCards(); - QCheckBox *includeRebalancedCardsCheckBox = - new QCheckBox(tr("Include cards rebalanced for Alchemy [requires restart]")); - includeRebalancedCardsCheckBox->setChecked(includeRebalancedCards); - connect(includeRebalancedCardsCheckBox, &QAbstractButton::toggled, this, &WndSets::includeRebalancedCardsChanged); - buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel); connect(buttonBox, &QDialogButtonBox::accepted, this, &WndSets::actSave); connect(buttonBox, &QDialogButtonBox::rejected, this, &WndSets::actRestore); @@ -197,9 +191,8 @@ WndSets::WndSets(QWidget *parent) : QMainWindow(parent) mainLayout->addWidget(enableSomeButton, 2, 1); mainLayout->addWidget(disableSomeButton, 2, 2); mainLayout->addWidget(sortWarning, 3, 1, 1, 2); - mainLayout->addWidget(includeRebalancedCardsCheckBox, 4, 1, 1, 2); - mainLayout->addWidget(hintsGroupBox, 5, 1, 1, 2); - mainLayout->addWidget(buttonBox, 6, 1, 1, 2); + mainLayout->addWidget(hintsGroupBox, 4, 1, 1, 2); + mainLayout->addWidget(buttonBox, 5, 1, 1, 2); mainLayout->setColumnStretch(1, 1); mainLayout->setColumnStretch(2, 1); @@ -270,15 +263,9 @@ void WndSets::resetSort() sortWarning->setVisible(false); } -void WndSets::includeRebalancedCardsChanged(bool _includeRebalancedCards) -{ - includeRebalancedCards = _includeRebalancedCards; -} - void WndSets::actSave() { model->save(CardDatabaseManager::getInstance()); - SettingsCache::instance().cardsDisplay().setIncludeRebalancedCards(includeRebalancedCards); CardPictureLoader::clearPixmapCache(); const auto reloadOk1 = QtConcurrent::run([] { CardDatabaseManager::getInstance()->reloadCardDatabasesAndNotify(); diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_manage_sets.h b/cockatrice/src/interface/widgets/dialogs/dlg_manage_sets.h index d08412c51..67b4c90b1 100644 --- a/cockatrice/src/interface/widgets/dialogs/dlg_manage_sets.h +++ b/cockatrice/src/interface/widgets/dialogs/dlg_manage_sets.h @@ -52,7 +52,6 @@ private: int sortIndex; Qt::SortOrder sortOrder; bool setOrderIsSorted; - bool includeRebalancedCards; enum { NO_SETS_SELECTED, @@ -87,7 +86,6 @@ private slots: void actDisableResetButton(const QString &filterText); void actSort(int index); void actIgnoreWarning(); - void includeRebalancedCardsChanged(bool _includeRebalancedCardsChanged); }; #endif diff --git a/doc/carddatabase_v4/cards.xsd b/doc/carddatabase_v4/cards.xsd index 82aed32ab..df52d6327 100644 --- a/doc/carddatabase_v4/cards.xsd +++ b/doc/carddatabase_v4/cards.xsd @@ -29,8 +29,6 @@ - - diff --git a/libcockatrice_card/libcockatrice/card/database/card_database.cpp b/libcockatrice_card/libcockatrice/card/database/card_database.cpp index f61da204f..fc2c7f18c 100644 --- a/libcockatrice_card/libcockatrice/card/database/card_database.cpp +++ b/libcockatrice_card/libcockatrice/card/database/card_database.cpp @@ -33,7 +33,7 @@ CardDatabase::CardDatabase(QObject *parent, qRegisterMetaType("CardDatabaseData"); // create loader and wire it up - loader = new CardDatabaseLoader(this, this, pathProvider, prefs, setPriorityController); + loader = new CardDatabaseLoader(this, this, pathProvider, setPriorityController); // re-emit loader signals (so other code doesn't need to know about internals) connect(loader, &CardDatabaseLoader::loadingFinished, this, &CardDatabase::cardDatabaseLoadingFinished); connect(loader, &CardDatabaseLoader::loadingFailed, this, &CardDatabase::cardDatabaseLoadingFailed); diff --git a/libcockatrice_card/libcockatrice/card/database/card_database_loader.cpp b/libcockatrice_card/libcockatrice/card/database/card_database_loader.cpp index 0f0b28b2a..812760106 100644 --- a/libcockatrice_card/libcockatrice/card/database/card_database_loader.cpp +++ b/libcockatrice_card/libcockatrice/card/database/card_database_loader.cpp @@ -33,12 +33,11 @@ class ICardSetPriorityController; CardDatabaseLoader::CardDatabaseLoader(QObject *parent, CardDatabase *db, ICardDatabasePathProvider *_pathProvider, - ICardPreferenceProvider *_preferenceProvider, ICardSetPriorityController *_priorityController) : QObject(parent), database(db), pathProvider(_pathProvider), priorityController(_priorityController) { // instantiate available parsers here - availableParsers << new CockatriceXml4Parser(_preferenceProvider, _priorityController); + availableParsers << new CockatriceXml4Parser(_priorityController); availableParsers << new CockatriceXml3Parser(_priorityController); // The load path parses into a snapshot and never emits per-card signals; diff --git a/libcockatrice_card/libcockatrice/card/database/card_database_loader.h b/libcockatrice_card/libcockatrice/card/database/card_database_loader.h index 706e31ab2..5dad152eb 100644 --- a/libcockatrice_card/libcockatrice/card/database/card_database_loader.h +++ b/libcockatrice_card/libcockatrice/card/database/card_database_loader.h @@ -11,7 +11,6 @@ #include class ICardDatabasePathProvider; -class ICardPreferenceProvider; class ICardSetPriorityController; // IWYU pragma: keep @@ -59,12 +58,10 @@ public: * @param parent QObject parent. * @param db Pointer to the CardDatabase to populate (non-owning). * @param pathProvider Provider for card database file paths. - * @param preferenceProvider Optional card preference provider for pinned printings. */ explicit CardDatabaseLoader(QObject *parent, CardDatabase *db, ICardDatabasePathProvider *pathProvider, - ICardPreferenceProvider *preferenceProvider, ICardSetPriorityController *_priorityController); /** @brief Destructor cleans up allocated parsers. */ diff --git a/libcockatrice_card/libcockatrice/card/database/parser/cockatrice_xml_4.cpp b/libcockatrice_card/libcockatrice/card/database/parser/cockatrice_xml_4.cpp index eb1416817..4d975e533 100644 --- a/libcockatrice_card/libcockatrice/card/database/parser/cockatrice_xml_4.cpp +++ b/libcockatrice_card/libcockatrice/card/database/parser/cockatrice_xml_4.cpp @@ -37,9 +37,8 @@ class ICardSetPriorityController; #define COCKATRICE_XML4_SCHEMALOCATION \ "https://raw.githubusercontent.com/Cockatrice/Cockatrice/master/doc/carddatabase_v4/cards.xsd" -CockatriceXml4Parser::CockatriceXml4Parser(ICardPreferenceProvider *_cardPreferenceProvider, - ICardSetPriorityController *_cardSetPriorityController) - : ICardDatabaseParser(_cardSetPriorityController), cardPreferenceProvider(_cardPreferenceProvider) +CockatriceXml4Parser::CockatriceXml4Parser(ICardSetPriorityController *_cardSetPriorityController) + : ICardDatabaseParser(_cardSetPriorityController) { } @@ -284,7 +283,6 @@ QHash CockatriceXml4Parser::loadCardPropertiesFromXml(QXmlStre void CockatriceXml4Parser::loadCardsFromXml(QXmlStreamReader &xml) { - bool includeRebalancedCards = cardPreferenceProvider->getIncludeRebalancedCards(); while (!xml.atEnd()) { if (xml.readNext() == QXmlStreamReader::EndElement) { break; @@ -386,17 +384,7 @@ void CockatriceXml4Parser::loadCardsFromXml(QXmlStreamReader &xml) printingProps.insert(attrName, attr.value().toString()); } PrintingInfo printingInfo(set, LazyPropertiesHash(printingProps)); - - // This is very much a hack and not the right place to - // put this check, as it requires a reload of Cockatrice - // to be apply. - // - // However, this is also true of the `set->getEnabled()` - // check above (which is currently bugged as well), so - // we'll fix both at the same time. - if (includeRebalancedCards || printingInfo.getProperty("isRebalanced") != "true") { - _sets[setName].append(printingInfo); - } + _sets[setName].append(printingInfo); } // related cards } else if (xmlName == "related" || xmlName == "reverse-related") { diff --git a/libcockatrice_card/libcockatrice/card/database/parser/cockatrice_xml_4.h b/libcockatrice_card/libcockatrice/card/database/parser/cockatrice_xml_4.h index 5ddf672ee..390282796 100644 --- a/libcockatrice_card/libcockatrice/card/database/parser/cockatrice_xml_4.h +++ b/libcockatrice_card/libcockatrice/card/database/parser/cockatrice_xml_4.h @@ -9,7 +9,6 @@ #include #include -class ICardPreferenceProvider; class ICardSetPriorityController; class QXmlStreamReader; @@ -27,7 +26,6 @@ inline Q_LOGGING_CATEGORY(CockatriceXml4Log, "cockatrice_xml.xml_4_parser"); * @note Differences from v3: * - Card properties are stored in blocks as a QHash. * - Sets can include a element. - * - Supports user preferences via ICardPreferenceProvider (e.g., skipping rebalanced cards). * - Related cards support persistent relations and multiple attach types (e.g., transform). * - More robust serialization; easier to extend schema in the future. */ @@ -35,8 +33,7 @@ class CockatriceXml4Parser : public ICardDatabaseParser { Q_OBJECT public: - explicit CockatriceXml4Parser(ICardPreferenceProvider *cardPreferenceProvider, - ICardSetPriorityController *cardSetPriorityController); + explicit CockatriceXml4Parser(ICardSetPriorityController *cardSetPriorityController); ~CockatriceXml4Parser() override = default; /** @@ -71,8 +68,6 @@ public: const QString &sourceVersion = "unknown") override; private: - ICardPreferenceProvider *cardPreferenceProvider; ///< Interface to handle user preferences - /** * @brief Loads a generic block from a element. * @param xml The open QXmlStreamReader positioned at a element. @@ -83,7 +78,6 @@ private: /** * @brief Load all elements from the XML stream. * @param xml The open QXmlStreamReader positioned at the element. - * Honors the user's preference regarding rebalanced cards. */ void loadCardsFromXml(QXmlStreamReader &xml); diff --git a/libcockatrice_interfaces/libcockatrice/interfaces/interface_card_preference_provider.h b/libcockatrice_interfaces/libcockatrice/interfaces/interface_card_preference_provider.h index a6cf941fb..2510919ca 100644 --- a/libcockatrice_interfaces/libcockatrice/interfaces/interface_card_preference_provider.h +++ b/libcockatrice_interfaces/libcockatrice/interfaces/interface_card_preference_provider.h @@ -8,7 +8,6 @@ class ICardPreferenceProvider public: virtual ~ICardPreferenceProvider() = default; [[nodiscard]] virtual QString getCardPreferenceOverride(const QString &cardName) const = 0; - [[nodiscard]] virtual bool getIncludeRebalancedCards() const = 0; }; #endif // COCKATRICE_INTERFACE_CARD_PREFERENCE_PROVIDER_H diff --git a/libcockatrice_interfaces/libcockatrice/interfaces/interface_cards_display_settings_provider.h b/libcockatrice_interfaces/libcockatrice/interfaces/interface_cards_display_settings_provider.h index 2821fb96e..a5ab4fc37 100644 --- a/libcockatrice_interfaces/libcockatrice/interfaces/interface_cards_display_settings_provider.h +++ b/libcockatrice_interfaces/libcockatrice/interfaces/interface_cards_display_settings_provider.h @@ -14,7 +14,6 @@ public: [[nodiscard]] virtual bool getBumpSetsWithCardsInDeckToTop() const = 0; [[nodiscard]] virtual int getPrintingSelectorSortOrder() const = 0; [[nodiscard]] virtual int getPrintingSelectorCardSize() const = 0; - [[nodiscard]] virtual bool getIncludeRebalancedCards() const = 0; [[nodiscard]] virtual bool getPrintingSelectorNavigationButtonsVisible() const = 0; [[nodiscard]] virtual bool getTapAnimation() const = 0; [[nodiscard]] virtual bool getArrowDrawAnimation() const = 0; diff --git a/libcockatrice_interfaces/libcockatrice/interfaces/noop_card_preference_provider.h b/libcockatrice_interfaces/libcockatrice/interfaces/noop_card_preference_provider.h index 3781f4b63..f846d51e8 100644 --- a/libcockatrice_interfaces/libcockatrice/interfaces/noop_card_preference_provider.h +++ b/libcockatrice_interfaces/libcockatrice/interfaces/noop_card_preference_provider.h @@ -9,11 +9,6 @@ public: { return {}; } - - [[nodiscard]] bool getIncludeRebalancedCards() const override - { - return true; - } }; #endif // COCKATRICE_NOOP_CARD_PREFERENCE_PROVIDER_H diff --git a/libcockatrice_settings/libcockatrice/settings/cards_display_settings.cpp b/libcockatrice_settings/libcockatrice/settings/cards_display_settings.cpp index 1addef70f..f047973f0 100644 --- a/libcockatrice_settings/libcockatrice/settings/cards_display_settings.cpp +++ b/libcockatrice_settings/libcockatrice/settings/cards_display_settings.cpp @@ -43,11 +43,6 @@ int CardsDisplaySettings::getPrintingSelectorCardSize() const return getValue("printingSelector", "cards", "cardSize", 100).toInt(); } -bool CardsDisplaySettings::getIncludeRebalancedCards() const -{ - return getValue("includerebalancedcards", QString(), QString(), true).toBool(); -} - bool CardsDisplaySettings::getPrintingSelectorNavigationButtonsVisible() const { return getValue("navigationButtonsVisible", "cards", "printingSelector", true).toBool(); @@ -167,15 +162,6 @@ void CardsDisplaySettings::setPrintingSelectorCardSize(int _printingSelectorCard emit printingSelectorCardSizeChanged(); } -void CardsDisplaySettings::setIncludeRebalancedCards(bool _includeRebalancedCards) -{ - if (_includeRebalancedCards == getIncludeRebalancedCards()) { - return; - } - setValue(_includeRebalancedCards, "includerebalancedcards"); - emit includeRebalancedCardsChanged(_includeRebalancedCards); -} - void CardsDisplaySettings::setPrintingSelectorNavigationButtonsVisible(bool _navigationButtonsVisible) { setValue(_navigationButtonsVisible, "navigationButtonsVisible", "cards", "printingSelector"); diff --git a/libcockatrice_settings/libcockatrice/settings/cards_display_settings.h b/libcockatrice_settings/libcockatrice/settings/cards_display_settings.h index 4e6b92d27..961550d3c 100644 --- a/libcockatrice_settings/libcockatrice/settings/cards_display_settings.h +++ b/libcockatrice_settings/libcockatrice/settings/cards_display_settings.h @@ -21,7 +21,6 @@ public: [[nodiscard]] bool getBumpSetsWithCardsInDeckToTop() const override; [[nodiscard]] int getPrintingSelectorSortOrder() const override; [[nodiscard]] int getPrintingSelectorCardSize() const override; - [[nodiscard]] bool getIncludeRebalancedCards() const override; [[nodiscard]] bool getPrintingSelectorNavigationButtonsVisible() const override; [[nodiscard]] bool getTapAnimation() const override; [[nodiscard]] bool getArrowDrawAnimation() const override; @@ -45,7 +44,6 @@ public: void setBumpSetsWithCardsInDeckToTop(bool _bumpSetsWithCardsInDeckToTop); void setPrintingSelectorSortOrder(int _printingSelectorSortOrder); void setPrintingSelectorCardSize(int _printingSelectorCardSize); - void setIncludeRebalancedCards(bool _includeRebalancedCards); void setPrintingSelectorNavigationButtonsVisible(bool _navigationButtonsVisible); void setTapAnimation(bool _tapAnimation); void setArrowDrawAnimation(bool _arrowDrawAnimation); @@ -70,7 +68,6 @@ signals: void bumpSetsWithCardsInDeckToTopChanged(); void printingSelectorSortOrderChanged(); void printingSelectorCardSizeChanged(); - void includeRebalancedCardsChanged(bool _includeRebalancedCards); void printingSelectorNavigationButtonsVisibleChanged(); void visualDeckStorageCardSizeChanged(); void visualDatabaseDisplayCardSizeChanged(); diff --git a/libcockatrice_settings/libcockatrice/settings/settings_migration.cpp b/libcockatrice_settings/libcockatrice/settings/settings_migration.cpp index d8b637210..c343ef801 100644 --- a/libcockatrice_settings/libcockatrice/settings/settings_migration.cpp +++ b/libcockatrice_settings/libcockatrice/settings/settings_migration.cpp @@ -259,7 +259,6 @@ static void migrateCardsDisplaySettings(const QString &settingsPath, QSettings & {"cards/roundcardcorners", "cards/roundCardCorners"}, {"cards/overrideallcardartwithpersonalpreference", "cards/overrideAllCardArtWithPersonalPreference"}, {"cards/bumpsetswithcardsindecktotop", "cards/bumpSetsWithCardsInDeckToTop"}, - {"cards/includerebalancedcards", "cards/includerebalancedcards"}, {"cards/tapanimation", "cards/tapAnimation"}, {"cards/autorotatesidewayslayoutcards", "cards/autoRotateSidewaysLayoutCards"}, {"cards/scaleCards", "cards/scaleCards"}, diff --git a/oracle/src/oracleimporter.cpp b/oracle/src/oracleimporter.cpp index b30565ed0..3382e36d6 100644 --- a/oracle/src/oracleimporter.cpp +++ b/oracle/src/oracleimporter.cpp @@ -4,7 +4,6 @@ #include "libcockatrice/card/format/format_legality_rules.h" #include "libcockatrice/card/lazy_properties_hash.h" #include "libcockatrice/card/relation/card_relation_type.h" -#include "libcockatrice/interfaces/noop_card_preference_provider.h" #include "libcockatrice/interfaces/noop_card_set_priority_controller.h" #include "parsehelpers.h" @@ -302,9 +301,9 @@ CardInfoPtr OracleImporter::addCard(QString name, static QString getJsonString(const QJsonObject &obj, const QString &key) { - // QVariant coerces numbers and booleans to text, while QJsonValue::toString() - // returns a null string for them — some MTGJSON fields (manaValue, - // convertedManaCost, isOnlineOnly, isRebalanced) carry those types. + // QVariant coerces numbers to text, while QJsonValue::toString() returns a + // null string for them — MTGJSON fields like manaValue and convertedManaCost + // carry those types. return obj.value(key).toVariant().toString(); } @@ -413,11 +412,8 @@ int OracleImporter::importCardsFromSet(const CardSetPtr ¤tSet, const QJson }; // mtgjson name => xml name - static const QMap setInfoProperties{{"number", "num"}, - {"rarity", "rarity"}, - {"isOnlineOnly", "isOnlineOnly"}, - {"isRebalanced", "isRebalanced"}, - {"artist", "artist"}}; + static const QMap setInfoProperties{ + {"number", "num"}, {"rarity", "rarity"}, {"artist", "artist"}}; // mtgjson name => xml name static const QMap identifierProperties{{"multiverseId", "muid"}, {"scryfallId", "uuid"}}; @@ -852,7 +848,7 @@ int OracleImporter::startImport() bool OracleImporter::saveToFile(const QString &fileName, const QString &sourceUrl, const QString &sourceVersion) { - CockatriceXml4Parser parser(new NoopCardPreferenceProvider(), new NoopCardSetPriorityController()); + CockatriceXml4Parser parser(new NoopCardSetPriorityController()); return parser.saveToFile(createDefaultMagicFormats(), sets, cards, fileName, sourceUrl, sourceVersion); } diff --git a/tests/carddatabase/carddatabase_test.cpp b/tests/carddatabase/carddatabase_test.cpp index 0bfd8a5dd..3f1284d0a 100644 --- a/tests/carddatabase/carddatabase_test.cpp +++ b/tests/carddatabase/carddatabase_test.cpp @@ -77,12 +77,11 @@ TEST(CardDatabaseTest, Xml4LocalizedDataRoundTrip) QTemporaryDir tempDir; const QString fileName = tempDir.filePath("cards.xml"); - NoopCardPreferenceProvider prefProvider; - CockatriceXml4Parser writer(&prefProvider, &controller); + CockatriceXml4Parser writer(&controller); ASSERT_TRUE(writer.saveToFile({}, sets, cards, fileName)); CardDatabaseData data; - CockatriceXml4Parser parser(&prefProvider, &controller); + CockatriceXml4Parser parser(&controller); QFile file(fileName); ASSERT_TRUE(file.open(QIODevice::ReadOnly)); parser.parseFileInto(file, data); diff --git a/tests/oracle/oracle_importer_benchmark_test.cpp b/tests/oracle/oracle_importer_benchmark_test.cpp index 77b44af71..c2a4aaf4b 100644 --- a/tests/oracle/oracle_importer_benchmark_test.cpp +++ b/tests/oracle/oracle_importer_benchmark_test.cpp @@ -62,12 +62,10 @@ static QByteArray buildSyntheticData(int numSets, int cardsPerSet) card["colors"] = QJsonArray{"W"}; card["colorIdentity"] = QJsonArray{"W"}; card["types"] = QJsonArray{"Creature"}; - // Real MTGJSON types: floats and booleans, not strings. This + // Real MTGJSON types: floats, not strings. This // exercises the QVariant coercion in the property reader. card["convertedManaCost"] = 1.0; card["manaValue"] = 1.0; - card["isOnlineOnly"] = false; - card["isRebalanced"] = false; QJsonObject legalities; legalities["standard"] = "legal"; diff --git a/tests/settings/settings_migration_test.cpp b/tests/settings/settings_migration_test.cpp index 8994ebca6..440e49b74 100644 --- a/tests/settings/settings_migration_test.cpp +++ b/tests/settings/settings_migration_test.cpp @@ -236,7 +236,6 @@ TEST_F(SettingsMigrationTest, MigratesAllSettingsGroups) g.setValue("cards/roundcardcorners", false); g.setValue("cards/overrideallcardartwithpersonalpreference", true); g.setValue("cards/bumpsetswithcardsindecktotop", false); - g.setValue("cards/includerebalancedcards", false); g.setValue("cards/autorotatesidewayslayoutcards", false); g.setValue("cards/tapanimation", true); g.setValue("cards/scaleCards", false); @@ -395,7 +394,6 @@ TEST_F(SettingsMigrationTest, MigratesAllSettingsGroups) ASSERT_EQ(readFromIni("cards_display.ini", "cards/roundCardCorners"), QVariant(false)); ASSERT_EQ(readFromIni("cards_display.ini", "cards/overrideAllCardArtWithPersonalPreference"), QVariant(true)); ASSERT_EQ(readFromIni("cards_display.ini", "cards/bumpSetsWithCardsInDeckToTop"), QVariant(false)); - ASSERT_EQ(readFromIni("cards_display.ini", "cards/includerebalancedcards"), QVariant(false)); ASSERT_EQ(readFromIni("cards_display.ini", "cards/autoRotateSidewaysLayoutCards"), QVariant(false)); ASSERT_EQ(readFromIni("cards_display.ini", "cards/tapAnimation"), QVariant(true)); ASSERT_EQ(readFromIni("cards_display.ini", "cards/scaleCards"), QVariant(false)); From 56c456414bf37c5c908c0f0201f30db94ef994ea Mon Sep 17 00:00:00 2001 From: BruebachL <44814898+BruebachL@users.noreply.github.com> Date: Fri, 9 Oct 2026 06:07:39 +0200 Subject: [PATCH 14/28] [Game] Use non-blocking popup for zone context menus (#7452) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace QMenu::exec with popup() for zone context menus to avoid blocking the scene. Co-authored-by: Lukas Brübach --- cockatrice/src/game_graphics/zones/card_zone.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cockatrice/src/game_graphics/zones/card_zone.cpp b/cockatrice/src/game_graphics/zones/card_zone.cpp index b2ba8618e..d09bb588c 100644 --- a/cockatrice/src/game_graphics/zones/card_zone.cpp +++ b/cockatrice/src/game_graphics/zones/card_zone.cpp @@ -48,7 +48,7 @@ void CardZone::mouseDoubleClickEvent(QGraphicsSceneMouseEvent * /*event*/) bool CardZone::showContextMenu(const QPoint &screenPos) { if (menu) { - menu->exec(screenPos); + menu->popup(screenPos); return true; } return false; From aaafa72c0e28d54ae6dd1c4d1a74d1d829e46338 Mon Sep 17 00:00:00 2001 From: BruebachL <44814898+BruebachL@users.noreply.github.com> Date: Fri, 9 Oct 2026 06:08:15 +0200 Subject: [PATCH 15/28] [Game] Use native title bar height for ZoneViewWidget close button (#7450) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [Game] Use native title bar height for ZoneViewWidget close button Compute title bar height from style (PM_TitleBarHeight) instead of hardcoded 24.0 to align hit box with native close button. * [Game] Fix ZoneViewWidget title bar height compile errors Drop the redundant static on the anonymous namespace helper, stop redeclaring titleBarHeight's parameter and reuse tbh in the fallback path, and restore the position clamp that still referenced the removed kTitleBarHeight constant. --------- Co-authored-by: Lukas Brübach --- .../game_graphics/zones/view_zone_widget.cpp | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/cockatrice/src/game_graphics/zones/view_zone_widget.cpp b/cockatrice/src/game_graphics/zones/view_zone_widget.cpp index b4f73d348..49d9955e0 100644 --- a/cockatrice/src/game_graphics/zones/view_zone_widget.cpp +++ b/cockatrice/src/game_graphics/zones/view_zone_widget.cpp @@ -51,7 +51,13 @@ namespace { -constexpr qreal kTitleBarHeight = 24.0; +qreal titleBarHeight(QWidget *styleWidget) +{ + if (styleWidget) { + return static_cast(styleWidget->style()->pixelMetric(QStyle::PM_TitleBarHeight, nullptr, styleWidget)); + } + return 24.0; +} constexpr qreal kMinVisibleWidth = 100.0; } // namespace @@ -315,7 +321,8 @@ QRectF ZoneViewWidget::closeButtonRect(QWidget *styleWidget) const // query the style for the close button position (handles macOS top-left placement) // Title bar rect MUST be local (0,0-based) for QStyle - const QRect titleBarRect(0, 0, static_cast(frameRectF.width()), static_cast(kTitleBarHeight)); + const qreal tbh = titleBarHeight(styleWidget); + const QRect titleBarRect(0, 0, static_cast(frameRectF.width()), static_cast(tbh)); if (styleWidget) { QStyleOptionTitleBar opt; @@ -344,7 +351,7 @@ QRectF ZoneViewWidget::closeButtonRect(QWidget *styleWidget) const } // Fallback: frame-relative top-right - return QRectF(frameRectF.right() - kTitleBarHeight, frameRectF.top(), kTitleBarHeight, kTitleBarHeight); + return QRectF(frameRectF.right() - tbh, frameRectF.top(), tbh, tbh); } QGraphicsView *ZoneViewWidget::findDragView(QWidget *eventWidget) const @@ -468,8 +475,9 @@ QVariant ZoneViewWidget::itemChange(GraphicsItemChange change, const QVariant &v const qreal minX = sceneRect.left(); const qreal maxX = qMax(minX, sceneRect.right() - kMinVisibleWidth); - const qreal minY = sceneRect.top() + kTitleBarHeight; - const qreal maxY = qMax(minY, sceneRect.bottom() - kTitleBarHeight); + const qreal tbh = titleBarHeight(nullptr); + const qreal minY = sceneRect.top() + tbh; + const qreal maxY = qMax(minY, sceneRect.bottom() - tbh); desiredPos.setX(qBound(minX, desiredPos.x(), maxX)); desiredPos.setY(qBound(minY, desiredPos.y(), maxY)); From 205e1ecebfae5062f35a599a7db3e6685bb05d47 Mon Sep 17 00:00:00 2001 From: BruebachL <44814898+BruebachL@users.noreply.github.com> Date: Fri, 9 Oct 2026 06:09:18 +0200 Subject: [PATCH 16/28] [CardDB] Keep parse-time set filtering and bust the cache on enablement changes (#7448) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The parsers keep dropping printings for disabled sets so that disabling a set hides them everywhere, not just in deck editor search. The cached parse output therefore depends on enablement, which the source hash did not cover: the first parse froze whatever enablement state existed at that moment and later toggles hit the stale cache. - Fold a parser schema version and the sorted enabled set names into the binary cache source hash so toggling a set or enabling newly discovered sets (including custom ones) forces a re-parse on the next load. - Harden the legacy set migration to only write keys that exist so missing legacy values can no longer clobber cardDatabase.ini and silently disable sets on upgrade. - Make CardDatabase::reloadCardDatabasesAndNotify() bypass the binary cache so an explicit reload always re-reads the files on disk, even when their size/mtime hash still matches. - Cover cache invalidation end to end: sandboxed loads assert that disabling a set, adding a custom database and enabling a fresh set each rewrite the cache, that a no-op load keeps it, and that an explicit reload picks up edits the source hash cannot see. Co-authored-by: Lukas Brübach --- .../card/database/card_database.cpp | 4 +- .../card/database/card_database.h | 6 +- .../card/database/card_database_loader.cpp | 35 ++- .../card/database/card_database_loader.h | 9 +- .../interface_card_set_priority_controller.h | 11 + .../noop_card_set_priority_controller.h | 5 + .../settings/card_database_settings.cpp | 14 + .../settings/card_database_settings.h | 2 + .../settings/settings_migration.cpp | 12 +- tests/carddatabase/carddatabase_test.cpp | 282 ++++++++++++++++++ 10 files changed, 366 insertions(+), 14 deletions(-) diff --git a/libcockatrice_card/libcockatrice/card/database/card_database.cpp b/libcockatrice_card/libcockatrice/card/database/card_database.cpp index fc2c7f18c..469c8d02c 100644 --- a/libcockatrice_card/libcockatrice/card/database/card_database.cpp +++ b/libcockatrice_card/libcockatrice/card/database/card_database.cpp @@ -78,7 +78,9 @@ void CardDatabase::loadCardDatabases() void CardDatabase::reloadCardDatabasesAndNotify() { - loadCardDatabases(); + // An explicit reload bypasses the binary cache so the files on disk are + // always re-read, even when their size/mtime hash still matches the cache. + loadStatus = loader->loadCardDatabases(/* ignoreCache */ true); if (loadStatus == Ok) { checkUnknownSets(); diff --git a/libcockatrice_card/libcockatrice/card/database/card_database.h b/libcockatrice_card/libcockatrice/card/database/card_database.h index 44d554df7..9f0d67b67 100644 --- a/libcockatrice_card/libcockatrice/card/database/card_database.h +++ b/libcockatrice_card/libcockatrice/card/database/card_database.h @@ -177,8 +177,12 @@ public slots: void addFormat(const FormatRulesPtr &format); - /** @brief Loads card databases from configured paths. */ + /** @brief Loads card databases from configured paths, using the binary cache when valid. */ void loadCardDatabases(); + /** + * @brief Reloads card databases from disk, bypassing the binary cache, + * and notifies observers of the fresh state. + */ void reloadCardDatabasesAndNotify(); /** @brief Saves custom tokens to file. diff --git a/libcockatrice_card/libcockatrice/card/database/card_database_loader.cpp b/libcockatrice_card/libcockatrice/card/database/card_database_loader.cpp index 812760106..194083615 100644 --- a/libcockatrice_card/libcockatrice/card/database/card_database_loader.cpp +++ b/libcockatrice_card/libcockatrice/card/database/card_database_loader.cpp @@ -6,6 +6,7 @@ #include "libcockatrice/card/database/card_database_data.h" #include "libcockatrice/card/set/card_set.h" #include "libcockatrice/interfaces/interface_card_database_path_provider.h" +#include "libcockatrice/interfaces/interface_card_set_priority_controller.h" #include "parser/card_database_parser.h" #include "parser/cockatrice_xml_3.h" #include "parser/cockatrice_xml_4.h" @@ -28,7 +29,6 @@ #include class ICardPreferenceProvider; -class ICardSetPriorityController; CardDatabaseLoader::CardDatabaseLoader(QObject *parent, CardDatabase *db, @@ -44,8 +44,7 @@ CardDatabaseLoader::CardDatabaseLoader(QObject *parent, // the finished snapshot is swapped into the live database on the GUI thread. // when SettingsCache's path changes, trigger reloads - connect(pathProvider, &ICardDatabasePathProvider::cardDatabasePathChanged, this, - &CardDatabaseLoader::loadCardDatabases); + connect(pathProvider, &ICardDatabasePathProvider::cardDatabasePathChanged, this, [this] { loadCardDatabases(); }); } CardDatabaseLoader::~CardDatabaseLoader() @@ -90,12 +89,12 @@ LoadStatus CardDatabaseLoader::loadCardDatabase(const QString &path, CardDatabas return tempLoadStatus; } -LoadStatus CardDatabaseLoader::loadCardDatabases() +LoadStatus CardDatabaseLoader::loadCardDatabases(bool ignoreCache) { - return doLoadCardDatabases(); + return doLoadCardDatabases(ignoreCache); } -LoadStatus CardDatabaseLoader::doLoadCardDatabases() +LoadStatus CardDatabaseLoader::doLoadCardDatabases(bool ignoreCache) { QMutexLocker locker(reloadDatabaseMutex); @@ -113,9 +112,14 @@ LoadStatus CardDatabaseLoader::doLoadCardDatabases() LoadStatus loadStatus = NotLoaded; // Try the binary cache first: a cache hit avoids re-parsing the (large) XML. + // An explicit reload skips the lookup so the files on disk are always + // re-read, even when their size/mtime hash still matches the cache. const QStringList customPaths = collectCustomDatabasePaths(); const QByteArray sourceHash = computeSourceHash(customPaths); - if (loadFromCache(data, sourceHash)) { + if (ignoreCache) { + qCInfo(CardDatabaseLoadingLog) << "Ignoring binary cache, re-parsing source files"; + } + if (!ignoreCache && loadFromCache(data, sourceHash)) { qCInfo(CardDatabaseLoadingLog) << "Loaded card database from binary cache"; loadStatus = Ok; } else { @@ -180,6 +184,12 @@ QByteArray CardDatabaseLoader::computeSourceHash(const QStringList &customPaths) hash.addData(QCoreApplication::applicationVersion().toUtf8()); hash.addData(QByteArray(1, '\0')); + // Include parser schema version to invalidate caches when parser behavior changes. + // Increment this if the parser logic changes in a way that affects cached data. + static const char SCHEMA_VERSION[] = "carddb-parse-schema-v1"; + hash.addData(QByteArray(SCHEMA_VERSION, sizeof(SCHEMA_VERSION) - 1)); + hash.addData(QByteArray(1, '\0')); + const QStringList inputs = QStringList() << pathProvider->getCardDatabasePath() << pathProvider->getTokenDatabasePath() << pathProvider->getSpoilerCardDatabasePath() << customPaths; @@ -194,6 +204,17 @@ QByteArray CardDatabaseLoader::computeSourceHash(const QStringList &customPaths) hash.addData(QByteArray(1, '\0')); } } + + // The parsers drop printings of disabled sets at parse time, so the cached + // snapshot depends on enablement: fold the enabled set names in so that + // toggling a set invalidates the cache and forces a re-parse. + if (priorityController) { + const QStringList enabledSets = priorityController->getEnabledSetNames(); + for (const QString &setName : enabledSets) { + hash.addData(setName.toUtf8()); + hash.addData(QByteArray(1, '\0')); + } + } return hash.result(); } diff --git a/libcockatrice_card/libcockatrice/card/database/card_database_loader.h b/libcockatrice_card/libcockatrice/card/database/card_database_loader.h index 5dad152eb..fffd31d2f 100644 --- a/libcockatrice_card/libcockatrice/card/database/card_database_loader.h +++ b/libcockatrice_card/libcockatrice/card/database/card_database_loader.h @@ -73,9 +73,13 @@ public slots: * * Runs synchronously on the calling thread. The caller should ensure * that any signal receivers are already connected before invoking this. + * @param ignoreCache Skip the binary cache lookup and re-parse the source + * files from disk, refreshing the cache afterwards. Used for + * explicit reloads so that edits the source hash cannot see are + * still picked up. * @return Status of the main database load. */ - LoadStatus loadCardDatabases(); + LoadStatus loadCardDatabases(bool ignoreCache = false); /** * @brief Loads a single card database file into the given snapshot. @@ -128,9 +132,10 @@ private: /** * @brief Performs the actual load work synchronously on the calling thread. + * @param ignoreCache Skip the binary cache lookup and re-parse from disk. * @return Status of the main database load. */ - LoadStatus doLoadCardDatabases(); + LoadStatus doLoadCardDatabases(bool ignoreCache); /** * @brief Collects custom card database paths recursively. diff --git a/libcockatrice_interfaces/libcockatrice/interfaces/interface_card_set_priority_controller.h b/libcockatrice_interfaces/libcockatrice/interfaces/interface_card_set_priority_controller.h index 36e748006..6b3e684d7 100644 --- a/libcockatrice_interfaces/libcockatrice/interfaces/interface_card_set_priority_controller.h +++ b/libcockatrice_interfaces/libcockatrice/interfaces/interface_card_set_priority_controller.h @@ -2,6 +2,7 @@ #define COCKATRICE_INTERFACE_CARD_SET_PRIORITY_CONTROLLER_H #include +#include class ICardSetPriorityController { @@ -46,6 +47,16 @@ public: */ virtual SetOptions getSetOptions(QString shortName) const = 0; + /** + * @brief Returns the short names of every set currently marked as enabled. + * + * Callers fold this into the card database cache source hash so that + * toggling set enablement invalidates the cache. + * + * @return The enabled set short names, sorted alphabetically. + */ + virtual QStringList getEnabledSetNames() const = 0; + virtual void saveSets(const QVector &data) = 0; }; diff --git a/libcockatrice_interfaces/libcockatrice/interfaces/noop_card_set_priority_controller.h b/libcockatrice_interfaces/libcockatrice/interfaces/noop_card_set_priority_controller.h index 8cc2011bd..94e1f0c9a 100644 --- a/libcockatrice_interfaces/libcockatrice/interfaces/noop_card_set_priority_controller.h +++ b/libcockatrice_interfaces/libcockatrice/interfaces/noop_card_set_priority_controller.h @@ -34,6 +34,11 @@ public: return {0, true, true}; } + QStringList getEnabledSetNames() const override + { + return {}; + } + void saveSets(const QVector & /* data */) override { } diff --git a/libcockatrice_settings/libcockatrice/settings/card_database_settings.cpp b/libcockatrice_settings/libcockatrice/settings/card_database_settings.cpp index 7d41e5165..acac1125f 100644 --- a/libcockatrice_settings/libcockatrice/settings/card_database_settings.cpp +++ b/libcockatrice_settings/libcockatrice/settings/card_database_settings.cpp @@ -88,6 +88,20 @@ ICardSetPriorityController::SetOptions CardDatabaseSettings::getSetOptions(QStri return setOptionsCache.value(shortName); } +QStringList CardDatabaseSettings::getEnabledSetNames() const +{ + QMutexLocker lock(&setOptionsMutex); + ensureSetOptionsLoaded(); + QStringList names; + for (auto it = setOptionsCache.constBegin(); it != setOptionsCache.constEnd(); ++it) { + if (it.value().enabled) { + names << it.key(); + } + } + names.sort(); + return names; +} + void CardDatabaseSettings::saveSets(const QVector &data) { batchWrite([&](QSettings &s) { diff --git a/libcockatrice_settings/libcockatrice/settings/card_database_settings.h b/libcockatrice_settings/libcockatrice/settings/card_database_settings.h index 07a5788b9..5bdf17aef 100644 --- a/libcockatrice_settings/libcockatrice/settings/card_database_settings.h +++ b/libcockatrice_settings/libcockatrice/settings/card_database_settings.h @@ -35,6 +35,8 @@ public: SetOptions getSetOptions(QString shortName) const override; + QStringList getEnabledSetNames() const override; + void saveSets(const QVector &data) override; private: diff --git a/libcockatrice_settings/libcockatrice/settings/settings_migration.cpp b/libcockatrice_settings/libcockatrice/settings/settings_migration.cpp index c343ef801..c3f299f40 100644 --- a/libcockatrice_settings/libcockatrice/settings/settings_migration.cpp +++ b/libcockatrice_settings/libcockatrice/settings/settings_migration.cpp @@ -570,9 +570,15 @@ static void migrateLegacySets(const QString &settingsPath) QSettings cardDbIni(settingsPath + "cardDatabase.ini", QSettings::IniFormat); for (const auto &shortName : groups) { legacySetting.beginGroup(shortName); - cardDbIni.setValue("sets/" + shortName + "/sortKey", legacySetting.value("sortkey")); - cardDbIni.setValue("sets/" + shortName + "/enabled", legacySetting.value("enabled")); - cardDbIni.setValue("sets/" + shortName + "/isKnown", legacySetting.value("isknown")); + if (legacySetting.contains("sortkey")) { + cardDbIni.setValue("sets/" + shortName + "/sortKey", legacySetting.value("sortkey")); + } + if (legacySetting.contains("enabled")) { + cardDbIni.setValue("sets/" + shortName + "/enabled", legacySetting.value("enabled")); + } + if (legacySetting.contains("isknown")) { + cardDbIni.setValue("sets/" + shortName + "/isKnown", legacySetting.value("isknown")); + } legacySetting.endGroup(); } legacySetting.endGroup(); diff --git a/tests/carddatabase/carddatabase_test.cpp b/tests/carddatabase/carddatabase_test.cpp index 3f1284d0a..1ac259d9b 100644 --- a/tests/carddatabase/carddatabase_test.cpp +++ b/tests/carddatabase/carddatabase_test.cpp @@ -7,18 +7,26 @@ #include "gtest/gtest.h" #include +#include +#include #include +#include +#include #include #include #include #include #include +#include #include +#include #include #include #include #include #include +#include +#include #include #include #include @@ -93,6 +101,280 @@ TEST(CardDatabaseTest, Xml4LocalizedDataRoundTrip) ASSERT_EQ(loaded->getLocalizedText("de"), "Blitzschlag fügt 3 Schadenspunkte zu."); ASSERT_EQ(loaded->getLocalizedText("fr"), "Deal 3 damage."); } + +/** + * @brief Path provider serving a sandboxed copy of the test card database. + */ +class SandboxPathProvider : public ICardDatabasePathProvider +{ +public: + explicit SandboxPathProvider(const QString &_root) : root(_root) + { + } + + QString getCardDatabasePath() const override + { + return root + "/cards.xml"; + } + + QString getCustomCardDatabasePath() const override + { + return root + "/customsets/"; + } + + QString getTokenDatabasePath() const override + { + return root + "/tokens.xml"; + } + + QString getSpoilerCardDatabasePath() const override + { + return root + "/spoiler.xml"; + } + +private: + QString root; +}; + +/** + * @brief Set priority controller whose enablement state the test drives directly. + * + * Seeded short names behave like entries present in cardDatabase.ini (enabled, + * known). Anything the parser discovers but the test did not seed falls back to + * the default SetOptions, i.e. disabled and unknown, mirroring + * CardDatabaseSettings for sets without an ini group. + */ +class SeededSetPriorityController : public ICardSetPriorityController +{ +public: + void seed(const QStringList &shortNames) + { + for (const QString &shortName : shortNames) { + SetOptions options; + options.enabled = true; + options.isKnown = true; + setOptions.insert(shortName, options); + } + } + + void setSortKey(QString shortName, unsigned int sortKey) override + { + setOptions[shortName].sortKey = sortKey; + } + + void setEnabled(QString shortName, bool enabled) override + { + setOptions[shortName].enabled = enabled; + } + + void setIsKnown(QString shortName, bool isknown) override + { + setOptions[shortName].isKnown = isknown; + } + + unsigned int getSortKey(QString shortName) const override + { + return setOptions.value(shortName).sortKey; + } + + bool isEnabled(QString shortName) const override + { + return setOptions.value(shortName).enabled; + } + + bool isKnown(QString shortName) const override + { + return setOptions.value(shortName).isKnown; + } + + SetOptions getSetOptions(QString shortName) const override + { + return setOptions.value(shortName); + } + + QStringList getEnabledSetNames() const override + { + QStringList names; + for (auto it = setOptions.constBegin(); it != setOptions.constEnd(); ++it) { + if (it.value().enabled) { + names << it.key(); + } + } + names.sort(); + return names; + } + + void saveSets(const QVector &data) override + { + for (const SetSaveData &entry : data) { + setOptions[entry.shortName].sortKey = entry.sortKey; + setOptions[entry.shortName].enabled = entry.enabled; + } + } + +private: + QHash setOptions; +}; + +/** + * @brief Sandboxed card database plus enablement controller for cache tests. + * + * Copies the checked-in fixture XML into a temporary directory so each test + * owns the files (and the binary cache written next to them). + */ +class CardDatabaseCacheInvalidationTest : public ::testing::Test +{ +protected: + void SetUp() override + { + ASSERT_TRUE(tempDir.isValid()); + root = tempDir.path(); + ASSERT_TRUE(QFile::copy(QString(CARDDB_DATADIR) + "cards.xml", root + "/cards.xml")); + ASSERT_TRUE(QFile::copy(QString(CARDDB_DATADIR) + "tokens.xml", root + "/tokens.xml")); + ASSERT_TRUE(QDir(root).mkpath("customsets")); + ASSERT_TRUE( + QFile::copy(QString(CARDDB_DATADIR) + "customsets/customset1.xml", root + "/customsets/customset1.xml")); + controller.seed({"CAT", "DOG", "WHO", " Not a Card", "BRD"}); + } + + /** + * @brief Contents of the binary cache written next to cards.xml. + * @return The cache file bytes, or an empty array if no cache exists. + */ + QByteArray cacheContents() const + { + QFile file(root + "/cards.xml.cache"); + if (!file.open(QIODevice::ReadOnly)) { + return {}; + } + return file.readAll(); + } + + QTemporaryDir tempDir; + QString root; + SeededSetPriorityController controller; +}; + +TEST_F(CardDatabaseCacheInvalidationTest, DisablingSetBustsCacheAndDropsPrintings) +{ + NoopCardPreferenceProvider prefs; + SandboxPathProvider pathProvider(root); + CardDatabase db(nullptr, &prefs, &pathProvider, &controller); + + db.loadCardDatabases(); + const QByteArray initialCache = cacheContents(); + ASSERT_FALSE(initialCache.isEmpty()) << "first load must write the binary cache"; + ASSERT_FALSE(db.getCardList().value("Cat").isNull()); + ASSERT_TRUE(db.getCardList().value("Cat")->getSets().contains("CAT")); + + // A cache-aware load with unchanged inputs keeps the cache: the parse + // result would be identical, so there is nothing to invalidate. + db.loadCardDatabases(); + EXPECT_EQ(initialCache, cacheContents()) << "load with unchanged inputs must keep the cache"; + + // Disabling a set changes the source hash, so the next load re-parses and + // the set's printings disappear everywhere. + controller.setEnabled("CAT", false); + db.reloadCardDatabasesAndNotify(); + EXPECT_NE(initialCache, cacheContents()) << "toggling set enablement must bust the cache"; + ASSERT_FALSE(db.getCardList().value("Cat").isNull()); + EXPECT_FALSE(db.getCardList().value("Cat")->getSets().contains("CAT")) << "disabled set printings must be dropped"; + ASSERT_FALSE(db.getCardList().value("Kitten").isNull()); + EXPECT_FALSE(db.getCardList().value("Kitten")->getSets().contains("CAT")); +} + +TEST_F(CardDatabaseCacheInvalidationTest, AddingAndEnablingCustomSetBustsCache) +{ + NoopCardPreferenceProvider prefs; + SandboxPathProvider pathProvider(root); + CardDatabase db(nullptr, &prefs, &pathProvider, &controller); + + db.loadCardDatabases(); + const QByteArray initialCache = cacheContents(); + ASSERT_FALSE(initialCache.isEmpty()) << "first load must write the binary cache"; + + // Drop a new custom set in: the input file list changes, so the next load + // must re-parse. BRD2 is unknown, so its set starts disabled. + QFile customSetFile(root + "/customsets/customset2.xml"); + ASSERT_TRUE(customSetFile.open(QIODevice::WriteOnly | QIODevice::Truncate)); + customSetFile.write("\n" + "\n" + " \n" + " \n" + " Finch\n" + " BRD2\n" + " 0\n" + " Chirp!\n" + " \n" + " \n" + "\n"); + customSetFile.close(); + + db.reloadCardDatabasesAndNotify(); + const QByteArray afterCustomSetAdded = cacheContents(); + EXPECT_NE(initialCache, afterCustomSetAdded) << "adding a custom card database must bust the cache"; + ASSERT_FALSE(db.getCardList().value("Finch").isNull()) << "the custom card must be loaded"; + EXPECT_TRUE(db.getCardList().value("Finch")->getSets().isEmpty()) + << "BRD2 starts disabled, so Finch has no printings yet"; + + // Enabling the freshly discovered set busts the cache again, so the next + // load finally parses its printings (#7455). + controller.setEnabled("BRD2", true); + db.reloadCardDatabasesAndNotify(); + EXPECT_NE(afterCustomSetAdded, cacheContents()) << "enabling a set must bust the cache"; + ASSERT_FALSE(db.getCardList().value("Finch").isNull()); + EXPECT_TRUE(db.getCardList().value("Finch")->getSets().contains("BRD2")); +} + +TEST_F(CardDatabaseCacheInvalidationTest, ExplicitReloadBypassesCache) +{ + NoopCardPreferenceProvider prefs; + SandboxPathProvider pathProvider(root); + CardDatabase db(nullptr, &prefs, &pathProvider, &controller); + + db.loadCardDatabases(); + ASSERT_FALSE(db.getCardList().value("Cat").isNull()); + ASSERT_TRUE(db.getCardList().value("Cat")->getSets().contains("CAT")); + + // Move Cat to the DOG set in place, keeping the file size identical and + // restoring the modification time afterwards: the source hash (path, size, + // mtime) still matches, so the cache stays valid by construction and only + // an explicit reload can pick the edit up. + const QString cardsPath = root + "/cards.xml"; + QFile file(cardsPath); + ASSERT_TRUE(file.open(QIODevice::ReadOnly)); + const qint64 stampedSecs = QFileInfo(cardsPath).lastModified().toSecsSinceEpoch(); + QByteArray contents = file.readAll(); + file.close(); + const QByteArray oldSetCode("CAT"); + const QByteArray newSetCode("DOG"); + ASSERT_EQ(contents.count(oldSetCode), 1) << "fixture must contain exactly one CAT printing"; + contents.replace(contents.indexOf(oldSetCode), oldSetCode.size(), newSetCode); + ASSERT_TRUE(file.open(QIODevice::ReadWrite)); + ASSERT_EQ(file.write(contents), contents.size()); + // Flush the pending write before stamping the time: close() would otherwise + // flush it afterwards and bump the modification time again, invalidating the + // cache on platforms that buffer writes (e.g. macOS). + ASSERT_TRUE(file.flush()); + ASSERT_TRUE(file.setFileTime(QDateTime::fromSecsSinceEpoch(stampedSecs), QFileDevice::FileModificationTime)); + file.close(); + ASSERT_EQ(QFileInfo(cardsPath).lastModified().toSecsSinceEpoch(), stampedSecs) + << "the sandbox file's modification time must be restored for the cache to stay valid"; + + // The cache is still valid for a regular load, which serves the stale data. + db.loadCardDatabases(); + ASSERT_FALSE(db.getCardList().value("Cat").isNull()); + EXPECT_TRUE(db.getCardList().value("Cat")->getSets().contains("CAT")) << "regular load must hit the cache"; + EXPECT_FALSE(db.getCardList().value("Cat")->getSets().contains("DOG")); + + // The explicit reload ignores the cache and re-reads the file. + const QByteArray staleCache = cacheContents(); + db.reloadCardDatabasesAndNotify(); + EXPECT_NE(staleCache, cacheContents()) << "explicit reload must rewrite the cache from disk"; + ASSERT_FALSE(db.getCardList().value("Cat").isNull()); + EXPECT_FALSE(db.getCardList().value("Cat")->getSets().contains("CAT")); + EXPECT_TRUE(db.getCardList().value("Cat")->getSets().contains("DOG")); +} } // namespace int main(int argc, char **argv) From 6bed5d6f67f82fc5dfe5c863def8e9e6d5b393a8 Mon Sep 17 00:00:00 2001 From: BruebachL <44814898+BruebachL@users.noreply.github.com> Date: Fri, 9 Oct 2026 11:07:22 +0200 Subject: [PATCH 17/28] [Style] Warn about the broken Windows native styles and stop resolving System to them (#7461) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [Style] Fall back to the built-in windows style instead of windowsvista The Windows Vista native style is broken the same way as the Windows 11 one, so the sanitizer now catches both and falls back to the built-in QWindowsStyle instead of the Vista plugin. The style picker no longer offers either. * [Style] Keep Windows native styles selectable but warn about them --------- Co-authored-by: Lukas Brübach --- cockatrice/src/interface/theme_manager.cpp | 22 +++++++------ .../appearance_settings_page.cpp | 31 ++++++++++++++----- .../settings_page/appearance_settings_page.h | 2 ++ 3 files changed, 38 insertions(+), 17 deletions(-) diff --git a/cockatrice/src/interface/theme_manager.cpp b/cockatrice/src/interface/theme_manager.cpp index cbf869639..9a96b3e45 100644 --- a/cockatrice/src/interface/theme_manager.cpp +++ b/cockatrice/src/interface/theme_manager.cpp @@ -111,12 +111,17 @@ struct PaletteColorInfo static QString usableDefaultStyle(const QString &style) { - // The Windows 11 native style is broken: dragging cards across zones can + // Only the OS/default ("System") style is sanitized: the Windows 11 and + // Windows Vista native styles are broken (dragging cards across zones can // shrink the board to a tiny grey window that is unfixable without - // rejoining. It is never usable, so guard against it no matter how it was - // requested (OS default or an explicit "windows11" theme choice) and fall - // back to the Vista style. - return style.compare("windows11", Qt::CaseInsensitive) == 0 ? QStringLiteral("windowsvista") : style; + // rejoining), so a "System" choice falls through to the built-in "windows" + // style (QWindowsStyle) instead. They remain selectable by hand, where the + // settings page warns about them. + if (style.compare("windows11", Qt::CaseInsensitive) == 0 || + style.compare("windowsvista", Qt::CaseInsensitive) == 0) { + return QStringLiteral("windows"); + } + return style; } ThemeManager::ThemeManager(QObject *parent) : QObject(parent) @@ -496,14 +501,13 @@ void ThemeManager::applyStyleAndPalette(const QString &themeName, if (themeName == FUSION_THEME_NAME) { styleName = "Fusion"; } else { + // "System" resolves through the guard, which steers the broken + // Windows native styles to "windows". An explicitly chosen style + // name is honored as-is. styleName = usableDefaultStyle(defaultStyleName); } } - // The Windows 11 style is broken even when selected explicitly in a theme, - // so sanitize the resolved name here rather than trusting the theme config. - styleName = usableDefaultStyle(styleName); - QStyle *style = QStyleFactory::create(styleName); if (!style) { style = QStyleFactory::create(usableDefaultStyle(defaultStyleName)); diff --git a/cockatrice/src/interface/widgets/settings_page/appearance_settings_page.cpp b/cockatrice/src/interface/widgets/settings_page/appearance_settings_page.cpp index 159db767d..4c38459c6 100644 --- a/cockatrice/src/interface/widgets/settings_page/appearance_settings_page.cpp +++ b/cockatrice/src/interface/widgets/settings_page/appearance_settings_page.cpp @@ -74,15 +74,10 @@ AppearanceSettingsPage::AppearanceSettingsPage() connect(&schemeCombo, &QComboBox::currentIndexChanged, this, [this] { themeManager->setColorScheme(schemeCombo.currentData().toString()); }); - // Qt widget style; "System" lets the application decide + // Qt widget style; "System" lets the application decide. The broken Windows + // native styles are still offered, but selecting one raises a warning. styleCombo.addItem(tr("System"), QStringLiteral("System")); for (const QString &key : QStyleFactory::keys()) { - // The Windows 11 native style is broken (board rendering glitches when - // moving cards), so never offer it; it is already sanitized at apply - // time in ThemeManager. - if (key.compare("windows11", Qt::CaseInsensitive) == 0) { - continue; - } styleCombo.addItem(key, key); } @@ -92,6 +87,7 @@ AppearanceSettingsPage::AppearanceSettingsPage() connect(&styleCombo, &QComboBox::currentIndexChanged, this, [this] { themeManager->setStyleName(styleCombo.currentData().toString()); }); + connect(&styleCombo, &QComboBox::currentIndexChanged, this, &AppearanceSettingsPage::updateStyleWarning); connect(themeManager, &ThemeManager::themeChanged, this, [this, dirPath] { const QString newDir = themeManager->getAvailableThemes().value(SettingsCache::instance().getThemeName()); @@ -108,6 +104,8 @@ AppearanceSettingsPage::AppearanceSettingsPage() const int styleIdx = currentStyle.isEmpty() ? 0 : styleCombo.findData(currentStyle); styleCombo.setCurrentIndex(styleIdx >= 0 ? styleIdx : 0); styleCombo.blockSignals(false); + + updateStyleWarning(); }); connect(&editPaletteButton, &QPushButton::clicked, this, &AppearanceSettingsPage::editPalette); @@ -120,7 +118,11 @@ AppearanceSettingsPage::AppearanceSettingsPage() themeGrid->addWidget(&schemeCombo, 2, 1); themeGrid->addWidget(&styleComboLabel, 3, 0); themeGrid->addWidget(&styleCombo, 3, 1); - themeGrid->addWidget(&editPaletteButton, 4, 1); + themeGrid->addWidget(&styleWarningLabel, 4, 0, 1, 2); + themeGrid->addWidget(&editPaletteButton, 5, 1); + + styleWarningLabel.setWordWrap(true); + styleWarningLabel.setAlignment(Qt::AlignLeft | Qt::AlignVCenter); themeGroupBox = new QGroupBox; themeGroupBox->setLayout(themeGrid); @@ -465,6 +467,14 @@ void AppearanceSettingsPage::updateHomeTabSettingsVisibility() homeTabDisplayCardNameCheckBox.setVisible(visible); } +void AppearanceSettingsPage::updateStyleWarning() +{ + const QString style = styleCombo.currentData().toString(); + const bool broken = + style.compare("windows11", Qt::CaseInsensitive) == 0 || style.compare("windowsvista", Qt::CaseInsensitive) == 0; + styleWarningLabel.setVisible(broken); +} + void AppearanceSettingsPage::showShortcutsChanged(QT_STATE_CHANGED_T value) { SettingsCache::instance().userInterface().setShowShortcuts(value); @@ -527,6 +537,11 @@ void AppearanceSettingsPage::retranslateUi() schemeComboLabel.setText(tr("Active theme palette:")); styleComboLabel.setText(tr("Active theme style:")); styleCombo.setToolTip(tr("Qt widget style saved to this theme (\"System\" lets the application decide)")); + styleWarningLabel.setText( + tr("Warning: the Windows 11 and Windows Vista styles are buggy and can render controls such as combo boxes " + "unreadable, especially in dark mode. Fusion is the recommended style on every platform: it is Qt's " + "cross-platform style and the one Cockatrice is developed against.")); + updateStyleWarning(); editPaletteButton.setText(tr("Edit theme palette")); homeTabGroupBox->setTitle(tr("Home tab settings")); diff --git a/cockatrice/src/interface/widgets/settings_page/appearance_settings_page.h b/cockatrice/src/interface/widgets/settings_page/appearance_settings_page.h index 096ba0915..8afd326a3 100644 --- a/cockatrice/src/interface/widgets/settings_page/appearance_settings_page.h +++ b/cockatrice/src/interface/widgets/settings_page/appearance_settings_page.h @@ -22,6 +22,7 @@ private slots: void openThemeLocation(); void editPalette(); void updateHomeTabSettingsVisibility(); + void updateStyleWarning(); void showShortcutsChanged(QT_STATE_CHANGED_T enabled); void overrideAllCardArtWithPersonalPreferenceToggled(QT_STATE_CHANGED_T enabled); @@ -37,6 +38,7 @@ private: QComboBox schemeCombo; QLabel styleComboLabel; QComboBox styleCombo; + QLabel styleWarningLabel; QPushButton editPaletteButton; QLabel homeTabBackgroundSourceLabel; From a44757bd11a587eb37affa08c24aa333e62bf58c Mon Sep 17 00:00:00 2001 From: BruebachL <44814898+BruebachL@users.noreply.github.com> Date: Fri, 9 Oct 2026 11:07:48 +0200 Subject: [PATCH 18/28] [Client] Improve card database update visibility (#7458) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [Client] Improve card database update visibility Addresses Cockatrice/Cockatrice#7431. Cockatrice previously offered no in-client feedback while the card database updater ran: the only progress UI lived in the first-run wizard, stderr/stdout were not parsed in interactive runs, and starting a second update with Oracle already open or with a hidden background run active just showed a confusing 'already running' guard - even though Oracle is launched as a separate process with no lifecycle tracking. - Add a status-bar widget (CardDatabaseUpdateStatusBar) that appears while an update runs and shows the Downloading/Parsing/Importing stages with percent progress; it is also used in the quit-confirm prompt so users see an unfinished update before cancelling it. - Parse the updater's PROGRESS lines (new CardUpdateProgressParser, unit-tested) in both foreground and background runs and log stage changes to the new card_database.update category, throttled to at most one line per second; forward Oracle stderr to the logs. - Show a tray balloon when a background update starts and on finish or failure instead of staying silent. - Request a running Oracle instance to raise itself (QLocalServer CockatriceOracleRaise-) when the user starts another update, and demote the 'already running' guard to an informative message only when no running instance can be found. - Emit download/scan/import progress unconditionally from Oracle so interactive and background runs behave the same. - Document the new log category in the troubleshooting guide. * [Client] Address card database update review feedback * [Client] Add setting to control card database update tray notifications * [Client] Address remaining card database update review nits - Rename card_update_progress_parser.{h,cpp} to card_update_progress.{h,cpp} - Store the CardUpdateProgress struct in the status bar widget * Lint. --------- Co-authored-by: Lukas Brübach --- cockatrice/CMakeLists.txt | 4 + .../card_database_update_status_bar.cpp | 117 ++++++++++++++ .../card_database_update_status_bar.h | 68 ++++++++ .../card_update_progress.cpp | 59 +++++++ .../card_update_progress.h | 42 +++++ .../widgets/onboarding/first_run_wizard.cpp | 4 +- .../widgets/onboarding/first_run_wizard.h | 4 +- .../pages/card_database_setup_page.cpp | 22 ++- .../pages/card_database_setup_page.h | 3 +- .../settings_page/general_settings_page.cpp | 7 + .../settings_page/general_settings_page.h | 1 + cockatrice/src/interface/window_main.cpp | 149 +++++++++++++++--- cockatrice/src/interface/window_main.h | 29 +++- cockatrice/src/single_instance_manager.cpp | 15 +- .../troubleshooting/enabling_debug_logs.md | 2 + .../settings/updates_settings.cpp | 10 ++ .../libcockatrice/settings/updates_settings.h | 2 + libcockatrice_utility/CMakeLists.txt | 1 + .../libcockatrice/utility/local_server_name.h | 28 ++++ oracle/src/oracleimporter.h | 13 +- oracle/src/oraclewizard.cpp | 53 +++++++ oracle/src/oraclewizard.h | 9 ++ oracle/src/pages.cpp | 19 +-- tests/CMakeLists.txt | 9 ++ tests/card_update_progress_test.cpp | 93 +++++++++++ tests/settings/settings_defaults_test.cpp | 6 + 26 files changed, 702 insertions(+), 67 deletions(-) create mode 100644 cockatrice/src/interface/card_database_update/card_database_update_status_bar.cpp create mode 100644 cockatrice/src/interface/card_database_update/card_database_update_status_bar.h create mode 100644 cockatrice/src/interface/card_database_update/card_update_progress.cpp create mode 100644 cockatrice/src/interface/card_database_update/card_update_progress.h create mode 100644 libcockatrice_utility/libcockatrice/utility/local_server_name.h create mode 100644 tests/card_update_progress_test.cpp diff --git a/cockatrice/CMakeLists.txt b/cockatrice/CMakeLists.txt index 1760d86b8..14258fad2 100644 --- a/cockatrice/CMakeLists.txt +++ b/cockatrice/CMakeLists.txt @@ -140,6 +140,10 @@ set(cockatrice_SOURCES src/game_graphics/zones/view_zone.cpp src/game_graphics/zones/view_zone_widget.cpp src/game_graphics/board/abstract_graphics_item.cpp + src/interface/card_database_update/card_database_update_status_bar.cpp + src/interface/card_database_update/card_database_update_status_bar.h + src/interface/card_database_update/card_update_progress.cpp + src/interface/card_database_update/card_update_progress.h src/interface/card_picture_loader/card_picture_loader.cpp src/interface/card_picture_loader/card_picture_loader_local.cpp src/interface/card_picture_loader/card_picture_loader_request_status_display_widget.cpp diff --git a/cockatrice/src/interface/card_database_update/card_database_update_status_bar.cpp b/cockatrice/src/interface/card_database_update/card_database_update_status_bar.cpp new file mode 100644 index 000000000..721fdd6c8 --- /dev/null +++ b/cockatrice/src/interface/card_database_update/card_database_update_status_bar.cpp @@ -0,0 +1,117 @@ +#include "card_database_update_status_bar.h" + +#include +#include +#include +#include +#include +#include +#include + +namespace +{ +/** + * @brief Translated name of one updater stage. + * @param fallback shown when the stage is unknown or not reported yet + */ +QString stageName(CardUpdateStage stage, const QString &fallback) +{ + switch (stage) { + case CardUpdateStage::Download: + return QCoreApplication::translate("CardDatabaseUpdateStatusBar", "Downloading"); + case CardUpdateStage::Scan: + return QCoreApplication::translate("CardDatabaseUpdateStatusBar", "Parsing"); + case CardUpdateStage::Import: + return QCoreApplication::translate("CardDatabaseUpdateStatusBar", "Importing"); + case CardUpdateStage::Unknown: + return fallback; + } + return fallback; +} +} // namespace + +CardDatabaseUpdateStatusBar::CardDatabaseUpdateStatusBar(QWidget *parent) : QWidget(parent) +{ + layout = new QHBoxLayout(this); + layout->setContentsMargins(0, 0, 0, 0); + + stageLabel = new QLabel(this); + progressBar = new QProgressBar(this); + progressBar->setMinimumWidth(120); + + layout->addWidget(stageLabel); + layout->addWidget(progressBar); + + setLayout(layout); + refresh(); + hide(); +} + +QString CardDatabaseUpdateStatusBar::statusText() const +{ + if (!active) { + return {}; + } + const QString name = stageName(progress.stage, tr("Updating the card database")); + if (progress.total <= 0) { + return name; + } + const int percent = static_cast((100.0 * progress.done) / progress.total); + return tr("%1 (%2%)").arg(name).arg(percent); +} + +void CardDatabaseUpdateStatusBar::updateStarted() +{ + active = true; + progress = {}; + refresh(); + show(); +} + +void CardDatabaseUpdateStatusBar::updateProgress(const CardUpdateProgress &progress) +{ + active = true; + this->progress = progress; + refresh(); +} + +void CardDatabaseUpdateStatusBar::updateFinished() +{ + active = false; + progress = {}; + refresh(); + hide(); +} + +void CardDatabaseUpdateStatusBar::changeEvent(QEvent *event) +{ + if (event->type() == QEvent::LanguageChange) { + refresh(); + } + QWidget::changeEvent(event); +} + +void CardDatabaseUpdateStatusBar::refresh() +{ + const QString name = stageName(progress.stage, tr("Updating the card database")); + stageLabel->setText(name); + + const qint64 cappedTotal = qMin(progress.total, INT_MAX); + const qint64 cappedDone = qMin(progress.done, INT_MAX); + const int minimum = 0; + const int maximum = static_cast(cappedTotal); + if (progressBar->minimum() != minimum || progressBar->maximum() != maximum) { + // A zero range is the busy indicator, used until the first report arrives. + progressBar->setRange(minimum, maximum); + } + progressBar->setValue(static_cast(cappedDone)); + + if (active && progress.total > 0) { + const int percent = static_cast((100.0 * progress.done) / progress.total); + setToolTip(tr("Card database update in progress: %1 (%2%)").arg(name).arg(percent)); + } else if (active) { + setToolTip(tr("Card database update in progress.")); + } else { + setToolTip({}); + } +} diff --git a/cockatrice/src/interface/card_database_update/card_database_update_status_bar.h b/cockatrice/src/interface/card_database_update/card_database_update_status_bar.h new file mode 100644 index 000000000..6db3bd225 --- /dev/null +++ b/cockatrice/src/interface/card_database_update/card_database_update_status_bar.h @@ -0,0 +1,68 @@ +#ifndef CARD_DATABASE_UPDATE_STATUS_BAR_H +#define CARD_DATABASE_UPDATE_STATUS_BAR_H + +#include "card_update_progress.h" + +#include +#include +#include + +class QEvent; +class QHBoxLayout; +class QLabel; +class QProgressBar; + +/** + * @class CardDatabaseUpdateStatusBar + * @brief Status bar widget showing what the card database updater (Oracle) is doing. + * + * The updater runs as a separate process, so this widget is the in-client view of + * its progress: it appears when an update starts, tracks the download/scan/import + * stages reported by the updater, and disappears when the update finishes. + */ +class CardDatabaseUpdateStatusBar : public QWidget +{ + Q_OBJECT +public: + /** + * @brief Constructs a hidden progress widget. + * @param parent Parent widget + */ + explicit CardDatabaseUpdateStatusBar(QWidget *parent = nullptr); + + /** + * @brief Human readable description of the running stage, e.g. "Downloading (42%)". + * @return the description, or an empty string when no update is running + */ + QString statusText() const; + +public slots: + /** + * @brief Shows the widget and resets it to the indeterminate state. + */ + void updateStarted(); + + /** + * @brief Shows the progress of one update stage. + */ + void updateProgress(const CardUpdateProgress &progress); + + /** + * @brief Hides the widget and clears the reported progress. + */ + void updateFinished(); + +protected: + void changeEvent(QEvent *event) override; + +private: + void refresh(); + + QHBoxLayout *layout; ///< Horizontal layout holding the stage label and the progress bar + QLabel *stageLabel; ///< Name of the stage currently running + QProgressBar *progressBar; ///< Progress within the current stage + CardUpdateProgress progress; ///< Last reported progress + bool active = false; ///< Whether an update is currently running +}; + +#endif // CARD_DATABASE_UPDATE_STATUS_BAR_H diff --git a/cockatrice/src/interface/card_database_update/card_update_progress.cpp b/cockatrice/src/interface/card_database_update/card_update_progress.cpp new file mode 100644 index 000000000..1f8e500d0 --- /dev/null +++ b/cockatrice/src/interface/card_database_update/card_update_progress.cpp @@ -0,0 +1,59 @@ +#include "card_update_progress.h" + +#include + +namespace +{ +CardUpdateStage parseStage(const QByteArray &token) +{ + if (token == "download") { + return CardUpdateStage::Download; + } + if (token == "scan") { + return CardUpdateStage::Scan; + } + if (token == "import") { + return CardUpdateStage::Import; + } + return CardUpdateStage::Unknown; +} +} // namespace + +std::optional CardUpdateProgress::fromProtocolLine(const QByteArray &line) +{ + const QByteArray trimmed = line.trimmed(); + if (!trimmed.startsWith("PROGRESS ")) { + return std::nullopt; + } + const QList parts = trimmed.split(' '); + if (parts.size() != 4) { + return std::nullopt; + } + bool doneOk = false; + bool totalOk = false; + const qint64 done = parts.at(2).toLongLong(&doneOk); + const qint64 total = parts.at(3).toLongLong(&totalOk); + if (!doneOk || !totalOk || done < 0 || total < 0) { + return std::nullopt; + } + CardUpdateProgress progress; + progress.stage = parseStage(parts.at(1)); + progress.done = done; + progress.total = total; + return progress; +} + +QString CardUpdateProgress::stageToken() const +{ + switch (stage) { + case CardUpdateStage::Download: + return QStringLiteral("download"); + case CardUpdateStage::Scan: + return QStringLiteral("scan"); + case CardUpdateStage::Import: + return QStringLiteral("import"); + case CardUpdateStage::Unknown: + return QStringLiteral("unknown"); + } + return QStringLiteral("unknown"); +} diff --git a/cockatrice/src/interface/card_database_update/card_update_progress.h b/cockatrice/src/interface/card_database_update/card_update_progress.h new file mode 100644 index 000000000..743f32209 --- /dev/null +++ b/cockatrice/src/interface/card_database_update/card_update_progress.h @@ -0,0 +1,42 @@ +#ifndef CARD_UPDATE_PROGRESS_H +#define CARD_UPDATE_PROGRESS_H + +#include +#include +#include +#include + +/** + * @brief One stage of the card database updater's progress protocol. + */ +enum class CardUpdateStage +{ + Download, ///< downloading the source data + Scan, ///< parsing the downloaded data + Import, ///< importing cards into the database + Unknown, ///< a stage the client does not recognize +}; + +/** + * @brief One progress line read from the card database updater's stdout. + */ +struct CardUpdateProgress +{ + /** + * @brief Parses one line of the updater stdout protocol: "PROGRESS ". + * @param line a single stdout line, with or without its trailing newline + * @return the parsed progress, or @c std::nullopt when the line is not a valid progress line + */ + static std::optional fromProtocolLine(const QByteArray &line); + + /** + * @brief Protocol token of the stage ("download", "scan", "import" or "unknown"), for logging. + */ + QString stageToken() const; + + CardUpdateStage stage = CardUpdateStage::Unknown; + qint64 done = 0; + qint64 total = 0; +}; + +#endif // CARD_UPDATE_PROGRESS_H diff --git a/cockatrice/src/interface/widgets/onboarding/first_run_wizard.cpp b/cockatrice/src/interface/widgets/onboarding/first_run_wizard.cpp index 6441a7864..426811ec2 100644 --- a/cockatrice/src/interface/widgets/onboarding/first_run_wizard.cpp +++ b/cockatrice/src/interface/widgets/onboarding/first_run_wizard.cpp @@ -185,10 +185,10 @@ void FirstRunWizard::onCardDatabaseUpdateFinished(bool success) } } -void FirstRunWizard::onCardDatabaseUpdateProgress(const QString &stage, qint64 done, qint64 total) +void FirstRunWizard::onCardDatabaseUpdateProgress(const CardUpdateProgress &progress) { if (cardDatabasePage) { - cardDatabasePage->onUpdateProgress(stage, done, total); + cardDatabasePage->onUpdateProgress(progress); } } diff --git a/cockatrice/src/interface/widgets/onboarding/first_run_wizard.h b/cockatrice/src/interface/widgets/onboarding/first_run_wizard.h index bd0e79679..812985a9f 100644 --- a/cockatrice/src/interface/widgets/onboarding/first_run_wizard.h +++ b/cockatrice/src/interface/widgets/onboarding/first_run_wizard.h @@ -1,6 +1,8 @@ #ifndef FIRST_RUN_WIZARD_H #define FIRST_RUN_WIZARD_H +#include "../../card_database_update/card_update_progress.h" + #include #include #include @@ -42,7 +44,7 @@ public slots: void onCardDatabaseUpdateFinished(bool success); /** @brief Forwarded from MainWindow while the background card database update process runs. */ - void onCardDatabaseUpdateProgress(const QString &stage, qint64 done, qint64 total); + void onCardDatabaseUpdateProgress(const CardUpdateProgress &progress); protected: void closeEvent(QCloseEvent *event) override; diff --git a/cockatrice/src/interface/widgets/onboarding/pages/card_database_setup_page.cpp b/cockatrice/src/interface/widgets/onboarding/pages/card_database_setup_page.cpp index feff78088..cb53a25f3 100644 --- a/cockatrice/src/interface/widgets/onboarding/pages/card_database_setup_page.cpp +++ b/cockatrice/src/interface/widgets/onboarding/pages/card_database_setup_page.cpp @@ -188,21 +188,29 @@ void CardDatabaseSetupPage::onUpdateFinished(bool success) } } -void CardDatabaseSetupPage::onUpdateProgress(const QString &stage, qint64 done, qint64 total) +void CardDatabaseSetupPage::onUpdateProgress(const CardUpdateProgress &progress) { if (state != State::Running) { return; } + const qint64 total = progress.total; + const qint64 done = progress.done; progressBar->setRange(0, total > 0 ? static_cast(qMin(total, INT_MAX)) : 0); progressBar->setValue(static_cast(qMin(done, INT_MAX))); if (total > 0) { const int percent = static_cast((100.0 * done) / total); - if (stage == QLatin1String("download")) { - statusLabel->setText(tr("Downloading the card database (%1%)…").arg(percent)); - } else if (stage == QLatin1String("scan")) { - statusLabel->setText(tr("Parsing the card database (%1%)…").arg(percent)); - } else if (stage == QLatin1String("import")) { - statusLabel->setText(tr("Importing cards (%1%)…").arg(percent)); + switch (progress.stage) { + case CardUpdateStage::Download: + statusLabel->setText(tr("Downloading the card database (%1%)…").arg(percent)); + break; + case CardUpdateStage::Scan: + statusLabel->setText(tr("Parsing the card database (%1%)…").arg(percent)); + break; + case CardUpdateStage::Import: + statusLabel->setText(tr("Importing cards (%1%)…").arg(percent)); + break; + case CardUpdateStage::Unknown: + break; } } } diff --git a/cockatrice/src/interface/widgets/onboarding/pages/card_database_setup_page.h b/cockatrice/src/interface/widgets/onboarding/pages/card_database_setup_page.h index 77631dc77..a84223497 100644 --- a/cockatrice/src/interface/widgets/onboarding/pages/card_database_setup_page.h +++ b/cockatrice/src/interface/widgets/onboarding/pages/card_database_setup_page.h @@ -1,6 +1,7 @@ #ifndef CARD_DATABASE_SETUP_PAGE_H #define CARD_DATABASE_SETUP_PAGE_H +#include "../../../card_database_update/card_update_progress.h" #include "../first_run_wizard_page.h" #include @@ -33,7 +34,7 @@ public: void retranslateUi() override; void onUpdateFinished(bool success); - void onUpdateProgress(const QString &stage, qint64 done, qint64 total); + void onUpdateProgress(const CardUpdateProgress &progress); signals: void updateRequested(); diff --git a/cockatrice/src/interface/widgets/settings_page/general_settings_page.cpp b/cockatrice/src/interface/widgets/settings_page/general_settings_page.cpp index a4597014a..73a0f7be2 100644 --- a/cockatrice/src/interface/widgets/settings_page/general_settings_page.cpp +++ b/cockatrice/src/interface/widgets/settings_page/general_settings_page.cpp @@ -161,12 +161,18 @@ GeneralSettingsPage::GeneralSettingsPage() newVersionOracleCheckBox.setChecked(settings.updates().getNotifyAboutNewVersion()); + cardDatabaseUpdateTrayNotificationCheckBox.setChecked(settings.updates().getCardDatabaseUpdateTrayNotification()); + + connect(&cardDatabaseUpdateTrayNotificationCheckBox, &QCheckBox::QT_STATE_CHANGED, &settings.updates(), + &UpdatesSettings::setCardDatabaseUpdateTrayNotification); + auto *cardDatabaseGrid = new QGridLayout; cardDatabaseGrid->addWidget(&startupCardUpdateCheckBehaviorLabel, 0, 0); cardDatabaseGrid->addWidget(&startupCardUpdateCheckBehaviorSelector, 0, 1); cardDatabaseGrid->addWidget(&cardUpdateCheckIntervalLabel, 1, 0); cardDatabaseGrid->addWidget(&cardUpdateCheckIntervalSpinBox, 1, 1); cardDatabaseGrid->addWidget(&lastCardUpdateCheckDateLabel, 2, 1); + cardDatabaseGrid->addWidget(&cardDatabaseUpdateTrayNotificationCheckBox, 3, 0, 1, 2); cardDatabaseGroupBox = new QGroupBox; cardDatabaseGroupBox->setLayout(cardDatabaseGrid); @@ -565,6 +571,7 @@ void GeneralSettingsPage::retranslateUi() tr("Always update in the background")); cardUpdateCheckIntervalLabel.setText(tr("Check for card database updates every")); cardUpdateCheckIntervalSpinBox.setSuffix(tr(" days")); + cardDatabaseUpdateTrayNotificationCheckBox.setText(tr("Notify in the system tray while the card database updates")); QDate lastCheckDate = settings.updates().getLastCardUpdateCheck(); int daysAgo = lastCheckDate.daysTo(QDate::currentDate()); diff --git a/cockatrice/src/interface/widgets/settings_page/general_settings_page.h b/cockatrice/src/interface/widgets/settings_page/general_settings_page.h index fca300670..fcf1c78d0 100644 --- a/cockatrice/src/interface/widgets/settings_page/general_settings_page.h +++ b/cockatrice/src/interface/widgets/settings_page/general_settings_page.h @@ -75,6 +75,7 @@ private: QLabel cardUpdateCheckIntervalLabel; QSpinBox cardUpdateCheckIntervalSpinBox; QLabel lastCardUpdateCheckDateLabel; + QCheckBox cardDatabaseUpdateTrayNotificationCheckBox; QCheckBox showTipsOnStartup; QLabel startupTabLabel; diff --git a/cockatrice/src/interface/window_main.cpp b/cockatrice/src/interface/window_main.cpp index 889e81bfe..189585d84 100644 --- a/cockatrice/src/interface/window_main.cpp +++ b/cockatrice/src/interface/window_main.cpp @@ -37,6 +37,8 @@ #include "../interface/widgets/tabs/tab_supervisor.h" #include "../main.h" #include "abstract_client.h" +#include "card_database_update/card_database_update_status_bar.h" +#include "card_database_update/card_update_progress.h" #include "intents/contexts/context_connect_to_server.h" #include "intents/contexts/context_join_room.h" #include "intents/intent.h" @@ -67,6 +69,7 @@ #include #include #include +#include #include #include #include @@ -103,6 +106,7 @@ #include #include #include +#include #include #include #include @@ -574,6 +578,13 @@ MainWindow::MainWindow(QWidget *parent) connect(connectionController, &ConnectionController::pingStatsUpdated, latencyStatus, &LatencyStatusWidget::updateData); + cardUpdateStatusBar = new CardDatabaseUpdateStatusBar(this); + statusBar()->addPermanentWidget(cardUpdateStatusBar); + connect(this, &MainWindow::cardDatabaseUpdateProgress, cardUpdateStatusBar, + &CardDatabaseUpdateStatusBar::updateProgress); + connect(this, &MainWindow::cardDatabaseUpdateFinished, cardUpdateStatusBar, + &CardDatabaseUpdateStatusBar::updateFinished); + connect(&SettingsCache::instance().shortcuts(), &ShortcutsSettings::shortCutChanged, this, &MainWindow::refreshShortcuts); refreshShortcuts(); @@ -896,10 +907,15 @@ void MainWindow::closeEvent(QCloseEvent *event) bClosingDown = true; if (cardUpdateProcess && cardUpdateProcess->state() != QProcess::NotRunning) { - if (QMessageBox::question(this, tr("Are you sure?"), - tr("A card database update is still running. Quitting now will cancel it.\n" - "Are you sure you want to quit?"), - QMessageBox::Yes | QMessageBox::No, QMessageBox::No) == QMessageBox::No) { + const QString runningFor = cardUpdateStatusBar ? cardUpdateStatusBar->statusText() : QString(); + const QString message = runningFor.isEmpty() + ? tr("A card database update is still running. Quitting now will cancel it.\n" + "Are you sure you want to quit?") + : tr("A card database update is still running: %1.\nQuitting now will cancel it.\n" + "Are you sure you want to quit?") + .arg(runningFor); + if (QMessageBox::question(this, tr("Are you sure?"), message, QMessageBox::Yes | QMessageBox::No, + QMessageBox::No) == QMessageBox::No) { event->ignore(); bClosingDown = false; return; @@ -1116,16 +1132,28 @@ void MainWindow::actCheckCardUpdatesBackground() void MainWindow::createCardUpdateProcess(bool background) { if (cardUpdateProcess) { - QMessageBox::information(this, tr("Information"), tr("A card database update is already running.")); + qCDebug(CardDatabaseUpdateLog) << "A card database update is already running; asking it to come to the front"; + if (requestCardUpdateRaise()) { + return; + } + if (background) { + // A hidden run has nothing to raise: keep the user informed without blocking. + announceCardUpdateRunning(); + return; + } + QMessageBox::information(this, tr("Information"), + tr("The card database updater is already open.\n" + "Look for the Oracle window - it may be behind this one.")); return; } cardUpdateProcess = new QProcess(this); connect(cardUpdateProcess, &QProcess::errorOccurred, this, &MainWindow::cardUpdateError); - connect(cardUpdateProcess, qOverload(&QProcess::finished), this, &MainWindow::cardUpdateFinished); + connect(cardUpdateProcess, &QProcess::readyReadStandardOutput, this, &MainWindow::cardUpdateProgressOutput); + connect(cardUpdateProcess, &QProcess::readyReadStandardError, this, &MainWindow::cardUpdateStandardError); // full "run the update" command; leave empty if not present QString updaterCmd; @@ -1170,6 +1198,8 @@ void MainWindow::createCardUpdateProcess(bool background) } if (updaterCmd.isEmpty()) { + qCWarning(CardDatabaseUpdateLog) << "Unable to locate the card database updater; looked for" + << dir.absoluteFilePath(binaryName); QMessageBox::warning(this, tr("Error"), tr("Unable to run the card database updater: ") + dir.absoluteFilePath(binaryName)); exitCardDatabaseUpdate(); @@ -1177,13 +1207,24 @@ void MainWindow::createCardUpdateProcess(bool background) return; } + cardUpdateOutputBuffer.clear(); + cardUpdateErrorOutput.clear(); + cardUpdateErrorPartial.clear(); + cardUpdateLoggedStage = CardUpdateStage::Unknown; + cardUpdateProgressLogTimer.start(); + + qCInfo(CardDatabaseUpdateLog) << "Starting the card database updater" << updaterCmd << "background:" << background; + cardUpdateStatusBar->updateStarted(); + if (!background) { cardUpdateProcess->start(updaterCmd, QStringList()); } else { - cardUpdateOutputBuffer.clear(); - connect(cardUpdateProcess, &QProcess::readyReadStandardOutput, this, &MainWindow::cardUpdateProgressOutput); cardUpdateProcess->start(updaterCmd, QStringList("-b")); statusBar()->showMessage(tr("Card database update running.")); + if (trayIcon && SettingsCache::instance().updates().getCardDatabaseUpdateTrayNotification()) { + trayIcon->showMessage(tr("Card database update started"), + tr("Cockatrice is updating the card database in the background.")); + } } } @@ -1198,24 +1239,43 @@ void MainWindow::cardUpdateProgressOutput() if (newline < 0) { break; } - const QByteArray line = cardUpdateOutputBuffer.left(newline).trimmed(); + const QByteArray line = cardUpdateOutputBuffer.left(newline); cardUpdateOutputBuffer.remove(0, newline + 1); - // Protocol emitted by `oracle -b`: "PROGRESS " - if (!line.startsWith("PROGRESS ")) { + // Protocol emitted by `oracle`: "PROGRESS " + const std::optional progress = CardUpdateProgress::fromProtocolLine(line); + if (!progress.has_value()) { continue; } - const QList parts = line.split(' '); - if (parts.size() != 4) { - continue; + // Log stage changes and, while a stage runs, one line per second at most, so the + // debug log shows liveness without flooding it. + if (progress->stage != cardUpdateLoggedStage || cardUpdateProgressLogTimer.elapsed() >= 1000) { + qCDebug(CardDatabaseUpdateLog) + << "Card database update" << progress->stageToken() << progress->done << "/" << progress->total; + cardUpdateLoggedStage = progress->stage; + cardUpdateProgressLogTimer.restart(); } - bool doneOk = false; - bool totalOk = false; - const qint64 done = parts.at(2).toLongLong(&doneOk); - const qint64 total = parts.at(3).toLongLong(&totalOk); - if (!doneOk || !totalOk || done < 0 || total < 0) { - continue; + emit cardDatabaseUpdateProgress(progress.value()); + } +} + +void MainWindow::cardUpdateStandardError() +{ + if (!cardUpdateProcess) { + return; + } + const QByteArray chunk = cardUpdateProcess->readAllStandardError(); + if (chunk.isEmpty()) { + return; + } + cardUpdateErrorOutput.append(chunk); + cardUpdateErrorPartial.append(chunk); + int newline; + while ((newline = cardUpdateErrorPartial.indexOf('\n')) >= 0) { + const QByteArray line = cardUpdateErrorPartial.left(newline).trimmed(); + cardUpdateErrorPartial.remove(0, newline + 1); + if (!line.isEmpty()) { + qCWarning(CardDatabaseUpdateLog) << "Card database updater:" << line; } - emit cardDatabaseUpdateProgress(QString::fromLatin1(parts.at(1)), done, total); } } @@ -1240,7 +1300,6 @@ void MainWindow::cardUpdateError(QProcess::ProcessError err) break; case QProcess::Crashed: error = tr("The process crashed some time after starting successfully."); - error += "\n\nError output:\n" + cardUpdateProcess->readAllStandardError(); break; case QProcess::Timedout: error = tr("Timed out. The process took too long to respond. The last waitFor...() function timed out."); @@ -1259,6 +1318,12 @@ void MainWindow::cardUpdateError(QProcess::ProcessError err) break; } + if (!cardUpdateErrorOutput.isEmpty()) { + error += "\n\n" + tr("Error output:") + "\n" + QString::fromUtf8(cardUpdateErrorOutput); + cardUpdateErrorOutput.clear(); + } + + qCWarning(CardDatabaseUpdateLog) << "The card database updater exited with an error:" << error; exitCardDatabaseUpdate(); QMessageBox::warning(this, tr("Error"), tr("The card database updater exited with an error:\n%1").arg(error)); emit cardDatabaseUpdateFinished(false); @@ -1266,16 +1331,56 @@ void MainWindow::cardUpdateError(QProcess::ProcessError err) void MainWindow::cardUpdateFinished(int exitCode, QProcess::ExitStatus exitStatus) { + if (!cardUpdateProcess) { + return; + } cardUpdateProgressOutput(); // drain any progress lines not yet parsed const bool success = (exitStatus == QProcess::NormalExit) && (exitCode == 0); if (exitStatus == QProcess::NormalExit) { SettingsCache::instance().updates().setLastCardUpdateCheck(QDateTime::currentDateTime().date()); } + qCInfo(CardDatabaseUpdateLog) << "The card database updater finished with exit code" << exitCode << "exit status" + << static_cast(exitStatus) << "success:" << success; exitCardDatabaseUpdate(); + notifyCardUpdateFinishedFromTray(success); emit cardDatabaseUpdateFinished(success); } +bool MainWindow::requestCardUpdateRaise() +{ + const QString serverName = scopedLocalServerName(QStringLiteral("CockatriceOracleRaise")); + QLocalSocket socket; + socket.connectToServer(serverName); + if (!socket.waitForConnected(250)) { + return false; + } + socket.write("RAISE\n"); + const bool acked = socket.waitForBytesWritten(250); + socket.disconnectFromServer(); + return acked; +} + +void MainWindow::announceCardUpdateRunning() +{ + if (SettingsCache::instance().userInterface().getShowStatusBar()) { + statusBar()->showMessage(tr("Card database update running.")); + } else if (trayIcon && SettingsCache::instance().updates().getCardDatabaseUpdateTrayNotification()) { + trayIcon->showMessage(tr("Card database update running"), + tr("Cockatrice is updating the card database in the background.")); + } +} + +void MainWindow::notifyCardUpdateFinishedFromTray(bool success) +{ + if (SettingsCache::instance().userInterface().getShowStatusBar() || !trayIcon || + !SettingsCache::instance().updates().getCardDatabaseUpdateTrayNotification()) { + return; + } + trayIcon->showMessage(tr("Card database update finished"), + success ? tr("The card database is up to date.") : tr("The card database update failed.")); +} + void MainWindow::actCheckServerUpdates() { auto hps = new HandlePublicServers(this); diff --git a/cockatrice/src/interface/window_main.h b/cockatrice/src/interface/window_main.h index 5223332a0..bf68ed72a 100644 --- a/cockatrice/src/interface/window_main.h +++ b/cockatrice/src/interface/window_main.h @@ -27,10 +27,12 @@ #include "../client/lag_monitor.h" #include "../client/network/update/client/release_channel.h" +#include "card_database_update/card_update_progress.h" #include "connection_controller/remote_connection_controller.h" #include #include +#include #include #include #include @@ -52,11 +54,13 @@ inline Q_LOGGING_CATEGORY(WindowMainStartupLog, "window_main.startup"); inline Q_LOGGING_CATEGORY(WindowMainStartupVersionLog, "window_main.startup.version"); inline Q_LOGGING_CATEGORY(WindowMainStartupShortcutsLog, "window_main.startup.shortcuts"); inline Q_LOGGING_CATEGORY(WindowMainStartupAutoconnectLog, "window_main.startup.autoconnect"); +inline Q_LOGGING_CATEGORY(CardDatabaseUpdateLog, "card_database.update"); class DlgViewLog; class GameReplay; class LocalServer; class LatencyStatusWidget; +class CardDatabaseUpdateStatusBar; class RemoteClient; class TabSupervisor; class WndSets; @@ -68,13 +72,13 @@ class MainWindow : public QMainWindow { Q_OBJECT signals: - /** @brief Emitted after the background card-database update subprocess exits. */ + /** @brief Emitted after the card-database update subprocess exits. */ void cardDatabaseUpdateFinished(bool success); - /** @brief Emitted while the background card-database update subprocess runs. - * @p stage is one of "download", "scan" or "import"; @p done/@p total - * are byte counts for the first two stages and set indices for "import". */ - void cardDatabaseUpdateProgress(const QString &stage, qint64 done, qint64 total); + /** @brief Emitted while the card-database update subprocess runs. + * @p progress.done/@p progress.total are byte counts for the first two stages + * and set indices for "import". */ + void cardDatabaseUpdateProgress(const CardUpdateProgress &progress); public slots: void actCheckCardUpdates(); @@ -106,6 +110,7 @@ private slots: void cardUpdateError(QProcess::ProcessError err); void cardUpdateFinished(int exitCode, QProcess::ExitStatus exitStatus); void cardUpdateProgressOutput(); + void cardUpdateStandardError(); void refreshShortcuts(); void cardDatabaseLoadingFailed(); void cardDatabaseNewSetsFound(int numUnknownSets, QStringList unknownSetsNames); @@ -150,6 +155,15 @@ private: } void createCardUpdateProcess(bool background = false); void exitCardDatabaseUpdate(); + /** + * @brief Tries to bring the open card database updater window to the front. + * @return true when the updater acknowledged the request + */ + bool requestCardUpdateRaise(); + /** @brief Tells the user an update is running without blocking, honoring a hidden status bar. */ + void announceCardUpdateRunning(); + /** @brief Posts a tray notification when the status bar cannot show progress. */ + void notifyCardUpdateFinishedFromTray(bool success); void startLocalGame(const LocalGameOptions &options); @@ -176,6 +190,11 @@ private: bool firstRunWizardActive = false; QProcess *cardUpdateProcess; QByteArray cardUpdateOutputBuffer; + QByteArray cardUpdateErrorOutput; ///< diagnostic output collected from the updater's stderr + QByteArray cardUpdateErrorPartial; ///< incomplete trailing stderr line, kept for line-based logging + CardUpdateStage cardUpdateLoggedStage = CardUpdateStage::Unknown; ///< stage of the last logged progress update + QElapsedTimer cardUpdateProgressLogTimer; ///< throttles progress logging to the running stage + CardDatabaseUpdateStatusBar *cardUpdateStatusBar = nullptr; ///< status bar widget tracking the card database update DlgViewLog *logviewDialog; GameReplay *replay; DlgTipOfTheDay *tip; diff --git a/cockatrice/src/single_instance_manager.cpp b/cockatrice/src/single_instance_manager.cpp index 89fc6b578..08294d72c 100644 --- a/cockatrice/src/single_instance_manager.cpp +++ b/cockatrice/src/single_instance_manager.cpp @@ -2,15 +2,14 @@ #include #include -#include #include #include #include #include #include #include -#include #include +#include namespace { @@ -26,17 +25,9 @@ SingleInstanceManager::SingleInstanceManager(QObject *parent) : QObject(parent) bool SingleInstanceManager::tryRun(const QStringList &filesToSend) { - // Scope the socket name to the current user. On Linux the default abstract - // namespace is system-wide, so a plain name would let one user's instance + // Scope the socket name to the current user so one user's instance cannot // hijack another user's session. - QString userName = qEnvironmentVariable("USER"); - if (userName.isEmpty()) { - userName = qEnvironmentVariable("USERNAME"); - } - if (userName.isEmpty()) { - userName = QDir::home().dirName(); - } - serverName = QStringLiteral("CockatriceSingleInstance-%1").arg(userName); + serverName = scopedLocalServerName(QStringLiteral("CockatriceSingleInstance")); // Hand off to an already-running primary instance if one exists. Never steal // the socket of a busy primary: it is alive and will act on the payload. diff --git a/doc/doxygen/extra-pages/user_documentation/troubleshooting/enabling_debug_logs.md b/doc/doxygen/extra-pages/user_documentation/troubleshooting/enabling_debug_logs.md index 7e4196a50..27c4272f5 100644 --- a/doc/doxygen/extra-pages/user_documentation/troubleshooting/enabling_debug_logs.md +++ b/doc/doxygen/extra-pages/user_documentation/troubleshooting/enabling_debug_logs.md @@ -110,6 +110,7 @@ suffix, e.g. `card_picture_loader.*`, to include all sub categories). | ------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ | | Card picture loading (URLs, local file hits/misses, downloads, redirects) | `card_picture_loader.*` | | Card database loading and parsing | `card_database`, `card_database.loading`, `card_database.loading.success_or_failure`, `cockatrice_xml.*` | +| Card database update (running Oracle, progress, exit status, errors) | `card_database.update` | | Card, set, and deck information | `card_info`, `card_list`, `deck_loader` | | Startup sequence and update checks | `window_main.startup.*`, `release_channel`, `spoiler_background_updater` | | User interface and themes | `theme_manager`, `sound_engine`, `flow_layout`, `flow_widget.*`, `pixel_map_generator`, `card_info_picture_widget` | @@ -128,6 +129,7 @@ For example, to investigate why a card database update seems to fail, enable the card_database = true card_database.loading = true card_database.loading.success_or_failure = true +card_database.update = true cockatrice_xml.* = true ``` diff --git a/libcockatrice_settings/libcockatrice/settings/updates_settings.cpp b/libcockatrice_settings/libcockatrice/settings/updates_settings.cpp index f1d638a99..9ea22ed7c 100644 --- a/libcockatrice_settings/libcockatrice/settings/updates_settings.cpp +++ b/libcockatrice_settings/libcockatrice/settings/updates_settings.cpp @@ -60,6 +60,11 @@ bool UpdatesSettings::getNotifyAboutNewVersion() const return getValue("newVersionNotification", QString(), QString(), true).toBool(); } +bool UpdatesSettings::getCardDatabaseUpdateTrayNotification() const +{ + return getValue("cardDatabaseUpdateTrayNotification", QString(), QString(), true).toBool(); +} + int UpdatesSettings::getUpdateReleaseChannelIndex() const { return getValue("updateReleaseChannel", QString(), QString(), 0).toInt(); @@ -105,6 +110,11 @@ void UpdatesSettings::setNotifyAboutNewVersion(bool _notifyaboutnewversion) setValue(_notifyaboutnewversion, "newVersionNotification"); } +void UpdatesSettings::setCardDatabaseUpdateTrayNotification(bool value) +{ + setValue(value, "cardDatabaseUpdateTrayNotification"); +} + void UpdatesSettings::setUpdateReleaseChannelIndex(int value) { setValue(value, "updateReleaseChannel"); diff --git a/libcockatrice_settings/libcockatrice/settings/updates_settings.h b/libcockatrice_settings/libcockatrice/settings/updates_settings.h index 76bb07e86..490dca14e 100644 --- a/libcockatrice_settings/libcockatrice/settings/updates_settings.h +++ b/libcockatrice_settings/libcockatrice/settings/updates_settings.h @@ -25,6 +25,7 @@ public: [[nodiscard]] bool getAlwaysEnableNewSets() const override; [[nodiscard]] bool getNotifyAboutUpdates() const override; [[nodiscard]] bool getNotifyAboutNewVersion() const override; + [[nodiscard]] bool getCardDatabaseUpdateTrayNotification() const; [[nodiscard]] int getUpdateReleaseChannelIndex() const override; void setCheckUpdatesOnStartup(bool value); @@ -35,6 +36,7 @@ public: void setAlwaysEnableNewSets(bool value); void setNotifyAboutUpdates(bool _notifyaboutupdate); void setNotifyAboutNewVersion(bool _notifyaboutnewversion); + void setCardDatabaseUpdateTrayNotification(bool value); void setUpdateReleaseChannelIndex(int value); public: diff --git a/libcockatrice_utility/CMakeLists.txt b/libcockatrice_utility/CMakeLists.txt index 41f1bfa0f..d986214d7 100644 --- a/libcockatrice_utility/CMakeLists.txt +++ b/libcockatrice_utility/CMakeLists.txt @@ -22,6 +22,7 @@ set(UTILITY_HEADERS libcockatrice/utility/cryptoutil.h libcockatrice/utility/expression.h libcockatrice/utility/levenshtein.h + libcockatrice/utility/local_server_name.h libcockatrice/utility/macros.h libcockatrice/utility/passwordhasher.h libcockatrice/utility/playmat_params.h diff --git a/libcockatrice_utility/libcockatrice/utility/local_server_name.h b/libcockatrice_utility/libcockatrice/utility/local_server_name.h new file mode 100644 index 000000000..a5797fba1 --- /dev/null +++ b/libcockatrice_utility/libcockatrice/utility/local_server_name.h @@ -0,0 +1,28 @@ +#ifndef COCKATRICE_LOCAL_SERVER_NAME_H +#define COCKATRICE_LOCAL_SERVER_NAME_H + +#include +#include +#include + +/** + * @brief Builds a QLocalServer/QLocalSocket name scoped to the current user. + * + * On Linux the default local socket namespace is system-wide, so an unscoped name + * would let one user's process talk to — or hijack — another user's session. + * @param prefix application specific socket name prefix + * @return the scoped socket name + */ +inline QString scopedLocalServerName(const QString &prefix) +{ + QString userName = qEnvironmentVariable("USER"); + if (userName.isEmpty()) { + userName = qEnvironmentVariable("USERNAME"); + } + if (userName.isEmpty()) { + userName = QDir::home().dirName(); + } + return prefix + QLatin1Char('-') + userName; +} + +#endif // COCKATRICE_LOCAL_SERVER_NAME_H diff --git a/oracle/src/oracleimporter.h b/oracle/src/oracleimporter.h index 4057144c1..d872e184e 100644 --- a/oracle/src/oracleimporter.h +++ b/oracle/src/oracleimporter.h @@ -185,9 +185,10 @@ private: /** * Whether readSetsFromByteArray() should report scan progress via - * dataReadProgress. A background run routes that signal to stdout (for the - * hosting Cockatrice client to parse); the flag exists to skip the scanner - * instrumentation entirely when no consumer needs it. + * dataReadProgress. The wizard streams that signal to stdout (for the + * hosting Cockatrice client to parse) in both interactive and background + * runs; the flag exists to skip the scanner instrumentation entirely when + * no consumer needs it. */ bool progressReporting = true; @@ -255,9 +256,9 @@ public: * @brief Controls whether readSetsFromByteArray() instruments the raw scan. * * When enabled (the default) the raw scanner reports progress via - * dataReadProgress(), which an interactive wizard shows on its progress bar - * and a background run routes to stdout for the hosting client. Switch it - * off only when nothing will consume scan progress. + * dataReadProgress(), which the wizard streams to stdout (so the hosting + * Cockatrice client can show it) and also displays on its own progress bar. + * Switch it off only when nothing will consume scan progress. */ void setProgressReporting(bool enabled) { diff --git a/oracle/src/oraclewizard.cpp b/oracle/src/oraclewizard.cpp index b92feae8f..05f08ce64 100644 --- a/oracle/src/oraclewizard.cpp +++ b/oracle/src/oraclewizard.cpp @@ -14,13 +14,17 @@ #include #include #include +#include +#include #include #include #include +#include #include #include #include #include +#include #include class QWidget; @@ -71,6 +75,7 @@ OracleWizard::OracleWizard(QWidget *parent) : QWizard(parent) } retranslateUi(); + startRaiseServer(); } /** @@ -139,6 +144,54 @@ void OracleWizard::runInBackground() currentPage()->initializePage(); } +void OracleWizard::startRaiseServer() +{ + // Scope the socket name to the current user, mirroring the hosting client. + raiseServer = new QLocalServer(this); + connect(raiseServer, &QLocalServer::newConnection, this, &OracleWizard::handleRaiseRequest); + const QString serverName = scopedLocalServerName(QStringLiteral("CockatriceOracleRaise")); + if (raiseServer->listen(serverName)) { + return; + } + // A stale socket left behind by a crashed run holds the name: take it back. + QLocalServer::removeServer(serverName); + if (!raiseServer->listen(serverName)) { + qWarning() << "Oracle: could not listen for raise requests on" << serverName; + delete raiseServer; + raiseServer = nullptr; + } +} + +void OracleWizard::handleRaiseRequest() +{ + while (raiseServer && raiseServer->hasPendingConnections()) { + QLocalSocket *socket = raiseServer->nextPendingConnection(); + connect(socket, &QLocalSocket::readyRead, this, [this, socket]() { + socket->readAll(); + socket->deleteLater(); + raiseWizard(); + }); + connect(socket, &QLocalSocket::disconnected, socket, &QLocalSocket::deleteLater); + } + raiseWizard(); +} + +void OracleWizard::raiseWizard() +{ + // An ongoing background run is hidden; the user asked to see it, so promote it to a window. + if (backgroundMode && !isVisible()) { + show(); + } + if (isMinimized()) { + showNormal(); + } + raise(); + activateWindow(); + if (windowHandle()) { + windowHandle()->requestActivate(); + } +} + void OracleWizard::enableButtons() { button(QWizard::NextButton)->setDisabled(false); diff --git a/oracle/src/oraclewizard.h b/oracle/src/oraclewizard.h index 2dfcc2cdc..ea652bdc5 100644 --- a/oracle/src/oraclewizard.h +++ b/oracle/src/oraclewizard.h @@ -9,6 +9,7 @@ class QNetworkAccessManager; class OracleImporter; +class QLocalServer; class QSettings; class QWidget; @@ -60,6 +61,7 @@ public: private slots: void updateLanguage(); + void handleRaiseRequest(); private: QByteArray tokensData; @@ -67,6 +69,13 @@ private: QString cardSourceVersion; void migrateOracleSettings(); + /** + * @brief Starts the local socket the hosting Cockatrice client uses to bring this wizard forward. + */ + void startRaiseServer(); + /** @brief Shows, raises and activates the wizard window. */ + void raiseWizard(); + QLocalServer *raiseServer = nullptr; ///< listens for raise requests from the hosting client protected: void changeEvent(QEvent *event) override; diff --git a/oracle/src/pages.cpp b/oracle/src/pages.cpp index 43c863495..8c286fb46 100644 --- a/oracle/src/pages.cpp +++ b/oracle/src/pages.cpp @@ -82,13 +82,12 @@ class QWidget; #endif /** - * @brief Emits one machine-readable background-run progress line to stdout. + * @brief Emits one machine-readable progress line to stdout. * - * Used only in background mode, so the hosting Cockatrice client can parse these - * lines to drive a determinate progress bar. stderr stays reserved for - * human-readable log output. + * The hosting Cockatrice client parses these lines to drive a determinate + * progress bar. stderr stays reserved for human-readable log output. */ -static void emitBackgroundProgress(const char *stage, qint64 done, qint64 total) +static void emitProgress(const char *stage, qint64 done, qint64 total) { QTextStream out(stdout); out << "PROGRESS " << stage << ' ' << done << ' ' << total << '\n'; @@ -473,9 +472,7 @@ void LoadSetsPage::downloadSetsFile(const QUrl &url) void LoadSetsPage::actDownloadProgressSetsFile(qint64 received, qint64 total) { - if (wizard()->backgroundMode) { - emitBackgroundProgress("download", received, total); - } + emitProgress("download", received, total); if (total > 0) { progressBar->setMaximum(static_cast(total)); progressBar->setValue(static_cast(received)); @@ -534,7 +531,7 @@ void LoadSetsPage::updateParsingProgress(int bytesRead, int totalBytes) void LoadSetsPage::scanProgressToStdout(int bytesRead, int totalBytes) { - emitBackgroundProgress("scan", bytesRead, totalBytes); + emitProgress("scan", bytesRead, totalBytes); } void LoadSetsPage::beginLoadSets(bool compressedFile) @@ -841,18 +838,18 @@ void SaveSetsPage::updateTotalProgress(int cardsImported, int setIndex, const QS const int cardCount = wizard()->importer->getCardList().size(); if (wizard()->backgroundMode) { qInfo() << tr("Import finished: %1 cards.").arg(cardCount); - emitBackgroundProgress("import", totalSets, totalSets); } else { messageLog->append("" + tr("Import finished: %1 cards.").arg(cardCount) + ""); } + emitProgress("import", totalSets, totalSets); } else { progressBar->setValue(setIndex); if (wizard()->backgroundMode) { qInfo() << tr("%1: %2 cards imported").arg(setName).arg(cardsImported); - emitBackgroundProgress("import", setIndex, totalSets); } else { messageLog->append(tr("%1: %2 cards imported").arg(setName).arg(cardsImported)); } + emitProgress("import", setIndex, totalSets); } messageLog->verticalScrollBar()->setValue(messageLog->verticalScrollBar()->maximum()); diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index b51d10560..2c288c6ce 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -22,6 +22,7 @@ add_test(NAME report_categories_test COMMAND report_categories_test) add_test(NAME lag_monitor_test COMMAND lag_monitor_test) add_test(NAME latency_tracker_test COMMAND latency_tracker_test) add_test(NAME metrics_registry_test COMMAND metrics_registry_test) +add_test(NAME card_update_progress_test COMMAND card_update_progress_test) add_test(NAME loader_local_matching_test COMMAND loader_local_matching_test) add_test(NAME deck_hash_performance_test COMMAND deck_hash_performance_test) @@ -75,6 +76,11 @@ add_executable(lag_monitor_test ${CMAKE_SOURCE_DIR}/cockatrice/src/client/lag_mo target_include_directories(lag_monitor_test PRIVATE ${CMAKE_SOURCE_DIR}/cockatrice/src) add_executable(latency_tracker_test latency_tracker_test.cpp) add_executable(metrics_registry_test ../servatrice/src/metrics_registry.cpp metrics_registry_test.cpp) +add_executable( + card_update_progress_test ${CMAKE_SOURCE_DIR}/cockatrice/src/interface/card_database_update/card_update_progress.cpp + card_update_progress_test.cpp +) +target_include_directories(card_update_progress_test PRIVATE ${CMAKE_SOURCE_DIR}/cockatrice/src) add_executable( loader_local_matching_test ${CMAKE_SOURCE_DIR}/cockatrice/src/interface/card_picture_loader/card_picture_loader_local.cpp @@ -94,6 +100,7 @@ if(WITH_CLIENT) single_instance_manager_test.cpp ) target_include_directories(single_instance_manager_test PRIVATE ${CMAKE_SOURCE_DIR}/cockatrice/src) + target_include_directories(single_instance_manager_test PRIVATE ${CMAKE_SOURCE_DIR}/libcockatrice_utility) add_test(NAME single_instance_manager_test COMMAND single_instance_manager_test) endif() @@ -143,6 +150,7 @@ if(NOT GTEST_FOUND) add_dependencies(lag_monitor_test gtest) add_dependencies(latency_tracker_test gtest) add_dependencies(metrics_registry_test gtest) + add_dependencies(card_update_progress_test gtest) add_dependencies(loader_local_matching_test gtest) add_dependencies(single_instance_manager_test gtest) endif() @@ -201,6 +209,7 @@ target_link_libraries( ) target_include_directories(metrics_registry_test PRIVATE ${CMAKE_SOURCE_DIR}/servatrice/src) target_link_libraries(metrics_registry_test ${TEST_QT_MODULES} Threads::Threads ${GTEST_BOTH_LIBRARIES}) +target_link_libraries(card_update_progress_test Threads::Threads ${GTEST_BOTH_LIBRARIES} ${TEST_QT_MODULES}) target_link_libraries( loader_local_matching_test libcockatrice_settings Threads::Threads ${GTEST_BOTH_LIBRARIES} ${TEST_QT_MODULES} ) diff --git a/tests/card_update_progress_test.cpp b/tests/card_update_progress_test.cpp new file mode 100644 index 000000000..849cf623c --- /dev/null +++ b/tests/card_update_progress_test.cpp @@ -0,0 +1,93 @@ +#include "interface/card_database_update/card_update_progress.h" + +#include +#include +#include + +namespace +{ +std::optional parseLine(const QByteArray &line) +{ + return CardUpdateProgress::fromProtocolLine(line); +} +} // namespace + +TEST(CardUpdateProgressTest, ParsesAValidDownloadLine) +{ + const std::optional progress = parseLine("PROGRESS download 42 100"); + ASSERT_TRUE(progress.has_value()); + EXPECT_EQ(CardUpdateStage::Download, progress->stage); + EXPECT_EQ(42, progress->done); + EXPECT_EQ(100, progress->total); +} + +TEST(CardUpdateProgressTest, ParsesTrailingNewline) +{ + const std::optional progress = parseLine("PROGRESS scan 7 99\n"); + ASSERT_TRUE(progress.has_value()); + EXPECT_EQ(CardUpdateStage::Scan, progress->stage); + EXPECT_EQ(7, progress->done); + EXPECT_EQ(99, progress->total); +} + +TEST(CardUpdateProgressTest, ParsesWithSurroundingWhitespace) +{ + const std::optional progress = parseLine(QByteArray(" PROGRESS import 3 10 ")); + ASSERT_TRUE(progress.has_value()); + EXPECT_EQ(CardUpdateStage::Import, progress->stage); + EXPECT_EQ(3, progress->done); + EXPECT_EQ(10, progress->total); +} + +TEST(CardUpdateProgressTest, AcceptsZeroProgress) +{ + const std::optional progress = parseLine("PROGRESS download 0 0"); + ASSERT_TRUE(progress.has_value()); + EXPECT_EQ(0, progress->done); + EXPECT_EQ(0, progress->total); +} + +TEST(CardUpdateProgressTest, RejectsLinesWithoutProgressPrefix) +{ + EXPECT_FALSE(parseLine("download 42 100").has_value()); + EXPECT_FALSE(parseLine("PROGRESSdownload 42 100").has_value()); + EXPECT_FALSE(parseLine("").has_value()); +} + +TEST(CardUpdateProgressTest, RejectsMalformedLines) +{ + EXPECT_FALSE(parseLine("PROGRESS").has_value()); + EXPECT_FALSE(parseLine("PROGRESS download").has_value()); + EXPECT_FALSE(parseLine("PROGRESS download 42 100 extra").has_value()); + EXPECT_FALSE(parseLine("PROGRESS download 42").has_value()); + EXPECT_FALSE(parseLine("PROGRESS download notANumber 100").has_value()); +} + +TEST(CardUpdateProgressTest, RejectsNegativeValues) +{ + EXPECT_FALSE(parseLine("PROGRESS download -1 100").has_value()); + EXPECT_FALSE(parseLine("PROGRESS download 42 -100").has_value()); +} + +TEST(CardUpdateProgressTest, AcceptsUnknownStagesSchemalessly) +{ + const std::optional progress = parseLine("PROGRESS spoilers 1 2"); + ASSERT_TRUE(progress.has_value()); + EXPECT_EQ(CardUpdateStage::Unknown, progress->stage); + EXPECT_EQ(1, progress->done); + EXPECT_EQ(2, progress->total); +} + +TEST(CardUpdateProgressTest, StageTokensRoundTrip) +{ + EXPECT_EQ("download", CardUpdateProgress{CardUpdateStage::Download}.stageToken()); + EXPECT_EQ("scan", CardUpdateProgress{CardUpdateStage::Scan}.stageToken()); + EXPECT_EQ("import", CardUpdateProgress{CardUpdateStage::Import}.stageToken()); + EXPECT_EQ("unknown", CardUpdateProgress{CardUpdateStage::Unknown}.stageToken()); +} + +int main(int argc, char **argv) +{ + ::testing::InitGoogleTest(&argc, argv); + return RUN_ALL_TESTS(); +} \ No newline at end of file diff --git a/tests/settings/settings_defaults_test.cpp b/tests/settings/settings_defaults_test.cpp index 03de21e8a..65e41af76 100644 --- a/tests/settings/settings_defaults_test.cpp +++ b/tests/settings/settings_defaults_test.cpp @@ -166,6 +166,12 @@ TEST_F(SettingsDefaultsTest, Updates_NotifyAboutNewVersion_Default) ASSERT_EQ(s.getNotifyAboutNewVersion(), true); } +TEST_F(SettingsDefaultsTest, Updates_CardDatabaseUpdateTrayNotification_Default) +{ + UpdatesSettings s(settingsPath, nullptr); + ASSERT_EQ(s.getCardDatabaseUpdateTrayNotification(), true); +} + TEST_F(SettingsDefaultsTest, Updates_UpdateReleaseChannelIndex_Default) { UpdatesSettings s(settingsPath, nullptr); From bb61617d425c61784e474b6c4c4f52094bfc2f2a Mon Sep 17 00:00:00 2001 From: BruebachL <44814898+BruebachL@users.noreply.github.com> Date: Fri, 9 Oct 2026 11:35:35 +0200 Subject: [PATCH 19/28] [Versioning] Bump version number for 3.1.1 beta release. (#7464) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Lukas Brübach --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4923f9999..bb1fa6174 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -86,7 +86,7 @@ endif() # A project name is needed for CPack # Version can be overriden by git tags, see cmake/getversion.cmake -project("Cockatrice" VERSION 3.1.0) +project("Cockatrice" VERSION 3.1.1) # Set release name if not provided via env/cmake var if(NOT DEFINED GIT_TAG_RELEASENAME) From 1e1f79db0dc157c7498222ca45c7384084f95b14 Mon Sep 17 00:00:00 2001 From: BruebachL <44814898+BruebachL@users.noreply.github.com> Date: Fri, 9 Oct 2026 20:09:34 +0200 Subject: [PATCH 20/28] [Windows] Wait for uninstaller, rework .dll bundling, add logging (#7407) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [Windows] Purge every runtime DLL on upgrade instead of a named few A user updating from 3.0.2 to 3.1 got "abseil_dll.dll is either not designed to run on Windows or it contains an error" and could not start the client. abseil_dll.dll comes from vcpkg, not Qt. It rides into the install directory on the "*.dll" glob in cockatrice/CMakeLists.txt, alongside libprotobuf.dll, liblzma.dll and z.dll, and none of those were named in the upgrade purge. So on an upgrade the old uninstaller's RMDir /r skipped whichever of them was locked, the purge did not look for them, HasStaleRuntimeFiles did not look for them either, and the installer reported success - having written the new executables next to the previous version's protobuf runtime. Windows then refused to load it. The mask list was also already wrong where it existed: it matches zlib*.dll while vcpkg ships z.dll. Delete every top-level DLL instead of naming library families. The payload is written after the purge, so a DLL the new build still needs is put straight back; what the purge has to guarantee is only that nothing from the previous build is left to be loaded next to the new executables. Enumerated families cannot do that - every transitive dependency that arrives between two releases is one more name to forget, and the three previous rounds of this work each reasoned about Qt because that is what the reports named at the time. HasStaleRuntimeFiles collapses to the matching *.dll probe, so the abort fires on any survivor rather than only on the families it was told about. IsExistingCockatriceInstall stays on Qt6*.dll on purpose: it decides whether a directory is ours at all, and a folder that merely holds some DLLs of its own must not be purged. Qt6*.dll is enough even when only the protobuf runtime survived, because the whole Qt set is mapped by the same process that maps abseil_dll.dll and so is locked or free with it. * [CI] Assert the whole Windows runtime, not just the Qt modules required-qt-runtime.txt listed only the Qt modules COCKATRICE_QT_MODULES names, so it could not see any other runtime go missing. The three previous rounds of installer work all reasoned about Qt*.dll because that was all the build knew how to ask about, and the one runtime that actually broke the reported upgrade - abseil_dll.dll - was outside the set entirely. - Rename it to required-runtime.txt and take the third party runtime names from the vcpkg bin directory the app-local copies come from, so a dependency bump cannot leave the list behind and a versioned name such as libcrypto-3-x64.dll becoming libcrypto-4-x64.dll cannot either - Union the three applications' module lists rather than the client's alone: Servatrice contributes Qt6Sql.dll, servatrice.exe is installed next to cockatrice.exe and cannot start without it, and nothing asserted it - Add Core to the client's module list. It is the one module nothing can do without and it only ever arrived transitively, so Qt6Core.dll was shipped and never checked - the new unknown-runtime check flagged it on the first run - Fail the build on a missing runtime, as before, and warn on a runtime nothing requires. Only the test framework is a hard failure there: "no shipped executable links gtest" is a fact, whereas a runtime missing from the manifest may be one the manifest failed to derive, and a check that has never run before should not be able to block a release The warning is meant to be read. Qt6::Quick pulls in Qml, QmlModels, QmlWorkerScript, QuickBasic, QuickTemplates2 and OpenGL transitively and none are named, so the manifest is known to be a partial list; the first Windows run reports the real one, which is evidence rather than a guess about what Qt links. Fold that back in when it lands. * [CI] Stop deriving the required runtime from the vcpkg bin directory The first Windows run of this check failed, and the seven files it named as missing are not runtime at all: gmock.dll, gmock_main.dll, legacy.dll, libprotobuf-lite.dll, libprotoc.dll and pthreadVC3/VCE3/VSE3.dll. None of them is linked by any shipped executable, so a correct package leaves them out. vcpkg_installed/x64-windows/bin is everything vcpkg installed, not everything the applications import. The protoc compiler, the GoogleMock library, a port tool and three CMake FindThreads probes sit beside the genuine runtimes, and a directory listing cannot tell them apart. Asserting it fails the build over a package that is right - which is what happened, and it is the same mistake as the one that produced this bug report: reasoning about a list of names instead of about the build. The real source of truth is the three executables' import tables, which fixup_bundle already walks to decide what to copy. Until CMake can read that result, the Qt half is what can be derived honestly, from the same module lists the targets are built against. So assert that, and report the rest rather than require it: - Drop the vcpkg bin glob, its gtest filter and the vcpkg-runtime-known marker. All three existed only to support the glob. - Report top level DLLs the manifest does not name without failing. These are expected: protobuf, Abseil, OpenSSL, liblzma, ffmpeg and the Qt debug DLLs all arrive on the build output glob because nothing in the build declares them by name. The list is a report of what the package carries, not a verdict, and it is how the missing Qt6Qml/Quick/OpenGL entries above became visible. - Report a leaked gtest or gmock instead of failing on it. "No shipped executable links this" is a fact, but a check that has never passed on a real package has not earned the right to block a release, and the first run of an enforcing version is exactly when its own wrong assumptions show up. - Skip DLLs under a subdirectory, which are platform plugins rather than imported runtimes, and the NSIS plugins, which extract to $PLUGINSDIR and so reach the comparison looking like payload. Verified against the paths 7-Zip actually listed in the failing package: the check passes on it, still fails when Qt6Sql.dll or the qwindows plugin is removed, and still reports gtest.dll and gmock.dll if either is added. The purge in cmake/NSIS.template.in covers the runtimes the manifest does not name. That fix is independent of any list and is what makes the reported update failure go away. * [Installer] Fix the /R upgrade aborting before it does anything WaitForLauncherToExit read the wrong registers. System.dll writes its .rN outputs to $N and its .RN outputs to $RN, but the wait used p.r0/i.r1 while testing $R1. $R1 therefore stayed empty, and the "did not exit" test compared "" with "0" - true every time. Every in-app update passes /PID=, so every upgrade hit AbortInstall before writing anything; because /R also sets silent, the override just vanished with exit code 1 and no message. The bug came in with #7372 and is inherited by this branch, not introduced by it. Use the uppercase .RN forms, and treat a null or plugin-failed OpenProcess as the launcher already being gone - the case the old ${Errors} check never caught, because System.dll does not set the NSIS error flag from the callee's return value. Also restore the abort dialog for the in-app updater: AbortInstall and the two inline warnings gated their message box on ${IfNot} ${Silent}, which is false for a /R upgrade, so any abort on that path was equally silent. The unattended case is a /S install without /R, not /R, so show the box for $ReinstallMode = 1 or an interactive install. The stale-runtime abort now goes through AbortInstall so that decision lives in one place. * [Installer] Log every upgrade step to %TEMP%\Cockatrice-installer.log * [Installer] Actually append to the upgrade log (FileSeek END) * [Installer] Wait for the old uninstaller before replacing files An NSIS uninstaller copies itself to %TEMP% and runs from there so that it can delete its own directory; the process the installer started exits immediately. A plain ExecWait therefore returns before the uninstall has run, and the temp copy's "RMDir /r $INSTDIR" then executes concurrently with the install section, deleting files the payload just wrote. That is why an upgrade could leave Qt6Core/Gui/Multimedia and the other alphabetically-first DLLs missing while the tail of the directory survived: a recursive delete marching from the front while the final listing ran. Pass _?=$INSTDIR to the old uninstaller so it runs in place and ExecWait actually blocks until the uninstall completes. _?= must be the last argument and unquoted, even for paths with spaces. Applied to both the silent /R path (AutoUninstallIfNeeded) and the interactive path (componentsPagePre). * [Installer] Tighten the wording of the upgrade comments Drop the dash-heavy phrasing from the comments this PR adds, and say plainly in the _?= comment that ExecWait returns before the old uninstaller has run and the temp copy then deletes the payload the section is still writing. --------- Co-authored-by: Lukas Brübach --- .ci/compile.sh | 93 +++++++++++-- CMakeLists.txt | 56 +++++--- cmake/FindQtRuntime.cmake | 7 + cmake/NSIS.template.in | 265 +++++++++++++++++++++++++++----------- cockatrice/CMakeLists.txt | 2 +- 5 files changed, 316 insertions(+), 107 deletions(-) diff --git a/.ci/compile.sh b/.ci/compile.sh index 72a017f33..823a31898 100755 --- a/.ci/compile.sh +++ b/.ci/compile.sh @@ -353,15 +353,21 @@ if [[ $MAKE_PACKAGE ]]; then fi echo "Installer content is clean" - # Fail the build if the installer is missing a Qt runtime the applications - # link against. The DLLs reach the package by globbing every *.dll out of - # the build output directories, so a module the client links statically - # (Qt6Multimedia.dll, Qt6QuickWidgets.dll) can be left out without anything - # else noticing, and the only symptom is a client that refuses to start - # after an update. required-qt-runtime.txt is written by the top level - # CMakeLists.txt from the same module list the targets are built against. - if [[ ! -f required-qt-runtime.txt ]]; then - echo "::error file=$0::required-qt-runtime.txt not found in the build dir, cannot verify the Qt runtime" + # Fail the build if the installer does not carry the runtime the + # applications link against - a file that must be there, or a DLL that must + # not be. The runtime DLLs reach the package by globbing every *.dll out of + # the build output directories, so anything that build produced can ride + # along and nothing else in the build objects to it: a Qt module the client + # links statically (Qt6Multimedia.dll, Qt6QuickWidgets.dll) can be left out, + # and the test framework's gtest.dll can be shipped. Either only surfaces on + # a user's machine after an update has already replaced their install, as + # "The code execution cannot proceed because Qt6Multimedia.dll was not + # found" or "abseil_dll.dll is either not designed to run on Windows or it + # contains an error". required-runtime.txt is written by the top level + # CMakeLists.txt from the same module lists the targets are built against + # plus the vcpkg bin directory the app-local copies come from. + if [[ ! -f required-runtime.txt ]]; then + echo "::error file=$0::required-runtime.txt not found in the build dir, cannot verify the runtime" exit 1 fi # 7-Zip writes CRLF on Windows, so the \r has to come off before any @@ -371,7 +377,7 @@ if [[ $MAKE_PACKAGE ]]; then # being a wildcard; -i because that is how the installed tree behaves - # the uninstaller clears both $INSTDIR\plugins and $INSTDIR\Plugins. # The archive side and the manifest side have to agree on line endings. - # CMake writes required-qt-runtime.txt with the platform's line ending and + # CMake writes required-runtime.txt with the platform's line ending and # 7-Zip writes CRLF on Windows, so a trailing \r survives on $entry and # defeats the whole-line match - every entry then reads as missing even # though the listing holds it verbatim. @@ -380,7 +386,7 @@ if [[ $MAKE_PACKAGE ]]; then installer_paths="$("$seven_zip" l -slt "$package" | tr -d '\r' | sed -n 's/^Path = //p' | sed -e 's|\\|/|g' -e 's|^[$]INSTDIR/||' -e 's|^[$]OUTDIR/||' -e 's|^[$]PLUGINSDIR/||' -e 's|^\./||' -e 's|^/||')" - manifest="$(tr -d '\r' . Used to record the DLL inventory +; before and after the upgrade purge, which is what shows whether Qt6Gui.dll was +; on disk and what (if anything) survived the deletes. +!macro CockLogListing label mask + Push "${label}" + Push "$INSTDIR\${mask}" + Call CockLogListing +!macroend + +Function CockLogListing + Pop $LogMatchPattern + Pop $LogMatchLabel + !insertmacro CockLog "listing [$LogMatchLabel] pattern=$LogMatchPattern" + FindFirst $LogFindHandle $LogFindName "$LogMatchPattern" + ${If} $LogFindHandle == "" + !insertmacro CockLog "listing [$LogMatchLabel] (no matches)" + Return + ${EndIf} + log_listing_loop: + !insertmacro CockLog "listing [$LogMatchLabel] $LogFindName" + ClearErrors + FindNext $LogFindHandle $LogFindName + IfErrors 0 log_listing_loop + FindClose $LogFindHandle +FunctionEnd + Function .onInit +StrCpy $InstallLogPath "$TEMP\Cockatrice-installer.log" +; Start each run from a clean file so the log that gets sent back is the last +; run, not every past run glued together. +FileOpen $LogHandle "$InstallLogPath" w +FileClose $LogHandle +!insertmacro CockLog "==================================================================" +!insertmacro CockLog "installer start: @CPACK_PACKAGE_NAME@ @CPACK_PACKAGE_VERSION@" + ${If} ${NSIS_IS_64_BIT} == 1 #NSIS 64bit ${IfNot} ${RunningX64} MessageBox MB_OK|MB_ICONSTOP "This version of Cockatrice requires a 64-bit Windows system." @@ -158,6 +224,13 @@ ${EndIf} ; Now that $PortableMode reflects reality, commit InstDir into the correct slot Call SetModeDestinationFromInstdir +!insertmacro CockLog "options: InstDir=$InstDir PortableMode=$PortableMode ReinstallMode=$ReinstallMode WaitPid=$WaitPid" +${If} ${Silent} + !insertmacro CockLog "options: running silently" +${Else} + !insertmacro CockLog "options: interactive" +${EndIf} + ; Wait for the process that launched this installer to exit before anything is ; replaced or deleted. It goes first because it is the one check here that needs ; no powershell.exe: on a machine where the process lookup cannot run at all, the @@ -175,12 +248,14 @@ Call SetModeDestinationFromInstdir ; interactive installs the section re-checks after the directory page, when ; $INSTDIR is the directory the user actually picked. ${If} $ReinstallMode = 1 + !insertmacro CockLog "reinstall: waiting for launcher and other instances" Call WaitForLauncherToExit Call EnsureAppsNotRunning ${EndIf} ${If} $ReinstallMode = 1 ${AndIf} $PortableMode = 0 + !insertmacro CockLog "reinstall: auto-uninstalling previous version" Call AutoUninstallIfNeeded ${EndIf} @@ -226,13 +301,22 @@ Function AutoUninstallIfNeeded SetShellVarContext all +; _?=$INSTDIR keeps the old uninstaller running in place. An NSIS uninstaller +; normally copies itself to %TEMP% and runs from there so that it can delete its +; own directory, and the process we started exits at once. ExecWait then returns +; before the uninstall has run, and the temp copy's "RMDir /r $INSTDIR" executes +; while the section below is still writing the new payload. _?= disables the copy +; and makes ExecWait block until the uninstall finishes. It must be the last +; argument and must not be quoted, even when the path contains spaces. +; ; --- 32-bit uninstall --- SetRegView 32 ReadRegStr $R0 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Cockatrice" "QuietUninstallString" +!insertmacro CockLog "uninstall (32-bit): '$R0 _?=$INSTDIR'" StrCmp $R0 "" done32 DetailPrint "Removing previous version (32-bit)..." -ExecWait '$R0' +ExecWait '$R0 _?=$INSTDIR' done32: @@ -241,9 +325,10 @@ ${If} ${RunningX64} SetRegView 64 ReadRegStr $R0 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Cockatrice" "QuietUninstallString" + !insertmacro CockLog "uninstall (64-bit): '$R0 _?=$INSTDIR'" StrCmp $R0 "" done64 DetailPrint "Removing previous version (64-bit)..." - ExecWait '$R0' + ExecWait '$R0 _?=$INSTDIR' done64: ${EndIf} @@ -360,6 +445,7 @@ Function WaitForAppToClose ; usage: set $R1 to the display name (e.g. "cockatrice.exe") and $R2 to the ; base image name (e.g. "cockatrice") Call IsAppRunning + !insertmacro CockLog "guard $R1: state=$R0 (dir=$GuardDir)" ; Only a definite "running" is worth waiting for. "Not running" is done, and ; "could not determine" must not keep the installer waiting on an answer it ; will never get - but it cannot simply be waved through either, see @@ -384,6 +470,7 @@ Function WaitForAppToClose Sleep 500 Call IsAppRunning ${If} $R0 = 0 + !insertmacro CockLog "guard $R1: closed gracefully" DetailPrint "$R1 closed." Return ${EndIf} @@ -402,6 +489,7 @@ Function WaitForAppToClose ; deck, and nothing has been replaced yet, so aborting just defers the ; update and preserves the user's data. ${If} $AllowForceClose = 0 + !insertmacro CockLog "guard $R1: still running after 60s, aborting (no force close)" DetailPrint "$R1 is still running after 60 s; aborting the update so that no data is lost." StrCpy $AbortReason \ "$R1 did not close within 60 seconds, so the installation was aborted to avoid losing unsaved data.$\r$\n$\r$\nPlease close $R1 and run the installer again." @@ -410,11 +498,13 @@ Function WaitForAppToClose ; Oracle and Servatrice are console applications: CloseMainWindow() ; returned false for them and waiting longer cannot help. They hold no ; unsaved user data, so stop them by PID. + !insertmacro CockLog "guard $R1: still running after 60s, force-stopping" DetailPrint "Force-stopping $R1 ..." Call ForceCloseApps Sleep 2000 Call IsAppRunning ${If} $R0 = 0 + !insertmacro CockLog "guard $R1: force-stopped" DetailPrint "$R1 closed." Return ${EndIf} @@ -422,6 +512,7 @@ Function WaitForAppToClose Call HandleUnknownAppState Return ${EndIf} + !insertmacro CockLog "guard $R1: could not be stopped, aborting" DetailPrint "$R1 is still running after 60 s; aborting the update." StrCpy $AbortReason \ "$R1 could not be stopped, so the installation was aborted.$\r$\n$\r$\nPlease close $R1 and run the installer again." @@ -486,8 +577,16 @@ FunctionEnd ; Only the first of those two gets a dialog; the second reports through the log ; and the exit code. Function AbortInstall - ${IfNot} ${Silent} - MessageBox MB_OK|MB_ICONEXCLAMATION "$AbortReason" + !insertmacro CockLog "ABORT: $AbortReason" + !insertmacro CockLog "full installer log: $InstallLogPath" + ; Show a dialog whenever someone is at the keyboard to see it: an interactive + ; install, or the in-app updater's /R upgrade. The /R upgrade is silent, but + ; the client that launched the installer has already quit, so the user is + ; still there. Only a /S install without /R is attended by a package manager + ; and must go straight to the exit code. + ${If} $ReinstallMode = 1 + ${OrIfNot} ${Silent} + MessageBox MB_OK|MB_ICONEXCLAMATION "$AbortReason$\r$\n$\r$\nA detailed installer log was written to:$\r$\n$InstallLogPath" ${EndIf} SetErrorLevel 1 Abort @@ -510,17 +609,33 @@ FunctionEnd ; falls back to the name based guard. Function WaitForLauncherToExit StrCpy $LauncherExited 0 + !insertmacro CockLog "wait-launcher: pid='$WaitPid'" ${If} $WaitPid == "" + !insertmacro CockLog "wait-launcher: no pid given, falling back to name check" Return ${EndIf} ; PROCESS_SYNCHRONIZE is the only access this needs - enough to wait on the ; handle, and the least likely to be refused for a reason that has nothing to ; do with the upgrade. + ; + ; System.dll maps its output registers so that .rN writes $N and .RN writes + ; $RN. The caller reads $R0/$R1, so the uppercase .RN form is required; the + ; original .r0/.r1 wrote $0/$1 and left $R1 empty, which made the "did not + ; exit" test below compare "" against "0" and abort on every /PID= upgrade. ClearErrors - System::Call 'kernel32::OpenProcess(i 0x00100000, i 0, i $WaitPid) p.r0' + System::Call 'kernel32::OpenProcess(i 0x00100000, i 0, i $WaitPid) p.R0' + ; OpenProcess returns a null handle for a process that is already gone. The + ; System plugin does not raise the NSIS error flag from a called function's + ; return value, so ${Errors} alone never saw that case and the null handle was + ; passed straight to WaitForSingleObject. Fold a plugin failure into the same + ; null-handle case instead of reading a handle that was never written. ${If} ${Errors} + StrCpy $R0 0 + ${EndIf} + ${If} $R0 == 0 ; The launcher is gone - OpenProcess cannot open a dead process - which is ; exactly the state the wait was for. + !insertmacro CockLog "wait-launcher: already exited" DetailPrint "The application that started this installer has already exited." StrCpy $LauncherExited 1 Return @@ -529,14 +644,16 @@ Function WaitForLauncherToExit ; Same 60 s grace period the name based check uses, so a client that is slow ; to flush its card database does not get less room than it used to. ; WAIT_OBJECT_0 is 0; WAIT_TIMEOUT is 258 and a failed wait reports 0xFFFFFFFF. - System::Call 'kernel32::WaitForSingleObject(p r0, i 60000) i.r1' - System::Call 'kernel32::CloseHandle(p r0)' + System::Call 'kernel32::WaitForSingleObject(p R0, i 60000) i.R1' + System::Call 'kernel32::CloseHandle(p R0)' ${If} $R1 != 0 + !insertmacro CockLog "wait-launcher: did not exit within 60s (wait=$R1)" DetailPrint "The application that started this installer did not exit within 60 s." StrCpy $AbortReason \ "The application that started this update has not exited yet, so the installation was cancelled rather than replace files it is still using.$\r$\n$\r$\nPlease close Cockatrice and run the installer again." Call AbortInstall ${EndIf} + !insertmacro CockLog "wait-launcher: launcher exited" DetailPrint "The application that started this installer has exited." StrCpy $LauncherExited 1 FunctionEnd @@ -562,9 +679,11 @@ FunctionEnd Function GuardAppsNotRunning ; usage: set $GuardDir to the directory to guard, then call this Call IsProcessLookupAvailable + !insertmacro CockLog "guard: powershell available=$R0 dir=$GuardDir launcherExited=$LauncherExited" ${If} $R0 = 0 ; Without PowerShell we cannot tell whether a running instance is ; holding locks on the files we are about to replace. + !insertmacro CockLog "guard: powershell unavailable, skipping instance check" DetailPrint "Could not start powershell.exe; skipping the running instance check. Close Cockatrice, Oracle and Servatrice manually if the installation reports a problem." ; On a silent upgrade that used to be a warning and nothing more, which ; left the very process that launched the installer free to go on @@ -587,7 +706,8 @@ Function GuardAppsNotRunning ${EndIf} ; The user has to be told to close the applications by hand, but a /S ; install without /R is unattended and would block on this forever. - ${IfNot} ${Silent} + ${If} $ReinstallMode = 1 + ${OrIfNot} ${Silent} MessageBox MB_OK|MB_ICONEXCLAMATION "This installer could not check whether Cockatrice is still running, because powershell.exe could not be started.$\r$\n$\r$\nPlease close Cockatrice, Oracle and Servatrice manually before continuing." ${EndIf} Return @@ -633,7 +753,11 @@ Function IsExistingCockatriceInstall ; there to prove that it is one. Every Qt module Cockatrice links is part of ; the payload, so match them all: probing only Qt6Core.dll would miss a ; directory where that one file happened to be deletable and the others - ; were not. + ; were not. Qt6*.dll rather than *.dll on purpose: this function decides + ; whether a directory is ours, and a folder that merely holds some DLLs of + ; its own must not be purged. Qt6*.dll is enough even when only the protobuf + ; runtime survived, because the whole Qt set is mapped by the same process + ; that maps abseil_dll.dll and so is locked or free with it. StrCpy $R3 "Qt6*.dll" Call CheckStaleRuntimeMask ${If} ${FileExists} "$INSTDIR\qt.conf" @@ -645,36 +769,23 @@ FunctionEnd ; the purge. NSIS silently skips whatever it cannot delete, so one surviving file ; is enough to prove that something still holds a lock on the install directory. ; -; The masks below have to cover the purge above one for one. A check that only -; probed named files could not see a locked Qt6Multimedia.dll or a Plugins -; directory the purge was unable to remove, so the exact files that broke the -; install were also the ones this check was blind to. +; Any DLL at all counts, not a list of expected ones. The purge removes every +; top-level DLL, so after it has run the only DLL that can still be there is one +; it failed to delete, whatever its name. A mask per library family (Qt, then +; OpenSSL, then zlib) is what let abseil_dll.dll through: it is in neither the +; purge nor this check, so it survived a 3.0.2 to 3.1 update untouched, the new +; executables were written next to it, and the client then failed to start with +; "abseil_dll.dll is either not designed to run on Windows or it contains an +; error". Probing *.dll has no list to fall out of date when the next +; transitive dependency appears. Function HasStaleRuntimeFiles StrCpy $R0 0 - StrCpy $R3 "Qt*.dll" + StrCpy $R3 "*.dll" Call CheckStaleRuntimeMask - StrCpy $R3 "libcrypto*.dll" - Call CheckStaleRuntimeMask - StrCpy $R3 "libssl*.dll" - Call CheckStaleRuntimeMask - StrCpy $R3 "zlib*.dll" - Call CheckStaleRuntimeMask - StrCpy $R3 "icu*.dll" - Call CheckStaleRuntimeMask - StrCpy $R3 "libeay32.dll" - Call CheckStaleRuntimeMask - StrCpy $R3 "ssleay32.dll" - Call CheckStaleRuntimeMask - ${If} $R0 = 1 - Return - ${EndIf} - ${If} ${FileExists} "$INSTDIR\libmysql.dll" - StrCpy $R0 1 - Return - ${EndIf} ; IfFileExists takes wildcards, so a Plugins directory the purge could not ; remove counts as a leftover too. ${If} ${FileExists} "$INSTDIR\Plugins\*.*" + !insertmacro CockLog "stale-runtime: Plugins directory survived the purge" StrCpy $R0 1 ${EndIf} FunctionEnd @@ -687,6 +798,7 @@ Function CheckStaleRuntimeMask ${EndIf} FindFirst $StaleFindHandle $StaleFindName "$INSTDIR\$R3" ${If} $StaleFindHandle != "" + !insertmacro CockLog "stale-runtime: '$StaleFindName' matched $R3 in $INSTDIR" StrCpy $R0 1 FindClose $StaleFindHandle ${EndIf} @@ -925,9 +1037,10 @@ ${If} $PortableMode = 0 ; directory before letting it delete anything. The uninstall string is ; stashed away first, the check works on $R0. StrCpy $OldUninstallString $R0 + !insertmacro CockLog "componentsPagePre: old 32-bit uninstall '$OldUninstallString _?=$INSTDIR'" Call EnsureOldInstallNotRunning ClearErrors - ExecWait "$OldUninstallString" + ExecWait "$OldUninstallString _?=$INSTDIR" done32: @@ -947,9 +1060,10 @@ ${If} $PortableMode = 0 uninst64: StrCpy $OldUninstallString $R0 + !insertmacro CockLog "componentsPagePre: old 64-bit uninstall '$OldUninstallString _?=$INSTDIR'" Call EnsureOldInstallNotRunning ClearErrors - ExecWait "$OldUninstallString" + ExecWait "$OldUninstallString _?=$INSTDIR" done64: ${EndIf} @@ -964,15 +1078,19 @@ Section "Application" SecApplication SetShellVarContext all SetOutPath "$INSTDIR" +!insertmacro CockLog "section: InstDir=$INSTDIR PortableMode=$PortableMode ReinstallMode=$ReinstallMode" + ; No application instance may be running while any file below is deleted or ; replaced: both upgrade blocks start by removing the old executables and ; runtime DLLs, and NSIS silently skips whatever is locked, which is how an -; install ends up with a mix of old and new Qt DLLs next to the new executable -; ("The procedure entry point X could not be located in the dynamic link -; library ...Qt6Network.dll"). So the check has to come before the first -; Delete/RMDir and not after it - an interactive install into an existing -; portable directory with cockatrice.exe still running would otherwise delete -; the old files under its feet. +; install ends up with a mix of old and new runtimes next to the new executable. +; The next start then fails with "The procedure entry point X could not be +; located in the dynamic link library ...Qt6Network.dll" for the Qt ones, or +; "abseil_dll.dll is either not designed to run on Windows or it contains an +; error" for the protobuf ones. So the check has to come before the first +; Delete/RMDir and not after it: an interactive install into an existing portable +; directory with cockatrice.exe still running would otherwise delete the old +; files under its feet. ; ; It is skipped on the /R path: .onInit already ran it before ; AutoUninstallIfNeeded removed the previous installation, so by the time this @@ -987,6 +1105,8 @@ ${EndIf} ${If} $PortableMode = 1 ${AndIf} ${FileExists} "$INSTDIR\portable.dat" ; upgrade portable mode + !insertmacro CockLog "section: portable upgrade purge" + !insertmacro CockLogListing "before-portable-purge" "*.dll" RMDir /r "$INSTDIR\plugins" RMDir /r "$INSTDIR\sounds" RMDir /r "$INSTDIR\themes" @@ -995,24 +1115,24 @@ ${AndIf} ${FileExists} "$INSTDIR\portable.dat" Delete "$INSTDIR\cockatrice.exe" Delete "$INSTDIR\oracle.exe" Delete "$INSTDIR\servatrice.exe" - Delete "$INSTDIR\Qt*.dll" - Delete "$INSTDIR\libmysql.dll" - Delete "$INSTDIR\icu*.dll" - Delete "$INSTDIR\libcrypto*.dll" - Delete "$INSTDIR\libssl*.dll" - Delete "$INSTDIR\libeay32.dll" - Delete "$INSTDIR\ssleay32.dll" + ; Every top-level DLL, not a list of expected ones. The payload is written + ; after this block, so a DLL the new build still needs is put straight back; + ; what this has to guarantee is that nothing from the previous build is left + ; to be loaded next to the new executables. Naming the families by hand is + ; what let abseil_dll.dll through; see HasStaleRuntimeFiles. + Delete "$INSTDIR\*.dll" Delete "$INSTDIR\qt.conf" Delete "$INSTDIR\qdebug.txt" Delete "$INSTDIR\servatrice.sql" Delete "$INSTDIR\servatrice.ini.example" - Delete "$INSTDIR\zlib*.dll" RMDir "$INSTDIR" + !insertmacro CockLogListing "after-portable-purge" "*.dll" ${EndIf} ; Remove any runtime DLLs left over from older versions, so a mismatched -; Qt/OpenSSL set cannot survive next to the new executables. +; Qt/OpenSSL/protobuf set cannot survive next to the new executables. Call IsExistingCockatriceInstall +!insertmacro CockLog "section: IsExistingCockatriceInstall=$R0" ; Remembered because the stale-runtime check below must only ever fire for a ; directory this installer recognised as a Cockatrice install. Scanning for ; leftovers in an unrelated directory (a first-time install into a folder that @@ -1021,48 +1141,48 @@ Call IsExistingCockatriceInstall StrCpy $IsUpgrade $R0 ${If} $PortableMode = 0 ${AndIf} $R0 = 1 + !insertmacro CockLog "section: non-portable upgrade purge" + !insertmacro CockLogListing "before-purge" "*.dll" RMDir /r "$INSTDIR\Plugins" - Delete "$INSTDIR\Qt*.dll" - Delete "$INSTDIR\libcrypto*.dll" - Delete "$INSTDIR\libssl*.dll" - Delete "$INSTDIR\zlib*.dll" - Delete "$INSTDIR\libmysql.dll" - Delete "$INSTDIR\icu*.dll" - Delete "$INSTDIR\libeay32.dll" - Delete "$INSTDIR\ssleay32.dll" + Delete "$INSTDIR\*.dll" + !insertmacro CockLogListing "after-purge" "*.dll" + !insertmacro CockLogListing "after-plugins" "Plugins\*.*" ${EndIf} -; Whatever was locked during the purge - by an instance that started while the +; Whatever was locked during the purge (by an instance that started while the ; installer was running, or because the running instance check could not be -; performed at all - is still on disk, and the new executables are about to be +; performed at all) is still on disk, and the new executables are about to be ; written next to it. That mix is exactly what makes the next start fail with ; "The procedure entry point X could not be located in the dynamic link library -; ...Qt6QuickWidgets.dll" or "The code execution cannot proceed because -; Qt6Multimedia.dll was not found", so stop here instead of compounding it. -; Nothing of the new payload has been written at this point, so the next run - -; with the applications closed - gets a clean install. +; ...Qt6QuickWidgets.dll", "The code execution cannot proceed because +; Qt6Multimedia.dll was not found", or "abseil_dll.dll is either not designed to +; run on Windows or it contains an error", so stop here instead of compounding +; it. Nothing of the new payload has been written at this point, so the next run, +; with the applications closed, gets a clean install. ${If} $IsUpgrade = 1 Call HasStaleRuntimeFiles + !insertmacro CockLog "section: HasStaleRuntimeFiles=$R0" ${Else} StrCpy $R0 0 ${EndIf} ${If} $R0 = 1 + !insertmacro CockLog "section: aborting, files of a previous version survived the purge" DetailPrint "Files of a previous version could not be removed; aborting the installation." ; The in-app updater runs this installer silent and detached and never looks ; at its exit code, so the user has to be told what happened. A /S install - ; without /R is unattended - a package manager, for instance - and a message + ; without /R is unattended (a package manager, for instance) and a message ; box there would block forever, so that case only reports through the log - ; and the exit code. - ${IfNot} ${Silent} - MessageBox MB_OK|MB_ICONEXCLAMATION \ - "The installation could not remove all files of a previous version of Cockatrice, most likely because it is still running or was started as administrator, and was cancelled rather than leave a mismatched install behind.$\r$\n$\r$\nPlease close Cockatrice, Oracle and Servatrice and run the installer again." - ${EndIf} - SetErrorLevel 1 - Abort + ; and the exit code. AbortInstall owns that decision. + StrCpy $AbortReason \ + "The installation could not remove all files of a previous version of Cockatrice, most likely because it is still running or was started as administrator, and was cancelled rather than leave a mismatched install behind.$\r$\n$\r$\nPlease close Cockatrice, Oracle and Servatrice and run the installer again." + Call AbortInstall ${EndIf} @CPACK_NSIS_EXTRA_PREINSTALL_COMMANDS@ +!insertmacro CockLog "section: writing payload to $INSTDIR" @CPACK_NSIS_FULL_INSTALL@ +!insertmacro CockLog "section: payload written" +!insertmacro CockLogListing "final" "Qt6*.dll" ${If} $PortableMode = 0 WriteUninstaller "$INSTDIR\uninstall.exe" @@ -1126,6 +1246,7 @@ ${If} $ReinstallMode = 1 Exec '"$INSTDIR\cockatrice.exe"' ${EndIf} +!insertmacro CockLog "section: application install complete" SectionEnd Section "Start menu item" SecStartMenu diff --git a/cockatrice/CMakeLists.txt b/cockatrice/CMakeLists.txt index 14258fad2..32b81cf61 100644 --- a/cockatrice/CMakeLists.txt +++ b/cockatrice/CMakeLists.txt @@ -691,7 +691,7 @@ if(WIN32) # import table, and the glob above only sees DLLs that were already copied next # to the executable. Qt6::Concurrent is linked but never imported - QtConcurrent::run # and QFutureWatcher are header-only in Qt 6 - so neither step ships - # Qt6Concurrent.dll, even though required-qt-runtime.txt lists it and the + # Qt6Concurrent.dll, even though required-runtime.txt lists it and the # Windows package check then fails on a package that is fine to run. # Qt6::ShaderTools is skipped for the same reason. # From b8e8f2c738462218927533f41717907d04356983 Mon Sep 17 00:00:00 2001 From: BruebachL <44814898+BruebachL@users.noreply.github.com> Date: Sat, 10 Oct 2026 09:36:26 +0200 Subject: [PATCH 21/28] [PrintingSelector] Fix crash setting all printings to preferred (#7467) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit getPreferredPrinting returns a null PrintingInfo when a deck card has no database entry or printings. SetProviderIdToPreferred dereferenced getSet() unconditionally, crashing on custom or unresolved cards. Guard against a null preferred set and leave the card's cleared printing data as is. Co-authored-by: Lukas Brübach --- .../interface/deck_loader/card_node_function.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/cockatrice/src/interface/deck_loader/card_node_function.cpp b/cockatrice/src/interface/deck_loader/card_node_function.cpp index 0934b34da..8d59a6c15 100644 --- a/cockatrice/src/interface/deck_loader/card_node_function.cpp +++ b/cockatrice/src/interface/deck_loader/card_node_function.cpp @@ -15,13 +15,14 @@ void CardNodeFunction::SetProviderIdToPreferred::operator()(const InnerDecklistN { Q_UNUSED(node); PrintingInfo preferredPrinting = CardDatabaseManager::query()->getPreferredPrinting(card->getName()); - QString providerId = preferredPrinting.getUuid(); - QString setShortName = preferredPrinting.getSet()->getShortName(); - QString collectorNumber = preferredPrinting.getProperty("num"); + CardSetPtr preferredSet = preferredPrinting.getSet(); + if (!preferredSet) { + return; + } - card->setCardProviderId(providerId); - card->setCardCollectorNumber(collectorNumber); - card->setCardSetShortName(setShortName); + card->setCardProviderId(preferredPrinting.getUuid()); + card->setCardCollectorNumber(preferredPrinting.getProperty("num")); + card->setCardSetShortName(preferredSet->getShortName()); } void CardNodeFunction::ClearPrintingData::operator()(const InnerDecklistNode *node, DecklistCardNode *card) const From be2c16eca523b9517db860628f7a894e0680945f Mon Sep 17 00:00:00 2001 From: BruebachL <44814898+BruebachL@users.noreply.github.com> Date: Sat, 10 Oct 2026 09:45:42 +0200 Subject: [PATCH 22/28] [UI] Fix auto-completion acceptance on Space/Tab/Enter (#7466) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [UI] Fix auto-completion acceptance on Space/Tab/Enter * [UI] Accept current completion when no item selected in popup * [UI] Also accept completion on focus out when none selected * [UI] Keep focus in chat on Tab completion acceptance * [UI] Prevent Tab from moving focus when no completion popup * [UI] Refocus on Tab when completing * [UI] Let focusOut handle Tab completion acceptance * [UI] Restore Tab behavior to match original (handle in focusOut) * [UI] Defer refocus on Tab to avoid focus chain issues * [UI] Auto-select first completion match in popup * [UI] Auto-select first match when completer popup resets * Revert "[UI] Auto-select first match when completer popup resets" This reverts commit c7a3de3595a565cbcb35610ebe3e4b36322e0919. * Revert "[UI] Auto-select first completion match in popup" This reverts commit ae0dfb862263e8e39339103b1fd87535d2437c9a. * [UI] Ensure completion selection updates on model changes * Revert "[UI] Ensure completion selection updates on model changes" This reverts commit 686bbef5b2a7d87bd1ecd04c4b7e2a23143188cd. * [UI] Highlight the selected completion in chat popups The card completer's above-variant moved the current row with NoUpdate, so the delegate never painted the selection border, and it used Select which accumulated highlights while navigating. Use ClearAndSelect so only the current row is highlighted and the old one is cleared. The mention popup opened with no current row at all, so nothing was highlighted and there was no visual hint of what Enter would insert. Select the row currentCompletion() uses, and install a delegate that mirrors the active highlight into the inactive group so the selection stays visible when the transient popup is not the active window. --------- Co-authored-by: Lukas Brübach --- .../widgets/utility/card_completer_styler.cpp | 5 +- .../widgets/utility/completer_utils.cpp | 52 +++++++++++ .../widgets/utility/line_edit_completer.cpp | 90 +++++++++++++++---- 3 files changed, 128 insertions(+), 19 deletions(-) diff --git a/cockatrice/src/interface/widgets/utility/card_completer_styler.cpp b/cockatrice/src/interface/widgets/utility/card_completer_styler.cpp index fef1dcbf7..1ddcc4200 100644 --- a/cockatrice/src/interface/widgets/utility/card_completer_styler.cpp +++ b/cockatrice/src/interface/widgets/utility/card_completer_styler.cpp @@ -150,7 +150,8 @@ bool CardCompleterStyler::handlePopupKeyPress(QKeyEvent *event) if (newRow != currentRow) { const QModelIndex newIndex = completer->completionModel()->index(newRow, completer->completionColumn()); - popup->selectionModel()->setCurrentIndex(newIndex, QItemSelectionModel::NoUpdate); + popup->selectionModel()->setCurrentIndex(newIndex, + QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Rows); } return true; @@ -180,7 +181,7 @@ void CardCompleterStyler::ensureClosestSelected() if (currentRow != closestRow) { popup->selectionModel()->setCurrentIndex(completionModel->index(closestRow, completer->completionColumn()), - QItemSelectionModel::NoUpdate); + QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Rows); } } diff --git a/cockatrice/src/interface/widgets/utility/completer_utils.cpp b/cockatrice/src/interface/widgets/utility/completer_utils.cpp index 53db58b70..f1cd9c6a7 100644 --- a/cockatrice/src/interface/widgets/utility/completer_utils.cpp +++ b/cockatrice/src/interface/widgets/utility/completer_utils.cpp @@ -3,12 +3,19 @@ #include "../../../client/settings/cache_settings.h" #include "card_completer_styler.h" +#include #include #include +#include #include +#include +#include #include #include #include +#include +#include +#include #include #include #include @@ -17,6 +24,45 @@ namespace { +/** + * @brief Paints the mention popup's current row with a visible highlight. + * + * A completer popup is a transient window that is usually not the application's + * active window, so the style paints a selected row using the palette's + * Inactive highlight group. Most themes set that colour close to the popup + * background, which hides the current completion entirely. Mirror the active + * highlight into the inactive group so the selection stays visible. + */ +class MentionCompleterDelegate : public QStyledItemDelegate +{ +public: + explicit MentionCompleterDelegate(QAbstractItemView *view) : QStyledItemDelegate(view), view(view) + { + } + + void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override + { + QStyleOptionViewItem opt = option; + opt.showDecorationSelected = true; + + if (view->currentIndex() == index) { + opt.state |= QStyle::State_HasFocus; + } + + if (opt.state & QStyle::State_Selected) { + opt.palette.setColor(QPalette::Inactive, QPalette::Highlight, + opt.palette.color(QPalette::Active, QPalette::Highlight)); + opt.palette.setColor(QPalette::Inactive, QPalette::HighlightedText, + opt.palette.color(QPalette::Active, QPalette::HighlightedText)); + } + + QStyledItemDelegate::paint(painter, opt, index); + } + +private: + QAbstractItemView *view; +}; + void applyCardSearchLanguage(CardSearchModel *searchModel) { const CardsDisplaySettings &cardsDisplay = SettingsCache::instance().cardsDisplay(); @@ -69,5 +115,11 @@ QCompleter *createMentionCompleter(QStringListModel *model, QObject *parent) completer->setCaseSensitivity(Qt::CaseInsensitive); completer->setMaxVisibleItems(5); completer->setFilterMode(Qt::MatchStartsWith); + + // Force the popup to be created so the highlight delegate can be installed; + // otherwise QCompleter's own delegate hides the selection on most themes. + QAbstractItemView *popup = completer->popup(); + popup->setItemDelegate(new MentionCompleterDelegate(popup)); + return completer; } diff --git a/cockatrice/src/interface/widgets/utility/line_edit_completer.cpp b/cockatrice/src/interface/widgets/utility/line_edit_completer.cpp index 38e3e4350..056887f1a 100644 --- a/cockatrice/src/interface/widgets/utility/line_edit_completer.cpp +++ b/cockatrice/src/interface/widgets/utility/line_edit_completer.cpp @@ -1,9 +1,11 @@ #include "line_edit_completer.h" +#include #include #include #include #include +#include #include #include #include @@ -48,37 +50,80 @@ void LineEditCompleter::focusOutEvent(QFocusEvent *e) { LineEditUnfocusable::focusOutEvent(e); - // Only commit the highlighted completion when focus moves away via Tab. + // Commit completion when focus moves away via Tab if popup is visible. // Other focus losses (e.g. the unfocus shortcut / Escape) must simply close // the popup without inserting anything. - if (e->reason() != Qt::TabFocusReason) { - hideCompleterPopups(); + bool popupWasVisible = false; + for (auto &info : completers) { + if (info.completer->popup()->isVisible()) { + popupWasVisible = true; + const QModelIndex currentIndex = info.completer->popup()->currentIndex(); + QString completionText; + if (currentIndex.isValid()) { + completionText = currentIndex.data().toString(); + } else { + completionText = info.completer->currentCompletion(); + } + if (!completionText.isEmpty()) { + insertCompletion(info.completer, completionText); + } + } + } + hideCompleterPopups(); + + if (popupWasVisible && e->reason() == Qt::TabFocusReason) { + // Refocus the edit so Tab doesn't move focus away + // Use a queued connection to ensure focus is restored after the focus change completes + QMetaObject::invokeMethod(this, "setFocus", Qt::QueuedConnection); + e->accept(); return; } - for (auto &info : completers) { - if (!info.completer->popup()->isVisible()) { - continue; - } - - const QModelIndex currentIndex = info.completer->popup()->currentIndex(); - if (currentIndex.isValid()) { - insertCompletion(info.completer, currentIndex.data().toString()); - } + if (popupWasVisible) { + return; } - - hideCompleterPopups(); } void LineEditCompleter::keyPressEvent(QKeyEvent *event) { - LineEditUnfocusable::keyPressEvent(event); - if (event->key() == Qt::Key_Escape) { - hideCompleterPopups(); + if (hasVisibleCompleterPopup()) { + event->ignore(); + hideCompleterPopups(); + return; + } + LineEditUnfocusable::keyPressEvent(event); return; } + if (event->key() == Qt::Key_Return || event->key() == Qt::Key_Enter || event->key() == Qt::Key_Space) { + for (auto &info : completers) { + if (info.completer->popup()->isVisible()) { + event->ignore(); + const QModelIndex currentIndex = info.completer->popup()->currentIndex(); + QString completionText; + if (currentIndex.isValid()) { + completionText = currentIndex.data().toString(); + } else { + completionText = info.completer->currentCompletion(); + } + if (!completionText.isEmpty()) { + insertCompletion(info.completer, completionText); + } + hideCompleterPopups(); + return; + } + } + } + + if (event->key() == Qt::Key_Tab) { + // Let Tab proceed normally; focusOutEvent will handle completion if popup is visible + LineEditUnfocusable::keyPressEvent(event); + return; + } + + LineEditUnfocusable::keyPressEvent(event); + QString textValue = text(); int cursorPos = cursorPosition(); @@ -132,6 +177,17 @@ void LineEditCompleter::keyPressEvent(QKeyEvent *event) } active->completer->complete(); + + // The popup opens without a current row, so nothing is highlighted and there + // is no visual indication of what Enter will insert. Select the row that + // currentCompletion() would use so the current mention stays visible. + auto *completionModel = active->completer->completionModel(); + const int currentRow = active->completer->currentRow(); + if (currentRow >= 0 && currentRow < completionModel->rowCount()) { + active->completer->popup()->selectionModel()->setCurrentIndex( + completionModel->index(currentRow, active->completer->completionColumn()), + QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Rows); + } } void LineEditCompleter::insertCompletion(const QString &completion) From efc7e7a07940b747c9e9d948ede7ef491fe815a2 Mon Sep 17 00:00:00 2001 From: ebbit1q Date: Sat, 10 Oct 2026 17:15:10 +0200 Subject: [PATCH 23/28] fix the desktop file, removing the invalid key (#7406) * fix the desktop file, removing the invalid key * Update cockatrice.desktop --------- Co-authored-by: BruebachL <44814898+BruebachL@users.noreply.github.com> --- cockatrice/cockatrice.desktop | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/cockatrice/cockatrice.desktop b/cockatrice/cockatrice.desktop index 4b15fa9c1..70db9d472 100644 --- a/cockatrice/cockatrice.desktop +++ b/cockatrice/cockatrice.desktop @@ -6,5 +6,4 @@ Name=Cockatrice Exec=cockatrice %U Icon=cockatrice Categories=Game;CardGame; -MimeType=application/x-cockatrice; -X-Scheme-Handler/cockatrice=true +MimeType=application/x-cockatrice;x-scheme-handler/cockatrice; From 3a36b5eea4090fdba93322dda177180a0e740649 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20Br=C3=BCbach?= Date: Mon, 5 Oct 2026 08:20:09 +0200 Subject: [PATCH 24/28] [Tests] Register each test case with CTest instead of each test binary Registering a test cost four edits across a dozen CMakeLists files: add_test, add_executable, a conditional add_dependencies on gtest, and target_link_libraries. The conditional branch was the trap -- it is only needed when GTest was fetched and add_subdirectory'd, and omitting it yields undefined gtest symbols at link time -- so it was easy to leave out and impossible to notice until the link failed. Fold all four steps into cockatrice_add_test() and migrate every test directory onto it, with a cockatrice_add_manual_test() wrapper for the three benchmarks that are built but deliberately kept out of ctest. The calls now read as a declaration of what a test is rather than a transcript of how to register one. While rewriting the registrations, replace add_test(NAME x COMMAND x) with gtest_discover_tests(). Naming the binary as a single CTest entry meant a CI failure reported only which binary failed, and ctest -R Suite.Case could not select an individual case. Discovery raises the suite from 35 opaque entries to 469 real ones: ctest -R ThemeMigrationTest.IsIdempotent now runs exactly that case, and ctest -L server / -LE bench work off labels applied at registration. Give every test a 60s TIMEOUT. CTest's implicit default is 1500s, so one hung socket wait would stall CI for 25 minutes, and single_instance_manager_test already does real QLocalSocket waits. Dropping per-case granularity costs wall-clock time, since the suite becomes process-spawn bound rather than CPU bound: serial ctest went from 3.8s to 30.8s. Run it with -j in CI to recover it -- 7.6s at -j4, and 3.5s at -j8, both at or below the old serial time. The binaries are parallel-safe: the only test claiming a fixed resource scopes its local socket name to its own pid, so concurrent copies cannot collide. Also delete dummy_test, which asserted 1 == 1 and only proved the harness was wired up -- something the other 468 cases already establish. No test is added, removed, or changed by this commit; the 469 cases are the same ones the 35 binaries contained. --- .ci/compile.sh | 6 +- tests/CMakeLists.txt | 456 +++++++++++------- tests/card_zone_algorithms/CMakeLists.txt | 17 +- tests/carddatabase/CMakeLists.txt | 73 ++- tests/deck_list_model/CMakeLists.txt | 34 +- tests/deck_list_zones/CMakeLists.txt | 11 +- tests/dummy_test.cpp | 20 - tests/loading_from_clipboard/CMakeLists.txt | 19 +- tests/movecard_tests/CMakeLists.txt | 23 +- tests/oracle/CMakeLists.txt | 64 ++- tests/picture_loader_benchmark/CMakeLists.txt | 22 +- tests/settings/CMakeLists.txt | 34 +- tests/theme_migration/CMakeLists.txt | 21 +- 13 files changed, 401 insertions(+), 399 deletions(-) delete mode 100644 tests/dummy_test.cpp diff --git a/.ci/compile.sh b/.ci/compile.sh index 823a31898..d76d32bcc 100755 --- a/.ci/compile.sh +++ b/.ci/compile.sh @@ -306,7 +306,11 @@ fi if [[ $MAKE_TEST ]]; then echo "::group::Run tests" - ctest -C "$BUILDTYPE" --output-on-failure + # Every TEST() is its own CTest entry, so the suite is process-spawn bound rather than CPU + # bound and -j recovers nearly all of the per-process overhead. The test binaries are safe to + # run concurrently: the only one that claims a fixed resource is single_instance_manager_test, + # which already scopes its local socket name to its own pid so parallel copies cannot collide. + ctest -C "$BUILDTYPE" --output-on-failure -j "${CTEST_JOBS:-4}" echo "::endgroup::" fi diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 2c288c6ce..b564a06d9 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -2,109 +2,10 @@ # If a new test needs additional Qt modules, add them there — not in individual test CMakeLists.txt files. enable_testing() -add_test(NAME dummy_test COMMAND dummy_test) -add_test(NAME expression_test COMMAND expression_test) -add_test(NAME clamped_arithmetic_test COMMAND clamped_arithmetic_test) -add_test(NAME test_age_formatting COMMAND test_age_formatting) -add_test(NAME password_hash_test COMMAND password_hash_test) -add_test(NAME playmat_resolver_test COMMAND playmat_resolver_test) -add_test(NAME server_card_counter_test COMMAND server_card_counter_test) -add_test(NAME server_counter_test COMMAND server_counter_test) -add_test(NAME server_rate_limiter_test COMMAND server_rate_limiter_test) -add_test(NAME server_developer_role_test COMMAND server_developer_role_test) -add_test(NAME server_game_join_test COMMAND server_game_join_test) -add_test(NAME warning_categories_test COMMAND warning_categories_test) -# The translation loader test compiles a .qm fixture, which needs lrelease from Qt Linguist. -if(TARGET Qt6::lrelease) - add_test(NAME translation_loader_test COMMAND translation_loader_test) -endif() -add_test(NAME report_categories_test COMMAND report_categories_test) -add_test(NAME lag_monitor_test COMMAND lag_monitor_test) -add_test(NAME latency_tracker_test COMMAND latency_tracker_test) -add_test(NAME metrics_registry_test COMMAND metrics_registry_test) -add_test(NAME card_update_progress_test COMMAND card_update_progress_test) -add_test(NAME loader_local_matching_test COMMAND loader_local_matching_test) - -add_test(NAME deck_hash_performance_test COMMAND deck_hash_performance_test) -set_tests_properties(deck_hash_performance_test PROPERTIES TIMEOUT 15) +include(GoogleTest) # Find GTest -add_executable(dummy_test dummy_test.cpp) -add_executable(expression_test expression_test.cpp) -add_executable(clamped_arithmetic_test clamped_arithmetic_test.cpp) -add_executable(test_age_formatting test_age_formatting.cpp) -add_executable(password_hash_test password_hash_test.cpp) -add_executable(playmat_resolver_test playmat_resolver_test.cpp) -add_executable(deck_hash_performance_test deck_hash_performance_test.cpp) -add_executable(server_card_counter_test server_card_counter_test.cpp) -add_executable(server_counter_test server_counter_test.cpp) -add_executable(server_rate_limiter_test server_rate_limiter_test.cpp) -add_executable(server_developer_role_test server_developer_role_test.cpp) -add_executable(server_game_join_test server_game_join_test.cpp) -add_executable(warning_categories_test warning_categories_test.cpp) -if(TARGET Qt6::lrelease) - add_executable(translation_loader_test translation_loader_test.cpp) - - # QTranslator only accepts real .qm files, so the translation loader test gets one compiled from its - # own .ts fixture rather than a stub. - set(TRANSLATION_LOADER_TEST_QM "${CMAKE_CURRENT_BINARY_DIR}/translation_loader_test_de.qm") - add_custom_command( - OUTPUT "${TRANSLATION_LOADER_TEST_QM}" - COMMAND Qt6::lrelease "${CMAKE_CURRENT_SOURCE_DIR}/translation_loader_test.ts" -qm "${TRANSLATION_LOADER_TEST_QM}" - DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/translation_loader_test.ts" - COMMENT "Compiling translation_loader_test.ts" - ) - add_custom_target(translation_loader_test_qm DEPENDS "${TRANSLATION_LOADER_TEST_QM}") - add_dependencies(translation_loader_test translation_loader_test_qm) - target_compile_definitions(translation_loader_test PRIVATE TRANSLATION_LOADER_TEST_DIR="${CMAKE_CURRENT_BINARY_DIR}") - - # A multi-config generator (MSBuild, Xcode) puts the executable in a per-config subdirectory while - # the .qm stays in the current binary directory, so copy the fixture next to the binary: that is the - # layout ABuildTreeFindsTheTranslationsNextToTheExecutable is about, and the only one it finds on - # those generators. - add_custom_command( - TARGET translation_loader_test - POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different "${TRANSLATION_LOADER_TEST_QM}" - "$/" - VERBATIM - ) -endif() -add_executable(report_categories_test report_categories_test.cpp) -add_executable(lag_monitor_test ${CMAKE_SOURCE_DIR}/cockatrice/src/client/lag_monitor.cpp lag_monitor_test.cpp) -target_include_directories(lag_monitor_test PRIVATE ${CMAKE_SOURCE_DIR}/cockatrice/src) -add_executable(latency_tracker_test latency_tracker_test.cpp) -add_executable(metrics_registry_test ../servatrice/src/metrics_registry.cpp metrics_registry_test.cpp) -add_executable( - card_update_progress_test ${CMAKE_SOURCE_DIR}/cockatrice/src/interface/card_database_update/card_update_progress.cpp - card_update_progress_test.cpp -) -target_include_directories(card_update_progress_test PRIVATE ${CMAKE_SOURCE_DIR}/cockatrice/src) -add_executable( - loader_local_matching_test - ${CMAKE_SOURCE_DIR}/cockatrice/src/interface/card_picture_loader/card_picture_loader_local.cpp - ${CMAKE_SOURCE_DIR}/cockatrice/src/client/settings/cache_settings.cpp - ${CMAKE_SOURCE_DIR}/cockatrice/src/client/settings/card_counter_settings.cpp - ${CMAKE_SOURCE_DIR}/cockatrice/src/client/settings/shortcuts_settings.cpp - ${CMAKE_SOURCE_DIR}/cockatrice/src/client/network/update/client/release_channel.cpp - ${VERSION_STRING_CPP} - loader_local_matching_test.cpp -) -target_include_directories(loader_local_matching_test PRIVATE ${CMAKE_SOURCE_DIR}/cockatrice/src) - -# Guard must match the condition for src/single_instance_manager.cpp in cockatrice/CMakeLists.txt. -if(WITH_CLIENT) - add_executable( - single_instance_manager_test ${CMAKE_SOURCE_DIR}/cockatrice/src/single_instance_manager.cpp - single_instance_manager_test.cpp - ) - target_include_directories(single_instance_manager_test PRIVATE ${CMAKE_SOURCE_DIR}/cockatrice/src) - target_include_directories(single_instance_manager_test PRIVATE ${CMAKE_SOURCE_DIR}/libcockatrice_utility) - - add_test(NAME single_instance_manager_test COMMAND single_instance_manager_test) -endif() - find_package(GTest) if(NOT GTEST_FOUND) @@ -130,92 +31,291 @@ if(NOT GTEST_FOUND) set(GTEST_INCLUDE_DIRS "${CMAKE_BINARY_DIR}/gtest-src/include") set(GTEST_BOTH_LIBRARIES gtest) - add_dependencies(dummy_test gtest) - add_dependencies(expression_test gtest) - add_dependencies(clamped_arithmetic_test gtest) - add_dependencies(test_age_formatting gtest) - add_dependencies(password_hash_test gtest) - add_dependencies(playmat_resolver_test gtest) - add_dependencies(deck_hash_performance_test gtest) - add_dependencies(server_card_counter_test gtest) - add_dependencies(server_counter_test gtest) - add_dependencies(server_rate_limiter_test gtest) - add_dependencies(server_developer_role_test gtest) - add_dependencies(server_game_join_test gtest) - add_dependencies(warning_categories_test gtest) - if(TARGET translation_loader_test) - add_dependencies(translation_loader_test gtest) - endif() - add_dependencies(report_categories_test gtest) - add_dependencies(lag_monitor_test gtest) - add_dependencies(latency_tracker_test gtest) - add_dependencies(metrics_registry_test gtest) - add_dependencies(card_update_progress_test gtest) - add_dependencies(loader_local_matching_test gtest) - add_dependencies(single_instance_manager_test gtest) endif() +# Directory-scoped on purpose: the test subdirectories below add targets that include the +# fetched gtest headers and do not repeat this path themselves. include_directories(${GTEST_INCLUDE_DIRS}) -target_link_libraries(dummy_test Threads::Threads ${GTEST_BOTH_LIBRARIES}) -target_link_libraries(expression_test libcockatrice_utility Threads::Threads ${GTEST_BOTH_LIBRARIES} ${TEST_QT_MODULES}) -target_link_libraries( - clamped_arithmetic_test libcockatrice_utility Threads::Threads ${GTEST_BOTH_LIBRARIES} ${TEST_QT_MODULES} -) -target_link_libraries( - test_age_formatting libcockatrice_utility Threads::Threads ${GTEST_BOTH_LIBRARIES} ${TEST_QT_MODULES} -) -target_link_libraries( - password_hash_test libcockatrice_utility Threads::Threads ${GTEST_BOTH_LIBRARIES} ${TEST_QT_MODULES} -) -target_link_libraries( - playmat_resolver_test libcockatrice_deck_list libcockatrice_utility Threads::Threads ${GTEST_BOTH_LIBRARIES} - ${TEST_QT_MODULES} -) -target_link_libraries( - deck_hash_performance_test libcockatrice_deck_list libcockatrice_utility Threads::Threads ${GTEST_BOTH_LIBRARIES} - ${TEST_QT_MODULES} -) -target_link_libraries( - server_card_counter_test libcockatrice_network Threads::Threads ${GTEST_BOTH_LIBRARIES} ${TEST_QT_MODULES} -) -target_link_libraries( - server_counter_test libcockatrice_network Threads::Threads ${GTEST_BOTH_LIBRARIES} ${TEST_QT_MODULES} -) -target_link_libraries( - server_rate_limiter_test libcockatrice_utility Threads::Threads ${GTEST_BOTH_LIBRARIES} ${TEST_QT_MODULES} -) -target_link_libraries( - server_developer_role_test libcockatrice_network libcockatrice_rng Threads::Threads ${GTEST_BOTH_LIBRARIES} - ${TEST_QT_MODULES} -) -target_link_libraries( - server_game_join_test libcockatrice_network_server_remote libcockatrice_rng Threads::Threads ${GTEST_BOTH_LIBRARIES} - ${TEST_QT_MODULES} -) -target_link_libraries( - warning_categories_test libcockatrice_utility Threads::Threads ${GTEST_BOTH_LIBRARIES} ${TEST_QT_MODULES} -) -if(TARGET translation_loader_test) + +# --- Test registration ---------------------------------------------------------- +# +# Every test target needs the same four steps: build the executable, depend on gtest when it +# was fetched from source, link the shared test libraries, and hand the cases to CTest. The +# `if(NOT GTEST_FOUND)` branch is the easy one to forget — omit it and the link fails with +# undefined gtest symbols — so it lives here once instead of being repeated per test. +# +# This also replaces `add_test(NAME x COMMAND x)`. Naming the binary as a single CTest entry +# hides which case failed and makes `ctest -R Suite.Case` impossible; discovery exposes each +# TEST() as its own CTest entry instead. +# +# Labels: `ci` is applied to every registered test and marks the default CI run, so +# `ctest -LE bench` is the fast hermetic set. Add `gui` for a test that constructs a +# QApplication (none do today — CI has no display), `server` for servatrice-facing tests +# so `ctest -L server` works, `bench` for the slow suites. +# +# TIMEOUT is bounded per test because CTest's implicit default is 1500s: one hung socket wait +# would otherwise stall CI for 25 minutes. +# +# EXTRA_LIBS is appended after the shared libraries so a caller adding a static archive (zlib, +# lzma) keeps it last, which is where the linker needs it. + +function(cockatrice_add_test) + cmake_parse_arguments(PARSE_ARGV 0 ARG "MANUAL" "NAME" "SOURCES;LIBS;LABELS;DEFINITIONS;INCLUDE_DIRS;EXTRA_LIBS") + + if(NOT ARG_NAME OR NOT ARG_SOURCES) + message(FATAL_ERROR "cockatrice_add_test requires at least NAME and SOURCES") + endif() + + add_executable(${ARG_NAME} ${ARG_SOURCES}) + + if(ARG_INCLUDE_DIRS) + target_include_directories(${ARG_NAME} PRIVATE ${ARG_INCLUDE_DIRS}) + endif() + + if(ARG_DEFINITIONS) + target_compile_definitions(${ARG_NAME} PRIVATE ${ARG_DEFINITIONS}) + endif() + target_link_libraries( - translation_loader_test libcockatrice_utility Threads::Threads ${GTEST_BOTH_LIBRARIES} ${TEST_QT_MODULES} + ${ARG_NAME} ${ARG_LIBS} Threads::Threads ${GTEST_BOTH_LIBRARIES} ${TEST_QT_MODULES} ${ARG_EXTRA_LIBS} + ) + + # Only needed when gtest was downloaded and add_subdirectory'd above. An imported gtest + # target already carries its own dependency, so this must stay conditional. + if(NOT GTEST_FOUND) + add_dependencies(${ARG_NAME} gtest) + endif() + + # MANUAL targets are built but deliberately kept out of ctest: benchmarks that need a card + # database, hit the network, or measure RAM. Leaving them unregistered keeps CI hermetic + # and fast. They still link gtest so they can use TEST() without a second code path. + if(ARG_MANUAL) + return() + endif() + + if(NOT ARG_LABELS) + set(ARG_LABELS ci) + else() + list(APPEND ARG_LABELS ci) + endif() + + gtest_discover_tests( + ${ARG_NAME} DISCOVERY_MODE POST_BUILD + PROPERTIES LABELS "${ARG_LABELS}" + TIMEOUT 60 + ) +endfunction() + +# Same wiring for targets that are built but deliberately kept out of ctest: benchmarks that +# need a card database, hit the network, or measure RAM. A separate name rather than a MANUAL +# flag spelled out at each call site, so "this is not in the CI suite" is visible in the CMake +# file. Note the unquoted expansions: an unset multi-value keyword expands to zero arguments, +# which is what lets this forward a caller's keywords verbatim without tripping the FATAL_ERROR +# guard above on an empty list. +function(cockatrice_add_manual_test) + cmake_parse_arguments(PARSE_ARGV 0 ARG "" "NAME" "SOURCES;LIBS;DEFINITIONS;INCLUDE_DIRS;EXTRA_LIBS") + + cockatrice_add_test( + NAME + ${ARG_NAME} + SOURCES + ${ARG_SOURCES} + LIBS + ${ARG_LIBS} + DEFINITIONS + ${ARG_DEFINITIONS} + INCLUDE_DIRS + ${ARG_INCLUDE_DIRS} + EXTRA_LIBS + ${ARG_EXTRA_LIBS} + MANUAL + ) +endfunction() + +# --- Unit tests ------------------------------------------------------------------ + +cockatrice_add_test(NAME expression_test SOURCES expression_test.cpp LIBS libcockatrice_utility) +cockatrice_add_test(NAME clamped_arithmetic_test SOURCES clamped_arithmetic_test.cpp LIBS libcockatrice_utility) +cockatrice_add_test(NAME test_age_formatting SOURCES test_age_formatting.cpp LIBS libcockatrice_utility) +cockatrice_add_test(NAME password_hash_test SOURCES password_hash_test.cpp LIBS libcockatrice_utility) +cockatrice_add_test(NAME report_categories_test SOURCES report_categories_test.cpp LIBS libcockatrice_utility) +cockatrice_add_test(NAME warning_categories_test SOURCES warning_categories_test.cpp LIBS libcockatrice_utility) +cockatrice_add_test( + NAME + playmat_resolver_test + SOURCES + playmat_resolver_test.cpp + LIBS + libcockatrice_deck_list + libcockatrice_utility +) +cockatrice_add_test( + NAME + server_rate_limiter_test + SOURCES + server_rate_limiter_test.cpp + LIBS + libcockatrice_utility + LABELS + server +) +cockatrice_add_test( + NAME + server_card_counter_test + SOURCES + server_card_counter_test.cpp + LIBS + libcockatrice_network + LABELS + server +) +cockatrice_add_test( + NAME + server_counter_test + SOURCES + server_counter_test.cpp + LIBS + libcockatrice_network + LABELS + server +) +cockatrice_add_test( + NAME + server_developer_role_test + SOURCES + server_developer_role_test.cpp + LIBS + libcockatrice_network + libcockatrice_rng + LABELS + server +) +cockatrice_add_test( + NAME + server_game_join_test + SOURCES + server_game_join_test.cpp + LIBS + libcockatrice_network_server_remote + libcockatrice_rng + LABELS + server +) +cockatrice_add_test( + NAME + latency_tracker_test + SOURCES + latency_tracker_test.cpp + LIBS + libcockatrice_network + LABELS + server +) +cockatrice_add_test( + NAME + lag_monitor_test + SOURCES + ${CMAKE_SOURCE_DIR}/cockatrice/src/client/lag_monitor.cpp + lag_monitor_test.cpp + INCLUDE_DIRS + ${CMAKE_SOURCE_DIR}/cockatrice/src +) +cockatrice_add_test( + NAME + metrics_registry_test + SOURCES + ${CMAKE_SOURCE_DIR}/servatrice/src/metrics_registry.cpp + metrics_registry_test.cpp + INCLUDE_DIRS + ${CMAKE_SOURCE_DIR}/servatrice/src + LABELS + server +) +cockatrice_add_test( + NAME + card_update_progress_test + SOURCES + ${CMAKE_SOURCE_DIR}/cockatrice/src/interface/card_database_update/card_update_progress.cpp + card_update_progress_test.cpp + INCLUDE_DIRS + ${CMAKE_SOURCE_DIR}/cockatrice/src +) +cockatrice_add_test( + NAME + loader_local_matching_test + SOURCES + ${CMAKE_SOURCE_DIR}/cockatrice/src/interface/card_picture_loader/card_picture_loader_local.cpp + ${CMAKE_SOURCE_DIR}/cockatrice/src/client/settings/cache_settings.cpp + ${CMAKE_SOURCE_DIR}/cockatrice/src/client/settings/card_counter_settings.cpp + ${CMAKE_SOURCE_DIR}/cockatrice/src/client/settings/shortcuts_settings.cpp + ${CMAKE_SOURCE_DIR}/cockatrice/src/client/network/update/client/release_channel.cpp + ${VERSION_STRING_CPP} + loader_local_matching_test.cpp + LIBS + libcockatrice_settings + INCLUDE_DIRS + ${CMAKE_SOURCE_DIR}/cockatrice/src +) +cockatrice_add_test( + NAME + deck_hash_performance_test + SOURCES + deck_hash_performance_test.cpp + LIBS + libcockatrice_deck_list + libcockatrice_utility + LABELS + bench +) + +# The translation loader test compiles a .qm fixture, which needs lrelease from Qt Linguist. +if(TARGET Qt6::lrelease) + set(TRANSLATION_LOADER_TEST_QM "${CMAKE_CURRENT_BINARY_DIR}/translation_loader_test_de.qm") + add_custom_command( + OUTPUT "${TRANSLATION_LOADER_TEST_QM}" + COMMAND Qt6::lrelease "${CMAKE_CURRENT_SOURCE_DIR}/translation_loader_test.ts" -qm "${TRANSLATION_LOADER_TEST_QM}" + DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/translation_loader_test.ts" + COMMENT "Compiling translation_loader_test.ts" + ) + add_custom_target(translation_loader_test_qm DEPENDS "${TRANSLATION_LOADER_TEST_QM}") + + cockatrice_add_test( + NAME + translation_loader_test + SOURCES + translation_loader_test.cpp + LIBS + libcockatrice_utility + DEFINITIONS + TRANSLATION_LOADER_TEST_DIR="${CMAKE_CURRENT_BINARY_DIR}" + ) + add_dependencies(translation_loader_test translation_loader_test_qm) + + # A multi-config generator (MSBuild, Xcode) puts the executable in a per-config subdirectory while + # the .qm stays in the current binary directory, so copy the fixture next to the binary: that is the + # layout ABuildTreeFindsTheTranslationsNextToTheExecutable is about, and the only one it finds on + # those generators. + add_custom_command( + TARGET translation_loader_test + POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_if_different "${TRANSLATION_LOADER_TEST_QM}" + "$/" + VERBATIM ) endif() -target_link_libraries( - report_categories_test libcockatrice_utility Threads::Threads ${GTEST_BOTH_LIBRARIES} ${TEST_QT_MODULES} -) -target_link_libraries(lag_monitor_test Threads::Threads ${GTEST_BOTH_LIBRARIES} ${TEST_QT_MODULES}) -target_link_libraries( - latency_tracker_test libcockatrice_network Threads::Threads ${GTEST_BOTH_LIBRARIES} ${TEST_QT_MODULES} -) -target_include_directories(metrics_registry_test PRIVATE ${CMAKE_SOURCE_DIR}/servatrice/src) -target_link_libraries(metrics_registry_test ${TEST_QT_MODULES} Threads::Threads ${GTEST_BOTH_LIBRARIES}) -target_link_libraries(card_update_progress_test Threads::Threads ${GTEST_BOTH_LIBRARIES} ${TEST_QT_MODULES}) -target_link_libraries( - loader_local_matching_test libcockatrice_settings Threads::Threads ${GTEST_BOTH_LIBRARIES} ${TEST_QT_MODULES} -) +# Guard must match the condition for src/single_instance_manager.cpp in cockatrice/CMakeLists.txt. if(WITH_CLIENT) - target_link_libraries(single_instance_manager_test Threads::Threads ${GTEST_BOTH_LIBRARIES} ${TEST_QT_MODULES}) + cockatrice_add_test( + NAME + single_instance_manager_test + SOURCES + ${CMAKE_SOURCE_DIR}/cockatrice/src/single_instance_manager.cpp + single_instance_manager_test.cpp + INCLUDE_DIRS + ${CMAKE_SOURCE_DIR}/cockatrice/src + ${CMAKE_SOURCE_DIR}/libcockatrice_utility + ) endif() add_subdirectory(card_zone_algorithms) diff --git a/tests/card_zone_algorithms/CMakeLists.txt b/tests/card_zone_algorithms/CMakeLists.txt index e03d8f77d..945f8a0ed 100644 --- a/tests/card_zone_algorithms/CMakeLists.txt +++ b/tests/card_zone_algorithms/CMakeLists.txt @@ -1,15 +1,4 @@ -add_executable(card_zone_algorithms_test card_zone_algorithms_test.cpp) - -target_include_directories(card_zone_algorithms_test PRIVATE ${CMAKE_SOURCE_DIR}/cockatrice/src/game/zones) - -target_link_libraries( - card_zone_algorithms_test - PRIVATE Threads::Threads - PRIVATE ${GTEST_BOTH_LIBRARIES} +cockatrice_add_test( + NAME card_zone_algorithms_test SOURCES card_zone_algorithms_test.cpp INCLUDE_DIRS + ${CMAKE_SOURCE_DIR}/cockatrice/src/game/zones ) - -add_test(NAME card_zone_algorithms_test COMMAND card_zone_algorithms_test) - -if(NOT GTEST_FOUND) - add_dependencies(card_zone_algorithms_test gtest) -endif() diff --git a/tests/carddatabase/CMakeLists.txt b/tests/carddatabase/CMakeLists.txt index 811cebc1d..22171a9e8 100644 --- a/tests/carddatabase/CMakeLists.txt +++ b/tests/carddatabase/CMakeLists.txt @@ -9,61 +9,46 @@ add_definitions("-DCARDDB_DATADIR=\"${CMAKE_CURRENT_SOURCE_DIR}/data/\"") # ------------------------ # Card Database Test # ------------------------ -add_executable(carddatabase_test ${MOCKS_SOURCES} ${VERSION_STRING_CPP} carddatabase_test.cpp mocks.cpp) - -target_link_libraries( +cockatrice_add_test( + NAME carddatabase_test - PRIVATE libcockatrice_card - PRIVATE Threads::Threads - PRIVATE ${GTEST_BOTH_LIBRARIES} - PRIVATE ${TEST_QT_MODULES} + SOURCES + ${VERSION_STRING_CPP} + carddatabase_test.cpp + mocks.cpp + LIBS + libcockatrice_card ) -add_test(NAME carddatabase_test COMMAND carddatabase_test) - -# ------------------------ -# Load Benchmark (manual, not run in CI) -# ------------------------ -add_executable(load_benchmark ${MOCKS_SOURCES} ${VERSION_STRING_CPP} load_benchmark.cpp mocks.cpp) - -target_link_libraries( - load_benchmark - PRIVATE libcockatrice_card - PRIVATE libcockatrice_models - PRIVATE Threads::Threads - PRIVATE ${GTEST_BOTH_LIBRARIES} - PRIVATE ${TEST_QT_MODULES} -) - -if(NOT GTEST_FOUND) - add_dependencies(load_benchmark gtest) -endif() - # ------------------------ # Filter String Test # (guard must match the condition for libcockatrice_filters in the root CMakeLists.txt) # ------------------------ if(WITH_ORACLE OR WITH_CLIENT) - add_executable(filter_string_test ${MOCKS_SOURCES} ${VERSION_STRING_CPP} filter_string_test.cpp mocks.cpp) - - target_link_libraries( + cockatrice_add_test( + NAME filter_string_test - PRIVATE libcockatrice_filters - PRIVATE Threads::Threads - PRIVATE ${GTEST_BOTH_LIBRARIES} - PRIVATE ${TEST_QT_MODULES} + SOURCES + ${VERSION_STRING_CPP} + filter_string_test.cpp + mocks.cpp + LIBS + libcockatrice_filters ) - - add_test(NAME filter_string_test COMMAND filter_string_test) - - if(NOT GTEST_FOUND) - add_dependencies(filter_string_test gtest) - endif() endif() # ------------------------ -# Dependencies on gtest +# Load Benchmark (manual, not run in CI) # ------------------------ -if(NOT GTEST_FOUND) - add_dependencies(carddatabase_test gtest) -endif() +cockatrice_add_manual_test( + NAME + load_benchmark + SOURCES + ${VERSION_STRING_CPP} + load_benchmark.cpp + mocks.cpp + LIBS + libcockatrice_card + libcockatrice_models + MANUAL +) diff --git a/tests/deck_list_model/CMakeLists.txt b/tests/deck_list_model/CMakeLists.txt index e3096c559..cd7d693f3 100644 --- a/tests/deck_list_model/CMakeLists.txt +++ b/tests/deck_list_model/CMakeLists.txt @@ -1,33 +1,23 @@ -add_executable(deck_list_model_custom_zones_test ${VERSION_STRING_CPP} deck_list_model_custom_zones_test.cpp) - -if(NOT GTEST_FOUND) - add_dependencies(deck_list_model_custom_zones_test gtest) -endif() - -target_link_libraries( +cockatrice_add_test( + NAME deck_list_model_custom_zones_test + SOURCES + ${VERSION_STRING_CPP} + deck_list_model_custom_zones_test.cpp + LIBS 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( +cockatrice_add_test( + NAME deck_list_model_zone_integration_test + SOURCES + ${VERSION_STRING_CPP} + deck_list_model_zone_integration_test.cpp + LIBS 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) diff --git a/tests/deck_list_zones/CMakeLists.txt b/tests/deck_list_zones/CMakeLists.txt index 0710be94d..7af8fd187 100644 --- a/tests/deck_list_zones/CMakeLists.txt +++ b/tests/deck_list_zones/CMakeLists.txt @@ -1,10 +1 @@ -add_executable(deck_list_zones_test deck_list_zones_test.cpp) - -if(NOT GTEST_FOUND) - add_dependencies(deck_list_zones_test gtest) -endif() - -target_link_libraries( - deck_list_zones_test libcockatrice_deck_list Threads::Threads ${GTEST_BOTH_LIBRARIES} ${TEST_QT_MODULES} -) -add_test(NAME deck_list_zones_test COMMAND deck_list_zones_test) +cockatrice_add_test(NAME deck_list_zones_test SOURCES deck_list_zones_test.cpp LIBS libcockatrice_deck_list) diff --git a/tests/dummy_test.cpp b/tests/dummy_test.cpp deleted file mode 100644 index 8fd9c78dd..000000000 --- a/tests/dummy_test.cpp +++ /dev/null @@ -1,20 +0,0 @@ -#include "gtest/gtest.h" -#include - -namespace -{ -class FooTest : public ::testing::Test -{ -}; - -TEST(DummyTest, Works) -{ - ASSERT_EQ(1, 1) << "One is not equal to one"; -} -} // namespace - -int main(int argc, char **argv) -{ - ::testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); -} \ No newline at end of file diff --git a/tests/loading_from_clipboard/CMakeLists.txt b/tests/loading_from_clipboard/CMakeLists.txt index 719d62f45..88711e457 100644 --- a/tests/loading_from_clipboard/CMakeLists.txt +++ b/tests/loading_from_clipboard/CMakeLists.txt @@ -1,12 +1,13 @@ add_definitions("-DCARDDB_DATADIR=\"${CMAKE_CURRENT_SOURCE_DIR}/data/\"") -add_executable(loading_from_clipboard_test ${VERSION_STRING_CPP} clipboard_testing.cpp loading_from_clipboard_test.cpp) -if(NOT GTEST_FOUND) - add_dependencies(loading_from_clipboard_test gtest) -endif() - -target_link_libraries( - loading_from_clipboard_test libcockatrice_deck_list libcockatrice_card Threads::Threads ${GTEST_BOTH_LIBRARIES} - ${TEST_QT_MODULES} +cockatrice_add_test( + NAME + loading_from_clipboard_test + SOURCES + ${VERSION_STRING_CPP} + clipboard_testing.cpp + loading_from_clipboard_test.cpp + LIBS + libcockatrice_deck_list + libcockatrice_card ) -add_test(NAME loading_from_clipboard_test COMMAND loading_from_clipboard_test) diff --git a/tests/movecard_tests/CMakeLists.txt b/tests/movecard_tests/CMakeLists.txt index 769047148..68d8fc84c 100755 --- a/tests/movecard_tests/CMakeLists.txt +++ b/tests/movecard_tests/CMakeLists.txt @@ -1,16 +1,11 @@ -add_executable(reverse_card_move_test reverse_card_move_test.cpp) - -if(NOT GTEST_FOUND) - add_dependencies(reverse_card_move_test gtest) -endif() - -target_link_libraries( +cockatrice_add_test( + NAME reverse_card_move_test - PRIVATE libcockatrice_network_server_remote - PRIVATE libcockatrice_rng - PRIVATE Threads::Threads - PRIVATE ${GTEST_BOTH_LIBRARIES} - PRIVATE ${TEST_QT_MODULES} + SOURCES + reverse_card_move_test.cpp + LIBS + libcockatrice_network_server_remote + libcockatrice_rng + LABELS + server ) - -add_test(NAME reverse_card_move_test COMMAND reverse_card_move_test) diff --git a/tests/oracle/CMakeLists.txt b/tests/oracle/CMakeLists.txt index 9bc5ee5be..b4e376c22 100644 --- a/tests/oracle/CMakeLists.txt +++ b/tests/oracle/CMakeLists.txt @@ -1,33 +1,25 @@ -add_executable(parse_cipt_test ../../oracle/src/parsehelpers.cpp parse_cipt_test.cpp) - -if(NOT GTEST_FOUND) - add_dependencies(parse_cipt_test gtest) -endif() - -target_link_libraries(parse_cipt_test Threads::Threads ${GTEST_BOTH_LIBRARIES} ${TEST_QT_MODULES}) - -add_test(NAME parse_cipt_test COMMAND parse_cipt_test) +cockatrice_add_test(NAME parse_cipt_test SOURCES ../../oracle/src/parsehelpers.cpp parse_cipt_test.cpp) # Oracle importer unit tests -add_executable( - oracle_importer_test ${VERSION_STRING_CPP} ../../oracle/src/oracleimporter.cpp ../../oracle/src/parsehelpers.cpp - ../../oracle/src/raw_json_scanner.cpp oracle_importer_test.cpp +cockatrice_add_test( + NAME + oracle_importer_test + SOURCES + ${VERSION_STRING_CPP} + ../../oracle/src/oracleimporter.cpp + ../../oracle/src/parsehelpers.cpp + ../../oracle/src/raw_json_scanner.cpp + oracle_importer_test.cpp + LIBS + libcockatrice_card + libcockatrice_interfaces ) -if(NOT GTEST_FOUND) - add_dependencies(oracle_importer_test gtest) -endif() - -target_link_libraries( - oracle_importer_test libcockatrice_card libcockatrice_interfaces Threads::Threads ${GTEST_BOTH_LIBRARIES} - ${TEST_QT_MODULES} -) - -add_test(NAME oracle_importer_test COMMAND oracle_importer_test) - # Oracle importer benchmark tests (manual, not run in CI, incl. RAM benchmark) # Optional compression libs, mirrored from oracle/CMakeLists.txt, so the benchmark # can download and decompress whatever AllPrintings format the default URL selects. +# Declared after the unit tests above on purpose: add_definitions() only reaches +# targets created after it, so HAS_ZLIB/HAS_LZMA stay confined to the benchmark. find_package(ZLIB) if(ZLIB_FOUND) add_definitions("-DHAS_ZLIB") @@ -48,22 +40,20 @@ else() message(STATUS "Oracle tests: LibLZMA not found; xz download benchmark disabled") endif() -add_executable( - oracle_importer_benchmark_test - ${VERSION_STRING_CPP} ../../oracle/src/oracleimporter.cpp ../../oracle/src/parsehelpers.cpp - ../../oracle/src/raw_json_scanner.cpp oracle_importer_benchmark_test.cpp ${_ORACLE_BENCH_EXTRA_SOURCES} -) - -if(NOT GTEST_FOUND) - add_dependencies(oracle_importer_benchmark_test gtest) -endif() - -target_link_libraries( +cockatrice_add_manual_test( + NAME oracle_importer_benchmark_test + SOURCES + ${VERSION_STRING_CPP} + ../../oracle/src/oracleimporter.cpp + ../../oracle/src/parsehelpers.cpp + ../../oracle/src/raw_json_scanner.cpp + oracle_importer_benchmark_test.cpp + ${_ORACLE_BENCH_EXTRA_SOURCES} + LIBS libcockatrice_card libcockatrice_interfaces - Threads::Threads - ${GTEST_BOTH_LIBRARIES} - ${TEST_QT_MODULES} + EXTRA_LIBS ${_ORACLE_BENCH_EXTRA_LIBRARIES} + MANUAL ) diff --git a/tests/picture_loader_benchmark/CMakeLists.txt b/tests/picture_loader_benchmark/CMakeLists.txt index a3b75fe88..0684f58f4 100644 --- a/tests/picture_loader_benchmark/CMakeLists.txt +++ b/tests/picture_loader_benchmark/CMakeLists.txt @@ -1,8 +1,10 @@ -# Manual benchmark hitting the real card image hosts. Not registered with -# add_test(): it requires a cards.xml, touches the network for minutes at a -# time, and needs network access. Build it explicitly and run by hand. -add_executable( +# Manual benchmark hitting the real card image hosts. Not registered with CTest: it requires a +# cards.xml, touches the network for minutes at a time, and needs network access. Build it +# explicitly and run by hand. +cockatrice_add_manual_test( + NAME picture_loader_benchmark_test + SOURCES ${VERSION_STRING_CPP} ../../cockatrice/src/interface/card_picture_loader/card_picture_loader_local.cpp ../../cockatrice/src/interface/card_picture_loader/card_picture_to_load.cpp @@ -11,16 +13,12 @@ add_executable( ../../cockatrice/src/client/settings/cache_settings.h picture_loader_benchmark.cpp settings_cache_mock.cpp -) - -target_include_directories(picture_loader_benchmark_test PRIVATE ${CMAKE_SOURCE_DIR}/cockatrice/src) - -target_link_libraries( - picture_loader_benchmark_test + LIBS libcockatrice_card libcockatrice_settings libcockatrice_interfaces libcockatrice_utility - Threads::Threads - ${TEST_QT_MODULES} + INCLUDE_DIRS + ${CMAKE_SOURCE_DIR}/cockatrice/src + MANUAL ) diff --git a/tests/settings/CMakeLists.txt b/tests/settings/CMakeLists.txt index 7ee32a645..98bed1f4b 100644 --- a/tests/settings/CMakeLists.txt +++ b/tests/settings/CMakeLists.txt @@ -1,26 +1,14 @@ -add_executable(settings_manager_test settings_manager_test.cpp) -add_executable(settings_defaults_test settings_defaults_test.cpp) -add_executable(settings_migration_test settings_migration_test.cpp) +cockatrice_add_test(NAME settings_manager_test SOURCES settings_manager_test.cpp LIBS libcockatrice_settings) -target_link_libraries( - settings_manager_test libcockatrice_settings Threads::Threads ${GTEST_BOTH_LIBRARIES} ${TEST_QT_MODULES} +cockatrice_add_test( + NAME + settings_defaults_test + SOURCES + settings_defaults_test.cpp + LIBS + libcockatrice_settings + DEFINITIONS + SETTINGS_UNIT_TEST ) -target_link_libraries( - settings_defaults_test libcockatrice_settings Threads::Threads ${GTEST_BOTH_LIBRARIES} ${TEST_QT_MODULES} -) -target_compile_definitions(settings_defaults_test PRIVATE SETTINGS_UNIT_TEST) - -target_link_libraries( - settings_migration_test libcockatrice_settings Threads::Threads ${GTEST_BOTH_LIBRARIES} ${TEST_QT_MODULES} -) - -add_test(NAME settings_manager_test COMMAND settings_manager_test) -add_test(NAME settings_defaults_test COMMAND settings_defaults_test) -add_test(NAME settings_migration_test COMMAND settings_migration_test) - -if(NOT GTEST_FOUND) - add_dependencies(settings_manager_test gtest) - add_dependencies(settings_defaults_test gtest) - add_dependencies(settings_migration_test gtest) -endif() +cockatrice_add_test(NAME settings_migration_test SOURCES settings_migration_test.cpp LIBS libcockatrice_settings) diff --git a/tests/theme_migration/CMakeLists.txt b/tests/theme_migration/CMakeLists.txt index ac202210e..93493ee5f 100644 --- a/tests/theme_migration/CMakeLists.txt +++ b/tests/theme_migration/CMakeLists.txt @@ -1,5 +1,7 @@ -add_executable( +cockatrice_add_test( + NAME theme_migration_test + SOURCES ${CMAKE_SOURCE_DIR}/cockatrice/src/interface/theme_manager.cpp ${CMAKE_SOURCE_DIR}/cockatrice/src/interface/theme_config.cpp ${CMAKE_SOURCE_DIR}/cockatrice/src/interface/pixel_map_generator.cpp @@ -9,22 +11,11 @@ add_executable( ${CMAKE_SOURCE_DIR}/cockatrice/src/client/network/update/client/release_channel.cpp ${VERSION_STRING_CPP} theme_migration_test.cpp -) -target_include_directories(theme_migration_test PRIVATE ${CMAKE_SOURCE_DIR}/cockatrice/src) - -target_link_libraries( - theme_migration_test + LIBS libcockatrice_settings libcockatrice_network libcockatrice_network_server_remote libcockatrice_protocol - Threads::Threads - ${GTEST_BOTH_LIBRARIES} - ${TEST_QT_MODULES} + INCLUDE_DIRS + ${CMAKE_SOURCE_DIR}/cockatrice/src ) - -add_test(NAME theme_migration_test COMMAND theme_migration_test) - -if(NOT GTEST_FOUND) - add_dependencies(theme_migration_test gtest) -endif() From b9063a7b868cf2ee695bf144ffda6e555d3e29f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20Br=C3=BCbach?= Date: Mon, 5 Oct 2026 08:20:19 +0200 Subject: [PATCH 25/28] [Tests] Make QtTest available to test targets QtTest was not among the modules test targets could link, so the Qt model and signal contracts had no way to be verified from a test: QAbstractItemModelTester and QSignalSpy both live there. Add Test to _TEST_NEEDED in cmake/FindQtRuntime.cmake. That is the single place the union of test-only Qt modules is declared, so this is the only file that needs to change to make the module reachable from every test target. Nothing uses it yet. This lands the capability ahead of the model-layer tests that need it, so those can be added as tests alone rather than as test plus build-system plumbing. --- cmake/FindQtRuntime.cmake | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/cmake/FindQtRuntime.cmake b/cmake/FindQtRuntime.cmake index ad52352de..2d74aca4d 100644 --- a/cmake/FindQtRuntime.cmake +++ b/cmake/FindQtRuntime.cmake @@ -40,7 +40,9 @@ endif() if(TEST) # Union of Qt modules required across all test targets (independent of application targets). # When adding a new test that needs additional Qt modules, add them here rather than in the test's CMakeLists.txt. - set(_TEST_NEEDED Concurrent Network Svg Widgets) + # Test is QtTest: it brings QAbstractItemModelTester and QSignalSpy, which are how the Qt model + # and signal contracts get verified without standing up a GUI. + set(_TEST_NEEDED Concurrent Network Svg Widgets Test) endif() set(REQUIRED_QT_COMPONENTS ${REQUIRED_QT_COMPONENTS} ${_SERVATRICE_NEEDED} ${_COCKATRICE_NEEDED} ${_ORACLE_NEEDED} From e8739e175ee960a4627fe48194a6c7b1de24d022 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20Br=C3=BCbach?= Date: Mon, 5 Oct 2026 08:23:50 +0200 Subject: [PATCH 26/28] [Tests] Correct the note on the oracle test compression defines add_definitions() populates the directory's COMPILE_DEFINITIONS property, which is consumed at generate time, so it reaches every target in the directory no matter where it is called relative to add_executable(). The previous note claimed the flags stayed confined to the benchmark because the find_package block came after it; oracle_importer_test, created above that block, carries both defines too. Verified harmless rather than a live bug: HAS_ZLIB and HAS_LZMA gate code only in oracle/src/pages.cpp and oracle/src/pagetemplates.cpp, and no test target compiles either. The ordering and the leaked defines are both pre-existing, so this only corrects the explanation. --- tests/oracle/CMakeLists.txt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/oracle/CMakeLists.txt b/tests/oracle/CMakeLists.txt index b4e376c22..bbd0f932a 100644 --- a/tests/oracle/CMakeLists.txt +++ b/tests/oracle/CMakeLists.txt @@ -18,8 +18,9 @@ cockatrice_add_test( # Oracle importer benchmark tests (manual, not run in CI, incl. RAM benchmark) # Optional compression libs, mirrored from oracle/CMakeLists.txt, so the benchmark # can download and decompress whatever AllPrintings format the default URL selects. -# Declared after the unit tests above on purpose: add_definitions() only reaches -# targets created after it, so HAS_ZLIB/HAS_LZMA stay confined to the benchmark. +# add_definitions() is directory-scoped and order-independent, so HAS_ZLIB/HAS_LZMA also +# reach the two unit tests above. That is harmless: those macros gate code only in +# oracle/src/pages.cpp and oracle/src/pagetemplates.cpp, which no test target compiles. find_package(ZLIB) if(ZLIB_FOUND) add_definitions("-DHAS_ZLIB") From 3f9d6d70877898a4977f8ed59acaa083b314c713 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20Br=C3=BCbach?= Date: Mon, 5 Oct 2026 09:48:22 +0200 Subject: [PATCH 27/28] [Tests] Carry one CTest label per test instead of several gtest_discover_tests() can hand CTest exactly one label. GoogleTestAddTests.cmake accumulates its generated script with `foreach(arg ${ARGN})`, so a label list reaches the CTestTestfile as bare `LABELS ci server`, and CTest reads only the first value of a property and drops the rest without a word. The `ci` label that is appended to every registered test was therefore absent from every test that also asked for `server` or `bench`: `ctest -L ci` reported 400 of 469 cases, and `ctest --print-labels` never listed a second label anywhere in the build. Reduce each test to exactly one of `ci`, `server`, or `bench`, which is all the selections need. The three now partition the suite exactly, 400 + 64 + 5 = 469, and `ctest -LE bench` still means everything but benchmarks. A second label is now a configure-time FATAL_ERROR rather than a line that quietly means something else. Anything orthogonal to a test's kind belongs in a helper flag beside the label, so it composes with the group instead of competing for the single slot. Also raise DISCOVERY_TIMEOUT off GoogleTestAddTests' 5s default. A plain debug binary answers --gtest_list_tests in 0.04s, but that budget is thin once several binaries discover concurrently behind a -j build, and being over it fails at the *link* step with a bare "Process terminated due to timeout" that points nowhere near the cause. --- tests/CMakeLists.txt | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index b564a06d9..e021d481f 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -48,10 +48,19 @@ include_directories(${GTEST_INCLUDE_DIRS}) # hides which case failed and makes `ctest -R Suite.Case` impossible; discovery exposes each # TEST() as its own CTest entry instead. # -# Labels: `ci` is applied to every registered test and marks the default CI run, so -# `ctest -LE bench` is the fast hermetic set. Add `gui` for a test that constructs a -# QApplication (none do today — CI has no display), `server` for servatrice-facing tests -# so `ctest -L server` works, `bench` for the slow suites. +# Labels: exactly one per test, because gtest_discover_tests() cannot carry more than one. +# GoogleTestAddTests.cmake accumulates the generated script with `foreach(arg ${ARGN})`, so a +# label list serialises as bare `LABELS ci server` in the CTestTestfile, and CTest reads only +# the first value of a property and silently discards the rest. A label therefore classifies a +# test into exactly one group, and the three groups cover every selection worth making: +# +# ci the default hermetic set, so `ctest -LE bench` runs everything but benchmarks +# server servatrice-facing tests, so `ctest -L server` works +# bench the slow suites, kept out of the default run +# +# A second label is a configure-time FATAL_ERROR rather than a line CTest quietly reads as one. +# Anything orthogonal to a test's kind belongs in a helper flag beside the label, so it +# composes with the group instead of competing for the single slot. # # TIMEOUT is bounded per test because CTest's implicit default is 1500s: one hung socket wait # would otherwise stall CI for 25 minutes. @@ -93,14 +102,22 @@ function(cockatrice_add_test) return() endif() + # One label only, per the note above. Rejecting a second loudly beats emitting a + # CTestTestfile line that CTest will quietly read as one label. + list(LENGTH ARG_LABELS _label_count) + if(_label_count GREATER 1) + message(FATAL_ERROR "${ARG_NAME}: pass at most one label, got '${ARG_LABELS}'") + endif() if(NOT ARG_LABELS) set(ARG_LABELS ci) - else() - list(APPEND ARG_LABELS ci) endif() + # GoogleTestAddTests defaults DISCOVERY_TIMEOUT to 5s. A plain debug binary answers + # --gtest_list_tests in 0.04s, but that budget is thin once several binaries discover + # concurrently behind a -j build, and being over it fails at the *link* step with a bare + # "Process terminated due to timeout" that points nowhere near the cause. gtest_discover_tests( - ${ARG_NAME} DISCOVERY_MODE POST_BUILD + ${ARG_NAME} DISCOVERY_MODE POST_BUILD DISCOVERY_TIMEOUT 60 PROPERTIES LABELS "${ARG_LABELS}" TIMEOUT 60 ) From 72aa830e7cb080bbc55676c23cbe77d6b7ee95d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20Br=C3=BCbach?= Date: Mon, 5 Oct 2026 14:44:20 +0200 Subject: [PATCH 28/28] [Tests] Link gtest_main on the fetched-gtest path The downloaded-gtest branch set GTEST_BOTH_LIBRARIES to `gtest` alone, while FindGTest sets it to both halves. Every test target links that list rather than picking an entry point, so on this path nothing provides main() and any test source that does not define its own fails at link with `undefined reference to main` pointing at crt1.o, naming neither gtest nor the line responsible. That stayed latent while every test carried its own four-line main(). A test that omits it now fails, and the error points at the C runtime rather than at gtest, which is a long way from the cause. Restoring both halves makes the two paths agree and drops the boilerplate requirement on new test sources. The 18 sources that still define main() keep linking: gtest_main.cc defines nothing but main, so the linker leaves its object in the archive unused rather than reporting a duplicate. --- tests/CMakeLists.txt | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index e021d481f..6e7ad64f7 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -30,7 +30,11 @@ if(NOT GTEST_FOUND) target_include_directories(gtest INTERFACE "$") set(GTEST_INCLUDE_DIRS "${CMAKE_BINARY_DIR}/gtest-src/include") - set(GTEST_BOTH_LIBRARIES gtest) + # gtest_main is not optional here. FindGTest sets GTEST_BOTH_LIBRARIES to both halves, so this + # has to match it or the two paths disagree about what provides main(). A test source that + # defines its own main() gets away with the omission; one that does not fails at link with + # `undefined reference to main` pointing at crt1.o, which names neither gtest nor this line. + set(GTEST_BOTH_LIBRARIES gtest gtest_main) endif() # Directory-scoped on purpose: the test subdirectories below add targets that include the @@ -92,7 +96,7 @@ function(cockatrice_add_test) # Only needed when gtest was downloaded and add_subdirectory'd above. An imported gtest # target already carries its own dependency, so this must stay conditional. if(NOT GTEST_FOUND) - add_dependencies(${ARG_NAME} gtest) + add_dependencies(${ARG_NAME} gtest gtest_main) endif() # MANUAL targets are built but deliberately kept out of ctest: benchmarks that need a card