]> git.saurik.com Git - wxWidgets.git/blame_incremental - src/gtk/hildon/notifmsg.cpp
wxMessageBox off the main thread lost result code.
[wxWidgets.git] / src / gtk / hildon / notifmsg.cpp
... / ...
CommitLineData
1///////////////////////////////////////////////////////////////////////////////
2// Name: src/gtk/hildon/notifmsg.cpp
3// Purpose: Hildon implementation of wxNotificationMessage
4// Author: Vadim Zeitlin
5// Created: 2007-11-21
6// Copyright: (c) 2007 Vadim Zeitlin <vadim@wxwindows.org>
7// Licence: wxWindows licence
8///////////////////////////////////////////////////////////////////////////////
9
10// ============================================================================
11// declarations
12// ============================================================================
13
14// ----------------------------------------------------------------------------
15// headers
16// ----------------------------------------------------------------------------
17
18// for compilers that support precompilation, includes "wx.h".
19#include "wx/wxprec.h"
20
21#ifdef __BORLANDC__
22 #pragma hdrstop
23#endif
24
25#if wxUSE_LIBHILDON || wxUSE_LIBHILDON2
26
27#ifndef WX_PRECOMP
28#endif //WX_PRECOMP
29
30#include "wx/notifmsg.h"
31#include "wx/toplevel.h"
32
33#if wxUSE_LIBHILDON
34 #include <hildon-widgets/hildon-banner.h>
35#endif // wxUSE_LIBHILDON
36
37#if wxUSE_LIBHILDON2
38 #include <hildon/hildon.h>
39#endif // wxUSE_LIBHILDON2
40
41// ============================================================================
42// wxNotificationMessage implementation
43// ============================================================================
44
45wxString wxNotificationMessage::HildonGetMarkup() const
46{
47 const wxString& message = GetMessage(),
48 title = GetTitle();
49
50 wxString text;
51 if ( message.empty() )
52 {
53 text = title;
54 }
55 else // combine title with message in a single string
56 {
57 text << "<big><b>" << title << "</b></big>\n"
58 "\n"
59 << message;
60 }
61
62 return text;
63}
64
65GtkWidget *wxNotificationMessage::HildonGetWindow() const
66{
67 wxWindow *parent = GetParent();
68 if ( parent )
69 {
70 parent = wxGetTopLevelParent(parent);
71 if ( parent )
72 {
73 wxTopLevelWindow * const
74 tlw = wxDynamicCast(parent, wxTopLevelWindow);
75 if ( tlw )
76 return tlw->m_mainWidget;
77 }
78 }
79
80 return NULL;
81}
82
83bool wxNotificationMessage::Show(int timeout)
84{
85 if ( timeout == Timeout_Never )
86 {
87 m_banner = hildon_banner_show_animation
88 (
89 HildonGetWindow(),
90 NULL,
91 GetFullMessage() // markup not supported here
92 );
93 if ( !m_banner )
94 return false;
95 }
96 else // the message will time out
97 {
98 // we don't have any way to set the timeout interval so we just let it
99 // time out automatically
100 hildon_banner_show_information_with_markup
101 (
102 HildonGetWindow(),
103 NULL,
104 HildonGetMarkup()
105 );
106 }
107
108 return true;
109}
110
111bool wxNotificationMessage::Close()
112{
113 if ( !m_banner )
114 {
115 // either we hadn't been shown or we are using an information banner
116 // which will disappear on its own, nothing we can do about it
117 return false;
118 }
119
120 gtk_widget_destroy(m_banner);
121 m_banner = NULL;
122
123 return true;
124}
125
126wxNotificationMessage::~wxNotificationMessage()
127{
128 Close();
129}
130
131#endif // wxUSE_LIBHILDON || wxUSE_LIBHILDON2