critical_notification_bubble_view.h revision a93a17c8d99d686bd4a1511e5504e5e6cc9fcadf
1// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef CHROME_BROWSER_UI_VIEWS_CRITICAL_NOTIFICATION_BUBBLE_VIEW_H_ 6#define CHROME_BROWSER_UI_VIEWS_CRITICAL_NOTIFICATION_BUBBLE_VIEW_H_ 7 8#include "base/timer.h" 9#include "ui/views/bubble/bubble_delegate.h" 10#include "ui/views/controls/button/button.h" 11 12namespace ui { 13class Accelerator; 14} 15 16namespace views { 17class Label; 18class LabelButton; 19} 20 21class CriticalNotificationBubbleView : public views::BubbleDelegateView, 22 public views::ButtonListener { 23 public: 24 explicit CriticalNotificationBubbleView(views::View* anchor_view); 25 virtual ~CriticalNotificationBubbleView(); 26 27 // views::ButtonListener overrides: 28 virtual void ButtonPressed(views::Button* sender, 29 const ui::Event& event) OVERRIDE; 30 31 // views::WidgetDelegate overrides: 32 virtual void WindowClosing() OVERRIDE; 33 34 // views::View overrides: 35 virtual void GetAccessibleState(ui::AccessibleViewState* state) OVERRIDE; 36 virtual void ViewHierarchyChanged( 37 const ViewHierarchyChangedDetails& details) OVERRIDE; 38 39 protected: 40 // views::BubbleDelegateView overrides: 41 virtual bool AcceleratorPressed( 42 const ui::Accelerator& accelerator) OVERRIDE; 43 virtual void Init() OVERRIDE; 44 45 private: 46 // Helper function to calculate the remaining time (in seconds) until 47 // spontaneous reboot. 48 int GetRemainingTime(); 49 50 // Helper function to set the headline for the bubble. 51 void UpdateBubbleHeadline(int seconds); 52 53 // Called when the timer fires each time the clock ticks. 54 void OnCountdown(); 55 56 // The headline and buttons on the bubble. 57 views::Label* headline_; 58 views::LabelButton* restart_button_; 59 views::LabelButton* dismiss_button_; 60 61 // A timer to refresh the bubble to show new countdown value. 62 base::RepeatingTimer<CriticalNotificationBubbleView> refresh_timer_; 63 64 // When the bubble was created. 65 base::Time bubble_created_; 66 67 DISALLOW_COPY_AND_ASSIGN(CriticalNotificationBubbleView); 68}; 69 70#endif // CHROME_BROWSER_UI_VIEWS_CRITICAL_NOTIFICATION_BUBBLE_VIEW_H_ 71