system_clock_observer.cc revision 4e180b6a0b4720a9b8e9e959a882386f690f08ff
14e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
24e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
34e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// found in the LICENSE file.
44e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
54e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "ash/system/chromeos/system_clock_observer.h"
64e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
74e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "ash/system/tray/system_tray_notifier.h"
84e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "chromeos/dbus/dbus_thread_manager.h"
94e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
104e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)namespace ash {
114e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)namespace internal {
124e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
134e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)SystemClockObserver::SystemClockObserver() {
144e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  chromeos::DBusThreadManager::Get()->GetSystemClockClient()
154e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      ->AddObserver(this);
164e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  chromeos::system::TimezoneSettings::GetInstance()->AddObserver(this);
174e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
184e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
194e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)SystemClockObserver::~SystemClockObserver() {
204e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  chromeos::DBusThreadManager::Get()->GetSystemClockClient()
214e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      ->RemoveObserver(this);
224e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  chromeos::system::TimezoneSettings::GetInstance()->RemoveObserver(this);
234e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
244e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
254e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)void SystemClockObserver::SystemClockUpdated() {
264e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Shell::GetInstance()->system_tray_notifier()
274e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      ->NotifySystemClockTimeUpdated();
284e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
294e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
304e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)void SystemClockObserver::TimezoneChanged(const icu::TimeZone& timezone) {
314e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Shell::GetInstance()->system_tray_notifier()->NotifyRefreshClock();
324e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
334e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
344e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}  // namespace internal
354e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}  // namespace ash
36