add patch
[framework/osp/web.git] / src / controls / FWebCtrl_SelectBox.cpp
index 0a6e241..b1e8462 100755 (executable)
@@ -26,6 +26,7 @@
 #include <unique_ptr.h>
 #include <FBaseColAllElementsDeleter.h>
 #include <FBaseSysLog.h>
+#include <FCntDownloadRequest.h>
 #include <FGrpDimension.h>
 #include <FGrpRectangle.h>
 #include <FUiCtrlButton.h>
@@ -37,6 +38,7 @@
 #include <FUiIActionEventListener.h>
 #include <FUiKeyEventInfo.h>
 #include <FUiVerticalBoxLayout.h>
+#include <FCnt_DownloadManagerImpl.h>
 #include <FSys_SystemResource.h>
 #include <FUi_ResourceManager.h>
 #include "FWebCtrl_SelectBox.h"
@@ -44,6 +46,7 @@
 
 using namespace Tizen::Base;
 using namespace Tizen::Base::Collection;
+using namespace Tizen::Content;
 using namespace Tizen::Graphics;
 using namespace Tizen::System;
 using namespace Tizen::Ui;
@@ -147,6 +150,7 @@ _SelectBox::_SelectBox(void)
        , __orientation(_CONTROL_ORIENTATION_PORTRAIT)
        , __pWebView(null)
        , __pToggledArray(null)
+       , __url(L"")
 {
 }
 
@@ -164,7 +168,7 @@ _SelectBox::~_SelectBox(void)
 
 
 result
-_SelectBox::Construct(bool isMultiSelect, const String& title, int listCount, Evas_Object* pWebView)
+_SelectBox::Construct(bool isMultiSelect, const String& title, int listCount, Evas_Object* pWebView, const String& url)
 {
        result r = E_SUCCESS;
        Rectangle rect;
@@ -174,6 +178,7 @@ _SelectBox::Construct(bool isMultiSelect, const String& title, int listCount, Ev
        int listViewHeight = 0;
 
        __pWebView = pWebView;
+       __url = const_cast< String& >(url);
 
        GET_SHAPE_CONFIG(CONTEXTMENU::LIST_ITEM_HEIGHT, __orientation, listItemHeight);
 
@@ -236,10 +241,10 @@ _SelectBox::Construct(bool isMultiSelect, const String& title, int listCount, Ev
        r = titleList.Construct();
        SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
 
-       titleList.Add(*(new String(pSysResource->GetString("sys_string", "IDS_COM_POP_CANCEL"))));
+       titleList.Add(*(new String(pSysResource->GetString("sys_string", "IDS_TPLATFORM_BUTTON_CANCEL_ABB"))));
        if (__multiSelection)
        {
-               titleList.Add(*(new String(pSysResource->GetString("sys_string", "IDS_COM_BODY_DONE"))));
+               titleList.Add(*(new String(pSysResource->GetString("sys_string", "IDS_TPLATFORM_BUTTON_OK"))));
 
                __pToggledArray = eina_inarray_new(sizeof(int), 0);
                SysTryReturnResult(NID_WEB_CTRL, __pToggledArray, E_OUT_OF_MEMORY, "Memory Allocation failed.");
@@ -420,14 +425,30 @@ _SelectBox::OnListViewItemStateChanged(ListView& listView, int index, int elemen
        else
        {
                //In case of single selection ... update the index.
-               __SelectedIndex = index;
-               SysLog(NID_WEB_CTRL,"The current value of Update Selected index is %d",index);
-               if (__pWebView)
+               if (__url.GetLength() == 0)
                {
-                       ewk_view_popup_menu_select(__pWebView, __SelectedIndex);
+                       __SelectedIndex = index;
+                       SysLog(NID_WEB_CTRL,"The current value of Update Selected index is %d",index);
+                       if (__pWebView)
+                       {
+                               ewk_view_popup_menu_select(__pWebView, __SelectedIndex);
+                       }
+               }
+               else
+               {
+                       result r = E_SUCCESS;
+
+                       RequestId reqId = 0;
+                       DownloadRequest request(__url);
+
+                       _DownloadManagerImpl* pManagerImpl = _DownloadManagerImpl::GetInstance();
+                       SysTryReturnVoidResult(NID_WEB_CTRL, pManagerImpl, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
+
+                       r = pManagerImpl->Start(request, reqId);
+                       SysTryReturnVoidResult(NID_WEB_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
                }
 
-               result r = HidePopup(__SelectedIndex);
+               result r = HidePopup();
                SysTryReturnVoidResult(NID_WEB_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
        }
 }
@@ -443,37 +464,40 @@ _SelectBox::OnListViewItemSwept(ListView& listView, int index, SweepDirection di
 void
 _SelectBox::OnActionPerformed(const Control& source, int actionId)
 {
-       switch (actionId)
-       {
-       case ID_BUTTON_SELECTION:
-       {
-               ewk_view_popup_menu_multiple_select(__pWebView, __pToggledArray);
-               break;
-       }
-       case ID_BUTTON_CANCEL:
+       result r = HidePopup();
+       SysTryReturnVoidResult(NID_WEB_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
+
+       if (__url.GetLength() == 0)
        {
-               if (__multiSelection)
+               switch (actionId)
                {
-                       ewk_view_popup_menu_multiple_select(__pWebView, null);
+               case ID_BUTTON_SELECTION:
+               {
+                       ewk_view_popup_menu_multiple_select(__pWebView, __pToggledArray);
+                       break;
                }
-               else
+               case ID_BUTTON_CANCEL:
                {
-                       ewk_view_popup_menu_select(__pWebView, __prevIndex);
+                       if (__multiSelection)
+                       {
+                               ewk_view_popup_menu_multiple_select(__pWebView, null);
+                       }
+                       else
+                       {
+                               ewk_view_popup_menu_select(__pWebView, __prevIndex);
+                       }
+                       break;
+               }
+               default:
+                       SysAssertf(false, "Invalid Action ID");
                }
-               break;
-       }
-       default:
-               SysAssertf(false, "Invalid Action ID");
        }
-
-       result r = HidePopup(__SelectedIndex);
-       SysTryReturnVoidResult(NID_WEB_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
 }
 
 bool
 _SelectBox::OnKeyPressed(Control& source, const KeyEventInfo& keyEventInfo)
 {
-       return true;
+       return false;
 }
 
 bool
@@ -481,22 +505,26 @@ _SelectBox::OnKeyReleased(Control& source, const KeyEventInfo& keyEventInfo)
 {
        if ((keyEventInfo.GetKeyCode() == KEY_ESC || keyEventInfo.GetKeyCode() == KEY_BACK) && source.GetShowState() == true)
        {
-               if (__multiSelection)
-               {
-                       ewk_view_popup_menu_multiple_select(__pWebView, null);
-               }
-               else
-               {
-                       ewk_view_popup_menu_select(__pWebView, __prevIndex);
-               }
-               result r = HidePopup(__SelectedIndex);
+               result r = HidePopup();
                if (IsFailed(r))
                {
                        SysLogException(NID_WEB_CTRL, r, "[%s] Propagating.", GetErrorMessage(r));
                }
+
+               if (__url.GetLength() == 0)
+               {
+                       if (__multiSelection)
+                       {
+                               ewk_view_popup_menu_multiple_select(__pWebView, null);
+                       }
+                       else
+                       {
+                               ewk_view_popup_menu_select(__pWebView, __prevIndex);
+                       }
+               }               
        }
 
-       return true;
+       return false;
 }
 
 bool