Fix for N_SE-35474 in EDitDate & EditTime
authorSyed Khaja Moinuddin <moinuddin.s@samsung.com>
Tue, 23 Apr 2013 13:59:33 +0000 (22:59 +0900)
committerSyed Khaja Moinuddin <moinuddin.s@samsung.com>
Tue, 23 Apr 2013 14:13:55 +0000 (23:13 +0900)
Signed-off-by: Syed Khaja Moinuddin <moinuddin.s@samsung.com>
Change-Id: Ied4cc4aade96b957efe931e6e9cb49f085dd3b9d
Signed-off-by: Syed Khaja Moinuddin <moinuddin.s@samsung.com>
src/ui/controls/FUiCtrl_EditDate.cpp
src/ui/controls/FUiCtrl_EditDateImpl.cpp
src/ui/controls/FUiCtrl_EditTime.cpp
src/ui/controls/FUiCtrl_EditTimeImpl.cpp
src/ui/inc/FUiCtrl_EditDate.h
src/ui/inc/FUiCtrl_EditDateImpl.h
src/ui/inc/FUiCtrl_EditTime.h
src/ui/inc/FUiCtrl_EditTimeImpl.h

index 5d713cd..695c0d7 100644 (file)
@@ -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
index e03d288..41c75ff 100644 (file)
@@ -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
 {
index f374bcd..d9ff9ed 100644 (file)
@@ -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;
index d6bc7a6..c4bb6ff 100644 (file)
@@ -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
 {
index 20d9b47..7335be0 100644 (file)
@@ -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
 
index 838c1cd..45deb12 100644 (file)
@@ -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);
index db8176a..65379b1 100644 (file)
@@ -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
index ca2a8ba..b57b8fc 100644 (file)
@@ -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);