--- /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 <qdebug.h>
+#include <xqserviceutil.h>
+#include <QtTest/QtTest>
+#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 <videocollectioncommon.h>
+#include <qhash.h>
+#include <qmap.h>
+
+#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<VideoListView>( 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<HbAction>(DOCML_NAME_DELETE_MULTIPLE);
+ optionsMenu = mUiLoader->findWidget<HbMenu>(DOCML_NAME_OPTIONS_MENU);
+ sortMenu = mUiLoader->findWidget<HbMenu>(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<HbAction>(DOCML_NAME_DELETE_MULTIPLE);
+ optionsMenu = mUiLoader->findWidget<HbMenu>(DOCML_NAME_OPTIONS_MENU);
+ sortMenu = mUiLoader->findWidget<HbMenu>(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<HbMenu>(DOCML_NAME_SORT_MENU);
+ sortMenuAction->setMenu(sortMenu);
+ HbMenuData::mMenuAction = sortMenuAction;
+ VideoProxyModelGeneric* model = mListView->mCurrentList->getModel();
+ QVERIFY(action != 0);
+ mUiLoader->findWidget<HbMenu>(DOCML_NAME_OPTIONS_MENU)->setActiveAction(sortMenuAction);
+ HbAction *sortAction = mUiLoader->findObject<HbAction>(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<QObject>(DOCML_NAME_SORT_BY_DATE), DOCML_NAME_SORT_BY_DATE);
+ emit testObjectReadySignal(mUiLoader->findObject<QObject>(DOCML_NAME_SORT_BY_NAME), DOCML_NAME_SORT_BY_NAME);
+ emit testObjectReadySignal(mUiLoader->findObject<QObject>(DOCML_NAME_SORT_BY_NUMBER_OF_ITEMS), DOCML_NAME_SORT_BY_NUMBER_OF_ITEMS);
+ emit testObjectReadySignal(mUiLoader->findObject<QObject>(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<HbAction>(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<HbMenu>(DOCML_NAME_SORT_MENU);
+ sortMenuAction->setMenu(sortMenu);
+ HbMenuData::mMenuAction = sortMenuAction;
+ mUiLoader->findWidget<HbMenu>(DOCML_NAME_OPTIONS_MENU)->setActiveAction(sortMenuAction);
+ sortAction = mUiLoader->findObject<HbAction>(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<QObject>(DOCML_NAME_OPTIONS_MENU), DOCML_NAME_OPTIONS_MENU);
+ emit testObjectReadySignal(mUiLoader->findObject<QObject>(DOCML_NAME_SORT_BY_DATE), DOCML_NAME_SORT_BY_DATE);
+ emit testObjectReadySignal(mUiLoader->findObject<QObject>(DOCML_NAME_SORT_BY_NAME), DOCML_NAME_SORT_BY_NAME);
+ emit testObjectReadySignal(mUiLoader->findObject<QObject>(DOCML_NAME_SORT_BY_NUMBER_OF_ITEMS), DOCML_NAME_SORT_BY_NUMBER_OF_ITEMS);
+ emit testObjectReadySignal(mUiLoader->findObject<QObject>(DOCML_NAME_ADD_TO_COLLECTION), DOCML_NAME_ADD_TO_COLLECTION);
+ emit testObjectReadySignal(mUiLoader->findObject<QObject>(DOCML_NAME_CREATE_COLLECTION), DOCML_NAME_CREATE_COLLECTION);
+ emit testObjectReadySignal(mUiLoader->findObject<QObject>(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<QObject>(DOCML_NAME_OPTIONS_MENU), DOCML_NAME_OPTIONS_MENU);
+ emit testObjectReadySignal(mUiLoader->findObject<QObject>(DOCML_NAME_SORT_BY_DATE), DOCML_NAME_SORT_BY_DATE);
+ emit testObjectReadySignal(mUiLoader->findObject<QObject>(DOCML_NAME_SORT_BY_NAME), DOCML_NAME_SORT_BY_NAME);
+ emit testObjectReadySignal(mUiLoader->findObject<QObject>(DOCML_NAME_SORT_BY_NUMBER_OF_ITEMS), DOCML_NAME_SORT_BY_NUMBER_OF_ITEMS);
+ emit testObjectReadySignal(mUiLoader->findObject<QObject>(DOCML_NAME_ADD_TO_COLLECTION), DOCML_NAME_ADD_TO_COLLECTION);
+ emit testObjectReadySignal(mUiLoader->findObject<QObject>(DOCML_NAME_CREATE_COLLECTION), DOCML_NAME_CREATE_COLLECTION);
+ emit testObjectReadySignal(mUiLoader->findObject<QObject>(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<HbAction*>(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<HbAction*>(VideoCollectionUiLoaderData::mMenuActions[key]);
+ if (action)
+ {
+ action->setVisible(visible);
+ }
+ }
+}
+
+// End of file.