first_run_dialog.h revision 5d1f7b1de12d16ceb2c938c56701a3e8bfa558f7
1// Copyright 2014 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_FIRST_RUN_DIALOG_H_
6#define CHROME_BROWSER_UI_VIEWS_FIRST_RUN_DIALOG_H_
7
8#include "base/message_loop/message_pump_dispatcher.h"
9#include "ui/views/controls/link_listener.h"
10#include "ui/views/window/dialog_delegate.h"
11
12class Profile;
13
14namespace views {
15class Checkbox;
16class Link;
17}
18
19class FirstRunDialog : public views::DialogDelegateView,
20                       public views::LinkListener,
21                       public base::MessagePumpDispatcher {
22 public:
23  // Displays the first run UI for reporting opt-in, import data etc.
24  // Returns true if the dialog was shown.
25  static bool Show(Profile* profile);
26
27 private:
28  explicit FirstRunDialog(Profile* profile);
29  virtual ~FirstRunDialog();
30
31  // views::DialogDelegate:
32  virtual views::View* CreateExtraView() OVERRIDE;
33  virtual void OnClosed() OVERRIDE;
34  virtual bool Accept() OVERRIDE;
35  virtual int GetDialogButtons() const OVERRIDE;
36
37  // views::LinkListener:
38  virtual void LinkClicked(views::Link* source, int event_flags) OVERRIDE;
39
40  // Overridden from MessagePumpDispatcher:
41  virtual uint32_t Dispatch(const base::NativeEvent& event) OVERRIDE;
42
43  Profile* profile_;
44  views::Checkbox* make_default_;
45  views::Checkbox* report_crashes_;
46
47  // Set to false as soon as the user clicks a dialog button; this tells the
48  // dispatcher we're done.
49  bool should_show_dialog_;
50};
51
52#endif  // CHROME_BROWSER_UI_VIEWS_FIRST_RUN_DIALOG_H_
53