File: message_center_button_bar.h

package info (click to toggle)
chromium-browser 41.0.2272.118-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie-kfreebsd
  • size: 2,189,132 kB
  • sloc: cpp: 9,691,462; ansic: 3,341,451; python: 712,689; asm: 518,779; xml: 208,926; java: 169,820; sh: 119,353; perl: 68,907; makefile: 28,311; yacc: 13,305; objc: 11,385; tcl: 3,186; cs: 2,225; sql: 2,217; lex: 2,215; lisp: 1,349; pascal: 1,256; awk: 407; ruby: 155; sed: 53; php: 14; exp: 11
file content (88 lines) | stat: -rw-r--r-- 3,270 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef UI_MESSAGE_CENTER_VIEWS_MESSAGE_CENTER_BUTTON_BAR_H_
#define UI_MESSAGE_CENTER_VIEWS_MESSAGE_CENTER_BUTTON_BAR_H_

#include "ui/views/controls/button/button.h"
#include "ui/views/controls/button/image_button.h"
#include "ui/views/view.h"

namespace views {
class Label;
}

namespace message_center {

class ButtonBarSettingsLabel;
class MessageCenter;
class MessageCenterTray;
class MessageCenterView;
class NotificationCenterButton;
class NotifierSettingsProvider;

// MessageCenterButtonBar is the class that shows the content outside the main
// notification area - the label (or NotifierGroup switcher) and the buttons.
class MessageCenterButtonBar : public views::View,
                               public views::ButtonListener {
 public:
  MessageCenterButtonBar(MessageCenterView* message_center_view,
                         MessageCenter* message_center,
                         NotifierSettingsProvider* notifier_settings_provider,
                         bool settings_initially_visible,
                         const base::string16& title);
  ~MessageCenterButtonBar() override;

  // Enables or disables all of the buttons in the center.  This is used to
  // prevent user clicks during the close-all animation.
  virtual void SetAllButtonsEnabled(bool enabled);

  // Sometimes we shouldn't see the close-all button.
  void SetCloseAllButtonEnabled(bool enabled);

  // Sometimes we shouldn't see the back arrow (not in settings).
  void SetBackArrowVisible(bool visible);

 private:
  // Updates the layout manager which can have differing configuration
  // depending on the visibilty of different parts of the button bar.
  void ViewVisibilityChanged();

  // Overridden from views::View:
  void ChildVisibilityChanged(views::View* child) override;

  // Overridden from views::ButtonListener:
  void ButtonPressed(views::Button* sender, const ui::Event& event) override;

  MessageCenterView* message_center_view() const {
    return message_center_view_;
  }
  MessageCenter* message_center() const { return message_center_; }

  MessageCenterView* message_center_view_;  // Weak reference.
  MessageCenter* message_center_;           // Weak reference.

  // |close_bubble_button_| closes the message center bubble. This is required
  // for desktop Linux because the status icon doesn't toggle the bubble, and
  // close-on-deactivation is off. This is a tentative solution. Once pkotwicz
  // Fixes the problem of focus-follow-mouse, close-on-deactivation will be
  // back and this field will be removed. See crbug.com/319516.
#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
  views::ImageButton* close_bubble_button_;
#endif

  // Sub-views of the button bar.
  NotificationCenterButton* title_arrow_;
  views::Label* notification_label_;
  views::View* button_container_;
  NotificationCenterButton* close_all_button_;
  NotificationCenterButton* settings_button_;
  NotificationCenterButton* quiet_mode_button_;

  DISALLOW_COPY_AND_ASSIGN(MessageCenterButtonBar);
};

}  // namespace message_center

#endif  // UI_MESSAGE_CENTER_VIEWS_MESSAGE_CENTER_BUTTON_BAR_H_