2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
5 // Licensed under the Apache License, Version 2.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
9 // http://www.apache.org/licenses/LICENSE-2.0/
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
18 * @file FUi_TouchEventManagerImpl.cpp
19 * @brief This is the implementation file for %_TouchEventManagerImpl class
22 * This file contains the implementation of %_TouchEventManagerImpl class.
26 #include <FBaseResult.h>
27 #include <FBaseColIEnumeratorT.h>
28 #include "FUi_TouchEventArg.h"
29 #include "FUi_TouchEventManagerImpl.h"
30 #include "FUi_TouchManager.h"
32 using namespace Tizen::Base::Collection;
34 namespace Tizen { namespace Ui
37 _TouchEventManagerImpl::_TouchEventManagerImpl(void)
41 _TouchEventManagerImpl::~_TouchEventManagerImpl(void)
45 IListT<TouchEventInfo*>*
46 _TouchEventManagerImpl::GetTouchInfoListN(void) const
48 _TouchManager* pTouchManager = _TouchManager::GetInstance();
49 SysTryReturn(NID_UI, pTouchManager, null, E_SYSTEM, "[E_SYSTEM] System error occurred.");
51 LinkedListT<TouchEventInfo*>* pTouchEventInfoList = new (std::nothrow) LinkedListT<TouchEventInfo*>;
52 SysTryReturn(NID_UI, pTouchEventInfoList != null, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
54 Tizen::Base::Collection::IListT<_FingerInfo*>* pFingerInfoList = pTouchManager->GetMultiFingerInfoListN();
55 SysTryCatch(NID_UI, pFingerInfoList, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
57 for (int i = 0; i < pFingerInfoList->GetCount(); i++)
59 _FingerInfo* pFingerInfo = null;
60 pFingerInfoList->GetAt(i, pFingerInfo);
62 if (pFingerInfo == null)
67 if (pFingerInfo->GetStatus() == _TOUCH_PRESSED || pFingerInfo->GetStatus() == _TOUCH_MOVED || pFingerInfo->GetStatus() == _TOUCH_CANCELED)
69 TouchEventInfo* pTouchEventInfo = new (std::nothrow) TouchEventInfo;
70 SysTryCatch(NID_UI, pTouchEventInfo, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
72 _Control* pControl = pTouchManager->GetTouchControlSource();
75 _ControlImpl* pImpl = static_cast<_ControlImpl*>(pControl->GetUserData());
77 _TouchStatus touchStatus = pFingerInfo->GetStatus();
78 if (pFingerInfo->GetStatus() != _TOUCH_CANCELED)
80 touchStatus = _TOUCH_PRESSED;
83 _TouchEventArg touchEventArg(pImpl->GetPublic(), touchStatus);
84 touchEventArg.SetTouchPosition(pFingerInfo->GetPointId(), pFingerInfo->GetStartPoint().x, pFingerInfo->GetStartPoint().y, pFingerInfo->GetPoint().x, pFingerInfo->GetPoint().y);
85 pTouchEventInfo->Construct(touchEventArg);
87 pTouchEventInfoList->Add(pTouchEventInfo);
92 delete pFingerInfoList;
93 pFingerInfoList = null;
95 return pTouchEventInfoList;
98 if (pTouchEventInfoList)
100 IEnumeratorT<TouchEventInfo*>* pEnumerator = pTouchEventInfoList->GetEnumeratorN();
103 while(pEnumerator->MoveNext() == E_SUCCESS)
105 TouchEventInfo* pTouchEventInfo = null;
106 pEnumerator->GetCurrent(pTouchEventInfo);
107 if (!pTouchEventInfo)
112 delete pTouchEventInfo;
117 pTouchEventInfoList->RemoveAll();;
118 delete pTouchEventInfoList;
119 pTouchEventInfoList = null;
124 delete pFingerInfoList;
125 pFingerInfoList = null;