181 lines
4.3 KiB
Markdown
181 lines
4.3 KiB
Markdown
# Profile Manager Screen Modules
|
|
|
|
This folder contains individual screen modules for the Profile Manager, providing a clean separation of concerns and modular architecture.
|
|
|
|
## Structure
|
|
|
|
```
|
|
screens/
|
|
├── __init__.py # Module exports
|
|
├── base_screen.py # Abstract base class for all screens
|
|
├── screen_manager.py # Manages screen modules and navigation
|
|
├── main_menu_screen.py # Main menu interface
|
|
├── profile_list_screen.py # Profile selection and management
|
|
├── create_profile_screen.py # Profile creation with virtual keyboard
|
|
├── edit_profile_screen.py # Profile settings editing
|
|
├── leaderboard_screen.py # Leaderboard display (device/global)
|
|
├── profile_stats_screen.py # Detailed profile statistics
|
|
└── README.md # This file
|
|
```
|
|
|
|
## Architecture
|
|
|
|
### BaseScreen
|
|
- Abstract base class providing common interface
|
|
- Standard navigation methods (up, down, left, right)
|
|
- Input handling framework
|
|
- State management utilities
|
|
|
|
### Screen Modules
|
|
Each screen is a self-contained module with:
|
|
- **Rendering**: Complete screen display logic
|
|
- **Input Handling**: Screen-specific input processing
|
|
- **State Management**: Internal state tracking
|
|
- **Navigation**: Transitions to other screens
|
|
|
|
### ModularScreenManager
|
|
- Manages all screen module instances
|
|
- Handles screen transitions
|
|
- Provides error dialog overlay
|
|
- Maintains current screen state
|
|
|
|
## Usage
|
|
|
|
### Adding New Screens
|
|
|
|
1. **Create Screen Module**:
|
|
```python
|
|
from .base_screen import BaseScreen
|
|
|
|
class NewScreen(BaseScreen):
|
|
def render(self) -> None:
|
|
# Implement rendering logic
|
|
pass
|
|
|
|
def handle_input(self, action: str) -> bool:
|
|
# Implement input handling
|
|
pass
|
|
```
|
|
|
|
2. **Register in ScreenManager**:
|
|
```python
|
|
# In screen_manager.py _initialize_screens()
|
|
"new_screen": NewScreen(self.data_manager, self.ui_renderer, self)
|
|
```
|
|
|
|
3. **Add to Exports**:
|
|
```python
|
|
# In __init__.py
|
|
from .new_screen import NewScreen
|
|
```
|
|
|
|
### Screen Integration
|
|
|
|
To integrate with the main Profile Manager:
|
|
|
|
```python
|
|
from screens import ModularScreenManager
|
|
|
|
# Replace existing screen manager
|
|
self.screen_manager = ModularScreenManager(self.data_manager, self.ui_renderer)
|
|
|
|
# Handle input
|
|
result = self.screen_manager.handle_input(action)
|
|
|
|
# Render
|
|
self.screen_manager.render()
|
|
```
|
|
|
|
## Screen Responsibilities
|
|
|
|
### MainMenuScreen
|
|
- Primary navigation hub
|
|
- Profile status display
|
|
- API connection status
|
|
- Menu option availability
|
|
|
|
### ProfileListScreen
|
|
- Display existing profiles
|
|
- Profile selection
|
|
- Profile deletion
|
|
- Active profile indication
|
|
|
|
### CreateProfileScreen
|
|
- Virtual keyboard interface
|
|
- Profile name input
|
|
- Input validation
|
|
- Profile creation
|
|
|
|
### EditProfileScreen
|
|
- Settings adjustment interface
|
|
- Real-time value display
|
|
- Setting validation
|
|
- Changes persistence
|
|
|
|
### LeaderboardScreen
|
|
- Leaderboard data display
|
|
- Device/Global toggle
|
|
- Data refresh functionality
|
|
- User highlighting
|
|
|
|
### ProfileStatsScreen
|
|
- Comprehensive statistics
|
|
- Server sync status
|
|
- Settings summary
|
|
- Achievements display
|
|
|
|
## Benefits
|
|
|
|
### Modularity
|
|
- Each screen is independent and testable
|
|
- Clear separation of concerns
|
|
- Easy to add/remove/modify screens
|
|
|
|
### Maintainability
|
|
- Isolated screen logic
|
|
- Consistent interface pattern
|
|
- Reduced coupling between screens
|
|
|
|
### Extensibility
|
|
- Simple to add new screens
|
|
- Common functionality in base class
|
|
- Flexible navigation system
|
|
|
|
### Testability
|
|
- Individual screen unit tests
|
|
- Mock dependencies easily
|
|
- Isolated functionality testing
|
|
|
|
## Navigation Flow
|
|
|
|
```
|
|
Main Menu ─┬─ Create Profile
|
|
├─ Profile List
|
|
├─ Edit Profile (if profile active)
|
|
├─ Leaderboard (if API enabled)
|
|
├─ Profile Stats (if profile active)
|
|
└─ Exit
|
|
|
|
All screens ─→ Back to Main Menu (ESC)
|
|
```
|
|
|
|
## Input Actions
|
|
|
|
Standard actions handled by screens:
|
|
- `up`: Navigate selection up
|
|
- `down`: Navigate selection down
|
|
- `left`: Navigate left / Adjust setting
|
|
- `right`: Navigate right / Adjust setting
|
|
- `confirm`: Confirm selection / Enter
|
|
- `back`: Return to previous screen / ESC
|
|
- `delete`: Delete item / Backspace
|
|
|
|
## Error Handling
|
|
|
|
Screens can show error messages via:
|
|
```python
|
|
self.show_error("Error message")
|
|
```
|
|
|
|
The ModularScreenManager handles error dialog display and auto-dismissal.
|