15c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// Copyright 2014 The Chromium Authors. All rights reserved. 25c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// Use of this source code is governed by a BSD-style license that can be 35c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// found in the LICENSE file. 45c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 55c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "chrome/browser/ui/webui/options/chromeos/date_time_options_handler.h" 65c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 75c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "base/bind.h" 85c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "base/bind_helpers.h" 95c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "base/values.h" 105c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "chrome/browser/chromeos/set_time_dialog.h" 111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/grit/generated_resources.h" 125c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "chromeos/dbus/dbus_thread_manager.h" 135c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "chromeos/dbus/system_clock_client.h" 145c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "content/public/browser/web_contents.h" 155c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "content/public/browser/web_ui.h" 165c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "ui/base/l10n/l10n_util.h" 175c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 185c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liunamespace chromeos { 195c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liunamespace options { 205c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 215c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo LiuDateTimeOptionsHandler::DateTimeOptionsHandler() 225c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu : can_set_time_(false), page_initialized_(false) { 235c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} 245c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 255c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo LiuDateTimeOptionsHandler::~DateTimeOptionsHandler() { 265c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu DBusThreadManager::Get()->GetSystemClockClient()->RemoveObserver(this); 275c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} 285c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 295c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liuvoid DateTimeOptionsHandler::GetLocalizedValues( 305c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu base::DictionaryValue* localized_strings) { 315c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu DCHECK(localized_strings); 325c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 335c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu localized_strings->SetString( 345c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu "setTimeButton", 355c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu l10n_util::GetStringUTF16(IDS_OPTIONS_SETTINGS_SET_TIME_BUTTON)); 365c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu localized_strings->SetString( 375c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu "timeSyncedExplanation", 385c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu l10n_util::GetStringUTF16(IDS_OPTIONS_SETTINGS_TIME_SYNCED_EXPLANATION)); 391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 405c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 415c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liuvoid DateTimeOptionsHandler::InitializeHandler() { 425c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu SystemClockClient* system_clock_client = 435c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu DBusThreadManager::Get()->GetSystemClockClient(); 445c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu system_clock_client->AddObserver(this); 455c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 465c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu can_set_time_ = system_clock_client->CanSetTime(); 475c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu SystemClockCanSetTimeChanged(can_set_time_); 485c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} 495c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 505c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liuvoid DateTimeOptionsHandler::InitializePage() { 515c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu page_initialized_ = true; 525c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu SystemClockCanSetTimeChanged(can_set_time_); 535c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} 545c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 555c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liuvoid DateTimeOptionsHandler::RegisterMessages() { 565c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu // Callback for set time button. 575c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu web_ui()->RegisterMessageCallback( 585c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu "showSetTime", 595c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu base::Bind(&DateTimeOptionsHandler::HandleShowSetTime, 605c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu base::Unretained(this))); 615c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} 625c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 635c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liuvoid DateTimeOptionsHandler::SystemClockCanSetTimeChanged(bool can_set_time) { 645c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu if (page_initialized_) { 655c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu web_ui()->CallJavascriptFunction("BrowserOptions.setCanSetTime", 665c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu base::FundamentalValue(can_set_time)); 675c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu } 685c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu can_set_time_ = can_set_time; 695c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} 705c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 715c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liuvoid DateTimeOptionsHandler::HandleShowSetTime(const base::ListValue* args) { 725c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu // Make sure the clock status hasn't changed since the button was clicked. 735c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu if (can_set_time_) { 745c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu SetTimeDialog::ShowDialog( 75010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) web_ui()->GetWebContents()->GetTopLevelNativeWindow()); 765c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu } 775c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} 785c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 795c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} // namespace options 805c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} // namespace chromeos 81