[settings] fixed: set timezone during initialization
authorVladlen Y. Koshelev <vlad.kosh@gmail.com>
Tue, 28 Jan 2014 18:41:48 +0000 (22:41 +0400)
committerVladlen Y. Koshelev <vlad.kosh@gmail.com>
Tue, 28 Jan 2014 18:41:48 +0000 (22:41 +0400)
xbmc/linux/LinuxTimezone.cpp
xbmc/linux/LinuxTimezone.h
xbmc/settings/Settings.cpp

index be7bce6..f639791 100644 (file)
@@ -170,6 +170,12 @@ void CLinuxTimezone::OnSettingChanged(const CSetting *setting)
   }
 }
 
+void CLinuxTimezone::OnSettingsLoaded()
+{
+  SetTimezone(CSettings::Get().GetString("locale.timezone"));
+  CDateTime::ResetTimezoneBias();
+}
+
 vector<CStdString> CLinuxTimezone::GetCounties()
 {
    return m_counties;
index 3adc5b5..393d6ae 100644 (file)
  */
 
 #include "settings/lib/ISettingCallback.h"
+#include "settings/lib/ISettingsHandler.h"
 #include "utils/StdString.h"
 #include <vector>
 #include <map>
 
 class CSetting;
 
-class CLinuxTimezone : public ISettingCallback
+class CLinuxTimezone : public ISettingCallback, public ISettingsHandler
 {
 public:
    CLinuxTimezone();
 
    virtual void OnSettingChanged(const CSetting *setting);
 
+   virtual void OnSettingsLoaded();
+
    CStdString GetOSConfiguredTimezone();
 
    std::vector<CStdString> GetCounties();
index 8cf00f7..af9b1ae 100644 (file)
@@ -468,6 +468,9 @@ void CSettings::Uninitialize()
   m_settingsManager->UnregisterSettingsHandler(&CWakeOnAccess::Get());
   m_settingsManager->UnregisterSettingsHandler(&CRssManager::Get());
   m_settingsManager->UnregisterSettingsHandler(&g_application);
+#if defined(TARGET_LINUX)
+  m_settingsManager->UnregisterSettingsHandler(&g_timezone);
+#endif
 
   m_initialized = false;
 }
@@ -976,6 +979,9 @@ void CSettings::InitializeISettingsHandlers()
   m_settingsManager->RegisterSettingsHandler(&CWakeOnAccess::Get());
   m_settingsManager->RegisterSettingsHandler(&CRssManager::Get());
   m_settingsManager->RegisterSettingsHandler(&g_application);
+#if defined(TARGET_LINUX)
+  m_settingsManager->RegisterSettingsHandler(&g_timezone);
+#endif
 }
 
 void CSettings::InitializeISubSettings()