Fixed Nabi Issues 52332,54256,54601,54130,54264,54471
[apps/osp/Internet.git] / src / IntSharePopup.cpp
index 65618aa..1490144 100644 (file)
@@ -2,7 +2,7 @@
 
 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
 //
-// Licensed under the Flora License, Version 1.0 (the License);
+// Licensed under the Flora License, Version 1.1 (the License);
 // you may not use this file except in compliance with the License.
 // You may obtain a copy of the License at
 //
@@ -33,11 +33,13 @@ using namespace Tizen::App;
 using namespace Tizen::Io;
 using namespace Tizen::Base;
 using namespace Tizen::Base::Collection;
+using namespace Tizen::Base::Runtime;
 using namespace Tizen::Graphics;
 using namespace Tizen::Ui;
 using namespace Tizen::Ui::Controls;
 using namespace Tizen::Ui::Scenes;
 
+
 const int SharePopup::IDA_CANCEL_BUTTON = 101;
 const int SharePopup::ID_FORMAT_MESSAGE_STRING = 500;
 const int SharePopup::ID_FORMAT_EMAIL_STRING = 501;
@@ -51,7 +53,6 @@ ShareInfo::   ShareInfo(void)
 
 ShareInfo::    ~ShareInfo(void)
 {
-
 }
 
 void
@@ -108,12 +109,45 @@ ShareInfo::GetImagePath(void)
 SharePopup::SharePopup(void)
 :__pList(null),__pShareList(null)
 {
-
+       __appControlOngoing = false;
+       __pTimer = null;
 }
 
 SharePopup::~SharePopup(void)
 {
+       ShareInfo* pShareInfo = null;
+       result r = E_FAILURE;
+
+       if (__pShareList != null)
+       {
+               pShareInfo = dynamic_cast<ShareInfo*>(__pShareList->GetAt(0));
+       }
+
+       String attachVal;
+       bool imageAttachment = false;
+       if (pShareInfo != null)
+       {
+               imageAttachment = pShareInfo->GetImageAttached();
+               if (imageAttachment)
+               {
+                       attachVal = pShareInfo->GetImagePath();
+                       AppLog("SharePopup:: imagePath is %S",attachVal.GetPointer());
+                       r = File::Remove(attachVal);
+                       if(r == E_SUCCESS)
+                       {
+                               AppLog("removed success");
+                       }
+                       else
+                       {
+                               AppLog("removed failure");
+                       }
+               }
+               __pShareList->RemoveAll(true);
+       }
 
+       if(__pAppControlList)
+               __pAppControlList->RemoveAll(true);
+       delete __pAppControlList;
 }
 
 bool
@@ -135,6 +169,7 @@ SharePopup::Initialize(void)
 
        __pList->SetItemProvider(*this);
        __pList->AddListViewItemEventListener(*this);
+//     __pList->SetTextOfEmptyList(L"No Sharing Options");//hardcoded string
 
        pCancelButton = static_cast< Button* >(GetControl(L"IDC_BUTTON1", true));
        if (pCancelButton)
@@ -143,6 +178,9 @@ SharePopup::Initialize(void)
                pCancelButton->SetActionId(IDA_CANCEL_BUTTON);
        }
 
+       __pTimer = new(std::nothrow) Timer();
+       __pTimer->Construct(*this);
+       SetPropagatedKeyEventListener(this);
        return true;
 }
 
@@ -154,6 +192,13 @@ SharePopup::OnTerminating(void)
 }
 
 void
+SharePopup::OnTimerExpired(Timer& timer)
+{
+       Popup::SetShowState(false);
+       Popup::Show();
+}
+
+void
 SharePopup::OnActionPerformed(const Tizen::Ui::Control& source, int actionId)
 {
        switch(actionId)
@@ -183,23 +228,60 @@ SharePopup::OnListViewItemStateChanged(Tizen::Ui::Controls::ListView& listView,
        {
        case 0:
        {
-               Popup::SetShowState(false);
-               Popup::Show();
-               // share via message
-               StartMessageAppControl();
+               if(__appControlOngoing == false)
+               {
+                       __appControlOngoing = true;
+                       // share via message
+                       StartMessageAppControl();
+                       if(__pTimer == null)
+                       {
+                               __pTimer = new(std::nothrow) Timer();
+                               __pTimer->Construct(*this);
+                       }
+                       __pTimer->Start(2500);
+               }
        }
        break;
        case 1:
        {
-               Popup::SetShowState(false);
-               Popup::Show();
-               // share via email
-               StartEmailAppControl();
+               if(__appControlOngoing == false)
+               {
+                       __appControlOngoing = true;
+                       // share via email
+                       StartEmailAppControl();
+                       if(__pTimer == null)
+                       {
+                               __pTimer = new(std::nothrow) Timer();
+                               __pTimer->Construct(*this);
+                       }
+                       __pTimer->Start(2500);
+               }
+
        }
        break;
        default:
+               if(__appControlOngoing == false)
+               {
+                       __appControlOngoing = true;
+                       //share via third party app
+                       StartAppControl(index);
+                       if(__pTimer == null)
+                       {
+                               __pTimer = new(std::nothrow) Timer();
+                               __pTimer->Construct(*this);
+                       }
+                       __pTimer->Start(2500);
+               }
                break;
        }
+       Frame* pCurrentFrame = null;
+       pCurrentFrame = Application::GetInstance()->GetAppFrame()->GetFrame();
+
+       if (pCurrentFrame != null)
+       {
+               pCurrentFrame->SetEnabled(false);
+               pCurrentFrame->Invalidate(true);
+       }
 }
 
 void
@@ -217,14 +299,15 @@ SharePopup::OnListViewItemLongPressed(Tizen::Ui::Controls::ListView& listView, i
 Tizen::Ui::Controls::ListItemBase*
 SharePopup::CreateItem(int index, int itemWidth)
 {
+       AppLog("SharePopup::CreateItem index %d",index);
        result r = E_FAILURE;
        ListAnnexStyle style = LIST_ANNEX_STYLE_NORMAL;
        int textSize = 35;
        int elementHeight = 50;
-       int listItemWidth = 80;
+       int listItemHeight = 75;
 
        CustomItem* pItem = new(std::nothrow) CustomItem();
-       r = pItem->Construct(Dimension(GetClientAreaBounds().width, listItemWidth), style);
+       r = pItem->Construct(Dimension(GetClientAreaBounds().width, listItemHeight), style);
        if (IsFailed(r))
        {
                AppLogDebug("Create Item Failed with error %s", GetErrorMessage(r));
@@ -232,23 +315,32 @@ SharePopup::CreateItem(int index, int itemWidth)
                return null;
        }
 
+
+
        switch(index)
        {
        case 0:
        {
                AppLogDebug("SharePopUp CreateItem 0");
                // IDS_SHARE_VIA_MESSAGE
-               pItem->AddElement(Rectangle(45,0, GetClientAreaBounds().width, listItemWidth), ID_FORMAT_MESSAGE_STRING, CommonUtil::GetString(L"IDS_BR_OPT_SHARE_VIA_MESSAGES"), true);
+               pItem->AddElement(Rectangle(45,0, GetClientAreaBounds().width, listItemHeight), ID_FORMAT_MESSAGE_STRING, CommonUtil::GetString(L"IDS_BR_OPT_MESSAGES"), true);
        }
        break;
        case 1:
        {
                AppLogDebug("SharePopUp CreateItem 1");
                // IDS_SHARE_VIA_EMAIL
-               pItem->AddElement(Rectangle(45, 0, GetClientAreaBounds().width, listItemWidth), ID_FORMAT_EMAIL_STRING, CommonUtil::GetString(L"IDS_BR_OPT_SHARE_VIA_EMAIL"), true);
+               pItem->AddElement(Rectangle(45, 0, GetClientAreaBounds().width, listItemHeight), ID_FORMAT_EMAIL_STRING, CommonUtil::GetString(L"IDS_BR_OPT_SENDURLVIA_EMAIL"), true);
        }
        break;
        default:
+               if(__pAppControlList)
+               {
+                       AppControl * pControl = dynamic_cast<AppControl*>(__pAppControlList->GetAt(index -2));
+                       AppLog("SharePopup::CreateItem appcontrol count %d",__pAppControlList->GetCount());
+                       if(pControl)
+                               pItem->AddElement(Rectangle(45,0, GetClientAreaBounds().width, listItemHeight), ID_FORMAT_MESSAGE_STRING+index, pControl->GetAppName(), true);
+               }
                break;
        }
        return pItem;
@@ -263,7 +355,33 @@ SharePopup::DeleteItem(int index, Tizen::Ui::Controls::ListItemBase* pItem, int
 int
 SharePopup::GetItemCount(void)
 {
+       String* pStrId = new String(L"http://tizen.org/appcontrol/operation/share_text");
+       __pAppControlList = AppManager::FindAppControlsN(pStrId,null,null,null);
+       if(__pAppControlList == null)
+       {
+               return 2;
+       }
+       int count = __pAppControlList->GetCount();
+       AppLog("SharePopup::GetItemCount appcontrol count %d",count);
+       int removeCount = 0;
+       for(int pos = 0; pos < count; pos++)
+       {
+               AppControl * pControl = dynamic_cast<AppControl*>(__pAppControlList->GetAt(pos));
+               AppLog("pControl->GetAppName() %ls",pControl->GetAppName().GetPointer());
+               if(pControl->GetAppName().Equals(L"Messages",false) == true || pControl->GetAppName().Equals(L"Email",false) == true )
+               {
+                       __pAppControlList->RemoveAt(pos,true);
+                       pos--;
+                       count --;
+                       removeCount++;
+               }
+       }
+
+       AppLog("removeCount %d",removeCount);
+       if(count+removeCount >=2)
+               return count+removeCount;
        return 2;
+
 }
 
 result
@@ -284,6 +402,80 @@ void SharePopup::RemoveAllShareInfo()
 }
 
 void
+SharePopup::StartAppControl(int index)
+{
+   HashMap extraData;
+   ShareInfo* pShareInfo = null;
+   result r = E_FAILURE;
+   bool imageAttachment = false;
+
+   extraData.Construct();
+
+   if (__pShareList != null)
+       {
+               pShareInfo = dynamic_cast<ShareInfo*>(__pShareList->GetAt(0));
+               if (pShareInfo != null)
+               {
+                       String testURL = pShareInfo->GetPageURL();
+                       AppLogDebug("getpageURL getpageURL is %ls", testURL.GetPointer());
+               }
+       }
+
+   String textVal;
+
+       if (pShareInfo != null)
+       {
+               textVal.Append(pShareInfo->GetPageTitle());
+               textVal.Append(L" <");
+               AppLog("share info url is %ls",pShareInfo->GetPageURL().GetPointer());
+               textVal.Append(pShareInfo->GetPageURL().GetPointer());
+               textVal.Append(L">");
+       }
+
+
+   String textKey = L"http://tizen.org/appcontrol/data/text";
+
+   //String attachKey = L"attachments";
+   String attachKey = L"http://tizen.org/appcontrol/data/path";
+   String attachVal;
+       if (pShareInfo != null)
+       {
+               imageAttachment = pShareInfo->GetImageAttached();
+               if (imageAttachment)
+               {
+                       attachVal = pShareInfo->GetImagePath();
+                       AppLog("SharePopup::StartEmailAppControl imagePath is %S",attachVal.GetPointer());
+               }
+               else
+               {
+                        attachVal = L"";
+               }
+       }
+
+       ArrayList* pDataList = null;
+       pDataList = new (std::nothrow) ArrayList();
+       pDataList->Construct();
+       pDataList->Add(&attachVal);
+
+
+   extraData.Add(&textKey, &textVal);
+
+   if(attachVal.GetLength() > 0)
+   {
+          extraData.Add(&attachKey, pDataList);
+   }
+
+   AppControl * pControl = dynamic_cast<AppControl*>(__pAppControlList->GetAt(index - 2));
+   if (pControl)
+   {
+         r = pControl->Start(null, null, &extraData, this);
+//        delete pControl;
+   }
+
+   delete pDataList;
+}
+
+void
 SharePopup::StartEmailAppControl(void)
 {
    HashMap extraData;
@@ -324,6 +516,9 @@ SharePopup::StartEmailAppControl(void)
    String ccVal = L"";
    String bccKey = L"http://tizen.org/appcontrol/data/bcc";
    String bccVal = L"";
+   String resultKey = L"http://tizen.org/appcontrol/data/return_result";
+   String resultVal = "true";
+
 
    //String attachKey = L"attachments";
    String attachKey = L"http://tizen.org/appcontrol/data/path";
@@ -352,22 +547,20 @@ SharePopup::StartEmailAppControl(void)
    extraData.Add(&toKey, &toVal);
    extraData.Add(&ccKey, &ccVal);
    extraData.Add(&bccKey, &bccVal);
+   extraData.Add(&resultKey, &resultVal);
    if(attachVal.GetLength() > 0)
    {
           extraData.Add(&attachKey, pDataList);
    }
+
    AppControl* pAc = AppManager::FindAppControlN(L"tizen.email", L"http://tizen.org/appcontrol/operation/compose");
    if (pAc)
    {
-          pAc->Start(null, null, &extraData, null);
+         r = pAc->Start(null, null, &extraData, this);
           delete pAc;
    }
-   if (pShareInfo != null)
-   {
-          delete pShareInfo;
-   }
-   delete pDataList;
 
+   delete pDataList;
 }
 
 void
@@ -375,6 +568,7 @@ SharePopup::StartMessageAppControl(void)
 {
        HashMap extraData;
        ShareInfo* pShareInfo = null;
+       result r = E_FAILURE;
        bool imageAttachment = false;
 
        extraData.Construct();
@@ -385,6 +579,8 @@ SharePopup::StartMessageAppControl(void)
        String textVal;
        String attachKey = L"http://tizen.org/appcontrol/data/path";
        String attachVal;
+       String resultKey = L"http://tizen.org/appcontrol/data/return_result";
+       String resultVal = "true";
        ArrayList* pDataList = null;
 
        if (__pShareList != null)
@@ -444,16 +640,14 @@ SharePopup::StartMessageAppControl(void)
                // type is SMS , attach the text
                extraData.Add(&textKey, &textVal);
        }
+       extraData.Add(&resultKey, &resultVal);
        AppControl* pAc = AppManager::FindAppControlN(L"tizen.messages", L"http://tizen.org/appcontrol/operation/compose");
        if (pAc)
        {
-               pAc->Start(null, null, &extraData, null);
+               r = pAc->Start(null, null, &extraData, this);
                delete pAc;
        }
-       if (pShareInfo != null)
-       {
-               delete pShareInfo;
-       }
+
        if(pDataList)
        {
                delete pDataList;
@@ -463,5 +657,77 @@ SharePopup::StartMessageAppControl(void)
 void
 SharePopup::OnAppControlCompleted(const Tizen::Base::String& providerId, const Tizen::Base::String& operationId, const Tizen::Base::Collection::IList* pResultList)
 {
+       AppLog("InternetApp::OnForeground called");
+
+}
+
+void SharePopup::OnAppControlCompleteResponseReceived(const Tizen::App::AppId& appId, const Tizen::Base::String& operationId, Tizen::App::AppCtrlResult appControlResult, const Tizen::Base::Collection::IMap* pExtraData)
+{
+       AppLog("SharePopup::OnAppControlCompleteResponseReceived");
 
+       ShareInfo* pShareInfo = null;
+       result r = E_FAILURE;
+       if(__pTimer)
+       {
+               __pTimer->Cancel();
+               delete __pTimer;
+               __pTimer = null;
+       }
+       if (__pShareList != null)
+       {
+               pShareInfo = dynamic_cast<ShareInfo*>(__pShareList->GetAt(0));
+       }
+
+       String attachVal;
+       bool imageAttachment = false;
+       if (pShareInfo != null)
+       {
+               imageAttachment = pShareInfo->GetImageAttached();
+               if (imageAttachment)
+               {
+                       attachVal = pShareInfo->GetImagePath();
+                       AppLog("SharePopup:: imagePath is %S",attachVal.GetPointer());
+                       r = File::Remove(attachVal);
+                       if(r == E_SUCCESS)
+                       {
+                               AppLog("removed success");
+                       }
+                       else
+                       {
+                               AppLog("removed failure");
+                       }
+               }
+               __pShareList->RemoveAll(true);
+       }
+       Popup::SetShowState(false);
+       Popup::Show();
+       Frame* pCurrentFrame = null;
+       pCurrentFrame = Application::GetInstance()->GetAppFrame()->GetFrame();
+
+       if (pCurrentFrame != null)
+       {
+               pCurrentFrame->SetEnabled(true);
+               pCurrentFrame->Invalidate(true);
+       }
+       __appControlOngoing = false;
+}
+
+bool
+SharePopup::OnKeyReleased (Control &source, const KeyEventInfo &keyEventInfo)
+{
+       AppLog("ConfirmationPopup::OnKeyReleased %d",keyEventInfo.GetKeyCode());
+       if(keyEventInfo.GetKeyCode() == KEY_BACK || keyEventInfo.GetKeyCode() == KEY_ESC)
+       {
+               if(GetShowState() == true)
+               {
+                       if(__pTimer)
+                       {
+                               __pTimer->Cancel();
+                               delete __pTimer;
+                               __pTimer = null;
+                       }
+                       SetShowState(false);
+               }
+       }
+       return false;
 }