Add edit feature enable/disable setting
- Added checkbox in Settings screen to enable/disable edit feature - Setting stored in app_config.json as 'edit_feature_enabled' - Edit workflow now validates: player setting, media type, server permission, card auth - Shows appropriate error message when edit is blocked at any validation step - Defaults to enabled (true) if not set - All conditions must be met for edit interface to open
This commit is contained in:
29
src/main.py
29
src/main.py
@@ -1078,6 +1078,7 @@ class SettingsPopup(Popup):
|
||||
self.ids.orientation_input.text = self.player.config.get('orientation', 'Landscape')
|
||||
self.ids.touch_input.text = self.player.config.get('touch', 'True')
|
||||
self.ids.resolution_input.text = self.player.config.get('max_resolution', 'auto')
|
||||
self.ids.edit_enabled_checkbox.active = self.player.config.get('edit_feature_enabled', True)
|
||||
|
||||
# Update status info
|
||||
self.ids.playlist_info.text = f'Playlist Version: {self.player.playlist_version}'
|
||||
@@ -1118,6 +1119,12 @@ class SettingsPopup(Popup):
|
||||
Window.remove_widget(self.keyboard_widget)
|
||||
self.keyboard_widget = None
|
||||
|
||||
def on_edit_feature_toggle(self, is_active):
|
||||
"""Handle edit feature checkbox toggle"""
|
||||
Logger.info(f"SettingsPopup: Edit feature {'enabled' if is_active else 'disabled'}")
|
||||
# Update config immediately so it's available
|
||||
self.player.config['edit_feature_enabled'] = is_active
|
||||
|
||||
def on_popup_dismiss(self, *args):
|
||||
"""Handle popup dismissal - resume playback and restart cursor hide timer"""
|
||||
# Hide and remove keyboard
|
||||
@@ -1224,6 +1231,7 @@ class SettingsPopup(Popup):
|
||||
self.player.config['orientation'] = self.ids.orientation_input.text
|
||||
self.player.config['touch'] = self.ids.touch_input.text
|
||||
self.player.config['max_resolution'] = self.ids.resolution_input.text
|
||||
self.player.config['edit_feature_enabled'] = self.ids.edit_enabled_checkbox.active
|
||||
|
||||
# Save to file
|
||||
self.player.save_config()
|
||||
@@ -1838,12 +1846,23 @@ class SignagePlayer(Widget):
|
||||
Show edit interface for current image
|
||||
|
||||
Workflow:
|
||||
1. Validate media type (must be image)
|
||||
2. Check edit_on_player permission from server
|
||||
3. Prompt for card swipe (5 second timeout)
|
||||
4. Open edit interface with card data stored
|
||||
5. When saved, card data is included in metadata and sent to server
|
||||
1. Check if edit feature is enabled in settings
|
||||
2. Validate media type (must be image)
|
||||
3. Check edit_on_player permission from server
|
||||
4. Prompt for card swipe (5 second timeout)
|
||||
5. Open edit interface with card data stored
|
||||
6. When saved, card data is included in metadata and sent to server
|
||||
"""
|
||||
# Check 0: Verify edit feature is enabled in player settings
|
||||
edit_feature_enabled = self.config.get('edit_feature_enabled', True)
|
||||
if not edit_feature_enabled:
|
||||
Logger.warning("SignagePlayer: Edit feature is disabled in settings")
|
||||
# Show error message briefly
|
||||
self.ids.status_label.text = 'Edit feature disabled - Enable in settings'
|
||||
self.ids.status_label.opacity = 1
|
||||
Clock.schedule_once(lambda dt: setattr(self.ids.status_label, 'opacity', 0), 2)
|
||||
return
|
||||
|
||||
# Check if current media is an image
|
||||
if not self.playlist or self.current_index >= len(self.playlist):
|
||||
Logger.warning("SignagePlayer: No media to edit")
|
||||
|
||||
Reference in New Issue
Block a user