1// Copyright (c) 2011 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_GTK_FIRST_RUN_DIALOG_H_
6#define CHROME_BROWSER_UI_GTK_FIRST_RUN_DIALOG_H_
7#pragma once
8
9typedef struct _GtkButton GtkButton;
10typedef struct _GtkWidget GtkWidget;
11
12#include "chrome/browser/first_run/first_run.h"
13#include "chrome/browser/search_engines/template_url_model_observer.h"
14#include "ui/base/gtk/gtk_signal.h"
15
16class TemplateURL;
17class TemplateURLModel;
18
19class FirstRunDialog : public TemplateURLModelObserver {
20 public:
21  // Displays the first run UI for reporting opt-in, import data etc.
22  static bool Show(Profile* profile, bool randomize_search_engine_order);
23
24  virtual void OnTemplateURLModelChanged();
25
26 private:
27  FirstRunDialog(Profile* profile,
28                 bool show_reporting_dialog,
29                 bool show_search_engines_dialog,
30                 int* response);
31  virtual ~FirstRunDialog();
32
33  CHROMEGTK_CALLBACK_1(FirstRunDialog, void, OnResponseDialog, int);
34  CHROMEGTK_CALLBACK_0(FirstRunDialog, void, OnSearchEngineButtonClicked);
35  CHROMEGTK_CALLBACK_0(FirstRunDialog, void, OnSearchEngineWindowDestroy);
36  CHROMEG_CALLBACK_0(FirstRunDialog, void, OnLearnMoreLinkClicked, GtkButton*);
37
38  void ShowSearchEngineWindow();
39  void ShowReportingDialog();
40
41  // This method closes the first run window and quits the message loop so that
42  // the Chrome startup can continue. This should be called when all the
43  // first run tasks are done.
44  void FirstRunDone();
45
46  // The search engine choice window. This is created and shown before
47  // |dialog_|.
48  GtkWidget* search_engine_window_;
49
50  // Dialog that holds the bug reporting and default browser checkboxes.
51  GtkWidget* dialog_;
52
53  // Container for the search engine choices.
54  GtkWidget* search_engine_hbox_;
55
56  // Crash reporting checkbox
57  GtkWidget* report_crashes_;
58
59  // Make browser default checkbox
60  GtkWidget* make_default_;
61
62  // Our current profile
63  Profile* profile_;
64
65  // Owned by the profile_.
66  TemplateURLModel* search_engines_model_;
67
68  // The search engine the user chose, or NULL if the user has not chosen a
69  // search engine.
70  TemplateURL* chosen_search_engine_;
71
72  // Whether we should show the dialog asking the user whether to report
73  // crashes and usage stats.
74  bool show_reporting_dialog_;
75
76  // User response (accept or cancel) is returned through this.
77  int* response_;
78
79  DISALLOW_COPY_AND_ASSIGN(FirstRunDialog);
80};
81
82#endif  // CHROME_BROWSER_UI_GTK_FIRST_RUN_DIALOG_H_
83