15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef ASH_SYSTEM_DATE_TRAY_DATE_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define ASH_SYSTEM_DATE_TRAY_DATE_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ash/ash_export.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ash/system/date/clock_observer.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ash/system/tray/system_tray_item.h" 114e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "base/memory/scoped_ptr.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace views { 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Label; 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace ash { 18c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochclass DateDefaultView; 194e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#if defined(OS_CHROMEOS) 204e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)class SystemClockObserver; 214e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#endif 224e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace tray { 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class TimeView; 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class ASH_EXPORT TrayDate : public SystemTrayItem, public ClockObserver { 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) enum ClockLayout { 305c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu HORIZONTAL_CLOCK, 315c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu VERTICAL_CLOCK, 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 335c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 345c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu enum DateAction { 355c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu NONE, 365c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu SET_SYSTEM_TIME, 375c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu SHOW_DATE_SETTINGS, 385c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu }; 395c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) explicit TrayDate(SystemTray* system_tray); 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~TrayDate(); 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 431e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // Returns view for help button if it is exists. Returns NULL otherwise. 441e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) views::View* GetHelpButtonView() const; 451e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const tray::TimeView* GetTimeTrayForTesting() const; 475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const DateDefaultView* GetDefaultViewForTesting() const; 485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) views::View* CreateDefaultViewForTesting(user::LoginStatus status); 495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Overridden from SystemTrayItem. 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual views::View* CreateTrayView(user::LoginStatus status) OVERRIDE; 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual views::View* CreateDefaultView(user::LoginStatus status) OVERRIDE; 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual views::View* CreateDetailedView(user::LoginStatus status) OVERRIDE; 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DestroyTrayView() OVERRIDE; 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DestroyDefaultView() OVERRIDE; 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DestroyDetailedView() OVERRIDE; 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void UpdateAfterLoginStatusChange(user::LoginStatus status) OVERRIDE; 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void UpdateAfterShelfAlignmentChange( 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ShelfAlignment alignment) OVERRIDE; 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Overridden from ClockObserver. 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void OnDateFormatChanged() OVERRIDE; 642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void OnSystemClockTimeUpdated() OVERRIDE; 655c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu virtual void OnSystemClockCanSetTimeChanged(bool can_set_time) OVERRIDE; 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void Refresh() OVERRIDE; 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetupLabelForTimeTray(views::Label* label); 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tray::TimeView* time_tray_; 71f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) DateDefaultView* default_view_; 725c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu user::LoginStatus login_status_; 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 744e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#if defined(OS_CHROMEOS) 754e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) scoped_ptr<SystemClockObserver> system_clock_observer_; 764e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#endif 774e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(TrayDate); 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace ash 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // ASH_SYSTEM_DATE_TRAY_DATE_H_ 84