| Index: chrome/browser/first_run_win.cc
|
| ===================================================================
|
| --- chrome/browser/first_run_win.cc (revision 25038)
|
| +++ chrome/browser/first_run_win.cc (working copy)
|
| @@ -626,21 +626,53 @@
|
|
|
| // These strings are used by TryChromeDialog. They will need to be localized
|
| // if we use it for other locales.
|
| -const wchar_t kHeading[] =
|
| - L"You stopped using Google Chrome. Would you like to ...";
|
| -const wchar_t kGiveChromeATry[] =
|
| - L"Give the new version a try (already installed)";
|
| -const wchar_t kNahUninstallIt[] = L"Uninstall Google Chrome";
|
| +const wchar_t* kHeading[] = {
|
| + L"You stopped using Google Chrome. Would you like to ...",
|
| + L"Google Chrome misses you.",
|
| + L"There is a new version of Google Chrome available.",
|
| + L"Google Chrome has been updated, but you haven't tried it yet"
|
| +};
|
| +
|
| +const wchar_t* kGiveChromeATry[] = {
|
| + L"Give the new version a try (already installed)",
|
| + L"Give it a second chance",
|
| + L"Try it out (already installed)"
|
| +};
|
| +
|
| +const wchar_t* kNahUninstallIt[] = {
|
| + L"Uninstall Google Chrome",
|
| + L"Uninstall Google Chrome, it had its chance"
|
| +};
|
| +
|
| +const wchar_t* kOKButn[] = {
|
| + L"OK",
|
| + L"Try it"
|
| +};
|
| +
|
| const wchar_t kDontBugMe[] = L"Don't bug me";
|
| -const wchar_t kOKButn[] = L"OK";
|
| const wchar_t kWhyThis[] = L"Why am I seeing this?";
|
| const wchar_t kHelpCenterUrl[] =
|
| L"http://www.google.com/support/chrome/bin/answer.py?hl=en&answer=150752";
|
|
|
| +// This structure and the following constant defines how the dialog looks with
|
| +// respect of buttons and text, but does not fundamentally change the behavior.
|
| +struct VersionConfig {
|
| + int heading_index;
|
| + int try_index;
|
| + int uninstall_index;
|
| + int ok_button_index;
|
| +};
|
|
|
| +const VersionConfig kDialogVersion[] = {
|
| + {0, 0, 0, 0}, // 0 is classic.
|
| + {1, 1, 1, 0}, // 1 is humorous.
|
| + {2, 2, 0, 0}, // 2 is update-focused.
|
| + {3, -1, -1, 1} // 3 is simpler (no radio buttons).
|
| +};
|
| +
|
| // This class displays a modal dialog using the views system. The dialog asks
|
| // the user to give chrome another try. This class only handles the UI so the
|
| -// resulting actions are up to the caller. It looks like this:
|
| +// resulting actions are up to the caller. One version looks like this:
|
| //
|
| // /----------------------------------------\
|
| // | |icon| You stopped using Google [x] |
|
| @@ -653,11 +685,15 @@
|
| class TryChromeDialog : public views::ButtonListener,
|
| public views::LinkController {
|
| public:
|
| - TryChromeDialog()
|
| - : popup_(NULL),
|
| + TryChromeDialog(size_t version)
|
| + : version_(version),
|
| + popup_(NULL),
|
| try_chrome_(NULL),
|
| kill_chrome_(NULL),
|
| result_(Upgrade::TD_LAST_ENUM) {
|
| + // In case of doubt, use the first version of the dialog.
|
| + if (version_ >= arraysize(kHeading))
|
| + version_ = 0;
|
| }
|
|
|
| virtual ~TryChromeDialog() {
|
| @@ -739,7 +775,8 @@
|
| // First row views.
|
| layout->StartRow(0, 0);
|
| layout->AddView(icon);
|
| - views::Label* label = new views::Label(kHeading);
|
| + views::Label* label =
|
| + new views::Label(kHeading[kDialogVersion[version_].heading_index]);
|
| label->SetFont(rb.GetFont(ResourceBundle::MediumBoldFont));
|
| label->SetMultiLine(true);
|
| label->SizeToFit(200);
|
| @@ -755,17 +792,24 @@
|
| close_button->set_tag(BT_CLOSE_BUTTON);
|
| layout->AddView(close_button);
|
| // Second row views.
|
| - layout->StartRowWithPadding(0, 1, 0, 10);
|
| - try_chrome_ = new views::RadioButton(kGiveChromeATry, 1);
|
| - try_chrome_->SetChecked(true);
|
| - layout->AddView(try_chrome_);
|
| + if (kDialogVersion[version_].try_index >= 0) {
|
| + layout->StartRowWithPadding(0, 1, 0, 10);
|
| + try_chrome_ = new views::RadioButton(
|
| + kGiveChromeATry[kDialogVersion[version_].try_index], 1);
|
| + try_chrome_->SetChecked(true);
|
| + layout->AddView(try_chrome_);
|
| + }
|
| // Third row views.
|
| - layout->StartRow(0, 2);
|
| - kill_chrome_ = new views::RadioButton(kNahUninstallIt, 1);
|
| - layout->AddView(kill_chrome_);
|
| + if (kDialogVersion[version_].try_index >= 0) {
|
| + layout->StartRow(0, 2);
|
| + kill_chrome_ = new views::RadioButton(
|
| + kNahUninstallIt[kDialogVersion[version_].uninstall_index], 1);
|
| + layout->AddView(kill_chrome_);
|
| + }
|
| // Fourth row views.
|
| layout->StartRowWithPadding(0, 3, 0, 10);
|
| - views::Button* accept_button = new views::NativeButton(this, kOKButn);
|
| + views::Button* accept_button = new views::NativeButton(this,
|
| + kOKButn[kDialogVersion[version_].ok_button_index]);
|
| accept_button->set_tag(BT_OK_BUTTON);
|
| layout->AddView(accept_button);
|
| views::Button* cancel_button = new views::NativeButton(this, kDontBugMe);
|
| @@ -800,8 +844,13 @@
|
| // end the modal loop.
|
| virtual void ButtonPressed(views::Button* sender) {
|
| if (sender->tag() == BT_CLOSE_BUTTON) {
|
| + // The user pressed cancel or the [x] button.
|
| result_ = Upgrade::TD_NOT_NOW;
|
| + } else if (!try_chrome_) {
|
| + // We don't have radio buttons, the user pressed ok.
|
| + result_ = Upgrade::TD_TRY_CHROME;
|
| } else {
|
| + // The outcome is according to the selected ratio button.
|
| result_ = try_chrome_->checked() ? Upgrade::TD_TRY_CHROME :
|
| Upgrade::TD_UNINSTALL_CHROME;
|
| }
|
| @@ -857,6 +906,9 @@
|
| ::SetWindowRgn(window, region, FALSE);
|
| }
|
|
|
| + // controls which version of the text to use.
|
| + size_t version_;
|
| +
|
| // We don't own any of this pointers. The |popup_| owns itself and owns
|
| // the other views.
|
| views::WidgetWin* popup_;
|
| @@ -869,7 +921,7 @@
|
|
|
| } // namespace
|
|
|
| -Upgrade::TryResult Upgrade::ShowTryChromeDialog() {
|
| - TryChromeDialog td;
|
| +Upgrade::TryResult Upgrade::ShowTryChromeDialog(size_t version) {
|
| + TryChromeDialog td(version);
|
| return td.ShowModal();
|
| }
|
|
|