logsui/logsapp/src/logsrecentcallsview.cpp
changeset 11 64a47b97e1e1
parent 10 b04270301d3b
child 14 f27aebe284bb
--- a/logsui/logsapp/src/logsrecentcallsview.cpp	Wed Jun 23 18:13:05 2010 +0300
+++ b/logsui/logsapp/src/logsrecentcallsview.cpp	Tue Jul 06 14:16:36 2010 +0300
@@ -65,10 +65,12 @@
       mMoveLeftInList(false),
       mEffectHandler(0),
       mListViewX(0),
+      mEmptyListLabelX(0),
       mMatchesModel(0),
       mMarkingMissedAsSeen(false),
       mPageIndicator(0),
-      mFirstActivation(true)
+      mFirstActivation(true),
+      mListScrollBarPolicy(HbScrollArea::ScrollBarAutoHide)
 {
     LOGS_QDEBUG( "logs [UI] <-> LogsRecentCallsView::LogsRecentCallsView()" );
     mModel = mRepository.model();
@@ -130,6 +132,10 @@
 
     mFirstActivation = false;
     
+    if (mEmptyListLabel) {
+        mEmptyListLabelX = mEmptyListLabel->pos().x();
+    }
+  
     LOGS_QDEBUG( "logs [UI] <- LogsRecentCallsView::activated()" );  
 }
 
@@ -213,7 +219,8 @@
             this, SLOT(dissappearByMovingComplete()));
     connect(mEffectHandler, SIGNAL(dissappearByFadingComplete()), 
             this, SLOT(dissappearByFadingComplete()));
-    
+    connect(mEffectHandler, SIGNAL(appearByMovingComplete()), 
+            this, SLOT(appearByMovingComplete()));
     mPageIndicator = qobject_cast<LogsPageIndicator*>
                         (mRepository.findWidget(logsPageIndicatorId));
     
@@ -440,6 +447,8 @@
     mListViewX = mListView->pos().x();
     
     grabGesture(Qt::SwipeGesture);
+    
+    mListScrollBarPolicy = mListView->verticalScrollBarPolicy();
 
     LOGS_QDEBUG( "logs [UI] <- LogsRecentCallsView::initListWidget() " );
 }
@@ -464,7 +473,7 @@
         
         mListView->setModel( mFilter );//ownership not transferred
         
-        scrollToTopItem();
+        scrollToTopItem(mListView);
         
         activateEmptyListIndicator(mFilter);
          
@@ -569,7 +578,8 @@
         if (model() && model()->rowCount() > 0) {
             mEffectHandler->startMoveNotPossibleEffect(*mListView, false, mListViewX);
         } else {
-            mEffectHandler->startMoveNotPossibleEffect(*mEmptyListLabel, false, mListViewX);
+            mEffectHandler->startMoveNotPossibleEffect(*mEmptyListLabel, 
+                    false, mEmptyListLabelX);
         }
     }
     LOGS_QDEBUG( "logs [UI] <- LogsRecentCallsView::leftFlick()" );
@@ -590,7 +600,8 @@
         if (model() && model()->rowCount() > 0) {
             mEffectHandler->startMoveNotPossibleEffect(*mListView, true, mListViewX);
         } else {
-            mEffectHandler->startMoveNotPossibleEffect(*mEmptyListLabel, true, mListViewX);
+            mEffectHandler->startMoveNotPossibleEffect(*mEmptyListLabel, 
+                    true, mEmptyListLabelX);
         }
     }
     LOGS_QDEBUG( "logs [UI] <- LogsRecentCallsView::rightFlick()" );
@@ -613,11 +624,13 @@
     }
     
     mMoveLeftInList = mConversionMap.value(view) < mConversionMap.value(mCurrentView);
-
     mAppearingView = view;
+    // Disable scrollbar while moving the list for more nice looks
+    mListView->setVerticalScrollBarPolicy(HbScrollArea::ScrollBarAlwaysOff);  
     mEffectHandler->startDissappearAppearByFadingEffect(*mViewName);
     mEffectHandler->startDissappearAppearByMovingEffect(
-            *mListView, *mEmptyListLabel, !mMoveLeftInList, mListViewX);
+            *mListView, *mEmptyListLabel, !mMoveLeftInList, 
+             mListViewX, mEmptyListLabelX);
 
     mPageIndicator->setActiveItemIndex(mConversionMap.value(mAppearingView));
     
@@ -647,11 +660,26 @@
 {
     LOGS_QDEBUG( "logs [UI] -> LogsRecentCallsView::dissappearByMovingComplete()" )
     
-    updateView( mAppearingView );
+    updateView( mAppearingView ); 
     
     LOGS_QDEBUG( "logs [UI] <- LogsRecentCallsView::dissappearByMovingComplete()" )
 }
 
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void LogsRecentCallsView::appearByMovingComplete()
+{
+    LOGS_QDEBUG( "logs [UI] -> LogsRecentCallsView::appearByMovingComplete()" )
+    
+    // Restore scrollbar which was hidden when animation started
+    mListView->setVerticalScrollBarPolicy(mListScrollBarPolicy);
+    
+    LOGS_QDEBUG( "logs [UI] <- LogsRecentCallsView::appearByMovingComplete()" )
+}
+
 // -----------------------------------------------------------------------------
 // LogsRecentCallsView::updateMenu
 // -----------------------------------------------------------------------------
@@ -673,6 +701,8 @@
     updateDialpadCallAndMessagingActions();
     updateContactSearchAction();
     
+    updateMenuVisibility();
+    
     LOGS_QDEBUG( "logs [UI] <- LogsRecentCallsView::updateMenu()" );
 }
 
@@ -697,7 +727,7 @@
     if ( mListView ) {
         updateMenu();
         updateListLayoutName(*mListView);
-        updateListSize();
+        updateListSize(*mListView);
         LogsConfigurationParams param;
         param.setListItemTextWidth( getListItemTextWidth() );
         mModel->updateConfiguration(param);
@@ -785,18 +815,3 @@
     }
     return mMarkingMissedAsSeen;
 }
-
-// -----------------------------------------------------------------------------
-// LogsRecentCallsView::scrollToTopItem
-// -----------------------------------------------------------------------------
-//
-void LogsRecentCallsView::scrollToTopItem()
-{
-    LOGS_QDEBUG( "logs [UI] -> LogsRecentCallsView::scrollToTopItem()" );
-    disconnect( mFilter, SIGNAL(rowsInserted(const QModelIndex&,int,int)), 
-                this, SLOT(scrollToTopItem()));
-    if ( mFilter && mFilter->hasIndex(0,0) ) {
-        mListView->scrollTo( mFilter->index(0,0) );
-    }
-    LOGS_QDEBUG( "logs [UI] <- LogsRecentCallsView::scrollToTopItem()" );
-}