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