fix for p130925 - 00132
[platform/framework/native/uifw.git] / src / ui / inc / FUiCtrl_OptionMenu.h
index 6bab331..0cd85e0 100644 (file)
@@ -9,25 +9,29 @@
 //     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;
@@ -36,135 +40,242 @@ 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_