logsui/logsapp/tsrc/ut_logsapp/src/ut_logsbaseview.cpp
changeset 8 6c9acdc6adc0
parent 6 41c0a814d878
child 9 68f3171a5819
--- a/logsui/logsapp/tsrc/ut_logsapp/src/ut_logsbaseview.cpp	Fri Jun 11 13:38:41 2010 +0300
+++ b/logsui/logsapp/tsrc/ut_logsapp/src/ut_logsbaseview.cpp	Thu Jun 24 14:44:14 2010 +0300
@@ -80,6 +80,7 @@
     QVERIFY( !mBaseView->mMessage );
     QVERIFY( !mBaseView->mContact );
     QVERIFY( !mBaseView->mCallTypeMapper );
+    QVERIFY( !mBaseView->mOptionsMenu );
 }
 
 void UT_LogsBaseView::testActivated()
@@ -273,30 +274,71 @@
     QVERIFY( HbStubHelper::widgetActionsCount() == 5 );
 }
 
-
-
-void UT_LogsBaseView::testCloseEmptyMenu()
+void UT_LogsBaseView::testUpdateMenuVisibility()
 {
-    LogsRecentCallsView* view = mRepository->recentCallsView();
-    
-    //visible actions exist
-    QVERIFY( view->menu()->actions().count() > 0 );
-    HbStubHelper::setWidgetOpen(true);
-    view->closeEmptyMenu();
-    QVERIFY(HbStubHelper::isWidgetOpen());
+    HbMenu* menu = new HbMenu;
+    HbAction* action = menu->addAction("action1");
+    mBaseView->setMenu(menu);
     
-    //no visible actions
-    foreach (QAction* action, view->menu()->actions()) {
-        action->setVisible(false);
-    }
-    view->closeEmptyMenu();
-    QVERIFY(!HbStubHelper::isWidgetOpen());
+    // No visible actions in menu => menu is replaced by empty one
+    QVERIFY(!mBaseView->mOptionsMenu);
+    QVERIFY(!mBaseView->menu()->isEmpty());
+    action->setVisible(false);
+    mBaseView->updateMenuVisibility();
+    QVERIFY(mBaseView->menu()->isEmpty());
+    QVERIFY(mBaseView->mOptionsMenu == menu);
+    QVERIFY(mBaseView->menu() != menu);
+  
+    // Visible action exists => restoring the menu
+    action->setVisible(true);
+    QVERIFY(mBaseView->mOptionsMenu);
+    mBaseView->updateMenuVisibility();
+    QVERIFY(!mBaseView->menu()->isEmpty());
+    QVERIFY(!mBaseView->mOptionsMenu);
+    QVERIFY(mBaseView->menu() == menu);
+ 
+    // Menu has no actions => menu is replaced by empty one
+    mBaseView->setMenu(0);
+    menu = mBaseView->menu();
+    QVERIFY(!mBaseView->mOptionsMenu);
+    QVERIFY(mBaseView->menu()->isEmpty());
+    mBaseView->updateMenuVisibility();
+    QVERIFY(mBaseView->menu()->isEmpty());
+    QVERIFY(mBaseView->mOptionsMenu == menu);
+    QVERIFY(mBaseView->menu() != menu);   
+}
+
+void UT_LogsBaseView::testSetMenuVisible()
+{
+    HbMenu* menu = new HbMenu;
+    menu->addAction("action1");
+    mBaseView->setMenu(menu);
     
-    //no actions
-    HbStubHelper::setWidgetOpen(true);
-    view->menu()->actions().clear();
-    view->closeEmptyMenu();
-    QVERIFY(!HbStubHelper::isWidgetOpen());
+    // Hiding menu, view menu is replaced by empty menu
+    QVERIFY(!mBaseView->mOptionsMenu);
+    QVERIFY(!mBaseView->menu()->isEmpty());
+    mBaseView->setMenuVisible(false);
+    QVERIFY(mBaseView->menu()->isEmpty());
+    QVERIFY(mBaseView->mOptionsMenu == menu);
+    QVERIFY(mBaseView->menu() != menu);
+        
+    // Trying to hide again, nothing happens
+    mBaseView->setMenuVisible(false);
+    QVERIFY(mBaseView->menu()->isEmpty());
+    QVERIFY(mBaseView->mOptionsMenu == menu);
+    QVERIFY(mBaseView->menu() != menu);
+    
+    // Showing menu, original menu is restored
+    mBaseView->setMenuVisible(true);
+    QVERIFY(!mBaseView->menu()->isEmpty());
+    QVERIFY(!mBaseView->mOptionsMenu);
+    QVERIFY(mBaseView->menu() == menu);
+    
+    // Showing again, nothing happen
+    mBaseView->setMenuVisible(true);
+    QVERIFY(!mBaseView->menu()->isEmpty());
+    QVERIFY(!mBaseView->mOptionsMenu);
+    QVERIFY(mBaseView->menu() == menu);    
 }
 
 void UT_LogsBaseView::testSaveContact()
@@ -409,23 +451,24 @@
     mBaseView->mLayoutSectionName = "dummy";
     
     //default section is loaded
+    HbListView view;
     mBaseView->mViewManager.mainWindow().setOrientation( Qt::Vertical );
     mBaseView->mDialpad->closeDialpad();
-    mBaseView->updateListSize();
+    mBaseView->updateListSize(view);
     QVERIFY( mBaseView->mLayoutSectionName == logsViewDefaultSection );
     
     //same section again, not loaded
-    mBaseView->updateListSize();
+    mBaseView->updateListSize(view);
     QVERIFY( mBaseView->mLayoutSectionName == logsViewDefaultSection );
 
     //portrait with dialpad
     mBaseView->mDialpad->openDialpad();
-    mBaseView->updateListSize();
+    mBaseView->updateListSize(view);
     QVERIFY( mBaseView->mLayoutSectionName == logsViewPortraitDialpadSection );
     
     //landscape with dialpad
     mBaseView->mViewManager.mainWindow().setOrientation( Qt::Horizontal );
-    mBaseView->updateListSize();
+    mBaseView->updateListSize(view);
     QVERIFY( mBaseView->mLayoutSectionName == logsViewLandscapeDialpadSection );
 }
 
@@ -571,3 +614,75 @@
     mBaseView->clearActivity(*manager);
     QCOMPARE( manager->activities().count(), 0 );
 }
+
+void UT_LogsBaseView::testEnsureListPositioning()
+{
+    HbStubHelper::reset();
+    HbListView list;
+    QStringList itemTexts;
+    itemTexts.append( "foo1" );
+    itemTexts.append( "foo2" );
+    QStringListModel model;
+    model.setStringList(itemTexts);
+    
+    itemTexts.append( "foo3" );
+    itemTexts.append( "foo4" );
+    QStringListModel model2;
+    model2.setStringList(itemTexts);
+    
+    list.setModel(&model);
+    
+    // No content found, nop
+    mBaseView->ensureListPositioning(list);
+    QVERIFY( !HbStubHelper::listEnsureVisibleCalled() );
+    QVERIFY( !HbStubHelper::listScrollToCalled() );
+    
+    // Content found, no visible items, nop
+    mRepository->recentCallsView();
+    mBaseView->activated(false, QVariant());
+    mBaseView->ensureListPositioning(list);
+    QVERIFY( !HbStubHelper::listEnsureVisibleCalled() );
+    QVERIFY( !HbStubHelper::listScrollToCalled() );
+    
+    // Content found and visible items which can fit the screen, height of item zero, nop
+    HbWidget* content = 
+            qobject_cast<HbWidget*>( mRepository->findWidget( logsContentId ) );
+    content->setContentsMargins(0,0,0,0);
+    content->setGeometry( QRectF(0,0,100,200) );
+    
+    HbListViewItem* item = new HbListViewItem;
+    HbStubHelper::listItems().append(item);
+    HbListViewItem* item2 = new HbListViewItem;
+    HbStubHelper::listItems().append(item2);
+    mBaseView->ensureListPositioning(list);
+    QVERIFY( !HbStubHelper::listEnsureVisibleCalled() );
+    QVERIFY( !HbStubHelper::listScrollToCalled() );
+    
+    // Screen is already filled with items, nop
+    list.setModel(&model2);
+    HbListViewItem* item3 = new HbListViewItem;
+    HbStubHelper::listItems().append(item3);
+    item->setGeometry(QRectF(0,0,100,100));
+    item2->setGeometry(QRectF(0,0,100,100));
+    item3->setGeometry(QRectF(0,0,100,100));
+    mBaseView->ensureListPositioning(list);
+    QVERIFY( !HbStubHelper::listEnsureVisibleCalled() );
+    QVERIFY( !HbStubHelper::listScrollToCalled() );
+       
+    // Content found and visible items which can fit the screen, all items ensured visible
+    list.setModel(&model);
+    delete HbStubHelper::listItems().takeLast();
+    mBaseView->ensureListPositioning(list);
+    QVERIFY( HbStubHelper::listEnsureVisibleCalled() );
+    QVERIFY( !HbStubHelper::listScrollToCalled() );
+    
+    // Content found and more visible items which can fit the screen and currently screen
+    // is not full of items, ensure that area is filled by scrolling 
+    list.setModel(&model2);
+    list.setCurrentIndex(model2.index(0,0));
+    delete HbStubHelper::listItems().takeLast();
+    mBaseView->ensureListPositioning(list);
+    QVERIFY( HbStubHelper::listEnsureVisibleCalled() );
+    QVERIFY( HbStubHelper::listScrollToCalled() );
+
+}