Fixed Nabi Issues N_SE-56279, N_SE-56303
[apps/osp/Internet.git] / src / IntSharePopup.cpp
index 5a79c39..c694d9a 100644 (file)
@@ -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;
@@ -47,12 +49,10 @@ const int SharePopup::ID_FORMAT_TWITTER_STRING = 503;
 ShareInfo::    ShareInfo(void)
 {
        isImageAttached = false;
-
 }
 
 ShareInfo::    ~ShareInfo(void)
 {
-
 }
 
 void
@@ -110,11 +110,44 @@ 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
@@ -136,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)
@@ -144,6 +178,9 @@ SharePopup::Initialize(void)
                pCancelButton->SetActionId(IDA_CANCEL_BUTTON);
        }
 
+       __pTimer = new(std::nothrow) Timer();
+       __pTimer->Construct(*this);
+       SetPropagatedKeyEventListener(this);
        return true;
 }
 
@@ -155,6 +192,21 @@ SharePopup::OnTerminating(void)
 }
 
 void
+SharePopup::OnTimerExpired(Timer& timer)
+{
+       Popup::SetShowState(false);
+       Popup::Show();
+       Frame* pCurrentFrame = null;
+       pCurrentFrame = Application::GetInstance()->GetAppFrame()->GetFrame();
+
+       if (pCurrentFrame != null)
+       {
+               pCurrentFrame->SetEnabled(true);
+               pCurrentFrame->Invalidate(true);
+       }
+}
+
+void
 SharePopup::OnActionPerformed(const Tizen::Ui::Control& source, int actionId)
 {
        switch(actionId)
@@ -189,6 +241,12 @@ SharePopup::OnListViewItemStateChanged(Tizen::Ui::Controls::ListView& listView,
                        __appControlOngoing = true;
                        // share via message
                        StartMessageAppControl();
+                       if(__pTimer == null)
+                       {
+                               __pTimer = new(std::nothrow) Timer();
+                               __pTimer->Construct(*this);
+                       }
+                       __pTimer->Start(2500);
                }
        }
        break;
@@ -199,13 +257,39 @@ SharePopup::OnListViewItemStateChanged(Tizen::Ui::Controls::ListView& listView,
                        __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
@@ -223,6 +307,7 @@ 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;
@@ -238,13 +323,15 @@ 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, listItemHeight), ID_FORMAT_MESSAGE_STRING, CommonUtil::GetString(L"IDS_BR_OPT_MESSAGES"), true);
+               pItem->AddElement(Rectangle(45,0, GetClientAreaBounds().width, listItemHeight), ID_FORMAT_MESSAGE_STRING, CommonUtil::GetString(L"IDS_BR_OPT_SENDURLVIA_MESSAGE"), true);
        }
        break;
        case 1:
@@ -255,6 +342,13 @@ SharePopup::CreateItem(int index, int itemWidth)
        }
        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;
@@ -269,7 +363,34 @@ 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->GetAppId().Equals(L"8r4r5ddzzn.Messages",false) == true || pControl->GetAppId().Equals(L"vxqbrefica.Email",false) == true)
+               {
+                       AppLog("Removed pControl->GetAppName %ls pControl->GetAppId() %ls",pControl->GetAppName().GetPointer(),pControl->GetAppId().GetPointer());
+                       __pAppControlList->RemoveAt(pos,true);
+                       pos--;
+                       count --;
+                       removeCount++;
+               }
+       }
+
+       AppLog("removeCount %d",removeCount);
+       if(count+removeCount >=2)
+               return count+removeCount;
        return 2;
+
 }
 
 result
@@ -290,6 +411,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;
@@ -374,12 +569,7 @@ SharePopup::StartEmailAppControl(void)
           delete pAc;
    }
 
-   if (pShareInfo != null)
-   {
-          delete pShareInfo;
-   }
    delete pDataList;
-
 }
 
 void
@@ -467,12 +657,6 @@ SharePopup::StartMessageAppControl(void)
                delete pAc;
        }
 
-
-
-       if (pShareInfo != null)
-       {
-               delete pShareInfo;
-       }
        if(pDataList)
        {
                delete pDataList;
@@ -489,7 +673,70 @@ SharePopup::OnAppControlCompleted(const Tizen::Base::String& providerId, const T
 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;
+}