/** @file doc_groups.dox * @brief Doxygen group definitions for Cockatrice. * * This file defines the documentation groups and hierarchy used * throughout the Cockatrice codebase. Reference these groups with @ingroup. */ /* ------------------------------------------------------------------ */ /* Core */ /* ------------------------------------------------------------------ */ /** * @defgroup Core Core * @brief Core utilities, shared types, and infrastructure. * * Provides the foundational building blocks used throughout Cockatrice. * This includes logging facilities, settings management, serialization helpers, * common enumerations, and general-purpose utility classes and functions. */ /* ------------------------------------------------------------------ */ /* UI */ /* ------------------------------------------------------------------ */ /** * @defgroup UI User Interface * @brief Graphical interface components built with Qt. * * Includes high-level widgets, dialogs, models, and editors that form * the interactive frontend of Cockatrice. */ /** * @defgroup Widgets Widgets * @ingroup UI * @brief General-purpose Qt widgets. * * A collection of reusable widgets used throughout the application, * such as CardInfoPictureFoilWidget, DeckAnalyticsWidget, and others. */ /** * @defgroup Dialogs Dialogs * @ingroup Widgets * @brief Application dialogs. * * Includes dialogs for card prices, DeckList import/export, * settings, and other modal user interactions. */ /** * @defgroup NetworkDialogs Networking Dialogs * @ingroup Dialogs * @ingroup NetworkingWidgets * @brief Dialogs related to a RemoteClient interacting with a Server. */ /** * @defgroup ClientUpdateDialogs Client Update Dialogs * @ingroup NetworkDialogs * @brief Dialogs relating to the client updating. */ /** * @defgroup CardDatabaseUpdateDialogs Card Database Update Dialogs * @ingroup NetworkDialogs * @ingroup CardDatabaseWidgets * @brief Dialogs relating to the CardDatabase updating. */ /** * @defgroup ConnectionDialogs Connection Dialogs * @ingroup NetworkDialogs * @brief Dialogs relating to the RemoteClient%s connection to a Server. */ /** * @defgroup AccountDialogs Account Dialogs * @ingroup NetworkDialogs * @brief Dialogs relating to account information on a Server. */ /** * @defgroup RoomDialogs * @ingroup NetworkDialogs * @brief Dialogs relating to a RemoteClient interacting with a Room on a Server. */ /** * @defgroup ServerLogDialogs Server Log Dialogs * @ingroup NetworkDialogs * @brief Dialogs relating to a RemoteClient interacting a Server%'s logs. */ /** * @defgroup Tabs Tabs * @ingroup Widgets * @brief Tabbed UI components. * * Provides tab-based interfaces for organizing and navigating * between multiple views in the application. */ /** * @defgroup DeckEditorTabs Deck Editor Tabs * @ingroup Tabs * @ingroup DeckEditors * @brief Tabs for the DeckList Editors */ /** * @defgroup NetworkingTabs Networking Tabs * @ingroup Tabs * @ingroup NetworkingWidgets * @brief Tabs related to a RemoteClient interacting with a Server. */ /** * @defgroup ServerTabs Server Tabs * @ingroup NetworkingTabs * @brief Tabs related to a Server. */ /** * @defgroup AccountTabs Account Tabs * @ingroup NetworkingTabs * @brief Tabs related to user account information. */ /** * @defgroup RoomTabs Room Tabs * @ingroup NetworkingTabs * @ingroup RoomWidgets * @brief Tabs related to a Room on a Server. */ /** * @defgroup MessagingTabs Message Tabs * @ingroup NetworkingTabs * @brief Tabs related to users sending messages to each other. */ /** * @defgroup PictureLoader Card Picture Loader * @ingroup UI * @ingroup Cards * @brief The PictureLoader for CardInfoPictureWidget%s and CardItem%s */ /* ------------------------------------------------------------------ */ /* Cards */ /* ------------------------------------------------------------------ */ /** * @defgroup Cards Cards * @brief Representation of individual cards and their state. * * Defines CardInfo and related objects which hold attributes, metadata, and runtime state within * both the CardDatabase and the Game engine. */ /** * @defgroup CardSets Card Sets * @ingroup Cards * @brief CardSet%s. */ /** * @defgroup CardPrintings Card Printings * @ingroup Cards * @brief Information about specific printings of CardInfo%s via PrintingInfo and ExactCard. */ /** * @defgroup CardWidgets Card Widgets * @ingroup Widgets * @ingroup Cards * @brief Widgets for CardInfo display and interaction. * * Provides UI components that render individual CardInfo%s, handle * interactions, and display card details within the application. */ /** * @defgroup CardExtraInfoWidgets Card Extra Info Widgets * @ingroup CardWidgets * @brief Widgets for displaying additional information about CardInfo%s. * * Displays additional data associated with CardInfo%s or data in a different form. */ /** * @defgroup CardDatabase Card Database * @ingroup Cards * @brief Core CardDatabase and loaders. * * Provides the underlying data models for cards, including loading, * parsing, and managing the complete CardDatabase used in the application. */ /** * @defgroup CardDatabaseModels Models * @ingroup CardDatabase * @brief Qt models for CardDatabase access. * * Supplies Qt model abstractions for presenting CardInfo data in views, * supporting filtering, sorting, and data binding to widgets. */ /** * @defgroup CardDatabaseModelFilters Filters * @ingroup CardDatabaseModels * @brief Filters for CardDatabase models. * * Provides reusable filtering components for Qt models, enabling * refined queries and customized CardDatabase views. */ /** * @defgroup CardDatabaseParsers Parsers * @ingroup CardDatabase * @brief Parsers for CardInfo data. * * Implements parsers for CardDatabase structures, handling the * transformation of raw data into structured objects and models. */ /** * @defgroup CardDatabaseWidgets Card Database Widgets * @ingroup Widgets * @ingroup CardDatabase * @brief Widgets for browsing and selecting CardInfo%s in the CardDatabase. * * Provides UI components for interacting with the CardDatabase, * including search, filtering, and browsing in tabular or list views. */ /** * @defgroup VisualCardDatabaseWidgets Visual Card Database Widgets * @ingroup CardDatabaseWidgets * @brief VisualDatabaseDisplayWidget and related helper classes. * * Enhances card browsing with graphical interfaces, offering * image-based and grid-based views for selecting cards. */ /* ------------------------------------------------------------------ */ /* Decks */ /* ------------------------------------------------------------------ */ /** * @defgroup Decks Deck Management * @brief DeckList handling, persistence, and tooling. * * Covers the lifecycle of DeckList%s: loading, saving, editing, import/export, * and long-term persistence, including both textual and visual editors. */ /** * @defgroup DeckModels Deck Models * @ingroup Decks * @brief Qt Models relating to DeckList. */ /** * @defgroup DeckEditors Deck Editors * @ingroup Decks * @brief Editors for creating and modifying a DeckList. * * Provides visual and textual editors for building, modifying, * and analyzing DeckList%s. Includes support for card search, * sorting, and filtering of DeckList contents. */ /** * @defgroup DeckEditorWidgets Deck Editor Widgets * @ingroup Widgets * @ingroup DeckEditors * @brief Supporting widgets for DeckList editors. * * Contains specialized UI components that extend DeckList editors with * interactive functionality, data views, and user interaction tools. */ /** * @defgroup DeckEditorTabs Deck Editor Tabs * @ingroup DeckEditorWidgets * @brief Tabs which implement AbstractTabDeckEditor to provide DeckList editing functionality. */ /** * @defgroup DeckEditorAnalyticsWidgets Deck Editor Analytics Widgets * @ingroup DeckEditorWidgets * @brief Widgets for analyzing a DeckList. * * Provides visualization and statistical tools for analyzing DeckList%s. */ /** * @defgroup DeckEditorCardGroupWidgets Card Group Display Widgets * @ingroup DeckEditorWidgets * @brief Widgets for displaying groups of cards. * * Provides interactive views that organize and display cards in groups, * enabling filtering, sorting, and direct manipulation of DeckList sections. */ /** * @defgroup PrintingWidgets Printing Widgets * @ingroup DeckEditorWidgets * @ingroup Widgets * @brief Widgets for handling PrintingInfo of cards in a DeckList. * * Manages the display and editing of card printing information within a DeckList, * including editions, variations, and preferences. */ /** * @defgroup DeckStorage Deck Storage * @ingroup Decks * @brief Systems for storing a DeckList on a local file system or remote service. */ /** * @defgroup LocalDeckStorage Local Deck Storage * @ingroup DeckStorage * @brief Systems for storing a DeckList on a local file system. * * Handles the persistence of a DeckList, providing file-based storage, * metadata tracking, and tagging functionality. */ /** * @defgroup LocalDeckStorageWidgets Local Deck Storage Widgets * @ingroup Widgets * @ingroup LocalDeckStorage * @brief Widgets for browsing and managing stored DeckList%s. * * Provides list and tree-based views for exploring stored DeckList%s, * including tagging, searching, and preview functionality. */ /** * @defgroup LocalDeckStorageDialogs Local Deck Storage Dialogs * @ingroup LocalDeckStorageWidgets * @ingroup ImportExport * @ingroup Lobby * @brief Dialogs related to interacting with DeckList%s on a filesystem or in a remote location. */ /** * @defgroup VisualDeckStorageWidgets Visual Deck Storage Widgets * @ingroup LocalDeckStorageWidgets * @brief Visual widgets for DeckList storage. * * Offers graphical interfaces for browsing and interacting with a stored * DeckList and tags, focusing on a more visual browsing experience. */ /** * @defgroup VisualDeckPreviewWidgets Visual Deck Preview Widgets * @ingroup VisualDeckStorageWidgets * @brief Widgets for visually previewing a DeckList. * * Provides visual previews of a DeckList, allowing users * to inspect the DeckList name, color identity, and banner card at a glance. */ /** * @defgroup RemoteDeckStorage Remote Deck Storage * @ingroup DeckStorage * @brief Systems for storing a DeckList on a remote service. */ /** * @defgroup RemoteDeckStorageWidgets Remote Deck Storage Widgets * @ingroup Widgets * @ingroup RemoteDeckStorage * @ingroup ImportExport * @ingroup Lobby * @brief Widgets related to interacting with DeckList%s on a filesystem or in a remote location. */ /** * @defgroup RemoteDeckStorageDialogs Remote Deck Storage Dialogs * @ingroup RemoteDeckStorageWidgets * @brief Dialogs related to interacting with DeckList%s on a filesystem or in a remote location. */ /** * @defgroup ImportExport Import/Export * @ingroup DeckStorage * @brief DeckList import, export, and conversion. * * Supports importing and exporting a DeckList across formats, including * text, Cockatrice-native formats, and third-party platforms. */ /** * @defgroup Parsing Parsing * @ingroup DeckStorage * @brief DeckList parsing and external API integration. * * Contains parsers for DeckList URLs and APIs (e.g., TappedOut, Archidekt, * Moxfield, Deckstats), allowing seamless import and synchronization. */ /* ------------------------------------------------------------------ */ /* Game */ /* ------------------------------------------------------------------ */ /** * @defgroup Game Game * @brief Core Game framework. * * Responsible for the main Game loop, GameState management, * CardZone handling, and resolution of actions during a Game. */ /** * @defgroup GameUi User Interface * @ingroup Game * @brief Graphical components for interaction during a Game. * * Provides Qt-based widgets, dialogs, and menus used during a Game, * supporting both visual presentation and interaction logic. */ /** * @defgroup GameLobby Lobby * @ingroup GameUi * @brief User interface for the multiplayer lobby. * * Contains widgets, dialogs, and models used to interact with the * lobby within the Game UI layer. */ /** * @defgroup GameWidgets Game Widgets * @ingroup Widgets * @ingroup GameUi * @brief Widgets specific to the interface in a Game. * * Provides reusable visual components that represent elements * of the ongoing Game, such as a PlayerGraphicsItem or CardZone views. */ /** * @defgroup GameDialogs Dialogs * @ingroup GameUi * @brief Dialogs for Game%s. * * Modal and non-modal dialogs for Player interaction during a Game, * including prompts, confirmations, and detailed views. */ /** * @defgroup GameMenus Menus * @ingroup GameUi * @brief Menus for Game%s. * * Provides menu bars, context menus, and hierarchical options * available to the Player during a Game session. */ /** * @defgroup GameMenusPlayers Player * @ingroup GameMenus * @brief Menus specific to Player actions. * * Defines context menus and options relating to Player state and PlayerActions. */ /** * @defgroup GameMenusZones Zones * @ingroup GameMenus * @brief Menus for interacting with zones. * * Provides contextual options for a CardZone such as the hand, * library, graveyard, and battlefield. */ /** * @defgroup GameMenusCards Cards * @ingroup GameMenus * @brief Menus for CardItem interactions. * * Defines right-click menus and contextual options available * when interacting with an individual CardItem. */ /** * @defgroup GameGraphics Graphics * @ingroup GameUi * @brief Visual graphics for Game elements. * * Provides rendering and layout for core Game objects such as a * Player, CardZone, or CardItem in the interface. */ /** * @defgroup GameGraphicsPlayers Players * @ingroup GameGraphics * @brief Player-specific graphical elements. * * Defines visual representations of a Player, their states, * and associated on-screen information. */ /** * @defgroup GameGraphicsZones Zones * @ingroup GameGraphics * @brief Graphical representations of zones. * * Provides layout, visuals, and animations for a CardZone like the hand, * library, battlefield, and graveyard. */ /** * @defgroup GameGraphicsCards Cards * @ingroup GameGraphics * @brief Graphical representation of cards. * * Manages the visual look and behavior of a CardItem when displayed * in the Game interface. */ /** * @defgroup GameLogic Logic * @ingroup Game * @brief Game logic and rules framework. * * Implements resolution of actions and logical * state management for an ongoing Game. */ /** * @defgroup GameLogicPlayers Players * @ingroup GameLogic * @brief Logic related to Player state. * * Handles Player attributes, PlayerActions, resources, and their impact * on GameState. */ /** * @defgroup GameLogicZones Zones * @ingroup GameLogic * @brief Logical handling of CardZones during a Game. * * Defines the rules and behaviors of zones such as the hand, * battlefield, library, and graveyard. */ /** * @defgroup GameLogicActions Actions * @ingroup GameLogic * @brief Actions, events, and their resolution. * * Encapsulates how actions are created, queued, and resolved, * including event handling and triggered effects. */ /* ------------------------------------------------------------------ */ /* Networking */ /* ------------------------------------------------------------------ */ /** * @defgroup Network Networking * @brief Networking components for client/server communication. * * Contains all systems related to communication between client and server. * This includes lobby and room management, server interaction logic, and * message handling infrastructure based on protobuf. */ /** * @defgroup ApiInterfaces API Interfaces * @ingroup Client * @ingroup Parsing * @ingroup ImportExport * @brief Interfaces for interacting with various APIs */ /** * @defgroup ApiResponses API Responses * @ingroup ApiInterfaces * @brief Structures representing API responses. * * Encapsulates the data models for networking API responses, * providing consistent interfaces for parsing and handling results. */ /** * @defgroup ApiResponseDisplayWidgets API Response Display Widgets * @ingroup Widgets * @ingroup ApiResponses * @brief Widgets for displaying API responses. * * Provides user interface components that render and present API response * data to the user in a structured and interactive way. */ /** * @defgroup Messages Protocol Messages * @ingroup Network * @brief Protocol message definitions and handlers. * * Contains the generated protobuf messages and supporting code used * to encode, decode, and process communication between client and server. */ /** * @defgroup Client Client * @ingroup Network * @brief The Cockatrice client application. * * Handles all client-side communication with the server. */ /** * @defgroup NetworkingWidgets Networking Widgets * @ingroup Widgets * @ingroup Client * @brief Widgets related to a RemoteClient interacting with a Server. */ /** * @defgroup ClientUpdates Client Updates * @ingroup Client * @brief Client updates. */ /** * @defgroup Server Server * @ingroup Network * @brief The Cockatrice server application. * * Provides the authoritative game backend, handling authentication, * lobbies, game rooms, and relaying state between connected clients. */ /** * @defgroup RoomWidgets Room Widgets * @ingroup Widgets * @ingroup Client * @brief Server room management. * * Manages creation and interaction of Game lobbies and room state synchronization with the server. */ /* ------------------------------------------------------------------ */ /* Replay */ /* ------------------------------------------------------------------ */ /** * @defgroup Replay Replays * @brief Replay recording and playback. * * Provides mechanisms for capturing Game sessions, storing them in * replay files, and replaying them for review or analysis. */ /* ------------------------------------------------------------------ */ /* Settings */ /* ------------------------------------------------------------------ */ /** * @defgroup Settings Settings * @brief Application settings and configuration. * * Centralizes the configuration system, providing persistence and * runtime access to user preferences and application options. */ /** * @defgroup SettingsWidgets Settings Widgets * @ingroup Widgets * @ingroup Settings * @brief TODO: Document this */ /** * @defgroup CoreSettings Core Settings * @ingroup Settings * @brief TODO: Document this */ /** * @defgroup NetworkSettings Network Settings * @ingroup Settings * @brief TODO: Document this */ /** * @defgroup GameSettings Game Settings * @ingroup Settings * @brief TODO: Document this */ /** * @defgroup CardSettings Card Settings * @ingroup Settings * @brief TODO: Document this */ /** * @defgroup DeckSettings Deck Settings * @ingroup Settings * @brief TODO: Document this */ /* ------------------------------------------------------------------ */ /* Tests */ /* ------------------------------------------------------------------ */ /** * @defgroup Tests Tests * @brief Automated testing framework. * * Provides unit tests, integration tests, and regression checks * to ensure stability and correctness of the Cockatrice codebase. */