| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/ui/views/simple_message_box_views.h" | 5 #include "chrome/browser/ui/views/simple_message_box_views.h" |
| 6 | 6 |
| 7 #include "base/utf_string_conversions.h" | 7 #include "base/utf_string_conversions.h" |
| 8 #include "chrome/browser/browser_process.h" | 8 #include "chrome/browser/browser_process.h" |
| 9 #include "chrome/browser/simple_message_box.h" | 9 #include "chrome/browser/simple_message_box.h" |
| 10 #include "chrome/browser/ui/views/window.h" | 10 #include "chrome/browser/ui/views/window.h" |
| 11 #include "grit/generated_resources.h" | 11 #include "grit/generated_resources.h" |
| 12 #include "ui/base/l10n/l10n_util.h" | 12 #include "ui/base/l10n/l10n_util.h" |
| 13 #include "ui/base/message_box_flags.h" | |
| 14 #include "ui/views/widget/widget.h" | 13 #include "ui/views/widget/widget.h" |
| 15 #include "views/controls/message_box_view.h" | 14 #include "views/controls/message_box_view.h" |
| 16 | 15 |
| 17 #if defined(USE_AURA) | 16 #if defined(USE_AURA) |
| 18 #include "ui/views/focus/accelerator_handler.h" | 17 #include "ui/views/focus/accelerator_handler.h" |
| 19 #endif | 18 #endif |
| 20 | 19 |
| 21 namespace browser { | 20 namespace browser { |
| 22 | 21 |
| 23 void ShowErrorBox(gfx::NativeWindow parent, | 22 void ShowErrorBox(gfx::NativeWindow parent, |
| (...skipping 10 matching lines...) Expand all Loading... |
| 34 | 33 |
| 35 } // namespace browser | 34 } // namespace browser |
| 36 | 35 |
| 37 //////////////////////////////////////////////////////////////////////////////// | 36 //////////////////////////////////////////////////////////////////////////////// |
| 38 // SimpleMessageBoxViews, public: | 37 // SimpleMessageBoxViews, public: |
| 39 | 38 |
| 40 // static | 39 // static |
| 41 void SimpleMessageBoxViews::ShowErrorBox(gfx::NativeWindow parent_window, | 40 void SimpleMessageBoxViews::ShowErrorBox(gfx::NativeWindow parent_window, |
| 42 const string16& title, | 41 const string16& title, |
| 43 const string16& message) { | 42 const string16& message) { |
| 44 int dialog_flags = ui::MessageBoxFlags::kFlagHasMessage | | |
| 45 ui::MessageBoxFlags::kFlagHasOKButton; | |
| 46 | |
| 47 // This is a reference counted object so it is given an initial increment | 43 // This is a reference counted object so it is given an initial increment |
| 48 // in the constructor with a corresponding decrement in DeleteDelegate(). | 44 // in the constructor with a corresponding decrement in DeleteDelegate(). |
| 49 new SimpleMessageBoxViews(parent_window, dialog_flags, title, message); | 45 new SimpleMessageBoxViews(parent_window, DIALOG_ERROR, title, message); |
| 50 } | 46 } |
| 51 | 47 |
| 52 bool SimpleMessageBoxViews::ShowYesNoBox(gfx::NativeWindow parent_window, | 48 bool SimpleMessageBoxViews::ShowYesNoBox(gfx::NativeWindow parent_window, |
| 53 const string16& title, | 49 const string16& title, |
| 54 const string16& message) { | 50 const string16& message) { |
| 55 int dialog_flags = ui::MessageBoxFlags::kIsConfirmMessageBox; | |
| 56 | |
| 57 // This is a reference counted object so it is given an initial increment | 51 // This is a reference counted object so it is given an initial increment |
| 58 // in the constructor plus an extra one below to ensure the dialog persists | 52 // in the constructor plus an extra one below to ensure the dialog persists |
| 59 // until we retrieve the user response.. | 53 // until we retrieve the user response.. |
| 60 scoped_refptr<SimpleMessageBoxViews> dialog = | 54 scoped_refptr<SimpleMessageBoxViews> dialog = |
| 61 new SimpleMessageBoxViews(parent_window, dialog_flags, title, message); | 55 new SimpleMessageBoxViews(parent_window, DIALOG_YES_NO, title, message); |
| 62 | 56 |
| 63 // Make sure Chrome doesn't attempt to shut down with the dialog up. | 57 // Make sure Chrome doesn't attempt to shut down with the dialog up. |
| 64 g_browser_process->AddRefModule(); | 58 g_browser_process->AddRefModule(); |
| 65 | 59 |
| 66 bool old_state = MessageLoopForUI::current()->NestableTasksAllowed(); | 60 bool old_state = MessageLoopForUI::current()->NestableTasksAllowed(); |
| 67 MessageLoopForUI::current()->SetNestableTasksAllowed(true); | 61 MessageLoopForUI::current()->SetNestableTasksAllowed(true); |
| 68 MessageLoopForUI::current()->RunWithDispatcher(dialog); | 62 MessageLoopForUI::current()->RunWithDispatcher(dialog); |
| 69 MessageLoopForUI::current()->SetNestableTasksAllowed(old_state); | 63 MessageLoopForUI::current()->SetNestableTasksAllowed(old_state); |
| 70 | 64 |
| 71 g_browser_process->ReleaseModule(); | 65 g_browser_process->ReleaseModule(); |
| 72 | 66 |
| 73 return dialog->Accepted(); | 67 return dialog->Accepted(); |
| 74 } | 68 } |
| 75 | 69 |
| 76 bool SimpleMessageBoxViews::Cancel() { | 70 bool SimpleMessageBoxViews::Cancel() { |
| 77 disposition_ = DISPOSITION_CANCEL; | 71 disposition_ = DISPOSITION_CANCEL; |
| 78 return true; | 72 return true; |
| 79 } | 73 } |
| 80 | 74 |
| 81 bool SimpleMessageBoxViews::Accept() { | 75 bool SimpleMessageBoxViews::Accept() { |
| 82 disposition_ = DISPOSITION_OK; | 76 disposition_ = DISPOSITION_OK; |
| 83 return true; | 77 return true; |
| 84 } | 78 } |
| 85 | 79 |
| 86 int SimpleMessageBoxViews::GetDialogButtons() const { | 80 int SimpleMessageBoxViews::GetDialogButtons() const { |
| 87 // NOTE: It seems unsafe to assume that the flags for OK/cancel will always | 81 if (type_ == DIALOG_ERROR) |
| 88 // have the same value as the button ids. | 82 return ui::DIALOG_BUTTON_OK; |
| 89 int dialog_buttons = ui::DIALOG_BUTTON_NONE; | 83 return ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL; |
| 90 if (dialog_flags_ & ui::MessageBoxFlags::kFlagHasOKButton) | |
| 91 dialog_buttons = ui::DIALOG_BUTTON_OK; | |
| 92 | |
| 93 if (dialog_flags_ & ui::MessageBoxFlags::kFlagHasCancelButton) | |
| 94 dialog_buttons |= ui::DIALOG_BUTTON_CANCEL; | |
| 95 | |
| 96 return dialog_buttons; | |
| 97 } | 84 } |
| 98 | 85 |
| 99 string16 SimpleMessageBoxViews::GetDialogButtonLabel( | 86 string16 SimpleMessageBoxViews::GetDialogButtonLabel( |
| 100 ui::DialogButton button) const { | 87 ui::DialogButton button) const { |
| 101 return button == ui::DIALOG_BUTTON_OK ? l10n_util::GetStringUTF16(IDS_OK) | 88 return button == ui::DIALOG_BUTTON_OK ? l10n_util::GetStringUTF16(IDS_OK) |
| 102 : l10n_util::GetStringUTF16(IDS_CLOSE); | 89 : l10n_util::GetStringUTF16(IDS_CLOSE); |
| 103 } | 90 } |
| 104 | 91 |
| 105 bool SimpleMessageBoxViews::ShouldShowWindowTitle() const { | 92 bool SimpleMessageBoxViews::ShouldShowWindowTitle() const { |
| 106 return true; | 93 return true; |
| (...skipping 20 matching lines...) Expand all Loading... |
| 127 } | 114 } |
| 128 | 115 |
| 129 const views::Widget* SimpleMessageBoxViews::GetWidget() const { | 116 const views::Widget* SimpleMessageBoxViews::GetWidget() const { |
| 130 return message_box_view_->GetWidget(); | 117 return message_box_view_->GetWidget(); |
| 131 } | 118 } |
| 132 | 119 |
| 133 //////////////////////////////////////////////////////////////////////////////// | 120 //////////////////////////////////////////////////////////////////////////////// |
| 134 // SimpleMessageBoxViews, private: | 121 // SimpleMessageBoxViews, private: |
| 135 | 122 |
| 136 SimpleMessageBoxViews::SimpleMessageBoxViews(gfx::NativeWindow parent_window, | 123 SimpleMessageBoxViews::SimpleMessageBoxViews(gfx::NativeWindow parent_window, |
| 137 int dialog_flags, | 124 DialogType type, |
| 138 const string16& title, | 125 const string16& title, |
| 139 const string16& message) | 126 const string16& message) |
| 140 : dialog_flags_(dialog_flags), | 127 : type_(type), |
| 141 disposition_(DISPOSITION_UNKNOWN) { | 128 disposition_(DISPOSITION_UNKNOWN) { |
| 142 message_box_title_ = title; | 129 message_box_title_ = title; |
| 143 message_box_view_ = new views::MessageBoxView(dialog_flags, | 130 message_box_view_ = new views::MessageBoxView(views::MessageBoxView::NONE, |
| 144 message, | 131 message, |
| 145 string16()); | 132 string16()); |
| 146 browser::CreateViewsWindow(parent_window, this)->Show(); | 133 browser::CreateViewsWindow(parent_window, this)->Show(); |
| 147 | 134 |
| 148 // Add reference to be released in DeleteDelegate(). | 135 // Add reference to be released in DeleteDelegate(). |
| 149 AddRef(); | 136 AddRef(); |
| 150 } | 137 } |
| 151 | 138 |
| 152 SimpleMessageBoxViews::~SimpleMessageBoxViews() { | 139 SimpleMessageBoxViews::~SimpleMessageBoxViews() { |
| 153 } | 140 } |
| (...skipping 13 matching lines...) Expand all Loading... |
| 167 if (disposition_ == DISPOSITION_UNKNOWN) | 154 if (disposition_ == DISPOSITION_UNKNOWN) |
| 168 return base::MessagePumpDispatcher::EVENT_PROCESSED; | 155 return base::MessagePumpDispatcher::EVENT_PROCESSED; |
| 169 return base::MessagePumpDispatcher::EVENT_QUIT; | 156 return base::MessagePumpDispatcher::EVENT_QUIT; |
| 170 } | 157 } |
| 171 #else | 158 #else |
| 172 bool SimpleMessageBoxViews::Dispatch(GdkEvent* event) { | 159 bool SimpleMessageBoxViews::Dispatch(GdkEvent* event) { |
| 173 gtk_main_do_event(event); | 160 gtk_main_do_event(event); |
| 174 return disposition_ == DISPOSITION_UNKNOWN; | 161 return disposition_ == DISPOSITION_UNKNOWN; |
| 175 } | 162 } |
| 176 #endif | 163 #endif |
| OLD | NEW |