applied code (reverse handler)
authorChulheon <ch.jeong47@samsung.com>
Sat, 23 Mar 2013 08:51:03 +0000 (17:51 +0900)
committerChulheon <ch.jeong47@samsung.com>
Sat, 23 Mar 2013 08:51:27 +0000 (17:51 +0900)
Change-Id: I85040aacc41456acfdf1ce426923ad474937260a

res/common/usr/share/osp/bitmaps/480x800/copy&paste_Icon_left_press_reverse.png [new file with mode: 0644]
res/common/usr/share/osp/bitmaps/480x800/copy&paste_Icon_left_reverse.png [new file with mode: 0644]
res/common/usr/share/osp/bitmaps/480x800/copy&paste_Icon_right_press_reverse.png [new file with mode: 0644]
res/common/usr/share/osp/bitmaps/480x800/copy&paste_Icon_right_reverse.png [new file with mode: 0644]
res/common/usr/share/osp/bitmaps/720x1280/copy&paste_Icon_left_press_reverse.png [new file with mode: 0644]
res/common/usr/share/osp/bitmaps/720x1280/copy&paste_Icon_left_reverse.png [new file with mode: 0644]
res/common/usr/share/osp/bitmaps/720x1280/copy&paste_Icon_right_press_reverse.png [new file with mode: 0644]
res/common/usr/share/osp/bitmaps/720x1280/copy&paste_Icon_right_reverse.png [new file with mode: 0644]
src/ui/controls/FUiCtrl_EditCopyPasteManager.cpp
src/ui/controls/FUiCtrl_EditPresenter.cpp
src/ui/resource/FUi_ResourceEditConfig.cpp

diff --git a/res/common/usr/share/osp/bitmaps/480x800/copy&paste_Icon_left_press_reverse.png b/res/common/usr/share/osp/bitmaps/480x800/copy&paste_Icon_left_press_reverse.png
new file mode 100644 (file)
index 0000000..7e94e5f
Binary files /dev/null and b/res/common/usr/share/osp/bitmaps/480x800/copy&paste_Icon_left_press_reverse.png differ
diff --git a/res/common/usr/share/osp/bitmaps/480x800/copy&paste_Icon_left_reverse.png b/res/common/usr/share/osp/bitmaps/480x800/copy&paste_Icon_left_reverse.png
new file mode 100644 (file)
index 0000000..863c1f6
Binary files /dev/null and b/res/common/usr/share/osp/bitmaps/480x800/copy&paste_Icon_left_reverse.png differ
diff --git a/res/common/usr/share/osp/bitmaps/480x800/copy&paste_Icon_right_press_reverse.png b/res/common/usr/share/osp/bitmaps/480x800/copy&paste_Icon_right_press_reverse.png
new file mode 100644 (file)
index 0000000..ab6b886
Binary files /dev/null and b/res/common/usr/share/osp/bitmaps/480x800/copy&paste_Icon_right_press_reverse.png differ
diff --git a/res/common/usr/share/osp/bitmaps/480x800/copy&paste_Icon_right_reverse.png b/res/common/usr/share/osp/bitmaps/480x800/copy&paste_Icon_right_reverse.png
new file mode 100644 (file)
index 0000000..8e6673c
Binary files /dev/null and b/res/common/usr/share/osp/bitmaps/480x800/copy&paste_Icon_right_reverse.png differ
diff --git a/res/common/usr/share/osp/bitmaps/720x1280/copy&paste_Icon_left_press_reverse.png b/res/common/usr/share/osp/bitmaps/720x1280/copy&paste_Icon_left_press_reverse.png
new file mode 100644 (file)
index 0000000..7e94e5f
Binary files /dev/null and b/res/common/usr/share/osp/bitmaps/720x1280/copy&paste_Icon_left_press_reverse.png differ
diff --git a/res/common/usr/share/osp/bitmaps/720x1280/copy&paste_Icon_left_reverse.png b/res/common/usr/share/osp/bitmaps/720x1280/copy&paste_Icon_left_reverse.png
new file mode 100644 (file)
index 0000000..863c1f6
Binary files /dev/null and b/res/common/usr/share/osp/bitmaps/720x1280/copy&paste_Icon_left_reverse.png differ
diff --git a/res/common/usr/share/osp/bitmaps/720x1280/copy&paste_Icon_right_press_reverse.png b/res/common/usr/share/osp/bitmaps/720x1280/copy&paste_Icon_right_press_reverse.png
new file mode 100644 (file)
index 0000000..ab6b886
Binary files /dev/null and b/res/common/usr/share/osp/bitmaps/720x1280/copy&paste_Icon_right_press_reverse.png differ
diff --git a/res/common/usr/share/osp/bitmaps/720x1280/copy&paste_Icon_right_reverse.png b/res/common/usr/share/osp/bitmaps/720x1280/copy&paste_Icon_right_reverse.png
new file mode 100644 (file)
index 0000000..8e6673c
Binary files /dev/null and b/res/common/usr/share/osp/bitmaps/720x1280/copy&paste_Icon_right_reverse.png differ
index 5c90a91..9cf9fed 100755 (executable)
@@ -84,13 +84,21 @@ public:
 
 // Operations
 public:
+       enum HandlerDirection
+       {
+               HANDLER_DIRECTION_NONE = 0,
+               HANDLER_DIRECTION_REVERSE_1,//horizontal reverse
+               HANDLER_DIRECTION_REVERSE_2,//vertical reverse
+               HANDLER_DIRECTION_REVERSE_3,//horizontal vertical reverse
+       };
+
        static _EditCopyPasteHandler* CreateInstanceN(const Point& point, int handlerCursorPos, _EditCopyPasteManager* pCopyPasteManager, bool singleHandler, bool leftHandler = true);
        static _EditCopyPasteHandler* CreateInstanceN(const FloatPoint& point, int handlerCursorPos, _EditCopyPasteManager* pCopyPasteManager, bool singleHandler, bool leftHandler = true);
        int GetHandlerCursorPosition(void) const;
        void SetHandlerCursorPosition(int handlerCursorPos);
        void AdjustBounds(void);
        void CheckReverseStatus(void);
-       void ChangeHandlerBitmap(bool leftHandler, bool reverse);
+       void ChangeHandlerBitmap(void);
        Bitmap* GetHandlerBitmap(void) const;
 
 // virtual function
@@ -119,12 +127,12 @@ private:
        FloatPoint __touchPressedPoint;
        _EditCopyPasteManager* __pCopyPasteManager;
        bool __leftHandler;
-       bool __reverseLeftHandler;
-       bool __reverseRightHandler;
        bool __reverseCheck;
        int __handlerCursorPos;
        bool __isTouchPressed;
        FloatRectangle __windowBounds;
+       HandlerDirection __handlerDirection;
+       
 }; // _EditCopyPasteHandler
 
 Bitmap*
@@ -134,7 +142,7 @@ _EditCopyPasteHandler::GetHandlerBitmap(void) const
 }
 
 void
-_EditCopyPasteHandler::ChangeHandlerBitmap(bool leftHandler, bool reverse)
+_EditCopyPasteHandler::ChangeHandlerBitmap(void)
 {
        if (__pHandlerBitmap)
        {
@@ -146,15 +154,53 @@ _EditCopyPasteHandler::ChangeHandlerBitmap(bool leftHandler, bool reverse)
                delete __pHandlerPressedBitmap;
                __pHandlerPressedBitmap = null;
        }
-       if ( (leftHandler && reverse) || (!leftHandler && !reverse) )
+       if (__leftHandler)
        {
-               GET_BITMAP_CONFIG_N(EDIT::COPY_PASTE_ICON_RIGHT_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, __pHandlerBitmap);
-               GET_BITMAP_CONFIG_N(EDIT::COPY_PASTE_ICON_RIGHT_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, __pHandlerPressedBitmap);
+               switch(__handlerDirection)
+               {
+                       case HANDLER_DIRECTION_REVERSE_1:
+                               GET_BITMAP_CONFIG_N(EDIT::COPY_PASTE_ICON_RIGHT_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, __pHandlerBitmap);
+                               GET_BITMAP_CONFIG_N(EDIT::COPY_PASTE_ICON_RIGHT_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, __pHandlerPressedBitmap);
+                               break;
+                       case HANDLER_DIRECTION_REVERSE_2:
+                               GET_BITMAP_CONFIG_N(EDIT::COPY_PASTE_ICON_REVERSE_LEFT_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, __pHandlerBitmap);
+                               GET_BITMAP_CONFIG_N(EDIT::COPY_PASTE_ICON_REVERSE_LEFT_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, __pHandlerPressedBitmap);
+                               break;
+                       case HANDLER_DIRECTION_REVERSE_3:
+                               GET_BITMAP_CONFIG_N(EDIT::COPY_PASTE_ICON_REVERSE_RIGHT_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, __pHandlerBitmap);
+                               GET_BITMAP_CONFIG_N(EDIT::COPY_PASTE_ICON_REVERSE_RIGHT_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, __pHandlerPressedBitmap);
+                               break;
+                       case HANDLER_DIRECTION_NONE:
+                               //fall through
+                       default:
+                               GET_BITMAP_CONFIG_N(EDIT::COPY_PASTE_ICON_LEFT_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, __pHandlerBitmap);
+                               GET_BITMAP_CONFIG_N(EDIT::COPY_PASTE_ICON_LEFT_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, __pHandlerPressedBitmap);
+                               break;          
+               }
        }
        else
        {
-               GET_BITMAP_CONFIG_N(EDIT::COPY_PASTE_ICON_LEFT_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, __pHandlerBitmap);
-               GET_BITMAP_CONFIG_N(EDIT::COPY_PASTE_ICON_LEFT_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, __pHandlerPressedBitmap);
+               switch(__handlerDirection)
+               {
+                       case HANDLER_DIRECTION_REVERSE_1:
+                               GET_BITMAP_CONFIG_N(EDIT::COPY_PASTE_ICON_LEFT_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, __pHandlerBitmap);
+                               GET_BITMAP_CONFIG_N(EDIT::COPY_PASTE_ICON_LEFT_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, __pHandlerPressedBitmap);
+                               break;
+                       case HANDLER_DIRECTION_REVERSE_2:
+                               GET_BITMAP_CONFIG_N(EDIT::COPY_PASTE_ICON_REVERSE_RIGHT_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, __pHandlerBitmap);
+                               GET_BITMAP_CONFIG_N(EDIT::COPY_PASTE_ICON_REVERSE_RIGHT_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, __pHandlerPressedBitmap);
+                               break;
+                       case HANDLER_DIRECTION_REVERSE_3:
+                               GET_BITMAP_CONFIG_N(EDIT::COPY_PASTE_ICON_REVERSE_LEFT_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, __pHandlerBitmap);
+                               GET_BITMAP_CONFIG_N(EDIT::COPY_PASTE_ICON_REVERSE_LEFT_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, __pHandlerPressedBitmap);
+                               break;
+                       case HANDLER_DIRECTION_NONE:
+                               //fall through
+                       default:
+                               GET_BITMAP_CONFIG_N(EDIT::COPY_PASTE_ICON_RIGHT_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, __pHandlerBitmap);
+                               GET_BITMAP_CONFIG_N(EDIT::COPY_PASTE_ICON_RIGHT_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, __pHandlerPressedBitmap);
+                               break;          
+               }
        }
 }
 
@@ -165,12 +211,11 @@ _EditCopyPasteHandler::_EditCopyPasteHandler(const Point& point, int handlerCurs
        , __touchPressedPoint(0.0f, 0.0f)
        , __pCopyPasteManager(pCopyPasteManager)
        , __leftHandler(leftHandler)
-       , __reverseLeftHandler(false)
-        , __reverseRightHandler(false)
        , __reverseCheck(false)
        , __handlerCursorPos(handlerCursorPos)
        , __isTouchPressed(false)
        , __windowBounds(0.0f, 0.0f, 0.0f, 0.0f)
+       , __handlerDirection(HANDLER_DIRECTION_NONE)
 {
        AcquireHandle();
 
@@ -209,12 +254,11 @@ _EditCopyPasteHandler::_EditCopyPasteHandler(const FloatPoint& point, int handle
        , __touchPressedPoint(0.0f, 0.0f)
        , __pCopyPasteManager(pCopyPasteManager)
        , __leftHandler(leftHandler)
-       , __reverseLeftHandler(false)
-       , __reverseRightHandler(false)
        , __reverseCheck(false)
        , __handlerCursorPos(handlerCursorPos)
        , __isTouchPressed(false)
        , __windowBounds(0.0f, 0.0f, 0.0f, 0.0f)
+       , __handlerDirection(HANDLER_DIRECTION_NONE)
 {
        AcquireHandle();
 
@@ -369,7 +413,7 @@ _EditCopyPasteHandler::AdjustBounds(void)
        int previousCursorPos;
        FloatRectangle cursorRect;
        FloatRectangle rect = GetBoundsF();
-       FloatRectangle checkBounds(0.0f, 0.0f, 0.0f, 0.0f);
+       FloatPoint checkPoint(0.0f, 0.0f);
 
        previousCursorPos = __pCopyPasteManager->GetCursorPosition();
        __pCopyPasteManager->SetCursorPosition(__handlerCursorPos);
@@ -379,24 +423,42 @@ _EditCopyPasteHandler::AdjustBounds(void)
        rect.x = cursorRect.x;
        rect.y = cursorRect.y + cursorRect.height;
 
-       if (__leftHandler && !__reverseLeftHandler)
-       {
-               rect.x = rect.x - __pHandlerBitmap->GetWidthF();
-       }
+       checkPoint = FloatPoint(rect.x, rect.y);
 
-       if (__reverseRightHandler)
+       if (__leftHandler)
        {
-               rect.x = rect.x - __pHandlerBitmap->GetWidthF();
+               if (__handlerDirection == HANDLER_DIRECTION_NONE)
+               {
+                       rect.x = rect.x - __pHandlerBitmap->GetWidthF();
+               }
+               else if (__handlerDirection == HANDLER_DIRECTION_REVERSE_2)
+               {
+                       rect.x = rect.x - __pHandlerBitmap->GetWidthF();
+                       rect.y -= rect.height;
+               }
+               else if (__handlerDirection == HANDLER_DIRECTION_REVERSE_3)
+               {
+                       rect.y -= rect.height;                  
+               }
        }
-
-       checkBounds = rect;
-
-       if (__leftHandler)
+       else
        {
-               checkBounds.x += checkBounds.width;
+               if (__handlerDirection == HANDLER_DIRECTION_REVERSE_1)
+               {
+                       rect.x = rect.x - __pHandlerBitmap->GetWidthF();
+               }
+               else if (__handlerDirection == HANDLER_DIRECTION_REVERSE_2)
+               {
+                       rect.y -= rect.height;
+               }
+               else if (__handlerDirection == HANDLER_DIRECTION_REVERSE_3)
+               {
+                       rect.x = rect.x - __pHandlerBitmap->GetWidthF();
+                       rect.y -= rect.height;                  
+               }       
        }
 
-       bool visibleState = __pCopyPasteManager->CheckHandleBounds(Point(checkBounds.x, checkBounds.y));
+       bool visibleState = __pCopyPasteManager->CheckHandleBounds(checkPoint);
        if (visibleState && !GetVisibleState())
        {
                SetVisibleState(true);
@@ -407,6 +469,7 @@ _EditCopyPasteHandler::AdjustBounds(void)
                SetVisibleState(false);
                Close();
        }
+
        SetBounds(rect);
        return;
 }
@@ -470,60 +533,221 @@ _EditCopyPasteHandler::OnTouchPressed(const _Control& source, const _TouchInfo&
 void
 _EditCopyPasteHandler::CheckReverseStatus(void)
 {
-       if (__leftHandler)
+       FloatDimension screenSize;
+       _ControlManager* pControlManager = _ControlManager::GetInstance();
+       _ControlOrientation orientation = GetOrientation();
+       FloatRectangle rect = GetBoundsF();
+       
+       if (orientation == _CONTROL_ORIENTATION_PORTRAIT)
+       {
+               screenSize = pControlManager->GetScreenSizeF();
+       }
+       else
        {
-               FloatRectangle rect = GetBoundsF();
+               screenSize.width = pControlManager->GetScreenSizeF().height;
+               screenSize.height = pControlManager->GetScreenSizeF().width;
+       }
 
-               if (!__reverseLeftHandler && rect.x < 0)
+       if (__leftHandler)
+       {
+               if (((__handlerDirection == HANDLER_DIRECTION_NONE) || (__handlerDirection == HANDLER_DIRECTION_REVERSE_2)) && rect.x < 0.0f)
                {
-                       ChangeHandlerBitmap(true, true);
+                       if ((__handlerDirection == HANDLER_DIRECTION_NONE) && ((rect.y + rect.height) > screenSize.height))
+                       {
+                               __handlerDirection = HANDLER_DIRECTION_REVERSE_3;
+                               rect.y -= rect.height;
+                       }
+                       else if ((__handlerDirection == HANDLER_DIRECTION_NONE) && ((rect.y + rect.height) <= screenSize.height))
+                       {
+                               __handlerDirection = HANDLER_DIRECTION_REVERSE_1;
+                       }
+                       else if ((__handlerDirection == HANDLER_DIRECTION_REVERSE_2) && ((rect.y + 2*rect.height) > screenSize.height))
+                       {
+                               __handlerDirection = HANDLER_DIRECTION_REVERSE_3;
+                       }
+                       else if ((__handlerDirection == HANDLER_DIRECTION_REVERSE_2) && ((rect.y + 2*rect.height) <= screenSize.height))
+                       {
+                               __handlerDirection = HANDLER_DIRECTION_REVERSE_1;
+                               rect.y += rect.height;
+                       }
+                       ChangeHandlerBitmap();
                        rect.x += rect.width;
-                       __reverseLeftHandler = true;
                        __reverseCheck = true;
-                       SetBounds(rect);
                }
-               else if (__reverseLeftHandler && (rect.x >= rect.width))
+               else if (((__handlerDirection == HANDLER_DIRECTION_REVERSE_1) || (__handlerDirection == HANDLER_DIRECTION_REVERSE_3)) && rect.x >= rect.width)                  
                {
-                       ChangeHandlerBitmap(true, false);
+                       if ((__handlerDirection == HANDLER_DIRECTION_REVERSE_1) && ((rect.y + rect.height) > screenSize.height))
+                       {
+                               __handlerDirection = HANDLER_DIRECTION_REVERSE_2;
+                               rect.y -= rect.height;
+                       }
+                       else if ((__handlerDirection == HANDLER_DIRECTION_REVERSE_1) && ((rect.y + rect.height) <= screenSize.height))
+                       {
+                               __handlerDirection = HANDLER_DIRECTION_NONE;                            
+                       }
+                       else if ((__handlerDirection == HANDLER_DIRECTION_REVERSE_3) && ((rect.y + 2*rect.height) > screenSize.height))
+                       {
+                               __handlerDirection = HANDLER_DIRECTION_REVERSE_2;
+                       }
+                       else if ((__handlerDirection == HANDLER_DIRECTION_REVERSE_3) && ((rect.y + 2*rect.height) <= screenSize.height))
+                       {
+                               __handlerDirection = HANDLER_DIRECTION_NONE;
+                               rect.y += rect.height;
+                       }
+                       ChangeHandlerBitmap();
                        rect.x -= rect.width;
-                       __reverseLeftHandler = false;
                        __reverseCheck = true;
-                       SetBounds(rect);
+               }
+               else if (((__handlerDirection == HANDLER_DIRECTION_NONE) || (__handlerDirection == HANDLER_DIRECTION_REVERSE_1)) && ((rect.y + rect.height) > screenSize.height))
+               {
+                       if ((__handlerDirection == HANDLER_DIRECTION_NONE) && rect.x < 0.0f)
+                       {
+                               __handlerDirection = HANDLER_DIRECTION_REVERSE_3;
+                               rect.x += rect.width;
+                       }
+                       else if ((__handlerDirection == HANDLER_DIRECTION_NONE) && rect.x >= rect.width)
+                       {
+                               __handlerDirection = HANDLER_DIRECTION_REVERSE_2;                               
+                       }
+                       else if ((__handlerDirection == HANDLER_DIRECTION_REVERSE_1) && ((rect.x - rect.width) >= 0.0f))
+                       {
+                               __handlerDirection = HANDLER_DIRECTION_REVERSE_2;
+                               rect.x -= rect.width;
+                       }
+                       else if ((__handlerDirection == HANDLER_DIRECTION_REVERSE_1) && ((rect.x - rect.width) < 0.0f))
+                       {
+                               __handlerDirection = HANDLER_DIRECTION_REVERSE_3;
+                       }
+                       rect.y -= rect.height;
+                       ChangeHandlerBitmap();
+                       __reverseCheck = true;
+               }
+               else if (((__handlerDirection == HANDLER_DIRECTION_REVERSE_2) || (__handlerDirection == HANDLER_DIRECTION_REVERSE_3)) && ((rect.y + 2*rect.height) <= screenSize.height))
+               {
+                       if ((__handlerDirection == HANDLER_DIRECTION_REVERSE_2) && rect.x < 0.0f)
+                       {
+                               __handlerDirection = HANDLER_DIRECTION_REVERSE_1;
+                               rect.x += rect.width;
+                       }
+                       else if ((__handlerDirection == HANDLER_DIRECTION_REVERSE_2) && rect.x >= rect.width)
+                       {
+                               __handlerDirection = HANDLER_DIRECTION_NONE;                            
+                       }
+                       else if ((__handlerDirection == HANDLER_DIRECTION_REVERSE_3) && ((rect.x - rect.width) >= 0.0f))
+                       {
+                               __handlerDirection = HANDLER_DIRECTION_NONE;
+                               rect.x -= rect.width;
+                       }
+                       else if ((__handlerDirection == HANDLER_DIRECTION_REVERSE_3) && ((rect.x - rect.width) < 0.0f))
+                       {
+                               __handlerDirection = HANDLER_DIRECTION_REVERSE_1;
+                       }
+                       rect.y += rect.height;
+                       ChangeHandlerBitmap();
+                       __reverseCheck = true;
                }
        }
        else
        {
-               FloatRectangle rect = GetBoundsF();
-               FloatDimension screenSize;
-               _ControlManager* pControlManager = _ControlManager::GetInstance();
-               _ControlOrientation orientation = GetOrientation();
-
-               if (orientation == _CONTROL_ORIENTATION_PORTRAIT)
+               if (((__handlerDirection == HANDLER_DIRECTION_NONE) || (__handlerDirection == HANDLER_DIRECTION_REVERSE_2)) && (rect.x + rect.width) > screenSize.width)
                {
-                       screenSize.width = pControlManager->GetScreenSize().width;
+                       if ((__handlerDirection == HANDLER_DIRECTION_NONE) && ((rect.y + rect.height) > screenSize.height))
+                       {
+                               __handlerDirection = HANDLER_DIRECTION_REVERSE_3;
+                               rect.y -= rect.height;
+                       }
+                       else if ((__handlerDirection == HANDLER_DIRECTION_NONE) && ((rect.y + rect.height) <= screenSize.height))
+                       {
+                               __handlerDirection = HANDLER_DIRECTION_REVERSE_1;
+                       }
+                       else if ((__handlerDirection == HANDLER_DIRECTION_REVERSE_2) && ((rect.y + 2*rect.height) > screenSize.height))
+                       {
+                               __handlerDirection = HANDLER_DIRECTION_REVERSE_3;
+                       }
+                       else if ((__handlerDirection == HANDLER_DIRECTION_REVERSE_2) && ((rect.y + 2*rect.height) <= screenSize.height))
+                       {
+                               __handlerDirection = HANDLER_DIRECTION_REVERSE_1;
+                               rect.y += rect.height;
+                       }
+                       ChangeHandlerBitmap();
+                       rect.x -= rect.width;
+                       __reverseCheck = true;
                }
-               else
+               else if (((__handlerDirection == HANDLER_DIRECTION_REVERSE_1) || (__handlerDirection == HANDLER_DIRECTION_REVERSE_3)) && (rect.x + 2*rect.width) <= screenSize.width)
                {
-                       screenSize.width = pControlManager->GetScreenSize().height;
+                       if ((__handlerDirection == HANDLER_DIRECTION_REVERSE_1) && ((rect.y + rect.height) > screenSize.height))
+                       {
+                               __handlerDirection = HANDLER_DIRECTION_REVERSE_2;
+                               rect.y -= rect.height;
+                       }
+                       else if ((__handlerDirection == HANDLER_DIRECTION_REVERSE_1) && ((rect.y + rect.height) <= screenSize.height))
+                       {
+                               __handlerDirection = HANDLER_DIRECTION_NONE;                            
+                       }
+                       else if ((__handlerDirection == HANDLER_DIRECTION_REVERSE_3) && ((rect.y + 2*rect.height) > screenSize.height))
+                       {
+                               __handlerDirection = HANDLER_DIRECTION_REVERSE_2;
+                       }
+                       else if ((__handlerDirection == HANDLER_DIRECTION_REVERSE_3) && ((rect.y + 2*rect.height) <= screenSize.height))
+                       {
+                               __handlerDirection = HANDLER_DIRECTION_NONE;
+                               rect.y += rect.height;
+                       }
+                       ChangeHandlerBitmap();
+                       rect.x += rect.width;
+                       __reverseCheck = true;
                }
-
-               if (!__reverseRightHandler && ((rect.x + rect.width) > screenSize.width))
+               else if (((__handlerDirection == HANDLER_DIRECTION_NONE) || (__handlerDirection == HANDLER_DIRECTION_REVERSE_1)) && ((rect.y + rect.height) > screenSize.height))
                {
-                       ChangeHandlerBitmap(false, true);
-                       rect.x -= rect.width;
-                       __reverseRightHandler = true;
+                       if ((__handlerDirection == HANDLER_DIRECTION_NONE) && (rect.x + rect.width) > screenSize.width)
+                       {
+                               __handlerDirection = HANDLER_DIRECTION_REVERSE_3;
+                               rect.x -= rect.width;
+                       }
+                       else if ((__handlerDirection == HANDLER_DIRECTION_NONE) && (rect.x + rect.width) <= screenSize.width)
+                       {
+                               __handlerDirection = HANDLER_DIRECTION_REVERSE_2;                               
+                       }
+                       else if ((__handlerDirection == HANDLER_DIRECTION_REVERSE_1) && (rect.x + 2*rect.width) <= screenSize.width)
+                       {
+                               __handlerDirection = HANDLER_DIRECTION_REVERSE_2;
+                               rect.x += rect.width;
+                       }
+                       else if ((__handlerDirection == HANDLER_DIRECTION_REVERSE_1) && (rect.x + 2*rect.width) > screenSize.width)
+                       {
+                               __handlerDirection = HANDLER_DIRECTION_REVERSE_3;
+                       }
+                       rect.y -= rect.height;
+                       ChangeHandlerBitmap();
                        __reverseCheck = true;
-                       SetBounds(rect);
                }
-               else if (__reverseRightHandler && ((rect.x + rect.width + rect.width) <= screenSize.width))
+               else if (((__handlerDirection == HANDLER_DIRECTION_REVERSE_2) || (__handlerDirection == HANDLER_DIRECTION_REVERSE_3)) && ((rect.y + 2*rect.height) <= screenSize.height))
                {
-                       ChangeHandlerBitmap(false, false);
-                       rect.x += rect.width;
-                       __reverseRightHandler = false;
+                       if ((__handlerDirection == HANDLER_DIRECTION_REVERSE_2) && ((rect.x + rect.width) <= screenSize.width))
+                       {
+                               __handlerDirection = HANDLER_DIRECTION_NONE;
+                       }
+                       else if ((__handlerDirection == HANDLER_DIRECTION_REVERSE_2) && ((rect.x + rect.width) > screenSize.width))
+                       {
+                               __handlerDirection = HANDLER_DIRECTION_REVERSE_1;
+                               rect.x -= rect.width;
+                       }
+                       else if ((__handlerDirection == HANDLER_DIRECTION_REVERSE_3) && ((rect.x + 2*rect.width) <= screenSize.width))
+                       {
+                               __handlerDirection = HANDLER_DIRECTION_NONE;
+                               rect.x += rect.width;
+                       }
+                       else if ((__handlerDirection == HANDLER_DIRECTION_REVERSE_3) && ((rect.x + 2*rect.width) > screenSize.width))
+                       {
+                               __handlerDirection = HANDLER_DIRECTION_REVERSE_1;
+                       }
+                       rect.y += rect.height;
+                       ChangeHandlerBitmap();
                        __reverseCheck = true;
-                       SetBounds(rect);
-               }       
+               }
        }
+
+       SetBounds(rect);
 }
 
 bool
@@ -548,6 +772,7 @@ _EditCopyPasteHandler::OnTouchMoved(const _Control& source, const _TouchInfo& to
        FloatRectangle rect = GetBoundsF();
        FloatPoint point = touchinfo.GetCurrentPosition();
        FloatPoint touchPoint;
+       FloatPoint checkPoint;
 
        _Edit* pEdit = __pCopyPasteManager->GetEdit();
        SysTryReturn(NID_UI_CTRL, pEdit, false, E_INVALID_STATE, "[E_INVALID_STATE] pEdit is null.\n");
@@ -566,9 +791,12 @@ _EditCopyPasteHandler::OnTouchMoved(const _Control& source, const _TouchInfo& to
        absCursorRect = __pCopyPasteManager->GetCursorBoundsF(true);
        touchPoint.x = cursorRect.x + (point.x - __touchPressedPoint.x);
        touchPoint.y = cursorRect.y + cursorRect.height/2.0f + (point.y - __touchPressedPoint.y);
+       checkPoint.x = absCursorRect.x + (point.x - __touchPressedPoint.x);
+       checkPoint.y = absCursorRect.y + absCursorRect.height/2.0f + (point.y - __touchPressedPoint.y); 
        cursorPos = __pCopyPasteManager->GetCursorPositionAt(touchPoint);
 
-       if (cursorPos == -1 || (!__pCopyPasteManager->CheckHandleBounds(FloatPoint(absCursorRect.x, absCursorRect.y + absCursorRect.height))))
+       //if (cursorPos == -1 || (!__pCopyPasteManager->CheckHandleBounds(FloatPoint(absCursorRect.x, absCursorRect.y + absCursorRect.height))))
+       if (cursorPos == -1 || (!__pCopyPasteManager->CheckHandleBounds(FloatPoint(checkPoint.x, checkPoint.y))))
        {
                TextObject* pTextObject = pEditPresenter->GetTextObject();
                int curCursorLine = pTextObject->GetLineIndexAtTextIndex(__handlerCursorPos);
@@ -1528,6 +1756,11 @@ _EditCopyPasteManager::Show(void)
        if (__pHandle[HANDLER_TYPE_LEFT] && __pHandle[HANDLER_TYPE_RIGHT])
        {
                AdjustBounds();
+               __pHandle[HANDLER_TYPE_LEFT]->CheckReverseStatus();
+               __pHandle[HANDLER_TYPE_RIGHT]->CheckReverseStatus();
+               __pHandle[HANDLER_TYPE_LEFT]->Invalidate();
+               __pHandle[HANDLER_TYPE_RIGHT]->Invalidate();
+               __pEdit->Invalidate();
        }
 
        if (__pCopyPastePopup)
@@ -1927,6 +2160,7 @@ _EditCopyPasteManager::MoveHandler(HandlerMoveType moveType)
                                __pHandle[HANDLER_TYPE_RIGHT]->SetHandlerCursorPosition(--rightHandlerPosition);
                                RefreshBlock();
                                __pHandle[HANDLER_TYPE_RIGHT]->CheckReverseStatus();
+                               __pHandle[HANDLER_TYPE_RIGHT]->Invalidate();
                        }
                        else
                        {
@@ -1964,6 +2198,7 @@ _EditCopyPasteManager::MoveHandler(HandlerMoveType moveType)
                 __pHandle[HANDLER_TYPE_RIGHT]->SetHandlerCursorPosition(newCursorPosition);
                                RefreshBlock();
                                __pHandle[HANDLER_TYPE_RIGHT]->CheckReverseStatus();
+                               __pHandle[HANDLER_TYPE_RIGHT]->Invalidate();
                        }
                        else
                        {
@@ -2003,6 +2238,7 @@ _EditCopyPasteManager::MoveHandler(HandlerMoveType moveType)
                 __pHandle[HANDLER_TYPE_RIGHT]->SetHandlerCursorPosition(newCursorPosition);
                                RefreshBlock();
                                __pHandle[HANDLER_TYPE_RIGHT]->CheckReverseStatus();
+                               __pHandle[HANDLER_TYPE_RIGHT]->Invalidate();
                        }
                        else
                        {
@@ -2015,6 +2251,7 @@ _EditCopyPasteManager::MoveHandler(HandlerMoveType moveType)
                                __pHandle[HANDLER_TYPE_RIGHT]->SetHandlerCursorPosition(++rightHandlerPosition);
                                RefreshBlock();
                                __pHandle[HANDLER_TYPE_RIGHT]->CheckReverseStatus();
+                               __pHandle[HANDLER_TYPE_RIGHT]->Invalidate();
                        }
                        else
                        {
index 884cf00..0122734 100755 (executable)
@@ -254,7 +254,6 @@ _EditPresenter::OnInputConnectionPanelShowStateChanged(InputConnection& source,
                        if (__isCopyPasteManagerExist)
                        {
                                __pCopyPasteManager->CreateCopyPastePopup();
-                               __pCopyPasteManager->AdjustBounds();
                                __pCopyPasteManager->Show();
                        }
                }
@@ -1961,17 +1960,6 @@ _EditPresenter::Draw(Canvas& canvas)
        r = canvas.Clear();
        SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
 
-       if (__rotated) // Command button should be relocated after rotation in case of no keypad.
-       {
-               if (__isCopyPasteManagerExist)
-               {
-                       __pCopyPasteManager->CreateCopyPastePopup();
-                       __pCopyPasteManager->AdjustBounds();
-                       __pCopyPasteManager->Show();
-               }
-               __rotated = false;
-       }
-
        DrawBackground(canvas);
 
        if (__pTextVisualElement)
@@ -1988,6 +1976,17 @@ _EditPresenter::Draw(Canvas& canvas)
                }
        }
 
+       if (__rotated) // Command button should be relocated after rotation in case of no keypad.
+       {
+               if (__isCopyPasteManagerExist)
+               {
+                       __pCopyPasteManager->CreateCopyPastePopup();
+                       __pCopyPasteManager->CreateHandle();
+                       __pCopyPasteManager->Show();
+               }
+               __rotated = false;
+       }
+
        InitializeCursor();
 
        // Set scroll bar
@@ -2823,7 +2822,6 @@ _EditPresenter::OnTouchReleased(const _Control& source, const _TouchInfo& touchI
                                __pEdit->SetFocused();
                        }
                        __pCopyPasteManager->CreateCopyPastePopup();
-                       __pCopyPasteManager->AdjustBounds();
                        __pCopyPasteManager->Show();
                }
                __isCopyPastePopupMoving = false;
@@ -3023,7 +3021,6 @@ _EditPresenter::OnTouchMoved(const _Control& source, const _TouchInfo& touchInfo
 
        if (__isCopyPasteManagerExist)
        {
-               __pCopyPasteManager->AdjustBounds();
                __pCopyPasteManager->Show();
                __isCopyPastePopupMoving = true;
        }
@@ -6160,7 +6157,7 @@ _EditPresenter::ChangeLayout(_ControlOrientation orientation)
 
        if (__pCopyPasteManager)
        {
-               __pCopyPasteManager->ReleaseCopyPastePopup();
+               __pCopyPasteManager->Release();
        }
 
        __rotated = true;
index 0e0e333..2425599 100644 (file)
@@ -51,6 +51,10 @@ START_UI_CONFIG(EDIT);
        ADD_IMAGE_CONFIG(COPY_PASTE_ICON_LEFT_PRESSED, #copy&paste_Icon_left_press.png);
        ADD_IMAGE_CONFIG(COPY_PASTE_ICON_RIGHT_NORMAL, #copy&paste_Icon_right.png);
        ADD_IMAGE_CONFIG(COPY_PASTE_ICON_RIGHT_PRESSED, #copy&paste_Icon_right_press.png);
+       ADD_IMAGE_CONFIG(COPY_PASTE_ICON_REVERSE_LEFT_NORMAL, #copy&paste_Icon_left_reverse.png);
+       ADD_IMAGE_CONFIG(COPY_PASTE_ICON_REVERSE_LEFT_PRESSED, #copy&paste_Icon_left_press_reverse.png);
+       ADD_IMAGE_CONFIG(COPY_PASTE_ICON_REVERSE_RIGHT_NORMAL, #copy&paste_Icon_right_reverse.png);
+       ADD_IMAGE_CONFIG(COPY_PASTE_ICON_REVERSE_RIGHT_PRESSED, #copy&paste_Icon_right_press_reverse.png);
        ADD_IMAGE_CONFIG(COPY_PASTE_SEARCH_ICON, #copy&paste_icon_search.png);
        ADD_IMAGE_CONFIG(BG_ROUND_NORMAL, #00_edit_field_round_bg.#.png);
        ADD_IMAGE_CONFIG(BG_ROUND_EFFECT, #00_edit_field_line_round_bg_01.#.png);