Fixed Nabi Issues 49466,55718,55225,52332
[apps/osp/Internet.git] / src / IntMainForm.cpp
index f134e21..818b5c9 100644 (file)
@@ -201,6 +201,7 @@ MainForm::MainForm(void)
        __pBlankPanel = null;
        __pArticleReaderLabel = null;
        __webControlHeight = 0;
+       __webControlHeightF = 0;
        __prevAddressBarMode = ADDRESSBAR_MODE_INVALID;
        __curAddressBarMode = ADDRESSBAR_MODE_INVALID;
        __pMostVisitedSites = null;
@@ -458,6 +459,7 @@ MainForm::InitWebControl()
        const int Y_WEBCONTROL_POSITION = 0;
 
        __webControlHeight = GetHeight() - __pFooterPanel->GetHeight();
+       __webControlHeightF = GetHeightF() - __pFooterPanel->GetHeightF();
 
        if (__pMostVisitedListView)
        {
@@ -495,6 +497,7 @@ MainForm::InitWebControl()
                        return r;
                }
                __webControlPosition = __pWebViewer->GetPosition();
+               __webControlPositionF = __pWebViewer->GetPositionF();
                r = __pWebViewer->SetSetting(SettingPresentationModel::GetInstance()->GetWebSettings());
                if (IsFailed(r))
                {
@@ -563,6 +566,7 @@ MainForm::InitFooter(void)
        {
                return E_FAILURE;
        }
+//     __pFooterPanel->SetBackgroundColor(Color(255,0,0));
        //__pFooterPanel->SetBackgroundColor(CUSTOM_COLOR_TRANSPARENT);
        Bitmap *pBitmap = CommonUtil::GetNinepatchedBitmapN(IDB_SEARCH_INPUT_FIELD_BG, __pFooterLabel->GetWidth(), __pFooterLabel->GetHeight());
        if (pBitmap != null)
@@ -983,7 +987,11 @@ MainForm::InitSelectTextContextMenuF(FloatPoint p, bool pasteOption, bool onlyPa
 //             __pWebViewer->GetBlockRange(p,q);
        if(p.y < 150)
        {
-               p.y = p.y + 50;
+               p.y = p.y + 100;
+               if(GetOrientationStatus() == ORIENTATION_STATUS_LANDSCAPE || GetOrientationStatus() == ORIENTATION_STATUS_LANDSCAPE_REVERSE )
+               {
+                       p.y = p.y - 50;
+               }
                direction = CONTEXT_MENU_ANCHOR_DIRECTION_DOWNWARD;
        }
        else if(__pWebViewer != null && (p.y > (__pWebViewer->GetHeight() + __pWebViewer->GetY())))
@@ -1027,7 +1035,7 @@ MainForm::InitSelectTextContextMenuF(FloatPoint p, bool pasteOption, bool onlyPa
                        }
                }
        }
-       if(clipboardAvailable == false && onlyPasteOption == true)
+       if(clipboardAvailable == false && (onlyPasteOption == true ||  __pHitElementResult->GetAttributeValue("type").Equals(L"password",false) == true))
        {
                return E_FAILURE;
        }
@@ -1035,11 +1043,7 @@ MainForm::InitSelectTextContextMenuF(FloatPoint p, bool pasteOption, bool onlyPa
        r = __pImageMenu->Construct(p, CONTEXT_MENU_STYLE_GRID, direction);
        TryCatch(!IsFailed(r),, "Context image menu creation failed with%s",GetErrorMessage(r));
 
-
-
-
-
-       if(onlyPasteOption == false)
+       if(onlyPasteOption == false && __pHitElementResult->GetAttributeValue("type").Equals(L"password",false) == false)
        {
                r = __pImageMenu->AddItem(CommonUtil::GetString(L"IDS_COM_OPT_COPY"),IDA_COPY_TEXT_CLICKED);
        }
@@ -1047,7 +1051,7 @@ MainForm::InitSelectTextContextMenuF(FloatPoint p, bool pasteOption, bool onlyPa
        {
                r = __pImageMenu->AddItem(CommonUtil::GetString(L"IDS_COM_BODY_PASTE"),IDA_PASTE_TEXT_CLICKED);
        }
-       if(onlyPasteOption == false)
+       if(onlyPasteOption == false && __pHitElementResult->GetAttributeValue("type").Equals(L"password",false) == false)
        {
                r = __pImageMenu->AddItem(CommonUtil::GetString(L"IDS_BR_OPT_FIND_ON_PAGE_ABB"),IDA_FIND_TEXT__CLICKED);
                r = __pImageMenu->AddItem(CommonUtil::GetString(L"IDS_BR_OPT_SHARE"),IDA_SHARE_TEXT_CLICKED);
@@ -2403,7 +2407,9 @@ MainForm::OnActionPerformed(const Tizen::Ui::Control& source, int actionId)
                if (__pAddressbar != null && __pWebViewer != NULL)
                {
                        __webControlPosition.y = __pAddressbar->GetHeight() - 12;
+                       __webControlPositionF.y = __pAddressbar->GetHeightF() - 12.0f;
                        __webControlHeight = GetClientAreaBounds().height - __pFooterPanel->GetHeight() - ( /*__pAddressbar->GetY() +*/ __pAddressbar->GetHeight() - 12);
+                       __webControlHeightF = GetClientAreaBoundsF().height - __pFooterPanel->GetHeightF() - ( /*__pAddressbar->GetY() +*/ __pAddressbar->GetHeightF() - 12.0f);
 
                        if (__pFooterPanel->GetShowState() == false)
                                __pWebViewer->SetBounds(Rectangle(0,__webControlPosition.y,GetClientAreaBounds().width, GetClientAreaBounds().height - ( /*__pAddressbar->GetY() +*/ __pAddressbar->GetHeight() - 12)));
@@ -2519,8 +2525,8 @@ MainForm::OnActionPerformed(const Tizen::Ui::Control& source, int actionId)
                        String* pNameCount = __pWebViewer->EvaluateJavascriptN(str);
 
                        str.Clear();
-                       str = L"document.getElementsByName('";
-                       str.Append(nameElement);
+                       str = L"document.getElementsByClassName('";
+                       str.Append(classElement);
                        str.Append("').length");
                        String* pClassCount = __pWebViewer->EvaluateJavascriptN(str);
 
@@ -2537,10 +2543,10 @@ MainForm::OnActionPerformed(const Tizen::Ui::Control& source, int actionId)
                        }
                        else if(idElement.GetLength() != 0)
                        {
-                               script = L"function insertAtCursor(myField, myValue) {  if (document.selection) {   document.getElementById(myField).focus();   sel = document.selection.createRange();   sel.text = myValue;  }   else if (document.getElementById(myField).selectionStart || document.getElementById(myField).selectionStart == '0'){   var startPos = document.getElementById(myField).selectionStart;   var endPos = document.getElementById(myField).selectionEnd;   document.getElementById(myField).value = document.getElementById(myField).value.substring(0, startPos)+ myValue + document.getElementById(myField).value.substring(endPos, document.getElementById(myField).value.length);   } else {    document.getElementById(myField).value += myValue;   }  } ";
-                               script.Append("insertAtCursor('");
-                               script.Append(idElement);
-                               script.Append("',");
+                               script = L"function insertAtCursor(myField, myValue) {  if (document.selection) {   myField.focus();   sel = document.selection.createRange();   sel.text = myValue;  }   else if (myField.selectionStart || myField.selectionStart == '0'){   var startPos = myField.selectionStart;   var endPos = myField.selectionEnd;   myField.value = myField.value.substring(0, startPos)+ myValue + myField.value.substring(endPos, myField.value.length);   } else {    myField.value += myValue;   }  } ";
+                               script.Append("insertAtCursor(");
+                               script.Append(L"document.activeElement");
+                               script.Append(",");
                                script.Append("\"");
                                script.Append(*pString);
                                script.Append("\");");
@@ -2837,7 +2843,8 @@ MainForm::OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId,
        InitFooter();
        InitAddressbar();
 
-       __pFooterPanel->SetBounds(0, GetClientAreaBounds().height - __pFooterPanel->GetHeight(), GetClientAreaBounds().width, __pFooterPanel->GetHeight());
+       FloatRectangle footerPanelBounds = FloatRectangle(0.0f, (GetClientAreaBoundsF().height) - __pFooterPanel->GetHeightF(), GetClientAreaBoundsF().width, __pFooterPanel->GetHeightF());
+       __pFooterPanel->SetBounds(CoordinateSystem::AlignToDevice(footerPanelBounds));
 
        // hiding the address bar
        //      __pAddressbar->SetBounds(__pAddressbar->GetX(), __pAddressbar->GetY() - __pAddressbar->GetHeight(), __pAddressbar->GetWidth(), __pAddressbar->GetHeight());
@@ -2887,6 +2894,10 @@ MainForm::OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId,
                }
        }
 
+       if(__pMostVisitedListView && __pMostVisitedListView->GetShowState() == true)
+       {
+               __pMostVisitedListView->UpdateList();
+       }
        if (__pAddressbar != null && pArgs != null && (previousSceneId == IDSCN_BOOKMARK_VIEW || previousSceneId == IDSCN_HISTORY_LIST))
        {
                String* pBookmarkUrl = dynamic_cast< String* >(pArgs->GetAt(0));
@@ -3527,7 +3538,8 @@ MainForm::OnFocusGained(const Tizen::Ui::Control& source)
                __pFindWordNext->SetEnabled(false);
                __pFindWordPrev->SetEnabled(false);
 
-               __pWebViewer->SearchTextAllAsync(L"",true);
+               if(__pWebViewer)
+                       __pWebViewer->SearchTextAllAsync(L"",true);
                __pFindWordControl->SetShowState(false);
        }
        RelayoutControls(false);
@@ -3750,6 +3762,7 @@ MainForm::OnAddressBarModeChanged(/*const Addressbar& addBar*/)
                if (__pAddressbar != null)
                {
                        __webControlPosition.y = __pAddressbar->GetHeight() - 12;
+                       __webControlPositionF.y = __pAddressbar->GetHeightF() - 12.0f;
                        __pAddressbar->SetBounds(Rectangle(0,0,GetClientAreaBounds().width,__pAddressbar->GetHeight()));
                        __pAddressbar->Invalidate(true);
                }
@@ -3764,6 +3777,7 @@ MainForm::OnAddressBarModeChanged(/*const Addressbar& addBar*/)
                if (__pAddressbar != null)
                {
                        __webControlPosition.y = 0;
+                       __webControlPositionF.y = 0.0f;
                        __pAddressbar->SetBounds(Rectangle(0, __pAddressbar->GetY() - __pAddressbar->GetHeight(), GetClientAreaBounds().width, __pAddressbar->GetHeight()));
                        __pAddressbar->Invalidate(true);
                }
@@ -4045,6 +4059,10 @@ MainForm::OnWebPageBlockSelected(Web& source, FloatPoint& startPoint, FloatPoint
                        if(GetLastResult() == E_INVALID_ARG || (__pHitElementResult->GetTagName().Equals(L"INPUT",false) == false && __pHitElementResult->GetTagName().Equals(L"TEXTAREA",false) == false))
                        {
                                __pHitElementResult = __pWebViewer->GetElementByPointN(__longPressPoint);
+                               if(__pHitElementResult == null)
+                               {
+                                       __pHitElementResult = __pWebViewer->GetElementByPointN(endPoint);
+                               }
                        }
                        AppLog("datafirst endpoint error %s",GetErrorMessage(GetLastResult()));
                }
@@ -4080,7 +4098,7 @@ MainForm::OnWebPageBlockSelected(Web& source, FloatPoint& startPoint, FloatPoint
                {
                        AppLog("MainForm::OnWebPageBlockSelected show paste option");
 
-                       InitSelectTextContextMenuF(FloatPoint(endPoint.x,endPoint.y + __pWebViewer->GetY()),true);
+                       InitSelectTextContextMenuF(FloatPoint(startPoint.x,startPoint.y + __pWebViewer->GetY()),true);
                        if(__pImageMenu)
                        {
                                __pImageMenu->SetShowState(true);
@@ -4097,7 +4115,7 @@ MainForm::OnWebPageBlockSelected(Web& source, FloatPoint& startPoint, FloatPoint
                                __currentSelectedStr.Clear();
                                __currentSelectedStr = __pHitElementResult->GetUrl();
                        }
-                       InitSelectTextContextMenuF(FloatPoint(endPoint.x,endPoint.y + __pWebViewer->GetY()),false);
+                       InitSelectTextContextMenuF(FloatPoint(startPoint.x,startPoint.y + __pWebViewer->GetY()),false);
                        if(__pImageMenu)
                        {
                                __pImageMenu->SetShowState(true);
@@ -4241,7 +4259,8 @@ MainForm::OnWebWindowCloseRequested(Tizen::Web::Controls::Web& source)
                                        return;
                                }
                        }
-                       r = pSceneManager->GoForward(ForwardSceneTransition(pNewWindowInfo->sceneID ,SCENE_TRANSITION_ANIMATION_TYPE_NONE,SCENE_HISTORY_OPTION_ADD_HISTORY,SCENE_DESTROY_OPTION_DESTROY));
+                       if(pNewWindowInfo)
+                               r = pSceneManager->GoForward(ForwardSceneTransition(pNewWindowInfo->sceneID ,SCENE_TRANSITION_ANIMATION_TYPE_NONE,SCENE_HISTORY_OPTION_ADD_HISTORY,SCENE_DESTROY_OPTION_DESTROY));
 
                        break;
                }
@@ -4256,29 +4275,37 @@ MainForm::RelayoutControls(bool showAddressbar,bool relayoutFooter)
 {
        AppLog("xyz:: MainForm::RelayoutControls called");
        __webControlPosition.y = 0;
+       __webControlPositionF.y = 0.0f;
        __webControlHeight = GetClientAreaBounds().height;
+       __webControlHeightF = GetClientAreaBoundsF().height;
        AppLog("Client area height: %d width %d", __webControlHeight,GetClientAreaBounds().width);
 
        AppLog("Client area height: %d", __webControlHeight);
        if(__pAddressbar != null && __pAddressbar->GetShowState() == true)
        {
                __webControlPosition.y += __pAddressbar->GetHeight();
+               __webControlPositionF.y += __pAddressbar->GetHeightF();
                __webControlHeight -= __pAddressbar->GetHeight();
+               __webControlHeightF -= __pAddressbar->GetHeightF();
                __pAddressbar->SetBounds(0, 0, __pAddressbar->GetWidth(), __pAddressbar->GetHeight());
        }
        else if(__pFindWordControl != null && __pFindWordControl->GetShowState() == true)
        {
                __webControlPosition.y += __pFindWordControl->GetHeight();
+               __webControlPositionF.y += __pFindWordControl->GetHeightF();
                __webControlHeight -= __pFindWordControl->GetHeight();
+               __webControlHeightF -= __pFindWordControl->GetHeightF();
                __pFindWordControl->SetBounds(0, 0, GetClientAreaBounds().width, __pFindWordControl->GetHeight());
        }
 
        if(__pFooterPanel != null && __pFooterPanel->GetShowState() == true && relayoutFooter == true)
        {
                __webControlHeight -= __pFooterPanel->GetHeight();
+               __webControlHeightF -= __pFooterPanel->GetHeightF();
 
-               __pFooterPanel->SetBounds(0, __webControlPosition.y + __webControlHeight, GetClientAreaBounds().width, __pFooterPanel->GetHeight());
+               __pFooterPanel->SetBounds(CoordinateSystem::AlignToDevice(FloatRectangle(0.0F, __webControlPositionF.y + __webControlHeightF, GetClientAreaBoundsF().width, __pFooterPanel->GetHeightF())));
                __webControlHeight = __webControlHeight + 12;
+               __webControlHeightF = __webControlHeightF + 12.0f;
        }
        if (__pWebViewer != null && __pWebViewer->GetShowState() == true)
        {
@@ -4472,7 +4499,8 @@ void MainForm::OnTextFound(int totalCount, int currentOrdinal)
        {
                AppLog("Word not found");
                //Show error notification to user
-               __pFindWordNext->SetEnabled(false);
+               if(__pFindWordNext)
+                       __pFindWordNext->SetEnabled(false);
                if(__pFindWordCountLabel && __pFindWordCountLabel->GetShowState() == true)
                {
                        __pFindWordCountLabel->SetText(L"0/0");
@@ -4483,7 +4511,8 @@ void MainForm::OnTextFound(int totalCount, int currentOrdinal)
                        __pFindWordCountLabelRightToLeft->SetText(L"0/0");
                        __pFindWordCountLabelRightToLeft->Invalidate(false);
                }
-               __pFindWordNext->Invalidate(false);
+               if(__pFindWordNext)
+                       __pFindWordNext->Invalidate(false);
                __pFindWordPrev->Invalidate(false);
 
                return;
@@ -4491,11 +4520,13 @@ void MainForm::OnTextFound(int totalCount, int currentOrdinal)
 
        if (totalCount == 1 || totalCount == currentOrdinal)
        {
-               __pFindWordNext->SetEnabled(false);
+               if(__pFindWordNext)
+                       __pFindWordNext->SetEnabled(false);
        }
        else
        {
-               __pFindWordNext->SetEnabled(true);
+               if(__pFindWordNext)
+                       __pFindWordNext->SetEnabled(true);
        }
 
        String countStr = L"";
@@ -4911,8 +4942,8 @@ MainForm::OnOrientationChanged (const Tizen::Ui::Control &source, Tizen::Ui::Ori
 {
        AppLog("MainForm::OnOrientationChanged GetClientAreaBounds %d, %d",GetClientAreaBounds().width,GetClientAreaBounds().height);
        int widthContextItem = 0;
-       if(__pFindWordCountLabel)
-               __pFindWordCountLabel->SetBounds(__pFindWordCountLabel->GetX(),__pFindWordCountLabel->GetY(),124,__pFindWordCountLabel->GetHeight());
+       //if(__pFindWordCountLabel)
+       //      __pFindWordCountLabel->SetBounds(__pFindWordCountLabel->GetX(),__pFindWordCountLabel->GetY(),124,__pFindWordCountLabel->GetHeight());
        // As per the platform engineer comment removed this line
        /*if(__pWebViewer != null)
        {
@@ -4989,7 +5020,7 @@ MainForm::OnOrientationChanged (const Tizen::Ui::Control &source, Tizen::Ui::Ori
        {
                AppLog("__pFooterPanel->GetShowState() is true");
                InitFooter();
-               __pFooterPanel->SetBounds(0, GetClientAreaBounds().height - __pFooterPanel->GetHeight(), __pFooterPanel->GetWidth(), __pFooterPanel->GetHeight());
+               __pFooterPanel->SetBounds(CoordinateSystem::AlignToDevice(FloatRectangle(0, GetClientAreaBoundsF().height - __pFooterPanel->GetHeightF(), __pFooterPanel->GetWidthF(), __pFooterPanel->GetHeightF())));
                __pFooterPanel->Invalidate(true);
        }
        InitAddressbar();
@@ -5444,6 +5475,7 @@ MainForm::InitMostVisitedSitesView(Tizen::Ui::OrientationStatus orientationStatu
        HistoryPresentationModel::GetInstance()->GetMostVisitedSites(*__pMostVisitedSites);
 
        __webControlHeight = GetClientAreaBounds().height - __pFooterPanel->GetHeight();
+       __webControlHeightF = GetClientAreaBoundsF().height - __pFooterPanel->GetHeightF();
        __pMostVisitedListView = new(std::nothrow) ListView();
 
        int height = GetClientAreaBounds().height;