From ee98ab3b533e64ff8ca3c17e5b3de651cdd63ad7 Mon Sep 17 00:00:00 2001 From: woo Date: Wed, 27 Mar 2013 02:55:05 +0900 Subject: [PATCH] reset commit to request SR Change-Id: I8270f91f4bb76b2d4acf7fd26a9579535a868f8d Signed-off-by: woo --- .../usr/share/osp/bitmaps/480x800/00_focus.#.png | Bin 0 -> 2925 bytes .../bitmaps/480x800/00_groupedlist_bg_focus.#.png | Bin .../480x800/00_groupedlist_bottom_bg_focus.#.png | Bin .../480x800/00_groupedlist_center_bg_focus.#.png | Bin .../480x800/00_groupedlist_top_bg_focus.#.png | Bin .../osp/bitmaps/480x800/00_list_group_bg.#.png | Bin .../bitmaps/480x800/00_list_group_bg_bottom.#.png | Bin .../bitmaps/480x800/00_list_group_bg_center.#.png | Bin .../osp/bitmaps/480x800/00_list_group_bg_top.#.png | Bin .../share/osp/bitmaps/480x800/black/00_focus.#.png | Bin 0 -> 2925 bytes .../480x800/black/00_list_group_bg_bottom_ef.#.png | Bin 0 -> 3052 bytes .../480x800/black/00_list_group_bg_center_ef.#.png | Bin 0 -> 2954 bytes .../480x800/black/00_list_group_bg_ef.#.png | Bin 0 -> 3104 bytes .../480x800/black/00_list_group_bg_top_ef.#.png | Bin 0 -> 3076 bytes .../share/osp/bitmaps/480x800/white/00_focus.#.png | Bin 0 -> 2925 bytes .../{ => white}/00_list_group_bg_bottom_ef.#.png | Bin .../{ => white}/00_list_group_bg_center_ef.#.png | Bin .../480x800/{ => white}/00_list_group_bg_ef.#.png | Bin .../{ => white}/00_list_group_bg_top_ef.#.png | Bin .../usr/share/osp/bitmaps/720x1280/00_focus.#.png | Bin 0 -> 3012 bytes .../bitmaps/720x1280/00_groupedlist_bg_focus.#.png | Bin .../720x1280/00_groupedlist_bottom_bg_focus.#.png | Bin .../720x1280/00_groupedlist_center_bg_focus.#.png | Bin .../720x1280/00_groupedlist_top_bg_focus.#.png | Bin .../osp/bitmaps/720x1280/00_list_group_bg.#.png | Bin .../bitmaps/720x1280/00_list_group_bg_bottom.#.png | Bin .../bitmaps/720x1280/00_list_group_bg_center.#.png | Bin .../bitmaps/720x1280/00_list_group_bg_top.#.png | Bin .../bitmaps/720x1280/00_list_group_bg_top_ef.#.png | Bin 3150 -> 0 bytes .../osp/bitmaps/720x1280/black/00_focus.#.png | Bin 0 -> 3012 bytes .../black/00_list_group_bg_bottom_ef.#.png | Bin 0 -> 3156 bytes .../black/00_list_group_bg_center_ef.#.png | Bin 0 -> 2891 bytes .../720x1280/black/00_list_group_bg_ef.#.png | Bin 0 -> 3152 bytes .../720x1280/black/00_list_group_bg_top_ef.#.png | Bin 0 -> 3146 bytes .../osp/bitmaps/720x1280/white/00_focus.#.png | Bin 0 -> 3012 bytes .../{ => white}/00_list_group_bg_bottom_ef.#.png | Bin .../{ => white}/00_list_group_bg_center_ef.#.png | Bin .../720x1280/{ => white}/00_list_group_bg_ef.#.png | Bin .../720x1280/white/00_list_group_bg_top_ef.#.png | Bin 0 -> 3138 bytes src/graphics/FGrp_Canvas.cpp | 11 +- src/graphics/FGrp_CanvasImpl.cpp | 2 +- src/graphics/FGrp_FontImpl.cpp | 2 +- src/graphics/FGrp_FontUtil.h | 6 +- src/ui/CMakeLists.txt | 1 + src/ui/FUi_ContainerImpl.cpp | 53 +- src/ui/FUi_Control.cpp | 94 ++- src/ui/animations/FUiAnim_AnimationManager.cpp | 6 + src/ui/controls/FUiCtrl_ButtonPresenter.cpp | 4 +- src/ui/controls/FUiCtrl_DateTimeBar.cpp | 68 +- src/ui/controls/FUiCtrl_DateTimeBarPresenter.cpp | 10 +- src/ui/controls/FUiCtrl_Edit.cpp | 14 - src/ui/controls/FUiCtrl_EditDate.cpp | 2 + src/ui/controls/FUiCtrl_EditDatePresenter.cpp | 42 +- src/ui/controls/FUiCtrl_EditPresenter.cpp | 30 - src/ui/controls/FUiCtrl_EditTime.cpp | 2 + src/ui/controls/FUiCtrl_EditTimePresenter.cpp | 62 +- src/ui/controls/FUiCtrl_Form.cpp | 83 +-- src/ui/controls/FUiCtrl_IconListPresenter.cpp | 4 +- src/ui/controls/FUiCtrl_Popup.cpp | 29 + src/ui/controls/FUiCtrl_SearchBar.cpp | 18 +- .../controls/FUiCtrl_SlidableGroupedListImpl.cpp | 139 ++-- src/ui/controls/FUiCtrl_SliderPresenter.cpp | 114 ++-- src/ui/controls/FUiCtrl_SplitPanel.cpp | 202 ++++-- src/ui/controls/FUiCtrl_SplitPanelPresenter.cpp | 746 ++++++++++++--------- src/ui/controls/FUiCtrl_TableViewItem.cpp | 257 ++++--- src/ui/controls/FUiCtrl_TableViewPresenter.cpp | 7 +- src/ui/controls/FUiCtrl_TokenEditPresenter.cpp | 138 ++-- src/ui/controls/FUiCtrl_Toolbar.cpp | 29 +- src/ui/inc/FUiCtrl_DateTimeBar.h | 4 +- src/ui/inc/FUiCtrl_DateTimeBarPresenter.h | 2 +- src/ui/inc/FUiCtrl_Edit.h | 2 - src/ui/inc/FUiCtrl_EditPresenter.h | 5 +- src/ui/inc/FUiCtrl_Form.h | 2 - src/ui/inc/FUiCtrl_Popup.h | 1 + src/ui/inc/FUiCtrl_SearchBar.h | 1 + src/ui/inc/FUiCtrl_SlidableGroupedListImpl.h | 1 + src/ui/inc/FUiCtrl_SliderPresenter.h | 13 +- src/ui/inc/FUiCtrl_SplitPanel.h | 6 +- src/ui/inc/FUiCtrl_SplitPanelPresenter.h | 8 +- src/ui/inc/FUiCtrl_TableViewItem.h | 7 +- src/ui/inc/FUiCtrl_TokenEditPresenter.h | 6 +- src/ui/inc/FUi_ContainerImpl.h | 1 + src/ui/inc/FUi_Control.h | 15 +- src/ui/layout/FUi_LayoutLayoutContainer.cpp | 11 +- src/ui/layout/FUi_LayoutLayoutItem.cpp | 25 +- src/ui/layout/FUi_LayoutLayoutItemProxy.cpp | 3 +- src/ui/resource/FUi_ResourceFocusUiConfig.cpp | 25 + src/ui/resource/FUi_ResourceFooterConfig.cpp | 2 +- src/ui/resource/FUi_ResourceSearchBarConfig.cpp | 5 +- 89 files changed, 1384 insertions(+), 936 deletions(-) create mode 100644 res/common/usr/share/osp/bitmaps/480x800/00_focus.#.png mode change 100755 => 100644 res/common/usr/share/osp/bitmaps/480x800/00_groupedlist_bg_focus.#.png mode change 100755 => 100644 res/common/usr/share/osp/bitmaps/480x800/00_groupedlist_bottom_bg_focus.#.png mode change 100755 => 100644 res/common/usr/share/osp/bitmaps/480x800/00_groupedlist_center_bg_focus.#.png mode change 100755 => 100644 res/common/usr/share/osp/bitmaps/480x800/00_groupedlist_top_bg_focus.#.png mode change 100755 => 100644 res/common/usr/share/osp/bitmaps/480x800/00_list_group_bg.#.png mode change 100755 => 100644 res/common/usr/share/osp/bitmaps/480x800/00_list_group_bg_bottom.#.png mode change 100755 => 100644 res/common/usr/share/osp/bitmaps/480x800/00_list_group_bg_center.#.png mode change 100755 => 100644 res/common/usr/share/osp/bitmaps/480x800/00_list_group_bg_top.#.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/black/00_focus.#.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/black/00_list_group_bg_bottom_ef.#.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/black/00_list_group_bg_center_ef.#.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/black/00_list_group_bg_ef.#.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/black/00_list_group_bg_top_ef.#.png create mode 100644 res/common/usr/share/osp/bitmaps/480x800/white/00_focus.#.png rename res/common/usr/share/osp/bitmaps/480x800/{ => white}/00_list_group_bg_bottom_ef.#.png (100%) mode change 100755 => 100644 rename res/common/usr/share/osp/bitmaps/480x800/{ => white}/00_list_group_bg_center_ef.#.png (100%) mode change 100755 => 100644 rename res/common/usr/share/osp/bitmaps/480x800/{ => white}/00_list_group_bg_ef.#.png (100%) mode change 100755 => 100644 rename res/common/usr/share/osp/bitmaps/480x800/{ => white}/00_list_group_bg_top_ef.#.png (100%) mode change 100755 => 100644 create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_focus.#.png mode change 100755 => 100644 res/common/usr/share/osp/bitmaps/720x1280/00_groupedlist_bg_focus.#.png mode change 100755 => 100644 res/common/usr/share/osp/bitmaps/720x1280/00_groupedlist_bottom_bg_focus.#.png mode change 100755 => 100644 res/common/usr/share/osp/bitmaps/720x1280/00_groupedlist_center_bg_focus.#.png mode change 100755 => 100644 res/common/usr/share/osp/bitmaps/720x1280/00_groupedlist_top_bg_focus.#.png mode change 100755 => 100644 res/common/usr/share/osp/bitmaps/720x1280/00_list_group_bg.#.png mode change 100755 => 100644 res/common/usr/share/osp/bitmaps/720x1280/00_list_group_bg_bottom.#.png mode change 100755 => 100644 res/common/usr/share/osp/bitmaps/720x1280/00_list_group_bg_center.#.png mode change 100755 => 100644 res/common/usr/share/osp/bitmaps/720x1280/00_list_group_bg_top.#.png delete mode 100644 res/common/usr/share/osp/bitmaps/720x1280/00_list_group_bg_top_ef.#.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/black/00_focus.#.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/black/00_list_group_bg_bottom_ef.#.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/black/00_list_group_bg_center_ef.#.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/black/00_list_group_bg_ef.#.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/black/00_list_group_bg_top_ef.#.png create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/white/00_focus.#.png rename res/common/usr/share/osp/bitmaps/720x1280/{ => white}/00_list_group_bg_bottom_ef.#.png (100%) mode change 100755 => 100644 rename res/common/usr/share/osp/bitmaps/720x1280/{ => white}/00_list_group_bg_center_ef.#.png (100%) mode change 100755 => 100644 rename res/common/usr/share/osp/bitmaps/720x1280/{ => white}/00_list_group_bg_ef.#.png (100%) mode change 100755 => 100644 create mode 100644 res/common/usr/share/osp/bitmaps/720x1280/white/00_list_group_bg_top_ef.#.png mode change 100644 => 100755 src/graphics/FGrp_Canvas.cpp mode change 100755 => 100644 src/ui/controls/FUiCtrl_SliderPresenter.cpp mode change 100644 => 100755 src/ui/layout/FUi_LayoutLayoutContainer.cpp mode change 100644 => 100755 src/ui/layout/FUi_LayoutLayoutItem.cpp mode change 100644 => 100755 src/ui/layout/FUi_LayoutLayoutItemProxy.cpp create mode 100644 src/ui/resource/FUi_ResourceFocusUiConfig.cpp diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_focus.#.png b/res/common/usr/share/osp/bitmaps/480x800/00_focus.#.png new file mode 100644 index 0000000000000000000000000000000000000000..6327ca2ee461b84fcb291e25f243090c62832b99 GIT binary patch literal 2925 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 X86652u_xYw00000NkvXXu0mjfiOy&7 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_groupedlist_bg_focus.#.png b/res/common/usr/share/osp/bitmaps/480x800/00_groupedlist_bg_focus.#.png old mode 100755 new mode 100644 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_groupedlist_bottom_bg_focus.#.png b/res/common/usr/share/osp/bitmaps/480x800/00_groupedlist_bottom_bg_focus.#.png old mode 100755 new mode 100644 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_groupedlist_center_bg_focus.#.png b/res/common/usr/share/osp/bitmaps/480x800/00_groupedlist_center_bg_focus.#.png old mode 100755 new mode 100644 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_groupedlist_top_bg_focus.#.png b/res/common/usr/share/osp/bitmaps/480x800/00_groupedlist_top_bg_focus.#.png old mode 100755 new mode 100644 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_list_group_bg.#.png b/res/common/usr/share/osp/bitmaps/480x800/00_list_group_bg.#.png old mode 100755 new mode 100644 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_list_group_bg_bottom.#.png b/res/common/usr/share/osp/bitmaps/480x800/00_list_group_bg_bottom.#.png old mode 100755 new mode 100644 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_list_group_bg_center.#.png b/res/common/usr/share/osp/bitmaps/480x800/00_list_group_bg_center.#.png old mode 100755 new mode 100644 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_list_group_bg_top.#.png b/res/common/usr/share/osp/bitmaps/480x800/00_list_group_bg_top.#.png old mode 100755 new mode 100644 diff --git a/res/common/usr/share/osp/bitmaps/480x800/black/00_focus.#.png b/res/common/usr/share/osp/bitmaps/480x800/black/00_focus.#.png new file mode 100644 index 0000000000000000000000000000000000000000..6327ca2ee461b84fcb291e25f243090c62832b99 GIT binary patch literal 2925 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 X86652u_xYw00000NkvXXu0mjfiOy&7 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/black/00_list_group_bg_bottom_ef.#.png b/res/common/usr/share/osp/bitmaps/480x800/black/00_list_group_bg_bottom_ef.#.png new file mode 100644 index 0000000000000000000000000000000000000000..c2d4df9debe4ad7fb312037b2e322394f59ebc73 GIT binary patch literal 3052 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/white/00_focus.#.png b/res/common/usr/share/osp/bitmaps/480x800/white/00_focus.#.png new file mode 100644 index 0000000000000000000000000000000000000000..6327ca2ee461b84fcb291e25f243090c62832b99 GIT binary patch literal 2925 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 X86652u_xYw00000NkvXXu0mjfiOy&7 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_list_group_bg_bottom_ef.#.png b/res/common/usr/share/osp/bitmaps/480x800/white/00_list_group_bg_bottom_ef.#.png old mode 100755 new mode 100644 similarity index 100% rename from res/common/usr/share/osp/bitmaps/480x800/00_list_group_bg_bottom_ef.#.png rename to res/common/usr/share/osp/bitmaps/480x800/white/00_list_group_bg_bottom_ef.#.png diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_list_group_bg_center_ef.#.png b/res/common/usr/share/osp/bitmaps/480x800/white/00_list_group_bg_center_ef.#.png old mode 100755 new mode 100644 similarity index 100% rename from res/common/usr/share/osp/bitmaps/480x800/00_list_group_bg_center_ef.#.png rename to res/common/usr/share/osp/bitmaps/480x800/white/00_list_group_bg_center_ef.#.png diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_list_group_bg_ef.#.png b/res/common/usr/share/osp/bitmaps/480x800/white/00_list_group_bg_ef.#.png old mode 100755 new mode 100644 similarity index 100% rename from res/common/usr/share/osp/bitmaps/480x800/00_list_group_bg_ef.#.png rename to res/common/usr/share/osp/bitmaps/480x800/white/00_list_group_bg_ef.#.png diff --git a/res/common/usr/share/osp/bitmaps/480x800/00_list_group_bg_top_ef.#.png b/res/common/usr/share/osp/bitmaps/480x800/white/00_list_group_bg_top_ef.#.png old mode 100755 new mode 100644 similarity index 100% rename from res/common/usr/share/osp/bitmaps/480x800/00_list_group_bg_top_ef.#.png rename to res/common/usr/share/osp/bitmaps/480x800/white/00_list_group_bg_top_ef.#.png diff --git a/res/common/usr/share/osp/bitmaps/720x1280/00_focus.#.png b/res/common/usr/share/osp/bitmaps/720x1280/00_focus.#.png new file mode 100644 index 0000000000000000000000000000000000000000..4b7603a61a1a8c549e3ac4a68a2f6a88284af444 GIT binary patch literal 3012 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 diff --git a/res/common/usr/share/osp/bitmaps/720x1280/black/00_focus.#.png b/res/common/usr/share/osp/bitmaps/720x1280/black/00_focus.#.png new file mode 100644 index 0000000000000000000000000000000000000000..4b7603a61a1a8c549e3ac4a68a2f6a88284af444 GIT binary patch literal 3012 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 literal 0 HcmV?d00001 diff --git a/res/common/usr/share/osp/bitmaps/720x1280/white/00_focus.#.png b/res/common/usr/share/osp/bitmaps/720x1280/white/00_focus.#.png new file mode 100644 index 0000000000000000000000000000000000000000..4b7603a61a1a8c549e3ac4a68a2f6a88284af444 GIT binary patch literal 3012 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 literal 0 HcmV?d00001 diff --git a/src/graphics/FGrp_Canvas.cpp b/src/graphics/FGrp_Canvas.cpp old mode 100644 new mode 100755 index 05268d2..e9f7bd2 --- a/src/graphics/FGrp_Canvas.cpp +++ b/src/graphics/FGrp_Canvas.cpp @@ -1507,8 +1507,15 @@ _Canvas::DrawBitmap(const Point& point, const _Bitmap& bitmap) } } { - Color color; - bool isPixmanSupported = !this->__useStableRenderer && bitmap.GetMaskingColor(color ) != E_SUCCESS && alphaConstant >= 255; + bool isPixmanSupported = (!this->__useStableRenderer) && (alphaConstant >= 255); + + if (isPixmanSupported) + { + Color color; + + isPixmanSupported = !((bitmap.GetBitsPerPixel() == 16) && (bitmap.GetMaskingColor(color) == E_SUCCESS)); + } + if (isPixmanSupported) { _Util::Rectangle outRect = { 0, 0, -1, -1 }; diff --git a/src/graphics/FGrp_CanvasImpl.cpp b/src/graphics/FGrp_CanvasImpl.cpp index b05fdd0..427c24f 100755 --- a/src/graphics/FGrp_CanvasImpl.cpp +++ b/src/graphics/FGrp_CanvasImpl.cpp @@ -47,7 +47,7 @@ using namespace Tizen::Base::Collection; #define EXTRACT_CANVASEX(pVar, canvas) Tizen::Graphics::_Canvas * pVar = canvas._pNativeCanvas #define EXTRACT_BITMAPEX(pVar, bitmap) Tizen::Graphics::_Bitmap * pVar = Tizen::Graphics::_GetBitmapEx(bitmap) -#define EXTRACT_FONTEX(pVar, font) Tizen::Graphics::_Font * pVar = Tizen::Graphics::GetFontEx(font) +#define EXTRACT_FONTEX(pVar, font) Tizen::Graphics::_Font * pVar = Tizen::Graphics::_GetFontEx(font) #define EXTRACT_SCALED_BITMAPEX(pVar, bitmap) Tizen::Graphics::_Bitmap * pVar = Tizen::Graphics::_GetScaledBitmapEx(bitmap) #define IsSucceeded(X) (!IsFailed(X)) diff --git a/src/graphics/FGrp_FontImpl.cpp b/src/graphics/FGrp_FontImpl.cpp index 58e76a5..69412a3 100644 --- a/src/graphics/FGrp_FontImpl.cpp +++ b/src/graphics/FGrp_FontImpl.cpp @@ -819,7 +819,7 @@ namespace Tizen { namespace Graphics { _OSP_EXPORT_ bool _TestGetTextExtentList(Tizen::Graphics::Font& font, const Tizen::Base::String& string, std::vector >& outList) { - _Font* pInternalFont = GetFontEx(font); + _Font* pInternalFont = _GetFontEx(font); _Util::String text(string.GetPointer(), string.GetLength()); _Util::AccumList<_Util::Pair > outAccumList; diff --git a/src/graphics/FGrp_FontUtil.h b/src/graphics/FGrp_FontUtil.h index cada4bd..efddede 100644 --- a/src/graphics/FGrp_FontUtil.h +++ b/src/graphics/FGrp_FontUtil.h @@ -44,17 +44,17 @@ public: }; inline _Font* -GetFontEx(const Tizen::Graphics::_FontImpl& font) +_GetFontEx(const Tizen::Graphics::_FontImpl& font) { const _FontImplHack* pFontImplHack = static_cast (&font); return (pFontImplHack) ? pFontImplHack->GetFontEx() : null; } inline _Font* -GetFontEx(const Tizen::Graphics::Font& font) +_GetFontEx(const Tizen::Graphics::Font& font) { const _FontImpl* pFontImpl = _FontImpl::GetInstance(font); - return (pFontImpl) ? GetFontEx(*pFontImpl) : null; + return (pFontImpl) ? _GetFontEx(*pFontImpl) : null; } }} // Tizen::Graphics diff --git a/src/ui/CMakeLists.txt b/src/ui/CMakeLists.txt index 0413dad..f475585 100644 --- a/src/ui/CMakeLists.txt +++ b/src/ui/CMakeLists.txt @@ -649,6 +649,7 @@ SET (${this_target}_SOURCE_FILES resource/FUi_ResourceStringLoader.cpp resource/FUi_ResourceConfigLoader.cpp resource/FUi_ResourceConfigParser.cpp + resource/FUi_ResourceFocusUiConfig.cpp ## EFFECTS effects/FUiEffects_EffectErrorMessages.cpp effects/FUiEffects_EffectManagerImpl.cpp diff --git a/src/ui/FUi_ContainerImpl.cpp b/src/ui/FUi_ContainerImpl.cpp index b4c13a0..f7ff60e 100644 --- a/src/ui/FUi_ContainerImpl.cpp +++ b/src/ui/FUi_ContainerImpl.cpp @@ -246,6 +246,54 @@ _ContainerImpl::RemoveChild(int index) } void +_ContainerImpl::DeleteAllChildren(_ContainerImpl* pChild, bool detachSystemChild) +{ + ArrayList* pList = static_cast (pChild->GetChildrenPublic()); + int count = pList->GetCount(); + for (int index = 0; index < count; index++) + { + Container* pContainer = dynamic_cast (pList->GetAt(index)); + result r = GetLastResult(); + if (IsFailed(r)) + { + SysAssert(r == E_OUT_OF_RANGE); + SysLogException(NID_UI, + E_OUT_OF_RANGE, "[E_OUT_OF_RANGE] The specified index is out of range (index = %d, count = %d.)", + index, GetChildCount()); + return; + } + + if (pContainer) + { + _ContainerImpl* pContainerImpl = _ContainerImpl::GetInstance(*pContainer); + DeleteAllChildren(pContainerImpl, detachSystemChild); + pContainer->Destroy(); + } + else + { + Control* pControl = static_cast (pList->GetAt(index)); + result r = GetLastResult(); + if (IsFailed(r)) + { + SysAssert(r == E_OUT_OF_RANGE); + SysLogException(NID_UI, + E_OUT_OF_RANGE, "[E_OUT_OF_RANGE] The specified index is out of range (index = %d, count = %d.)", + index, GetChildCount()); + return; + } + _ControlImpl* pControlImpl = _ControlImpl::GetInstance(*pControl); + if (pControlImpl) + { + if (detachSystemChild || pControlImpl->GetCore().GetArea() != _CONTROL_AREA_SYSTEM) + { + pControl->Destroy(); + } + } + } + } +} + +void _ContainerImpl::RemoveAllChildren(bool detachSystemChild) { ClearLastResult(); @@ -253,10 +301,11 @@ _ContainerImpl::RemoveAllChildren(bool detachSystemChild) GetCore().DetachAllChildren(detachSystemChild); SysAssert(GetLastResult() == E_SUCCESS); + DeleteAllChildren(this, detachSystemChild); if (detachSystemChild) { - __controlPublics.RemoveAll(true); + __controlPublics.RemoveAll(false); } else { @@ -272,7 +321,7 @@ _ContainerImpl::RemoveAllChildren(bool detachSystemChild) continue; } - r = __controlPublics.Remove(pControl->GetPublic(), true); + r = __controlPublics.Remove(pControl->GetPublic(), false); SysAssert(r == E_SUCCESS); } } diff --git a/src/ui/FUi_Control.cpp b/src/ui/FUi_Control.cpp index 8fc1cfa..890dd2f 100644 --- a/src/ui/FUi_Control.cpp +++ b/src/ui/FUi_Control.cpp @@ -52,6 +52,7 @@ #include "FUiAnim_VisualElementImpl.h" #include "FUiCtrl_Form.h" #include "FUiCtrl_Frame.h" +#include "FUi_ContainerImpl.h" using namespace std; using namespace Tizen::Base; @@ -3665,6 +3666,11 @@ _Control::DisposeControl(void) delete __pAccessibilityContainer; __pAccessibilityContainer = null; + + if (__pFocusVisualElement) + { + __pFocusVisualElement.release(); + } } // E_OUT_OF_MEMORY @@ -4918,7 +4924,7 @@ _Control::OnDrawFocus(void) pCanvas->SetBackgroundColor(0x55555555); pCanvas->Clear(); Bitmap* pBitmap = null; - result r = GET_BITMAP_CONFIG_N(ACCESSIBILITY::POPUP_BG, BITMAP_PIXEL_FORMAT_ARGB8888, pBitmap); + result r = GET_BITMAP_CONFIG_N(FOCUSUI::FOCUS, BITMAP_PIXEL_FORMAT_ARGB8888, pBitmap); if (r == E_SUCCESS) { @@ -4981,4 +4987,90 @@ _Control::DrawFocus(void) _IControlDelegate& delegate = GetControlDelegate(); delegate.OnDrawFocus(); } + +void +_Control::MakeFocusList(const _Control* pControl, IListT<_Control*>* pFocusControlList) const +{ + int childCount = pControl->GetChildCount(); + for(int i = 0; i < childCount; i++) + { + _Control* pChildControl = pControl->GetChild(i); + Rectangle rect = pChildControl->GetAbsoluteBounds(); + unique_ptr > pEnum (pFocusControlList->GetEnumeratorN()); + int index = 0; + while (pEnum->MoveNext() == E_SUCCESS) + { + _Control* pEnumeratorControl = null; + pEnum->GetCurrent(pEnumeratorControl); + if (pEnumeratorControl != null) + { + Rectangle enumeratorRect = pEnumeratorControl->GetAbsoluteBounds(); + if(enumeratorRect.y > rect.y) + { + break; + } + else if (enumeratorRect.y == rect.y) + { + if(enumeratorRect.x > rect.x) + { + break; + } + } + + index ++; + } + } + pFocusControlList->InsertAt(pChildControl, index); + } +} + +void +_Control::MakeChildContainerFocusList(const _Control* pControl, int startIndex , IListT<_Control*>* pFocusControlList) const +{ + unique_ptr > pTempList (new (std::nothrow) ArrayListT<_Control*>); + SysTryReturnVoidResult(NID_UI_CTRL, pTempList, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory is insufficient."); + MakeFocusList(pControl, pTempList.get()); + + unique_ptr > pTempEnum(pTempList->GetEnumeratorN()); + int index = ++startIndex; + while (pTempEnum->MoveNext() == E_SUCCESS) + { + _Control* pEnumeratorControl = null; + pTempEnum->GetCurrent(pEnumeratorControl); + pFocusControlList->InsertAt(pEnumeratorControl, index); + index ++; + } +} + +Tizen::Base::Collection::IListT<_Control*>* +_Control::GetFocusListN(void) const +{ + unique_ptr > pControlFocusList (new (std::nothrow) ArrayListT<_Control*>); + SysTryReturn(NID_UI_CTRL, pControlFocusList, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] The memory is insufficient."); + MakeFocusList(this, pControlFocusList.get()); + + unique_ptr > pEnum(pControlFocusList->GetEnumeratorN()); + SysTryReturn(NID_UI_CTRL, pEnum, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] The memory is insufficient."); + int i =0; + int nextContainerIndex = -1; + while (pEnum->MoveNext() == E_SUCCESS) + { + _Control* pEnumeratorControl = null; + pEnum->GetCurrent(pEnumeratorControl); + _ContainerImpl* pTempContainerImpl = dynamic_cast<_ContainerImpl*>(static_cast <_ControlImpl* >(pEnumeratorControl->GetUserData())); + + if (pTempContainerImpl != null && (nextContainerIndex < i)) + { + if (pEnumeratorControl->IsChildControlFocusManage() == false) + { + MakeChildContainerFocusList(pEnumeratorControl, i, pControlFocusList.get()); + nextContainerIndex = i; + pEnum.reset(pControlFocusList->GetEnumeratorN()); + i = -1; + } + } + i++; + } + return pControlFocusList.release(); +} }} // Tizen::Ui diff --git a/src/ui/animations/FUiAnim_AnimationManager.cpp b/src/ui/animations/FUiAnim_AnimationManager.cpp index 494824d..f328521 100644 --- a/src/ui/animations/FUiAnim_AnimationManager.cpp +++ b/src/ui/animations/FUiAnim_AnimationManager.cpp @@ -744,6 +744,12 @@ _AnimationManager::IsImplicitAnimationEnabled(void) const _TransactionNode* _AnimationManager::GetCurrentTransaction(bool withGroup) const { + // default transaction is always committed. + if (__pCurrentTransaction && __pCurrentTransaction->IsCommitted()) + { + return null; + } + if (withGroup == false) { return __pCurrentTransactionExceptGroup; diff --git a/src/ui/controls/FUiCtrl_ButtonPresenter.cpp b/src/ui/controls/FUiCtrl_ButtonPresenter.cpp index 0bfb7d3..935fe0d 100755 --- a/src/ui/controls/FUiCtrl_ButtonPresenter.cpp +++ b/src/ui/controls/FUiCtrl_ButtonPresenter.cpp @@ -325,7 +325,9 @@ _ButtonPresenter::DrawBackground(void) imagePath = _BitmapImpl::GetInstance(*pBackgroundBitmap)->GetFileName(); } - if (imagePath.IsEmpty() == false && __pButton->GetText() == L"" && __pButton->GetBitmap(status) == null) + if (imagePath.IsEmpty() == false && __pButton->GetText() == L"" + && __pButton->GetBitmap(_BUTTON_STATUS_NORMAL) == null && __pButton->GetBitmap(_BUTTON_STATUS_DISABLED) == null + && __pButton->GetBitmap(_BUTTON_STATUS_PRESSED) == null && __pButton->GetBitmap(_BUTTON_STATUS_HIGHLIGHTED) == null) { __pBase->SetBackgroundColor(_Colorf( (float)bgColor.GetRed() / 255, (float)bgColor.GetGreen() / 255, (float)bgColor.GetBlue() / 255, (float)bgColor.GetAlpha() / 255)); diff --git a/src/ui/controls/FUiCtrl_DateTimeBar.cpp b/src/ui/controls/FUiCtrl_DateTimeBar.cpp index 1a64190..213ca4e 100644 --- a/src/ui/controls/FUiCtrl_DateTimeBar.cpp +++ b/src/ui/controls/FUiCtrl_DateTimeBar.cpp @@ -94,9 +94,6 @@ _DateTimeBar::CreateDateTimeBarN(_Control& owner) pDateTimeBar->__pOwner = &owner; - // if SetActivationEnabled is removed, then remove IsActivatedOnOpen CallBack as well. - pDateTimeBar->SetActivationEnabled(false); - pDateTimeBar->__pDateTimeBarPresenter = _DateTimeBarPresenter::CreateInstanceN(*pDateTimeBar); r = GetLastResult(); SysTryCatch(NID_UI_CTRL, pDateTimeBar->__pDateTimeBarPresenter != null, , r, @@ -131,12 +128,6 @@ CATCH: return null; } -bool -_DateTimeBar::IsActivatedOnOpen(void) const -{ - return false; -} - result _DateTimeBar::SetPositionAndAlignment(const FloatPoint& point, _DateTimeBarAlignment alignment) { @@ -425,35 +416,31 @@ _DateTimeBar::OnAttachedToMainTree(void) { SetOwner(__pOwner); - int itemWidth = 0; + return _Window::OnAttachedToMainTree(); +} - if (GetSelectedBoxId() == DATETIME_ID_MONTH) - { - GET_SHAPE_CONFIG(DATETIMEBAR::MONTH_ITEM_WIDTH, _ControlManager::GetInstance()->GetOrientation(), itemWidth); - } - else if (GetSelectedBoxId() == DATETIME_ID_YEAR) - { - GET_SHAPE_CONFIG(DATETIMEBAR::YEAR_ITEM_WIDTH, _ControlManager::GetInstance()->GetOrientation(), itemWidth); - } - else - { - GET_SHAPE_CONFIG(DATETIMEBAR::DAY_ITEM_WIDTH, _ControlManager::GetInstance()->GetOrientation(), itemWidth); - } +void +_DateTimeBar::OnActivated(void) +{ + RefreshItems(); + SetTouchCapture(true, true); - __pDateTimeBarPresenter->SetInitialAnimationValue(itemWidth); + return _Window::OnActivated(); +} - __pDateTimeBarPresenter->StartAnimationEffect(); +void +_DateTimeBar::OnDeactivated(void) +{ + ReleaseTouchCapture(); - SetTouchCapture(true, true); + GetOwner()->Invalidate(); - return _Window::OnAttachedToMainTree(); + return _Window::OnDeactivated(); } result _DateTimeBar::OnDetachingFromMainTree(void) { - ReleaseTouchCapture(); - return _Window::OnDetachingFromMainTree(); } @@ -615,6 +602,31 @@ _DateTimeBar::GetParentWindowBounds() const return __parentWindowBounds; } +void +_DateTimeBar::RefreshItems(void) +{ + float itemWidth = 0; + + if (GetSelectedBoxId() == DATETIME_ID_MONTH) + { + GET_SHAPE_CONFIG(DATETIMEBAR::MONTH_ITEM_WIDTH, _ControlManager::GetInstance()->GetOrientation(), itemWidth); + } + else if (GetSelectedBoxId() == DATETIME_ID_YEAR) + { + GET_SHAPE_CONFIG(DATETIMEBAR::YEAR_ITEM_WIDTH, _ControlManager::GetInstance()->GetOrientation(), itemWidth); + } + else + { + GET_SHAPE_CONFIG(DATETIMEBAR::DAY_ITEM_WIDTH, _ControlManager::GetInstance()->GetOrientation(), itemWidth); + } + + __pDateTimeBarPresenter->SetInitialAnimationValue(itemWidth); + + __pDateTimeBarPresenter->StartAnimationEffect(); + + return; +} + bool _DateTimeBar::OnAccessibilityFocusMovedNext(const _AccessibilityContainer& control, const _AccessibilityElement& element) { diff --git a/src/ui/controls/FUiCtrl_DateTimeBarPresenter.cpp b/src/ui/controls/FUiCtrl_DateTimeBarPresenter.cpp index 362ab32..1dcf504 100755 --- a/src/ui/controls/FUiCtrl_DateTimeBarPresenter.cpp +++ b/src/ui/controls/FUiCtrl_DateTimeBarPresenter.cpp @@ -58,7 +58,7 @@ _DateTimeBarPresenter::_DateTimeBarPresenter(_DateTimeBar* pDateTimeBar) , __pBgColorReplacementBitmap(null) , __pArrowColorReplacementBitmap(null) , __isInitialAnimation(false) - , __initialAnimationValue(0) + , __initialAnimationValue(0.0f) , __pFont(null) { } @@ -1339,9 +1339,9 @@ _DateTimeBarPresenter::StartAnimationEffect(void) __isInitialAnimation = true; __distance = -10.0f; - if (__initialAnimationValue >= 0 ) + if (__initialAnimationValue >= 0.0f ) { - __initialAnimationValue = __initialAnimationValue + _CoordinateSystemUtils::ConvertToInteger(__distance); + __initialAnimationValue = __initialAnimationValue + __distance; StartFlickAnimationTimer(); LoadItems(); @@ -1350,7 +1350,7 @@ _DateTimeBarPresenter::StartAnimationEffect(void) } else { - __initialAnimationValue = 0; + __initialAnimationValue = 0.0f; __isInitialAnimation = false; ResetFlickAnimationTimer(); ValidateAndAdjustStartPosition(); @@ -1465,7 +1465,7 @@ _DateTimeBarPresenter::ValidateAndAdjustStartPosition(void) } void -_DateTimeBarPresenter::SetInitialAnimationValue(int animationValue) +_DateTimeBarPresenter::SetInitialAnimationValue(float animationValue) { __initialAnimationValue = animationValue; return; diff --git a/src/ui/controls/FUiCtrl_Edit.cpp b/src/ui/controls/FUiCtrl_Edit.cpp index 05f0ebf..b1db30e 100644 --- a/src/ui/controls/FUiCtrl_Edit.cpp +++ b/src/ui/controls/FUiCtrl_Edit.cpp @@ -2729,20 +2729,6 @@ _Edit::SetCursorDisabled(bool disabled) return; } -void -_Edit::SetPressedGuideTextColor(const Color& color) -{ - __pressedGuideTextColor = color; - - return; -} - -Color -_Edit::GetPressedGuideTextColor(void) const -{ - return __pressedGuideTextColor; -} - result _Edit::SetPropertyAutoResizingEnabled(const Variant& enable) { diff --git a/src/ui/controls/FUiCtrl_EditDate.cpp b/src/ui/controls/FUiCtrl_EditDate.cpp index a634c30..a52c8db 100644 --- a/src/ui/controls/FUiCtrl_EditDate.cpp +++ b/src/ui/controls/FUiCtrl_EditDate.cpp @@ -785,6 +785,8 @@ _EditDate::OnTouchPressed(const _Control& source, const _TouchInfo& touchinfo) { FloatRectangle absoluteBounds = GetAbsoluteBoundsF(); + SetFocused(true); + if (absoluteBounds.y != __absoluteBounds.y || absoluteBounds.height != __absoluteBounds.height) { CalculateDateTimeBarPosition(); diff --git a/src/ui/controls/FUiCtrl_EditDatePresenter.cpp b/src/ui/controls/FUiCtrl_EditDatePresenter.cpp index 7f43956..fcfbced 100644 --- a/src/ui/controls/FUiCtrl_EditDatePresenter.cpp +++ b/src/ui/controls/FUiCtrl_EditDatePresenter.cpp @@ -681,7 +681,7 @@ _EditDatePresenter::OnTouchPressed(const _Control& source, const _TouchInfo& tou if (boxId < DATETIME_ID_YEAR || boxId > DATETIME_ID_DAY) { __selectedId = DATETIME_ID_NONE; - return true; + return false; } int minValue = -1; @@ -727,9 +727,6 @@ _EditDatePresenter::OnTouchPressed(const _Control& source, const _TouchInfo& tou } __selectedId = boxId; - - __pEditDate->Invalidate(); - return true; } @@ -748,14 +745,22 @@ _EditDatePresenter::OnTouchReleased(const _Control& source, const _TouchInfo& to _DateTimeId boxId = DATETIME_ID_NONE; boxId = GetBoxIdFromPosition(point); - - if (boxId != __selectedId) + if (boxId != __selectedId || boxId == DATETIME_ID_NONE) { + if (__pEditDate->GetDateTimeBar() != null && __pEditDate->GetDateTimeBar()->IsActivated()) + { + __pEditDate->GetDateTimeBar()->SetVisibleState(false); + __pEditDate->GetDateTimeBar()->Close(); + } + + Draw(); __selectedId = DATETIME_ID_NONE; + SetLastSelectedId(__selectedId); + + return true; } SetLastSelectedId(__selectedId); - __selectedId = DATETIME_ID_NONE; __lastSelectedValue = ""; _DateTimeUtils dateTimeUtils; @@ -775,9 +780,9 @@ _EditDatePresenter::OnTouchReleased(const _Control& source, const _TouchInfo& to PLAY_FEEDBACK(_RESOURCE_FEEDBACK_PATTERN_TAP); } - __pEditDate->Invalidate(); + Draw(); - if (__pEditDate->GetDateTimeBar() != null && GetLastSelectedId() != DATETIME_ID_NONE) + if ((__pEditDate->GetDateTimeBar() != null) && (GetLastSelectedId() != DATETIME_ID_NONE)) { FloatRectangle bounds(0.0f, 0.0f, 0.0f, 0.0f); bounds = GetDateAreaBounds(GetLastSelectedId()); @@ -786,11 +791,19 @@ _EditDatePresenter::OnTouchReleased(const _Control& source, const _TouchInfo& to bounds.x += absoluteBounds.x; __pEditDate->GetDateTimeBar()->CalculateArrowBounds(bounds); - __pEditDate->GetDateTimeBar()->SetVisibleState(true); - __pEditDate->GetDateTimeBar()->Close(); - __pEditDate->GetDateTimeBar()->Open(); + + if (__pEditDate->GetDateTimeBar()->IsActivated()) + { + __pEditDate->GetDateTimeBar()->RefreshItems(); + } + else + { + __pEditDate->GetDateTimeBar()->SetVisibleState(true); + __pEditDate->GetDateTimeBar()->Open(); + } } + __selectedId = DATETIME_ID_NONE; return true; } @@ -804,8 +817,6 @@ _EditDatePresenter::OnTouchCanceled(const _Control& source, const _TouchInfo& to __selectedId = DATETIME_ID_NONE; - __pEditDate->Invalidate(); - return true; } @@ -824,7 +835,6 @@ _EditDatePresenter::OnTouchMoved(const _Control& source, const _TouchInfo& touch __selectedId = DATETIME_ID_NONE; } - __pEditDate->Invalidate(); return false; } @@ -833,7 +843,7 @@ _EditDatePresenter::OnTouchMoveHandled(const _Control& control) { __touchMoveHandled = true; __selectedId = DATETIME_ID_NONE; - __pEditDate->Invalidate(); + return; } diff --git a/src/ui/controls/FUiCtrl_EditPresenter.cpp b/src/ui/controls/FUiCtrl_EditPresenter.cpp index 162b9e7..2e4a809 100755 --- a/src/ui/controls/FUiCtrl_EditPresenter.cpp +++ b/src/ui/controls/FUiCtrl_EditPresenter.cpp @@ -1695,14 +1695,6 @@ _EditPresenter::DrawTextForEntireFontSetting(Canvas& canvas) { __pGuideTextObject->SetForegroundColor(__pEdit->GetGuideTextColor(), 0, __pGuideTextObject->GetTextLength()); - if (GetSearchBarFlag()) - { - if (__isTouchPressed) - { - __pGuideTextObject->SetForegroundColor(__pEdit->GetPressedGuideTextColor(), 0, __pGuideTextObject->GetTextLength()); - } - } - if (__isGuideTextColorChanged == true && __pEdit->IsSettingGuideTextColor() == false) { __pGuideTextObject->SetForegroundColor(__pEdit->GetTextColor(EDIT_STATUS_NORMAL), 0, __pGuideTextObject->GetTextLength()); @@ -8182,28 +8174,6 @@ _EditPresenter::IsAutoResizingEnabled(void) const return __pEditModel->IsAutoResizingEnabled(); } -result -_EditPresenter::SetDefaultFont(void) -{ - result r = E_SUCCESS; - - Font* pControlFont = null; - _ControlOrientation orientation = __pEdit->GetOrientation(); - float defaultFontSize = 0.0f; - GET_SHAPE_CONFIG(EDIT::DEFAULT_FONT_SIZE, orientation, defaultFontSize); - - __isFontInitialized = false; - __contentFontSize = defaultFontSize; - __contentFontStyle = FONT_STYLE_PLAIN; - pControlFont = __pEdit->GetFallbackFont(); - if (pControlFont) - { - AdjustFont(*pControlFont); - } - - return r; -} - float _EditPresenter::CalculateFlexibleHeightF(void) { diff --git a/src/ui/controls/FUiCtrl_EditTime.cpp b/src/ui/controls/FUiCtrl_EditTime.cpp index e4068c2..b8af3e4 100644 --- a/src/ui/controls/FUiCtrl_EditTime.cpp +++ b/src/ui/controls/FUiCtrl_EditTime.cpp @@ -577,6 +577,8 @@ _EditTime::OnTouchPressed(const _Control& source, const _TouchInfo& touchinfo) { FloatRectangle absoluteBounds = GetAbsoluteBoundsF(); + SetFocused(true); + if (absoluteBounds.y != __absoluteBounds.y || absoluteBounds.height != __absoluteBounds.height) { CalculateDateTimeBarPosition(); diff --git a/src/ui/controls/FUiCtrl_EditTimePresenter.cpp b/src/ui/controls/FUiCtrl_EditTimePresenter.cpp index d2dd65a..c76ee2c 100755 --- a/src/ui/controls/FUiCtrl_EditTimePresenter.cpp +++ b/src/ui/controls/FUiCtrl_EditTimePresenter.cpp @@ -701,7 +701,6 @@ _EditTimePresenter::DrawText(Canvas& canvas, const FloatRectangle& bounds, const { result r = E_SUCCESS; - Font font; Color textColor; _DateTimeId boxId = DATETIME_ID_NONE; @@ -915,16 +914,17 @@ _EditTimePresenter::OnTouchPressed(const _Control& source, const _TouchInfo& tou } else if (boxId == DATETIME_ID_AMPM) { + __selectedId = boxId; __bounds = ampmBounds; + Draw(); } else { __selectedId = DATETIME_ID_NONE; return false; } - __selectedId = boxId; - __pEditTime->Draw(); + __selectedId = boxId; return true; } @@ -952,21 +952,27 @@ _EditTimePresenter::OnTouchReleased(const _Control& source, const _TouchInfo& to _DateTimeId boxId = GetBoxIdFromPosition(point); - if (boxId < 0) + if (boxId != __selectedId || boxId == DATETIME_ID_NONE) { - __selectedId = DATETIME_ID_NONE; - } + if (__pEditTime->GetDateTimeBar() != null && __pEditTime->GetDateTimeBar()->IsActivated()) + { + __pEditTime->GetDateTimeBar()->SetVisibleState(false); + __pEditTime->GetDateTimeBar()->Close(); + } + + Draw(); - if (boxId != __selectedId) - { __selectedId = DATETIME_ID_NONE; + SetLastSelectedId(__selectedId); + + return true; } SetLastSelectedId(__selectedId); - __selectedId = DATETIME_ID_NONE; __lastSelectedValue = ""; _DateTimeUtils dateTimeUtils; + if (GetLastSelectedId() == DATETIME_ID_HOUR) { int hours = GetHour(); @@ -988,18 +994,29 @@ _EditTimePresenter::OnTouchReleased(const _Control& source, const _TouchInfo& to __lastSelectedValue.Format(10, L"%02d", GetMinute()); PLAY_FEEDBACK(_RESOURCE_FEEDBACK_PATTERN_TAP); } - - if (GetLastSelectedId() == DATETIME_ID_AMPM) + else if (GetLastSelectedId() == DATETIME_ID_AMPM) { SetAmEnabled(!GetAmEnabled()); __pEditTime->FireTimeChangeEvent(TIME_INTERNAL_CHANGE_SAVED); __pEditTime->UpdateAccessibilityElement(); PLAY_FEEDBACK(_RESOURCE_FEEDBACK_PATTERN_TAP); + + __selectedId = DATETIME_ID_NONE; + + if (__pEditTime->GetDateTimeBar() != null && __pEditTime->GetDateTimeBar()->IsActivated()) + { + __pEditTime->GetDateTimeBar()->SetVisibleState(false); + __pEditTime->GetDateTimeBar()->Close(); + } + + Draw(); + + return true; } - __pEditTime->Draw(); + Draw(); - if (__pEditTime->GetDateTimeBar() != null && boxId != DATETIME_ID_AMPM && GetLastSelectedId() != DATETIME_ID_NONE) + if ((__pEditTime->GetDateTimeBar() != null) && (boxId != DATETIME_ID_AMPM) && (GetLastSelectedId() != DATETIME_ID_NONE)) { FloatRectangle bounds(0.0f, 0.0f, 0.0f, 0.0f); bounds = GetDisplayAreaBoundsFromHoursStyle(GetLastSelectedId()); @@ -1008,11 +1025,19 @@ _EditTimePresenter::OnTouchReleased(const _Control& source, const _TouchInfo& to bounds.x += absoluteBounds.x; __pEditTime->GetDateTimeBar()->CalculateArrowBounds(bounds); - __pEditTime->GetDateTimeBar()->SetVisibleState(true); - __pEditTime->GetDateTimeBar()->Close(); - __pEditTime->GetDateTimeBar()->Open(); + + if (__pEditTime->GetDateTimeBar()->IsActivated()) + { + __pEditTime->GetDateTimeBar()->RefreshItems(); + } + else + { + __pEditTime->GetDateTimeBar()->SetVisibleState(true); + __pEditTime->GetDateTimeBar()->Open(); + } } + __selectedId = DATETIME_ID_NONE; return true; } @@ -1026,8 +1051,6 @@ _EditTimePresenter::OnTouchCanceled(const _Control& source, const _TouchInfo& to __selectedId = DATETIME_ID_NONE; - __pEditTime->Draw(); - return true; } @@ -1046,7 +1069,6 @@ _EditTimePresenter::OnTouchMoved(const _Control& source, const _TouchInfo& touch __selectedId = DATETIME_ID_NONE; } - __pEditTime->Invalidate(); return false; } @@ -1055,7 +1077,7 @@ _EditTimePresenter::OnTouchMoveHandled(const _Control& control) { __touchMoveHandled = true; __selectedId = DATETIME_ID_NONE; - __pEditTime->Invalidate(); + return; } diff --git a/src/ui/controls/FUiCtrl_Form.cpp b/src/ui/controls/FUiCtrl_Form.cpp index b066e9b..9300c35 100644 --- a/src/ui/controls/FUiCtrl_Form.cpp +++ b/src/ui/controls/FUiCtrl_Form.cpp @@ -2593,93 +2593,14 @@ _Form::IsNotificationTrayOpenEnabled(void) const return true; } -void -_Form::MakeFocusList(const _Control* pControl, IListT<_Control*>* pFocusControlList) const -{ - int childCount = pControl->GetChildCount(); - for(int i = 0; i < childCount; i++) - { - _Control* pChildControl = pControl->GetChild(i); - Rectangle rect = pChildControl->GetAbsoluteBounds(); - unique_ptr > pEnum (pFocusControlList->GetEnumeratorN()); - int index = 0; - while (pEnum->MoveNext() == E_SUCCESS) - { - _Control* pEnumeratorControl = null; - pEnum->GetCurrent(pEnumeratorControl); - if (pEnumeratorControl != null) - { - Rectangle enumeratorRect = pEnumeratorControl->GetAbsoluteBounds(); - if(enumeratorRect.y > rect.y) - { - break; - } - else if (enumeratorRect.y == rect.y) - { - if(enumeratorRect.x > rect.x) - { - break; - } - } - - index ++; - } - } - pFocusControlList->InsertAt(pChildControl, index); - } -} - -void -_Form::MakeChildContainerFocusList(_Control* pControl, int startIndex) const -{ - unique_ptr > pTempList (new (std::nothrow) ArrayListT<_Control*>); - SysTryReturnVoidResult(NID_UI_CTRL, pTempList, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory is insufficient."); - MakeFocusList(pControl, pTempList.get()); - - unique_ptr > pTempEnum(pTempList->GetEnumeratorN()); - int index = ++startIndex; - while (pTempEnum->MoveNext() == E_SUCCESS) - { - _Control* pEnumeratorControl = null; - pTempEnum->GetCurrent(pEnumeratorControl); - __pFocusControlList->InsertAt(pEnumeratorControl, index); - index ++; - } -} - IListT<_Control*>* _Form::GetFocusList(void) const { if(!__pFocusControlList) { - __pFocusControlList.reset(new (std::nothrow) ArrayListT<_Control*>); - SysTryReturn(NID_UI, __pFocusControlList, null, E_SYSTEM, "[E_OUT_OF_MEMORY] Memory is insufficient."); - MakeFocusList(this, __pFocusControlList.get()); - - unique_ptr > pEnum(__pFocusControlList->GetEnumeratorN()); - int i =0; - int nextContainerIndex = -1; - while ( pEnum->MoveNext() == E_SUCCESS) - { - _Control* pEnumeratorControl = null; - pEnum->GetCurrent(pEnumeratorControl); - _ContainerImpl* pTempContainerImpl = dynamic_cast<_ContainerImpl*>(static_cast <_ControlImpl* >(pEnumeratorControl->GetUserData())); - - if (pTempContainerImpl != null && (nextContainerIndex < i)) - { - if (pEnumeratorControl->IsChildControlFocusManage() == false) - { - MakeChildContainerFocusList(pEnumeratorControl, i); - nextContainerIndex = i; - pEnum.reset(__pFocusControlList->GetEnumeratorN()); - i = -1; - } - } - i++; - } - __pFocusControlList->InsertAt(dynamic_cast<_Control*> (const_cast<_Form*>(this)), 0); + __pFocusControlList.reset(GetFocusListN()); + __pFocusControlList->InsertAt(const_cast<_Form*>(this), 0); } - return __pFocusControlList.get(); } diff --git a/src/ui/controls/FUiCtrl_IconListPresenter.cpp b/src/ui/controls/FUiCtrl_IconListPresenter.cpp index 3bc91fc..ac95a1b 100755 --- a/src/ui/controls/FUiCtrl_IconListPresenter.cpp +++ b/src/ui/controls/FUiCtrl_IconListPresenter.cpp @@ -2966,11 +2966,11 @@ _IconListPresenter::FireEventAfterTouchRelease(int index) if (isChecked) { - FireIconListViewItemEvent(EVENT_TYPE_ITEM_SELECTED, index, ICON_LIST_VIEW_ITEM_UNCHECKED); + FireIconListViewItemEvent(EVENT_TYPE_ITEM_SELECTED, index, ICON_LIST_VIEW_ITEM_CHECKED); } else { - FireIconListViewItemEvent(EVENT_TYPE_ITEM_SELECTED, index, ICON_LIST_VIEW_ITEM_CHECKED); + FireIconListViewItemEvent(EVENT_TYPE_ITEM_SELECTED, index, ICON_LIST_VIEW_ITEM_UNCHECKED); } break; } diff --git a/src/ui/controls/FUiCtrl_Popup.cpp b/src/ui/controls/FUiCtrl_Popup.cpp index 3c01597..5720381 100644 --- a/src/ui/controls/FUiCtrl_Popup.cpp +++ b/src/ui/controls/FUiCtrl_Popup.cpp @@ -640,5 +640,34 @@ _Popup::OnOwnerChanged(_Control* pOldOwner) } } +void +_Popup::UpdateClientBounds(const FloatDimension& size, FloatRectangle& clientBounds) +{ + float y = 0.0f; + + float titleHeight = 0.0f; + float titleLetfMargin = 0.0f; + float titleRightMargin = 0.0f; + + _ControlOrientation orientation; + + orientation = GetOrientation(); + + GET_SHAPE_CONFIG(POPUP::TITLE_HEIGHT, orientation, titleHeight); + GET_SHAPE_CONFIG(POPUP::TITLE_TEXT_LEFT_MARGIN, orientation, titleLetfMargin); + GET_SHAPE_CONFIG(POPUP::TITLE_TEXT_RIGHT_MARGIN, orientation, titleRightMargin); + + if (HasTitle()) + { + y = titleHeight; + } + + clientBounds.x = titleLetfMargin; + clientBounds.y = y; + + clientBounds.width = size.width - (titleLetfMargin + titleRightMargin); + clientBounds.height = size.height - y; +} + }}} // Tizen::Ui::Controls diff --git a/src/ui/controls/FUiCtrl_SearchBar.cpp b/src/ui/controls/FUiCtrl_SearchBar.cpp index 6e2c1b6..edbbf79 100644 --- a/src/ui/controls/FUiCtrl_SearchBar.cpp +++ b/src/ui/controls/FUiCtrl_SearchBar.cpp @@ -66,6 +66,7 @@ _SearchBar::_SearchBar(void) , __isUsableCancelButton(false) , __isUserContainerBounds(false) , __isCancelActionInProgress(false) + , __isUserGuideTextColor(false) , __keypadAction(CORE_KEYPAD_ACTION_SEARCH) , __pBackgroundBitmap(null) , __backgroundColor(Color()) @@ -211,15 +212,18 @@ _SearchBar::Initialize(bool enableSearchBarButton, CoreKeypadAction keypadAction { case SEARCH_FIELD_STATUS_DISABLED: GET_COLOR_CONFIG(SEARCHBAR::EDIT_BG_DISABLED, __color[i]); + GET_COLOR_CONFIG(SEARCHBAR::EDIT_TEXT_DISABLED, __textColor[i]); GET_COLOR_CONFIG(SEARCHBAR::GUIDE_TEXT_DISABLED, __guideTextColor[i]); break; case SEARCH_FIELD_STATUS_HIGHLIGHTED: GET_COLOR_CONFIG(SEARCHBAR::EDIT_BG_NORMAL, __color[i]); + GET_COLOR_CONFIG(SEARCHBAR::EDIT_TEXT_HIGHLIGHTED, __textColor[i]); GET_COLOR_CONFIG(SEARCHBAR::GUIDE_TEXT_HIGHLIGHTED, __guideTextColor[i]); break; default: GET_COLOR_CONFIG(SEARCHBAR::EDIT_BG_NORMAL, __color[i]); + GET_COLOR_CONFIG(SEARCHBAR::EDIT_TEXT_NORMAL, __textColor[i]); GET_COLOR_CONFIG(SEARCHBAR::GUIDE_TEXT_NORMAL, __guideTextColor[i]); break; } @@ -303,7 +307,6 @@ _SearchBar::CreateSearchField(void) editBounds.width = (editBounds.width > searchFieldMinWidth) ? editBounds.width : searchFieldMinWidth; editBounds.height = (editBounds.height > searchFieldMinHeight) ? editBounds.height : searchFieldMinHeight; - __pEdit = _Edit::CreateEditN(); r = GetLastResult(); SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating."); @@ -331,8 +334,11 @@ _SearchBar::CreateSearchField(void) __pEdit->SetColor(editStatus, __color[status]); } + __pEdit->SetTextColor(EDIT_TEXT_COLOR_NORMAL, __textColor[SEARCH_FIELD_STATUS_NORMAL]); + __pEdit->SetTextColor(EDIT_TEXT_COLOR_DISABLED, __textColor[SEARCH_FIELD_STATUS_DISABLED]); + __pEdit->SetTextColor(EDIT_TEXT_COLOR_HIGHLIGHTED, __textColor[SEARCH_FIELD_STATUS_HIGHLIGHTED]); + __pEdit->ReplaceDefaultBackgroundBitmapForSearchBar(); - __pEdit->SetPressedGuideTextColor(__guideTextColor[SEARCH_FIELD_STATUS_HIGHLIGHTED]); __pEdit->SetKeypadAction(__keypadAction); @@ -1239,6 +1245,7 @@ _SearchBar::SetGuideTextColor(const Color& color) SysTryReturn(NID_UI_CTRL, __pEdit, E_SYSTEM, E_SYSTEM, "[E_SYSTEM] A system error has occurred. The edit instance is null."); + __isUserGuideTextColor = true; return __pEdit->SetGuideTextColor(color); } @@ -1544,8 +1551,11 @@ _SearchBar::OnChangeLayout(_ControlOrientation orientation) void _SearchBar::OnDraw(void) { - SearchFieldStatus searchFieldStatus = GetCurrentStatus(); - SetGuideTextColor(__guideTextColor[searchFieldStatus]); + if (!__isUserGuideTextColor) + { + SearchFieldStatus status = GetCurrentStatus(); + __pEdit->SetGuideTextColor(__guideTextColor[status]); + } __pSearchBarPresenter->Draw(); return; diff --git a/src/ui/controls/FUiCtrl_SlidableGroupedListImpl.cpp b/src/ui/controls/FUiCtrl_SlidableGroupedListImpl.cpp index 1cd814a..e7e32c6 100644 --- a/src/ui/controls/FUiCtrl_SlidableGroupedListImpl.cpp +++ b/src/ui/controls/FUiCtrl_SlidableGroupedListImpl.cpp @@ -123,6 +123,16 @@ _SlidableGroupedListItemProvider::CreateGroupItem(int groupIndex, int itemWidth) r = _CustomListItemImpl::CreateTableViewItem(tableViewItemParams); SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, null, r, "[%s] Propagating.", GetErrorMessage(r)); + if (GetItemCount(groupIndex) == 0 && groupIndex > __pListImpl->__topGroup) + { + __pListImpl->__bottomGroup++; + } + + if (groupIndex < __pListImpl->__topGroup) + { + __pListImpl->__topGroup = groupIndex; + } + return __pListImpl->GetTableViewGroupItemAt(groupIndex); } @@ -135,6 +145,25 @@ _SlidableGroupedListItemProvider::DeleteGroupItem(int groupIndex, TableViewGroup pCustomListItem->__pCustomListItemImpl->__pTableViewGroupItemData = null; } + if (__pListImpl->GetItemCountAt(groupIndex) == 0) + { + if (groupIndex == __pListImpl->__topGroup) + { + if (__pListImpl->__topGroup < __pListImpl->__bottomGroup) + { + __pListImpl->__topGroup++; + } + } + else if (groupIndex < __pListImpl->__topGroup) + { + __pListImpl->__topGroup--; + } + if (__pListImpl->__bottomGroup != 0) + { + __pListImpl->__bottomGroup--; + } + } + delete pItem; return true; @@ -492,6 +521,10 @@ _SlidableGroupedListItemProvider::DeleteItem(int groupIndex, int itemIndex, Tabl } } } + else if (__pListImpl->__isFullUpdate == true) + { + __pListImpl->RemoveFromItemsList(groupIndex, (__pListImpl->GetSubItemCountAt(groupIndex) - 1), false); + } delete pItem; pItem = null; @@ -535,6 +568,7 @@ _SlidableGroupedListImpl::_SlidableGroupedListImpl(Control* pList, _TableView* p , __bottomGroup(0) , __topGroup(0) , __loadedCount(0) + , __isFullUpdate(false) , __pItemProvider(null) , __directDelete(false) , __forceScroll(false) @@ -872,12 +906,16 @@ _SlidableGroupedListImpl::InsertGroupAt(int groupIndex, const String& text, cons return E_SUCCESS; } - if (groupIndex <= __topGroup) + if (groupIndex <= __bottomGroup) { - __topGroup++; __bottomGroup++; } + if (groupIndex < __topGroup) + { + __topGroup++; + } + if (__pItemProvider == null) { r = CreateItemProvider(); @@ -1087,9 +1125,6 @@ _SlidableGroupedListImpl::InsertItemAt(int groupIndex, int index, const CustomLi SysTryReturn(NID_UI_CTRL, (groupIndex >= 0 && groupIndex < __groupsList.GetCount()), E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] Invalid argument is used. groupIndex (%d).", groupIndex); - SysTryReturn(NID_UI_CTRL, (index >= GetTopItemIndex(groupIndex) && index <= (GetSubItemCountAt(groupIndex) + GetTopItemIndex(groupIndex))), E_INVALID_ARG, E_INVALID_ARG, - "[E_INVALID_ARG] Invalid argument is used. index (%d).", index); - _TableViewItemParams tableViewItemParams; tableViewItemParams.pItem = (const_cast(&item)); @@ -1106,8 +1141,12 @@ _SlidableGroupedListImpl::InsertItemAt(int groupIndex, int index, const CustomLi SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, E_SYSTEM, E_SYSTEM, "[%s] A system error has occurred. Failed to create an item.", GetErrorMessage(r)); - r = InsertIntoItemsList(item, groupIndex, (index - GetTopItemIndex(groupIndex))); - SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, E_SYSTEM, E_SYSTEM, "[%s] Propagating.", GetErrorMessage(r)); + int subItemCount = GetSubItemCountAt(groupIndex); + if (index < (subItemCount + GetTopItemIndex(groupIndex)) && (index >= GetTopItemIndex(groupIndex))) + { + r = InsertIntoItemsList(item, groupIndex, (index - GetTopItemIndex(groupIndex))); + SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, E_SYSTEM, E_SYSTEM, "[%s] Propagating.", GetErrorMessage(r)); + } _SlidableGroupObject* pGroupObject = dynamic_cast<_SlidableGroupObject*>(const_cast(__groupsList.GetAt(groupIndex))); SysTryReturn(NID_UI_CTRL, pGroupObject, E_SYSTEM, E_SYSTEM, @@ -1372,40 +1411,17 @@ _SlidableGroupedListImpl::RemoveAllCheckedItemsAt(int groupIndex, int itemHeight SysTryReturn(NID_UI_CTRL, pGroupObject, E_SYSTEM, E_SYSTEM, "[E_SYSTEM] A system error has occurred. Failed to get _SlidableGroupObject at index (%d).", groupIndex); - result r = E_SUCCESS; Boolean* pChecked = null; int itemIndex = 0; - int subItemCount = GetSubItemCountAt(groupIndex); - for (itemIndex = pGroupObject->__itemCount; itemIndex >= 0; itemIndex--) + for (itemIndex = (GetItemCountAt(groupIndex) - 1); itemIndex >= 0; itemIndex--) { pChecked = dynamic_cast(pGroupObject->__pCheckedList->GetAt(itemIndex)); if (pChecked && pChecked->ToBool() == true) { - if (pGroupObject->__pCheckedList != null) - { - pGroupObject->__pCheckedList->RemoveAt(itemIndex, true); - } - - __directDelete = true; - - if (itemIndex < (subItemCount + pGroupObject->__topIndex) && (itemIndex >= pGroupObject->__topIndex)) - { - RemoveFromItemsList(groupIndex, (itemIndex - pGroupObject->__topIndex)); - } - - r = GetCore().RefreshTableView(groupIndex, itemIndex, TABLE_VIEW_REFRESH_TYPE_ITEM_REMOVE); - if (r != E_SUCCESS) - { - SysLog(NID_UI_CTRL, "Group item with index %d not removed successFully.", groupIndex); - } - - __directDelete = false; - - CallUnloadItemCb(groupIndex, itemIndex); - pGroupObject->__itemCount--; + RemoveItemAt(groupIndex, itemIndex, 0); } } @@ -1436,35 +1452,17 @@ _SlidableGroupedListImpl::RemoveAllCheckedItems(int itemHeight) result _SlidableGroupedListImpl::RemoveAllItemsAt(int groupIndex) { - result r = E_SUCCESS; SysTryReturn(NID_UI_CTRL, (groupIndex >= 0 && groupIndex < __groupsList.GetCount()), E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] Invalid argument is used. groupIndex (%d).", groupIndex); - _SlidableGroupObject* pGroupObject = dynamic_cast<_SlidableGroupObject*>(__groupsList.GetAt(groupIndex)); - SysTryReturn(NID_UI_CTRL, pGroupObject, E_SYSTEM, E_SYSTEM, - "[E_SYSTEM] A system error has occurred. Failed to get _SlidableGroupObject at index (%d).", groupIndex); - - __directDelete = true; - - for (int itemCount = 0; itemCount < GetSubItemCountAt(groupIndex);) - { - r = RemoveItemAt(groupIndex, 0, 0); - if (r != E_SUCCESS) - { - SysLog(NID_UI_CTRL, "Group item with index %d not removed successFully.", groupIndex); - } - } - - __directDelete = false; + int itemIndex = 0; - if (pGroupObject->__pCheckedList != null) + for (itemIndex = (GetItemCountAt(groupIndex) - 1); itemIndex >= 0; itemIndex--) { - pGroupObject->__pCheckedList->RemoveAll(true); + RemoveItemAt(groupIndex, itemIndex, 0); } - pGroupObject->__itemCount = 0; - return E_SUCCESS; } @@ -1478,11 +1476,21 @@ _SlidableGroupedListImpl::RemoveAllItems(void) for (groupCount = 0; groupCount < __groupsList.GetCount(); groupCount++) { - RemoveAllItemsAt(groupCount); + _SlidableGroupObject* pGroupObject = dynamic_cast<_SlidableGroupObject*>(__groupsList.GetAt(groupCount)); + SysTryReturn(NID_UI_CTRL, pGroupObject, 0, E_SYSTEM, + "[E_SYSTEM] A system error has occurred. Failed to get _SlidableGroupObject at index (%d).", groupCount); + + pGroupObject->__itemCount = 0; + pGroupObject->__topIndex = 0; + } - __pItemProvider->firstTime = true; + __isFullUpdate = true; + GetCore().UpdateTableView(); + __isFullUpdate = false; + __pItemProvider->firstTime = true; + __topGroup = 0; return E_SUCCESS; } @@ -1521,18 +1529,20 @@ _SlidableGroupedListImpl::RemoveItemAt(int groupIndex, int index, int itemHeight int subItemCount = GetSubItemCountAt(groupIndex); - SysTryReturn(NID_UI_CTRL, (index >= 0 && index < subItemCount), + SysTryReturn(NID_UI_CTRL, (index >= 0 && index < pGroupObject->__itemCount), E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] Invalid argument is used. index (%d).", index); - if (!(index < pGroupObject->__topIndex + subItemCount)) + __directDelete = true; + + if (pGroupObject->__pCheckedList != null) { - pGroupObject->__itemCount--; - return E_SUCCESS; + pGroupObject->__pCheckedList->RemoveAt(index, true); } - __directDelete = true; - - RemoveFromItemsList(groupIndex, index); + if (index < (subItemCount + pGroupObject->__topIndex) && (index >= pGroupObject->__topIndex)) + { + RemoveFromItemsList(groupIndex, (index - pGroupObject->__topIndex)); + } result r = GetCore().RefreshTableView(groupIndex, index, TABLE_VIEW_REFRESH_TYPE_ITEM_REMOVE); if (r != E_SUCCESS) @@ -1540,11 +1550,6 @@ _SlidableGroupedListImpl::RemoveItemAt(int groupIndex, int index, int itemHeight SysLog(NID_UI_CTRL, "Group item with index %d not removed successFully.", groupIndex); } - if (pGroupObject->__pCheckedList != null) - { - pGroupObject->__pCheckedList->RemoveAt(index, true); - } - __directDelete = false; CallUnloadItemCb(groupIndex, index); diff --git a/src/ui/controls/FUiCtrl_SliderPresenter.cpp b/src/ui/controls/FUiCtrl_SliderPresenter.cpp old mode 100755 new mode 100644 index 41a3540..5f7c2c0 --- a/src/ui/controls/FUiCtrl_SliderPresenter.cpp +++ b/src/ui/controls/FUiCtrl_SliderPresenter.cpp @@ -39,6 +39,7 @@ using namespace Tizen::Graphics; using namespace Tizen::Base; using namespace Tizen::Ui::Animations; using namespace Tizen::Graphics::_Text; +using namespace Tizen::Base::Runtime; namespace Tizen { namespace Ui { namespace Controls { @@ -47,6 +48,7 @@ _SliderPresenter::_SliderPresenter(void) : __pSlider(null) , __pSliderModel(null) , __pSliderOverlay(null) + , __pSlideTimer(null) , __pResourceBgTopBitmap(null) , __pResourceBgMiddleBitmap(null) , __pResourceBgBottomBitmap(null) @@ -83,13 +85,14 @@ _SliderPresenter::_SliderPresenter(void) , __handleX(0) , __isSliderPressed(false) , __isNeedToBeUpdated(true) - , __isBubblingBlocked(false) , __isResourceLoaded(false) , __isCustomHandle(false) , __isCustomPressedTextColor(false) , __groupStyle(GROUP_STYLE_NONE) , __fontSize(0.0f) , __barOffset(0.0f) + , __isTimerRunning(false) + , __currentPosition(0.0f, 0.0f) { } @@ -101,6 +104,13 @@ _SliderPresenter::~_SliderPresenter(void) delete __pSliderOverlay; __pSliderOverlay = null; + if (__pSlideTimer != null) + { + __pSlideTimer->Cancel(); + delete __pSlideTimer; + __pSlideTimer = null; + } + delete __pResourceBgTopBitmap; __pResourceBgTopBitmap = null; @@ -681,7 +691,7 @@ CATCH: } int -_SliderPresenter::CalculateSliderValue(int positionX, int offsetX) +_SliderPresenter::CalculateSliderValue(float positionX, float offsetX) { int minValue = __pSliderModel->GetMinValue(); int maxValue = __pSliderModel->GetMaxValue(); @@ -1436,20 +1446,32 @@ _SliderPresenter::OnTouchPressed(const _Control& source, const _TouchInfo& touch return false; } - Point point = _CoordinateSystemUtils::ConvertToInteger(touchinfo.GetCurrentPosition()); + if (__pSlideTimer == null) + { + __pSlideTimer = new (std::nothrow) Timer; + SysTryReturn(NID_UI_CTRL, __pSlideTimer != null, true, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed."); + + result r = __pSlideTimer->Construct(*this); + if (r != E_SUCCESS) + { + delete __pSlideTimer; + __pSlideTimer = null; - __isBubblingBlocked = false; + return true; + } + } - if (__pSlider->IsEnabled() == true && __handleRect.Contains(FloatPoint(point.x, point.y)) == true) + FloatPoint point = touchinfo.GetCurrentPosition(); + + if (__handleRect.Contains(point) == true) { + __isSliderPressed = true; + int candidateValue = CalculateSliderValue(point.x, point.x - __handleRect.x); __pSliderModel->SetValue(candidateValue); __pSlider->SetAccessibilityElementValue(); - __isSliderPressed = true; - __isBubblingBlocked = true; - if (__pSlider->GetStyle() & _SLIDER_STYLE_OVERLAY) { __pSliderOverlay->Open(false); @@ -1458,7 +1480,7 @@ _SliderPresenter::OnTouchPressed(const _Control& source, const _TouchInfo& touch __pSlider->Invalidate(); } - return __isBubblingBlocked; + return __isSliderPressed; } bool @@ -1469,15 +1491,20 @@ _SliderPresenter::OnTouchReleased(const _Control& source, const _TouchInfo& touc return false; } - Point point = _CoordinateSystemUtils::ConvertToInteger(touchinfo.GetCurrentPosition()); - bool isBubblingBlocked = __isBubblingBlocked; + if (__pSlideTimer != null) + { + __isTimerRunning = false; + __pSlideTimer->Cancel(); + } + + FloatPoint point = touchinfo.GetCurrentPosition(); Canvas* pCanvas = __pSlider->GetCanvasN(); SysTryReturn(NID_UI_CTRL, pCanvas != null, false, E_SYSTEM, "[E_SYSTEM] A system error has occurred. Failed to get the canvas."); - if (point.x >= (pCanvas->GetBounds().x + pCanvas->GetBounds().width)) + if (point.x >= (pCanvas->GetBoundsF().x + pCanvas->GetBoundsF().width)) { - point.x = pCanvas->GetBounds().x + pCanvas->GetBounds().width; + point.x = pCanvas->GetBoundsF().x + pCanvas->GetBoundsF().width; } if (__isSliderPressed == true) @@ -1506,9 +1533,10 @@ _SliderPresenter::OnTouchReleased(const _Control& source, const _TouchInfo& touc pAdjustmentEvent->Fire(*pEventArg); } + return true; } - return isBubblingBlocked; + return false; } bool @@ -1519,32 +1547,40 @@ _SliderPresenter::OnTouchMoved(const _Control& source, const _TouchInfo& touchin return false; } - Point point = _CoordinateSystemUtils::ConvertToInteger(touchinfo.GetCurrentPosition()); - bool isBubblingBlocked = __isBubblingBlocked; + if (__isSliderPressed == false) + { + return false; + } + + FloatPoint point = touchinfo.GetCurrentPosition(); Canvas* pCanvas = __pSlider->GetCanvasN(); - SysTryReturn(NID_UI_CTRL, pCanvas != null, false, E_SYSTEM, "[E_SYSTEM] A system error has occurred. Failed to get the canvas."); + SysTryReturn(NID_UI_CTRL, pCanvas != null, true, E_SYSTEM, "[E_SYSTEM] A system error has occurred. Failed to get the canvas."); - if (point.x >= (pCanvas->GetBounds().x + pCanvas->GetBounds().width)) + if (point.x >= (pCanvas->GetBoundsF().x + pCanvas->GetBoundsF().width)) { - point.x = pCanvas->GetBounds().x + pCanvas->GetBounds().width; + point.x = pCanvas->GetBoundsF().x + pCanvas->GetBoundsF().width; } + __currentPosition.x = point.x; + __currentPosition.y = point.y; - if (__isSliderPressed == false) + if ( __isTimerRunning == false ) { - return false; + __isTimerRunning = true; + __pSlideTimer->Start(__timerValue); } - if (__pSlider->IsEnabled() == false) - { - __isSliderPressed = false; - return false; - } + return true; +} - float handleHalfWidth = __handleRect.width / 2.0f; - int oldValue = __pSliderModel->GetValue(); - int candidateValue = CalculateSliderValue(point.x, handleHalfWidth); +void +_SliderPresenter::OnTimerExpired(Timer& timer) +{ + __isTimerRunning = false; + + float handleHalfWidth = __handleRect.width / 2; + int candidateValue = CalculateSliderValue(__currentPosition.x, handleHalfWidth); __pSliderModel->SetValue(candidateValue); __pSlider->SetAccessibilityElementValue(); @@ -1552,21 +1588,21 @@ _SliderPresenter::OnTouchMoved(const _Control& source, const _TouchInfo& touchin __pSlider->Draw(); __pSlider->Show(); - if (oldValue != candidateValue) + // Slider Event Fire + _SliderEvent* pSliderEvent = dynamic_cast <_SliderEvent*>(__pSlider->GetSliderEvent()); + if (pSliderEvent != null) { - // Slider Event Fire - _SliderEvent* pSliderEvent = dynamic_cast <_SliderEvent*>(__pSlider->GetSliderEvent()); - if (pSliderEvent != null) - { - Tizen::Base::Runtime::IEventArg* pEventArg = _SliderEvent::CreateSliderEventArgN(candidateValue); - result r = GetLastResult(); - SysTryReturn(NID_UI_CTRL, pEventArg != null, true, r, "[%s] Propagating.", GetErrorMessage(r)); + Tizen::Base::Runtime::IEventArg* pEventArg = _SliderEvent::CreateSliderEventArgN(candidateValue); - pSliderEvent->Fire(*pEventArg); + if( pEventArg == null) + { + return; } + + pSliderEvent->Fire(*pEventArg); } - return isBubblingBlocked; + return; } bool diff --git a/src/ui/controls/FUiCtrl_SplitPanel.cpp b/src/ui/controls/FUiCtrl_SplitPanel.cpp index 4de73f1..573b1e1 100644 --- a/src/ui/controls/FUiCtrl_SplitPanel.cpp +++ b/src/ui/controls/FUiCtrl_SplitPanel.cpp @@ -45,6 +45,8 @@ namespace Tizen { namespace Ui { namespace Controls _SplitPanel::_SplitPanel() : __pSplitPanelPresenter(null) , __pTapGesture(null) + , __pFirstPaneParent(null) + , __pSecondPaneParent(null) , __pFirstPane(null) , __pSecondPane(null) , __splitPanelDividerDirection(SPLIT_PANEL_DIVIDER_DIRECTION_VERTICAL) @@ -70,7 +72,7 @@ _SplitPanel::CreateSplitPanelN(const FloatRectangle& rect, SplitPanelDividerStyl _ControlOrientation orientation = _CONTROL_ORIENTATION_PORTRAIT; pSplitPanel = new (std::nothrow) _SplitPanel; - SysTryReturn(NID_UI_CTRL, pSplitPanel, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] The memory is insufficient."); + SysTryReturn(NID_UI_CTRL, pSplitPanel, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed."); r = pSplitPanel->Construct(splitPanelDividerStyle, splitPanelDividerDirection); if (r != E_SUCCESS) @@ -104,7 +106,7 @@ _SplitPanel::CreateSplitPanelN(const FloatRectangle& rect, SplitPanelDividerStyl pSplitPanel->__dividerPosition[_SPLIT_PANEL_HORIZONTAL_DIVIDER_ORIENTATION_LANDSCAPE] = rect.height / 2.0f; pSplitPanel->__pTapGesture = new (std::nothrow) _TouchTapGestureDetector; - SysTryCatch(NID_UI_CTRL, pSplitPanel->__pTapGesture, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] The memory is insufficient."); + SysTryCatch(NID_UI_CTRL, pSplitPanel->__pTapGesture, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed."); pSplitPanel->AddGestureDetector(*(pSplitPanel->__pTapGesture)); r = pSplitPanel->__pTapGesture->AddGestureListener(*pSplitPanel); @@ -139,7 +141,7 @@ _SplitPanel::Construct(SplitPanelDividerStyle splitPanelDividerStyle, SplitPanel result r = E_SUCCESS; __pDividerVisualElement = new (std::nothrow) VisualElement(); - SysTryReturnResult(NID_UI_CTRL, __pDividerVisualElement, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] The memory is insufficient."); + SysTryReturnResult(NID_UI_CTRL, __pDividerVisualElement, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed."); r = __pDividerVisualElement->Construct(); SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Failed to construct divider visual element.", GetErrorMessage(r)); @@ -151,11 +153,28 @@ _SplitPanel::Construct(SplitPanelDividerStyle splitPanelDividerStyle, SplitPanel SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Failed to attach divider visual element.", GetErrorMessage(r)); __pSplitPanelPresenter = new (std::nothrow) _SplitPanelPresenter; - SysTryCatch(NID_UI_CTRL, __pSplitPanelPresenter != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] The memory is insufficient."); + SysTryCatch(NID_UI_CTRL, __pSplitPanelPresenter != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed."); r = __pSplitPanelPresenter->Construct(*this, splitPanelDividerStyle, splitPanelDividerDirection); SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Failed to construct presenter.", GetErrorMessage(r)); + __pFirstPaneParent = _Control::CreateControlN(); + r = GetLastResult(); + SysTryCatch(NID_UI_CTRL, __pFirstPaneParent != null, , r, "[%s] Propagating.", GetErrorMessage(r)); + + __pSecondPaneParent = _Control::CreateControlN(); + r = GetLastResult(); + SysTryCatch(NID_UI_CTRL, __pSecondPaneParent != null, , r, "[%s] Propagating.", GetErrorMessage(r)); + + __pFirstPaneParent->SetBackgroundColor(Color(0,0,0,0)); + __pSecondPaneParent->SetBackgroundColor(Color(0,0,0,0)); + + r = AttachChild(*__pFirstPaneParent); + SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r)); + + r = AttachChild(*__pSecondPaneParent); + SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r)); + return r; CATCH: @@ -165,8 +184,37 @@ CATCH: __pDividerVisualElement = null; } - delete __pSplitPanelPresenter; - __pSplitPanelPresenter = null; + if (__pSplitPanelPresenter) + { + delete __pSplitPanelPresenter; + __pSplitPanelPresenter = null; + } + + if (__pFirstPaneParent) + { + if (__pFirstPane) + { + __pFirstPaneParent->DetachChild(*__pFirstPane); + } + + DetachChild(*__pFirstPaneParent); + + delete __pFirstPaneParent; + __pFirstPaneParent = null; + } + + if (__pSecondPaneParent) + { + if (__pSecondPane) + { + __pSecondPaneParent->DetachChild(*__pSecondPane); + } + + DetachChild(*__pSecondPaneParent); + + delete __pSecondPaneParent; + __pSecondPaneParent = null; + } return r; } @@ -202,10 +250,28 @@ _SplitPanel::~_SplitPanel(void) if (__pDividerVisualElement) { + GetVisualElement()->DetachChild(*__pDividerVisualElement); + __pDividerVisualElement->Destroy(); __pDividerVisualElement = null; } + if (__pFirstPaneParent) + { + DetachChild(*__pFirstPaneParent); + + delete __pFirstPaneParent; + __pFirstPaneParent = null; + } + + if (__pSecondPaneParent) + { + DetachChild(*__pSecondPaneParent); + + delete __pSecondPaneParent; + __pSecondPaneParent = null; + } + ClearLastResult(); } @@ -225,7 +291,7 @@ _SplitPanel::AddSplitPanelEventListener(const _ISplitPanelEventListener& listene { __pSplitPanelEvent = _SplitPanelEvent::CreateInstanceN(*this); r = GetLastResult(); - SysTryReturn(NID_UI_CTRL, __pSplitPanelEvent, r, r, "[%s] Propagating.", GetErrorMessage(r)) + SysTryReturn(NID_UI_CTRL, __pSplitPanelEvent, r, r, "[%s] Propagating.", GetErrorMessage(r)); __pSplitPanelEvent->AddListener(listener); } @@ -237,7 +303,7 @@ result _SplitPanel::RemoveSplitPanelEventListener(const _ISplitPanelEventListener& listener) { SysTryReturn(NID_UI_CTRL, __pSplitPanelEvent, E_SYSTEM, E_SYSTEM, - "[E_SYSTEM] System error occurred.") + "[E_SYSTEM] System error occurred."); __pSplitPanelEvent->RemoveListener(listener); @@ -341,14 +407,14 @@ _SplitPanel::SetPane(_Control* pControl, SplitPanelPaneOrder paneOrder) if (paneOrder == SPLIT_PANEL_PANE_ORDER_FIRST) { - r = AttachChild(*pControl); + r = __pFirstPaneParent->AttachChild(*pControl); SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r)); __pFirstPane = pControl; } else { - r = AttachChild(*pControl); + r = __pSecondPaneParent->AttachChild(*pControl); SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r)); __pSecondPane = pControl; @@ -360,25 +426,28 @@ _SplitPanel::SetPane(_Control* pControl, SplitPanelPaneOrder paneOrder) _Control* _SplitPanel::GetPane(SplitPanelPaneOrder paneOrder) const { - SysTryReturn(NID_UI_CTRL, __pSplitPanelPresenter != null, null, E_SYSTEM, - "[E_SYSTEM] System error occurred."); - if (paneOrder == SPLIT_PANEL_PANE_ORDER_FIRST) { return const_cast <_Control*>(__pFirstPane); } - else + + return const_cast <_Control*>(__pSecondPane); +} + +_Control* +_SplitPanel::GetPaneParent(SplitPanelPaneOrder paneOrder) const +{ + if (paneOrder == SPLIT_PANEL_PANE_ORDER_FIRST) { - return const_cast <_Control*>(__pSecondPane); + return const_cast <_Control*>(__pFirstPaneParent); } + + return const_cast <_Control*>(__pSecondPaneParent); } result _SplitPanel::SetDividerStyle(SplitPanelDividerStyle splitPanelDividerStyle) { - SysTryReturn(NID_UI_CTRL, __pSplitPanelPresenter != null, E_SYSTEM, E_SYSTEM, - "[E_SYSTEM] System error occurred."); - __pSplitPanelPresenter->SetDividerStyle(splitPanelDividerStyle); return E_SUCCESS; @@ -394,8 +463,25 @@ result _SplitPanel::SetDividerPosition(float position) { const float width = GetBoundsF().width; + const float height = GetBoundsF().height; + int configValue = 0; + float margin = 0.0f; + _ControlOrientation orientation = _ControlManager::GetInstance()->GetOrientation(); + + if (GetDividerStyle() == SPLIT_PANEL_DIVIDER_STYLE_MOVABLE) + { + GET_SHAPE_CONFIG(SPLITPANEL::MOVABLE_DIVIDER_THICKNESS, orientation, configValue); + } + else + { + GET_SHAPE_CONFIG(SPLITPANEL::FIXED_DIVIDER_THICKNESS, orientation, configValue); + } - if ((0.0f > position) || (width < position)) + margin = _CoordinateSystemUtils::ConvertToFloat(configValue); + + if ((0.0f > position) || + ((GetDividerDirection() == SPLIT_PANEL_DIVIDER_DIRECTION_VERTICAL) && ((width - margin) < position)) || + ((GetDividerDirection() == SPLIT_PANEL_DIVIDER_DIRECTION_HORIZONTAL) && ((height - margin) < position))) { return E_OUT_OF_RANGE; } @@ -408,8 +494,6 @@ _SplitPanel::SetDividerPosition(float position) } } - _ControlOrientation orientation = _ControlManager::GetInstance()->GetOrientation(); - if (orientation == _CONTROL_ORIENTATION_LANDSCAPE) { if (GetDividerDirection() == SPLIT_PANEL_DIVIDER_DIRECTION_VERTICAL) @@ -472,24 +556,31 @@ _SplitPanel::SetMaximumDividerPosition(float position) { if (GetDividerStyle() == SPLIT_PANEL_DIVIDER_STYLE_FIXED) { - SysLog(NID_UI_CTRL, "[E_SYSTEM] System error occurred. This functionality is not supported for divider style fixed"); + SysLog(NID_UI_CTRL, "[E_SYSTEM] System error occurred. This functionality is not supported for divider style fixed."); return E_SUCCESS; } - _ControlOrientation orientation = _ControlManager::GetInstance()->GetOrientation(); - const float width = GetBoundsF().width; + const float height = GetBoundsF().height; + int configValue = 0; float margin = 0.0f; + _ControlOrientation orientation = _ControlManager::GetInstance()->GetOrientation(); + if (GetDividerStyle() == SPLIT_PANEL_DIVIDER_STYLE_MOVABLE) { - GET_SHAPE_CONFIG(SPLITPANEL::MOVABLE_DIVIDER_THICKNESS, orientation, margin); + GET_SHAPE_CONFIG(SPLITPANEL::MOVABLE_DIVIDER_THICKNESS, orientation, configValue); } else { - GET_SHAPE_CONFIG(SPLITPANEL::FIXED_DIVIDER_THICKNESS, orientation, margin); + GET_SHAPE_CONFIG(SPLITPANEL::FIXED_DIVIDER_THICKNESS, orientation, configValue); } - if ((0.0f > position) || ((width - margin) < position) || (position < GetMinimumDividerPosition())) + margin = _CoordinateSystemUtils::ConvertToFloat(configValue); + + if ((0.0f > position) || + ((GetDividerDirection() == SPLIT_PANEL_DIVIDER_DIRECTION_VERTICAL) && ((width - margin) < position)) || + ((GetDividerDirection() == SPLIT_PANEL_DIVIDER_DIRECTION_HORIZONTAL) && ((height - margin) < position)) || + (position < GetMinimumDividerPosition())) { return E_OUT_OF_RANGE; } @@ -570,13 +661,29 @@ _SplitPanel::SetMinimumDividerPosition(float position) } const float width = GetBoundsF().width; + const float height = GetBoundsF().height; + int configValue = 0; + float margin = 0.0f; + _ControlOrientation orientation = _ControlManager::GetInstance()->GetOrientation(); - if ((0.0f > position) || (width < position) || (position > GetMaximumDividerPosition())) + if (GetDividerStyle() == SPLIT_PANEL_DIVIDER_STYLE_MOVABLE) { - return E_OUT_OF_RANGE; + GET_SHAPE_CONFIG(SPLITPANEL::MOVABLE_DIVIDER_THICKNESS, orientation, configValue); + } + else + { + GET_SHAPE_CONFIG(SPLITPANEL::FIXED_DIVIDER_THICKNESS, orientation, configValue); } - _ControlOrientation orientation = _ControlManager::GetInstance()->GetOrientation(); + margin = _CoordinateSystemUtils::ConvertToFloat(configValue); + + if ((0.0f > position) || + ((GetDividerDirection() == SPLIT_PANEL_DIVIDER_DIRECTION_VERTICAL) && ((width - margin) < position)) || + ((GetDividerDirection() == SPLIT_PANEL_DIVIDER_DIRECTION_HORIZONTAL) && ((height - margin) < position)) || + (position > GetMaximumDividerPosition())) + { + return E_OUT_OF_RANGE; + } if (orientation == _CONTROL_ORIENTATION_LANDSCAPE) { @@ -663,42 +770,30 @@ _SplitPanel::GetDividerDirection(void) const result _SplitPanel::MaximizePane(SplitPanelPaneOrder paneOrder) { - SysTryReturn(NID_UI_CTRL, __pSplitPanelPresenter != null, E_SYSTEM, E_SYSTEM, - "[E_SYSTEM] System error occurred."); - - __pSplitPanelPresenter->MaximizePane(paneOrder); - - return E_SUCCESS; + return __pSplitPanelPresenter->MaximizePane(paneOrder); } bool _SplitPanel::IsPaneMaximized(SplitPanelPaneOrder paneOrder) const { - SysTryReturn(NID_UI_CTRL, __pSplitPanelPresenter != null, false, E_SYSTEM, - "[E_SYSTEM] System error occurred."); - return __pSplitPanelPresenter->IsPaneMaximized(paneOrder); } result _SplitPanel::RestorePane(void) { - SysTryReturn(NID_UI_CTRL, __pSplitPanelPresenter != null, E_SYSTEM, E_SYSTEM, - "[E_SYSTEM] System error occurred."); - - __pSplitPanelPresenter->RestorePane(); - - return E_SUCCESS; + return __pSplitPanelPresenter->RestorePane(); } result _SplitPanel::SendSplitPanelEvent(_SplitPanelEventStatus status) { result r = E_SUCCESS; + IEventArg* pEventArg = null; if (__pSplitPanelEvent) { - IEventArg* pEventArg = _SplitPanelEvent::CreateSplitPanelEventArgN(status); + pEventArg = _SplitPanelEvent::CreateSplitPanelEventArgN(status); r = GetLastResult(); SysTryReturn(NID_UI_CTRL, pEventArg, r, r, "[%s] Propagating.", GetErrorMessage(r)); @@ -725,19 +820,22 @@ _SplitPanel::GetTapCount(void) const result _SplitPanel::OnAttachedToMainTree(void) { + String hintText = L""; + FloatRectangle dividerRect(0.0f, 0.0f, 0.0f, 0.0f); + _AccessibilityContainer* pContainer = null; + if (likely(!(_AccessibilityManager::IsActivated()))) { return E_SUCCESS; } - _AccessibilityContainer* pContainer = GetAccessibilityContainer(); + pContainer = GetAccessibilityContainer(); if (pContainer) { if (__pDividerVisualElement) { - FloatRectangle dividerRect = __pSplitPanelPresenter->GetDividerRectangle(); - String hintText = L""; + dividerRect = __pSplitPanelPresenter->GetDividerRectangle(); if (GetDividerStyle() == SPLIT_PANEL_DIVIDER_STYLE_FIXED) { @@ -748,7 +846,7 @@ _SplitPanel::OnAttachedToMainTree(void) hintText = String(L"Drag scroll, double tap and move to adjust split area"); } - __pAccessibilityElement = new _AccessibilityElement(true); + __pAccessibilityElement = new (std::nothrow) _AccessibilityElement(true); SysTryReturn(NID_UI_CTRL, __pAccessibilityElement, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed."); __pAccessibilityElement->SetBounds(_CoordinateSystemUtils::ConvertToInteger(dividerRect)); @@ -790,7 +888,7 @@ _SplitPanel::SetDividerVisualElementBounds(FloatRectangle& bounds) bool _SplitPanel::OnAccessibilityValueIncreased(const _AccessibilityContainer& control, const _AccessibilityElement& element) { - SetDividerPosition(GetDividerPosition() + 5); + SetDividerPosition(GetDividerPosition() + ACCESSIBILITY_DIVIDER_POSITION_OFFSET); Invalidate(); return true; @@ -800,7 +898,7 @@ bool _SplitPanel::OnAccessibilityValueDecreased(const _AccessibilityContainer& control, const _AccessibilityElement& element) { - SetDividerPosition(GetDividerPosition() - 5); + SetDividerPosition(GetDividerPosition() - ACCESSIBILITY_DIVIDER_POSITION_OFFSET); Invalidate(); return true; diff --git a/src/ui/controls/FUiCtrl_SplitPanelPresenter.cpp b/src/ui/controls/FUiCtrl_SplitPanelPresenter.cpp index 7957001..397e014 100644 --- a/src/ui/controls/FUiCtrl_SplitPanelPresenter.cpp +++ b/src/ui/controls/FUiCtrl_SplitPanelPresenter.cpp @@ -37,6 +37,7 @@ using namespace Tizen::Ui; using namespace Tizen::Graphics; using namespace Tizen::Ui::Animations; +using namespace Tizen::Base; namespace Tizen { namespace Ui { namespace Controls { @@ -56,8 +57,8 @@ _SplitPanelPresenter::_SplitPanelPresenter(void) , __pDividerThumbBitmap(null) , __transactionIdMaximize(0) , __transactionIdRestore(0) - , __controlAnimatorAnimationInterpolator(ANIMATION_INTERPOLATOR_LINEAR) - , __visualElementAnimationInterpolator(L"Linear") + , __controlAnimatorInterpolator(ANIMATION_INTERPOLATOR_LINEAR) + , __visualElementInterpolator(L"Linear") { GET_COLOR_CONFIG(SPLITPANEL::DIVIDER_BG_NORMAL, __dividerBackgroundColor); GET_COLOR_CONFIG(SPLITPANEL::DIVIDER_BG_PRESSED, __dividerPressedBackgroundColor); @@ -106,8 +107,8 @@ _SplitPanelPresenter::Construct(const _SplitPanel& splitPanel, SplitPanelDivider AdjustDividerRectangle(); - __controlAnimatorAnimationInterpolator = ANIMATION_INTERPOLATOR_EASE_IN; - __visualElementAnimationInterpolator = L"EaseIn"; + __controlAnimatorInterpolator = ANIMATION_INTERPOLATOR_EASE_IN; + __visualElementInterpolator = L"EaseIn"; return E_SUCCESS; @@ -125,10 +126,10 @@ _SplitPanelPresenter::CheckDividerTouchRegion(float positionX, float positionY) Bitmap* pThumbBitmap = null; dividerPosition = __pSplitPanel->GetDividerPosition(); + pThumbBitmap = __pDividerThumbBitmap; if (__pSplitPanel->GetDividerDirection() == SPLIT_PANEL_DIVIDER_DIRECTION_VERTICAL) { - pThumbBitmap = __pDividerThumbBitmap; if ((positionX >= dividerPosition) && (positionX <= dividerPosition + pThumbBitmap->GetWidthF())) { @@ -137,7 +138,6 @@ _SplitPanelPresenter::CheckDividerTouchRegion(float positionX, float positionY) } else { - pThumbBitmap = __pDividerThumbBitmap; if ((positionY >= dividerPosition) && (positionY <= dividerPosition + pThumbBitmap->GetHeightF())) { @@ -195,6 +195,7 @@ _SplitPanelPresenter::OnTouchMoved(const _Control& source, const _TouchInfo& tou } point = touchinfo.GetCurrentPosition(); + pThumbBitmap = __pDividerThumbBitmap; if (__pSplitPanel->GetDividerDirection() == SPLIT_PANEL_DIVIDER_DIRECTION_VERTICAL) { @@ -205,8 +206,6 @@ _SplitPanelPresenter::OnTouchMoved(const _Control& source, const _TouchInfo& tou return false; } - pThumbBitmap = __pDividerThumbBitmap; - if (point.x <= __pSplitPanel->GetBoundsF().width - pThumbBitmap->GetWidthF()) { __pSplitPanel->SetDividerPosition(point.x); @@ -221,8 +220,6 @@ _SplitPanelPresenter::OnTouchMoved(const _Control& source, const _TouchInfo& tou return false; } - pThumbBitmap = __pDividerThumbBitmap; - if (point.y <= __pSplitPanel->GetBoundsF().height - pThumbBitmap->GetHeightF()) { __pSplitPanel->SetDividerPosition(point.y); @@ -242,6 +239,7 @@ _SplitPanelPresenter::OnTouchCanceled(const _Control& source, const _TouchInfo& if (__splitPanelDividerPressed == true) { __splitPanelDividerPressed = false; + Draw(); } @@ -296,7 +294,7 @@ _SplitPanelPresenter::MaximizePane(SplitPanelPaneOrder paneOrder) { return E_SUCCESS; } - else if (GetAnimationStatus() == ANIMATOR_STATUS_PLAYING) + else if (GetTransactionStatus() == ANIMATION_TRANSACTION_STATUS_PLAYING) { AnimationTransaction::Stop(__transactionIdMaximize); AnimationTransaction::Stop(__transactionIdRestore); @@ -304,8 +302,6 @@ _SplitPanelPresenter::MaximizePane(SplitPanelPaneOrder paneOrder) RecalcSplitPanel(); - ChangePaneOrder(paneOrder); - AnimationTransaction::Begin(__transactionIdMaximize); if (__pSplitPanel->GetDividerDirection() == SPLIT_PANEL_DIVIDER_DIRECTION_VERTICAL) @@ -315,6 +311,9 @@ _SplitPanelPresenter::MaximizePane(SplitPanelPaneOrder paneOrder) r = AnimateDivider(_SPLIT_PANEL_ANIMATION_RIGHT); SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r)); + r = AnimatePaneParent(_SPLIT_PANEL_ANIMATION_RIGHT); + SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r)); + r = AnimatePane(_SPLIT_PANEL_ANIMATION_RIGHT); SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r)); } @@ -323,6 +322,9 @@ _SplitPanelPresenter::MaximizePane(SplitPanelPaneOrder paneOrder) r = AnimateDivider(_SPLIT_PANEL_ANIMATION_LEFT); SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r)); + r = AnimatePaneParent(_SPLIT_PANEL_ANIMATION_LEFT); + SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r)); + r = AnimatePane(_SPLIT_PANEL_ANIMATION_LEFT); SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r)); } @@ -334,6 +336,9 @@ _SplitPanelPresenter::MaximizePane(SplitPanelPaneOrder paneOrder) r = AnimateDivider(_SPLIT_PANEL_ANIMATION_BOTTOM); SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r)); + r = AnimatePaneParent(_SPLIT_PANEL_ANIMATION_BOTTOM); + SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r)); + r = AnimatePane(_SPLIT_PANEL_ANIMATION_BOTTOM); SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r)); } @@ -342,6 +347,9 @@ _SplitPanelPresenter::MaximizePane(SplitPanelPaneOrder paneOrder) r = AnimateDivider(_SPLIT_PANEL_ANIMATION_TOP); SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r)); + r = AnimatePaneParent(_SPLIT_PANEL_ANIMATION_TOP); + SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r)); + r = AnimatePane(_SPLIT_PANEL_ANIMATION_TOP); SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r)); } @@ -381,7 +389,7 @@ _SplitPanelPresenter::RestorePane(void) { return E_SUCCESS; } - else if (GetAnimationStatus() == ANIMATOR_STATUS_PLAYING) + else if (GetTransactionStatus() == ANIMATION_TRANSACTION_STATUS_PLAYING) { AnimationTransaction::Stop(__transactionIdMaximize); AnimationTransaction::Stop(__transactionIdRestore); @@ -396,6 +404,9 @@ _SplitPanelPresenter::RestorePane(void) r = AnimateDivider(_SPLIT_PANEL_ANIMATION_RESTORE_VERTICAL); SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r)); + r = AnimatePaneParent(_SPLIT_PANEL_ANIMATION_RESTORE_VERTICAL); + SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r)); + r = AnimatePane(_SPLIT_PANEL_ANIMATION_RESTORE_VERTICAL); SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r)); } @@ -404,6 +415,9 @@ _SplitPanelPresenter::RestorePane(void) r = AnimateDivider(_SPLIT_PANEL_ANIMATION_RESTORE_HORIZONTAL); SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r)); + r = AnimatePaneParent(_SPLIT_PANEL_ANIMATION_RESTORE_HORIZONTAL); + SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r)); + r = AnimatePane(_SPLIT_PANEL_ANIMATION_RESTORE_HORIZONTAL); SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r)); } @@ -423,55 +437,59 @@ CATCH: result _SplitPanelPresenter::Draw(void) { - if (__pSplitPanelModel->GetPaneMaximumState() == false && GetAnimationStatus() == ANIMATOR_STATUS_STOPPED) + if (__pSplitPanelModel->GetPaneMaximumState() == false && GetTransactionStatus() == ANIMATION_TRANSACTION_STATUS_STOPPED) { FloatRectangle dividerBounds(0.0f, 0.0f, 0.0f, 0.0f); FloatRectangle dividerThumbBounds(0.0f, 0.0f, 0.0f, 0.0f); + Canvas* pCanvas = null; //adjust divider rectangle AdjustDividerRectangle(); - Canvas* pCanvas = __pSplitPanel->GetDividerVisualElement()->GetCanvasN(); + pCanvas = __pSplitPanel->GetDividerVisualElement()->GetCanvasN(); SysTryReturnResult(NID_UI_CTRL, pCanvas != null, GetLastResult(), "Propagating."); - pCanvas->Clear(); - - //resize pane - SetPaneBounds(); - - dividerBounds = __dividerRectangle; - dividerBounds.x = 0.0f; - dividerBounds.y = 0.0f; - - if (__splitPanelDividerPressed == true) + if (pCanvas) { - pCanvas->DrawNinePatchedBitmap(dividerBounds, *__pDividerPressedBackgroundBitmap); - } - else - { - pCanvas->DrawNinePatchedBitmap(dividerBounds, *__pDividerBackgroundBitmap); - } + pCanvas->Clear(); - //draw divider - pCanvas->DrawNinePatchedBitmap(dividerBounds, *__pDividerBackgroundEffectBitmap); + //resize pane + SetPaneBounds(); - //draw divider thumb - if (__pSplitPanelModel->GetDividerStyle() == SPLIT_PANEL_DIVIDER_STYLE_MOVABLE) - { - dividerThumbBounds = __dividerThumbRectangle; - if (__pSplitPanel->GetDividerDirection() == SPLIT_PANEL_DIVIDER_DIRECTION_VERTICAL) + dividerBounds = __dividerRectangle; + dividerBounds.x = 0.0f; + dividerBounds.y = 0.0f; + + if (__splitPanelDividerPressed == true) { - dividerThumbBounds.x = 0.0f; + pCanvas->DrawNinePatchedBitmap(dividerBounds, *__pDividerPressedBackgroundBitmap); } else { - dividerThumbBounds.y = 0.0f; + pCanvas->DrawNinePatchedBitmap(dividerBounds, *__pDividerBackgroundBitmap); } - pCanvas->DrawBitmap(dividerThumbBounds, *__pDividerThumbBitmap); - } + //draw divider + pCanvas->DrawNinePatchedBitmap(dividerBounds, *__pDividerBackgroundEffectBitmap); + + //draw divider thumb + if (__pSplitPanelModel->GetDividerStyle() == SPLIT_PANEL_DIVIDER_STYLE_MOVABLE) + { + dividerThumbBounds = __dividerThumbRectangle; + if (__pSplitPanel->GetDividerDirection() == SPLIT_PANEL_DIVIDER_DIRECTION_VERTICAL) + { + dividerThumbBounds.x = 0.0f; + } + else + { + dividerThumbBounds.y = 0.0f; + } + + pCanvas->DrawBitmap(dividerThumbBounds, *__pDividerThumbBitmap); + } - delete pCanvas; + delete pCanvas; + } } return E_SUCCESS; @@ -491,6 +509,7 @@ _SplitPanelPresenter::LoadBitmap(SplitPanelDividerDirection splitPanelDividerDir { r = GET_BITMAP_CONFIG_N(SPLITPANEL::VERTICAL_DIVIDER_BG_EFFECT, BITMAP_PIXEL_FORMAT_ARGB8888, __pDividerBackgroundEffectBitmap); SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Failed to load bitmap.", GetErrorMessage(r)); + r = GET_BITMAP_CONFIG_N(SPLITPANEL::VERTICAL_DIVIDER_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, __pDividerThumbBitmap); SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Failed to load bitmap.", GetErrorMessage(r)); } @@ -498,17 +517,16 @@ _SplitPanelPresenter::LoadBitmap(SplitPanelDividerDirection splitPanelDividerDir { r = GET_BITMAP_CONFIG_N(SPLITPANEL::HORIZONTAL_DIVIDER_BG_EFFECT, BITMAP_PIXEL_FORMAT_ARGB8888, __pDividerBackgroundEffectBitmap); SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Failed to load bitmap.", GetErrorMessage(r)); + r = GET_BITMAP_CONFIG_N(SPLITPANEL::HORIZONTAL_DIVIDER_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, __pDividerThumbBitmap); SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Failed to load bitmap.", GetErrorMessage(r)); } __pDividerPressedBackgroundBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pDividerBackgroundBitmap, Color::GetColor(COLOR_ID_MAGENTA), __dividerPressedBackgroundColor); - r = GetLastResult(); - SysTryCatch(NID_UI_CTRL, (__pDividerPressedBackgroundBitmap != null), , r, "[%s] Failed to get replacement color bitmap.", GetErrorMessage(r)); + SysTryCatch(NID_UI_CTRL, (__pDividerPressedBackgroundBitmap != null), , r, "[%s] Failed to get replacement color bitmap.", GetErrorMessage(GetLastResult())); __pDividerBackgroundBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pDividerBackgroundBitmap, Color::GetColor(COLOR_ID_MAGENTA), __dividerBackgroundColor); - r = GetLastResult(); - SysTryCatch(NID_UI_CTRL, (__pDividerBackgroundBitmap != null), , r, "[%s] Failed to get replacement color bitmap.", GetErrorMessage(r)); + SysTryCatch(NID_UI_CTRL, (__pDividerBackgroundBitmap != null), , r, "[%s] Failed to get replacement color bitmap.", GetErrorMessage(GetLastResult())); delete pDividerBackgroundBitmap; @@ -548,6 +566,7 @@ void _SplitPanelPresenter::OnBoundsChanged(void) { RecalcSplitPanel(); + return; } @@ -569,13 +588,17 @@ _SplitPanelPresenter::SetPaneBounds(void) FloatPoint panePostion(0.0f, 0.0f); _Control* pFirstPane = null; _Control* pSecondPane = null; + _Control* pFirstPaneParent = null; + _Control* pSecondPaneParent = null; clientBounds = __pSplitPanel->GetBoundsF(); pFirstPane = __pSplitPanel->GetPane(SPLIT_PANEL_PANE_ORDER_FIRST); - pSecondPane = __pSplitPanel->GetPane(SPLIT_PANEL_PANE_ORDER_SECOND); + pFirstPaneParent = __pSplitPanel->GetPaneParent(SPLIT_PANEL_PANE_ORDER_FIRST); + pSecondPaneParent = __pSplitPanel->GetPaneParent(SPLIT_PANEL_PANE_ORDER_SECOND); + clientBounds.x = clientBounds.y = 0.0f; if (IsPaneMaximized(SPLIT_PANEL_PANE_ORDER_FIRST)) @@ -618,34 +641,40 @@ _SplitPanelPresenter::SetPaneBounds(void) } } + if (pFirstPaneParent != null) + { + r = pFirstPaneParent->SetBounds(firstPaneBounds); + SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating."); + } + + if (pSecondPaneParent != null) + { + r = pSecondPaneParent->SetBounds(secondPaneBounds); + SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating."); + } + //set Pane bounds if (pFirstPane != null) { - r = pFirstPane->SetBounds(firstPaneBounds); - - if (r != E_SUCCESS) + if (pFirstPane->IsResizable()) { - panePostion.x = firstPaneBounds.x; - panePostion.y = firstPaneBounds.y; - - r = pFirstPane->SetPosition(panePostion); + r = pFirstPane->SetBounds(firstPaneBounds); + SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating."); } - + + r = pFirstPane->SetPosition(Point(0.0f, 0.0f)); SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating."); } if (pSecondPane != null) { - r = pSecondPane->SetBounds(secondPaneBounds); - - if (r != E_SUCCESS) + if (pSecondPane->IsResizable()) { - panePostion.x = secondPaneBounds.x; - panePostion.y = secondPaneBounds.y; - - r = pSecondPane->SetPosition(panePostion); + r = pSecondPane->SetBounds(secondPaneBounds); + SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating."); } - + + r = pSecondPane->SetPosition(Point(0.0f, 0.0f)); SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating."); } @@ -656,6 +685,9 @@ _SplitPanelPresenter::SetPaneBounds(void) __setFirstDividerPositionChangeEvent = false; __pSplitPanel->SendSplitPanelEvent(_SPLIT_PANEL_EVENT_DIVIDER_POSITION_CHANGE); } + + pFirstPane->Invalidate(true); + pSecondPane->Invalidate(true); } return r; @@ -676,22 +708,24 @@ _SplitPanelPresenter::AdjustDividerRectangle(void) dividerPosition = __pSplitPanel->GetDividerPosition(); clientBounds = __pSplitPanel->GetBoundsF(); - if (__pSplitPanel->GetDividerDirection() == SPLIT_PANEL_DIVIDER_DIRECTION_VERTICAL) - { - pThumbBitmap = __pDividerThumbBitmap; + pThumbBitmap = __pDividerThumbBitmap; - if (GetDividerStyle() == SPLIT_PANEL_DIVIDER_STYLE_MOVABLE) - { - GET_SHAPE_CONFIG(SPLITPANEL::MOVABLE_DIVIDER_THICKNESS, orientation, width); - } - else - { - GET_SHAPE_CONFIG(SPLITPANEL::FIXED_DIVIDER_THICKNESS, orientation, width); - } + if (GetDividerStyle() == SPLIT_PANEL_DIVIDER_STYLE_MOVABLE) + { + GET_SHAPE_CONFIG(SPLITPANEL::MOVABLE_DIVIDER_THICKNESS, orientation, width); + GET_SHAPE_CONFIG(SPLITPANEL::MOVABLE_DIVIDER_THICKNESS, orientation, height); + } + else + { + GET_SHAPE_CONFIG(SPLITPANEL::FIXED_DIVIDER_THICKNESS, orientation, width); + GET_SHAPE_CONFIG(SPLITPANEL::FIXED_DIVIDER_THICKNESS, orientation, height); + } + if (__pSplitPanel->GetDividerDirection() == SPLIT_PANEL_DIVIDER_DIRECTION_VERTICAL) + { height = clientBounds.height; - if (height > 0) + if (height > 0.0f) { __dividerRectangle = FloatRectangle(dividerPosition, 0.0f, width, height); __dividerThumbRectangle = FloatRectangle(dividerPosition, ((height - pThumbBitmap->GetHeightF()) / 2.0f), pThumbBitmap->GetWidthF(), pThumbBitmap->GetHeightF()); @@ -699,17 +733,6 @@ _SplitPanelPresenter::AdjustDividerRectangle(void) } else { - pThumbBitmap = __pDividerThumbBitmap; - - if (GetDividerStyle() == SPLIT_PANEL_DIVIDER_STYLE_MOVABLE) - { - GET_SHAPE_CONFIG(SPLITPANEL::MOVABLE_DIVIDER_THICKNESS, orientation, height); - } - else - { - GET_SHAPE_CONFIG(SPLITPANEL::FIXED_DIVIDER_THICKNESS, orientation, height); - } - width = clientBounds.width; if (width > 0.0f) @@ -722,84 +745,34 @@ _SplitPanelPresenter::AdjustDividerRectangle(void) __pSplitPanel->SetDividerVisualElementBounds(__dividerRectangle); } -void -_SplitPanelPresenter::ChangePaneOrder(SplitPanelPaneOrder paneOrder) -{ - result r = E_SUCCESS; - _Control* pFirstPane = null; - _Control* pSecondPane = null; - - if (paneOrder == SPLIT_PANEL_PANE_ORDER_FIRST) - { - pFirstPane = __pSplitPanel->GetPane(SPLIT_PANEL_PANE_ORDER_FIRST); - SysTryReturnVoidResult(NID_UI_CTRL, pFirstPane != null, E_SYSTEM, "[%s] Propagating.", GetErrorMessage(r)); - - r = __pSplitPanel->DetachChild(*pFirstPane); - SysTryReturnVoidResult(NID_UI_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r)); - - r = __pSplitPanel->AttachChild(*pFirstPane); - SysTryReturnVoidResult(NID_UI_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r)); - } - else - { - pSecondPane = __pSplitPanel->GetPane(SPLIT_PANEL_PANE_ORDER_SECOND); - SysTryReturnVoidResult(NID_UI_CTRL, pSecondPane != null, E_SYSTEM, "[%s] Propagating.", GetErrorMessage(r)); - - r = __pSplitPanel->DetachChild(*pSecondPane); - SysTryReturnVoidResult(NID_UI_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r)); - - r = __pSplitPanel->AttachChild(*pSecondPane); - SysTryReturnVoidResult(NID_UI_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r)); - } - - return; -} - result _SplitPanelPresenter::AnimateDivider(int destination) { result r = E_SUCCESS; FloatRectangle dividerBoundsStart(0.0f, 0.0f, 0.0f, 0.0f); FloatRectangle dividerBoundsEnd(0.0f, 0.0f, 0.0f, 0.0f); - FloatRectangle dividerBounds(0, 0, 0, 0); - FloatRectangle clientBounds(0, 0, 0, 0); - FloatRectangle firstPaneBounds(0, 0, 0, 0); - Control* pFirstPanelControl = null; + FloatRectangle dividerBounds(0.0f, 0.0f, 0.0f, 0.0f); + FloatRectangle clientBounds(0.0f, 0.0f, 0.0f, 0.0f); + FloatRectangle firstPaneBounds(0.0f, 0.0f, 0.0f, 0.0f); + _Control* pFirstPaneParent = null; VisualElement* pVisualElementDivider = null; VisualElementPropertyAnimation* pAnimationDivider = null; - const IVisualElementAnimationTimingFunction* pTimingFunction = VisualElementAnimation::GetTimingFunctionByName(__visualElementAnimationInterpolator); - r = GetLastResult(); - SysTryReturnResult(NID_UI_CTRL, pTimingFunction != null, r, "Propagating."); - - pFirstPanelControl = GetPaneControl(SPLIT_PANEL_PANE_ORDER_FIRST); - r = GetLastResult(); - SysTryReturnResult(NID_UI_CTRL, pFirstPanelControl != null, r, "Propagating."); + pFirstPaneParent = __pSplitPanel->GetPaneParent(SPLIT_PANEL_PANE_ORDER_FIRST); + SysTryReturnResult(NID_UI_CTRL, pFirstPaneParent != null, GetLastResult(), "Propagating."); pVisualElementDivider = __pSplitPanel->GetDividerVisualElement(); - r = GetLastResult(); - SysTryReturnResult(NID_UI_CTRL, pVisualElementDivider != null, r, "Propagating."); + SysTryReturnResult(NID_UI_CTRL, pVisualElementDivider != null, GetLastResult(), "Propagating."); pVisualElementDivider->RemoveAllAnimations(); - r = GetLastResult(); - SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating."); - - pAnimationDivider = new (std::nothrow) VisualElementPropertyAnimation(); - SysTryReturnResult(NID_UI_CTRL, pAnimationDivider != null, E_OUT_OF_MEMORY, " Memory allocation failed.") - - r = pAnimationDivider->SetPropertyName(L"bounds"); - SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "Propagating."); - - r = pAnimationDivider->SetDuration(ANIMATION_DURATION); - SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "Propagating."); + SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, GetLastResult(), "Propagating."); - pAnimationDivider->SetTimingFunction(pTimingFunction); - r = GetLastResult(); - SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "Propagating."); + pAnimationDivider = GetVisualElementAnimation(L"bounds"); + SysTryReturnResult(NID_UI_CTRL, pAnimationDivider != null, GetLastResult(), "Propagating."); dividerBounds = pVisualElementDivider->GetBounds(); clientBounds = __pSplitPanel->GetBoundsF(); - firstPaneBounds = pFirstPanelControl->GetBoundsF(); + firstPaneBounds = pFirstPaneParent->GetBoundsF(); dividerBoundsStart = dividerBounds; clientBounds.x = clientBounds.y = 0.0f; @@ -880,51 +853,39 @@ _SplitPanelPresenter::AnimateDivider(int destination) SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "Propagating."); pVisualElementDivider->AddAnimation(L"Bounds", *pAnimationDivider); - r = GetLastResult(); - SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "Propagating."); + SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , GetLastResult(), "Propagating."); CATCH: delete pAnimationDivider; - return r; + return r; } result _SplitPanelPresenter::AnimatePane(int destination) { - result r = E_SUCCESS; Rectangle clientBounds(0, 0, 0, 0); Rectangle firstPaneBounds(0, 0, 0, 0); Rectangle secondPaneBounds(0, 0, 0, 0); Rectangle dividerRectangle(0, 0, 0, 0); - Control* pFirstPanelControl = null; - Control* pSecondPanelControl = null; + Control* pFirstPaneControl = null; + Control* pSecondPaneControl = null; ControlAnimator* pControlAnimatorFirstPane = null; ControlAnimator* pControlAnimatorSecondPane = null; - FloatAnimation animationHidePane = FloatAnimation(ANIMATION_ALPHA_SHOW, ANIMATION_ALPHA_HIDE, ANIMATION_DURATION, __controlAnimatorAnimationInterpolator); - FloatAnimation animationShowPane = FloatAnimation(ANIMATION_ALPHA_HIDE, ANIMATION_ALPHA_SHOW, ANIMATION_DURATION, __controlAnimatorAnimationInterpolator); + FloatAnimation hidePane(ANIMATION_ALPHA_SHOW, ANIMATION_ALPHA_HIDE, ANIMATION_DURATION, __controlAnimatorInterpolator); + FloatAnimation showPane(ANIMATION_ALPHA_HIDE, ANIMATION_ALPHA_SHOW, ANIMATION_DURATION, __controlAnimatorInterpolator); - pFirstPanelControl = GetPaneControl(SPLIT_PANEL_PANE_ORDER_FIRST); - r = GetLastResult(); - SysTryReturnResult(NID_UI_CTRL, pFirstPanelControl != null, r, "Propagating."); + pFirstPaneControl = GetPaneControl(SPLIT_PANEL_PANE_ORDER_FIRST); + pSecondPaneControl = GetPaneControl(SPLIT_PANEL_PANE_ORDER_SECOND); - pSecondPanelControl = GetPaneControl(SPLIT_PANEL_PANE_ORDER_SECOND); - r = GetLastResult(); - SysTryReturnResult(NID_UI_CTRL, pSecondPanelControl != null, r, "Propagating."); - - pControlAnimatorFirstPane = pFirstPanelControl->GetControlAnimator(); - r = GetLastResult(); - SysTryReturnResult(NID_UI_CTRL, pControlAnimatorFirstPane != null, r, "Propagating."); - - pControlAnimatorSecondPane = pSecondPanelControl->GetControlAnimator(); - r = GetLastResult(); - SysTryReturnResult(NID_UI_CTRL, pControlAnimatorSecondPane != null, r, "Propagating."); + pControlAnimatorFirstPane = pFirstPaneControl->GetControlAnimator(); + pControlAnimatorSecondPane = pSecondPaneControl->GetControlAnimator(); clientBounds = __pSplitPanel->GetBounds(); - firstPaneBounds = pFirstPanelControl->GetBounds(); - secondPaneBounds = pSecondPanelControl->GetBounds(); + firstPaneBounds = pFirstPaneControl->GetBounds(); + secondPaneBounds = pSecondPaneControl->GetBounds(); clientBounds.x = clientBounds.y = 0; @@ -935,108 +896,92 @@ _SplitPanelPresenter::AnimatePane(int destination) case _SPLIT_PANEL_ANIMATION_RIGHT: { Rectangle secondPaneEndBounds = secondPaneBounds; - secondPaneEndBounds.x = clientBounds.x + clientBounds.width + dividerRectangle.width; + secondPaneEndBounds.x = clientBounds.width + dividerRectangle.width; - RectangleAnimation animationMaximizeFirstPane = RectangleAnimation(firstPaneBounds, clientBounds, ANIMATION_DURATION, __controlAnimatorAnimationInterpolator); - RectangleAnimation animationMinimizeSecondPane = RectangleAnimation(secondPaneBounds, secondPaneEndBounds, ANIMATION_DURATION, __controlAnimatorAnimationInterpolator); - - r = pControlAnimatorFirstPane->StartUserAnimation(ANIMATION_TARGET_POSITION, animationMaximizeFirstPane); - SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating."); + RectangleAnimation maximizeFirstPane = RectangleAnimation(firstPaneBounds, clientBounds, ANIMATION_DURATION, __controlAnimatorInterpolator); - r = pControlAnimatorFirstPane->StartUserAnimation(ANIMATION_TARGET_SIZE, animationMaximizeFirstPane); - SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating."); - - r = pControlAnimatorSecondPane->StartUserAnimation(ANIMATION_TARGET_POSITION, animationMinimizeSecondPane); - SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating."); + if (pControlAnimatorFirstPane && pFirstPaneControl->IsResizable()) + { + pControlAnimatorFirstPane->StartUserAnimation(ANIMATION_TARGET_SIZE, maximizeFirstPane); + } - r = pControlAnimatorSecondPane->StartUserAnimation(ANIMATION_TARGET_ALPHA, animationHidePane); - SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating."); + if (pControlAnimatorFirstPane && pFirstPaneControl->GetShowState() == false) + { + pControlAnimatorFirstPane->StartUserAnimation(ANIMATION_TARGET_ALPHA, showPane); + } - if (pFirstPanelControl->GetShowState() == false) + if (pControlAnimatorSecondPane && pSecondPaneControl->GetShowState() == true) { - r = pControlAnimatorFirstPane->StartUserAnimation(ANIMATION_TARGET_ALPHA, animationShowPane); - SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating."); + pControlAnimatorSecondPane->StartUserAnimation(ANIMATION_TARGET_ALPHA, hidePane); } } break; case _SPLIT_PANEL_ANIMATION_LEFT: { Rectangle firstPaneEndBounds = firstPaneBounds; - firstPaneEndBounds.x = clientBounds.x - firstPaneBounds.width - dividerRectangle.width; - - RectangleAnimation animationMaximizeSecondPane = RectangleAnimation(secondPaneBounds, clientBounds, ANIMATION_DURATION, __controlAnimatorAnimationInterpolator); - RectangleAnimation animationMinimizeFirstPane = RectangleAnimation(firstPaneBounds, firstPaneEndBounds, ANIMATION_DURATION, __controlAnimatorAnimationInterpolator); + firstPaneEndBounds.x = -(firstPaneBounds.width + dividerRectangle.width); - r = pControlAnimatorSecondPane->StartUserAnimation(ANIMATION_TARGET_POSITION, animationMaximizeSecondPane); - SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating."); - - r = pControlAnimatorSecondPane->StartUserAnimation(ANIMATION_TARGET_SIZE, animationMaximizeSecondPane); - SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating."); + RectangleAnimation animationMaximizeSecondPane = RectangleAnimation(secondPaneBounds, clientBounds, ANIMATION_DURATION, __controlAnimatorInterpolator); - r = pControlAnimatorFirstPane->StartUserAnimation(ANIMATION_TARGET_POSITION, animationMinimizeFirstPane); - SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating."); + if (pControlAnimatorSecondPane && pSecondPaneControl->IsResizable()) + { + pControlAnimatorSecondPane->StartUserAnimation(ANIMATION_TARGET_SIZE, animationMaximizeSecondPane); + } - r = pControlAnimatorFirstPane->StartUserAnimation(ANIMATION_TARGET_ALPHA, animationHidePane); - SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating."); + if (pControlAnimatorSecondPane && pSecondPaneControl->GetShowState() == false) + { + pControlAnimatorSecondPane->StartUserAnimation(ANIMATION_TARGET_ALPHA, showPane); + } - if (pSecondPanelControl->GetShowState() == false) + if (pControlAnimatorFirstPane && pFirstPaneControl->GetShowState() == true) { - r = pControlAnimatorSecondPane->StartUserAnimation(ANIMATION_TARGET_ALPHA, animationShowPane); - SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating."); + pControlAnimatorFirstPane->StartUserAnimation(ANIMATION_TARGET_ALPHA, hidePane); } } break; case _SPLIT_PANEL_ANIMATION_TOP: { Rectangle firstPaneEndBounds = firstPaneBounds; - firstPaneEndBounds.y = clientBounds.y - firstPaneBounds.height - dividerRectangle.height; + firstPaneEndBounds.y = -(firstPaneBounds.height + dividerRectangle.height); - RectangleAnimation animationMaximizeSecondPane = RectangleAnimation(secondPaneBounds, clientBounds, ANIMATION_DURATION, __controlAnimatorAnimationInterpolator); - RectangleAnimation animationMinimizeFirstPane = RectangleAnimation(firstPaneBounds, firstPaneEndBounds, ANIMATION_DURATION, __controlAnimatorAnimationInterpolator); + RectangleAnimation animationMaximizeSecondPane = RectangleAnimation(secondPaneBounds, clientBounds, ANIMATION_DURATION, __controlAnimatorInterpolator); - r = pControlAnimatorSecondPane->StartUserAnimation(ANIMATION_TARGET_POSITION, animationMaximizeSecondPane); - SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating."); - - r = pControlAnimatorSecondPane->StartUserAnimation(ANIMATION_TARGET_SIZE, animationMaximizeSecondPane); - SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating."); - - r = pControlAnimatorFirstPane->StartUserAnimation(ANIMATION_TARGET_POSITION, animationMinimizeFirstPane); - SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating."); + if (pControlAnimatorSecondPane && pSecondPaneControl->IsResizable()) + { + pControlAnimatorSecondPane->StartUserAnimation(ANIMATION_TARGET_SIZE, animationMaximizeSecondPane); + } - r = pControlAnimatorFirstPane->StartUserAnimation(ANIMATION_TARGET_ALPHA, animationHidePane); - SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating."); + if (pControlAnimatorSecondPane && pSecondPaneControl->GetShowState() == false) + { + pControlAnimatorSecondPane->StartUserAnimation(ANIMATION_TARGET_ALPHA, showPane); + } - if (pSecondPanelControl->GetShowState() == false) + if (pControlAnimatorFirstPane && pFirstPaneControl->GetShowState() == true) { - r = pControlAnimatorSecondPane->StartUserAnimation(ANIMATION_TARGET_ALPHA, animationShowPane); - SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating."); + pControlAnimatorFirstPane->StartUserAnimation(ANIMATION_TARGET_ALPHA, hidePane); } } break; case _SPLIT_PANEL_ANIMATION_BOTTOM: { Rectangle secondPaneEndBounds = secondPaneBounds; - secondPaneEndBounds.y = clientBounds.y + clientBounds.height + dividerRectangle.height; - - RectangleAnimation animationMaximizeFirstPane = RectangleAnimation(firstPaneBounds, clientBounds, ANIMATION_DURATION, __controlAnimatorAnimationInterpolator); - RectangleAnimation animationMinimizeSecondPane = RectangleAnimation(secondPaneBounds, secondPaneEndBounds, ANIMATION_DURATION, __controlAnimatorAnimationInterpolator); + secondPaneEndBounds.y = clientBounds.height + dividerRectangle.height; - r = pControlAnimatorFirstPane->StartUserAnimation(ANIMATION_TARGET_POSITION, animationMaximizeFirstPane); - SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating."); - - r = pControlAnimatorFirstPane->StartUserAnimation(ANIMATION_TARGET_SIZE, animationMaximizeFirstPane); - SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating."); + RectangleAnimation maximizeFirstPane = RectangleAnimation(firstPaneBounds, clientBounds, ANIMATION_DURATION, __controlAnimatorInterpolator); - r = pControlAnimatorSecondPane->StartUserAnimation(ANIMATION_TARGET_POSITION, animationMinimizeSecondPane); - SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating."); + if (pControlAnimatorFirstPane && pFirstPaneControl->IsResizable()) + { + pControlAnimatorFirstPane->StartUserAnimation(ANIMATION_TARGET_SIZE, maximizeFirstPane); + } - r = pControlAnimatorSecondPane->StartUserAnimation(ANIMATION_TARGET_ALPHA, animationHidePane); - SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating."); + if (pControlAnimatorFirstPane && pFirstPaneControl->GetShowState() == false) + { + pControlAnimatorFirstPane->StartUserAnimation(ANIMATION_TARGET_ALPHA, showPane); + } - if (pFirstPanelControl->GetShowState() == false) + if (pControlAnimatorSecondPane && pSecondPaneControl->GetShowState() == true) { - r = pControlAnimatorFirstPane->StartUserAnimation(ANIMATION_TARGET_ALPHA, animationShowPane); - SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating."); + pControlAnimatorSecondPane->StartUserAnimation(ANIMATION_TARGET_ALPHA, hidePane); } } break; @@ -1045,32 +990,34 @@ _SplitPanelPresenter::AnimatePane(int destination) Rectangle firstPaneEndBounds = _CoordinateSystemUtils::ConvertToInteger(GetRestorePaneBounds(SPLIT_PANEL_PANE_ORDER_FIRST)); Rectangle secondPaneEndBounds = _CoordinateSystemUtils::ConvertToInteger(GetRestorePaneBounds(SPLIT_PANEL_PANE_ORDER_SECOND)); - RectangleAnimation animationRestoreFirstPane = RectangleAnimation(firstPaneBounds, firstPaneEndBounds, ANIMATION_DURATION, __controlAnimatorAnimationInterpolator); - RectangleAnimation animationRestoreSecondPane = RectangleAnimation(secondPaneBounds, secondPaneEndBounds, ANIMATION_DURATION, __controlAnimatorAnimationInterpolator); + secondPaneEndBounds.x = secondPaneEndBounds.y = 0; - // Restore Pane 1 - r = pControlAnimatorFirstPane->StartUserAnimation(ANIMATION_TARGET_SIZE, animationRestoreFirstPane); - SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating."); - - r = pControlAnimatorFirstPane->StartUserAnimation(ANIMATION_TARGET_POSITION, animationRestoreFirstPane); - SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating."); + RectangleAnimation animationRestoreFirstPane = RectangleAnimation(firstPaneBounds, firstPaneEndBounds, ANIMATION_DURATION, __controlAnimatorInterpolator); + RectangleAnimation animationRestoreSecondPane = RectangleAnimation(secondPaneBounds, secondPaneEndBounds, ANIMATION_DURATION, __controlAnimatorInterpolator); - // Restore Pane 2 - r = pControlAnimatorSecondPane->StartUserAnimation(ANIMATION_TARGET_SIZE, animationRestoreSecondPane); - SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating."); + if (pControlAnimatorFirstPane && pFirstPaneControl->IsResizable()) + { + pControlAnimatorFirstPane->StartUserAnimation(ANIMATION_TARGET_SIZE, animationRestoreFirstPane); + } - r = pControlAnimatorSecondPane->StartUserAnimation(ANIMATION_TARGET_POSITION, animationRestoreSecondPane); - SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating."); + if (pControlAnimatorSecondPane && pSecondPaneControl->IsResizable()) + { + pControlAnimatorSecondPane->StartUserAnimation(ANIMATION_TARGET_SIZE, animationRestoreSecondPane); + } if (__pSplitPanelModel->GetMaximizedPaneOrder() == SPLIT_PANEL_PANE_ORDER_FIRST) { - r = pControlAnimatorSecondPane->StartUserAnimation(ANIMATION_TARGET_ALPHA, animationShowPane); - SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating."); + if (pControlAnimatorSecondPane && pSecondPaneControl->GetShowState() == false) + { + pControlAnimatorSecondPane->StartUserAnimation(ANIMATION_TARGET_ALPHA, showPane); + } } else { - r = pControlAnimatorFirstPane->StartUserAnimation(ANIMATION_TARGET_ALPHA, animationShowPane); - SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating."); + if (pControlAnimatorFirstPane && pFirstPaneControl->GetShowState() == false) + { + pControlAnimatorFirstPane->StartUserAnimation(ANIMATION_TARGET_ALPHA, showPane); + } } } break; @@ -1079,32 +1026,34 @@ _SplitPanelPresenter::AnimatePane(int destination) Rectangle firstPaneEndBounds = _CoordinateSystemUtils::ConvertToInteger(GetRestorePaneBounds(SPLIT_PANEL_PANE_ORDER_FIRST)); Rectangle secondPaneEndBounds = _CoordinateSystemUtils::ConvertToInteger(GetRestorePaneBounds(SPLIT_PANEL_PANE_ORDER_SECOND)); - RectangleAnimation animationRestoreFirstPane = RectangleAnimation(firstPaneBounds, firstPaneEndBounds, ANIMATION_DURATION, __controlAnimatorAnimationInterpolator); - RectangleAnimation animationRestoreSecondPane = RectangleAnimation(secondPaneBounds, secondPaneEndBounds, ANIMATION_DURATION, __controlAnimatorAnimationInterpolator); + secondPaneEndBounds.x = secondPaneEndBounds.y = 0; - // Restore Pane 1 - r = pControlAnimatorFirstPane->StartUserAnimation(ANIMATION_TARGET_SIZE, animationRestoreFirstPane); - SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating."); + RectangleAnimation animationRestoreFirstPane = RectangleAnimation(firstPaneBounds, firstPaneEndBounds, ANIMATION_DURATION, __controlAnimatorInterpolator); + RectangleAnimation animationRestoreSecondPane = RectangleAnimation(secondPaneBounds, secondPaneEndBounds, ANIMATION_DURATION, __controlAnimatorInterpolator); - r = pControlAnimatorFirstPane->StartUserAnimation(ANIMATION_TARGET_POSITION, animationRestoreFirstPane); - SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating."); - - // Restore Pane 2 - r = pControlAnimatorSecondPane->StartUserAnimation(ANIMATION_TARGET_SIZE, animationRestoreSecondPane); - SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating."); + if (pControlAnimatorFirstPane && pFirstPaneControl->IsResizable()) + { + pControlAnimatorFirstPane->StartUserAnimation(ANIMATION_TARGET_SIZE, animationRestoreFirstPane); + } - r = pControlAnimatorSecondPane->StartUserAnimation(ANIMATION_TARGET_POSITION, animationRestoreSecondPane); - SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating."); + if (pControlAnimatorSecondPane && pSecondPaneControl->IsResizable()) + { + pControlAnimatorSecondPane->StartUserAnimation(ANIMATION_TARGET_SIZE, animationRestoreSecondPane); + } if (__pSplitPanelModel->GetMaximizedPaneOrder() == SPLIT_PANEL_PANE_ORDER_FIRST) { - r = pControlAnimatorSecondPane->StartUserAnimation(ANIMATION_TARGET_ALPHA, animationShowPane); - SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating."); + if (pControlAnimatorSecondPane && pSecondPaneControl->GetShowState() == false) + { + pControlAnimatorSecondPane->StartUserAnimation(ANIMATION_TARGET_ALPHA, showPane); + } } else { - r = pControlAnimatorFirstPane->StartUserAnimation(ANIMATION_TARGET_ALPHA, animationShowPane); - SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating."); + if (pControlAnimatorFirstPane && pFirstPaneControl->GetShowState() == false) + { + pControlAnimatorFirstPane->StartUserAnimation(ANIMATION_TARGET_ALPHA, showPane); + } } } break; @@ -1113,6 +1062,163 @@ _SplitPanelPresenter::AnimatePane(int destination) return E_SUCCESS; } +result +_SplitPanelPresenter::AnimatePaneParent(int destination) +{ + result r = E_SUCCESS; + _Control* pFirstPane = null; + _Control* pSecondPane = null; + VisualElement* pVEFirstPane = null; + VisualElement* pVESecondPane = null; + VisualElementPropertyAnimation* pAnimationFirstPane = null; + VisualElementPropertyAnimation* pAnimationSecondPane = null; + + FloatRectangle clientBounds(0.0f, 0.0f, 0.0f, 0.0f); + FloatRectangle firstPaneBounds(0.0f, 0.0f, 0.0f, 0.0f); + FloatRectangle secondPaneBounds(0.0f, 0.0f, 0.0f, 0.0f); + FloatRectangle dividerRectangle(0.0f, 0.0f, 0.0f, 0.0f); + FloatRectangle firstPaneStartBounds(0.0f, 0.0f, 0.0f, 0.0f); + FloatRectangle firstPaneEndBounds(0.0f, 0.0f, 0.0f, 0.0f); + FloatRectangle secondPaneStartBounds(0.0f, 0.0f, 0.0f, 0.0f); + FloatRectangle secondPaneEndBounds(0.0f, 0.0f, 0.0f, 0.0f); + + pFirstPane = __pSplitPanel->GetPaneParent(SPLIT_PANEL_PANE_ORDER_FIRST); + pSecondPane = __pSplitPanel->GetPaneParent(SPLIT_PANEL_PANE_ORDER_SECOND); + + if (pFirstPane) + { + pVEFirstPane = pFirstPane->GetVisualElement(); + SysTryReturnResult(NID_UI_CTRL, pVEFirstPane != null, GetLastResult(), "Propagating."); + + pVEFirstPane->RemoveAllAnimations(); + } + + if (pSecondPane) + { + pVESecondPane = pSecondPane->GetVisualElement(); + SysTryReturnResult(NID_UI_CTRL, pVESecondPane != null, GetLastResult(), "Propagating."); + + pVESecondPane->RemoveAllAnimations(); + } + + pAnimationFirstPane = GetVisualElementAnimation(L"bounds"); + SysTryReturnResult(NID_UI_CTRL, pAnimationFirstPane != null, GetLastResult(), "Propagating."); + + pAnimationSecondPane = GetVisualElementAnimation(L"bounds"); + SysTryReturnResult(NID_UI_CTRL, pAnimationSecondPane != null, GetLastResult(), "Propagating."); + + clientBounds = __pSplitPanel->GetBoundsF(); + firstPaneBounds = pFirstPane->GetBoundsF(); + secondPaneBounds = pSecondPane->GetBoundsF(); + + clientBounds.x = clientBounds.y = 0.0f; + + dividerRectangle = __dividerRectangle; + + switch (destination) + { + case _SPLIT_PANEL_ANIMATION_RIGHT: + { + firstPaneStartBounds = firstPaneBounds; + firstPaneEndBounds = clientBounds; + + secondPaneStartBounds = secondPaneBounds; + secondPaneEndBounds = secondPaneBounds; + secondPaneEndBounds.x = clientBounds.width + dividerRectangle.width; + } + break; + case _SPLIT_PANEL_ANIMATION_LEFT: + { + firstPaneStartBounds = firstPaneBounds; + firstPaneEndBounds = firstPaneBounds; + firstPaneEndBounds.x = -(firstPaneBounds.width + dividerRectangle.width); + + secondPaneStartBounds = secondPaneBounds; + secondPaneEndBounds = clientBounds; + } + break; + case _SPLIT_PANEL_ANIMATION_TOP: + { + firstPaneStartBounds = firstPaneBounds; + firstPaneEndBounds = firstPaneBounds; + firstPaneEndBounds.y = -(firstPaneBounds.height + dividerRectangle.height); + + secondPaneStartBounds = secondPaneBounds; + secondPaneEndBounds = clientBounds; + } + break; + case _SPLIT_PANEL_ANIMATION_BOTTOM: + { + firstPaneStartBounds = firstPaneBounds; + firstPaneEndBounds = clientBounds; + + secondPaneStartBounds = secondPaneBounds; + secondPaneEndBounds = secondPaneBounds; + secondPaneEndBounds.y = clientBounds.height + dividerRectangle.height; + } + break; + case _SPLIT_PANEL_ANIMATION_RESTORE_HORIZONTAL: + { + firstPaneStartBounds = firstPaneBounds; + firstPaneEndBounds = GetRestorePaneBounds(SPLIT_PANEL_PANE_ORDER_FIRST); + + secondPaneStartBounds = secondPaneBounds; + secondPaneEndBounds = GetRestorePaneBounds(SPLIT_PANEL_PANE_ORDER_SECOND); + } + break; + case _SPLIT_PANEL_ANIMATION_RESTORE_VERTICAL: + { + firstPaneStartBounds = firstPaneBounds; + firstPaneEndBounds = GetRestorePaneBounds(SPLIT_PANEL_PANE_ORDER_FIRST); + + secondPaneStartBounds = secondPaneBounds; + secondPaneEndBounds = GetRestorePaneBounds(SPLIT_PANEL_PANE_ORDER_SECOND); + } + break; + } + + if (pFirstPane) + { + r = pAnimationFirstPane->SetStartValue(firstPaneStartBounds); + SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "Propagating."); + + r = pAnimationFirstPane->SetEndValue(firstPaneEndBounds); + SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "Propagating."); + + pFirstPane->SetBounds(firstPaneEndBounds); + + if (pVEFirstPane) + { + pVEFirstPane->AddAnimation(L"Bounds", *pAnimationFirstPane); + SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , GetLastResult(), "Propagating."); + } + } + + if (pSecondPane) + { + r = pAnimationSecondPane->SetStartValue(secondPaneStartBounds); + SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "Propagating."); + + r = pAnimationSecondPane->SetEndValue(secondPaneEndBounds); + SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "Propagating."); + + pSecondPane->SetBounds(secondPaneEndBounds); + + if (pVESecondPane) + { + pVESecondPane->AddAnimation(L"Bounds", *pAnimationSecondPane); + SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , GetLastResult(), "Propagating."); + } + } + +CATCH: + + delete pAnimationFirstPane; + delete pAnimationSecondPane; + + return r; +} + Control* _SplitPanelPresenter::GetPaneControl(SplitPanelPaneOrder paneOrder) { @@ -1129,38 +1235,21 @@ _SplitPanelPresenter::GetPaneControl(SplitPanelPaneOrder paneOrder) SplitPanel& splitPanelPublic = pSplitPanelImpl->GetPublic(); pControl = splitPanelPublic.GetPane(paneOrder); - SysTryReturn(NID_UI_CTRL, pControl != null, null, E_SYSTEM, "[%s] Propagating.", GetErrorMessage(GetLastResult())); + SysTryReturn(NID_UI_CTRL, pControl != null, null, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult())); return pControl; } -AnimatorStatus -_SplitPanelPresenter::GetAnimationStatus(void) +AnimationTransactionStatus +_SplitPanelPresenter::GetTransactionStatus(void) { - result r = E_SUCCESS; - - Control* pFirstPanelControl = GetPaneControl(SPLIT_PANEL_PANE_ORDER_FIRST); - r = GetLastResult(); - SysTryReturn(NID_UI_CTRL, pFirstPanelControl != null, ANIMATOR_STATUS_STOPPED, r, "[%s] Propagating.", GetErrorMessage(r)); - - Control* pSecondPanelControl = GetPaneControl(SPLIT_PANEL_PANE_ORDER_SECOND); - r = GetLastResult(); - SysTryReturn(NID_UI_CTRL, pSecondPanelControl != null, ANIMATOR_STATUS_STOPPED, r, "[%s] Propagating.", GetErrorMessage(r)); - - ControlAnimator* pControlAnimatorFirstPane = pFirstPanelControl->GetControlAnimator(); - r = GetLastResult(); - SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, ANIMATOR_STATUS_STOPPED, r, "[%s] Propagating.", GetErrorMessage(r)); - - ControlAnimator* pControlAnimatorSecondPane = pSecondPanelControl->GetControlAnimator(); - r = GetLastResult(); - SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, ANIMATOR_STATUS_STOPPED, r, "[%s] Propagating.", GetErrorMessage(r)); - - if (pControlAnimatorFirstPane->GetStatus() == ANIMATOR_STATUS_STOPPED && pControlAnimatorSecondPane->GetStatus() == ANIMATOR_STATUS_STOPPED) + if (AnimationTransaction::GetStatus(__transactionIdMaximize) == ANIMATION_TRANSACTION_STATUS_STOPPED && + AnimationTransaction::GetStatus(__transactionIdRestore) == ANIMATION_TRANSACTION_STATUS_STOPPED) { - return ANIMATOR_STATUS_STOPPED; + return ANIMATION_TRANSACTION_STATUS_STOPPED; } - return ANIMATOR_STATUS_PLAYING; + return ANIMATION_TRANSACTION_STATUS_PLAYING; } FloatRectangle @@ -1168,27 +1257,32 @@ _SplitPanelPresenter::GetRestorePaneBounds(SplitPanelPaneOrder paneOrder) { float width = 0.0f; float height = 0.0f; + float dividerPosition = 0.0f; + FloatRectangle clientBounds(0.0f, 0.0f, 0.0f, 0.0f); FloatRectangle firstPaneBounds(0.0f, 0.0f, 0.0f, 0.0f); FloatRectangle secondPaneBounds(0.0f, 0.0f, 0.0f, 0.0f); + _ControlOrientation orientation = _CONTROL_ORIENTATION_PORTRAIT; - float dividerPosition = __pSplitPanel->GetDividerPosition(); + dividerPosition = __pSplitPanel->GetDividerPosition(); - FloatRectangle clientBounds = __pSplitPanel->GetBoundsF(); + clientBounds = __pSplitPanel->GetBoundsF(); - _ControlOrientation orientation = _ControlManager::GetInstance()->GetOrientation(); + orientation = _ControlManager::GetInstance()->GetOrientation(); - if (__pSplitPanel->GetDividerDirection() == SPLIT_PANEL_DIVIDER_DIRECTION_VERTICAL) + if (GetDividerStyle() == SPLIT_PANEL_DIVIDER_STYLE_MOVABLE) { - if (GetDividerStyle() == SPLIT_PANEL_DIVIDER_STYLE_MOVABLE) - { - GET_SHAPE_CONFIG(SPLITPANEL::MOVABLE_DIVIDER_THICKNESS, orientation, width); - } - else - { - GET_SHAPE_CONFIG(SPLITPANEL::FIXED_DIVIDER_THICKNESS, orientation, width); - } + GET_SHAPE_CONFIG(SPLITPANEL::MOVABLE_DIVIDER_THICKNESS, orientation, width); + GET_SHAPE_CONFIG(SPLITPANEL::MOVABLE_DIVIDER_THICKNESS, orientation, height); + } + else + { + GET_SHAPE_CONFIG(SPLITPANEL::FIXED_DIVIDER_THICKNESS, orientation, width); + GET_SHAPE_CONFIG(SPLITPANEL::FIXED_DIVIDER_THICKNESS, orientation, height); + } + if (__pSplitPanel->GetDividerDirection() == SPLIT_PANEL_DIVIDER_DIRECTION_VERTICAL) + { height = clientBounds.height; if (height > 0.0f) @@ -1198,15 +1292,6 @@ _SplitPanelPresenter::GetRestorePaneBounds(SplitPanelPaneOrder paneOrder) } else { - if (GetDividerStyle() == SPLIT_PANEL_DIVIDER_STYLE_MOVABLE) - { - GET_SHAPE_CONFIG(SPLITPANEL::MOVABLE_DIVIDER_THICKNESS, orientation, height); - } - else - { - GET_SHAPE_CONFIG(SPLITPANEL::FIXED_DIVIDER_THICKNESS, orientation, height); - } - width = clientBounds.width; if (width > 0.0f) @@ -1234,4 +1319,33 @@ _SplitPanelPresenter::GetRestorePaneBounds(SplitPanelPaneOrder paneOrder) return secondPaneBounds; } +VisualElementPropertyAnimation* +_SplitPanelPresenter::GetVisualElementAnimation(Tizen::Base::String propertyName) +{ + result r = E_SUCCESS; + VisualElementPropertyAnimation* pAnimation = null; + + const IVisualElementAnimationTimingFunction* pTimingFunction = VisualElementAnimation::GetTimingFunctionByName(__visualElementInterpolator); + SysTryReturn(NID_UI_CTRL, pTimingFunction != null, null, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult())); + + pAnimation = new (std::nothrow) VisualElementPropertyAnimation(); + SysTryReturn(NID_UI_CTRL, pAnimation != null, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed."); + + r = pAnimation->SetPropertyName(propertyName); + SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "Propagating."); + + r = pAnimation->SetDuration(ANIMATION_DURATION); + SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "Propagating."); + + pAnimation->SetTimingFunction(pTimingFunction); + SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , GetLastResult(), "Propagating."); + + return pAnimation; + +CATCH: + delete pAnimation; + + return null; +} + }}} // Tizen::Ui::Controls diff --git a/src/ui/controls/FUiCtrl_TableViewItem.cpp b/src/ui/controls/FUiCtrl_TableViewItem.cpp index 11029fd..2a886eb 100644 --- a/src/ui/controls/FUiCtrl_TableViewItem.cpp +++ b/src/ui/controls/FUiCtrl_TableViewItem.cpp @@ -219,6 +219,7 @@ _TableViewItem::_TableViewItem(float itemHeight) , __isPressedTimerEnabled(false) , __isReleasedTimerEnabled(false) , __pressedControl(TABLE_VIEW_ITEM_PRESSED_NONE) + , __releasedControl(TABLE_VIEW_ITEM_PRESSED_NONE) , __pCheckedTimer(null) , __isCheckedTimerEnabled(false) , __isCheckedAnimationEnabled(false) @@ -1082,11 +1083,37 @@ _TableViewItem::OnTouchPressed(const _Control& source, const _TouchInfo& touchin return true; } + if(__isReleasedTimerEnabled) + { + StopTouchReleasedTimer(); + FireItemTouchReleased(); + } + __annexOnOffHandlerMoved = false; __touchStartPosition = touchinfo.GetCurrentPosition(); // +++ check floating + if (&source == this) + { + __pressedControl = TABLE_VIEW_ITEM_PRESSED_ITEM; + } + else if (&source == __pItemAnnex) + { + __pressedControl = TABLE_VIEW_ITEM_PRESSED_ANNEX; - __itemSelected = true; + if (__annexStyle == TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING || + __annexStyle == TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING_WITH_DIVIDER) + { + __annexOnOffTouchPosition = touchinfo.GetCurrentPosition().x; // +++ check floating + } + } + else if (IsIndividualSelectionEnabled(source)) + { + __pressedControl = TABLE_VIEW_ITEM_PRESSED_INDIVIDUAL; + } + else + { + __pressedControl = TABLE_VIEW_ITEM_PRESSED_NONE; + } if (!IsIndividualSelectionEnabled(source)) { @@ -1104,90 +1131,81 @@ _TableViewItem::OnTouchReleased(const _Control& source, const _TouchInfo& touchi return true; } - if (__isPressedTimerEnabled) + if (&source == this) { - StopTouchPressedTimer(); + __releasedControl = TABLE_VIEW_ITEM_PRESSED_ITEM; + } + else if (&source == __pItemAnnex) + { + __releasedControl = TABLE_VIEW_ITEM_PRESSED_ANNEX; + } + else if (IsIndividualSelectionEnabled(source)) + { + __releasedControl = TABLE_VIEW_ITEM_PRESSED_INDIVIDUAL; + } + else + { + __releasedControl = TABLE_VIEW_ITEM_PRESSED_NONE; } - if(!__itemTouchMoved && !IsContextItem()) + if(!__itemTouchMoved && __isPressedTimerEnabled) { - if(__pressedControl == TABLE_VIEW_ITEM_PRESSED_ITEM) - { - __drawingStatus = TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED; - SetItemChanged(true); - Invalidate(); - } - else if(__pressedControl == TABLE_VIEW_ITEM_PRESSED_ANNEX) - { - if (__annexStyle == TABLE_VIEW_ANNEX_STYLE_DETAILED) - { - __drawingStatus = TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL; - SetChecked(true); - DrawAnnexStyle(); - } - else if (__annexStyle != TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING && - __annexStyle != TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING_WITH_DIVIDER) - { - __drawingStatus = TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL; - SetItemChanged(true); - Invalidate(); - } - } - else - { - if(__pressedControl != TABLE_VIEW_ITEM_PRESSED_INDIVIDUAL) - { - __drawingStatus = TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED; - SetItemChanged(true); - Invalidate(); - } - } + StopTouchPressedTimer(); - if (&source == this) - { - __pressedControl = TABLE_VIEW_ITEM_PRESSED_ITEM; - } - else if (&source == __pItemAnnex) - { - __pressedControl = TABLE_VIEW_ITEM_PRESSED_ANNEX; - } - else if (IsIndividualSelectionEnabled(source)) + if(!IsContextItem()) { - __pressedControl = TABLE_VIEW_ITEM_PRESSED_INDIVIDUAL; - } - else - { - __pressedControl = TABLE_VIEW_ITEM_PRESSED_NONE; + FireItemTouchPressed(); } StartTouchReleasedTimer(); - return true; } - if (&source == this) - { - __pressedControl = TABLE_VIEW_ITEM_PRESSED_ITEM; - } - else if (&source == __pItemAnnex) + FireItemTouchReleased(); + return true; +} + +void +_TableViewItem::FireItemTouchPressed() +{ + __itemSelected = true; + + if(__pressedControl == TABLE_VIEW_ITEM_PRESSED_ITEM) { - __pressedControl = TABLE_VIEW_ITEM_PRESSED_ANNEX; + __drawingStatus = TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED; + SetItemChanged(true); + Invalidate(); } - else if (IsIndividualSelectionEnabled(source)) + else if(__pressedControl == TABLE_VIEW_ITEM_PRESSED_ANNEX) { - __pressedControl = TABLE_VIEW_ITEM_PRESSED_INDIVIDUAL; + if (__annexStyle == TABLE_VIEW_ANNEX_STYLE_DETAILED) + { + __drawingStatus = TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL; + SetChecked(true); + DrawAnnexStyle(); + } + else if (__annexStyle != TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING && + __annexStyle != TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING_WITH_DIVIDER) + { + __drawingStatus = TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL; + SetItemChanged(true); + Invalidate(); + } } else { - __pressedControl = TABLE_VIEW_ITEM_PRESSED_NONE; + if(__pressedControl != TABLE_VIEW_ITEM_PRESSED_INDIVIDUAL) + { + __drawingStatus = TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED; + SetItemChanged(true); + Invalidate(); + } } - FireItemTouchRelease(); - return true; } void -_TableViewItem::FireItemTouchRelease() +_TableViewItem::FireItemTouchReleased() { bool fireItemEvent = false; bool selectedItem = true; @@ -1199,7 +1217,7 @@ _TableViewItem::FireItemTouchRelease() bool checked = IsChecked(); fireItemEvent = true; - if (__pressedControl == TABLE_VIEW_ITEM_PRESSED_ITEM) + if (__releasedControl == TABLE_VIEW_ITEM_PRESSED_ITEM) { if ((__annexStyle == TABLE_VIEW_ANNEX_STYLE_MARK) || (__annexStyle == TABLE_VIEW_ANNEX_STYLE_RADIO) @@ -1209,7 +1227,7 @@ _TableViewItem::FireItemTouchRelease() SetCheckedAnimationEnabled(!checked); } } - else if(__pressedControl == TABLE_VIEW_ITEM_PRESSED_ANNEX) + else if(__releasedControl == TABLE_VIEW_ITEM_PRESSED_ANNEX) { if (__annexStyle == TABLE_VIEW_ANNEX_STYLE_DETAILED) { @@ -1231,7 +1249,7 @@ _TableViewItem::FireItemTouchRelease() } else { - if(__pressedControl != TABLE_VIEW_ITEM_PRESSED_INDIVIDUAL) + if(__releasedControl != TABLE_VIEW_ITEM_PRESSED_INDIVIDUAL) { if ((__annexStyle == TABLE_VIEW_ANNEX_STYLE_MARK) || (__annexStyle == TABLE_VIEW_ANNEX_STYLE_RADIO) @@ -1253,7 +1271,7 @@ _TableViewItem::FireItemTouchRelease() } else { - if (__pressedControl == TABLE_VIEW_ITEM_PRESSED_ANNEX) + if (__releasedControl == TABLE_VIEW_ITEM_PRESSED_ANNEX) { if (__annexStyle == TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING || __annexStyle == TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING_WITH_DIVIDER) @@ -1383,7 +1401,7 @@ _TableViewItem::OnPreviewTouchReleased(const _Control& source, const _TouchInfo& _UiTouchEventDelivery _TableViewItem::OnPreviewTouchMoved(const _Control& source, const _TouchInfo& touchinfo) { - return _UI_TOUCH_EVENT_DELIVERY_FORCED_YES; + return _UI_TOUCH_EVENT_DELIVERY_YES; } _UiTouchEventDelivery @@ -1488,43 +1506,12 @@ _TableViewItem::OnTimerExpired(Tizen::Base::Runtime::Timer& timer) else if (&timer == __pPressedTimer) { __isPressedTimerEnabled = false; - - if(__pressedControl == TABLE_VIEW_ITEM_PRESSED_ITEM) - { - __drawingStatus = TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED; - SetItemChanged(true); - Invalidate(); - } - else if(__pressedControl == TABLE_VIEW_ITEM_PRESSED_ANNEX) - { - if (__annexStyle == TABLE_VIEW_ANNEX_STYLE_DETAILED) - { - __drawingStatus = TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL; - SetChecked(true); - DrawAnnexStyle(); - } - else if (__annexStyle != TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING && - __annexStyle != TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING_WITH_DIVIDER) - { - __drawingStatus = TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL; - SetItemChanged(true); - Invalidate(); - } - } - else - { - if(__pressedControl != TABLE_VIEW_ITEM_PRESSED_INDIVIDUAL) - { - __drawingStatus = TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED; - SetItemChanged(true); - Invalidate(); - } - } + FireItemTouchPressed(); } else if(&timer == __pReleasedTimer) { __isReleasedTimerEnabled = false; - FireItemTouchRelease(); + FireItemTouchReleased(); } } @@ -1548,35 +1535,12 @@ _TableViewItem::StartTouchPressedTimer(const _Control& source, const _TouchInfo& SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage); __isPressedTimerEnabled = true; - - if (&source == this) - { - __pressedControl = TABLE_VIEW_ITEM_PRESSED_ITEM; - } - else if (&source == __pItemAnnex) - { - __pressedControl = TABLE_VIEW_ITEM_PRESSED_ANNEX; - - if (__annexStyle == TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING || - __annexStyle == TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING_WITH_DIVIDER) - { - __annexOnOffTouchPosition = touchinfo.GetCurrentPosition().x; // +++ check floating - } - } - else if (IsIndividualSelectionEnabled(source)) - { - __pressedControl = TABLE_VIEW_ITEM_PRESSED_INDIVIDUAL; - } - else - { - __pressedControl = TABLE_VIEW_ITEM_PRESSED_NONE; - } } return r; CATCH: - if (__isPressedTimerEnabled) + if (__isPressedTimerEnabled && __pPressedTimer != null) { __pPressedTimer->Cancel(); } @@ -1587,21 +1551,42 @@ CATCH: return r; } +void +_TableViewItem::StopTouchPressedTimer(void) +{ + result r = E_SUCCESS; + + SysTryReturnVoidResult(NID_UI_CTRL, __pPressedTimer != null, E_SYSTEM, "[E_SYSTEM] Timer is invalid."); + + if (__isPressedTimerEnabled) + { + r = __pPressedTimer->Cancel(); + SysTryReturnVoidResult(NID_UI_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r)); + } + + __isPressedTimerEnabled = false; + + return; +} + result _TableViewItem::StartTouchReleasedTimer() { result r = E_SUCCESS; - if (__pReleasedTimer == null) + if(__pReleasedTimer != null) { - __pReleasedTimer = new (std::nothrow) Timer(); - SysTryCatch(NID_UI_CTRL, __pReleasedTimer != null, r = E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed."); - - r = __pReleasedTimer->Construct(*this); - SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage); + delete __pReleasedTimer; + __pReleasedTimer = null; } - r = __pReleasedTimer->Start(TOUCH_RELREASED_DURATION); + __pReleasedTimer = new (std::nothrow) Timer(); + SysTryCatch(NID_UI_CTRL, __pReleasedTimer != null, r = E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed."); + + r = __pReleasedTimer->Construct(*this); + SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage); + + r = __pReleasedTimer->Start(TOUCH_RELEASED_DURATION); SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage); __isReleasedTimerEnabled = true; @@ -1621,19 +1606,19 @@ CATCH: } void -_TableViewItem::StopTouchPressedTimer(void) +_TableViewItem::StopTouchReleasedTimer(void) { result r = E_SUCCESS; - SysTryReturnVoidResult(NID_UI_CTRL, __pPressedTimer != null, E_SYSTEM, "[E_SYSTEM] Timer is invalid."); + SysTryReturnVoidResult(NID_UI_CTRL, __pReleasedTimer != null, E_SYSTEM, "[E_SYSTEM] Timer is invalid."); - if (__isPressedTimerEnabled) + if (__isReleasedTimerEnabled) { - r = __pPressedTimer->Cancel(); + r = __pReleasedTimer->Cancel(); SysTryReturnVoidResult(NID_UI_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r)); } - __isPressedTimerEnabled = false; + __isReleasedTimerEnabled = false; return; } diff --git a/src/ui/controls/FUiCtrl_TableViewPresenter.cpp b/src/ui/controls/FUiCtrl_TableViewPresenter.cpp index 09cd71c..76ca821 100644 --- a/src/ui/controls/FUiCtrl_TableViewPresenter.cpp +++ b/src/ui/controls/FUiCtrl_TableViewPresenter.cpp @@ -2883,11 +2883,9 @@ _TableViewPresenter::ScrollToInternal(float newPosition) { if (!IsScrollEnabled()) { - return 0; + return 0.0f; } - ResetSweepItem(); - if (IsScrollAnimationRunning()) { if (__scrollPositionOnFlickStarted > newPosition) @@ -3022,6 +3020,7 @@ _TableViewPresenter::ScrollToItem(int groupIndex, int itemIndex, TableViewScroll TableViewItemTag itemPos = {groupIndex, itemIndex}; StopAllItemAnimation(); + ResetSweepItem(); if (!__pListModel->IsLoadedItem(groupIndex, itemIndex)) { @@ -3054,6 +3053,8 @@ _TableViewPresenter::ScrollByPixel(float scrollDistance) result r = GetLastResult(); SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r)); + ResetSweepItem(); + ScrollTo(scrollDistance + GetScrollPosition()); r = GetLastResult(); SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r)); diff --git a/src/ui/controls/FUiCtrl_TokenEditPresenter.cpp b/src/ui/controls/FUiCtrl_TokenEditPresenter.cpp index 4cbcf58..c910c53 100755 --- a/src/ui/controls/FUiCtrl_TokenEditPresenter.cpp +++ b/src/ui/controls/FUiCtrl_TokenEditPresenter.cpp @@ -184,7 +184,7 @@ _Token::ResetToken(const String& text) } __pTextBuffer[length] = 0; - pTextObject->RemoveAll(); + pTextObject->RemoveAll(true); TextSimple* pSimpleText = new (std::nothrow)TextSimple(__pTextBuffer, length, TEXT_ELEMENT_SOURCE_TYPE_EXTERNAL, pFont); SysTryCatch(NID_UI_CTRL, pSimpleText != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed."); @@ -274,7 +274,6 @@ _TokenEditPresenter::_TokenEditPresenter(void) , __isEditModeEnabled(true) , __pDescriptionTextVisualElement(null) , __pDescriptionTextTextObject(null) - , __pDescriptionTextFont(null) , __isTokenEditingFinished(false) , __prevScrollValue(0.0f) , __scrollValue(0.0f) @@ -300,6 +299,7 @@ _TokenEditPresenter::_TokenEditPresenter(void) , __isTouchMoveInProgress(false) , __isTitleSliding(false) , __touchPressInfo(Point(-1, -1)) + , __editContentFontSize(0.0f) { } @@ -308,6 +308,8 @@ _TokenEditPresenter::InitializeDescriptionText(void) { result r = E_SUCCESS; float descriptionTextSize = 0.0f; + Font *pFont = null; + float editFontSize = 0.0f; __pDescriptionTextTextObject = new (std::nothrow) TextObject(); SysTryReturnResult(NID_UI_CTRL, __pDescriptionTextTextObject != null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed."); @@ -324,14 +326,17 @@ _TokenEditPresenter::InitializeDescriptionText(void) GET_SHAPE_CONFIG(TOKENEDIT::DESCRIPTION_TEXT_SIZE, _CONTROL_ORIENTATION_PORTRAIT, descriptionTextSize); - __pDescriptionTextFont = new (std::nothrow) Font(); - SysTryCatch(NID_UI_CTRL, __pDescriptionTextFont != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed."); + pFont = GetFont(); + SysTryCatch(NID_UI_CTRL, pFont != null, , r, "[%s] Propagating.", GetErrorMessage(r)); - r = __pDescriptionTextFont->Construct(GetTitleFontFaceName(), FONT_STYLE_PLAIN, descriptionTextSize); - SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r)); - r = __pDescriptionTextTextObject->SetFont(__pDescriptionTextFont, 0, __pDescriptionTextTextObject->GetTextLength()); + editFontSize = GetTextSize(); + (_FontImpl::GetInstance(*pFont))->SetSize(descriptionTextSize); + + r = __pDescriptionTextTextObject->SetFont(pFont, 0, __pDescriptionTextTextObject->GetTextLength()); SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r)); + (_FontImpl::GetInstance(*pFont))->SetSize(editFontSize); + return r; CATCH: @@ -339,9 +344,6 @@ CATCH: delete __pDescriptionTextTextObject; __pDescriptionTextTextObject = null; - delete __pDescriptionTextFont; - __pDescriptionTextFont = null; - return r; } @@ -394,12 +396,6 @@ _TokenEditPresenter::DisposeTokenEditPresenter(void) delete __pDescriptionTextTextObject; __pDescriptionTextTextObject = null; - if (__pDescriptionTextFont) - { - delete __pDescriptionTextFont; - __pDescriptionTextFont = null; - } - if (__pTimingFunction) { delete __pTimingFunction; @@ -474,16 +470,9 @@ _TokenEditPresenter::Initialize(const _Control& control) float textSize = 0.0f; GET_SHAPE_CONFIG(TOKENEDIT::TEXT_SIZE, orientation, textSize); - Font* pFont = new (std::nothrow) Font(); - SysTryCatch(NID_UI_CTRL, pFont != null, , r = E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed."); - - r = pFont->Construct(FONT_STYLE_PLAIN, textSize); - SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r)); - - SetFont(*pFont); + __editContentFontSize = textSize; - delete pFont; - pFont = null; + _EditPresenter::SetTextSize(__editContentFontSize); __pTokenList = new (std::nothrow) Collection::LinkedList(); SysTryCatch(NID_UI_CTRL, __pTokenList != null, , r = E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed."); @@ -510,9 +499,6 @@ CATCH: delete pTokenEditModel; pTokenEditModel = null; - delete pFont; - pFont = null; - delete __pTokenBgBitmap; __pTokenBgBitmap = null; @@ -542,9 +528,9 @@ _TokenEditPresenter::DrawText(void) pTokenCanvas->Clear(); Color selectedTokenColor = GetTokenEditColor(EXPANDABLE_EDIT_AREA_TOKEN_STATUS_SELECTED); + Bitmap* pReplacementColorBackgroundBitmap = null; if (__pTokenBgBitmap) { - Bitmap* pReplacementColorBackgroundBitmap = null; pReplacementColorBackgroundBitmap = _BitmapImpl::GetColorReplacedBitmapN(*__pTokenBgBitmap, Color::GetColor(COLOR_ID_MAGENTA), selectedTokenColor); if (_BitmapImpl::CheckNinePatchedBitmapStrictly(*pReplacementColorBackgroundBitmap)) @@ -566,6 +552,8 @@ _TokenEditPresenter::DrawText(void) delete pTokenCanvas; pTokenCanvas = null; + + delete pReplacementColorBackgroundBitmap; } } else @@ -582,6 +570,9 @@ _TokenEditPresenter::DrawText(void) SysTryReturnVoidResult(NID_UI_CTRL, pCanvas, E_SYSTEM, "[E_SYSTEM] A system error has occurred. Failed to get visual element of Control."); _EditPresenter::DrawText(*pCanvas); + + delete pCanvas; + pCanvas = null; } } } @@ -642,7 +633,6 @@ _TokenEditPresenter::Draw(Canvas& canvas) } else { - //DrawText(canvas); DrawText(); InitializeCursor(); } @@ -651,17 +641,16 @@ _TokenEditPresenter::Draw(Canvas& canvas) { SysTryReturnResult(NID_UI_CTRL, !__isEditingToken, E_SYSTEM, "An invalid argument is given."); - //DrawText(canvas); DrawText(); InitializeCursor(); } if (__isTokenEditingFinished) { - _EditPresenter::SetDefaultFont(); - __isEditingToken = false; __edittingTokenIndex = -1; + _EditPresenter::SetTextSize(__editContentFontSize); + __isTokenEditingFinished = false; } @@ -968,11 +957,6 @@ _TokenEditPresenter::InsertTokenAt(int index, const String& token, bool isUser) r = __pTokenList->InsertAt(*pToken, index); SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Failed to insert token.", GetErrorMessage(r)); - if (__isEditingToken) - { - _EditPresenter::SetFont(*(pToken->pFont)); - } - r = ClearText(); r = CalculateTokenPositionFromIndex(index); @@ -1093,7 +1077,7 @@ _TokenEditPresenter::RemoveTokenAt(int index, bool isClearText) r = ClearText(); SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, E_SYSTEM, "Failed to clear text object."); - _EditPresenter::SetDefaultFont(); + _EditPresenter::SetTextSize(__editContentFontSize); } r = __pTokenList->RemoveAt(index, true); @@ -1608,7 +1592,7 @@ _TokenEditPresenter::CalculateDescriptionTextRect(const String& descriptionText) SysAssertf(__pDescriptionTextTextObject != null, "The TextObject instance is null."); - __pDescriptionTextTextObject->RemoveAll(); + __pDescriptionTextTextObject->RemoveAll(true); pSimpleText = new (std::nothrow)TextSimple(pTempString, length, TEXT_ELEMENT_SOURCE_TYPE_INTERNAL); __pDescriptionTextTextObject->AppendElement(*pSimpleText); @@ -1671,20 +1655,17 @@ _TokenEditPresenter::DrawDescriptionText(void) float descriptionTextSize = 0.0f; GET_SHAPE_CONFIG(TOKENEDIT::DESCRIPTION_TEXT_SIZE, _CONTROL_ORIENTATION_PORTRAIT, descriptionTextSize); - pDescriptionFont = new (std::nothrow) Font(); - SysTryReturn(NID_UI_CTRL, pDescriptionFont != null, false, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed."); - - r = pDescriptionFont->Construct(GetTitleFontFaceName(), FONT_STYLE_PLAIN, descriptionTextSize); - - SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r)); - r = __pDescriptionTextTextObject->SetFont(pDescriptionFont, 0, __pDescriptionTextTextObject->GetTextLength()); - - SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r)); + pDescriptionFont = GetFont(); + if (pDescriptionFont) + { + float editFontSize = GetTextSize(); + (_FontImpl::GetInstance(*pDescriptionFont))->SetSize(descriptionTextSize); - delete __pDescriptionTextFont; - __pDescriptionTextFont = null; + r = __pDescriptionTextTextObject->SetFont(pDescriptionFont, 0, __pDescriptionTextTextObject->GetTextLength()); + SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, E_SYSTEM, E_SYSTEM, "[E_SYSTEM] A system error has occurred. SetFont failed"); - __pDescriptionTextFont = pDescriptionFont; + (_FontImpl::GetInstance(*pDescriptionFont))->SetSize(editFontSize); + } } pRootElement = __pTokenEdit->GetVisualElement(); @@ -1765,15 +1746,10 @@ _TokenEditPresenter::DrawDescriptionText(void) __pDescriptionTextTextObject->Draw(*_CanvasImpl::GetInstance(*pDescriptionTextCanvas)); delete pDescriptionTextCanvas; - return true; -CATCH: - if (pDescriptionFont == __pDescriptionTextFont) - { - __pDescriptionTextFont = null; - } - delete pDescriptionFont; + return true; +CATCH: if (__pDescriptionTextVisualElement != null) { __pDescriptionTextVisualElement->Destroy(); @@ -1858,11 +1834,13 @@ _TokenEditPresenter::SetEditingTokenTextBounds(int index, bool isSetText) float tokenHeight = 0.0f; float tokenVerticalSpacing = 0.0f; float tokenTextLeftMargin = 0.0f; + float tokenFontSize = 0.0f; _ControlOrientation orientation = __pTokenEdit->GetOrientation(); GET_SHAPE_CONFIG(TOKENEDIT::TOKEN_HEIGHT, orientation, tokenHeight); GET_SHAPE_CONFIG(TOKENEDIT::TOKEN_VERTICAL_SPACING, orientation, tokenVerticalSpacing); GET_SHAPE_CONFIG(TOKENEDIT::TOKEN_TEXT_LEFT_MARGIN, orientation, tokenTextLeftMargin); + GET_SHAPE_CONFIG(TOKENEDIT::TOKEN_TEXT_SIZE, orientation, tokenFontSize); _Token* pToken = static_cast <_Token*>(__pTokenList->GetAt(index)); SysTryReturnResult(NID_UI_CTRL, pToken != null, E_SYSTEM, "A system error has occurred. The _Token instance is null"); @@ -1879,9 +1857,11 @@ _TokenEditPresenter::SetEditingTokenTextBounds(int index, bool isSetText) { SetText(pToken->GetText()); } - pToken->pTextObject->RemoveAll(); + pToken->pTextObject->RemoveAll(true); } - _EditPresenter::SetFont(*(pToken->pFont)); + + __editContentFontSize = GetTextSize(); + _EditPresenter::SetTextSize(tokenFontSize); SetTextBounds(tempTextDspRect); @@ -2192,7 +2172,7 @@ _TokenEditPresenter::ProcessTokeningByTouchEvent(const _Control& source, const _ __isEditingToken = false; __edittingTokenIndex = -1; - _EditPresenter::SetDefaultFont(); + _EditPresenter::SetTextSize(__editContentFontSize); __isTokenEditingFinished = false; ClearText(); @@ -2662,6 +2642,38 @@ _TokenEditPresenter::SetFlexBounds(const FloatRectangle& bounds) return _EditPresenter::SetFlexBounds(bounds); } +result +_TokenEditPresenter::SetTextSize(const int size) +{ + result r = E_SUCCESS; + if (__isEditingToken) + { + __editContentFontSize = size; + } + else + { + r = _EditPresenter::SetTextSize(size); + } + + return r; +} + +result +_TokenEditPresenter::SetTextSize(const float size) +{ + result r = E_SUCCESS; + if (__isEditingToken) + { + __editContentFontSize = size; + } + else + { + r = _EditPresenter::SetTextSize(size); + } + + return r; +} + bool _TokenEditPresenter::OnTouchPressed(const _Control& source, const _TouchInfo& touchinfo) { @@ -2973,7 +2985,7 @@ _TokenEditPresenter::OnSurroundingTextDeleted(int offset, int charCount) __pressedTokenIndex = -1; __edittingTokenIndex = -1; __isEditingToken = false; - _EditPresenter::SetDefaultFont(); + _EditPresenter::SetTextSize(__editContentFontSize); __isTokenEditingFinished = false; AdjustFlexibleHeight(); diff --git a/src/ui/controls/FUiCtrl_Toolbar.cpp b/src/ui/controls/FUiCtrl_Toolbar.cpp index 61d3863..6a06bd3 100644 --- a/src/ui/controls/FUiCtrl_Toolbar.cpp +++ b/src/ui/controls/FUiCtrl_Toolbar.cpp @@ -2265,7 +2265,7 @@ _Toolbar::SetItemSelected(int itemIndex, bool fire) if (itemIndex != -1 && itemIndex == currentSelectedItemIndex && __pItems.at(itemIndex) != null) // same item selected { - if (!IsInitialDraw()) + if (!IsInitialDraw() && fire) { PLAY_FEEDBACK(_RESOURCE_FEEDBACK_PATTERN_TAP); } @@ -2290,7 +2290,7 @@ _Toolbar::SetItemSelected(int itemIndex, bool fire) if (__pItems.at(itemIndex) != null) { - if (!IsInitialDraw()) + if (!IsInitialDraw() && fire) { PLAY_FEEDBACK(_RESOURCE_FEEDBACK_PATTERN_TAP); } @@ -2474,7 +2474,7 @@ _Toolbar::AdjustToolbarBounds(void) dimension = pParent->TranslateSize(dimension); bounds.height = dimension.height; - if (__transparent) + if (__transparent || !IsVisible()) { bounds.y -= bounds.height; } @@ -4769,6 +4769,15 @@ _Toolbar::RearrangeButtonItems(void) blockWidth[0] = minItemLength; } + tabLeftMargin = footerLeftMargin; + itemButtonLeftGap = footerLeftMargin; + __itemArea.width -= ((tabLeftMargin + iconSize + itemButtonLeftGap) * 2); + + if (blockWidth[0] > __itemArea.width) + { + blockWidth[0] = __itemArea.width; + } + if (__header == true && __style == TOOLBAR_TEXT && GetOrientation() == _CONTROL_ORIENTATION_PORTRAIT) // sip { __pItems.at(0)->SetBounds(FloatRectangle((GetSizeF().width - blockWidth[0]) / 2, sipFooterItemTopMargin, blockWidth[0], itemHeight)); @@ -4846,6 +4855,20 @@ _Toolbar::RearrangeButtonItems(void) blockWidth[1] = minItemLength; } + tabLeftMargin = footerLeftMargin; + itemButtonLeftGap = footerLeftMargin; + __itemArea.width -= ((tabLeftMargin + iconSize + itemButtonLeftGap) * 2); + + if (blockWidth[0] > (__itemArea.width - itemGap * 2) / 2) + { + blockWidth[0] = (__itemArea.width - itemGap * 2) / 2; + } + + if (blockWidth[1] > (__itemArea.width - itemGap * 2) / 2) + { + blockWidth[1] = (__itemArea.width - itemGap * 2) / 2; + } + if (__header == true && __style == TOOLBAR_TEXT && GetOrientation() == _CONTROL_ORIENTATION_PORTRAIT) // sip { __pItems.at(0)->SetBounds(FloatRectangle(GetSizeF().width / 2 - itemGap - blockWidth[0], sipFooterItemTopMargin, blockWidth[0], itemHeight)); diff --git a/src/ui/inc/FUiCtrl_DateTimeBar.h b/src/ui/inc/FUiCtrl_DateTimeBar.h index 67f460c..cccaa3b 100644 --- a/src/ui/inc/FUiCtrl_DateTimeBar.h +++ b/src/ui/inc/FUiCtrl_DateTimeBar.h @@ -82,7 +82,6 @@ public: result FireActionEvent(int actionId); result FireDateTimeChangeEvent(_DateTimeChangeStatus status); - virtual bool IsActivatedOnOpen(void) const; virtual void OnDraw(void); 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); @@ -91,6 +90,8 @@ public: virtual void OnTouchMoveHandled(const Tizen::Ui::_Control& control); virtual result OnAttachedToMainTree(void); virtual result OnDetachingFromMainTree(void); + virtual void OnActivated(void); + virtual void OnDeactivated(void); virtual bool OnFlickGestureDetected(_TouchFlickGestureDetector& gesture); virtual bool OnFlickGestureCanceled(_TouchFlickGestureDetector& gesture); void AddAccessibilityElement(const Tizen::Graphics::FloatRectangle& itemBounds, const Tizen::Base::String& itemText); @@ -100,6 +101,7 @@ public: void SetFont(Tizen::Graphics::Font& pFont); void SetParentWindowBounds(Tizen::Graphics::FloatRectangle& parentWindowBounds); Tizen::Graphics::FloatRectangle GetParentWindowBounds() const; + void RefreshItems(void); // accessibility listener virtual bool OnAccessibilityFocusMovedNext(const _AccessibilityContainer& control, const _AccessibilityElement& element); diff --git a/src/ui/inc/FUiCtrl_DateTimeBarPresenter.h b/src/ui/inc/FUiCtrl_DateTimeBarPresenter.h index 38d442f..c72e912 100644 --- a/src/ui/inc/FUiCtrl_DateTimeBarPresenter.h +++ b/src/ui/inc/FUiCtrl_DateTimeBarPresenter.h @@ -83,7 +83,7 @@ public: virtual bool OnFlickGestureDetected(int distanceX,int distanceY,int duration); void StartFlickAnimation(void); void StartAnimationEffect(void); - void SetInitialAnimationValue(int animationValue); + void SetInitialAnimationValue(float animationValue); void SetFont(Tizen::Graphics::Font& pFont); virtual bool OnAccessibilityFocusMovedNext(const _AccessibilityContainer& control, const _AccessibilityElement& element); diff --git a/src/ui/inc/FUiCtrl_Edit.h b/src/ui/inc/FUiCtrl_Edit.h index aa8e947..2fb97d0 100644 --- a/src/ui/inc/FUiCtrl_Edit.h +++ b/src/ui/inc/FUiCtrl_Edit.h @@ -397,8 +397,6 @@ public: result DeleteCharacterAt(int index); result DeleteCharacterAtCursorPosition(void); void SetCursorDisabled(bool disabled); - void SetPressedGuideTextColor(const Tizen::Graphics::Color& color); - Tizen::Graphics::Color GetPressedGuideTextColor(void) const; result HideKeypad(void); void InitializeColorInformation(void); void SetViewModeColorInformation(bool enabled); diff --git a/src/ui/inc/FUiCtrl_EditPresenter.h b/src/ui/inc/FUiCtrl_EditPresenter.h index 35de054..ae22665 100644 --- a/src/ui/inc/FUiCtrl_EditPresenter.h +++ b/src/ui/inc/FUiCtrl_EditPresenter.h @@ -167,8 +167,8 @@ public: result SetEllipsisPosition(EllipsisPosition position); virtual result SetFlexBounds(const Tizen::Graphics::Rectangle& bounds); virtual result SetFlexBounds(const Tizen::Graphics::FloatRectangle& bounds); - result SetTextSize(const int size); - result SetTextSize(const float size); + virtual result SetTextSize(const int size); + virtual result SetTextSize(const float size); result SetFont(const Tizen::Graphics::Font& font); result AdjustFont(Tizen::Graphics::Font& font, _EditFontChange fontChange = EDIT_FONT_CHANGE_CONTENT); result SetFontType(const Tizen::Base::String& typefaceName, unsigned long styleMask); @@ -305,7 +305,6 @@ public: bool GetCursorChangedFlag(void) const; void SetAutoShrinkModeEnabled(bool enable); bool IsAutoShrinkModeEnabled(void) const; - result SetDefaultFont(void); void SetEditGroupStyle(GroupStyle groupStyle); void ScrollPanelToCursorPosition(bool show = true); void SetSearchBarFlag(bool enabled); diff --git a/src/ui/inc/FUiCtrl_Form.h b/src/ui/inc/FUiCtrl_Form.h index a64d9ad..31559c9 100644 --- a/src/ui/inc/FUiCtrl_Form.h +++ b/src/ui/inc/FUiCtrl_Form.h @@ -202,8 +202,6 @@ public: // Focus UI Tizen::Base::Collection::IListT<_Control*>* GetFocusList(void) const; - void MakeFocusList(const _Control* pControl, Tizen::Base::Collection::IListT<_Control*>* pFocusControlList) const; - void MakeChildContainerFocusList(_Control* pControl, int startIndex) const; // Accessor protected: diff --git a/src/ui/inc/FUiCtrl_Popup.h b/src/ui/inc/FUiCtrl_Popup.h index 27d8c51..458219d 100644 --- a/src/ui/inc/FUiCtrl_Popup.h +++ b/src/ui/inc/FUiCtrl_Popup.h @@ -108,6 +108,7 @@ public: virtual result OnBoundsChanging(const Tizen::Graphics::Rectangle& bounds); virtual bool IsLayoutChangable(void) const; virtual void OnOwnerChanged(_Control* pOldOwner); + virtual void UpdateClientBounds(const Tizen::Graphics::FloatDimension& size, Tizen::Graphics::FloatRectangle& clientBounds); // Accessor public: diff --git a/src/ui/inc/FUiCtrl_SearchBar.h b/src/ui/inc/FUiCtrl_SearchBar.h index c50cc81..750fcf9 100644 --- a/src/ui/inc/FUiCtrl_SearchBar.h +++ b/src/ui/inc/FUiCtrl_SearchBar.h @@ -291,6 +291,7 @@ private: bool __isUsableCancelButton; bool __isUserContainerBounds; bool __isCancelActionInProgress; + bool __isUserGuideTextColor; CoreKeypadAction __keypadAction; diff --git a/src/ui/inc/FUiCtrl_SlidableGroupedListImpl.h b/src/ui/inc/FUiCtrl_SlidableGroupedListImpl.h index 0064a6f..76f4261 100644 --- a/src/ui/inc/FUiCtrl_SlidableGroupedListImpl.h +++ b/src/ui/inc/FUiCtrl_SlidableGroupedListImpl.h @@ -277,6 +277,7 @@ private: int __bottomGroup; int __topGroup; int __loadedCount; + bool __isFullUpdate; _SlidableGroupedListItemProvider* __pItemProvider; Tizen::Base::Collection::LinkedList __slidableListenersList; Tizen::Base::Collection::LinkedList __itemListenersList; diff --git a/src/ui/inc/FUiCtrl_SliderPresenter.h b/src/ui/inc/FUiCtrl_SliderPresenter.h index 6318b91..6cc815b 100644 --- a/src/ui/inc/FUiCtrl_SliderPresenter.h +++ b/src/ui/inc/FUiCtrl_SliderPresenter.h @@ -38,6 +38,7 @@ class _SliderOverlay; class _SliderPresenter : public Tizen::Base::Object + , public Tizen::Base::Runtime::ITimerEventListener { public: virtual ~_SliderPresenter(void); @@ -69,8 +70,10 @@ public: result SetThumbBitmap(SliderThumbStatus status, const Tizen::Graphics::Bitmap& bitmap); void SetThumbTextColor(SliderThumbStatus status, const Tizen::Graphics::Color& color); + virtual void OnTimerExpired(Tizen::Base::Runtime::Timer& timer); + private: - int CalculateSliderValue(int positionX, int offsetX); + int CalculateSliderValue(float positionX, float offsetX); result Resize(void); result LoadBitmap(void); result DrawSlider(void); @@ -100,6 +103,8 @@ private: Tizen::Graphics::FloatRectangle __barRect; Tizen::Graphics::FloatRectangle __handleRect; + Tizen::Base::Runtime::Timer* __pSlideTimer; + Tizen::Graphics::Bitmap* __pResourceBgTopBitmap; Tizen::Graphics::Bitmap* __pResourceBgMiddleBitmap; Tizen::Graphics::Bitmap* __pResourceBgBottomBitmap; @@ -152,13 +157,17 @@ private: bool __isSliderPressed; bool __isNeedToBeUpdated; - bool __isBubblingBlocked; bool __isResourceLoaded; bool __isCustomHandle; bool __isCustomPressedTextColor; GroupStyle __groupStyle; float __fontSize; float __barOffset; + + bool __isTimerRunning; + + Tizen::Graphics::FloatPoint __currentPosition; + static const int __timerValue = 5; }; // _SliderPresenter }}} // Tizen::Ui::Controls diff --git a/src/ui/inc/FUiCtrl_SplitPanel.h b/src/ui/inc/FUiCtrl_SplitPanel.h index 41d3135..f42eac2 100644 --- a/src/ui/inc/FUiCtrl_SplitPanel.h +++ b/src/ui/inc/FUiCtrl_SplitPanel.h @@ -105,13 +105,13 @@ public: virtual bool OnAccessibilityValueIncreased(const Tizen::Ui::_AccessibilityContainer& control, const Tizen::Ui::_AccessibilityElement& element); virtual bool OnAccessibilityValueDecreased(const Tizen::Ui::_AccessibilityContainer& control, const Tizen::Ui::_AccessibilityElement& element); - public: result AddSplitPanelEventListener(const _ISplitPanelEventListener& listener); result RemoveSplitPanelEventListener(const _ISplitPanelEventListener& listener); result SetPane(_Control* pControl, SplitPanelPaneOrder paneOrder); _Control* GetPane(SplitPanelPaneOrder paneOrder) const; + _Control* GetPaneParent(SplitPanelPaneOrder paneOrder) const; result SetDividerStyle(SplitPanelDividerStyle splitPanelDividerStyle); SplitPanelDividerStyle GetDividerStyle(void) const; @@ -153,10 +153,14 @@ private: _SplitPanel& operator =(const _SplitPanel& rhs); private: + static const float ACCESSIBILITY_DIVIDER_POSITION_OFFSET = 5.0f; + _SplitPanelPresenter* __pSplitPanelPresenter; _TouchTapGestureDetector* __pTapGesture; + Tizen::Ui::_Control* __pFirstPaneParent; + Tizen::Ui::_Control* __pSecondPaneParent; Tizen::Ui::_Control* __pFirstPane; Tizen::Ui::_Control* __pSecondPane; diff --git a/src/ui/inc/FUiCtrl_SplitPanelPresenter.h b/src/ui/inc/FUiCtrl_SplitPanelPresenter.h index d6fb447..8b4ea6b 100644 --- a/src/ui/inc/FUiCtrl_SplitPanelPresenter.h +++ b/src/ui/inc/FUiCtrl_SplitPanelPresenter.h @@ -101,9 +101,11 @@ private: void ChangePaneOrder(SplitPanelPaneOrder paneOrder); result AnimateDivider(int destination); result AnimatePane(int destination); + result AnimatePaneParent(int destination); Tizen::Ui::Control* GetPaneControl(SplitPanelPaneOrder paneOrder); - Tizen::Ui::Animations::AnimatorStatus GetAnimationStatus(void); + Tizen::Ui::Animations::AnimationTransactionStatus GetTransactionStatus(void); Tizen::Graphics::FloatRectangle GetRestorePaneBounds(SplitPanelPaneOrder paneOrder); + Tizen::Ui::Animations::VisualElementPropertyAnimation* GetVisualElementAnimation(Tizen::Base::String propertyName); private: _SplitPanelPresenter(const _SplitPanelPresenter& value); @@ -131,8 +133,8 @@ private: int __transactionIdMaximize; int __transactionIdRestore; - Tizen::Ui::Animations::AnimationInterpolatorType __controlAnimatorAnimationInterpolator; - Tizen::Base::String __visualElementAnimationInterpolator; + Tizen::Ui::Animations::AnimationInterpolatorType __controlAnimatorInterpolator; + Tizen::Base::String __visualElementInterpolator; }; // _SplitPanelPresenter; diff --git a/src/ui/inc/FUiCtrl_TableViewItem.h b/src/ui/inc/FUiCtrl_TableViewItem.h index a4830ca..557459b 100644 --- a/src/ui/inc/FUiCtrl_TableViewItem.h +++ b/src/ui/inc/FUiCtrl_TableViewItem.h @@ -299,6 +299,7 @@ protected: result StartTouchPressedTimer(const _Control& source, const _TouchInfo& touchinfo); void StopTouchPressedTimer(void); result StartTouchReleasedTimer(void); + void StopTouchReleasedTimer(void); private: _TableViewItem(const _TableViewItem&); @@ -335,7 +336,8 @@ private: result CreateItemCover(void); result CreateItemDivider(void); result CreateItemAnnexDivider(void); - void FireItemTouchRelease(void); + void FireItemTouchReleased(void); + void FireItemTouchPressed(void); private: void* __pAppInfo; @@ -406,6 +408,7 @@ private: bool __isPressedTimerEnabled; bool __isReleasedTimerEnabled; TableViewItemPressedControl __pressedControl; + TableViewItemPressedControl __releasedControl; Tizen::Base::Runtime::Timer* __pCheckedTimer; bool __isCheckedTimerEnabled; @@ -435,7 +438,7 @@ private: static const int DEFAULT_CAPTURED_CONTROL_COUNT = 10; static const int CHECKED_ANIMATION_DURATION = 30; static const int TOUCH_PRESSED_DURATION = 100; - static const int TOUCH_RELREASED_DURATION = 50; + static const int TOUCH_RELEASED_DURATION = 50; static const int MAX_CHECKED_COUNT = 10; static const float INSENSITIVE = 0.16f; static const float SENSITIVE = 0.08f; diff --git a/src/ui/inc/FUiCtrl_TokenEditPresenter.h b/src/ui/inc/FUiCtrl_TokenEditPresenter.h index 3a30fd8..c1f675a 100644 --- a/src/ui/inc/FUiCtrl_TokenEditPresenter.h +++ b/src/ui/inc/FUiCtrl_TokenEditPresenter.h @@ -132,6 +132,8 @@ public: virtual bool OnFocusLost(void); virtual result SetFlexBounds(const Tizen::Graphics::FloatRectangle& bounds); + virtual result SetTextSize(const int size); + virtual result SetTextSize(const float size); // Touch callbacks virtual bool OnTouchPressed(const _Control& source, const _TouchInfo& touchinfo); @@ -203,8 +205,6 @@ private: Tizen::Graphics::FloatRectangle __descriptionTextRect; - Tizen::Graphics::Font* __pDescriptionTextFont; - bool __isTokenEditingFinished; float __prevScrollValue; @@ -255,6 +255,8 @@ private: Tizen::Graphics::Point __touchPressInfo; + int __editContentFontSize; + }; // _TokenEditPresenter diff --git a/src/ui/inc/FUi_ContainerImpl.h b/src/ui/inc/FUi_ContainerImpl.h index fb82ca1..28d04dc 100644 --- a/src/ui/inc/FUi_ContainerImpl.h +++ b/src/ui/inc/FUi_ContainerImpl.h @@ -53,6 +53,7 @@ public: result AddChild(_ControlImpl* pChild, bool transferOwnership = true); result RemoveChild(_ControlImpl* pChild, bool deallocate = true); result RemoveChild(int index); + void DeleteAllChildren(_ContainerImpl* pChild, bool detachSystemChild = true); void RemoveAllChildren(bool detachSystemChild = true); result MoveChildToTop(const _ControlImpl& child); result MoveChildBefore(const _ControlImpl& targetChild, const _ControlImpl& child); diff --git a/src/ui/inc/FUi_Control.h b/src/ui/inc/FUi_Control.h index 92c7818..87d5638 100644 --- a/src/ui/inc/FUi_Control.h +++ b/src/ui/inc/FUi_Control.h @@ -397,11 +397,12 @@ public: void SetNativeObjectFocusable(bool focusable); // Focus UI - void SetPreviousFocus(_Control* pPreviousFocus); - void SetNextFocus(_Control* pNextFocus); - _Control* GetPreviousFocus() const; - _Control* GetNextFocus() const; - void DrawFocus(void); + void SetPreviousFocus(_Control* pPreviousFocus); + void SetNextFocus(_Control* pNextFocus); + _Control* GetPreviousFocus() const; + _Control* GetNextFocus() const; + void DrawFocus(void); + Tizen::Base::Collection::IListT<_Control*>* GetFocusListN(void) const; // Clipping bool IsClipToParent(void) const; @@ -585,6 +586,10 @@ private: void SetEventListener(_IntToType<_UI_EVENT_FOCUS>, _IFocusEventListener* pListener); void SetEventListener(_IntToType<_UI_EVENT_NOTIFICAITON>, _INotificationEventListener* pListener); +// Focus Ui + void MakeFocusList(const _Control* pControl, Tizen::Base::Collection::IListT<_Control*>* pFocusControlList) const; + void MakeChildContainerFocusList(const _Control* pControl, int startIndex, Tizen::Base::Collection::IListT<_Control*>* pFocusControlList) const; + private: _ControlHandle __controlHandle; Tizen::Base::String __name; diff --git a/src/ui/layout/FUi_LayoutLayoutContainer.cpp b/src/ui/layout/FUi_LayoutLayoutContainer.cpp old mode 100644 new mode 100755 index cca2da2..67f6aa5 --- a/src/ui/layout/FUi_LayoutLayoutContainer.cpp +++ b/src/ui/layout/FUi_LayoutLayoutContainer.cpp @@ -261,15 +261,10 @@ LayoutContainer::Measure(float width, float height) if (__pCurrentLayout != null) { - LayoutRect calculatedRect; - GetItemWindowRect(calculatedRect); - calculatedRect.w = measuredWidth; - calculatedRect.h = measuredHeight; - SetItemWindowRect(calculatedRect); + LayoutRect containerClientRect = {0.0f, 0.0f, measuredWidth, measuredHeight}; + ConvertWindowToClientBounds(containerClientRect, containerClientRect); - ConvertWindowToClientBounds(calculatedRect, calculatedRect); - - LayoutSize containerSize = {calculatedRect.w, calculatedRect.h}; + LayoutSize containerSize = {containerClientRect.w, containerClientRect.h}; SetIntendedWindowSize(containerSize); __pCurrentLayout->OnLayout(measuredWidth, measuredHeight, true); diff --git a/src/ui/layout/FUi_LayoutLayoutItem.cpp b/src/ui/layout/FUi_LayoutLayoutItem.cpp old mode 100644 new mode 100755 index 76e0b19..364eac0 --- a/src/ui/layout/FUi_LayoutLayoutItem.cpp +++ b/src/ui/layout/FUi_LayoutLayoutItem.cpp @@ -146,18 +146,21 @@ LayoutItem::Measure(float width, float height) float wrapContentWidth = 0.0f; float wrapContentHeight = 0.0f; - Tizen::Graphics::FloatDimension size = __pOuterControl->GetItemContentSize(); - - if (size.width > 0 || size.height > 0) - { - __contentSizeState = true; - wrapContentWidth = size.width; - wrapContentHeight = size.height; - } - else + if (widthMode == WRAP_CONTENT || heightMode == WRAP_CONTENT) { - wrapContentWidth = width; - wrapContentHeight = height; + Tizen::Graphics::FloatDimension size = __pOuterControl->GetItemContentSize(); + if (size.width > 0.0f || size.height > 0.0f) + { + __contentSizeState = true; + wrapContentWidth = size.width; + wrapContentHeight = size.height; + } + else + { + __contentSizeState = false; + wrapContentWidth = width; + wrapContentHeight = height; + } } if (widthMode == NONE_MODE) diff --git a/src/ui/layout/FUi_LayoutLayoutItemProxy.cpp b/src/ui/layout/FUi_LayoutLayoutItemProxy.cpp old mode 100644 new mode 100755 index a6924dc..0af779d --- a/src/ui/layout/FUi_LayoutLayoutItemProxy.cpp +++ b/src/ui/layout/FUi_LayoutLayoutItemProxy.cpp @@ -23,6 +23,7 @@ #include #include +#include "FUi_Math.h" #include "FUi_LayoutLayoutItemProxy.h" #include "FUi_LayoutLayoutContainer.h" @@ -174,7 +175,7 @@ void LayoutItemProxy::GetItemWindowRect(LayoutRect& itemRect) const { SysAssertf(__pItem != null, "LayoutItem is invalid"); - if (__calculatedRect.x == 0 && __calculatedRect.y == 0 && __calculatedRect.w == 0 && __calculatedRect.h == 0) + if (_FloatCompare(__calculatedRect.x, 0.0f) && _FloatCompare(__calculatedRect.y, 0.0f) && _FloatCompare(__calculatedRect.w, 0.0f) && _FloatCompare(__calculatedRect.h, 0.0f)) { __pItem->GetItemWindowRect(itemRect); } diff --git a/src/ui/resource/FUi_ResourceFocusUiConfig.cpp b/src/ui/resource/FUi_ResourceFocusUiConfig.cpp new file mode 100644 index 0000000..aa6cccf --- /dev/null +++ b/src/ui/resource/FUi_ResourceFocusUiConfig.cpp @@ -0,0 +1,25 @@ +// +// Open Service Platform +// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// 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. +// + +#include "FUi_ResourceConfigMacro.h" + +START_UI_CONFIG(FOCUSUI); +{ + ADD_IMAGE_CONFIG(FOCUS,#00_focus.#.png); +} +END_UI_CONFIG(FOCUSUI); + diff --git a/src/ui/resource/FUi_ResourceFooterConfig.cpp b/src/ui/resource/FUi_ResourceFooterConfig.cpp index dd88888..4566517 100644 --- a/src/ui/resource/FUi_ResourceFooterConfig.cpp +++ b/src/ui/resource/FUi_ResourceFooterConfig.cpp @@ -272,7 +272,7 @@ START_UI_CONFIG(FOOTER); ADD_SHAPE_CONFIG(FOOTER_ITEM_BUTTON_STYLE_ICON_SIZE, 48); ADD_SHAPE_CONFIG(FOOTER_ITEM_BUTTON_STYLE_ICON_SIZE_WITH_TEXT, 40); ADD_SHAPE_CONFIG(FOOTER_ITEM_BUTTON_STYLE_SIDE_MARGIN, 28); - ADD_SHAPE_CONFIG(FOOTER_ITEM_BUTTON_STYLE_ITEM_GAP, 10); + ADD_SHAPE_CONFIG(FOOTER_ITEM_BUTTON_STYLE_ITEM_GAP, 8); ADD_SHAPE_CONFIG(FOOTER_ITEM_TEXT_TOP_MARGIN, 0); ADD_SHAPE_CONFIG(ITEM_MINIMUM_WIDTH, 60); ADD_SHAPE_CONFIG(COMMON_MINIMUM_MARGIN, 8); diff --git a/src/ui/resource/FUi_ResourceSearchBarConfig.cpp b/src/ui/resource/FUi_ResourceSearchBarConfig.cpp index da2cbac..40c833e 100644 --- a/src/ui/resource/FUi_ResourceSearchBarConfig.cpp +++ b/src/ui/resource/FUi_ResourceSearchBarConfig.cpp @@ -37,7 +37,10 @@ START_UI_CONFIG(SEARCHBAR); ADD_COLOR_CONFIG(EDIT_BG_DISABLED, $W031D); ADD_COLOR_CONFIG(GUIDE_TEXT_NORMAL, $W032); ADD_COLOR_CONFIG(GUIDE_TEXT_DISABLED, $W032D); - ADD_COLOR_CONFIG(GUIDE_TEXT_HIGHLIGHTED, $W032P); + ADD_COLOR_CONFIG(GUIDE_TEXT_HIGHLIGHTED, $W032); + ADD_COLOR_CONFIG(EDIT_TEXT_NORMAL, $W032P); + ADD_COLOR_CONFIG(EDIT_TEXT_DISABLED, $W032D); + ADD_COLOR_CONFIG(EDIT_TEXT_HIGHLIGHTED, $W032P); ADD_COLOR_CONFIG(ICON_BG_NORMAL, $F041i); ADD_COLOR_CONFIG(ICON_BG_DISABLED, $F041iD); ADD_COLOR_CONFIG(CONTENT_AREA_BG_NORMAL, $B013); -- 2.7.4