diff -r 0e1e938beb1a -r a9d57bd8d7b7 videocollection/videocollectionview/tsrc/testlistmenu/src/testlistmenu.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videocollection/videocollectionview/tsrc/testlistmenu/src/testlistmenu.cpp Mon Oct 04 00:19:07 2010 +0300 @@ -0,0 +1,663 @@ +/** +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: tester for methods in VideoListView +* +*/ + +// Version : %version: 1 % + + +#include +#include +#include +#include "hbapplication.h" +#include "hbinstance.h" +#include "hbmenu.h" +#include "hbmenudata.h" +#include "hbtoolbar.h" +#include "hbaction.h" +#include "hbstackedwidget.h" +#include "hbgroupbox.h" +#include "hbdocumentloader.h" +#include "hbview.h" +#include "hblistview.h" +#include +#include +#include + +#include "testlistmenu.h" + +#define private public +#include "videolistmenu.h" +#include "videolistwidget.h" +#include "videolistview.h" +#include "videoproxymodelgeneric.h" +#undef private + +#include "videolistwidgetdata.h" +#include "videocollectionuiloaderdata.h" +#include "videoproxymodeldata.h" +#include "videolistselectiondialog.h" +#include "videolistselectiondialogdata.h" +#include "videocollectionviewutils.h" +#include "videocollectionviewutilsdata.h" +#include "videocollectioncommon.h" +#include "videocollectionuiloader.h" +#include "videolistdatamodel.h" +#include "videolistdatamodeldata.h" +#include "videocollectiontrace.h" + +// --------------------------------------------------------------------------- +// main +// --------------------------------------------------------------------------- +// +int main(int argc, char *argv[]) +{ + HbApplication app(argc, argv); + HbMainWindow window; + hbInstance->mWindowses.append(&window); + + TestListMenu tv; + + int res; + if(argc > 1) + { + res = QTest::qExec(&tv, argc, argv); + } + else + { + char *pass[3]; + pass[0] = argv[0]; + pass[1] = "-o"; + pass[2] = "c:\\data\\testlistmenu.txt"; + res = QTest::qExec(&tv, 3, pass); + } + + return res; +} + +// --------------------------------------------------------------------------- +// init +// --------------------------------------------------------------------------- +// +void TestListMenu::init() +{ + mUiLoader = new VideoCollectionUiLoader(); + mUiLoader->reset(); + + bool ok(false); + mUiLoader->load(DOCML_VIDEOCOLLECTIONVIEW_FILE, &ok); + if (!ok) + { + return; + } + + mListView = mUiLoader->findWidget( DOCML_NAME_VIEW ); + QVERIFY(mListView); + + mDataModel = new VideoListDataModel(); + + mModel = new VideoProxyModelGeneric(); + mModel->setSourceModel(mDataModel); + + mListWidget = new VideoListWidget(mUiLoader, 0); + mListWidget->initialize(*mModel, false, VideoCollectionCommon::ELevelVideos); + + mListView->mCurrentList = mListWidget; + + mTestObject = new VideoListMenu(mUiLoader, mListView); +} + +// --------------------------------------------------------------------------- +// cleanup +// --------------------------------------------------------------------------- +// +void TestListMenu::cleanup() +{ + delete mUiLoader; + mUiLoader = 0; + + delete mListWidget; + mListWidget = 0; + + delete mModel; + mModel = 0; + + mListView = 0; + + disconnect(); + + VideoListWidgetData::reset(); + VideoProxyModelData::reset(); + VideoCollectionViewUtilsData::reset(); + HbDocumentLoader::cleanup(); +} + +// --------------------------------------------------------------------------- +// testInitializeMenu +// --------------------------------------------------------------------------- +// +void TestListMenu::testInitializeMenu() +{ + // Good case + init(); + QVERIFY(mTestObject->initializeMenu() == 0); + QVERIFY(VideoCollectionUiLoaderData::mAddDataCallCount == 1); + cleanup(); + + // Test null ui loader. + mTestObject = new VideoListMenu(0, 0); + QVERIFY(mTestObject->initializeMenu() == -1); + QVERIFY(VideoCollectionUiLoaderData::mAddDataCallCount == 0); + cleanup(); + + // Is service + init(); + VideoCollectionViewUtilsData::mIsServiceValue = true; + VideoCollectionViewUtils::instance().setIsService(); + QVERIFY(mTestObject->initializeMenu() == 0); + QVERIFY(VideoCollectionUiLoaderData::mAddDataCallCount == 1); + // Call again, now mVideoServices is set already. + QVERIFY(mTestObject->initializeMenu() == 0); + QVERIFY(VideoCollectionUiLoaderData::mAddDataCallCount == 2); + cleanup(); +} + +// --------------------------------------------------------------------------- +// testInitializeMenu +// --------------------------------------------------------------------------- +// +void TestListMenu::testStartSorting() +{ + HbAction *action(0); + HbMenu *sortMenu(0); + HbMenu *optionsMenu(0); + HbAction *sortMenuAction = new HbAction("test"); + + init(); + + // No current list. + connect(this, SIGNAL(testSignal()), mTestObject, SLOT(startSorting())); + mListView->mCurrentList = 0; + emit testSignal(); + QCOMPARE(VideoProxyModelData::mDoSortingCallCount, 0); + mListView->mCurrentList = mListWidget; + + // Action is not sort menu + action = mUiLoader->findObject(DOCML_NAME_DELETE_MULTIPLE); + optionsMenu = mUiLoader->findWidget(DOCML_NAME_OPTIONS_MENU); + sortMenu = mUiLoader->findWidget(DOCML_NAME_SORT_MENU); + QVERIFY(action != 0); + optionsMenu->setActiveAction(action); + sortMenuAction->setMenu(sortMenu); + HbMenuData::mMenuAction = sortMenuAction; + emit testSignal(); + QCOMPARE(VideoProxyModelData::mDoSortingCallCount, 0); + + // Sort menu has no active action. + action = mUiLoader->findObject(DOCML_NAME_DELETE_MULTIPLE); + optionsMenu = mUiLoader->findWidget(DOCML_NAME_OPTIONS_MENU); + sortMenu = mUiLoader->findWidget(DOCML_NAME_SORT_MENU); + QVERIFY(action != 0); + optionsMenu->setActiveAction(action); + sortMenuAction->setMenu(sortMenu); + HbMenuData::mMenuAction = action; + sortMenu->setActiveAction(0); + emit testSignal(); + QCOMPARE(VideoProxyModelData::mDoSortingCallCount, 0); + + // Good cases + + cleanup(); + + TMPXItemId invalidId = TMPXItemId::InvalidId(); + + init(); + mListView->activateView(invalidId); + sortMenu = mUiLoader->findWidget(DOCML_NAME_SORT_MENU); + sortMenuAction->setMenu(sortMenu); + HbMenuData::mMenuAction = sortMenuAction; + VideoProxyModelGeneric* model = mListView->mCurrentList->getModel(); + QVERIFY(action != 0); + mUiLoader->findWidget(DOCML_NAME_OPTIONS_MENU)->setActiveAction(sortMenuAction); + HbAction *sortAction = mUiLoader->findObject(DOCML_NAME_SORT_BY_NAME); + QVERIFY(sortAction != 0); + sortMenu->setActiveAction(sortAction); + model->setSortRole(1); + connect(this, SIGNAL(testObjectReadySignal(QObject*, const QString)), mTestObject, SLOT(objectReadySlot(QObject*, const QString))); + emit testObjectReadySignal(mUiLoader->findObject(DOCML_NAME_SORT_BY_DATE), DOCML_NAME_SORT_BY_DATE); + emit testObjectReadySignal(mUiLoader->findObject(DOCML_NAME_SORT_BY_NAME), DOCML_NAME_SORT_BY_NAME); + emit testObjectReadySignal(mUiLoader->findObject(DOCML_NAME_SORT_BY_NUMBER_OF_ITEMS), DOCML_NAME_SORT_BY_NUMBER_OF_ITEMS); + emit testObjectReadySignal(mUiLoader->findObject(DOCML_NAME_SORT_BY_SIZE), DOCML_NAME_SORT_BY_SIZE); + disconnect(this, SIGNAL(testObjectReadySignal(QObject*, const QString)), mTestObject, SLOT(objectReadySlot(QObject*, const QString))); + + connect(this, SIGNAL(testSignal()), mTestObject, SLOT(startSorting())); + + // No model. + mListView->mCurrentList->mModel = 0; + emit testSignal(); + QCOMPARE(VideoProxyModelData::mDoSortingCallCount, 0); + + // First ok case. + mListView->mCurrentList->mModel = mModel; + emit testSignal(); + + // since current list is videolist, sorting count is 2 because both all videos and collection content are sorted + QCOMPARE(VideoProxyModelData::mDoSortingCallCount, 2); + QCOMPARE(VideoProxyModelData::mSortRole, (int)VideoCollectionCommon::KeyTitle); + QCOMPARE(VideoProxyModelData::mSortOrder, Qt::AscendingOrder); + QVERIFY(VideoProxyModelData::mSortAsync); + + VideoProxyModelData::mDoSortingCallCount = 0; + // emit test signal again, with same parameters. Sorting should be switched to + // descending order. + emit testSignal(); + // since current list is videolist, sorting count is 2 because both all videos and collection content are sorted + QCOMPARE(VideoProxyModelData::mDoSortingCallCount, 2); + QCOMPARE(VideoProxyModelData::mSortRole, (int)VideoCollectionCommon::KeyTitle); + QCOMPARE(VideoProxyModelData::mSortOrder, Qt::DescendingOrder); + QVERIFY(VideoProxyModelData::mSortAsync); + + VideoProxyModelData::mDoSortingCallCount = 0; + // on third emit, sorting should be switched back to ascending + emit testSignal(); + // since current list is videolist, sorting count is 2 because both all videos and collection content are sorted + QCOMPARE(VideoProxyModelData::mDoSortingCallCount, 2); + QCOMPARE(VideoProxyModelData::mSortRole, (int)VideoCollectionCommon::KeyTitle); + QCOMPARE(VideoProxyModelData::mSortOrder, Qt::AscendingOrder); + QVERIFY(VideoProxyModelData::mSortAsync); + + // test that after changing the sort role, the order is also switched to ascending. + model->doSorting(model->sortRole(), Qt::DescendingOrder); + sortAction = mUiLoader->findObject(DOCML_NAME_SORT_BY_DATE); + QVERIFY(sortAction != 0); + sortMenu->setActiveAction(sortAction); + VideoProxyModelData::mDoSortingCallCount = 0; + emit testSignal(); + // since current list is videolist, sorting count is 2 because both all videos and collection content are sorted + QCOMPARE(VideoProxyModelData::mDoSortingCallCount, 2); + QCOMPARE(VideoProxyModelData::mSortRole, (int)VideoCollectionCommon::KeyDateTime); + QCOMPARE(VideoProxyModelData::mSortOrder, Qt::AscendingOrder); + QVERIFY(VideoProxyModelData::mSortAsync); + cleanup(); + + // start sorting slot: + // -is service + init(); + connect(this, SIGNAL(testSignal()), mTestObject, SLOT(startSorting())); + sortMenu = mUiLoader->findWidget(DOCML_NAME_SORT_MENU); + sortMenuAction->setMenu(sortMenu); + HbMenuData::mMenuAction = sortMenuAction; + mUiLoader->findWidget(DOCML_NAME_OPTIONS_MENU)->setActiveAction(sortMenuAction); + sortAction = mUiLoader->findObject(DOCML_NAME_SORT_BY_NAME); + QVERIFY(sortAction != 0); + sortMenu->setActiveAction(sortAction); + mTestObject->mVideoServices = VideoServices::instance(); + int sortRole = VideoCollectionViewUtilsData::mVideoSortRole; + emit testSignal(); + QCOMPARE(sortRole, VideoCollectionViewUtilsData::mVideoSortRole); + cleanup(); +} + +/** + * Tests testDeleteItemsSlot + */ +void TestListMenu::testDeleteItemsSlot() +{ + init(); + connect( this, SIGNAL(testSignal()), mTestObject, SLOT(deleteItemsSlot()) ); + + // dialog loading fails + VideoCollectionUiLoaderData::mFailDialogLoad = true; + emit testSignal(); + QCOMPARE(VideoListSelectionDialogData::mMultiSelectionLaunchCount, 0); + + // selection dialog exists + VideoCollectionUiLoaderData::mFailDialogLoad = false; + VideoProxyModelData::mOpenedItemId = TMPXItemId(2, 3); + emit testSignal(); + QCOMPARE(VideoListSelectionDialogData::mMultiSelectionLaunchCount, 1); + QCOMPARE(VideoListSelectionDialogData::mSelectionType, (int)VideoListSelectionDialog::EDeleteVideos); + QVERIFY(VideoListSelectionDialogData::mSettedMpxId == VideoProxyModelData::mOpenedItemId); + + // test second successful activation. + VideoProxyModelData::mOpenedItemId = TMPXItemId(3, 2); + emit testSignal(); + QCOMPARE(VideoListSelectionDialogData::mMultiSelectionLaunchCount, 2); + QCOMPARE(VideoListSelectionDialogData::mSelectionType, (int)VideoListSelectionDialog::EDeleteVideos); + QVERIFY(VideoListSelectionDialogData::mSettedMpxId == VideoProxyModelData::mOpenedItemId); + + cleanup(); +} + +// --------------------------------------------------------------------------- +// testCreateCollectionSlot +// --------------------------------------------------------------------------- +// +void TestListMenu::testCreateCollectionSlot() +{ + init(); + QVERIFY(connect(this, SIGNAL(testSignal()), mTestObject, SLOT(createCollectionSlot()))); + + // dialog finding fails + VideoCollectionUiLoaderData::mFailDialogLoad = true; + emit testSignal(); + QCOMPARE(VideoListSelectionDialogData::mMultiSelectionLaunchCount, 0); + QCOMPARE(VideoListSelectionDialogData::mSelectionType, -1); + // dialog finding succeeds + VideoCollectionUiLoaderData::mFailDialogLoad = false; + emit testSignal(); + QVERIFY(VideoListSelectionDialogData::mSettedMpxId == TMPXItemId::InvalidId()); + QCOMPARE(VideoListSelectionDialogData::mSelectionType, (int)VideoListSelectionDialog::ECreateCollection); + QCOMPARE(VideoListSelectionDialogData::mMultiSelectionLaunchCount, 1); + + disconnect(this, SIGNAL(testSignal()), mTestObject, SLOT(createCollectionSlot())); + cleanup(); +} + +// --------------------------------------------------------------------------- +// testAddVideosToCollectionSlot +// --------------------------------------------------------------------------- +// +void TestListMenu::testAddVideosToCollectionSlot() +{ + init(); + QVERIFY(connect(this, SIGNAL(testSignal()), mTestObject, SLOT(addVideosToCollectionSlot()))); + + // No current list. + mListView->mCurrentList = 0; + emit testSignal(); + QCOMPARE(VideoListSelectionDialogData::mMultiSelectionLaunchCount, 0); + mListView->mCurrentList = mListWidget; + + // Current list has no model. + mListView->mCurrentList->mModel = 0; + emit testSignal(); + QCOMPARE(VideoListSelectionDialogData::mMultiSelectionLaunchCount, 0); + mListView->mCurrentList->mModel = mModel; + + // dialog finding fails + VideoCollectionUiLoaderData::mFailDialogLoad = true; + emit testSignal(); + QCOMPARE(VideoListSelectionDialogData::mMultiSelectionLaunchCount, 0); + QCOMPARE(VideoListSelectionDialogData::mSelectionType, -1); + + // dialog finding succeeds + VideoCollectionUiLoaderData::mFailDialogLoad = false; + emit testSignal(); + QVERIFY(VideoListSelectionDialogData::mSettedMpxId == TMPXItemId::InvalidId()); + QCOMPARE(VideoListSelectionDialogData::mSelectionType, (int)VideoListSelectionDialog::EAddToCollection); + QCOMPARE(VideoListSelectionDialogData::mMultiSelectionLaunchCount, 1); + + cleanup(); +} + +// --------------------------------------------------------------------------- +// testAboutToShowMainMenuSlot +// --------------------------------------------------------------------------- +// +void TestListMenu::testAboutToShowMainMenuSlot() +{ + init(); + + VideoServices *videoServices = VideoServices::instance(); + + // Setup menu objects. + connect(this, SIGNAL(testObjectReadySignal(QObject*, const QString)), mTestObject, SLOT(objectReadySlot(QObject*, const QString))); + emit testObjectReadySignal(mUiLoader->findObject(DOCML_NAME_OPTIONS_MENU), DOCML_NAME_OPTIONS_MENU); + emit testObjectReadySignal(mUiLoader->findObject(DOCML_NAME_SORT_BY_DATE), DOCML_NAME_SORT_BY_DATE); + emit testObjectReadySignal(mUiLoader->findObject(DOCML_NAME_SORT_BY_NAME), DOCML_NAME_SORT_BY_NAME); + emit testObjectReadySignal(mUiLoader->findObject(DOCML_NAME_SORT_BY_NUMBER_OF_ITEMS), DOCML_NAME_SORT_BY_NUMBER_OF_ITEMS); + emit testObjectReadySignal(mUiLoader->findObject(DOCML_NAME_ADD_TO_COLLECTION), DOCML_NAME_ADD_TO_COLLECTION); + emit testObjectReadySignal(mUiLoader->findObject(DOCML_NAME_CREATE_COLLECTION), DOCML_NAME_CREATE_COLLECTION); + emit testObjectReadySignal(mUiLoader->findObject(DOCML_NAME_DELETE_MULTIPLE), DOCML_NAME_DELETE_MULTIPLE); + disconnect(this, SIGNAL(testObjectReadySignal(QObject*, const QString)), mTestObject, SLOT(objectReadySlot(QObject*, const QString))); + + // No current list. + setVisibilityForMenuActions(false); + VideoListDataModelData::setRowCount(*mDataModel, 5); + QVERIFY(connect(this, SIGNAL(testSignal()), mTestObject, SLOT(aboutToShowMainMenuSlot()))); + mListView->mCurrentList = 0; + emit testSignal(); + int visible = visibleMenuActions(); + QCOMPARE(visible, 0); + + // No model, current list is category + mListView->mCurrentList = mListWidget; + mListWidget->mCurrentLevel = VideoCollectionCommon::ELevelCategory; + mListWidget->mModel = 0; + setVisibilityForMenuActions(true); + VideoListDataModelData::setRowCount(*mDataModel, 0); + emit testSignal(); + visible = visibleMenuActions(); + QCOMPARE(visible, 1); + + // No model, current list is not category + mListWidget->mCurrentLevel = VideoCollectionCommon::ELevelVideos; + mListWidget->mModel = 0; + setVisibilityForMenuActions(true); + VideoListDataModelData::setRowCount(*mDataModel, 0); + emit testSignal(); + visible = visibleMenuActions(); + QCOMPARE(visible, 0); + + // Empty model. + mListView->mCurrentList->mModel = mModel; + setVisibilityForMenuActions(true); + VideoListDataModelData::setRowCount(*mDataModel, 0); + emit testSignal(); + visible = visibleMenuActions(); + QCOMPARE(visible, 0); + + VideoProxyModelData::mSortRole = VideoCollectionCommon::KeyDateTime; + VideoProxyModelData::mSortOrder = Qt::AscendingOrder; + + // Level videos + VideoListDataModelData::setRowCount(*mDataModel, 10); + mListWidget->mCurrentLevel = VideoCollectionCommon::ELevelVideos; + mTestObject->mSortingRoles.key(VideoCollectionCommon::KeyDateTime)->setChecked(false); + mTestObject->mVideoServices = 0; + emit testSignal(); + visible = visibleMenuActions(); + QCOMPARE(visible, 5); + QVERIFY(mTestObject->mSortingRoles.key(VideoCollectionCommon::KeyDateTime)->isChecked()); + + // Level videos and is service. + VideoListDataModelData::setRowCount(*mDataModel, 10); + mListWidget->mCurrentLevel = VideoCollectionCommon::ELevelVideos; + mTestObject->mSortingRoles.key(VideoCollectionCommon::KeyDateTime)->setChecked(false); + mTestObject->mVideoServices = videoServices; + emit testSignal(); + visible = visibleMenuActions(); + QCOMPARE(visible, 3); + QVERIFY(mTestObject->mSortingRoles.key(VideoCollectionCommon::KeyDateTime)->isChecked()); + + // Level category + VideoListDataModelData::setRowCount(*mDataModel, 10); + mListWidget->mCurrentLevel = VideoCollectionCommon::ELevelCategory; + mTestObject->mSortingRoles.key(VideoCollectionCommon::KeyDateTime)->setChecked(false); + mTestObject->mVideoServices = 0; + emit testSignal(); + visible = visibleMenuActions(); + QCOMPARE(visible, 3); + QVERIFY(mTestObject->mSortingRoles.key(VideoCollectionCommon::KeyDateTime)->isChecked()); + + // Level ELevelDefaultColl + VideoListDataModelData::setRowCount(*mDataModel, 10); + mListWidget->mCurrentLevel = VideoCollectionCommon::ELevelDefaultColl; + mTestObject->mSortingRoles.key(VideoCollectionCommon::KeyDateTime)->setChecked(false); + mTestObject->mVideoServices = 0; + emit testSignal(); + visible = visibleMenuActions(); + QCOMPARE(visible, 4); + QVERIFY(mTestObject->mSortingRoles.key(VideoCollectionCommon::KeyDateTime)->isChecked()); + + // Level ELevelDefaultColl and is service + VideoListDataModelData::setRowCount(*mDataModel, 10); + mListWidget->mCurrentLevel = VideoCollectionCommon::ELevelDefaultColl; + mTestObject->mSortingRoles.key(VideoCollectionCommon::KeyDateTime)->setChecked(false); + mTestObject->mVideoServices = videoServices; + emit testSignal(); + visible = visibleMenuActions(); + QCOMPARE(visible, 3); + QVERIFY(mTestObject->mSortingRoles.key(VideoCollectionCommon::KeyDateTime)->isChecked()); + + VideoProxyModelData::mSortRole = VideoCollectionCommon::KeyDateTime; + VideoProxyModelData::mSortOrder = Qt::AscendingOrder; + // Level ELevelAlbum + VideoListDataModelData::setRowCount(*mDataModel, 10); + mListWidget->mCurrentLevel = VideoCollectionCommon::ELevelAlbum; + mTestObject->mSortingRoles.key(VideoCollectionCommon::KeyDateTime)->setChecked(false); + mTestObject->mVideoServices = 0; + emit testSignal(); + visible = visibleMenuActions(); + QCOMPARE(visible, 4); + QVERIFY(mTestObject->mSortingRoles.key(VideoCollectionCommon::KeyDateTime)->isChecked()); + + cleanup(); +} + +// --------------------------------------------------------------------------- +// testPrepareBrowseServiceMenu +// --------------------------------------------------------------------------- +// +void TestListMenu::testPrepareBrowseServiceMenu() +{ + init(); + + VideoServices *videoServices = VideoServices::instance(); + videoServices->mCurrentService = VideoServices::EBrowse; + mTestObject->mVideoServices = videoServices; + + // Setup menu objects. + connect(this, SIGNAL(testObjectReadySignal(QObject*, const QString)), + mTestObject, SLOT(objectReadySlot(QObject*, const QString))); + emit testObjectReadySignal(mUiLoader->findObject(DOCML_NAME_OPTIONS_MENU), DOCML_NAME_OPTIONS_MENU); + emit testObjectReadySignal(mUiLoader->findObject(DOCML_NAME_SORT_BY_DATE), DOCML_NAME_SORT_BY_DATE); + emit testObjectReadySignal(mUiLoader->findObject(DOCML_NAME_SORT_BY_NAME), DOCML_NAME_SORT_BY_NAME); + emit testObjectReadySignal(mUiLoader->findObject(DOCML_NAME_SORT_BY_NUMBER_OF_ITEMS), DOCML_NAME_SORT_BY_NUMBER_OF_ITEMS); + emit testObjectReadySignal(mUiLoader->findObject(DOCML_NAME_ADD_TO_COLLECTION), DOCML_NAME_ADD_TO_COLLECTION); + emit testObjectReadySignal(mUiLoader->findObject(DOCML_NAME_CREATE_COLLECTION), DOCML_NAME_CREATE_COLLECTION); + emit testObjectReadySignal(mUiLoader->findObject(DOCML_NAME_DELETE_MULTIPLE), DOCML_NAME_DELETE_MULTIPLE); + + disconnect(this, SIGNAL(testObjectReadySignal(QObject*, const QString)), mTestObject, SLOT(objectReadySlot(QObject*, const QString))); + + // No current list. + setVisibilityForMenuActions(false); + VideoListDataModelData::setRowCount(*mDataModel, 5); + QVERIFY(connect(this, SIGNAL(testSignal()), mTestObject, SLOT(aboutToShowMainMenuSlot()))); + mListView->mCurrentList = 0; + emit testSignal(); + int visible = visibleMenuActions(); + QCOMPARE(visible, 0); + + // No model + mListView->mCurrentList = mListWidget; + mListWidget->mModel = 0; + setVisibilityForMenuActions(true); + VideoListDataModelData::setRowCount(*mDataModel, 0); + emit testSignal(); + visible = visibleMenuActions(); + QCOMPARE(visible, 0); + + // Empty model. + mListView->mCurrentList->mModel = mModel; + setVisibilityForMenuActions(true); + VideoListDataModelData::setRowCount(*mDataModel, 0); + emit testSignal(); + visible = visibleMenuActions(); + QCOMPARE(visible, 0); + + VideoProxyModelData::mSortRole = VideoCollectionCommon::KeyDateTime; + VideoProxyModelData::mSortOrder = Qt::AscendingOrder; + + // Good case. + mTestObject->mSortingRoles.key(VideoCollectionCommon::KeyDateTime)->setChecked(false); + setVisibilityForMenuActions(true); + VideoListDataModelData::setRowCount(*mDataModel, 10); + emit testSignal(); + visible = visibleMenuActions(); + QCOMPARE(visible, 4); + QVERIFY(mTestObject->mSortingRoles.key(VideoCollectionCommon::KeyDateTime)->isChecked()); + + cleanup(); +} + +// --------------------------------------------------------------------------- +// testObjectReadySlot +// --------------------------------------------------------------------------- +// +void TestListMenu::testObjectReadySlot() +{ + init(); + + // Ok cases have been tested earlier. + connect(this, SIGNAL(testObjectReadySignal(QObject*, const QString)), + mTestObject, SLOT(objectReadySlot(QObject*, const QString))); + + // Null objects, qobject cast fails and sorting roles array should be empty. + emit testObjectReadySignal(0, "notknown"); + emit testObjectReadySignal(0, DOCML_NAME_SORT_BY_DATE); + emit testObjectReadySignal(0, DOCML_NAME_SORT_BY_NAME); + emit testObjectReadySignal(0, DOCML_NAME_SORT_BY_NUMBER_OF_ITEMS); + emit testObjectReadySignal(0, DOCML_NAME_SORT_BY_SIZE); + emit testObjectReadySignal(0, DOCML_NAME_ADD_TO_COLLECTION); + emit testObjectReadySignal(0, DOCML_NAME_CREATE_COLLECTION); + emit testObjectReadySignal(0, DOCML_NAME_DELETE_MULTIPLE); + QCOMPARE(mTestObject->mSortingRoles.count(), 0); + + disconnect(this, SIGNAL(testObjectReadySignal(QObject*, const QString)), mTestObject, SLOT(objectReadySlot(QObject*, const QString))); + + cleanup(); +} + +// --------------------------------------------------------------------------- +// visibleMenuActions +// --------------------------------------------------------------------------- +// +int TestListMenu::visibleMenuActions() +{ + int visibleActions(0); + VideoCollectionUiLoader::ActionIds key; + HbAction *action(0); + foreach (key, VideoCollectionUiLoaderData::mMenuActions.keys()) + { + action = dynamic_cast(VideoCollectionUiLoaderData::mMenuActions[key]); + if (action && action->isVisible()) + { + visibleActions++; + } + } + return visibleActions; +} + +// --------------------------------------------------------------------------- +// setVisibilityForMenuActions +// --------------------------------------------------------------------------- +// +void TestListMenu::setVisibilityForMenuActions(bool visible) +{ + VideoCollectionUiLoader::ActionIds key; + HbAction *action(0); + foreach (key, VideoCollectionUiLoaderData::mMenuActions.keys()) + { + action = dynamic_cast(VideoCollectionUiLoaderData::mMenuActions[key]); + if (action) + { + action->setVisible(visible); + } + } +} + +// End of file.