Merge pull request #4791 from jmarshallnz/playlist_settings
authorjmarshallnz <jcmarsha@gmail.com>
Wed, 4 Jun 2014 06:22:12 +0000 (18:22 +1200)
committerTrent Nelson <trent.nelson@pivosgroup.com>
Sat, 7 Jun 2014 05:57:50 +0000 (13:57 +0800)
Playlist settings don't update on change of profile

xbmc/Application.cpp
xbmc/settings/MediaSettings.cpp
xbmc/settings/MediaSettings.h
xbmc/settings/Settings.cpp

index ff698d6..f3ea7f1 100644 (file)
@@ -1602,13 +1602,6 @@ void CApplication::StartServices()
   CLog::Log(LOGNOTICE, "start dvd mediatype detection");
   m_DetectDVDType.Create(false, THREAD_MINSTACKSIZE);
 #endif
-
-  CLog::Log(LOGNOTICE, "initializing playlistplayer");
-  g_playlistPlayer.SetRepeat(PLAYLIST_MUSIC, CMediaSettings::Get().DoesMusicPlaylistRepeat() ? PLAYLIST::REPEAT_ALL : PLAYLIST::REPEAT_NONE);
-  g_playlistPlayer.SetShuffle(PLAYLIST_MUSIC, CMediaSettings::Get().IsMusicPlaylistShuffled());
-  g_playlistPlayer.SetRepeat(PLAYLIST_VIDEO, CMediaSettings::Get().DoesVideoPlaylistRepeat() ? PLAYLIST::REPEAT_ALL : PLAYLIST::REPEAT_NONE);
-  g_playlistPlayer.SetShuffle(PLAYLIST_VIDEO, CMediaSettings::Get().IsVideoPlaylistShuffled());
-  CLog::Log(LOGNOTICE, "DONE initializing playlistplayer");
 }
 
 void CApplication::StopServices()
index 4e6e83d..57d6ab4 100644 (file)
@@ -22,6 +22,7 @@
 
 #include "MediaSettings.h"
 #include "Application.h"
+#include "PlayListPlayer.h"
 #include "Util.h"
 #include "dialogs/GUIDialogContextMenu.h"
 #include "dialogs/GUIDialogFileBrowser.h"
@@ -174,6 +175,14 @@ bool CMediaSettings::Load(const TiXmlNode *settings)
   return true;
 }
 
+void CMediaSettings::OnSettingsLoaded()
+{
+  g_playlistPlayer.SetRepeat(PLAYLIST_MUSIC, m_musicPlaylistRepeat ? PLAYLIST::REPEAT_ALL : PLAYLIST::REPEAT_NONE);
+  g_playlistPlayer.SetShuffle(PLAYLIST_MUSIC, m_musicPlaylistShuffle);
+  g_playlistPlayer.SetRepeat(PLAYLIST_VIDEO, m_videoPlaylistRepeat ? PLAYLIST::REPEAT_ALL : PLAYLIST::REPEAT_NONE);
+  g_playlistPlayer.SetShuffle(PLAYLIST_VIDEO, m_videoPlaylistShuffle);
+}
+
 bool CMediaSettings::Save(TiXmlNode *settings) const
 {
   if (settings == NULL)
index ad2fb7a..dc974b5 100644 (file)
@@ -23,6 +23,7 @@
 #include <string>
 
 #include "settings/lib/ISettingCallback.h"
+#include "settings/lib/ISettingsHandler.h"
 #include "settings/lib/ISubSettings.h"
 #include "settings/VideoSettings.h"
 #include "threads/CriticalSection.h"
@@ -38,7 +39,7 @@ typedef enum {
   WatchedModeWatched
 } WatchedMode;
 
-class CMediaSettings : public ISettingCallback, public ISubSettings
+class CMediaSettings : public ISettingCallback, public ISettingsHandler, public ISubSettings
 {
 public:
   static CMediaSettings& Get();
@@ -47,6 +48,7 @@ public:
   virtual bool Save(TiXmlNode *settings) const;
 
   virtual void OnSettingAction(const CSetting *setting);
+  virtual void OnSettingsLoaded();
 
   const CVideoSettings& GetDefaultVideoSettings() const { return m_defaultVideoSettings; }
   CVideoSettings& GetDefaultVideoSettings() { return m_defaultVideoSettings; }
@@ -73,14 +75,10 @@ public:
    */
   void CycleWatchedMode(const std::string &content);
 
-  bool DoesMusicPlaylistRepeat() const { return m_musicPlaylistRepeat; }
   void SetMusicPlaylistRepeat(bool repeats) { m_musicPlaylistRepeat = repeats; }
-  bool IsMusicPlaylistShuffled() const { return m_musicPlaylistShuffle; }
   void SetMusicPlaylistShuffled(bool shuffled) { m_musicPlaylistShuffle = shuffled; }
 
-  bool DoesVideoPlaylistRepeat() const { return m_videoPlaylistRepeat; }
   void SetVideoPlaylistRepeat(bool repeats) { m_videoPlaylistRepeat = repeats; }
-  bool IsVideoPlaylistShuffled() const { return m_videoPlaylistShuffle; }
   void SetVideoPlaylistShuffled(bool shuffled) { m_videoPlaylistShuffle = shuffled; }
 
   bool DoesVideoStartWindowed() const { return m_videoStartWindowed; }
index d8d50ea..fccd54e 100644 (file)
@@ -979,6 +979,7 @@ void CSettings::InitializeISettingsHandlers()
 #if defined(TARGET_LINUX) && !defined(TARGET_ANDROID) && !defined(__UCLIBC__)
   m_settingsManager->RegisterSettingsHandler(&g_timezone);
 #endif
+  m_settingsManager->RegisterSettingsHandler(&CMediaSettings::Get());
 }
 
 void CSettings::InitializeISubSettings()