// http://www.apache.org/licenses/LICENSE-2.0/
//
// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
+// distributed under the License is distributed on an ”AS IS” BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
-
/**
* @file FUiCtrl_OptionMenu.h
* @brief This is the header file for the _OptionMenu class.
+ *
+ * This header file contains the declarations of the %_OptionMenu class.
*/
-
#ifndef _FUI_CTRL_INTERNAL_OPTION_MENU_H_
#define _FUI_CTRL_INTERNAL_OPTION_MENU_H_
-#include <FBaseColLinkedListT.h>
-
+#include <FBaseString.h>
+#include <FGrpColor.h>
+#include <FUiAnimIVisualElementAnimationStatusEventListener.h>
#include "FUi_Window.h"
+#include "FUiCtrl_OptionMenuPresenter.h"
+#include "FUiCtrl_ActionEvent.h"
#include "FUiCtrl_IActionEventListener.h"
-#include "FUiCtrl_OptionMenuItem.h"
+#include "FUiCtrl_IFrameEventListener.h"
+#include "FUiCtrl_ScrollPanel.h"
namespace Tizen { namespace Ui {
class _AccessibilityElement;
namespace Tizen { namespace Ui { namespace Controls
{
-class _ActionEvent;
-class _ContextMenu;
+const int OPTION_MENU_ITEM_STATUS_COUNT = 3;
+
+enum OptionMenuCoreItemStatus
+{
+ OPTION_MENU_CORE_ITEM_STATUS_NORMAL = 0, /**< The normal state */
+ OPTION_MENU_CORE_ITEM_STATUS_PRESSED, /**< The pressed state */
+ OPTION_MENU_CORE_ITEM_STATUS_HIGHLIGHTED /**< The highlighted state */
+};
+
+struct _OptionMenuItemInfo;
+
+/**
+ * @class _OptionMenu
+ * @brief
+ * @since 2.2
+ *
+ *
+ *
+ *
+ */
class _OptionMenuPresenter;
+class _ContextMenu;
+class _OptionMenuItem;
class _OSP_EXPORT_ _OptionMenu
- : public Tizen::Ui::_Window
+ : public _Window
, public _IActionEventListener
, virtual public Tizen::Base::Runtime::IEventListener
, virtual public _IUiEventListener
, virtual public _IUiEventPreviewer
+ , public _IAccessibilityListener
+ , virtual public _IFrameEventListener
+ , public Tizen::Ui::Animations::IVisualElementAnimationStatusEventListener
{
-public:
- result AddActionEventListener(const _IActionEventListener& listener);
+ DECLARE_CLASS_BEGIN(_OptionMenu, _Control);
+ DECLARE_PROPERTY("color", GetPropertyColor, SetPropertyColor);
+ DECLARE_PROPERTY("normalItemColor", GetPropertyNormalItemColor, SetPropertyNormalItemColor);
+ DECLARE_PROPERTY("pressedItemColor", GetPropertyPressedItemColor, SetPropertyPressedItemColor);
+ DECLARE_PROPERTY("highlightedItemColor", GetPropertyHighlightedItemColor, SetPropertyHighlightedItemColor);
+ DECLARE_PROPERTY("normalItemTextColor", GetPropertyNormalItemTextColor, SetPropertyNormalItemTextColor);
+ DECLARE_PROPERTY("pressedItemTextColor", GetPropertyPressedItemTextColor, SetPropertyPressedItemTextColor);
+ DECLARE_PROPERTY("highlightedItemTextColor", GetPropertyHighlightedItemTextColor, SetPropertyHighlightedItemTextColor);
+ DECLARE_PROPERTY("maxVisibleItemsCount", GetPropertyMaxVisibleItemsCount, SetPropertyMaxVisibleItemsCount);
+ DECLARE_CLASS_END();
- result RemoveActionEventListener(const _IActionEventListener& listener);
+ result SetPropertyMaxVisibleItemsCount(const Variant& count);
+ Variant GetPropertyMaxVisibleItemsCount(void) const;
- result FireActionEvent(int actionId);
+ result SetPropertyColor(const Variant& color);
+ Variant GetPropertyColor(void) const;
- result AddItem(const Tizen::Base::String& text, int actionId);
+ result SetPropertyNormalItemColor(const Variant& color);
+ Variant GetPropertyNormalItemColor(void) const;
- result InsertItemAt(int mainIndex, const Tizen::Base::String& text, int actionId);
+ result SetPropertyPressedItemColor(const Variant& color);
+ Variant GetPropertyPressedItemColor(void) const;
- result SetItemAt(int mainIndex, const Tizen::Base::String& text, int actionId);
+ result SetPropertyHighlightedItemColor(const Variant & color);
+ Variant GetPropertyHighlightedItemColor(void) const;
- result RemoveItemAt(int mainIndex);
+ result SetPropertyNormalItemTextColor(const Variant& color);
+ Variant GetPropertyNormalItemTextColor(void) const;
- int GetItemCount(void) const;
+ result SetPropertyPressedItemTextColor(const Variant& color);
+ Variant GetPropertyPressedItemTextColor(void) const;
- int GetItemIndexFromActionId(int actionId) const;
+ result SetPropertyHighlightedItemTextColor(const Variant & color);
+ Variant GetPropertyHighlightedItemTextColor(void) const;
- int GetItemActionIdAt(int mainIndex) const;
+public:
+ _OptionMenu(void);
+ virtual ~_OptionMenu(void);
+ static _OptionMenu* CreateOptionMenuN(void);
+public:
+ void OnVisualElementAnimationFinished(const Tizen::Ui::Animations::VisualElementAnimation& animation, const Tizen::Base::String& keyName, Tizen::Ui::Animations::VisualElement& target, bool completedNormally);
+ void OnVisualElementAnimationRepeated(const Tizen::Ui::Animations::VisualElementAnimation& animation, const Tizen::Base::String& keyName, Tizen::Ui::Animations::VisualElement& target, long currentRepeatCount){};
+ void OnVisualElementAnimationStarted(const Tizen::Ui::Animations::VisualElementAnimation& animation, const Tizen::Base::String& keyName, Tizen::Ui::Animations::VisualElement& target){};
+ result Install(void);
+ result Initialize(void);
+ result AddItem(const Tizen::Base::String& text, int actionId, const Tizen::Graphics::Bitmap* pNormalBitmap, const Tizen::Graphics::Bitmap* pPressedBitmap, const Tizen::Graphics::Bitmap* pHighlightedBitmap);
+ result InsertItemAt(int mainIndex, const Tizen::Base::String& text, int actionId, const Tizen::Graphics::Bitmap* pNormalBitmap, const Tizen::Graphics::Bitmap* pPressedBitmap, const Tizen::Graphics::Bitmap* pHighlightedBitmap);
+ result SetItemAt(int mainIndex, const Tizen::Base::String& text, int actionId, const Tizen::Graphics::Bitmap* pNormalBitmap, const Tizen::Graphics::Bitmap* pPressedBitmap, const Tizen::Graphics::Bitmap* pHighlightedBitmap);
+ int GetItemIndexFromActionId(int actionId) const;
result AddSubItem(int mainIndex, const Tizen::Base::String& text, int actionId);
-
result InsertSubItemAt(int mainIndex, int subIndex, const Tizen::Base::String& text, int actionId);
-
result SetSubItemAt(int mainIndex, int subIndex, const Tizen::Base::String& text, int actionId);
-
result RemoveSubItemAt(int mainIndex, int subIndex);
-
int GetSubItemCount(int mainIndex) const;
-
int GetSubItemIndexFromActionId(int actionId) const;
-
int GetSubItemActionIdAt(int mainIndex, int subIndex) const;
-
+ result ShowSubMenu(int mainIndex, _OptionMenuItem& item);
bool IsSubMenuShown(void) const;
-
- result ShowSubMenu(int mainIndex, _OptionMenuItem& item);
-
result DestroySubMenu(void);
-
- Tizen::Ui::_AccessibilityElement* GetAccessibilityElement(int mainIndex);
-
-public:
-// _IControlDelegator
- virtual void OnDraw(void);
-
- virtual void OnChangeLayout(Tizen::Ui::_ControlOrientation orientation);
-
- virtual void OnBoundsChanged(void);
-
- virtual result OnAttachingToMainTree(const Tizen::Ui::_Control* pParent);
+ result InsertItem(int index, const Tizen::Base::String& text, int actionId, const Tizen::Graphics::Bitmap* pNormalBitmap,
+ const Tizen::Graphics::Bitmap* pPressedBitmap, const Tizen::Graphics::Bitmap* pHighlightedBitmap);
+ result SetItem(int index, const Tizen::Base::String& text, int actionId, const Tizen::Graphics::Bitmap* pNormalBitmap,
+ const Tizen::Graphics::Bitmap* pPressedBitmap, const Tizen::Graphics::Bitmap* pHighlightedBitmap);
+ result RemoveItemAt(int index);
+ void RemoveAllItems(void);
+ int GetItemCount(void) const;
+ result SetShowItemCount(int count);
+ int GetMaximumVisibleItemsCount(void) const;
+ int GetItemIndexAt(int actionId) const;
+ int GetItemActionIdAt(int index) const;
+ result SetWindowRect(const Tizen::Graphics::FloatRectangle& rect);
+ Tizen::Graphics::FloatRectangle GetWindowRect(void) const;
+ result SetBodyRect(const Tizen::Graphics::FloatRectangle& rect);
+ Tizen::Graphics::FloatRectangle GetBodyRect(void) const;
+ result SetItemRect(const Tizen::Graphics::FloatRectangle& rect);
+ Tizen::Graphics::FloatRectangle GetItemRect(void) const;
+ result SetTextColor(enum OptionMenuCoreItemStatus status, const Tizen::Graphics::Color& color);
+ Tizen::Graphics::Color GetTextColor(enum OptionMenuCoreItemStatus status) const;
+ result SetColor(const Tizen::Graphics::Color& color);
+ Tizen::Graphics::Color GetColor(void) const;
+ result SetMaxVisibleItemsCount(int maxItemsCount);
+ result SetItemColor(enum OptionMenuCoreItemStatus status, const Tizen::Graphics::Color& color);
+ Tizen::Graphics::Color GetItemColor(enum OptionMenuCoreItemStatus status) const;
+ result AddActionEventListener(const Tizen::Ui::Controls::_IActionEventListener& listener);
+ result RemoveActionEventListener(const Tizen::Ui::Controls::_IActionEventListener& listener);
+ result FireActionEvent(int actionId);
+ Tizen::Ui::Controls::_ActionEvent* GetActionEvent(void) const;
+ const Tizen::Graphics::Bitmap* GetBackgroundNormalBitmap(void) const;
+ const Tizen::Graphics::Bitmap* GetBackgroundEffectBitmap(void) const;
+ _ControlOrientation GetLayout(void) const;
+ _ControlRotation GetRotation(void) const;
virtual result OnAttachedToMainTree(void);
-
virtual result OnDetachingFromMainTree(void);
+ virtual void OnFrameActivated(const Tizen::Ui::Controls::_Frame& source);
+ virtual void OnFrameDeactivated(const Tizen::Ui::Controls::_Frame& source);
+ virtual void OnFrameMinimized(const Tizen::Ui::Controls::_Frame& source);
+ virtual void OnFrameRestored(const Tizen::Ui::Controls::_Frame& source);
+ virtual void OnDraw(void);
- virtual void OnVisibleStateChanged(void);
-
-// _IWindowDelegator
- virtual void OnActivated(void);
-
- virtual void OnDeactivated(void);
-
-// _ITouchEventListener
- virtual bool OnTouchPressed(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo);
-
- virtual bool OnTouchReleased(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo);
-
- virtual bool OnTouchMoved(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo);
+ virtual _UiTouchEventDelivery OnPreviewTouchPressed(const _Control& source, const _TouchInfo& touchinfo);
+ virtual _UiTouchEventDelivery OnPreviewTouchMoved(const _Control& source, const _TouchInfo& touchinfo);
+ virtual _UiTouchEventDelivery OnPreviewTouchReleased(const _Control& source, const _TouchInfo& touchinfo);
+ void CloseAnimation(int actionID);
+ void OpenAnimation();
- virtual bool OnTouchCanceled(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo);
+ virtual bool OnTouchPressed(const _Control& source, const _TouchInfo& touchinfo);
+ virtual bool OnTouchReleased(const _Control& source, const _TouchInfo& touchinfo);
+ virtual bool OnTouchMoved(const _Control& source, const _TouchInfo& touchinfo);
+ virtual bool OnTouchCanceled(const _Control& source, const _TouchInfo& touchinfo);
-// _IActionEventListener
virtual void OnActionPerformed(const Tizen::Ui::_Control& source, int actionId);
- bool OnFocusGained(const _Control& source);
+ virtual void OnFontChanged(Tizen::Graphics::Font* pFont);
+ virtual void OnFontInfoRequested(unsigned long& style, float& size);
- bool OnFocusLost(const _Control& source);
+ virtual void OnChangeLayout(_ControlRotation rotation);
+ virtual void OnOwnerChanged(_Control* pOldOwner);
+ void OnActivated(void);
+ void OnDeactivated(void);
- void OnDrawFocus(void);
+ virtual bool OnAccessibilityFocusMovedNext(const _AccessibilityContainer& control, const _AccessibilityElement& element);
+ virtual bool OnAccessibilityFocusMovedPrevious(const _AccessibilityContainer& control, const _AccessibilityElement& element);
+ virtual bool OnAccessibilityReadingElement(const _AccessibilityContainer& control, const _AccessibilityElement& element);
+ virtual bool OnAccessibilityReadElement(const _AccessibilityContainer& control, const _AccessibilityElement& element);
+ virtual bool OnAccessibilityFocusIn(const _AccessibilityContainer& control, const _AccessibilityElement& element);
+ virtual bool OnAccessibilityFocusOut(const _AccessibilityContainer& control, const _AccessibilityElement& element);
+ virtual bool OnAccessibilityActionPerformed(const _AccessibilityContainer& control, const _AccessibilityElement& element);
+ virtual bool OnAccessibilityValueIncreased(const _AccessibilityContainer& control, const _AccessibilityElement& element);
+ virtual bool OnAccessibilityValueDecreased(const _AccessibilityContainer& control, const _AccessibilityElement& element);
- bool OnKeyPressed(const _Control &source, const _KeyInfo &keyInfo);
+ Tizen::Ui::_AccessibilityElement* GetAccessibilityElement(const int mainIndex) const;
+ void AddAccessibilityElement(const _AccessibilityElement& element);
- virtual ~_OptionMenu(void);
+ _OptionMenuItemInfo GetItemFromPosition(const Tizen::Graphics::FloatPoint& position) const;
+ _OptionMenuItemInfo FindItem(int index) const;
+ result SetTopDrawnItemIndex(int index);
- static _OptionMenu* CreateOptionMenuN(void);
+ _ScrollPanel* GetScrollPanel(void);
- virtual void OnFontChanged(Tizen::Graphics::Font* pFont);
- virtual void OnFontInfoRequested(unsigned long& style, float& size);
+ virtual bool OnKeyPressed(const _Control& source, const _KeyInfo& keyInfo);
+ virtual bool OnKeyReleased(const _Control& source, const _KeyInfo& keyInfo);
+ virtual bool OnFocusGained(const _Control& source);
+ virtual bool OnFocusLost(const _Control& source);
+ virtual void OnDrawFocus(void);
+ virtual void OnFocusModeStateChanged(void);
+
+protected:
+ result SetPresenter(const _OptionMenuPresenter& OptionMenuPresenter);
private:
- _OptionMenu(void);
+ result LoadBitmap(void);
+ result LoadColorReplacedBitmap(const Tizen::Graphics::Color& color);
+ void SetAllAccessibilityElement(void);
+ void RemoveAllAccessibilityElement(void);
- _OptionMenu(const _OptionMenu&);
+ _OptionMenu(const _OptionMenu& rhs);
+ _OptionMenu& operator =(const _OptionMenu& rhs);
- _OptionMenu& operator =(const _OptionMenu&);
+private:
+ _OptionMenuPresenter* __pOptionMenuPresenter;
+ int __showItemCount;
+ bool __isAttachedToMainTree;
+ bool __isMaxVisibleCountSet;
+ bool __isFocused;
+ int __currentFocusedIndex;
+ int __selectedActionID;
- void SetBoundsAllAccessibilityElement(void);
+ static const int ANIMATION_DURATION = 333;
- void RemoveAllAccessibilityElement(void);
+ Tizen::Ui::Animations::IVisualElementAnimationTimingFunction* __pBoundsTimingFunction;
+ Tizen::Ui::Animations::IVisualElementAnimationTimingFunction* __pOpacityTimingFunction;
-private:
- _OptionMenuPresenter* __pOptionMenuPresenter;
+ // attribute for position fo the window
+ Tizen::Graphics::FloatRectangle __windowRect; // OptionMenu window in the whole screen area
+ Tizen::Graphics::FloatRectangle __bodyRect; // body area relative to window
+ Tizen::Graphics::FloatRectangle __itemRect; // item area relative to window
+ // attribute for event
_ActionEvent* __pActionEvent;
- _ContextMenu* __pSubMenu;
+ // attribute for drawing
+ Tizen::Graphics::Bitmap* __pBackgroundNormalBitmap;
+ Tizen::Graphics::Bitmap* __pBackgroundEffectBitmap;
+ enum _ControlOrientation __layout;
+ enum _ControlRotation __rotation;
- int __subMenuIndex;
+ Tizen::Graphics::Color __backgroundColor;
+ Tizen::Graphics::Color __textColor[OPTION_MENU_ITEM_STATUS_COUNT];
+ Tizen::Graphics::Color __itemColor[OPTION_MENU_ITEM_STATUS_COUNT];
+ Tizen::Base::Collection::ArrayListT<int> __actionId;
Tizen::Base::Collection::LinkedListT<_AccessibilityElement*> __accessibilityElements;
- int __currentFocusedIndex;
+ _ScrollPanel* __pScrollPanel;
+ _ContextMenu* __pSubMenu;
+ Tizen::Ui::Controls::_Frame* __pCurrentFrame;
+ int __subMenuIndex;
- bool __isFocused;
}; // _OptionMenu
-}}} // Tizen::Ui::Controls
+}}} // Tizen::Ui: Control
-#endif // _FUI_CTRL_INTERNAL_OPTION_MENU_H_
+#endif //_FUI_CTRL_INTERNAL_OPTION_MENU_H_