system_clock_observer.cc revision 5c02ac1a9c1b504631c0a3d2b6e737b5d738bae1
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)
71e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "ash/shell.h"
84e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "ash/system/tray/system_tray_notifier.h"
94e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "chromeos/dbus/dbus_thread_manager.h"
104e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
114e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)namespace ash {
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);
175c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  can_set_time_ =
185c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu      chromeos::DBusThreadManager::Get()->GetSystemClockClient()->CanSetTime();
194e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
204e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
214e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)SystemClockObserver::~SystemClockObserver() {
224e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  chromeos::DBusThreadManager::Get()->GetSystemClockClient()
234e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      ->RemoveObserver(this);
244e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  chromeos::system::TimezoneSettings::GetInstance()->RemoveObserver(this);
254e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
264e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
274e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)void SystemClockObserver::SystemClockUpdated() {
285c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  Shell::GetInstance()->system_tray_notifier()->NotifySystemClockTimeUpdated();
295c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu}
305c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
315c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liuvoid SystemClockObserver::SystemClockCanSetTimeChanged(bool can_set_time) {
325c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  can_set_time_ = can_set_time;
334e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Shell::GetInstance()->system_tray_notifier()
345c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu      ->NotifySystemClockCanSetTimeChanged(can_set_time_);
354e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
364e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
374e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)void SystemClockObserver::TimezoneChanged(const icu::TimeZone& timezone) {
384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  Shell::GetInstance()->system_tray_notifier()->NotifyRefreshClock();
394e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
404e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
414e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}  // namespace ash
42