diff --git a/docs/config.rst b/docs/config.rst index 2c302acd..b7874f83 100644 --- a/docs/config.rst +++ b/docs/config.rst @@ -113,21 +113,13 @@ Core config section .. confval:: core/restore_state - Restore last state at start. Defaults to ``off``. + When set to ``true``, Mopidy saves the state when it ends and + restores the state at next start. - Save state when Mopidy ends and restore state at next start. - Allowed values: - - - ``off``: restore nothing - - ``volume``: restore volume - - ``load``: restore settings, volume and play queue - - ``last``: like ``load``, additional start playback if last state was - 'playing' - - ``play``: like ``load``, additional start playback + Default is ``false``. .. _audio-config: - Audio configuration =================== diff --git a/mopidy/config/__init__.py b/mopidy/config/__init__.py index 7d5b300b..fac89ac9 100644 --- a/mopidy/config/__init__.py +++ b/mopidy/config/__init__.py @@ -21,8 +21,7 @@ _core_schema['config_dir'] = Path() _core_schema['data_dir'] = Path() # MPD supports at most 10k tracks, some clients segfault when this is exceeded. _core_schema['max_tracklist_length'] = Integer(minimum=1, maximum=10000) -_core_schema['restore_state'] = String( - optional=True, choices=['off', 'volume', 'load', 'last', 'play']) +_core_schema['restore_state'] = Boolean(optional=True) _logging_schema = ConfigSchema('logging') _logging_schema['color'] = Boolean() diff --git a/mopidy/config/default.conf b/mopidy/config/default.conf index a501ccb9..8076a0f4 100644 --- a/mopidy/config/default.conf +++ b/mopidy/config/default.conf @@ -3,7 +3,7 @@ cache_dir = $XDG_CACHE_DIR/mopidy config_dir = $XDG_CONFIG_DIR/mopidy data_dir = $XDG_DATA_DIR/mopidy max_tracklist_length = 10000 -restore_state = off +restore_state = false [logging] color = true diff --git a/mopidy/core/actor.py b/mopidy/core/actor.py index 8eb3bb36..678796fb 100644 --- a/mopidy/core/actor.py +++ b/mopidy/core/actor.py @@ -145,8 +145,9 @@ class Core( try: coverage = [] if self._config and 'restore_state' in self._config['core']: - coverage = self._config_to_coverage( - self._config['core']['restore_state']) + if self._config['core']['restore_state']: + coverage = ['tracklist', 'mode', 'play-last', 'volume', + 'history'] if len(coverage): self._load_state(coverage) except Exception as e: @@ -156,32 +157,11 @@ class Core( """ Do not call this function. It is for internal use at shutdown.""" try: if self._config and 'restore_state' in self._config['core']: - amount = self._config['core']['restore_state'] - if amount and 'off' != amount: + if self._config['core']['restore_state']: self._save_state() except Exception as e: logger.warn('Unexpected error while saving state: %s', str(e)) - @staticmethod - def _config_to_coverage(value): - coverage = [] - if not value or 'off' == value: - pass - elif 'volume' == value: - coverage = ['volume'] - elif 'load' == value: - coverage = ['tracklist', 'mode', 'volume', 'history'] - elif 'last' == value: - coverage = ['tracklist', 'mode', 'play-last', 'volume', - 'history'] - elif 'play' == value: - coverage = ['tracklist', 'mode', 'play-always', 'volume', - 'history'] - else: - logger.warn('Unknown value for config ' - 'core.restore_state: %s', value) - return coverage - def _get_data_dir(self): # get or create data director for core data_dir_path = bytes( diff --git a/tests/core/test_actor.py b/tests/core/test_actor.py index e0e9d9a0..290d1c60 100644 --- a/tests/core/test_actor.py +++ b/tests/core/test_actor.py @@ -54,7 +54,7 @@ class CoreActorExportRestoreTest(unittest.TestCase): config = { 'core': { 'max_tracklist_length': 10000, - 'restore_state': 'last', + 'restore_state': True, 'data_dir': self.temp_dir, } } @@ -73,25 +73,3 @@ class CoreActorExportRestoreTest(unittest.TestCase): def test_restore_state(self): self.core.setup() # TODO: implement meaningful test - - def test_export_coverage_none(self): - result = Core._config_to_coverage(None) - self.assertEqual(result, []) - result = Core._config_to_coverage('off') - self.assertEqual(result, []) - - def test_export_coverage(self): - result = Core._config_to_coverage('volume') - self.assertEqual(result, ['volume']) - - result = Core._config_to_coverage('load') - target = ['tracklist', 'mode', 'volume', 'history'] - self.assertEqual(result, target) - - result = Core._config_to_coverage('last') - target = ['tracklist', 'mode', 'play-last', 'volume', 'history'] - self.assertEqual(result, target) - - result = Core._config_to_coverage('play') - target = ['tracklist', 'mode', 'play-always', 'volume', 'history'] - self.assertEqual(result, target)