yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
yaze::editor::SessionCoordinator Class Reference

High-level orchestrator for multi-session UI. More...

#include <session_coordinator.h>

Collaboration diagram for yaze::editor::SessionCoordinator:

Public Member Functions

 SessionCoordinator (void *sessions_ptr, EditorCardRegistry *card_registry, ToastManager *toast_manager, UserSettings *user_settings)
 
 ~SessionCoordinator ()=default
 
void SetEditorManager (EditorManager *manager)
 
void CreateNewSession ()
 
void DuplicateCurrentSession ()
 
void CloseCurrentSession ()
 
void CloseSession (size_t index)
 
void RemoveSession (size_t index)
 
void SwitchToSession (size_t index)
 
void ActivateSession (size_t index)
 
size_t GetActiveSessionIndex () const
 
void * GetActiveSession () const
 
RomSessionGetActiveRomSession () const
 
RomGetCurrentRom () const
 
EditorSetGetCurrentEditorSet () const
 
void * GetSession (size_t index) const
 
bool HasMultipleSessions () const
 
size_t GetActiveSessionCount () const
 
bool HasDuplicateSession (const std::string &filepath) const
 
void DrawSessionSwitcher ()
 
void DrawSessionManager ()
 
void DrawSessionRenameDialog ()
 
void DrawSessionTabs ()
 
void DrawSessionIndicator ()
 
std::string GetSessionDisplayName (size_t index) const
 
std::string GetActiveSessionDisplayName () const
 
void RenameSession (size_t index, const std::string &new_name)
 
std::string GenerateUniqueEditorTitle (const std::string &editor_name, size_t session_index) const
 
void SetActiveSessionIndex (size_t index)
 
void UpdateSessionCount ()
 
void ShowAllCardsInActiveSession ()
 
void HideAllCardsInActiveSession ()
 
void ShowCardsInCategory (const std::string &category)
 
void HideCardsInCategory (const std::string &category)
 
bool IsValidSessionIndex (size_t index) const
 
bool IsSessionActive (size_t index) const
 
bool IsSessionLoaded (size_t index) const
 
size_t GetTotalSessionCount () const
 
size_t GetLoadedSessionCount () const
 
size_t GetEmptySessionCount () const
 
absl::Status LoadRomIntoSession (const std::string &filename, size_t session_index=SIZE_MAX)
 
absl::Status SaveActiveSession (const std::string &filename="")
 
absl::Status SaveSessionAs (size_t session_index, const std::string &filename)
 
absl::StatusOr< RomSession * > CreateSessionFromRom (Rom &&rom, const std::string &filepath)
 
void CleanupClosedSessions ()
 
void ClearAllSessions ()
 
void FocusNextSession ()
 
void FocusPreviousSession ()
 
void FocusFirstSession ()
 
void FocusLastSession ()
 
void ShowSessionSwitcher ()
 
void HideSessionSwitcher ()
 
void ToggleSessionSwitcher ()
 
bool IsSessionSwitcherVisible () const
 
void ShowSessionManager ()
 
void HideSessionManager ()
 
void ToggleSessionManager ()
 
bool IsSessionManagerVisible () const
 
void UpdateActiveSession ()
 
void ValidateSessionIndex (size_t index) const
 
std::string GenerateUniqueSessionName (const std::string &base_name) const
 
void ShowSessionLimitWarning ()
 
void ShowSessionOperationResult (const std::string &operation, bool success)
 
void DrawSessionTab (size_t index, bool is_active)
 
void DrawSessionContextMenu (size_t index)
 
void DrawSessionBadge (size_t index)
 
ImVec4 GetSessionColor (size_t index) const
 
std::string GetSessionIcon (size_t index) const
 
bool IsSessionEmpty (size_t index) const
 
bool IsSessionClosed (size_t index) const
 
bool IsSessionModified (size_t index) const
 

Private Attributes

EditorManagereditor_manager_ = nullptr
 
void * sessions_ptr_
 
EditorCardRegistrycard_registry_
 
ToastManagertoast_manager_
 
UserSettingsuser_settings_
 
size_t active_session_index_ = 0
 
size_t session_count_ = 0
 
bool show_session_switcher_ = false
 
bool show_session_manager_ = false
 
bool show_session_rename_dialog_ = false
 
size_t session_to_rename_ = 0
 
char session_rename_buffer_ [256] = {}
 

Static Private Attributes

static constexpr size_t kMaxSessions = 8
 
static constexpr size_t kMinSessions = 1
 

Detailed Description

High-level orchestrator for multi-session UI.

Manages session list UI, coordinates card visibility across sessions, handles session activation/deactivation, and provides session-aware editor queries.

This class lives in the ui/ layer and can depend on both system and gui components.

Definition at line 40 of file session_coordinator.h.

Constructor & Destructor Documentation

◆ SessionCoordinator()

yaze::editor::SessionCoordinator::SessionCoordinator ( void *  sessions_ptr,
EditorCardRegistry card_registry,
ToastManager toast_manager,
UserSettings user_settings 
)
explicit

Definition at line 15 of file session_coordinator.cc.

References active_session_index_, session_count_, and sessions_ptr_.

◆ ~SessionCoordinator()

yaze::editor::SessionCoordinator::~SessionCoordinator ( )
default

Member Function Documentation

◆ SetEditorManager()

void yaze::editor::SessionCoordinator::SetEditorManager ( EditorManager manager)
inline

Definition at line 48 of file session_coordinator.h.

References editor_manager_.

◆ CreateNewSession()

void yaze::editor::SessionCoordinator::CreateNewSession ( )

◆ DuplicateCurrentSession()

void yaze::editor::SessionCoordinator::DuplicateCurrentSession ( )
Todo:
Implement proper duplication when editors become movable

Definition at line 56 of file session_coordinator.cc.

References active_session_index_, GET_SESSIONS, kMaxSessions, LOG_INFO, session_count_, ShowSessionLimitWarning(), ShowSessionOperationResult(), and UpdateSessionCount().

Referenced by DrawSessionSwitcher(), and yaze::editor::MenuOrchestrator::OnDuplicateCurrentSession().

Here is the call graph for this function:

◆ CloseCurrentSession()

void yaze::editor::SessionCoordinator::CloseCurrentSession ( )

Definition at line 80 of file session_coordinator.cc.

References active_session_index_, and CloseSession().

Referenced by DrawSessionSwitcher(), and yaze::editor::MenuOrchestrator::OnCloseCurrentSession().

Here is the call graph for this function:

◆ CloseSession()

◆ RemoveSession()

void yaze::editor::SessionCoordinator::RemoveSession ( size_t  index)

Definition at line 122 of file session_coordinator.cc.

References CloseSession().

Here is the call graph for this function:

◆ SwitchToSession()

◆ ActivateSession()

void yaze::editor::SessionCoordinator::ActivateSession ( size_t  index)

Definition at line 137 of file session_coordinator.cc.

References SwitchToSession().

Here is the call graph for this function:

◆ GetActiveSessionIndex()

size_t yaze::editor::SessionCoordinator::GetActiveSessionIndex ( ) const

◆ GetActiveSession()

void * yaze::editor::SessionCoordinator::GetActiveSession ( ) const

Definition at line 145 of file session_coordinator.cc.

References active_session_index_, GET_SESSIONS, and IsValidSessionIndex().

Referenced by GetActiveRomSession().

Here is the call graph for this function:

◆ GetActiveRomSession()

RomSession * yaze::editor::SessionCoordinator::GetActiveRomSession ( ) const

Definition at line 153 of file session_coordinator.cc.

References GetActiveSession().

Referenced by GetCurrentEditorSet(), and GetCurrentRom().

Here is the call graph for this function:

◆ GetCurrentRom()

Rom * yaze::editor::SessionCoordinator::GetCurrentRom ( ) const

Definition at line 157 of file session_coordinator.cc.

References GetActiveRomSession().

Here is the call graph for this function:

◆ GetCurrentEditorSet()

EditorSet * yaze::editor::SessionCoordinator::GetCurrentEditorSet ( ) const

Definition at line 162 of file session_coordinator.cc.

References GetActiveRomSession().

Here is the call graph for this function:

◆ GetSession()

void * yaze::editor::SessionCoordinator::GetSession ( size_t  index) const

Definition at line 167 of file session_coordinator.cc.

References GET_SESSIONS, and IsValidSessionIndex().

Referenced by yaze::editor::UICoordinator::DrawRomSelector().

Here is the call graph for this function:

◆ HasMultipleSessions()

◆ GetActiveSessionCount()

size_t yaze::editor::SessionCoordinator::GetActiveSessionCount ( ) const

◆ HasDuplicateSession()

bool yaze::editor::SessionCoordinator::HasDuplicateSession ( const std::string &  filepath) const

Definition at line 183 of file session_coordinator.cc.

References GET_SESSIONS.

◆ DrawSessionSwitcher()

◆ DrawSessionManager()

◆ DrawSessionRenameDialog()

void yaze::editor::SessionCoordinator::DrawSessionRenameDialog ( )

Definition at line 359 of file session_coordinator.cc.

References RenameSession(), session_rename_buffer_, session_to_rename_, and show_session_rename_dialog_.

Here is the call graph for this function:

◆ DrawSessionTabs()

void yaze::editor::SessionCoordinator::DrawSessionTabs ( )

Definition at line 393 of file session_coordinator.cc.

References active_session_index_, DrawSessionContextMenu(), GET_SESSIONS, GetSessionDisplayName(), ICON_MD_CHECK_CIRCLE, and SwitchToSession().

Here is the call graph for this function:

◆ DrawSessionIndicator()

◆ GetSessionDisplayName()

std::string yaze::editor::SessionCoordinator::GetSessionDisplayName ( size_t  index) const

◆ GetActiveSessionDisplayName()

std::string yaze::editor::SessionCoordinator::GetActiveSessionDisplayName ( ) const

Definition at line 473 of file session_coordinator.cc.

References active_session_index_, and GetSessionDisplayName().

Referenced by DrawSessionIndicator().

Here is the call graph for this function:

◆ RenameSession()

void yaze::editor::SessionCoordinator::RenameSession ( size_t  index,
const std::string &  new_name 
)

Definition at line 477 of file session_coordinator.cc.

References GET_SESSIONS, IsValidSessionIndex(), and LOG_INFO.

Referenced by DrawSessionRenameDialog().

Here is the call graph for this function:

◆ GenerateUniqueEditorTitle()

std::string yaze::editor::SessionCoordinator::GenerateUniqueEditorTitle ( const std::string &  editor_name,
size_t  session_index 
) const

Definition at line 488 of file session_coordinator.cc.

References GET_SESSIONS.

◆ SetActiveSessionIndex()

void yaze::editor::SessionCoordinator::SetActiveSessionIndex ( size_t  index)

Definition at line 515 of file session_coordinator.cc.

References SwitchToSession().

Here is the call graph for this function:

◆ UpdateSessionCount()

void yaze::editor::SessionCoordinator::UpdateSessionCount ( )

◆ ShowAllCardsInActiveSession()

void yaze::editor::SessionCoordinator::ShowAllCardsInActiveSession ( )

Definition at line 528 of file session_coordinator.cc.

References active_session_index_, card_registry_, and yaze::editor::EditorCardRegistry::ShowAllCardsInSession().

Here is the call graph for this function:

◆ HideAllCardsInActiveSession()

void yaze::editor::SessionCoordinator::HideAllCardsInActiveSession ( )

Definition at line 534 of file session_coordinator.cc.

References active_session_index_, card_registry_, and yaze::editor::EditorCardRegistry::HideAllCardsInSession().

Here is the call graph for this function:

◆ ShowCardsInCategory()

void yaze::editor::SessionCoordinator::ShowCardsInCategory ( const std::string &  category)

Definition at line 540 of file session_coordinator.cc.

References active_session_index_, card_registry_, and yaze::editor::EditorCardRegistry::ShowAllCardsInCategory().

Here is the call graph for this function:

◆ HideCardsInCategory()

void yaze::editor::SessionCoordinator::HideCardsInCategory ( const std::string &  category)

Definition at line 546 of file session_coordinator.cc.

References active_session_index_, card_registry_, and yaze::editor::EditorCardRegistry::HideAllCardsInCategory().

Here is the call graph for this function:

◆ IsValidSessionIndex()

◆ IsSessionActive()

bool yaze::editor::SessionCoordinator::IsSessionActive ( size_t  index) const

Definition at line 557 of file session_coordinator.cc.

References active_session_index_.

◆ IsSessionLoaded()

bool yaze::editor::SessionCoordinator::IsSessionLoaded ( size_t  index) const

Definition at line 561 of file session_coordinator.cc.

References GET_SESSIONS, and IsValidSessionIndex().

Here is the call graph for this function:

◆ GetTotalSessionCount()

size_t yaze::editor::SessionCoordinator::GetTotalSessionCount ( ) const

◆ GetLoadedSessionCount()

size_t yaze::editor::SessionCoordinator::GetLoadedSessionCount ( ) const

Definition at line 571 of file session_coordinator.cc.

References GET_SESSIONS.

Referenced by DrawSessionManager(), and GetEmptySessionCount().

◆ GetEmptySessionCount()

size_t yaze::editor::SessionCoordinator::GetEmptySessionCount ( ) const

Definition at line 585 of file session_coordinator.cc.

References GetLoadedSessionCount(), and session_count_.

Referenced by DrawSessionManager().

Here is the call graph for this function:

◆ LoadRomIntoSession()

absl::Status yaze::editor::SessionCoordinator::LoadRomIntoSession ( const std::string &  filename,
size_t  session_index = SIZE_MAX 
)
Todo:
Implement actual ROM loading

Definition at line 589 of file session_coordinator.cc.

References active_session_index_, GET_SESSIONS, IsValidSessionIndex(), and LOG_INFO.

Here is the call graph for this function:

◆ SaveActiveSession()

absl::Status yaze::editor::SessionCoordinator::SaveActiveSession ( const std::string &  filename = "")
Todo:
Implement actual ROM saving

Definition at line 609 of file session_coordinator.cc.

References active_session_index_, GET_SESSIONS, IsValidSessionIndex(), and LOG_INFO.

Here is the call graph for this function:

◆ SaveSessionAs()

absl::Status yaze::editor::SessionCoordinator::SaveSessionAs ( size_t  session_index,
const std::string &  filename 
)
Todo:
Implement actual ROM saving

Definition at line 623 of file session_coordinator.cc.

References GET_SESSIONS, IsValidSessionIndex(), and LOG_INFO.

Here is the call graph for this function:

◆ CreateSessionFromRom()

absl::StatusOr< RomSession * > yaze::editor::SessionCoordinator::CreateSessionFromRom ( Rom &&  rom,
const std::string &  filepath 
)

Definition at line 637 of file session_coordinator.cc.

References yaze::editor::RomSession::filepath, GET_SESSIONS, SwitchToSession(), UpdateSessionCount(), and user_settings_.

Here is the call graph for this function:

◆ CleanupClosedSessions()

void yaze::editor::SessionCoordinator::CleanupClosedSessions ( )
Todo:
Actually remove when editors become movable

Definition at line 654 of file session_coordinator.cc.

References GET_SESSIONS, LOG_INFO, session_count_, and UpdateSessionCount().

Here is the call graph for this function:

◆ ClearAllSessions()

void yaze::editor::SessionCoordinator::ClearAllSessions ( )
Todo:
Actually clear when editors become movable

Definition at line 681 of file session_coordinator.cc.

References active_session_index_, card_registry_, GET_SESSIONS, LOG_INFO, yaze::editor::EditorCardRegistry::UnregisterSession(), and UpdateSessionCount().

Here is the call graph for this function:

◆ FocusNextSession()

void yaze::editor::SessionCoordinator::FocusNextSession ( )

Definition at line 705 of file session_coordinator.cc.

References active_session_index_, GET_SESSIONS, and SwitchToSession().

Here is the call graph for this function:

◆ FocusPreviousSession()

void yaze::editor::SessionCoordinator::FocusPreviousSession ( )

Definition at line 714 of file session_coordinator.cc.

References active_session_index_, GET_SESSIONS, and SwitchToSession().

Here is the call graph for this function:

◆ FocusFirstSession()

void yaze::editor::SessionCoordinator::FocusFirstSession ( )

Definition at line 724 of file session_coordinator.cc.

References GET_SESSIONS, and SwitchToSession().

Here is the call graph for this function:

◆ FocusLastSession()

void yaze::editor::SessionCoordinator::FocusLastSession ( )

Definition at line 731 of file session_coordinator.cc.

References GET_SESSIONS, and SwitchToSession().

Here is the call graph for this function:

◆ ShowSessionSwitcher()

void yaze::editor::SessionCoordinator::ShowSessionSwitcher ( )
inline

◆ HideSessionSwitcher()

void yaze::editor::SessionCoordinator::HideSessionSwitcher ( )
inline

◆ ToggleSessionSwitcher()

void yaze::editor::SessionCoordinator::ToggleSessionSwitcher ( )
inline

◆ IsSessionSwitcherVisible()

bool yaze::editor::SessionCoordinator::IsSessionSwitcherVisible ( ) const
inline

◆ ShowSessionManager()

void yaze::editor::SessionCoordinator::ShowSessionManager ( )
inline

Definition at line 125 of file session_coordinator.h.

References show_session_manager_.

◆ HideSessionManager()

void yaze::editor::SessionCoordinator::HideSessionManager ( )
inline

Definition at line 126 of file session_coordinator.h.

References show_session_manager_.

◆ ToggleSessionManager()

void yaze::editor::SessionCoordinator::ToggleSessionManager ( )
inline

Definition at line 127 of file session_coordinator.h.

References show_session_manager_.

◆ IsSessionManagerVisible()

bool yaze::editor::SessionCoordinator::IsSessionManagerVisible ( ) const
inline

Definition at line 128 of file session_coordinator.h.

References show_session_manager_.

◆ UpdateActiveSession()

void yaze::editor::SessionCoordinator::UpdateActiveSession ( )

Definition at line 738 of file session_coordinator.cc.

References active_session_index_, and GET_SESSIONS.

◆ ValidateSessionIndex()

void yaze::editor::SessionCoordinator::ValidateSessionIndex ( size_t  index) const

Definition at line 746 of file session_coordinator.cc.

References IsValidSessionIndex().

Here is the call graph for this function:

◆ GenerateUniqueSessionName()

std::string yaze::editor::SessionCoordinator::GenerateUniqueSessionName ( const std::string &  base_name) const

Definition at line 753 of file session_coordinator.cc.

References GET_SESSIONS.

◆ ShowSessionLimitWarning()

void yaze::editor::SessionCoordinator::ShowSessionLimitWarning ( )

Definition at line 780 of file session_coordinator.cc.

References kMaxSessions, yaze::editor::kWarning, yaze::editor::ToastManager::Show(), and toast_manager_.

Referenced by CreateNewSession(), and DuplicateCurrentSession().

Here is the call graph for this function:

◆ ShowSessionOperationResult()

void yaze::editor::SessionCoordinator::ShowSessionOperationResult ( const std::string &  operation,
bool  success 
)

Definition at line 788 of file session_coordinator.cc.

References yaze::editor::kError, yaze::editor::kSuccess, yaze::editor::ToastManager::Show(), and toast_manager_.

Referenced by CloseSession(), CreateNewSession(), and DuplicateCurrentSession().

Here is the call graph for this function:

◆ DrawSessionTab()

void yaze::editor::SessionCoordinator::DrawSessionTab ( size_t  index,
bool  is_active 
)

Definition at line 798 of file session_coordinator.cc.

References GET_SESSIONS, GetSessionColor(), GetSessionDisplayName(), ICON_MD_CHECK_CIRCLE, and SwitchToSession().

Here is the call graph for this function:

◆ DrawSessionContextMenu()

void yaze::editor::SessionCoordinator::DrawSessionContextMenu ( size_t  index)

◆ DrawSessionBadge()

void yaze::editor::SessionCoordinator::DrawSessionBadge ( size_t  index)

Definition at line 852 of file session_coordinator.cc.

References GET_SESSIONS, GetSessionColor(), ICON_MD_CHECK_CIRCLE, and ICON_MD_RADIO_BUTTON_UNCHECKED.

Here is the call graph for this function:

◆ GetSessionColor()

ImVec4 yaze::editor::SessionCoordinator::GetSessionColor ( size_t  index) const

Definition at line 871 of file session_coordinator.cc.

Referenced by DrawSessionBadge(), and DrawSessionTab().

◆ GetSessionIcon()

std::string yaze::editor::SessionCoordinator::GetSessionIcon ( size_t  index) const

◆ IsSessionEmpty()

bool yaze::editor::SessionCoordinator::IsSessionEmpty ( size_t  index) const

Definition at line 901 of file session_coordinator.cc.

References GET_SESSIONS, and IsValidSessionIndex().

Here is the call graph for this function:

◆ IsSessionClosed()

bool yaze::editor::SessionCoordinator::IsSessionClosed ( size_t  index) const

Definition at line 907 of file session_coordinator.cc.

References IsValidSessionIndex().

Referenced by yaze::editor::UICoordinator::DrawRomSelector().

Here is the call graph for this function:

◆ IsSessionModified()

bool yaze::editor::SessionCoordinator::IsSessionModified ( size_t  index) const
Todo:
Implement modification tracking

Definition at line 911 of file session_coordinator.cc.

Member Data Documentation

◆ editor_manager_

EditorManager* yaze::editor::SessionCoordinator::editor_manager_ = nullptr
private

Definition at line 150 of file session_coordinator.h.

Referenced by SetEditorManager().

◆ sessions_ptr_

void* yaze::editor::SessionCoordinator::sessions_ptr_
private

Definition at line 151 of file session_coordinator.h.

Referenced by SessionCoordinator().

◆ card_registry_

◆ toast_manager_

ToastManager* yaze::editor::SessionCoordinator::toast_manager_
private

◆ user_settings_

UserSettings* yaze::editor::SessionCoordinator::user_settings_
private

Definition at line 154 of file session_coordinator.h.

Referenced by CreateSessionFromRom().

◆ active_session_index_

◆ session_count_

◆ show_session_switcher_

bool yaze::editor::SessionCoordinator::show_session_switcher_ = false
private

◆ show_session_manager_

bool yaze::editor::SessionCoordinator::show_session_manager_ = false
private

◆ show_session_rename_dialog_

bool yaze::editor::SessionCoordinator::show_session_rename_dialog_ = false
private

Definition at line 163 of file session_coordinator.h.

Referenced by DrawSessionContextMenu(), and DrawSessionRenameDialog().

◆ session_to_rename_

size_t yaze::editor::SessionCoordinator::session_to_rename_ = 0
private

Definition at line 164 of file session_coordinator.h.

Referenced by DrawSessionContextMenu(), and DrawSessionRenameDialog().

◆ session_rename_buffer_

char yaze::editor::SessionCoordinator::session_rename_buffer_[256] = {}
private

Definition at line 165 of file session_coordinator.h.

Referenced by DrawSessionContextMenu(), and DrawSessionRenameDialog().

◆ kMaxSessions

constexpr size_t yaze::editor::SessionCoordinator::kMaxSessions = 8
staticconstexprprivate

◆ kMinSessions

constexpr size_t yaze::editor::SessionCoordinator::kMinSessions = 1
staticconstexprprivate

Definition at line 169 of file session_coordinator.h.

Referenced by CloseSession().


The documentation for this class was generated from the following files: