added support for icon flags to wxGenericNotificationMessage
authorVadim Zeitlin <vadim@wxwidgets.org>
Sun, 2 Dec 2007 19:43:04 +0000 (19:43 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sun, 2 Dec 2007 19:43:04 +0000 (19:43 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@50435 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/generic/notifmsg.h
src/generic/notifmsgg.cpp

index bfa2d7214e361978f7376e786142952a71086985..15e1513db4cd7b0813e0683ae3790e44ce0a26c6 100644 (file)
@@ -23,8 +23,9 @@ public:
     wxGenericNotificationMessage() { Init(); }
     wxGenericNotificationMessage(const wxString& title,
                                  const wxString& message = wxString(),
-                                 wxWindow *parent = NULL)
-        : wxNotificationMessageBase(title, message, parent)
+                                 wxWindow *parent = NULL,
+                                 int flags = wxICON_INFORMATION)
+        : wxNotificationMessageBase(title, message, parent, flags)
     {
         Init();
     }
index 4bc3ecf1aefe17623c13c5070e1143610afc7fdc..ef7d74bdff697e732d6404e291174a8dac3a0185 100644 (file)
@@ -34,6 +34,8 @@
     #include "wx/timer.h"
 #endif //WX_PRECOMP
 
+#include "wx/artprov.h"
+
 // even if the platform has the native implementation, we still normally want
 // to use the generic one (unless it's totally unsuitable for the target UI as
 // is the case of Hildon) because it may provide more features, so include
@@ -52,11 +54,13 @@ class wxNotificationMessageDialog : public wxDialog
 public:
     wxNotificationMessageDialog(wxWindow *parent,
                                 const wxString& text,
-                                int timeout);
+                                int timeout,
+                                int flags);
 
     void Set(wxWindow *parent,
              const wxString& text,
-             int timeout);
+             int timeout,
+             int flags);
 
     bool IsAutomatic() const { return m_timer.IsRunning(); }
     void SetDeleteOnHide() { m_deleteOnHide = true; }
@@ -90,7 +94,8 @@ END_EVENT_TABLE()
 
 wxNotificationMessageDialog::wxNotificationMessageDialog(wxWindow *parent,
                                                          const wxString& text,
-                                                         int timeout)
+                                                         int timeout,
+                                                         int flags)
                            : wxDialog(parent, wxID_ANY, _("Notice"),
                                       wxDefaultPosition, wxDefaultSize,
                                       0 /* no caption, no border styles */),
@@ -98,16 +103,29 @@ wxNotificationMessageDialog::wxNotificationMessageDialog(wxWindow *parent,
 {
     m_deleteOnHide = false;
 
-    Set(parent, text, timeout);
+    Set(parent, text, timeout, flags);
 }
 
 void
 wxNotificationMessageDialog::Set(wxWindow * WXUNUSED(parent),
                                  const wxString& text,
-                                 int timeout)
+                                 int timeout,
+                                 int flags)
 {
-    wxSizer *sizer = CreateTextSizer(text);
-    SetSizerAndFit(sizer);
+    wxSizer * const sizerTop = new wxBoxSizer(wxHORIZONTAL);
+    if ( flags & wxICON_MASK )
+    {
+        sizerTop->Add(new wxStaticBitmap
+                          (
+                            this,
+                            wxID_ANY,
+                            wxArtProvider::GetMessageBoxIcon(flags)
+                          ),
+                      wxSizerFlags().Centre().Border());
+    }
+
+    sizerTop->Add(CreateTextSizer(text), wxSizerFlags(1).Border());
+    SetSizerAndFit(sizerTop);
 
     if ( timeout != wxGenericNotificationMessage::Timeout_Never )
     {
@@ -194,12 +212,13 @@ bool wxGenericNotificationMessage::Show(int timeout)
                        (
                         GetParent(),
                         GetFullMessage(),
-                        timeout
+                        timeout,
+                        GetFlags()
                        );
     }
     else // update the existing dialog
     {
-        m_dialog->Set(GetParent(), GetFullMessage(), timeout);
+        m_dialog->Set(GetParent(), GetFullMessage(), timeout, GetFlags());
     }
 
     m_dialog->Show();