summaryrefslogtreecommitdiffstats
path: root/chrome/browser/views/confirm_message_box_dialog.h
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/views/confirm_message_box_dialog.h')
-rw-r--r--chrome/browser/views/confirm_message_box_dialog.h56
1 files changed, 32 insertions, 24 deletions
diff --git a/chrome/browser/views/confirm_message_box_dialog.h b/chrome/browser/views/confirm_message_box_dialog.h
index 6792601..9b27536 100644
--- a/chrome/browser/views/confirm_message_box_dialog.h
+++ b/chrome/browser/views/confirm_message_box_dialog.h
@@ -9,24 +9,38 @@
#include "base/basictypes.h"
#include "base/gfx/native_widget_types.h"
-#include "base/message_loop.h"
+#include "views/controls/label.h"
#include "views/window/dialog_delegate.h"
-class MessageBoxView;
+// An interface the confirm dialog uses to notify its clients (observers) when
+// the user makes a decision to confirm or cancel. Only one method will be
+// invoked per use (i.e per invocation of ConfirmMessageBoxDialog::Run).
+class ConfirmMessageBoxObserver {
+ public:
+ // The user explicitly confirmed by clicking "OK".
+ virtual void OnConfirmMessageAccept() = 0;
+ // The user chose not to confirm either by clicking "Cancel" or by closing
+ // the dialog.
+ virtual void OnConfirmMessageCancel() {}
+};
class ConfirmMessageBoxDialog : public views::DialogDelegate,
- public MessageLoopForUI::Dispatcher {
+ public views::View {
public:
- // The method blocks while the dialog is showing, and returns the the value
- // of the user choice, if the user click in Yes button it returns true,
- // otherwise false
- static bool Run(gfx::NativeWindow parent,
+ // The method presents a modal confirmation dialog to the user with the title
+ // |window_title| and message |message_text|. |observer| will be notified
+ // when the user makes a decision or closes the dialog. Note that this class
+ // guarantees it will call one of the observer's methods, so it is the
+ // caller's responsibility to ensure |observer| lives until one of the
+ // methods is invoked; it can be deleted thereafter from this class' point
+ // of view. |parent| specifies where to insert the view into the hierarchy
+ // and effectively assumes ownership of the dialog.
+ static void Run(gfx::NativeWindow parent,
+ ConfirmMessageBoxObserver* observer,
const std::wstring& message_text,
const std::wstring& window_title);
- virtual ~ConfirmMessageBoxDialog();
-
- bool accepted() const { return accepted_; }
+ virtual ~ConfirmMessageBoxDialog() {}
// views::DialogDelegate implementation.
virtual int GetDialogButtons() const;
@@ -38,31 +52,25 @@ class ConfirmMessageBoxDialog : public views::DialogDelegate,
// views::WindowDelegate implementation.
virtual bool IsModal() const { return true; }
- virtual views::View* GetContentsView();
- virtual void DeleteDelegate();
+ virtual views::View* GetContentsView() { return this; }
- // MessageLoop::Dispatcher implementation.
- virtual bool Dispatch(const MSG& msg);
+ // views::View implementation.
+ virtual void Layout();
+ virtual gfx::Size GetPreferredSize();
private:
- ConfirmMessageBoxDialog(gfx::NativeWindow parent,
+ ConfirmMessageBoxDialog(ConfirmMessageBoxObserver* observer,
const std::wstring& message_text,
const std::wstring& window_title);
// The message which will be shown to user.
- std::wstring message_text_;
+ views::Label* message_label_;
// This is the Title bar text.
std::wstring window_title_;
- MessageBoxView* message_box_view_;
-
- // Returns true if the user clicks in Yes button, otherwise false
- bool accepted_;
-
- // Used to keep track of whether or not to block the message loop (still
- // waiting for the user to dismiss the dialog).
- bool is_blocking_;
+ // The observer to notify of acceptance or cancellation.
+ ConfirmMessageBoxObserver* observer_;
DISALLOW_COPY_AND_ASSIGN(ConfirmMessageBoxDialog);
};