Fixed Nabi issues N_SE-50613, N_SE-49431, N_SE-50779, N_SE-50601, N_SE-50559
[apps/osp/Internet.git] / src / IntMainForm.cpp
index 74744da..072e148 100644 (file)
@@ -68,8 +68,8 @@ static const wchar_t* IDB_CONTRLBAR_ICON_NEW_WINDOW_PRESS = L"I01_icon_plus_pres
 static const wchar_t* IDB_CONTROLBAR_ICON_CREATE_DISABLE = L"I01_controlbar_icon_create_disable.png";
 static const wchar_t* IDB_BUTTON_ON = L"00_button_on.png";
 static const wchar_t* IDB_BUTTON_OFF = L"00_button_off.png";
-static const wchar_t* IDB_ICON_BOOKMARK_OFF_TEMP = L"I01_icon_bookmark_off_temp.png";
-static const wchar_t* IDB_ICON_BOOKMARK_ON_TEMP = L"I01_icon_bookmark_on_temp.png";
+static const wchar_t* IDB_ICON_BOOKMARK_OFF_TEMP =L"00_icon_favorite_off_74x74.png";
+static const wchar_t* IDB_ICON_BOOKMARK_ON_TEMP = L"00_icon_favorite_on_74x74.png";
 static const wchar_t* IDS_TIZEN_SERVICE = L"tizen-service";
 static const wchar_t* IDS_APPID = L"AppID";
 static const wchar_t* IDS_KEY = L"key";
@@ -486,10 +486,9 @@ MainForm::InitWebControl()
        else
        {
                r = AddControl(__pWebViewer);
-
                if (IsFailed(r))
                {
-                       delete __pWebViewer;
+                       __pWebViewer->Destroy();
                        __pWebViewer = null;
                        AppLogDebug("Web addcontrol failed with %s", GetErrorMessage(r));
                        return r;
@@ -986,6 +985,10 @@ MainForm::InitSelectTextContextMenuF(FloatPoint p, bool pasteOption, bool onlyPa
                p.y = p.y + 50;
                direction = CONTEXT_MENU_ANCHOR_DIRECTION_DOWNWARD;
        }
+       else if(__pWebViewer != null && (p.y > (__pWebViewer->GetHeight() + __pWebViewer->GetY())))
+       {
+               p.y = __pWebViewer->GetHeight() + __pWebViewer->GetY();
+       }
        else
        {
                if(GetOrientationStatus() == ORIENTATION_STATUS_LANDSCAPE || GetOrientationStatus() == ORIENTATION_STATUS_LANDSCAPE_REVERSE )
@@ -2510,8 +2513,6 @@ MainForm::OnActionPerformed(const Tizen::Ui::Control& source, int actionId)
                        str.Append(nameElement);
                        str.Append("').length");
                        String* pCount = __pWebViewer->EvaluateJavascriptN(str);
-                       AppLog("pCount %ls",pCount->GetPointer());
-
 
                        String script;
                        if(idElement.GetLength() != 0)
@@ -2524,8 +2525,6 @@ MainForm::OnActionPerformed(const Tizen::Ui::Control& source, int actionId)
                                script.Append(*pString);
                                script.Append("\");");
                        }
-
-
                        else if (nameElement.GetLength() != 0 && pCount->Equals("1",false) == true)
                        {
                                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;   }  } ";
@@ -2549,6 +2548,7 @@ MainForm::OnActionPerformed(const Tizen::Ui::Control& source, int actionId)
                        AppLog("MainForm::OnTouchLongPressed script is %ls",script.GetPointer());
                        String* pStr = __pWebViewer->EvaluateJavascriptN(script);
                        delete pStr;
+                       delete pCount;
                }
                delete pItem;
        }
@@ -2575,7 +2575,8 @@ MainForm::OnActionPerformed(const Tizen::Ui::Control& source, int actionId)
 //             LoadUrl(url);
                if (__pWebViewer != null && __pAddressbar != null)
                {
-                       __pWebViewer->Reload();
+                       LoadUrl(url);
+                       //__pWebViewer->Reload();
                        SetAddressbarMode((AddressBarMode)ADDRESSBAR_MODE_LOADING);
                }
 
@@ -2953,11 +2954,14 @@ MainForm::OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId,
                pCanvas->DrawBitmap(Point(0,0),*pBitmap);
                delete pBitmap;
        }
-       if(__pWebViewer != null && __pWindowInfo != null)
+       if(__pWebViewer != null && __pWindowInfo != null && __pWindowInfo->pWebCanvasBitmap != null)
                pCanvas->DrawBitmap(__pWebViewer->GetPosition(),*__pWindowInfo->pWebCanvasBitmap);
 
        WindowInfo::pFormCanvasBitmap = new(std::nothrow) Bitmap();
-       WindowInfo::pFormCanvasBitmap->Construct(*pCanvas,Rectangle(0,0,GetClientAreaBounds().width,GetClientAreaBounds().height - __pFooterPanel->GetHeight()));
+       if (__pFooterPanel)
+       {
+               WindowInfo::pFormCanvasBitmap->Construct(*pCanvas,Rectangle(0,0,GetClientAreaBounds().width,GetClientAreaBounds().height - __pFooterPanel->GetHeight()));
+       }
        delete pCanvas;
        delete pWebCanvas;
        if(__pAddressbar)
@@ -4108,6 +4112,97 @@ MainForm::OnWebWindowCreateRequested(void)
        return pNewWindowInfo->pCurrentWeb;
 }
 
+void MainForm::OnWebWindowCloseRequested(Tizen::Web::Controls::Web& source)
+{
+       AppLog("OnWebWindowCloseRequested");
+       ArrayList* pAllWindowList = MultipleWindowPresentationModel::GetInstance()->GetAllWindowArrayList();
+       SceneManager* pSceneManager = SceneManager::GetInstance();
+       WindowInfo* pWindowInfo = null;
+       WindowInfo* pNewWindowInfo = null;
+       int totalCount = 0;
+       UiApp* pApp = null;
+       result r = E_FAILURE;
+
+       if (pAllWindowList != null)
+       {
+               totalCount = pAllWindowList->GetCount();
+       }
+
+       for (int count = 0; count < totalCount; count++)
+       {
+               pWindowInfo = dynamic_cast< WindowInfo* >(pAllWindowList->GetAt(count));
+               if (pSceneManager != null && pWindowInfo != null && pSceneManager->GetCurrentSceneId() == pWindowInfo->sceneID)
+               {
+                       r = SceneRegister::DestroyAndUnRegisterScene(pWindowInfo->sceneID);
+                       if (IsFailed(r))
+                       {
+                               AppLogException("OnActionPerformed failed with %s", GetErrorMessage(r));
+                               return;
+                       }
+
+                       r = pAllWindowList->RemoveAt(count, true);
+
+                       if(count > 0)
+                       {
+                               pNewWindowInfo = dynamic_cast< WindowInfo* >(pAllWindowList->GetAt(count - 1));
+                       }
+                       else if(pAllWindowList->GetCount() > 0)
+                       {
+                               pNewWindowInfo = dynamic_cast< WindowInfo* >(pAllWindowList->GetAt(pAllWindowList->GetCount() - 1));
+                       }
+                       else
+                       {
+                               WindowInfo* pNewWindowInfo = MultipleWindowPresentationModel::GetInstance()->CreateNewMainViewSceneN();
+
+                               if (pNewWindowInfo == null)
+                               {
+                                       return;
+                               }
+                               result r = E_SUCCESS;
+                               SceneManager* pSceneManager = SceneManager::GetInstance();
+                               if (pSceneManager == NULL)
+                               {
+                                       return;
+                               }
+                               ArrayList* pArgList = new(std::nothrow) ArrayList();
+                               if (pArgList == NULL)
+                               {
+                                       return;
+                               }
+                               r = pArgList->Construct();
+                               if (r == E_SUCCESS)
+                               {
+                                       pArgList->Add(*pNewWindowInfo);
+                                       result r = pSceneManager->GoForward(ForwardSceneTransition(pNewWindowInfo->sceneID, SCENE_TRANSITION_ANIMATION_TYPE_NONE),pArgList);
+                                       if (pArgList != null)
+                                       {
+                                               delete pArgList;
+                                               pArgList = null;
+                                       }
+                                       if(IsFailed(r))
+                                       {
+                                               AppLogDebug("MultipleWindowForm::OnActionPerformed GoForward failed %s",GetErrorMessage(r));
+                                               return;
+                                       }
+                               }
+
+                               pApp = UiApp::GetInstance();
+                               if (pApp != null)
+                               {
+                                       r = pApp->GetFrameAt(0)->SetShowMode(FRAME_SHOW_MODE_MINIMIZED);
+                                       return;
+                               }
+
+                       }
+                       r = pSceneManager->GoForward(ForwardSceneTransition(pNewWindowInfo->sceneID ,SCENE_TRANSITION_ANIMATION_TYPE_NONE,SCENE_HISTORY_OPTION_ADD_HISTORY,SCENE_DESTROY_OPTION_DESTROY));
+
+                       __pWindowInfo = null;
+                       break;
+               }
+       }
+
+}
+
 void
 MainForm::RelayoutControls(bool showAddressbar,bool relayoutFooter)
 {
@@ -4264,8 +4359,12 @@ MainForm::StartWordSearch()
 
        __pFindWordPrev->SetEnabled(false);
        String *pCountStr = null;
-       result r = __pWebViewer->SearchTextAllAsync(__currentSearchStr, false);
-       AppLog("Search Result %s",GetErrorMessage(r));
+       if (__pWebViewer)
+       {
+               result r = __pWebViewer->SearchTextAllAsync(__currentSearchStr, false);
+               AppLog("Search Result %s",GetErrorMessage(r));
+       }
+
        /*__pWebViewer->EvaluateJavascriptN(L"document.body.textContent.match(/"  + __currentSearchStr + "/gi).length;");
        if (pCountStr != null)
        {
@@ -4283,21 +4382,38 @@ void MainForm::OnTextFound(int totalCount, int currentOrdinal)
        AppLog("MainForm::OnTextFound totalCount %d",totalCount);
        AppLog("MainForm::OnTextFound currentOrdinal %d",currentOrdinal);
 
-       if(totalCount == -1 || totalCount == 0)
+       if(totalCount <= 9)
        {
-               __pFindWordCountLabel->SetBounds(__pFindWordCountLabel->GetX(),__pFindWordCountLabel->GetY(),84,__pFindWordCountLabel->GetHeight());
-               __pFindWordEditField->SetBounds(__pFindWordEditField->GetX(),__pFindWordEditField->GetY(),214+80,__pFindWordEditField->GetHeight());
-//             return;
+               if (__pFindWordCountLabel)
+               {
+                       __pFindWordCountLabel->SetBounds(__pFindWordCountLabel->GetX(),__pFindWordCountLabel->GetY(),84,__pFindWordCountLabel->GetHeight());
+               }
+               if (__pFindWordEditField)
+               {
+                       __pFindWordEditField->SetBounds(__pFindWordEditField->GetX(),__pFindWordEditField->GetY(),214+80,__pFindWordEditField->GetHeight());
+               }
        }
-       else if(totalCount > 100)
+       else if(totalCount >= 100)
        {
-               __pFindWordCountLabel->SetBounds(__pFindWordCountLabel->GetX(),__pFindWordCountLabel->GetY(),124,__pFindWordCountLabel->GetHeight());
-               __pFindWordEditField->SetBounds(__pFindWordEditField->GetX(),__pFindWordEditField->GetY(),174,__pFindWordEditField->GetHeight());
+               if (__pFindWordCountLabel)
+               {
+                       __pFindWordCountLabel->SetBounds(__pFindWordCountLabel->GetX(),__pFindWordCountLabel->GetY(),124,__pFindWordCountLabel->GetHeight());
+               }
+               if (__pFindWordEditField)
+               {
+                       __pFindWordEditField->SetBounds(__pFindWordEditField->GetX(),__pFindWordEditField->GetY(),174,__pFindWordEditField->GetHeight());
+               }
        }
        else
        {
-               __pFindWordCountLabel->SetBounds(__pFindWordCountLabel->GetX(),__pFindWordCountLabel->GetY(),124,__pFindWordCountLabel->GetHeight());
-               __pFindWordEditField->SetBounds(__pFindWordEditField->GetX(),__pFindWordEditField->GetY(),174,__pFindWordEditField->GetHeight());
+               if (__pFindWordCountLabel)
+               {
+                       __pFindWordCountLabel->SetBounds(__pFindWordCountLabel->GetX(),__pFindWordCountLabel->GetY(),124,__pFindWordCountLabel->GetHeight());
+               }
+               if (__pFindWordEditField)
+               {
+                       __pFindWordEditField->SetBounds(__pFindWordEditField->GetX(),__pFindWordEditField->GetY(),174,__pFindWordEditField->GetHeight());
+               }
        }
 
        __maxOccurrances = totalCount;
@@ -4344,16 +4460,20 @@ void MainForm::OnTextFound(int totalCount, int currentOrdinal)
        __pFindWordCountLabel->Invalidate(false);
        __pFindWordCountLabel->Invalidate(false);
        }
-       else if(__pFindWordCountLabelRightToLeft && __pFindWordCountLabelRightToLeft->GetShowState() == true)
+       else if (__pFindWordCountLabelRightToLeft && __pFindWordCountLabelRightToLeft->GetShowState() == true)
        {
                __pFindWordCountLabelRightToLeft->SetText(countStr);
                __pFindWordCountLabelRightToLeft->Invalidate(false);
                __pFindWordCountLabelRightToLeft->Invalidate(false);
        }
-       //FindNextWord(true);
-       //Update the controls
-       __pFindWordNext->Invalidate(false);
-       __pFindWordPrev->Invalidate(false);
+       if (__pFindWordNext)
+       {
+               __pFindWordNext->Invalidate(false);
+       }
+       if (__pFindWordPrev)
+       {
+               __pFindWordPrev->Invalidate(false);
+       }
 
 }
 
@@ -4491,6 +4611,9 @@ MainForm::OnWebKeypadClosed(Tizen::Web::Controls::Web& source)
                Point p(0,0);
                Point q(0,0);
                __pWebViewer->GetBlockRange(p,q);
+               if (p == Point(0,0) && q == Point(0,0))
+                       return;
+
                __pImageMenu->SetAnchorPosition(p);
                __pImageMenu->Show();
                Invalidate(true);
@@ -4531,7 +4654,7 @@ MainForm::OnTouchDoublePressed(const Control& source, const Point& currentPositi
 void MainForm::OnTouchLongPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
 {
        AppLog("abcde::MainForm::OnTouchLongPressed %d, %d" ,currentPosition.x,currentPosition.y);
-       if(TouchEventManager::GetInstance()->GetTouchInfoListN()->GetCount() >1)
+       if(TouchEventManager::GetInstance() && TouchEventManager::GetInstance()->GetTouchInfoListN() && TouchEventManager::GetInstance()->GetTouchInfoListN()->GetCount() >1)
        {
                AppLog("Returning because of more than one touch point.");
                return;