Volume adjustments should now save on exit.
This commit is contained in:
@@ -57,7 +57,8 @@ class ConfigManager:
|
||||
}
|
||||
|
||||
self.config['Audio'] = {
|
||||
'playback_speed': '1.0'
|
||||
'playback_speed': '1.0',
|
||||
'volume': '100'
|
||||
}
|
||||
|
||||
self.config['Paths'] = {
|
||||
@@ -335,6 +336,22 @@ class ConfigManager:
|
||||
self.set('Audio', 'playback_speed', str(speed))
|
||||
self.save()
|
||||
|
||||
def get_volume(self):
|
||||
"""Get audio volume (0-200, 100 is normal)"""
|
||||
try:
|
||||
volume = int(self.get('Audio', 'volume', '100'))
|
||||
# Clamp to valid range
|
||||
return max(0, min(200, volume))
|
||||
except ValueError:
|
||||
return 100
|
||||
|
||||
def set_volume(self, volume):
|
||||
"""Set audio volume (0-200, 100 is normal)"""
|
||||
# Clamp to valid range
|
||||
volume = max(0, min(200, int(volume)))
|
||||
self.set('Audio', 'volume', str(volume))
|
||||
self.save()
|
||||
|
||||
# Braille settings
|
||||
|
||||
def get_braille_enabled(self):
|
||||
|
||||
@@ -28,6 +28,7 @@ class MpvPlayer:
|
||||
self.isPaused = False
|
||||
self.audioFileLoaded = False # Track if audio file is loaded
|
||||
self.playbackSpeed = 1.0 # Current playback speed
|
||||
self.volume = 100 # Current volume level (0-200)
|
||||
self.endFileCallback = None # Callback for when file finishes
|
||||
self.playlist = [] # Current playlist (for multi-file audiobooks)
|
||||
self.currentPlaylistIndex = 0 # Current file index in playlist
|
||||
@@ -183,6 +184,7 @@ class MpvPlayer:
|
||||
currentVolume = self.player.volume if self.player.volume is not None else 100
|
||||
# Allow up to 200% for software amplification (useful for quiet audio)
|
||||
newVolume = min(200, currentVolume + step)
|
||||
self.volume = newVolume
|
||||
self.player.volume = newVolume
|
||||
return int(newVolume)
|
||||
except Exception as e:
|
||||
@@ -206,6 +208,7 @@ class MpvPlayer:
|
||||
# pylint: disable=no-member
|
||||
currentVolume = self.player.volume if self.player.volume is not None else 100
|
||||
newVolume = max(0, currentVolume - step)
|
||||
self.volume = newVolume
|
||||
self.player.volume = newVolume
|
||||
return int(newVolume)
|
||||
except Exception as e:
|
||||
@@ -219,15 +222,30 @@ class MpvPlayer:
|
||||
Returns:
|
||||
Current volume (0-200, 100 is normal, >100 is software amplification)
|
||||
"""
|
||||
# Return our tracked volume instead of querying mpv
|
||||
# This is more reliable, especially during cleanup
|
||||
return self.volume
|
||||
|
||||
def set_volume(self, volume):
|
||||
"""
|
||||
Set volume level
|
||||
|
||||
Args:
|
||||
volume: Volume level (0-200, 100 is normal, >100 is software amplification)
|
||||
"""
|
||||
if not self.isInitialized or not self.player:
|
||||
return 100
|
||||
# Store it anyway for when player is ready
|
||||
self.volume = max(0, min(200, int(volume)))
|
||||
return
|
||||
|
||||
try:
|
||||
# Clamp to valid range
|
||||
volume = max(0, min(200, int(volume)))
|
||||
self.volume = volume
|
||||
# pylint: disable=no-member
|
||||
volume = self.player.volume
|
||||
return int(volume) if volume is not None else 100
|
||||
except:
|
||||
return 100
|
||||
self.player.volume = volume
|
||||
except Exception as e:
|
||||
print(f"Error setting volume: {e}")
|
||||
|
||||
def cleanup(self):
|
||||
"""Cleanup resources"""
|
||||
@@ -283,6 +301,8 @@ class MpvPlayer:
|
||||
self.player.loadfile(audioPath, 'replace')
|
||||
self.player.pause = True # Keep paused until play_audio_file() is called
|
||||
self.player.speed = self.playbackSpeed
|
||||
# Restore volume setting (important for TTS paragraphs)
|
||||
self.player.volume = self.volume
|
||||
self.audioFileLoaded = True
|
||||
self.playlist = [] # Clear playlist (single file mode)
|
||||
self.currentPlaylistIndex = 0
|
||||
@@ -338,6 +358,8 @@ class MpvPlayer:
|
||||
|
||||
self.player.pause = True
|
||||
self.player.speed = self.playbackSpeed
|
||||
# Restore volume setting (important for playlist/folder audiobooks)
|
||||
self.player.volume = self.volume
|
||||
self.audioFileLoaded = True
|
||||
return True
|
||||
|
||||
|
||||
Reference in New Issue
Block a user