notifier_settings_view.h revision eb525c5499e34cc9c4b825d6d9e75bb07cc06ace
12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved.
22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file.
42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifndef UI_MESSAGE_CENTER_VIEWS_NOTIFIER_SETTINGS_VIEW_H_
62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define UI_MESSAGE_CENTER_VIEWS_NOTIFIER_SETTINGS_VIEW_H_
72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/message_center/message_center_export.h"
92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/message_center/notifier_settings.h"
10eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ui/message_center/views/message_bubble_base.h"
11eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ui/views/controls/button/image_button.h"
12eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ui/views/view.h"
132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace message_center {
152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// A class to show the list of notifier extensions / URL patterns and allow
172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// users to customize the settings.
182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class MESSAGE_CENTER_EXPORT NotifierSettingsView
19eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    : public NotifierSettingsObserver,
20eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch      public views::View,
212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      public views::ButtonListener {
222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public:
23eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  explicit NotifierSettingsView(NotifierSettingsProvider* provider);
24eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  virtual ~NotifierSettingsView();
25eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
26eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  bool IsScrollable();
272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Overridden from NotifierSettingsDelegate:
29eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  virtual void UpdateIconImage(const NotifierId& notifier_id,
302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                               const gfx::Image& icon) OVERRIDE;
312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
32eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  void set_provider(NotifierSettingsProvider* new_provider) {
33eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    provider_ = new_provider;
342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private:
372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  class NotifierButton;
382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Overridden from views::View:
402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void Layout() OVERRIDE;
412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual gfx::Size GetMinimumSize() OVERRIDE;
422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual gfx::Size GetPreferredSize() OVERRIDE;
43c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual bool OnKeyPressed(const ui::KeyEvent& event) OVERRIDE;
44c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual bool OnMouseWheel(const ui::MouseWheelEvent& event) OVERRIDE;
452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Overridden from views::ButtonListener:
472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void ButtonPressed(views::Button* sender,
482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                             const ui::Event& event) OVERRIDE;
492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
50eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  views::ImageButton* title_arrow_;
512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  views::View* title_entry_;
522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  views::ScrollView* scroller_;
53eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  NotifierSettingsProvider* provider_;
542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  std::set<NotifierButton*> buttons_;
552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(NotifierSettingsView);
572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)};
582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}  // namespace message_center
602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif  // UI_MESSAGE_CENTER_VIEWS_NOTIFIER_SETTINGS_VIEW_H_
62