tizen2.1 code merge
[apps/osp/Call.git] / src / CallConfCallerListForm.cpp
index a1ec7f6..d047ea8 100644 (file)
@@ -1,7 +1,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
 //
@@ -103,6 +103,7 @@ ConfCallerListForm::ConfCallerListForm(void)
 {
        __pConfCallInfo = null;
        __pConfCallTimer = null;
+       __isCallSplit = false;
 }
 
 ConfCallerListForm::~ConfCallerListForm(void)
@@ -134,6 +135,8 @@ ConfCallerListForm::OnInitializing(void)
                SetFormBackEventListener(this);
                pFooter->SetBackButton();
        }
+       Label* pTimerLbl = static_cast<Label*>(GetControl(IDC_CALL_TIME_LABEL));
+       SetControlAlwaysOnTop(*pTimerLbl,true);
 
        CreateTableView();
        __pCallPresentor = CallPresentationModel::GetInstance();
@@ -145,7 +148,7 @@ ConfCallerListForm::CreateTableView(void)
 {
        __pList = static_cast <TableView*> (GetControl(IDC_CONF_CALL_LIST_TABLEVIEW));
        __pList->SetItemProvider(this);
-       AddControl(*__pList);
+       AddControl(__pList);
 }
 
 void
@@ -222,8 +225,8 @@ ConfCallerListForm::OnActionPerformed(const Control& source, int actionId)
                        //If success, then invert the Hold status in conference call
                        isCallOnHold = !(isCallOnHold);
                        __pConfCallInfo->SetOnHold(isCallOnHold);
-                       //update panels and Hold button status
-                       ActivatePanels();
+                       //update tableview
+                       __pList->UpdateTableView();
                        SetHoldButtonStatus(isCallOnHold);
                }
        }
@@ -231,7 +234,7 @@ ConfCallerListForm::OnActionPerformed(const Control& source, int actionId)
 
        case IDA_BACK_EVENT:
        {
-               ArrayListT<CallInfo>* pCallList  = static_cast<ArrayListT<CallInfo>*>(__pCallPresentor->GetCallListN());
+               ArrayListT<AppCallInfo>* pCallList  = static_cast<ArrayListT<AppCallInfo>*>(__pCallPresentor->GetCallListN());
                int noOfCalls = pCallList->GetCount();
 
                //Ownership - To be deleted in 'OnSceneActivatedN' of next form
@@ -241,12 +244,12 @@ ConfCallerListForm::OnActionPerformed(const Control& source, int actionId)
                for (int index = 0; index < noOfCalls; index++)
                {
                        //fetch call info and add to list
-                       CallInfo callInfo;
+                       AppCallInfo callInfo;
                        result r = pCallList->GetAt(index, callInfo);
                        if (r == E_SUCCESS)
                        {
                                //copy call information to new instance
-                               CallInfo* pCaller = new (std::nothrow) CallInfo();
+                               AppCallInfo* pCaller = new (std::nothrow) AppCallInfo();
                                *pCaller = callInfo;
                                pCallInfoList->Add(pCaller);
                        }
@@ -255,12 +258,14 @@ ConfCallerListForm::OnActionPerformed(const Control& source, int actionId)
                if (noOfCalls == 1)
                {
                        //single active call - goto active call form
-                       pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_CONFCALL), pCallInfoList);
+                       pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_CONFCALL,
+                                       SCENE_TRANSITION_ANIMATION_TYPE_NONE, SCENE_HISTORY_OPTION_NO_HISTORY,SCENE_DESTROY_OPTION_DESTROY), pCallInfoList);
                }
                else
                {
                        //goto multiple active call form
-                       pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_MULTIPLEACTIVECALL), pCallInfoList);
+                       pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_MULTIPLEACTIVECALL,
+                                       SCENE_TRANSITION_ANIMATION_TYPE_NONE, SCENE_HISTORY_OPTION_NO_HISTORY,SCENE_DESTROY_OPTION_DESTROY), pCallInfoList);
                }
                pCallList->RemoveAll();
                delete pCallList;
@@ -278,7 +283,11 @@ ConfCallerListForm::OnActionPerformed(const Control& source, int actionId)
                {
                        break;
                }
-               __pCallPresentor->SplitFromConference(SplitConfCallerCmdIds(actionId),__pConfCallInfo->GetCallerList());
+               __isCallSplit = __pCallPresentor->SplitFromConference(SplitConfCallerCmdIds(actionId),__pConfCallInfo->GetCallerList());
+               if(__isCallSplit == true)
+               {
+                       __pList->UpdateTableView();
+               }
        }
        break;
 
@@ -307,8 +316,9 @@ ConfCallerListForm::OnSceneActivatedN(const SceneId& previousSceneId, const Scen
 {
        //set itself as listener
        __pCallPresentor->SetTelEventListener(this);
+       __isCallSplit = false;
 
-       AddOrientationEventListener(*this);
+       AppLogDebug("Enter");
 
        //DisableAllControls();
        if (__pConfCallInfo != null)
@@ -319,6 +329,7 @@ ConfCallerListForm::OnSceneActivatedN(const SceneId& previousSceneId, const Scen
        //show 1st caller's info.
        //Fetch Conference call info from telephony manager
        __pConfCallInfo = __pCallPresentor->GetConferenceCallInfoN();
+       AppLogDebug("Enter %x",__pConfCallInfo);
 
        //show active call timer
        ShowTimerInfo(IDC_CALL_TIME_LABEL, __pConfCallInfo->GetCallConnectTime());
@@ -341,18 +352,13 @@ ConfCallerListForm::OnSceneActivatedN(const SceneId& previousSceneId, const Scen
        }
 
        __pList->UpdateTableView();
-       //ActivatePanels();
+       AddOrientationEventListener(*this);
 }
 
 void
 ConfCallerListForm::OnSceneDeactivated(const SceneId& currentSceneId, const SceneId& nextSceneId)
 {
        RemoveOrientationEventListener(*this);
-       if (__pConfCallInfo != null)
-       {
-               delete __pConfCallInfo;
-               __pConfCallInfo = null;
-       }
        if (__pConfCallTimer != null)
        {
                __pConfCallTimer->Cancel();
@@ -411,7 +417,8 @@ ConfCallerListForm::SetHoldButtonStatus(bool isCallOnHold)
 void
 ConfCallerListForm::HandleParticipantsChanged(void)
 {
-       CallInfo* pCallInfo = __pCallPresentor->GetConferenceCallInfoN();
+       AppLogDebug("Enter");
+       AppCallInfo* pCallInfo = __pCallPresentor->GetConferenceCallInfoN();
        if (pCallInfo == null)
        {
                return;
@@ -421,11 +428,8 @@ ConfCallerListForm::HandleParticipantsChanged(void)
                delete __pConfCallInfo;
                __pConfCallInfo = null;
        }
-       __pConfCallInfo = new (std::nothrow) CallInfo();
+       __pConfCallInfo = new (std::nothrow) AppCallInfo();
        *__pConfCallInfo = *pCallInfo;
-       //Disable all key panels and redraw with new caller list
-       //DisableAllControls();
-       //ActivatePanels();
        __pList->UpdateTableView();
 }
 
@@ -475,164 +479,6 @@ ConfCallerListForm::DisableAllControls(void)
 }
 
 void
-ConfCallerListForm::ActivatePanels(void)
-{
-       IListT<CallInfo>* pCallList = __pConfCallInfo->GetCallerList();
-       int confCallCount = pCallList->GetCount();
-
-       for (int index = 0; index < confCallCount; index++)
-       {
-               CallInfo callInfo;
-               String pContactNo;
-               result r = pCallList->GetAt(index, callInfo);
-               if(callInfo.GetContactNumber().IsEmpty() == false)
-               {
-                       pContactNo.Append(callInfo.GetContactNumber());
-               }
-               else
-               {
-                       pContactNo.Append(AppUtility::GetResourceString(IDS_NUMBER_UNKNOWN));
-               }
-
-               //fetch contact details based on phone number
-               String* pDisplayName = callInfo.FetchCallerNameN();
-
-               if ((pDisplayName->IsEmpty()) || r != E_SUCCESS)
-               {
-                       pDisplayName->Append(pContactNo);
-               }
-
-               switch (index)
-               {
-               case 0:
-               {
-                       ActivatePanelAndAddActionListener(IDC_CALLER1_PANEL,IDC__LINE_LABEL1,IDC_SPLIT_CALLER1,IDC_END_CALLER1
-                                       ,IDC_CALLER1_LABEL,IDA_SPLIT_CALLER1,IDA_END_CALLER1,*pDisplayName);
-               }
-               break;
-
-               case 1:
-               {
-                       ActivatePanelAndAddActionListener(IDC_CALLER2_PANEL,IDC__LINE_LABEL2,IDC_SPLIT_CALLER2,IDC_END_CALLER2
-                                       ,IDC_CALLER2_LABEL,IDA_SPLIT_CALLER2,IDA_END_CALLER2,*pDisplayName);
-               }
-               break;
-
-               case 2:
-               {
-                       ActivatePanelAndAddActionListener(IDC_CALLER3_PANEL,IDC__LINE_LABEL3,IDC_SPLIT_CALLER3,IDC_END_CALLER3
-                                       ,IDC_CALLER3_LABEL,IDA_SPLIT_CALLER3,IDA_END_CALLER3,*pDisplayName);
-               }
-               break;
-
-               case 3:
-               {
-                       ActivatePanelAndAddActionListener(IDC_CALLER4_PANEL,IDC__LINE_LABEL4,IDC_SPLIT_CALLER4,IDC_END_CALLER4
-                                       ,IDC_CALLER4_LABEL,IDA_SPLIT_CALLER4,IDA_END_CALLER4,*pDisplayName);
-               }
-               break;
-
-               case 4:
-               {
-                       ActivatePanelAndAddActionListener(IDC_CALLER5_PANEL,IDC__LINE_LABEL5,IDC_SPLIT_CALLER5,IDC_END_CALLER5
-                                       ,IDC_CALLER5_LABEL,IDA_SPLIT_CALLER5,IDA_END_CALLER5,*pDisplayName);
-               }
-               break;
-
-               default:
-                       break;
-               }
-
-               delete pDisplayName;
-               pDisplayName = null;
-       }
-}
-
-void
-ConfCallerListForm::ActivatePanelAndAddActionListener( const String& panelName, const String& lineLabelName, const String& splitButtonName,
-               const String& endButtonName, const String& callerLabelName, SplitConfCallerCmdIds splitCmdId,
-               EndConfCallerCmdIds EndCmdId, const String& displayName)
-{
-       Bitmap* pNormalSplitBitmap = null;
-       Bitmap* pPressSplitBitmap = null;
-
-
-       Bitmap* pNormalEndBitmap = null;
-       Bitmap* pPressEndBitmap = null;
-
-
-
-       pNormalSplitBitmap = AppUtility::GetBitmapFromResourcesN(IDB_SPLIT_NORMAL_BUTTON_ICON,
-                       W_SPLIT_BITMAP, H_SPLIT_BITMAP);
-       pPressSplitBitmap = AppUtility::GetBitmapFromResourcesN(IDB_SPLIT_PRESS_BUTTON_ICON,
-                       W_SPLIT_BITMAP, H_SPLIT_BITMAP);
-       pNormalEndBitmap = AppUtility::GetBitmapFromResourcesN(IDB_END_NORMAL_BUTTON_ICON,
-                       W_END_BITMAP, H_END_BITMAP);
-       pPressEndBitmap = AppUtility::GetBitmapFromResourcesN(IDB_END_PRESS_BUTTON_ICON,
-                       W_END_BITMAP, H_END_BITMAP);
-
-       bool isSplitAllowed = true;
-       if ((__pCallPresentor->IsSplitAllowed() == false) || (__pConfCallInfo->IsOnHold() == true))
-       {
-               isSplitAllowed = false;
-       }
-
-       Panel* pKeysPanel = static_cast<Panel*>(GetControl(panelName));
-       if (pKeysPanel != null)
-       {
-               Button* pButtonSplit = static_cast<Button*>(pKeysPanel->GetControl(splitButtonName));
-               if (pButtonSplit != null)
-               {
-                       pButtonSplit->SetActionId(splitCmdId);
-                       pButtonSplit->AddActionEventListener(*this);
-                       pButtonSplit->SetNormalBitmap(Point(0, 0), *pNormalSplitBitmap);
-                       pButtonSplit->SetPressedBitmap(Point(0, 0), *pPressSplitBitmap);
-               }
-               Button* pButtonEnd = static_cast<Button*>(pKeysPanel->GetControl(endButtonName));
-               if (pButtonEnd != null)
-               {
-                       pButtonEnd->SetActionId(EndCmdId);
-                       pButtonEnd->AddActionEventListener(*this);
-                       pButtonEnd->SetNormalBitmap(Point(0, 0), *pNormalEndBitmap);
-                       pButtonEnd->SetPressedBitmap(Point(0, 0), *pPressEndBitmap);
-               }
-               Label* pNameLabel = static_cast<Label*>(pKeysPanel->GetControl(callerLabelName));
-               if (pButtonSplit != null)
-               {
-                       if (isSplitAllowed == false)
-                       {
-                               pButtonSplit->SetShowState(false);
-                               pNameLabel->SetBounds(pButtonSplit->GetBounds().x, pNameLabel->GetBounds().y,
-                                               pNameLabel->GetBounds().width, pNameLabel->GetBounds().height);
-                       }
-                       else
-                       {
-                               pButtonSplit->SetShowState(true);
-                               pNameLabel->SetBounds((pButtonSplit->GetBounds().x + pButtonSplit->GetBounds().width), pNameLabel->GetBounds().y,
-                                               pNameLabel->GetBounds().width, pNameLabel->GetBounds().height);
-                       }
-               }
-               pNameLabel->SetText(displayName);
-
-               pKeysPanel->SetShowState(true);
-               Label* pLineLabel1 = static_cast<Label*>(GetControl(lineLabelName));
-               pLineLabel1->SetShowState(true);
-
-               pKeysPanel->Draw(true);
-               pKeysPanel->Show();
-       }
-
-       delete pNormalEndBitmap;
-       pNormalEndBitmap = null;
-       delete pPressEndBitmap;
-       pPressEndBitmap = null;
-       delete pNormalSplitBitmap;
-       pNormalSplitBitmap = null;
-       delete pPressSplitBitmap;
-       pPressSplitBitmap = null;
-}
-
-void
 ConfCallerListForm::ShowTimerInfo(const String& timerLblName, long long startTime)
 {
        Label* pTimerLbl = static_cast<Label*>(GetControl(timerLblName));
@@ -760,10 +606,16 @@ ConfCallerListForm::OnTimerExpired(Tizen::Base::Runtime::Timer& timer)
 void
 ConfCallerListForm::OnFormBackRequested(Form& source)
 {
+       //If the call is split then wait for it to automatically go back once it split is success
+       if(__isCallSplit == true)
+       {
+               return;
+       }
        SceneManager* pSceneManager = SceneManager::GetInstance();
        AppAssert(pSceneManager);
 
-       ArrayListT<CallInfo>* pCallList  = static_cast<ArrayListT<CallInfo>*>(__pCallPresentor->GetCallListN());
+
+       ArrayListT<AppCallInfo>* pCallList  = static_cast<ArrayListT<AppCallInfo>*>(__pCallPresentor->GetCallListN());
        int noOfCalls = pCallList->GetCount();
 
        //Ownership - To be deleted in 'OnSceneActivatedN' of next form
@@ -773,12 +625,12 @@ ConfCallerListForm::OnFormBackRequested(Form& source)
        for (int index = 0; index < noOfCalls; index++)
        {
                //fetch call info and add to list
-               CallInfo callInfo;
+               AppCallInfo callInfo;
                result r = pCallList->GetAt(index, callInfo);
                if (r == E_SUCCESS)
                {
                        //copy call information to new instance
-                       CallInfo* pCaller = new (std::nothrow) CallInfo();
+                       AppCallInfo* pCaller = new (std::nothrow) AppCallInfo();
                        *pCaller = callInfo;
                        pCallInfoList->Add(pCaller);
                }
@@ -787,12 +639,14 @@ ConfCallerListForm::OnFormBackRequested(Form& source)
        if (noOfCalls == 1)
        {
                //single active call - goto active call form
-               pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_CONFCALL), pCallInfoList);
+               pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_CONFCALL,
+                               SCENE_TRANSITION_ANIMATION_TYPE_NONE, SCENE_HISTORY_OPTION_NO_HISTORY,SCENE_DESTROY_OPTION_DESTROY), pCallInfoList);
        }
        else
        {
                //goto multiple active call form
-               pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_MULTIPLEACTIVECALL), pCallInfoList);
+               pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_MULTIPLEACTIVECALL,
+                               SCENE_TRANSITION_ANIMATION_TYPE_NONE, SCENE_HISTORY_OPTION_NO_HISTORY,SCENE_DESTROY_OPTION_DESTROY), pCallInfoList);
        }
        pCallList->RemoveAll();
        delete pCallList;
@@ -819,7 +673,7 @@ ConfCallerListForm::CreateItemAndAddActionListener( Button& splitButton,
                        W_END_BITMAP, H_END_BITMAP);
 
        bool isSplitAllowed = true;
-       if ((__pCallPresentor->IsSplitAllowed() == false) || (__pConfCallInfo->IsOnHold() == true))
+       if ((__pCallPresentor->IsSplitAllowed() == false) || (__pConfCallInfo->IsOnHold() == true) || (__isCallSplit == true))
        {
                isSplitAllowed = false;
        }
@@ -832,7 +686,8 @@ ConfCallerListForm::CreateItemAndAddActionListener( Button& splitButton,
        splitButton.SetPressedBitmap(Point(0, 0), *pPressSplitBitmap);
 
 
-
+       bool isEnableEndButton = (__isCallSplit == false);
+       endButton.SetEnabled(isEnableEndButton);
        endButton.SetActionId(EndCmdId);
        endButton.AddActionEventListener(*this);
        endButton.SetNormalBitmap(Point(0, 0), *pNormalEndBitmap);
@@ -870,14 +725,15 @@ ConfCallerListForm::CreateItemAndAddActionListener( Button& splitButton,
 int
 ConfCallerListForm::GetItemCount(void)
 {
-       IListT<CallInfo>* pCallList = __pConfCallInfo->GetCallerList();
+       IListT<AppCallInfo>* pCallList = __pConfCallInfo->GetCallerList();
        return pCallList->GetCount();
 }
 
 TableViewItem*
 ConfCallerListForm::CreateItem(int itemIndex, int itemWidth)
 {
-       IListT<CallInfo>* pCallList = __pConfCallInfo->GetCallerList();
+       AppLogDebug("%d %x",itemWidth,__pConfCallInfo);
+       IListT<AppCallInfo>* pCallList = __pConfCallInfo->GetCallerList();
 
        TableViewAnnexStyle style = TABLE_VIEW_ANNEX_STYLE_NORMAL;
        TableViewItem* pItem = new (std::nothrow) TableViewItem();
@@ -894,7 +750,7 @@ ConfCallerListForm::CreateItem(int itemIndex, int itemWidth)
        pEndCallButton->Construct(Rectangle(GetBounds().width-X_END_BUTTON_PADDING-W_SPLIT_BITMAP,Y_SPLIT_BUTTON_MARGIN,W_SPLIT_BITMAP,W_SPLIT_BITMAP));
 
 
-       CallInfo callInfo;
+       AppCallInfo callInfo;
        String pContactNo;
        result r = pCallList->GetAt(itemIndex, callInfo);
 
@@ -909,48 +765,56 @@ ConfCallerListForm::CreateItem(int itemIndex, int itemWidth)
        //fetch contact details based on phone number
        String* pDisplayName = callInfo.FetchCallerNameN();
 
-       if ((pDisplayName->IsEmpty()) || r != E_SUCCESS)
+       if(pDisplayName != null)
        {
-               pDisplayName->Append(pContactNo);
-       }
-       switch (itemIndex)
-       {
-               case 0:
-               {
-                       CreateItemAndAddActionListener(*pSplitCallButton,*pEndCallButton,*pCallLabel,
-                                       IDA_SPLIT_CALLER1,IDA_END_CALLER1,*pDisplayName);
-               }
-               break;
-               case 1:
-               {
-                       CreateItemAndAddActionListener(*pSplitCallButton,*pEndCallButton,*pCallLabel,
-                                       IDA_SPLIT_CALLER2,IDA_END_CALLER2,*pDisplayName);
-               }
-               break;
-               case 2:
+               if ((pDisplayName->IsEmpty()) || r != E_SUCCESS)
                {
-                       CreateItemAndAddActionListener(*pSplitCallButton,*pEndCallButton,*pCallLabel,
-                                       IDA_SPLIT_CALLER3,IDA_END_CALLER3,*pDisplayName);
+                       pDisplayName->Append(pContactNo);
                }
-               break;
-               case 3:
+               switch (itemIndex)
                {
-                       CreateItemAndAddActionListener(*pSplitCallButton,*pEndCallButton,*pCallLabel,
-                                       IDA_SPLIT_CALLER4,IDA_END_CALLER4,*pDisplayName);
-               }
-               break;
-               case 4:
-               {
-                       CreateItemAndAddActionListener(*pSplitCallButton,*pEndCallButton,*pCallLabel,
-                                       IDA_SPLIT_CALLER5,IDA_END_CALLER5,*pDisplayName);
-               }
-               break;
-               default:
+                       case 0:
+                       {
+                               CreateItemAndAddActionListener(*pSplitCallButton,*pEndCallButton,*pCallLabel,
+                                               IDA_SPLIT_CALLER1,IDA_END_CALLER1,*pDisplayName);
+                       }
+                       break;
+                       case 1:
+                       {
+                               CreateItemAndAddActionListener(*pSplitCallButton,*pEndCallButton,*pCallLabel,
+                                               IDA_SPLIT_CALLER2,IDA_END_CALLER2,*pDisplayName);
+                       }
+                       break;
+                       case 2:
+                       {
+                               CreateItemAndAddActionListener(*pSplitCallButton,*pEndCallButton,*pCallLabel,
+                                               IDA_SPLIT_CALLER3,IDA_END_CALLER3,*pDisplayName);
+                       }
+                       break;
+                       case 3:
+                       {
+                               CreateItemAndAddActionListener(*pSplitCallButton,*pEndCallButton,*pCallLabel,
+                                               IDA_SPLIT_CALLER4,IDA_END_CALLER4,*pDisplayName);
+                       }
                        break;
+                       case 4:
+                       {
+                               CreateItemAndAddActionListener(*pSplitCallButton,*pEndCallButton,*pCallLabel,
+                                               IDA_SPLIT_CALLER5,IDA_END_CALLER5,*pDisplayName);
+                       }
+                       break;
+                       default:
+                               break;
+               }
+       }
+       pItem->AddControl(pSplitCallButton);
+       pItem->AddControl(pCallLabel);
+       pItem->AddControl(pEndCallButton);
+       if(pDisplayName != null)
+       {
+               delete pDisplayName;
+               pDisplayName = null;
        }
-       pItem->AddControl(*pSplitCallButton);
-       pItem->AddControl(*pCallLabel);
-       pItem->AddControl(*pEndCallButton);
        return pItem;
 
 
@@ -959,7 +823,9 @@ ConfCallerListForm::CreateItem(int itemIndex, int itemWidth)
 bool
 ConfCallerListForm::DeleteItem(int itemIndex, TableViewItem* pItem)
 {
-       return false;
+       delete pItem;
+       pItem = null;
+       return true;
 }
 
 void