]> git.saurik.com Git - wxWidgets.git/blame - src/osx/iphone/msgdlg.mm
always use hw-accel, fixes #15536, applied with thanks
[wxWidgets.git] / src / osx / iphone / msgdlg.mm
CommitLineData
0c2dc57d
SC
1/////////////////////////////////////////////////////////////////////////////
2// Name: src/osx/iphone/msgdlg.mm
3// Purpose: wxMessageDialog
4// Author: Stefan Csomor
5// Modified by:
6// Created: 04/01/98
0c2dc57d
SC
7// Copyright: (c) Stefan Csomor
8// Licence: wxWindows licence
9/////////////////////////////////////////////////////////////////////////////
10
11#include "wx/wxprec.h"
12
13#include "wx/msgdlg.h"
14
15#ifndef WX_PRECOMP
16 #include "wx/intl.h"
17 #include "wx/app.h"
18#endif
19
20#include "wx/thread.h"
21#include "wx/osx/private.h"
691745ab 22#include "wx/modalhook.h"
0c2dc57d
SC
23
24
25IMPLEMENT_CLASS(wxMessageDialog, wxDialog)
26
27
28wxMessageDialog::wxMessageDialog(wxWindow *parent,
29 const wxString& message,
30 const wxString& caption,
31 long style,
32 const wxPoint& WXUNUSED(pos))
ede7b017 33 : wxMessageDialogBase(parent, message, caption, style)
0c2dc57d
SC
34{
35}
36
37int wxMessageDialog::ShowModal()
38{
691745ab 39 WX_HOOK_MODAL_DIALOG();
643e9cf9 40
0c2dc57d
SC
41 int resultbutton = wxID_CANCEL;
42
43 const long style = GetMessageDialogStyle();
44
45 // work out what to display
46 // if the extended text is empty then we use the caption as the title
47 // and the message as the text (for backwards compatibility)
48 // but if the extended message is not empty then we use the message as the title
49 // and the extended message as the text because that makes more sense
50
51 wxString msgtitle,msgtext;
52 if(m_extendedMessage.IsEmpty())
53 {
54 msgtitle = m_caption;
55 msgtext = m_message;
56 }
57 else
58 {
59 msgtitle = m_message;
60 msgtext = m_extendedMessage;
61 }
03647350 62
0c2dc57d
SC
63 wxCFStringRef cfNoString( GetNoLabel(), GetFont().GetEncoding() );
64 wxCFStringRef cfYesString( GetYesLabel(), GetFont().GetEncoding() );
65 wxCFStringRef cfOKString( GetOKLabel(), GetFont().GetEncoding() );
66 wxCFStringRef cfCancelString( GetCancelLabel(), GetFont().GetEncoding() );
67
68 wxCFStringRef cfTitle( msgtitle, GetFont().GetEncoding() );
69 wxCFStringRef cfText( msgtext, GetFont().GetEncoding() );
70
71 UIAlertView* alert = [[UIAlertView alloc] initWithTitle:cfTitle.AsNSString() message:cfText.AsNSString() delegate:nil cancelButtonTitle:nil otherButtonTitles:nil];
03647350 72
0c2dc57d
SC
73 int buttonId[3] = { 0, 0, 0 };
74 int buttonCount = 0;
75
76 if (style & wxYES_NO)
77 {
78 if ( style & wxNO_DEFAULT )
79 {
80 [alert addButtonWithTitle:cfNoString.AsNSString()];
81 buttonId[ buttonCount++ ] = wxID_NO;
82 [alert addButtonWithTitle:cfYesString.AsNSString()];
83 buttonId[ buttonCount++ ] = wxID_YES;
84 }
85 else
86 {
87 [alert addButtonWithTitle:cfYesString.AsNSString()];
88 buttonId[ buttonCount++ ] = wxID_YES;
89 [alert addButtonWithTitle:cfNoString.AsNSString()];
90 buttonId[ buttonCount++ ] = wxID_NO;
91 }
92
93 if (style & wxCANCEL)
94 {
95 [alert addButtonWithTitle:cfCancelString.AsNSString()];
96 buttonId[ buttonCount++ ] = wxID_CANCEL;
97 }
98 }
99 // the MSW implementation even shows an OK button if it is not specified, we'll do the same
100 else
101 {
102 [alert addButtonWithTitle:cfOKString.AsNSString()];
103 buttonId[ buttonCount++ ] = wxID_OK;
104 if (style & wxCANCEL)
105 {
106 [alert addButtonWithTitle:cfCancelString.AsNSString()];
107 buttonId[ buttonCount++ ] = wxID_CANCEL;
108 }
109 }
110
111
112 wxNonOwnedWindow* parentWindow = NULL;
113 int button = -1;
03647350
VZ
114
115 if (GetParent())
0c2dc57d
SC
116 {
117 parentWindow = dynamic_cast<wxNonOwnedWindow*>(wxGetTopLevelParent(GetParent()));
118 }
119
120/*
121 if (parentWindow)
122 {
123 NSWindow* nativeParent = parentWindow->GetWXWindow();
03647350
VZ
124 ModalDialogDelegate* sheetDelegate = [[ModalDialogDelegate alloc] init];
125 [alert beginSheetModalForWindow: nativeParent modalDelegate: sheetDelegate
126 didEndSelector: @selector(sheetDidEnd:returnCode:contextInfo:)
0c2dc57d
SC
127 contextInfo: nil];
128 [sheetDelegate waitForSheetToFinish];
129 button = [sheetDelegate code];
130 [sheetDelegate release];
131 }
132 else
133*/
134 {
135 [alert show];
136 }
137 // [alert release];
03647350 138
0c2dc57d
SC
139 return wxID_CANCEL;
140}