From 7f6b58a2a124fba11b5e7495ed1fc63377342a46 Mon Sep 17 00:00:00 2001 From: Syed Khaja Moinuddin Date: Tue, 23 Apr 2013 22:59:33 +0900 Subject: [PATCH] Fix for N_SE-35474 in EDitDate & EditTime Signed-off-by: Syed Khaja Moinuddin Change-Id: Ied4cc4aade96b957efe931e6e9cb49f085dd3b9d Signed-off-by: Syed Khaja Moinuddin --- src/ui/controls/FUiCtrl_EditDate.cpp | 30 ++++++++++++++++++++++++---- src/ui/controls/FUiCtrl_EditDateImpl.cpp | 34 ++++++++++++++++++++++++++++++++ src/ui/controls/FUiCtrl_EditTime.cpp | 30 ++++++++++++++++++++++++---- src/ui/controls/FUiCtrl_EditTimeImpl.cpp | 34 ++++++++++++++++++++++++++++++++ src/ui/inc/FUiCtrl_EditDate.h | 4 ++++ src/ui/inc/FUiCtrl_EditDateImpl.h | 2 ++ src/ui/inc/FUiCtrl_EditTime.h | 4 ++++ src/ui/inc/FUiCtrl_EditTimeImpl.h | 2 ++ 8 files changed, 132 insertions(+), 8 deletions(-) diff --git a/src/ui/controls/FUiCtrl_EditDate.cpp b/src/ui/controls/FUiCtrl_EditDate.cpp index 5d713cd..695c0d7 100644 --- a/src/ui/controls/FUiCtrl_EditDate.cpp +++ b/src/ui/controls/FUiCtrl_EditDate.cpp @@ -49,11 +49,14 @@ _EditDate::_EditDate(void) , __pDateChangeEvent(null) , __pDateTimeBar(null) , __absoluteBounds(FloatRectangle()) + , __previousSize(0.0f, 0.0f) , __title() , __pAccessibilityEditDateElement(null) , __pAccessibilityYearElement(null) , __pAccessibilityMonthElement(null) , __pAccessibilityDayElement(null) + , __isCalledBoundsChanged(false) + , __isXmlBoundsExist(false) { } @@ -158,6 +161,9 @@ _EditDate::CreateDateTimeBar(void) r = SettingInfo::AddSettingEventListener(*this); SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r)); + GET_SHAPE_CONFIG(EDITDATE::WIDTH, GetOrientation(), __previousSize.width); + GET_SHAPE_CONFIG(EDITDATE::HEIGHT, GetOrientation(), __previousSize.height); + return r; CATCH: @@ -736,6 +742,13 @@ _EditDate::CreateAccessibilityElement(void) void _EditDate::OnBoundsChanged(void) { + FloatDimension newSize = GetSizeF(); + + if (newSize.width != __previousSize.width || newSize.height != __previousSize.height) + { + __isCalledBoundsChanged = true; + } + __pEditDatePresenter->Initialize(); if (__pAccessibilityEditDateElement) @@ -761,12 +774,15 @@ _EditDate::OnBoundsChanged(void) void _EditDate::OnChangeLayout(_ControlOrientation orientation) { - FloatDimension dim; + if (!__isCalledBoundsChanged && !__isXmlBoundsExist) + { + FloatDimension dim; - GET_SHAPE_CONFIG(EDITDATE::WIDTH, GetOrientation(), dim.width); - GET_SHAPE_CONFIG(EDITDATE::HEIGHT, GetOrientation(), dim.height); + GET_SHAPE_CONFIG(EDITDATE::WIDTH, GetOrientation(), dim.width); + GET_SHAPE_CONFIG(EDITDATE::HEIGHT, GetOrientation(), dim.height); - SetSize(dim); + SetSize(dim); + } __pEditDatePresenter->Initialize(); __pEditDatePresenter->SetLastSelectedId(DATETIME_ID_NONE); @@ -1042,4 +1058,10 @@ _EditDate::UpdateAccessibilityElement(void) return; } +void +_EditDate::SetXmlBoundsExist(bool isXmlBoundsExist) +{ + __isXmlBoundsExist = isXmlBoundsExist; +} + }}} // Tizen::Ui::Controls diff --git a/src/ui/controls/FUiCtrl_EditDateImpl.cpp b/src/ui/controls/FUiCtrl_EditDateImpl.cpp index e03d288..41c75ff 100644 --- a/src/ui/controls/FUiCtrl_EditDateImpl.cpp +++ b/src/ui/controls/FUiCtrl_EditDateImpl.cpp @@ -427,6 +427,40 @@ _EditDateImpl::OnDateTimeChangeCanceled(const _Control& source) return; } +bool +_EditDateImpl::IsXmlBoundsExist(void) +{ + FloatRectangle builderBounds; + _ControlOrientation controlOrientation = _CONTROL_ORIENTATION_PORTRAIT; + bool exist = GetBuilderBoundsF(controlOrientation, builderBounds); + if(!exist) + { + return false; + } + + controlOrientation = GetCore().GetOrientation(); + + if (controlOrientation == _CONTROL_ORIENTATION_LANDSCAPE) + { + exist = GetBuilderBoundsF(controlOrientation, builderBounds); + } + + if(!exist) + { + return false; + } + + return true; +} + +void +_EditDateImpl::OnChangeLayout(_ControlOrientation orientation) +{ + GetCore().SetXmlBoundsExist(IsXmlBoundsExist()); + + return _ControlImpl::OnChangeLayout(orientation); +} + class _EditDateMaker : public _UiBuilderControlMaker { diff --git a/src/ui/controls/FUiCtrl_EditTime.cpp b/src/ui/controls/FUiCtrl_EditTime.cpp index f374bcd..d9ff9ed 100644 --- a/src/ui/controls/FUiCtrl_EditTime.cpp +++ b/src/ui/controls/FUiCtrl_EditTime.cpp @@ -48,11 +48,14 @@ _EditTime::_EditTime(void) , __pTimeChangeEvent(null) , __pDateTimeBar(null) , __absoluteBounds(FloatRectangle()) + , __previousSize(0.0f, 0.0f) , __title() , __pAccessibilityEditTimeElement(null) , __pAccessibilityHourElement(null) , __pAccessibilityMinuteElement(null) , __pAccessibilityAmPmElement(null) + , __isCalledBoundsChanged(false) + , __isXmlBoundsExist(false) { } @@ -158,6 +161,9 @@ _EditTime::CreateDateTimeBar(void) r = SettingInfo::AddSettingEventListener(*this); SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r)); + GET_SHAPE_CONFIG(EDITTIME::WIDTH, GetOrientation(), __previousSize.width); + GET_SHAPE_CONFIG(EDITTIME::HEIGHT, GetOrientation(), __previousSize.height); + return r; CATCH: @@ -531,6 +537,13 @@ _EditTime::CreateAccessibilityElement(void) void _EditTime::OnBoundsChanged(void) { + FloatDimension newSize = GetSizeF(); + + if (newSize.width != __previousSize.width || newSize.height != __previousSize.height) + { + __isCalledBoundsChanged = true; + } + __pEditTimePresenter->Initialize(); if (__pAccessibilityEditTimeElement) @@ -556,12 +569,15 @@ _EditTime::OnBoundsChanged(void) void _EditTime::OnChangeLayout(_ControlOrientation orientation) { - FloatDimension dim; + if (!__isCalledBoundsChanged && !__isXmlBoundsExist) + { + FloatDimension dim; - GET_SHAPE_CONFIG(EDITTIME::WIDTH, GetOrientation(), dim.width); - GET_SHAPE_CONFIG(EDITTIME::HEIGHT, GetOrientation(), dim.height); + GET_SHAPE_CONFIG(EDITTIME::WIDTH, GetOrientation(), dim.width); + GET_SHAPE_CONFIG(EDITTIME::HEIGHT, GetOrientation(), dim.height); - SetSize(dim); + SetSize(dim); + } __pEditTimePresenter->Initialize(); __pEditTimePresenter->SetLastSelectedId(DATETIME_ID_NONE); @@ -774,6 +790,12 @@ _EditTime::GetParentWindowBounds(void) const } void +_EditTime::SetXmlBoundsExist(bool isXmlBoundsExist) +{ + __isXmlBoundsExist = isXmlBoundsExist; +} + +void _EditTime::UpdateAccessibilityElement(void) { String string; diff --git a/src/ui/controls/FUiCtrl_EditTimeImpl.cpp b/src/ui/controls/FUiCtrl_EditTimeImpl.cpp index d6bc7a6..c4bb6ff 100644 --- a/src/ui/controls/FUiCtrl_EditTimeImpl.cpp +++ b/src/ui/controls/FUiCtrl_EditTimeImpl.cpp @@ -319,6 +319,40 @@ _EditTimeImpl::OnDateTimeChangeCanceled(const _Control& source) return; } +bool +_EditTimeImpl::IsXmlBoundsExist(void) +{ + FloatRectangle builderBounds; + _ControlOrientation controlOrientation = _CONTROL_ORIENTATION_PORTRAIT; + bool exist = GetBuilderBoundsF(controlOrientation, builderBounds); + if(!exist) + { + return false; + } + + controlOrientation = GetCore().GetOrientation(); + + if (controlOrientation == _CONTROL_ORIENTATION_LANDSCAPE) + { + exist = GetBuilderBoundsF(controlOrientation, builderBounds); + } + + if(!exist) + { + return false; + } + + return true; +} + +void +_EditTimeImpl::OnChangeLayout(_ControlOrientation orientation) +{ + GetCore().SetXmlBoundsExist(IsXmlBoundsExist()); + + return _ControlImpl::OnChangeLayout(orientation); +} + class _EditTimeMaker : public _UiBuilderControlMaker { diff --git a/src/ui/inc/FUiCtrl_EditDate.h b/src/ui/inc/FUiCtrl_EditDate.h index 20d9b47..7335be0 100644 --- a/src/ui/inc/FUiCtrl_EditDate.h +++ b/src/ui/inc/FUiCtrl_EditDate.h @@ -132,6 +132,7 @@ public: virtual void OnFontInfoRequested(unsigned long& style, float& size); virtual void OnSettingChanged(Tizen::Base::String& key); Tizen::Graphics::FloatRectangle GetParentWindowBounds(void) const; + void SetXmlBoundsExist(bool isXmlBoundsExist); private: _EditDate(void); @@ -151,11 +152,14 @@ private: _DateTimeChangeEvent* __pDateChangeEvent; _DateTimeBar* __pDateTimeBar; Tizen::Graphics::FloatRectangle __absoluteBounds; + Tizen::Graphics::FloatDimension __previousSize; Tizen::Base::String __title; Tizen::Ui::_AccessibilityElement* __pAccessibilityEditDateElement; Tizen::Ui::_AccessibilityElement* __pAccessibilityYearElement; Tizen::Ui::_AccessibilityElement* __pAccessibilityMonthElement; Tizen::Ui::_AccessibilityElement* __pAccessibilityDayElement; + bool __isCalledBoundsChanged; + bool __isXmlBoundsExist; }; // _EditDate diff --git a/src/ui/inc/FUiCtrl_EditDateImpl.h b/src/ui/inc/FUiCtrl_EditDateImpl.h index 838c1cd..45deb12 100644 --- a/src/ui/inc/FUiCtrl_EditDateImpl.h +++ b/src/ui/inc/FUiCtrl_EditDateImpl.h @@ -71,6 +71,8 @@ public: virtual void OnDateTimeChanged(const Tizen::Ui::_Control& source, int year, int month, int day, int hour, int minute); virtual void OnDateTimeChangeCanceled(const Tizen::Ui::_Control& source); + bool IsXmlBoundsExist(void); + virtual void OnChangeLayout(_ControlOrientation orientation); public: static _EditDateImpl* GetInstance(EditDate& editDate); diff --git a/src/ui/inc/FUiCtrl_EditTime.h b/src/ui/inc/FUiCtrl_EditTime.h index db8176a..65379b1 100644 --- a/src/ui/inc/FUiCtrl_EditTime.h +++ b/src/ui/inc/FUiCtrl_EditTime.h @@ -117,6 +117,7 @@ public: void OnFontInfoRequested(unsigned long& style, float& size); virtual void OnSettingChanged(Tizen::Base::String& key); Tizen::Graphics::FloatRectangle GetParentWindowBounds(void) const; + void SetXmlBoundsExist(bool isXmlBoundsExist); void CreateAccessibilityElement(void); void UpdateAccessibilityElement(void); @@ -145,11 +146,14 @@ private: _DateTimeChangeEvent* __pTimeChangeEvent; _DateTimeBar* __pDateTimeBar; Tizen::Graphics::FloatRectangle __absoluteBounds; + Tizen::Graphics::FloatDimension __previousSize; Tizen::Base::String __title; Tizen::Ui::_AccessibilityElement* __pAccessibilityEditTimeElement; Tizen::Ui::_AccessibilityElement* __pAccessibilityHourElement; Tizen::Ui::_AccessibilityElement* __pAccessibilityMinuteElement; Tizen::Ui::_AccessibilityElement* __pAccessibilityAmPmElement; + bool __isCalledBoundsChanged; + bool __isXmlBoundsExist; }; // _EditTime }}} // Tizen::Ui::Controls diff --git a/src/ui/inc/FUiCtrl_EditTimeImpl.h b/src/ui/inc/FUiCtrl_EditTimeImpl.h index ca2a8ba..b57b8fc 100644 --- a/src/ui/inc/FUiCtrl_EditTimeImpl.h +++ b/src/ui/inc/FUiCtrl_EditTimeImpl.h @@ -68,6 +68,8 @@ public: virtual void OnDateTimeChanged(const Tizen::Ui::_Control& source, int year, int month, int day, int hour, int minute); virtual void OnDateTimeChangeCanceled(const Tizen::Ui::_Control& source); + bool IsXmlBoundsExist(void); + virtual void OnChangeLayout(_ControlOrientation orientation); public: static _EditTimeImpl* GetInstance(EditTime& editTime); static const _EditTimeImpl* GetInstance(const EditTime& editTime); -- 2.7.4