Skip to content

Introduce AAC‑Native UI Backbone (StateMachine, Events, Controller, Intent)#3088

Closed
trancer1994 wants to merge 68 commits intoBearWare:masterfrom
trancer1994:aac-ui-backbone
Closed

Introduce AAC‑Native UI Backbone (StateMachine, Events, Controller, Intent)#3088
trancer1994 wants to merge 68 commits intoBearWare:masterfrom
trancer1994:aac-ui-backbone

Conversation

@trancer1994
Copy link
Copy Markdown

This PR introduces the AAC‑native UI backbone for QtTeamTalk.
It establishes the architectural foundation for a complete replacement of the existing Qt UI, built around explicit state, predictable transitions, and an event‑driven interaction model.
This PR does not modify any existing UI screens.
Instead, it adds a new, isolated subsystem under QTTeamTalk/aac/ that future PRs will build upon.
Overview
This PR adds the core architectural layers required for the AAC‑native UI:

  1. AAC::Core::StateMachine
    A standalone, UI‑centric state engine that models:

    connection lifecycle

    audio/transmit/mute state

    backend‑driven transitions

    UI‑driven transitions
    It exposes a clean observer surface for UI components and will serve as the single source of truth for the new UI.
  2. AAC::UI::Events
    A lightweight event surface used by AAC UI components to express user actions:

    connect

    disconnect

    toggle transmit

    toggle mute
    Includes a small event dispatcher for decoupled UI → controller communication.
  3. AAC::UI::Controller::UiCoreController
    A bridge that subscribes to UI events and forwards them into the state machine.
    This keeps UI components simple and declarative.
  4. AAC::UI::Intent (optional typed API)
    A typed intent layer for UI components that prefer a more structured interface than raw events.
    Directory Structure
    All new code is isolated under:
    QTTeamTalk/aac/
    ├── core/ ← State machine (UI state engine)
    ├── ui/
    │ ├── events/ ← UI event surface + dispatcher
    │ ├── controller/ ← Event → StateMachine bridge
    │ └── intent/ ← Optional typed intent API
    This keeps the AAC‑native UI fully separate from the existing Qt UI and prepares the project for a gradual, maintainable transition.
    Purpose
    This PR lays the groundwork for:

    a fully AAC‑native, accessibility‑first UI

    predictable and testable UI state transitions

    a clean separation between UI, state, and backend

    future screens and widgets built on top of this architecture

    a complete replacement of the current Qt UI in later PRs
    Upcoming PRs will introduce:

    backend adapter (AAC::Backend)

    AAC UI shell window

    connection screen

    channel list

    transmit/mute controls

    settings UI
    Notes

    No existing QtTeamTalk UI code is modified.

    No backend logic is changed.

    This PR is intentionally self‑contained and non‑disruptive.

    All new code is namespaced under AAC to avoid collisions and clarify ownership.

….cpp to Client/qtTeamTalk/src/aac/aac_module.cpp
….h to Client/qtTeamTalk/src/aac/aac_module.h
…build

This commit introduces the first stage of the AAC‑native UI module.
It adds the following new components:
• 
aac/state_machine.* – core AAC UI state machine
• 
aac/events.h – event definitions for AAC transitions
• 
aac/ui/aac_ui.* – minimal AAC UI surface
• 
aac/aac_module.* – module entry point and integration layer
The new files are added to QTTEAMTALK_SOURCES without modifying any existing build logic, deployment rules, or platform‑specific sections. No behavioural changes are introduced; this commit only provides the structural foundation for future AAC‑native UI work.
Sorry, I don't know what I was thinking when I pushed that last commit. This is actually the real AAC UI events dispatcher header. The other commit was actually the UI events header for the foundation of the whole UI architecture.
@hwangsihu
Copy link
Copy Markdown
Contributor

Can we close #3079 and #3082?
There are many PRs containing the same code.
If you don't agree, I think #3079 should at least be closed.

@bear101 bear101 marked this pull request as draft January 11, 2026 08:27
@trancer1994
Copy link
Copy Markdown
Author

trancer1994 commented Jan 11, 2026 via email

@trancer1994
Copy link
Copy Markdown
Author

trancer1994 commented Jan 11, 2026 via email

@bear101
Copy link
Copy Markdown
Contributor

bear101 commented Jan 28, 2026

Superceeded by #3111

@bear101 bear101 closed this Jan 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants