///////////////////////////////////////////////////////////////////////////////
// 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$
#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
+#if wxUSE_NOTIFICATION_MESSAGE && !wxUSE_LIBHILDON
#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
// ----------------------------------------------------------------------------
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; }
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 */),
{
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 */);
}
// ============================================================================
-// 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" );
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();
}
}
-bool wxNotificationMessage::Show(int timeout)
+bool wxGenericNotificationMessage::Show(int timeout)
{
if ( timeout == Timeout_Auto )
{
(
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();
return true;
}
-bool wxNotificationMessage::Close()
+bool wxGenericNotificationMessage::Close()
{
if ( !m_dialog )
return false;
return true;
}
-#endif // wxUSE_GENERIC_NOTIFICATION_MESSAGE
+#endif // wxUSE_NOTIFICATION_MESSAGE && !wxUSE_LIBHILDON