X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e36a173933aaa81b28a27979c3748e8bc42ef88c..89e1de6441845de971433531a7286d5bea06c3f5:/src/generic/notifmsgg.cpp diff --git a/src/generic/notifmsgg.cpp b/src/generic/notifmsgg.cpp index 2f95e1ca76..fe90a69f45 100644 --- a/src/generic/notifmsgg.cpp +++ b/src/generic/notifmsgg.cpp @@ -1,6 +1,6 @@ /////////////////////////////////////////////////////////////////////////////// // Name: src/generic/notifmsgg.cpp -// Purpose: generic implementation of wxNotificationMessage +// Purpose: generic implementation of wxGenericNotificationMessage // Author: Vadim Zeitlin // Created: 2007-11-24 // RCS-ID: $Id$ @@ -23,17 +23,34 @@ #pragma hdrstop #endif -// include this before the test below, wxUSE_GENERIC_NOTIFICATION_MESSAGE is -// defined in this header -#include "wx/notifmsg.h" +#ifndef wxUSE_LIBHILDON + #define wxUSE_LIBHILDON 0 +#endif -#if wxUSE_GENERIC_NOTIFICATION_MESSAGE +#ifndef wxUSE_LIBHILDON2 + #define wxUSE_LIBHILDON2 0 +#endif + +#if wxUSE_NOTIFICATION_MESSAGE && (!wxUSE_LIBHILDON || !wxUSE_LIBHILDON2) #ifndef WX_PRECOMP #include "wx/dialog.h" #include "wx/timer.h" + #include "wx/sizer.h" + #include "wx/statbmp.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 +// wx/generic/notifmsg.h to get wxGenericNotificationMessage declaration even +// if wx/notifmsg.h only declares wxNotificationMessage itself (if it already +// uses the generic version, the second inclusion will do no harm) +#include "wx/notifmsg.h" +#include "wx/generic/notifmsg.h" + // ---------------------------------------------------------------------------- // wxNotificationMessageDialog // ---------------------------------------------------------------------------- @@ -43,11 +60,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; } @@ -66,7 +85,7 @@ private: DECLARE_EVENT_TABLE() - DECLARE_NO_COPY_CLASS(wxNotificationMessageDialog) + wxDECLARE_NO_COPY_CLASS(wxNotificationMessageDialog); }; // ============================================================================ @@ -81,7 +100,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 */), @@ -89,18 +109,31 @@ 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 != wxNotificationMessage::Timeout_Never ) + if ( timeout != wxGenericNotificationMessage::Timeout_Never ) { // wxTimer uses ms, timeout is in seconds m_timer.Start(timeout*1000, true /* one shot only */); @@ -135,12 +168,12 @@ void wxNotificationMessageDialog::OnTimer(wxTimerEvent& WXUNUSED(event)) } // ============================================================================ -// wxNotificationMessage implementation +// wxGenericNotificationMessage implementation // ============================================================================ -int wxNotificationMessage::ms_timeout = 10; +int wxGenericNotificationMessage::ms_timeout = 10; -/* static */ void wxNotificationMessage::SetDefaultTimeout(int timeout) +/* static */ void wxGenericNotificationMessage::SetDefaultTimeout(int timeout) { wxASSERT_MSG( timeout > 0, "negative or zero default timeout doesn't make sense" ); @@ -148,17 +181,17 @@ int wxNotificationMessage::ms_timeout = 10; ms_timeout = timeout; } -void wxNotificationMessage::Init() +void wxGenericNotificationMessage::Init() { m_dialog = NULL; } -wxNotificationMessage::~wxNotificationMessage() +wxGenericNotificationMessage::~wxGenericNotificationMessage() { if ( m_dialog->IsAutomatic() ) { // we want to allow the user to create an automatically hidden - // notification just by creating a local wxNotificationMessage object + // notification just by creating a local wxGenericNotificationMessage object // and so we shouldn't hide the notification when this object goes out // of scope m_dialog->SetDeleteOnHide(); @@ -172,7 +205,7 @@ wxNotificationMessage::~wxNotificationMessage() } } -bool wxNotificationMessage::Show(int timeout) +bool wxGenericNotificationMessage::Show(int timeout) { if ( timeout == Timeout_Auto ) { @@ -185,12 +218,13 @@ bool wxNotificationMessage::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(); @@ -198,7 +232,7 @@ bool wxNotificationMessage::Show(int timeout) return true; } -bool wxNotificationMessage::Close() +bool wxGenericNotificationMessage::Close() { if ( !m_dialog ) return false; @@ -208,4 +242,4 @@ bool wxNotificationMessage::Close() return true; } -#endif // wxUSE_GENERIC_NOTIFICATION_MESSAGE +#endif // wxUSE_NOTIFICATION_MESSAGE && (!wxUSE_LIBHILDON || !wxUSE_LIBHILDON2)