2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
5 // Licensed under the Apache License, Version 2.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
9 // http://www.apache.org/licenses/LICENSE-2.0/
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
19 * @file FUiCtrl_MessageBoxPresenter.h
20 * @brief This is the header file for the _MessageBoxPresenter class.
22 * This header file contains the declarations of the %_MessageBoxPresenter class.
25 #ifndef _FUI_CTRL_INTERNAL_MESSAGEBOX_PRESENTER_H_
26 #define _FUI_CTRL_INTERNAL_MESSAGEBOX_PRESENTER_H_
29 #include <FUiIActionEventListener.h>
30 #include "FUi_UiTouchEvent.h"
31 #include "FUiCtrl_PopupPresenter.h"
33 namespace Tizen { namespace Graphics { namespace _Text {
35 }}} // Tizen::Graphics::_Text
37 namespace Tizen { namespace Ui { namespace Controls
47 * @class _MessageBoxPresenter
55 class _MessageBoxPresenter
56 : public _PopupPresenter
57 , virtual public Tizen::Base::Runtime::IEventListener
61 _MessageBoxPresenter(void);
62 virtual ~_MessageBoxPresenter(void);
66 result Initialize(_MessageBox& msgbox);
68 virtual void Draw(void);
70 virtual result ShowAndWait(int& modalResult);
72 result OnChangeLayout(_ControlOrientation orientation);
74 // get touch event from _MessageBox, for drawing scroll in TextObject
75 virtual bool OnTouchPressed(const _Control& source, const _TouchInfo& touchinfo);
76 virtual bool OnTouchMoved(const _Control& source, const _TouchInfo& touchinfo);
77 virtual bool OnTouchReleased(const _Control& source, const _TouchInfo& touchinfo);
78 virtual void OnDrawFocus(void);
80 bool OnKeyReleased(const _Control& source, const _KeyInfo& keyInfo);
82 void UpdateButtonString(void);
84 void InitializeAccessibilityElement(void);
86 bool OnAccessibilityActionPerformed(const _AccessibilityContainer& control, const _AccessibilityElement& element);
89 float GetBodyTextHeight(void) const;
90 float GetBodyTextObjHeight(void) const;
92 Tizen::Graphics::FloatRectangle GetTextBounds(void) const;
95 virtual void ProcessEvent(void);
96 virtual _Popup* GetCore(void);
98 _MessageBoxPresenter(const _MessageBoxPresenter& rhs);
99 _MessageBoxPresenter& operator =(const _MessageBoxPresenter& rhs);
101 result CreateButtons(void);
102 void FindButtonAndResult(const _ControlHandle handle);
104 float CalculateButtonAreaHeight(void);
105 Tizen::Graphics::FloatRectangle CalculateButtonPositionAndSize(int buttonIndex);
107 void SetReturnValue(MessageBoxModalResult rtn);
108 int GetReturnValue(void) const;
110 float GetLabelHeight(Tizen::Graphics::_Text::TextObject* textObject, wchar_t* text, int length, float fontSize, FloatRectangle bounds, bool isTitle);
111 float GetLeftRightLabelMargin(void);
113 void GetButtonString(void);
117 class _MessageBoxButtonListener
118 : public ITouchEventListener
119 , public IKeyEventListener
120 , virtual public Tizen::Base::Runtime::IEventListener
123 _MessageBoxButtonListener(void);
124 virtual ~_MessageBoxButtonListener(void);
126 _ControlHandle GetClickedButtonHandle(void) const;
127 bool IsButtonClicked(void);
128 void SetBeginModal(bool beginModal);
129 bool GetBeginModal(void);
132 virtual void OnTouchPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition,
133 const Tizen::Ui::TouchEventInfo& touchInfo);
134 virtual void OnTouchLongPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition,
135 const Tizen::Ui::TouchEventInfo& touchInfo) {}
136 virtual void OnTouchReleased(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition,
137 const Tizen::Ui::TouchEventInfo& touchInfo);
138 virtual void OnTouchMoved(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition,
139 const Tizen::Ui::TouchEventInfo& touchInfo);
140 virtual void OnTouchDoublePressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition,
141 const Tizen::Ui::TouchEventInfo& touchInfo) {}
142 virtual void OnTouchFocusIn(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition,
143 const Tizen::Ui::TouchEventInfo& touchInfo) {}
144 virtual void OnTouchFocusOut(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition,
145 const Tizen::Ui::TouchEventInfo& touchInfo) {}
146 virtual void OnKeyPressed(const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode);
147 virtual void OnKeyReleased(const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode);
148 virtual void OnKeyLongPressed(const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode) {}
151 _ControlHandle __buttonHandle;
153 bool __buttonPressFlag;
154 bool __buttonReleaseState;
157 Tizen::Graphics::FloatPoint __point;
159 }; // class _MessageBoxButtonListener
165 MSGBOX_BUTTON_CLICKED = 0xFF,
172 _MessageBox* __pMessageBox;
173 _MessageBoxButtonListener* __pButtonListener;
174 MessageBoxModalResult __msgboxResult;
176 static const int MSGBOX_MAX_BUTTON_NUM = 3;
178 Tizen::Ui::Controls::Button* __pButtons[MSGBOX_MAX_BUTTON_NUM];
179 Tizen::Base::String __buttonText[MSGBOX_MAX_BUTTON_NUM];
181 Tizen::Graphics::_Text::TextObject* __pBodyTextObject;
183 Tizen::Graphics::FloatRectangle __textBounds;
184 Tizen::Graphics::FloatRectangle __titleBgBounds;
185 Tizen::Graphics::FloatRectangle __buttonBgBounds;
188 Tizen::Ui::Controls::_Label* __pLabel;
189 Tizen::Ui::Controls::_Scroll* __pScroll;
190 Tizen::Ui::Controls::_ScrollPanel* __pScrollPanel;
194 float __prevPositionY;
195 float __textObjHeight;
197 bool __touchPressFlag;
200 bool __bodyClickFlag;
201 bool __touchOutBounds;
204 }; // _MessageBoxPresenter
207 }}} // Tizen::Ui::Controls
209 #endif // _FUI_CTRL_INTERNAL_MESSAGEBOX_PRESENTER_H_