2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
5 // Licensed under the Flora License, Version 1.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://floralicense.org/license/
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.
18 * @file FUiCtrl_OptionMenuPresenter.h
19 * @brief This is the header file for the _OptionMenuPresenter class.
22 #ifndef _FUI_CTRL_INTERNAL_OPTION_MENU_PRESENTER_H_
23 #define _FUI_CTRL_INTERNAL_OPTION_MENU_PRESENTER_H_
25 #include <FBaseObject.h>
26 #include <FBaseRtTimer.h>
27 #include <FBaseRtITimerEventListener.h>
28 #include <FGrpPoint.h>
29 #include <FGrpFloatMatrix4.h>
30 #include <FUiAnim_VisualElement.h>
31 #include <FUiAnimVisualElementAnimation.h>
32 #include <FUiAnimVisualElementAnimationProvider.h>
33 #include <FUiAnimIVisualElementAnimationStatusEventListener.h>
34 #include <FUiAnimIVisualElementAnimationTimingFunction.h>
35 #include <FGrp_TextTextObject.h>
37 #include "FUi_Control.h"
39 namespace Tizen { namespace Graphics {
43 namespace Tizen { namespace Ui { namespace Controls
47 class _OptionMenuModel;
49 class SineThirtyThreeTimingFunction
50 : public Tizen::Ui::Animations::IVisualElementAnimationTimingFunction
53 float CalculateProgress(float timeProgress) const;
54 }; // SineTimingFunction
56 class SineSixtyTimingFunction
57 : public Tizen::Ui::Animations::IVisualElementAnimationTimingFunction
60 float CalculateProgress(float timeProgress) const;
61 }; // SineTimingFunction
63 class _OptionMenuPresenter
64 : public Tizen::Base::Object
65 , virtual public Tizen::Ui::Animations::VisualElementAnimationProvider
66 , virtual public Tizen::Ui::Animations::IVisualElementAnimationProvider
67 , virtual public Tizen::Ui::Animations::IVisualElementAnimationStatusEventListener
68 , virtual public Tizen::Base::Runtime::IEventListener
71 result AddItem(const Tizen::Base::String& text, int actionId);
73 result InsertItemAt(int mainIndex, const Tizen::Base::String& text, int actionId);
75 result SetItemAt(int mainIndex, const Tizen::Base::String& text, int actionId);
77 result RemoveItemAt(int mainIndex);
79 Tizen::Graphics::Rectangle GetItemBounds(int index) const;
81 int GetItemCount(void) const;
83 int GetItemIndexFromActionId(int actionId) const;
85 int GetItemActionIdAt(int mainIndex) const;
87 result AddSubItem(int mainIndex, const Tizen::Base::String& text, int actionId);
89 result InsertSubItemAt(int mainIndex, int subIndex, const Tizen::Base::String& text, int actionId);
91 result SetSubItemAt(int mainIndex, int subIndex, const Tizen::Base::String& text, int actionId);
93 result RemoveSubItemAt(int mainIndex, int subIndex);
95 int GetSubItemCount(int mainIndex) const;
97 int GetSubItemIndexFromActionId(int actionId) const;
99 int GetSubItemActionIdAt(int mainIndex, int subIndex) const;
104 result InitializeVisualElement(void);
106 result InitializeTextObject(void);
108 // _IControlDelegator
109 void OnChangeLayout(Tizen::Ui::_ControlOrientation orientation);
111 result OnAttachingToMainTree(const Tizen::Ui::_Control* pParent);
113 result OnAttachedToMainTree(void);
115 result OnDetachingFromMainTree(void);
117 void OnVisibleStateChanged(void);
119 // _ITouchEventListener
120 bool OnTouchPressed(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo);
122 bool OnTouchReleased(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo);
124 bool OnTouchMoved(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo);
126 bool OnTouchCanceled(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo);
128 // _IActionEventListener
129 void OnActionPerformed(const Tizen::Ui::_Control& source, int actionId);
131 virtual ~_OptionMenuPresenter(void);
133 static _OptionMenuPresenter* CreateInstanceN(_OptionMenu& optionMenu);
135 result CalculateBounds(void);
137 result PrepareAnimation(void);
138 result SetOptionMenuVisibility(bool visibility);
139 virtual Tizen::Ui::Animations::VisualElementAnimation* CreateAnimationForProperty(Tizen::Ui::Animations::VisualElement& target, const Tizen::Base::String& property);
140 virtual void OnVisualElementAnimationStarted(const Tizen::Ui::Animations::VisualElementAnimation& animation, const Tizen::Base::String& keyName, Tizen::Ui::Animations::VisualElement& target);
141 virtual void OnVisualElementAnimationRepeated(const Tizen::Ui::Animations::VisualElementAnimation& animation, const Tizen::Base::String& keyName, Tizen::Ui::Animations::VisualElement& target, long currentRepeatCount);
142 virtual void OnVisualElementAnimationFinished(const Tizen::Ui::Animations::VisualElementAnimation& animation, const Tizen::Base::String& keyName, Tizen::Ui::Animations::VisualElement& target, bool completedNormally);
143 result DrawResourceBitmap(Tizen::Graphics::Canvas& canvas, const Tizen::Graphics::Rectangle& bounds, Tizen::Graphics::Bitmap* pBitmap);
145 void OnFontChanged(Tizen::Graphics::Font* pFont);
146 void OnFontInfoRequested(unsigned long& style, int& size);
147 Tizen::Graphics::Font* GetFont(void) const;
150 _OptionMenuPresenter(_OptionMenu* optionMenu);
152 _OptionMenuPresenter(const _OptionMenuPresenter&);
154 _OptionMenuPresenter& operator =(const _OptionMenuPresenter&);
156 int GetItemIndexFromPosition(const Tizen::Graphics::Point& position) const;
158 result LoadBitmap(void);
160 result DrawHandler(Tizen::Graphics::Canvas& canvas);
162 result DrawItem(Tizen::Graphics::Canvas& canvas, int index);
164 result DrawItemLine(Tizen::Graphics::Canvas& canvas);
166 result RefreshItem(int index);
168 result LoadShapeResource(Tizen::Ui::_ControlOrientation orientation);
172 result SetPosition(const Tizen::Graphics::Point& position);
174 result StopAnimation(void);
177 _OptionMenu* __pOptionMenu;
179 _OptionMenuModel* __pOptionMenuModel;
181 Tizen::Graphics::Bitmap* __pItemBitmap;
183 Tizen::Graphics::Bitmap* __pItemPressedBitmap;
185 Tizen::Graphics::Bitmap* __pItemPressedEffectBitmap;
187 Tizen::Graphics::Bitmap* __pArrowBitmap;
189 Tizen::Graphics::Bitmap* __pArrowPressedBitmap;
191 Tizen::Graphics::Bitmap* __pHandleBitmap;
193 Tizen::Graphics::Bitmap* __pHandleEffectBitmap;
195 Tizen::Graphics::Bitmap* __pHandlePressedBitmap;
197 Tizen::Graphics::Bitmap* __pHandlePressedEffectBitmap;
199 Tizen::Graphics::Bitmap* __pHandleArrowNormalBitmap;
201 Tizen::Graphics::Bitmap* __pHandleArrowPressedBitmap;
203 Tizen::Graphics::_Text::TextObject __textObject;
205 Tizen::Graphics::Font* __pFont;
207 int __maxColumnCount;
227 int __textLeftMargin;
229 int __textRightMargin;
233 int __textBottomMargin;
239 bool __isHandlerPressed;
243 bool __isAnimationStarted;
245 Tizen::Graphics::FloatMatrix4 _matrixOrigin;
246 Tizen::Graphics::FloatMatrix4 _matrixScale;
247 Tizen::Ui::Animations::_VisualElement* __pOptionMenuVE;
248 const Tizen::Ui::Animations::IVisualElementAnimationTimingFunction* __pThirtyThreeTimingFunction;
249 const Tizen::Ui::Animations::IVisualElementAnimationTimingFunction* __pSixtyTimingFunction;
252 }; // _OptionMenuPresenter
254 }}} // Tizen::Ui::Controls
256 #endif // _FUI_CTRL_INTERNAL_OPTION_MENU_PRESENTER_H_