ORE Studio 0.0.4
Loading...
Searching...
No Matches
Public Member Functions | List of all members
AccountController Class Reference

Controller managing all account-related windows and operations. More...

#include <AccountController.hpp>

Inheritance diagram for AccountController:
Inheritance graph
Collaboration diagram for AccountController:
Collaboration graph

Public Member Functions

 AccountController (QMainWindow *mainWindow, QMdiArea *mdiArea, ClientManager *clientManager, const QString &username, QObject *parent=nullptr)
 Constructs the account controller.
 
 ~AccountController () override
 Destroys the account controller.
 
void showListWindow () override
 Shows the account list window.
 
void closeAllWindows () override
 Closes all windows managed by this controller.
 
void reloadListWindow () override
 Reloads the list window. Must be implemented by derived classes.
 
- Public Member Functions inherited from EntityController
 EntityController (QMainWindow *mainWindow, QMdiArea *mdiArea, ClientManager *clientManager, const QString &username, std::string_view eventName={}, QObject *parent=nullptr)
 Constructs an entity controller.
 
void setClientManager (ClientManager *clientManager, const QString &username)
 Updates the client manager and username (e.g. after re-login).
 
void setUsername (const QString &username)
 Updates just the username.
 
void setAutoReloadOnSave (bool enabled)
 Sets whether the list window should auto-reload after save/delete.
 

Additional Inherited Members

- Signals inherited from EntityController
void statusMessage (const QString &message)
 Emitted when a status message should be shown to the user.
 
void errorMessage (const QString &message)
 Emitted when an error message should be shown to the user.
 
void detachableWindowCreated (DetachableMdiSubWindow *window)
 Emitted when a detachable window is created by this controller.
 
void detachableWindowDestroyed (DetachableMdiSubWindow *window)
 Emitted when a detachable window managed by this controller is destroyed.
 
- Protected Member Functions inherited from EntityController
QString build_window_key (const QString &windowType, const QString &identifier) const
 Generates a unique key for tracking windows.
 
bool try_reuse_window (const QString &key)
 Tries to reuse an existing window if one exists for the key.
 
void bring_window_to_front (DetachableMdiSubWindow *window)
 Activates the specified window, handling detached state.
 
void track_window (const QString &key, DetachableMdiSubWindow *window)
 Registers a window for tracking.
 
void untrack_window (const QString &key)
 Unregisters a window from tracking.
 
void show_managed_window (DetachableMdiSubWindow *window, DetachableMdiSubWindow *referenceWindow=nullptr, QPoint offset=QPoint(30, 30))
 Shows a window in the MDI area, handling detach state.
 
void connect_dialog_close (DetailDialogBase *dialog, DetachableMdiSubWindow *window)
 Connects a dialog's closeRequested signal to the window's close slot.
 
void register_detachable_window (DetachableMdiSubWindow *window)
 Registers a detachable window and emits detachableWindowCreated signal.
 
virtual EntityListMdiWindowlistWindow () const
 Returns the list window for marking as stale on notifications.
 
void handleEntitySaved ()
 Called when an entity is saved.
 
void handleEntityDeleted ()
 Called when an entity is deleted.
 
- Protected Attributes inherited from EntityController
QMainWindow * mainWindow_
 
QMdiArea * mdiArea_
 
ClientManagerclientManager_
 
QString username_
 
QMap< QString, DetachableMdiSubWindow * > managed_windows_
 Map of active windows indexed by unique key.
 
bool autoReloadOnSave_ = false
 Whether to auto-reload the list window after save/delete. Default: false.
 

Detailed Description

Controller managing all account-related windows and operations.

The AccountController encapsulates all account management functionality, including:

This controller follows the entity controller pattern where MainWindow delegates all account operations to this controller, keeping the main window clean and entity-agnostic.

Note
Account management is only available to admin users. The MainWindow should check ClientManager::isAdmin() before showing account-related menus.

Constructor & Destructor Documentation

◆ AccountController()

AccountController ( QMainWindow *  mainWindow,
QMdiArea *  mdiArea,
ClientManager clientManager,
const QString &  username,
QObject *  parent = nullptr 
)
explicit

Constructs the account controller.

Parameters
mainWindowParent main window (for dialog ownership)
mdiAreaMDI area where windows will be displayed
clientManagerClient manager for network operations
usernameUsername of logged-in user (for audit trails)
parentQObject parent (for Qt ownership)

◆ ~AccountController()

~AccountController ( )
override

Destroys the account controller.

All windows owned by this controller are automatically cleaned up through Qt's parent-child ownership.

Member Function Documentation

◆ showListWindow()

void showListWindow ( )
overridevirtual

Shows the account list window.

If the window already exists, brings it to front. Otherwise, creates a new account list window displaying all accounts from the server.

Note
Inherited from EntityController

Implements EntityController.

◆ closeAllWindows()

void closeAllWindows ( )
overridevirtual

Closes all windows managed by this controller.

Called when disconnecting from the server to clean up all account windows before destroying the controller.

Note
Inherited from EntityController

Implements EntityController.

◆ reloadListWindow()

void reloadListWindow ( )
overridevirtual

Reloads the list window. Must be implemented by derived classes.

Implements EntityController.