logsui/logsapp/tsrc/ut_logsapp/src/ut_logsrecentcallsview.cpp
changeset 15 76d2cf7a585e
parent 9 68f3171a5819
child 17 90fe74753f71
--- a/logsui/logsapp/tsrc/ut_logsapp/src/ut_logsrecentcallsview.cpp	Fri Aug 06 14:57:47 2010 +0300
+++ b/logsui/logsapp/tsrc/ut_logsapp/src/ut_logsrecentcallsview.cpp	Mon Aug 23 18:14:51 2010 +0300
@@ -42,7 +42,7 @@
 #include <dialpad.h>
 #include <hbgroupbox.h>
 #include <hbmessagebox.h>
-
+#include <xqaiwdecl.h>
 
 #define VERIFY_CHECKED_ACTION( v, actionName ) { \
 QVERIFY( v->mShowFilterMenu );\
@@ -91,13 +91,13 @@
     QVERIFY( !mRecentCallsView->mFilter );
     QVERIFY( mRecentCallsView->mModel );
     QVERIFY( !mRecentCallsView->mShowFilterMenu );
-    QVERIFY( mRecentCallsView->mCurrentView == LogsServices::ViewAll );
+    QVERIFY( mRecentCallsView->mCurrentView == XQService::LogsViewAll );
     QVERIFY( mRecentCallsView->viewId() == LogsRecentViewId );
     QVERIFY( mRecentCallsView->mLayoutSectionName == "" );
-    QCOMPARE( mRecentCallsView->mActivities.at(LogsServices::ViewAll), QString(logsActivityIdViewRecent) );
-    QCOMPARE( mRecentCallsView->mActivities.at(LogsServices::ViewReceived), QString(logsActivityIdViewReceived) );
-    QCOMPARE( mRecentCallsView->mActivities.at(LogsServices::ViewCalled), QString(logsActivityIdViewCalled) );
-    QCOMPARE( mRecentCallsView->mActivities.at(LogsServices::ViewMissed), QString(logsActivityIdViewMissed) );
+    QCOMPARE( mRecentCallsView->mActivities.at(XQService::LogsViewAll), QString(logsActivityIdViewRecent) );
+    QCOMPARE( mRecentCallsView->mActivities.at(XQService::LogsViewReceived), QString(logsActivityIdViewReceived) );
+    QCOMPARE( mRecentCallsView->mActivities.at(XQService::LogsViewCalled), QString(logsActivityIdViewCalled) );
+    QCOMPARE( mRecentCallsView->mActivities.at(XQService::LogsViewMissed), QString(logsActivityIdViewMissed) );
     
 }
 
@@ -128,36 +128,36 @@
     QVERIFY( !view->mInitialized );
     QVERIFY( !view->mFilter );
     QVERIFY( !view->mEmptyListLabel );
-    view->activated(false, QVariant(LogsServices::ViewAll));
+    view->activated(false, QVariant(XQService::LogsViewAll));
     QVERIFY( view->mInitialized );
     QVERIFY( view->mFilter );
     QVERIFY( view->mEmptyListLabel );
     VERIFY_CHECKED_ACTION( view, logsShowFilterRecentMenuActionId )
     
     // Change views
-    view->activated(false, QVariant(LogsServices::ViewReceived));
+    view->activated(false, QVariant(XQService::LogsViewReceived));
     QVERIFY( view->mFilter );
     QVERIFY( view->mFilter->filterType() == LogsFilter::Received );  
     VERIFY_CHECKED_ACTION( view, logsShowFilterReceivedMenuActionId )
     
-    view->activated(false, QVariant(LogsServices::ViewMissed));
+    view->activated(false, QVariant(XQService::LogsViewMissed));
     QVERIFY( view->mFilter->filterType() == LogsFilter::Missed );  
     VERIFY_CHECKED_ACTION( view, logsShowFilterMissedMenuActionId )
     
-    view->activated(false, QVariant(LogsServices::ViewCalled));
+    view->activated(false, QVariant(XQService::LogsViewCalled));
     QVERIFY( view->mFilter->filterType() == LogsFilter::Called );  
     VERIFY_CHECKED_ACTION( view, logsShowFilterDialledMenuActionId )
     
     view->mViewManager.mainWindow().setOrientation( Qt::Horizontal );
     view->mDialpad->editor().setText( QString("hello") );
-    view->mFirstActivation = true;
-    view->activated(false, QVariant(LogsServices::ViewAll));
+    view->mActivating = true;
+    view->activated(false, QVariant(XQService::LogsViewAll));
     QVERIFY( view->mFilter->filterType() == LogsFilter::All );  
     VERIFY_CHECKED_ACTION( view, logsShowFilterRecentMenuActionId )
     QVERIFY( !view->mDialpad->editor().text().isEmpty() );
     QVERIFY( view->mListView->layoutName() == logsListLandscapeLayout );
     QVERIFY( view->mLayoutSectionName == logsViewDefaultSection );
-    QVERIFY( !view->mFirstActivation );
+    QVERIFY( !view->mActivating );
 }
 
 void UT_LogsRecentCallsView::testDeactivated()
@@ -201,7 +201,7 @@
     mRecentCallsView->mListView = 0;
             
     //filter is updated with a new one, missed calls marking as seen is started (by timer)
-    mRecentCallsView->mFirstActivation = false;
+    mRecentCallsView->mActivating = false;
     QVERIFY( mRecentCallsView->mFilter );
     mRecentCallsView->mListView = new HbListView();
     mRecentCallsView->updateFilter(LogsFilter::Missed);
@@ -212,9 +212,9 @@
     mRecentCallsView->mListView = 0;
     
     //filter is updated with a new one, missed calls marking as seen is not started
-    //as this is first view activation
+    //as view activation is ongoing
     HbStubHelper::reset();
-    mRecentCallsView->mFirstActivation = true;
+    mRecentCallsView->mActivating = true;
     mRecentCallsView->mListView = new HbListView();
     mRecentCallsView->updateFilter(LogsFilter::Missed);
     QVERIFY( mRecentCallsView->mFilter );
@@ -230,13 +230,13 @@
     QVERIFY( !mRecentCallsView->mViewName );
     
     //view name label exists
-    mRecentCallsView->mCurrentView = LogsServices::ViewMissed;
+    mRecentCallsView->mCurrentView = XQService::LogsViewMissed;
     mRecentCallsView->addStringsToMap();
     mRecentCallsView->mViewName = new HbGroupBox();
     mRecentCallsView->updateViewName();
     QVERIFY( mRecentCallsView->mViewName->heading() 
             == mRecentCallsView->mTitleMap.value(
-                   mRecentCallsView->mConversionMap.value(LogsServices::ViewMissed)));
+                   mRecentCallsView->mConversionMap.value(XQService::LogsViewMissed)));
     delete mRecentCallsView->mViewName;
     mRecentCallsView->mViewName = 0;
 }
@@ -244,7 +244,7 @@
 void UT_LogsRecentCallsView::testChangeFilter()
 {
     mRepository->recentCallsView();
-    mRecentCallsView->activated( false, QVariant(LogsServices::ViewAll) );
+    mRecentCallsView->activated( false, QVariant(XQService::LogsViewAll) );
     QVERIFY( mRecentCallsView->mFilter );
     QVERIFY( mRecentCallsView->mFilter->filterType() == LogsFilter::All );
     
@@ -255,9 +255,16 @@
     QVERIFY( mRecentCallsView->mListView->verticalScrollBarPolicy() == HbScrollArea::ScrollBarAlwaysOff );
     
     // Because of effects, filter is not changed immediately, simulate effect completion
-    QVERIFY( mRecentCallsView->mAppearingView == LogsServices::ViewMissed );
+    QVERIFY( mRecentCallsView->mAppearingView == XQService::LogsViewMissed );
     mRecentCallsView->dissappearByMovingComplete();
     QVERIFY( mRecentCallsView->mFilter->filterType() == LogsFilter::Missed );   
+    QVERIFY( mRecentCallsView->mEffectInDissappearedPhase );
+    QVERIFY( !mRecentCallsView->mListView->isVisible() ); // Hidden while in dissappeared state
+    QVERIFY( !mRecentCallsView->mEmptyListLabel->isVisible() );
+    mRecentCallsView->appearStarting();
+    QVERIFY( !mRecentCallsView->mEffectInDissappearedPhase );
+    QVERIFY( mRecentCallsView->mListView->isVisible() ); // Not anymore hidden as about to appear
+    QVERIFY( !mRecentCallsView->mEmptyListLabel->isVisible() ); // Still hidden as list has data
     mRecentCallsView->appearByMovingComplete();
     QVERIFY( mRecentCallsView->mListView->verticalScrollBarPolicy() != HbScrollArea::ScrollBarAlwaysOff );
     
@@ -293,7 +300,7 @@
     
     // No any item where to call
     LogsCall::resetTestData();
-    view->activated( false, QVariant(LogsServices::ViewAll) );
+    view->activated( false, QVariant(XQService::LogsViewAll) );
     view->callKeyPressed();
     QVERIFY( LogsCall::lastCalledFunction() != "initiateCallback" );
     
@@ -322,13 +329,14 @@
     QCOMPARE( LogsCall::lastCalledNumber(), dial );
     QVERIFY( LogsCall::lastCalledFunction() != "initiateCallback" );
     
-    // Make sure that SS numbers are left untouched when calling
+    // Make sure that number is converted to western digits before passing
+    // forward
+    HbStubHelper::stringUtilDigitConversion(true);
     LogsCall::resetTestData();
-    dial = "*#7370#";
     view->mDialpad->editor().setText( dial );
     view->callKeyPressed();
     QVERIFY( LogsCall::isCallToNumberCalled() );
-    QCOMPARE( LogsCall::lastCalledNumber(), dial );
+    QCOMPARE( LogsCall::lastCalledNumber(), QString("conv") + dial );
     LogsCall::resetTestData();
     
     // Dialpad closed but contains text, call to first item in the list
@@ -404,9 +412,10 @@
 void UT_LogsRecentCallsView::testGestureEvent()
 {
     LogsRecentCallsView* view = mRepository->recentCallsView();
-    view->activated( false, QVariant(LogsServices::ViewCalled) );
-    view->mCurrentView = LogsServices::ViewCalled;
-    view->mAppearingView = LogsServices::ViewCalled;
+    view->setLayoutDirection(Qt::LeftToRight);
+    view->activated( false, QVariant(XQService::LogsViewCalled) );
+    view->mCurrentView = XQService::LogsViewCalled;
+    view->mAppearingView = XQService::LogsViewCalled;
 
     HbSwipeGesture* swipe = new HbSwipeGesture();
     QList<QGesture*> list;
@@ -417,8 +426,8 @@
     QVERIFY(!event.isAccepted(Qt::SwipeGesture));    
     view->gestureEvent(&event);
     QVERIFY(!event.isAccepted(Qt::SwipeGesture));
-    QCOMPARE(view->mCurrentView, LogsServices::ViewCalled);
-    QCOMPARE(view->mAppearingView, LogsServices::ViewCalled);
+    QCOMPARE(view->mCurrentView, XQService::LogsViewCalled);
+    QCOMPARE(view->mAppearingView, XQService::LogsViewCalled);
     
     //swipe gesture in event, but gesture isn't finished
     list.append(swipe);
@@ -428,24 +437,26 @@
     QVERIFY(swipe->state() != Qt::GestureFinished);
     view->gestureEvent(&event2);
     QVERIFY(!event2.isAccepted(Qt::SwipeGesture));
-    QCOMPARE(view->mCurrentView, LogsServices::ViewCalled);
-    QCOMPARE(view->mAppearingView, LogsServices::ViewCalled);
+    QCOMPARE(view->mCurrentView, XQService::LogsViewCalled);
+    QCOMPARE(view->mAppearingView, XQService::LogsViewCalled);
     
     //swipe right
+    const int swipeAngleRight = 10;
     HbStubHelper::setGestureState(Qt::GestureFinished);
     event2.setAccepted(Qt::SwipeGesture, false);
-    swipe->setSceneSwipeAngle(10);
+    swipe->setSceneSwipeAngle(swipeAngleRight);
     view->gestureEvent(&event2);
-    QCOMPARE(view->mCurrentView, LogsServices::ViewCalled);
-    QCOMPARE(view->mAppearingView, LogsServices::ViewAll );
+    QCOMPARE(view->mCurrentView, XQService::LogsViewCalled);
+    QCOMPARE(view->mAppearingView, XQService::LogsViewAll );
     QVERIFY( event2.isAccepted(Qt::SwipeGesture) );
     
     //swipe left
+    const int swipeAngleLeft = 170;
     event2.setAccepted(Qt::SwipeGesture, false);
-    swipe->setSceneSwipeAngle(170);
+    swipe->setSceneSwipeAngle(swipeAngleLeft);
     view->gestureEvent(&event2);
-    QCOMPARE(view->mCurrentView, LogsServices::ViewCalled);
-    QCOMPARE(view->mAppearingView, LogsServices::ViewReceived);
+    QCOMPARE(view->mCurrentView, XQService::LogsViewCalled);
+    QCOMPARE(view->mAppearingView, XQService::LogsViewReceived);
     QVERIFY(event2.isAccepted(Qt::SwipeGesture));
     
     //swipe down, nothing happens
@@ -453,22 +464,42 @@
     swipe->setSceneSwipeAngle(70);
     view->mAppearingView = view->mCurrentView;
     view->gestureEvent(&event2);
-    QCOMPARE(view->mCurrentView, LogsServices::ViewCalled);
-    QCOMPARE(view->mAppearingView, LogsServices::ViewCalled);
+    QCOMPARE(view->mCurrentView, XQService::LogsViewCalled);
+    QCOMPARE(view->mAppearingView, XQService::LogsViewCalled);
     QVERIFY(!event2.isAccepted(Qt::SwipeGesture));
+    
+    // Swipe directions are mirrored in right-to-left layout direction
+    view->setLayoutDirection(Qt::RightToLeft);
+    event2.setAccepted(Qt::SwipeGesture, false);
+    swipe->setSceneSwipeAngle(swipeAngleLeft);
+    view->gestureEvent(&event2);
+    QCOMPARE(view->mCurrentView, XQService::LogsViewCalled);
+    QCOMPARE(view->mAppearingView, XQService::LogsViewAll);
+    QVERIFY(event2.isAccepted(Qt::SwipeGesture));
+    
+    event2.setAccepted(Qt::SwipeGesture, false);
+    swipe->setSceneSwipeAngle(swipeAngleRight);
+    view->gestureEvent(&event2);
+    QCOMPARE(view->mCurrentView, XQService::LogsViewCalled);
+    QCOMPARE(view->mAppearingView, XQService::LogsViewReceived);
+    QVERIFY(event2.isAccepted(Qt::SwipeGesture));
+    
+    qDeleteAll(list);
 }
 
 void UT_LogsRecentCallsView::testViewChangeByFlicking()
 {
+    qApp->setLayoutDirection(Qt::LeftToRight);
+    
     // At leftmost list, moving to left not possible
     // List not empty, starting list animation
     LogsRecentCallsView* view = mRepository->recentCallsView();
-    view->activated( false, QVariant(LogsServices::ViewAll) );
-    view->mCurrentView = LogsServices::ViewAll;
+    view->activated( false, QVariant(XQService::LogsViewAll) );
+    view->mCurrentView = XQService::LogsViewAll;
     QVERIFY(view->model() && view->model()->rowCount()>0);
-    view->rightFlick();
-    QVERIFY(view->mCurrentView == LogsServices::ViewAll);
-    QVERIFY(view->mAppearingView == LogsServices::ViewAll);
+    view->moveBackwardInLists();
+    QVERIFY(view->mCurrentView == XQService::LogsViewAll);
+    QVERIFY(view->mAppearingView == XQService::LogsViewAll);
     QVERIFY(view->mEffectHandler->mItemMoveNotPossibleAnimationStart->targetObject()
             == view->mListView);
     
@@ -476,24 +507,25 @@
     delete view->mFilter;
     view->mFilter = 0;
     QVERIFY(!view->model());
-    view->rightFlick();
-    QVERIFY(view->mCurrentView == LogsServices::ViewAll);
-    QVERIFY(view->mAppearingView == LogsServices::ViewAll);
+    view->moveBackwardInLists();
+    QVERIFY(view->mCurrentView == XQService::LogsViewAll);
+    QVERIFY(view->mAppearingView == XQService::LogsViewAll);
     QVERIFY(view->mEffectHandler->mItemMoveNotPossibleAnimationStart->targetObject()
             == view->mEmptyListLabel);
     
     // Moving to right possible
-    view->leftFlick();
-    QVERIFY(view->mCurrentView == LogsServices::ViewAll);
-    QVERIFY(view->mAppearingView == LogsServices::ViewCalled);
+    view->moveForwardInLists();
+    QVERIFY(view->mCurrentView == XQService::LogsViewAll);
+    QVERIFY(view->mAppearingView == XQService::LogsViewCalled);
+    QVERIFY(!view->mMoveLeftInList);
     
     // At rightmost list, moving further not possible
     // List empty, starting empty label animation
-    view->mCurrentView = LogsServices::ViewMissed;
+    view->mCurrentView = XQService::LogsViewMissed;
     QVERIFY(!view->model());
-    view->leftFlick();
-    QVERIFY(view->mCurrentView == LogsServices::ViewMissed);
-    QVERIFY(view->mAppearingView == LogsServices::ViewCalled);
+    view->moveForwardInLists();
+    QVERIFY(view->mCurrentView == XQService::LogsViewMissed);
+    QVERIFY(view->mAppearingView == XQService::LogsViewCalled);
     QVERIFY(view->mEffectHandler->mItemMoveNotPossibleAnimationStart->targetObject()
                 == view->mEmptyListLabel);
 
@@ -501,37 +533,53 @@
     LogsModel model;
     view->mFilter = new LogsFilter();
     view->mFilter->setSourceModel(&model);
-    view->leftFlick();
-    QVERIFY(view->mCurrentView == LogsServices::ViewMissed);
-    QVERIFY(view->mAppearingView == LogsServices::ViewCalled);
+    view->moveForwardInLists();
+    QVERIFY(view->mCurrentView == XQService::LogsViewMissed);
+    QVERIFY(view->mAppearingView == XQService::LogsViewCalled);
     QVERIFY(view->mEffectHandler->mItemMoveNotPossibleAnimationStart->targetObject()
                 == view->mListView);
     
     // Now moving to left is possible
-    view->rightFlick();
-    QVERIFY(view->mCurrentView == LogsServices::ViewMissed);
-    QVERIFY(view->mAppearingView == LogsServices::ViewReceived);
+    view->moveBackwardInLists();
+    QVERIFY(view->mCurrentView == XQService::LogsViewMissed);
+    QVERIFY(view->mAppearingView == XQService::LogsViewReceived);
+    QVERIFY(view->mMoveLeftInList);
     
     // Simulate effect completion which activates new view
     view->dissappearByFadingComplete();
     QVERIFY( view->mViewName->heading() 
-             == view->mTitleMap.value(view->mConversionMap.value(LogsServices::ViewReceived)) );
+             == view->mTitleMap.value(view->mConversionMap.value(XQService::LogsViewReceived)) );
     
     view->dissappearByMovingComplete();
-    QVERIFY(view->mCurrentView == LogsServices::ViewReceived);
-    QVERIFY(view->mAppearingView == LogsServices::ViewReceived);
+    QVERIFY(view->mCurrentView == XQService::LogsViewReceived);
+    QVERIFY(view->mAppearingView == XQService::LogsViewReceived);
     
     // If view would be already what expected, nothing happens
     view->dissappearByMovingComplete();
-    QVERIFY(view->mCurrentView == LogsServices::ViewReceived);
-    QVERIFY(view->mAppearingView == LogsServices::ViewReceived);
+    QVERIFY(view->mCurrentView == XQService::LogsViewReceived);
+    QVERIFY(view->mAppearingView == XQService::LogsViewReceived);
+    
+    // Check that moving direction is mirrored in RTL layout dir
+    view->setLayoutDirection(Qt::RightToLeft);
+    view->mCurrentView = XQService::LogsViewAll;
+    view->moveForwardInLists();
+    QVERIFY(view->mCurrentView == XQService::LogsViewAll);
+    QVERIFY(view->mAppearingView == XQService::LogsViewCalled);
+    QVERIFY(view->mMoveLeftInList);
+    view->mCurrentView = XQService::LogsViewCalled;
+    view->moveBackwardInLists();
+    QVERIFY(view->mCurrentView == XQService::LogsViewCalled);
+    QVERIFY(view->mAppearingView == XQService::LogsViewAll);
+    QVERIFY(!view->mMoveLeftInList);
+    
+    
 }
 
 
 void UT_LogsRecentCallsView::testModel()
 {
     LogsRecentCallsView* view = mRepository->recentCallsView();
-    view->activated(false, QVariant(LogsServices::ViewAll));
+    view->activated(false, QVariant(XQService::LogsViewAll));
     QVERIFY( view->mFilter );
     QVERIFY( view->model() == view->mFilter );
 }
@@ -635,7 +683,14 @@
     QVERIFY( view->mEmptyListLabel->isVisible() );
     QVERIFY(action && !action->isVisible());
     
+    // Empty model but effect in dissapeared state, label is set invisible
+    view->mEffectInDissappearedPhase = true;
+    view->activateEmptyListIndicator(view->mFilter);
+    QVERIFY( view->mEmptyListLabel );
+    QVERIFY( !view->mEmptyListLabel->isVisible() );
+    
     // Model has items, label is set invisible
+    view->mEffectInDissappearedPhase = false;
     LogsModel model;
     view->mFilter->setSourceModel(&model);
     view->activateEmptyListIndicator(view->mFilter);
@@ -874,7 +929,7 @@
 void UT_LogsRecentCallsView::testDialpadOpened()
 {
     mRepository->recentCallsView();
-    mRecentCallsView->activated( false, QVariant(LogsServices::ViewAll) );
+    mRecentCallsView->activated( false, QVariant(XQService::LogsViewAll) );
         
     // If contact search is disabled, opening dialpad containing input
     // does not cause going to matches view
@@ -904,9 +959,9 @@
     QByteArray serializedActivity;
     QDataStream stream(&serializedActivity, QIODevice::WriteOnly | QIODevice::Append);
     QVariantHash metaData;
-    mRecentCallsView->mCurrentView = LogsServices::ViewMissed;
+    mRecentCallsView->mCurrentView = XQService::LogsViewMissed;
     QVERIFY( mRecentCallsView->saveActivity(stream, metaData) == QString(logsActivityIdViewMissed) );
-    mRecentCallsView->mCurrentView = LogsServices::ViewAll;
+    mRecentCallsView->mCurrentView = XQService::LogsViewAll;
     QVERIFY( mRecentCallsView->saveActivity(stream, metaData) == QString(logsActivityIdViewRecent) );
 
 }
@@ -918,8 +973,44 @@
     QVariantHash metaData;
     QVariant args = mRecentCallsView->loadActivity(QString(logsActivityIdViewCalled), stream, metaData);
     QVERIFY( !args.isNull() );
-    QVERIFY( args.toInt() == LogsServices::ViewCalled );
+    QVERIFY( args.toInt() == XQService::LogsViewCalled );
     QVariant args2 = mRecentCallsView->loadActivity(QString(logsActivityIdViewMissed), stream, metaData);
     QVERIFY( !args2.isNull() );
-    QVERIFY( args2.toInt() == LogsServices::ViewMissed);
+    QVERIFY( args2.toInt() == XQService::LogsViewMissed);
 }
+
+
+void UT_LogsRecentCallsView::testEventFilter()
+{
+    // Non-gesture event 
+    HbLabel object;
+    QEvent dummyEvent(QEvent::Show);
+    QVERIFY( !mRecentCallsView->eventFilter(&object, &dummyEvent) );
+    
+    // Swipe gesture event
+    QList<QGesture*> list;
+    QGestureEvent event(list);
+    QSwipeGesture* swipe = new QSwipeGesture();
+    list.append(swipe);
+    QVERIFY( !mRecentCallsView->eventFilter(&object, &event) );
+    QVERIFY( !swipe->property("horizontallyRestricted").isValid() );
+    
+    // Tap gesture on some other object (not mListView)
+    QTapGesture* tap = new QTapGesture();
+    list.append(tap);
+    QGestureEvent event2(list);
+    HbStubHelper::setGestureState(Qt::GestureStarted);
+    QVERIFY( !mRecentCallsView->eventFilter(&object, &event2) );
+    QVERIFY( !tap->property("horizontallyRestricted").isValid() );
+        
+    //Tap gesture on list item => property is set
+    mRecentCallsView->mListView = new HbListView();
+    mRepository->model()->mTextData.append("testdata");
+    HbAbstractViewItem* viewItem = mRecentCallsView->mListView->currentViewItem();
+    QVERIFY( !mRecentCallsView->eventFilter(viewItem, &event2) );
+    QVERIFY( tap->property("horizontallyRestricted").isValid() );    
+    
+    qDeleteAll(list);
+    delete mRecentCallsView->mListView;
+    mRecentCallsView->mListView = 0;
+}