homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/t_collectionsstate/src/t_collectionsstate.cpp
author hgs
Mon, 20 Sep 2010 10:19:07 +0300
changeset 90 3ac3aaebaee5
child 97 66b5fe3c07fd
permissions -rw-r--r--
201037
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
90
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:  Main test class for hsHomeScreenStatePlugin library.
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
#include <hbmainwindow.h>
hgs
parents:
diff changeset
    19
#include <hbinstance.h>
hgs
parents:
diff changeset
    20
#include <hbview.h>
hgs
parents:
diff changeset
    21
#include <hbmenu.h>
hgs
parents:
diff changeset
    22
#include <hblabel.h>
hgs
parents:
diff changeset
    23
#include <hblistview.h>
hgs
parents:
diff changeset
    24
#include <hblistviewitem.h>
hgs
parents:
diff changeset
    25
#include <hbgroupbox.h>
hgs
parents:
diff changeset
    26
#include <HbAction>
hgs
parents:
diff changeset
    27
#include <HbPushButton>
hgs
parents:
diff changeset
    28
#include <qscopedpointer>
hgs
parents:
diff changeset
    29
hgs
parents:
diff changeset
    30
#include "caentry.h"
hgs
parents:
diff changeset
    31
#include "caitemmodel.h"
hgs
parents:
diff changeset
    32
#include "hsmenuviewbuilder.h"
hgs
parents:
diff changeset
    33
#include "hsmenumodewrapper.h"
hgs
parents:
diff changeset
    34
#include "hsmenuevent.h"
hgs
parents:
diff changeset
    35
#include "hsmenueventtransition.h"
hgs
parents:
diff changeset
    36
#include "hscollectionstate.h"
hgs
parents:
diff changeset
    37
#include "hsmainwindow.h"
hgs
parents:
diff changeset
    38
hgs
parents:
diff changeset
    39
#include "t_hsaddtohomescreenmockstate.h"
hgs
parents:
diff changeset
    40
#include "t_hsmockmodel.h"
hgs
parents:
diff changeset
    41
#include "t_collectionsstate.h"
hgs
parents:
diff changeset
    42
hgs
parents:
diff changeset
    43
Q_DECLARE_METATYPE(Hs::HsSortAttribute)
hgs
parents:
diff changeset
    44
hgs
parents:
diff changeset
    45
hgs
parents:
diff changeset
    46
class HsMainWindowMock : public HsMainWindow
hgs
parents:
diff changeset
    47
{
hgs
parents:
diff changeset
    48
    virtual void setCurrentView(HbView *view);
hgs
parents:
diff changeset
    49
hgs
parents:
diff changeset
    50
};
hgs
parents:
diff changeset
    51
hgs
parents:
diff changeset
    52
void HsMainWindowMock::setCurrentView(HbView *view)
hgs
parents:
diff changeset
    53
{
hgs
parents:
diff changeset
    54
    Q_UNUSED(view);
hgs
parents:
diff changeset
    55
    // do nothing
hgs
parents:
diff changeset
    56
}
hgs
parents:
diff changeset
    57
hgs
parents:
diff changeset
    58
void MenuStatesTest::init()
hgs
parents:
diff changeset
    59
{
hgs
parents:
diff changeset
    60
}
hgs
parents:
diff changeset
    61
hgs
parents:
diff changeset
    62
void MenuStatesTest::cleanup()
hgs
parents:
diff changeset
    63
{
hgs
parents:
diff changeset
    64
    qApp->processEvents();
hgs
parents:
diff changeset
    65
}
hgs
parents:
diff changeset
    66
hgs
parents:
diff changeset
    67
hgs
parents:
diff changeset
    68
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    69
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    70
//
hgs
parents:
diff changeset
    71
void MenuStatesTest::construction()
hgs
parents:
diff changeset
    72
{
hgs
parents:
diff changeset
    73
#ifdef Q_OS_SYMBIAN
hgs
parents:
diff changeset
    74
    User::ResetInactivityTime();//it should help for Viewserver11 panic
hgs
parents:
diff changeset
    75
#ifdef UT_MEMORY_CHECK
hgs
parents:
diff changeset
    76
    __UHEAP_MARK;
hgs
parents:
diff changeset
    77
#endif//UT_MEMORY_CHECK
hgs
parents:
diff changeset
    78
#endif//Q_OS_SYMBIAN
hgs
parents:
diff changeset
    79
    {
hgs
parents:
diff changeset
    80
        HsMenuViewBuilder builder;
hgs
parents:
diff changeset
    81
        HsMenuModeWrapper menuMode;
hgs
parents:
diff changeset
    82
        HsMainWindowMock mainWindow;
hgs
parents:
diff changeset
    83
        QScopedPointer<QState> parent(new QState);
hgs
parents:
diff changeset
    84
        parent->setObjectName(tr("testName1"));
hgs
parents:
diff changeset
    85
hgs
parents:
diff changeset
    86
        HsCollectionState *collectionState =
hgs
parents:
diff changeset
    87
            new HsCollectionState(builder, menuMode, mainWindow, parent.data());
hgs
parents:
diff changeset
    88
hgs
parents:
diff changeset
    89
        QCOMPARE(collectionState->mSortAttribute,
hgs
parents:
diff changeset
    90
                 Hs::LatestOnTopHsSortAttribute);
hgs
parents:
diff changeset
    91
        QCOMPARE(collectionState->mCollectionId, -1);
hgs
parents:
diff changeset
    92
        QCOMPARE(collectionState->mModel, static_cast<HsMenuItemModel *>(0));
hgs
parents:
diff changeset
    93
        QCOMPARE(collectionState->objectName(),
hgs
parents:
diff changeset
    94
                 tr("testName1/collectionstate"));
hgs
parents:
diff changeset
    95
hgs
parents:
diff changeset
    96
    }
hgs
parents:
diff changeset
    97
#ifdef Q_OS_SYMBIAN
hgs
parents:
diff changeset
    98
#ifdef UT_MEMORY_CHECK
hgs
parents:
diff changeset
    99
    __UHEAP_MARKEND;
hgs
parents:
diff changeset
   100
#endif//UT_MEMORY_CHECK
hgs
parents:
diff changeset
   101
#endif//Q_OS_SYMBIAN
hgs
parents:
diff changeset
   102
}
hgs
parents:
diff changeset
   103
hgs
parents:
diff changeset
   104
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   105
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   106
//
hgs
parents:
diff changeset
   107
void MenuStatesTest::listItemActivated()
hgs
parents:
diff changeset
   108
{
hgs
parents:
diff changeset
   109
#ifdef Q_OS_SYMBIAN
hgs
parents:
diff changeset
   110
    User::ResetInactivityTime();//it should help for Viewserver11 panic
hgs
parents:
diff changeset
   111
#ifdef UT_MEMORY_CHECK
hgs
parents:
diff changeset
   112
    __UHEAP_MARK;
hgs
parents:
diff changeset
   113
#endif//UT_MEMORY_CHECK
hgs
parents:
diff changeset
   114
#endif//Q_OS_SYMBIAN
hgs
parents:
diff changeset
   115
    {
hgs
parents:
diff changeset
   116
        HsMenuViewBuilder builder;
hgs
parents:
diff changeset
   117
        HsMenuModeWrapper menuMode;
hgs
parents:
diff changeset
   118
        HsMainWindowMock mainWindow;
hgs
parents:
diff changeset
   119
hgs
parents:
diff changeset
   120
        QScopedPointer<QStateMachine> machine(new QStateMachine(0));
hgs
parents:
diff changeset
   121
        QState *parent = new QState(machine.data());
hgs
parents:
diff changeset
   122
hgs
parents:
diff changeset
   123
        const QString collectionName("testCollection" +
hgs
parents:
diff changeset
   124
                                     QDateTime::currentDateTime().
hgs
parents:
diff changeset
   125
                                     toString("ddmmyyyy_hh_mm_ss_zzz"));
hgs
parents:
diff changeset
   126
        const int collectionId = HsMenuService::createCollection(collectionName);
hgs
parents:
diff changeset
   127
hgs
parents:
diff changeset
   128
        HsCollectionState *collectionState =
hgs
parents:
diff changeset
   129
            new HsCollectionState(builder, menuMode, mainWindow, parent);
hgs
parents:
diff changeset
   130
hgs
parents:
diff changeset
   131
        collectionState->mCollectionId = collectionId;
hgs
parents:
diff changeset
   132
hgs
parents:
diff changeset
   133
        HsMenuItemModel *const itemModel =
hgs
parents:
diff changeset
   134
            HsMenuService::getAllApplicationsModel(Hs::AscendingNameHsSortAttribute);
hgs
parents:
diff changeset
   135
hgs
parents:
diff changeset
   136
        QModelIndex applicationModelIndex = itemModel->index(1, 0);
hgs
parents:
diff changeset
   137
hgs
parents:
diff changeset
   138
        QList<int> appList;
hgs
parents:
diff changeset
   139
hgs
parents:
diff changeset
   140
        appList << itemModel->data(applicationModelIndex, CaItemModel::IdRole).toInt();
hgs
parents:
diff changeset
   141
hgs
parents:
diff changeset
   142
        HsMenuService::addApplicationsToCollection(appList, collectionId);
hgs
parents:
diff changeset
   143
hgs
parents:
diff changeset
   144
        collectionState->stateEntered();
hgs
parents:
diff changeset
   145
hgs
parents:
diff changeset
   146
        QVERIFY(collectionState->mModel != NULL);
hgs
parents:
diff changeset
   147
hgs
parents:
diff changeset
   148
        collectionState->launchItem(applicationModelIndex);
hgs
parents:
diff changeset
   149
hgs
parents:
diff changeset
   150
        collectionState->stateExited();
hgs
parents:
diff changeset
   151
hgs
parents:
diff changeset
   152
        QTest::qWait(3000);
hgs
parents:
diff changeset
   153
hgs
parents:
diff changeset
   154
        //TODO: made some utils to closing application
hgs
parents:
diff changeset
   155
        //HsMenuService::executeAction(appList.at(0), QString("close"));
hgs
parents:
diff changeset
   156
hgs
parents:
diff changeset
   157
        // cleanup
hgs
parents:
diff changeset
   158
        HsMenuService::removeCollection(collectionId);
hgs
parents:
diff changeset
   159
    }
hgs
parents:
diff changeset
   160
#ifdef Q_OS_SYMBIAN
hgs
parents:
diff changeset
   161
#ifdef UT_MEMORY_CHECK
hgs
parents:
diff changeset
   162
    __UHEAP_MARKEND;
hgs
parents:
diff changeset
   163
#endif//UT_MEMORY_CHECK
hgs
parents:
diff changeset
   164
#endif//Q_OS_SYMBIAN
hgs
parents:
diff changeset
   165
}
hgs
parents:
diff changeset
   166
hgs
parents:
diff changeset
   167
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   168
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   169
//
hgs
parents:
diff changeset
   170
void MenuStatesTest::listItemLongPressed()
hgs
parents:
diff changeset
   171
{
hgs
parents:
diff changeset
   172
#ifdef Q_OS_SYMBIAN
hgs
parents:
diff changeset
   173
    User::ResetInactivityTime();//it should help for Viewserver11 panic
hgs
parents:
diff changeset
   174
#ifdef UT_MEMORY_CHECK
hgs
parents:
diff changeset
   175
    __UHEAP_MARK;
hgs
parents:
diff changeset
   176
#endif//UT_MEMORY_CHECK
hgs
parents:
diff changeset
   177
#endif//Q_OS_SYMBIAN
hgs
parents:
diff changeset
   178
    {
hgs
parents:
diff changeset
   179
        QScopedPointer<HbMainWindow> wind(new HbMainWindow);
hgs
parents:
diff changeset
   180
hgs
parents:
diff changeset
   181
        HsMenuViewBuilder builder;
hgs
parents:
diff changeset
   182
        HsMenuModeWrapper menuMode;
hgs
parents:
diff changeset
   183
        HsMainWindow mainWindow;
hgs
parents:
diff changeset
   184
hgs
parents:
diff changeset
   185
hgs
parents:
diff changeset
   186
        QScopedPointer<QStateMachine> machine(new QStateMachine(0));
hgs
parents:
diff changeset
   187
        QState *parent(new QState(machine.data()));
hgs
parents:
diff changeset
   188
hgs
parents:
diff changeset
   189
        const QString collectionName("testCollection" +
hgs
parents:
diff changeset
   190
                                     QDateTime::currentDateTime().
hgs
parents:
diff changeset
   191
                                     toString("ddmmyyyy_hh_mm_ss_zzz"));
hgs
parents:
diff changeset
   192
        const int collectionId = HsMenuService::createCollection(collectionName);
hgs
parents:
diff changeset
   193
hgs
parents:
diff changeset
   194
        HsMenuItemModel *appsModel = HsMenuService::getAllApplicationsModel();
hgs
parents:
diff changeset
   195
        QList<int> list;
hgs
parents:
diff changeset
   196
        list << appsModel->data(appsModel->index(0),CaItemModel::IdRole).toInt();
hgs
parents:
diff changeset
   197
        HsMenuService::addApplicationsToCollection(list,collectionId);
hgs
parents:
diff changeset
   198
        delete appsModel;
hgs
parents:
diff changeset
   199
hgs
parents:
diff changeset
   200
        HsCollectionState *collectionState = new HsCollectionState(builder, menuMode,
hgs
parents:
diff changeset
   201
                mainWindow, parent);
hgs
parents:
diff changeset
   202
        collectionState->mCollectionId = collectionId;
hgs
parents:
diff changeset
   203
        collectionState->mCollectionType = "collection";
hgs
parents:
diff changeset
   204
hgs
parents:
diff changeset
   205
        collectionState->stateEntered();
hgs
parents:
diff changeset
   206
hgs
parents:
diff changeset
   207
        QScopedPointer<HbAbstractViewItem> item(new HbListViewItem);
hgs
parents:
diff changeset
   208
        QModelIndex itemModelIndex = collectionState->mModel->index(0, 0);
hgs
parents:
diff changeset
   209
        item->setModelIndex(itemModelIndex);
hgs
parents:
diff changeset
   210
hgs
parents:
diff changeset
   211
        collectionState->showContextMenu(item.data(), QPointF(50,50));
hgs
parents:
diff changeset
   212
hgs
parents:
diff changeset
   213
        int numberOfActions = 3;
hgs
parents:
diff changeset
   214
hgs
parents:
diff changeset
   215
        EntryFlags rootFlags =
hgs
parents:
diff changeset
   216
            collectionState->mModel->root().data(CaItemModel::FlagsRole).value<
hgs
parents:
diff changeset
   217
            EntryFlags> ();
hgs
parents:
diff changeset
   218
        if (rootFlags & RemovableEntryFlag) {
hgs
parents:
diff changeset
   219
            numberOfActions++;
hgs
parents:
diff changeset
   220
        }
hgs
parents:
diff changeset
   221
hgs
parents:
diff changeset
   222
        EntryFlags flags = item->modelIndex().data(CaItemModel::FlagsRole).value<
hgs
parents:
diff changeset
   223
                           EntryFlags> ();
hgs
parents:
diff changeset
   224
        if ((flags & RemovableEntryFlag)) {
hgs
parents:
diff changeset
   225
            numberOfActions++;
hgs
parents:
diff changeset
   226
        }
hgs
parents:
diff changeset
   227
hgs
parents:
diff changeset
   228
        QSharedPointer<const CaEntry> entry = collectionState->mModel->entry(item->modelIndex());
hgs
parents:
diff changeset
   229
        if (!(entry->attribute(Hs::appSettingsPlugin).isEmpty())) {
hgs
parents:
diff changeset
   230
            numberOfActions++;
hgs
parents:
diff changeset
   231
        }
hgs
parents:
diff changeset
   232
hgs
parents:
diff changeset
   233
        QCOMPARE(collectionState->mContextMenu->actions().length(), numberOfActions);
hgs
parents:
diff changeset
   234
        QVERIFY(collectionState->mContextMenu->testAttribute(Qt::WA_DeleteOnClose));
hgs
parents:
diff changeset
   235
hgs
parents:
diff changeset
   236
        collectionState->stateExited();
hgs
parents:
diff changeset
   237
hgs
parents:
diff changeset
   238
        qApp->processEvents();
hgs
parents:
diff changeset
   239
hgs
parents:
diff changeset
   240
        // cleanup
hgs
parents:
diff changeset
   241
        if (!list.isEmpty()) {
hgs
parents:
diff changeset
   242
            for (int i=0; i<list.count(); i++) {
hgs
parents:
diff changeset
   243
                HsMenuService::removeApplicationFromCollection(list[i],collectionId);
hgs
parents:
diff changeset
   244
            }
hgs
parents:
diff changeset
   245
        }
hgs
parents:
diff changeset
   246
        HsMenuService::removeCollection(collectionId);
hgs
parents:
diff changeset
   247
        wind->removeView(builder.currentView());
hgs
parents:
diff changeset
   248
hgs
parents:
diff changeset
   249
    }
hgs
parents:
diff changeset
   250
#ifdef Q_OS_SYMBIAN
hgs
parents:
diff changeset
   251
#ifdef UT_MEMORY_CHECK
hgs
parents:
diff changeset
   252
    __UHEAP_MARKEND;
hgs
parents:
diff changeset
   253
#endif//UT_MEMORY_CHECK
hgs
parents:
diff changeset
   254
#endif//Q_OS_SYMBIAN
hgs
parents:
diff changeset
   255
}
hgs
parents:
diff changeset
   256
hgs
parents:
diff changeset
   257
hgs
parents:
diff changeset
   258
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   259
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   260
//
hgs
parents:
diff changeset
   261
void MenuStatesTest::contextMenuAction()
hgs
parents:
diff changeset
   262
{
hgs
parents:
diff changeset
   263
#ifdef Q_OS_SYMBIAN
hgs
parents:
diff changeset
   264
    User::ResetInactivityTime();//it should help for Viewserver11 panic
hgs
parents:
diff changeset
   265
#ifdef UT_MEMORY_CHECK
hgs
parents:
diff changeset
   266
    __UHEAP_MARK;
hgs
parents:
diff changeset
   267
#endif//UT_MEMORY_CHECK
hgs
parents:
diff changeset
   268
#endif//Q_OS_SYMBIAN
hgs
parents:
diff changeset
   269
    {
hgs
parents:
diff changeset
   270
        HsMenuViewBuilder builder;
hgs
parents:
diff changeset
   271
        HsMenuModeWrapper menuMode;
hgs
parents:
diff changeset
   272
        HsMainWindowMock mainWindow;
hgs
parents:
diff changeset
   273
hgs
parents:
diff changeset
   274
        QScopedPointer<QStateMachine> machine(new QStateMachine(0));
hgs
parents:
diff changeset
   275
hgs
parents:
diff changeset
   276
        // we will start from collection view
hgs
parents:
diff changeset
   277
hgs
parents:
diff changeset
   278
        const QString collectionName("testCollection" +
hgs
parents:
diff changeset
   279
                                     QDateTime::currentDateTime().toString("ddmmyyyy_hh_mm_ss_zzz"));
hgs
parents:
diff changeset
   280
        const int collectionId = HsMenuService::createCollection(collectionName);
hgs
parents:
diff changeset
   281
hgs
parents:
diff changeset
   282
        HsMenuItemModel *allAppsModel = HsMenuService::getAllApplicationsModel();
hgs
parents:
diff changeset
   283
        QVERIFY(allAppsModel->rowCount() >= 1);
hgs
parents:
diff changeset
   284
        QModelIndex appIndex = allAppsModel->index(0, 0);
hgs
parents:
diff changeset
   285
hgs
parents:
diff changeset
   286
        const int appId = allAppsModel->data(appIndex, CaItemModel::IdRole).toInt();
hgs
parents:
diff changeset
   287
        QList<int> appIdList;
hgs
parents:
diff changeset
   288
        appIdList << appId;
hgs
parents:
diff changeset
   289
hgs
parents:
diff changeset
   290
        HsCollectionState *collectionState = new HsCollectionState(builder,
hgs
parents:
diff changeset
   291
                menuMode, mainWindow, machine.data());
hgs
parents:
diff changeset
   292
hgs
parents:
diff changeset
   293
        collectionState->mCollectionId = collectionId;
hgs
parents:
diff changeset
   294
        HsMenuService::addApplicationsToCollection(appIdList, collectionId);
hgs
parents:
diff changeset
   295
hgs
parents:
diff changeset
   296
        // create a state which is to be reached when add-to-home-screen
hgs
parents:
diff changeset
   297
        // event is triggered
hgs
parents:
diff changeset
   298
        AddToHomeScreenMockState *addToHomeScreenState =
hgs
parents:
diff changeset
   299
            new AddToHomeScreenMockState(machine.data());
hgs
parents:
diff changeset
   300
hgs
parents:
diff changeset
   301
        // create a transition to the new child state which will be triggered by
hgs
parents:
diff changeset
   302
        // an event with specified operation type
hgs
parents:
diff changeset
   303
        HsMenuEventTransition addToHomeScreenTransition(
hgs
parents:
diff changeset
   304
            HsMenuEvent::AddToHomeScreen, collectionState, addToHomeScreenState);
hgs
parents:
diff changeset
   305
hgs
parents:
diff changeset
   306
        // prepare the state graph
hgs
parents:
diff changeset
   307
        collectionState->addTransition(&addToHomeScreenTransition);
hgs
parents:
diff changeset
   308
hgs
parents:
diff changeset
   309
        machine->setInitialState(collectionState);
hgs
parents:
diff changeset
   310
        machine->start();
hgs
parents:
diff changeset
   311
        qApp->sendPostedEvents();
hgs
parents:
diff changeset
   312
hgs
parents:
diff changeset
   313
        HbAction *action = new HbAction("test_addtohomescreen");
hgs
parents:
diff changeset
   314
        action->setData(Hs::AddToHomeScreenContextAction);
hgs
parents:
diff changeset
   315
hgs
parents:
diff changeset
   316
        collectionState->mContextModelIndex = collectionState->mModel->index(0,0);
hgs
parents:
diff changeset
   317
hgs
parents:
diff changeset
   318
        collectionState->contextMenuAction(action);
hgs
parents:
diff changeset
   319
hgs
parents:
diff changeset
   320
        qApp->sendPostedEvents();
hgs
parents:
diff changeset
   321
        qApp->processEvents();
hgs
parents:
diff changeset
   322
hgs
parents:
diff changeset
   323
        QVERIFY(addToHomeScreenState->enteredValue());
hgs
parents:
diff changeset
   324
hgs
parents:
diff changeset
   325
        machine->stop();
hgs
parents:
diff changeset
   326
hgs
parents:
diff changeset
   327
        // cleanup
hgs
parents:
diff changeset
   328
        delete action;
hgs
parents:
diff changeset
   329
        HsMenuService::removeCollection(collectionId);
hgs
parents:
diff changeset
   330
hgs
parents:
diff changeset
   331
    }
hgs
parents:
diff changeset
   332
#ifdef Q_OS_SYMBIAN
hgs
parents:
diff changeset
   333
#ifdef UT_MEMORY_CHECK
hgs
parents:
diff changeset
   334
    __UHEAP_MARKEND;
hgs
parents:
diff changeset
   335
#endif//UT_MEMORY_CHECK
hgs
parents:
diff changeset
   336
#endif//Q_OS_SYMBIAN
hgs
parents:
diff changeset
   337
}
hgs
parents:
diff changeset
   338
hgs
parents:
diff changeset
   339
hgs
parents:
diff changeset
   340
hgs
parents:
diff changeset
   341
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   342
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   343
//
hgs
parents:
diff changeset
   344
void MenuStatesTest::contextMenuConstruct()
hgs
parents:
diff changeset
   345
{
hgs
parents:
diff changeset
   346
#ifdef Q_OS_SYMBIAN
hgs
parents:
diff changeset
   347
    User::ResetInactivityTime();//it should help for Viewserver11 panic
hgs
parents:
diff changeset
   348
#ifdef UT_MEMORY_CHECK
hgs
parents:
diff changeset
   349
    __UHEAP_MARK;
hgs
parents:
diff changeset
   350
#endif//UT_MEMORY_CHECK
hgs
parents:
diff changeset
   351
#endif//Q_OS_SYMBIAN
hgs
parents:
diff changeset
   352
    {
hgs
parents:
diff changeset
   353
        HsMenuViewBuilder menuView;
hgs
parents:
diff changeset
   354
        HsMenuModeWrapper menuMode;
hgs
parents:
diff changeset
   355
        HsMainWindowMock mainWindow;
hgs
parents:
diff changeset
   356
hgs
parents:
diff changeset
   357
        QScopedPointer<QState> parent(new QState);
hgs
parents:
diff changeset
   358
hgs
parents:
diff changeset
   359
        const QString collectionName("testCollection" +
hgs
parents:
diff changeset
   360
                                     QDateTime::currentDateTime().
hgs
parents:
diff changeset
   361
                                     toString("ddmmyyyy_hh_mm_ss_zzz"));
hgs
parents:
diff changeset
   362
hgs
parents:
diff changeset
   363
        const int collectionId = HsMenuService::createCollection(collectionName);
hgs
parents:
diff changeset
   364
hgs
parents:
diff changeset
   365
        HsCollectionState *collectionState =
hgs
parents:
diff changeset
   366
            new HsCollectionState(menuView, menuMode, mainWindow, parent.data());
hgs
parents:
diff changeset
   367
hgs
parents:
diff changeset
   368
        collectionState->mCollectionId = collectionId;
hgs
parents:
diff changeset
   369
hgs
parents:
diff changeset
   370
        collectionState->stateEntered();
hgs
parents:
diff changeset
   371
hgs
parents:
diff changeset
   372
        qApp->processEvents();
hgs
parents:
diff changeset
   373
hgs
parents:
diff changeset
   374
        int actionsCount(
hgs
parents:
diff changeset
   375
            collectionState->mMenuView->view()->menu()->actions().count());
hgs
parents:
diff changeset
   376
        QCOMPARE(actionsCount , 5);
hgs
parents:
diff changeset
   377
        collectionState->stateExited();
hgs
parents:
diff changeset
   378
hgs
parents:
diff changeset
   379
        // cleanup
hgs
parents:
diff changeset
   380
        HsMenuService::removeCollection(collectionId);
hgs
parents:
diff changeset
   381
    }
hgs
parents:
diff changeset
   382
#ifdef Q_OS_SYMBIAN
hgs
parents:
diff changeset
   383
#ifdef UT_MEMORY_CHECK
hgs
parents:
diff changeset
   384
    __UHEAP_MARKEND;
hgs
parents:
diff changeset
   385
#endif//UT_MEMORY_CHECK
hgs
parents:
diff changeset
   386
#endif//Q_OS_SYMBIAN
hgs
parents:
diff changeset
   387
}
hgs
parents:
diff changeset
   388
hgs
parents:
diff changeset
   389
hgs
parents:
diff changeset
   390
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   391
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   392
//
hgs
parents:
diff changeset
   393
void MenuStatesTest::contextMenuConstructNonEmptyCollection()
hgs
parents:
diff changeset
   394
{
hgs
parents:
diff changeset
   395
#ifdef Q_OS_SYMBIAN
hgs
parents:
diff changeset
   396
    User::ResetInactivityTime();//it should help for Viewserver11 panic
hgs
parents:
diff changeset
   397
#ifdef UT_MEMORY_CHECK
hgs
parents:
diff changeset
   398
    __UHEAP_MARK;
hgs
parents:
diff changeset
   399
#endif//UT_MEMORY_CHECK
hgs
parents:
diff changeset
   400
#endif//Q_OS_SYMBIAN
hgs
parents:
diff changeset
   401
    {
hgs
parents:
diff changeset
   402
        HsMenuViewBuilder menuView;
hgs
parents:
diff changeset
   403
        HsMenuModeWrapper menuMode;
hgs
parents:
diff changeset
   404
        HsMainWindowMock mainWindow;
hgs
parents:
diff changeset
   405
hgs
parents:
diff changeset
   406
        QScopedPointer<QState> parent(new QState);
hgs
parents:
diff changeset
   407
hgs
parents:
diff changeset
   408
        const QString collectionName("testCollection" +
hgs
parents:
diff changeset
   409
                                     QDateTime::currentDateTime().
hgs
parents:
diff changeset
   410
                                     toString("ddmmyyyy_hh_mm_ss_zzz"));
hgs
parents:
diff changeset
   411
hgs
parents:
diff changeset
   412
        const int collectionId = HsMenuService::createCollection(collectionName);
hgs
parents:
diff changeset
   413
hgs
parents:
diff changeset
   414
        HsCollectionState *collectionState =
hgs
parents:
diff changeset
   415
            new HsCollectionState(menuView, menuMode, mainWindow, parent.data());
hgs
parents:
diff changeset
   416
hgs
parents:
diff changeset
   417
        collectionState->mCollectionId = collectionId;
hgs
parents:
diff changeset
   418
        QVERIFY(HsMenuService::addApplicationsToCollection(QList<int>()<<1, collectionId));
hgs
parents:
diff changeset
   419
hgs
parents:
diff changeset
   420
        collectionState->stateEntered();
hgs
parents:
diff changeset
   421
hgs
parents:
diff changeset
   422
        qApp->processEvents();
hgs
parents:
diff changeset
   423
hgs
parents:
diff changeset
   424
        const int actionsCount(
hgs
parents:
diff changeset
   425
            collectionState->mMenuView->view()->menu()->actions().count());
hgs
parents:
diff changeset
   426
        // Arrange is available inside options menu.
hgs
parents:
diff changeset
   427
        QCOMPARE(actionsCount , 6);
hgs
parents:
diff changeset
   428
        collectionState->stateExited();
hgs
parents:
diff changeset
   429
hgs
parents:
diff changeset
   430
        // cleanup
hgs
parents:
diff changeset
   431
        HsMenuService::removeCollection(collectionId);
hgs
parents:
diff changeset
   432
    }
hgs
parents:
diff changeset
   433
#ifdef Q_OS_SYMBIAN
hgs
parents:
diff changeset
   434
#ifdef UT_MEMORY_CHECK
hgs
parents:
diff changeset
   435
    __UHEAP_MARKEND;
hgs
parents:
diff changeset
   436
#endif//UT_MEMORY_CHECK
hgs
parents:
diff changeset
   437
#endif//Q_OS_SYMBIAN
hgs
parents:
diff changeset
   438
}
hgs
parents:
diff changeset
   439
hgs
parents:
diff changeset
   440
hgs
parents:
diff changeset
   441
void MenuStatesTest::addAppsAction()
hgs
parents:
diff changeset
   442
{
hgs
parents:
diff changeset
   443
#ifdef Q_OS_SYMBIAN
hgs
parents:
diff changeset
   444
    User::ResetInactivityTime();//it should help for Viewserver11 panic
hgs
parents:
diff changeset
   445
#ifdef UT_MEMORY_CHECK
hgs
parents:
diff changeset
   446
    __UHEAP_MARK;
hgs
parents:
diff changeset
   447
#endif//UT_MEMORY_CHECK
hgs
parents:
diff changeset
   448
#endif//Q_OS_SYMBIAN
hgs
parents:
diff changeset
   449
    {
hgs
parents:
diff changeset
   450
        HsMenuViewBuilder builder;
hgs
parents:
diff changeset
   451
        HsMenuModeWrapper menuMode;
hgs
parents:
diff changeset
   452
        HsMainWindowMock mainWindow;
hgs
parents:
diff changeset
   453
hgs
parents:
diff changeset
   454
        QScopedPointer<QStateMachine> machine(new QStateMachine(0));
hgs
parents:
diff changeset
   455
hgs
parents:
diff changeset
   456
        const QString collectionName("testCollection" +
hgs
parents:
diff changeset
   457
                                     QDateTime::currentDateTime().
hgs
parents:
diff changeset
   458
                                     toString("ddmmyyyy_hh_mm_ss_zzz"));
hgs
parents:
diff changeset
   459
hgs
parents:
diff changeset
   460
        const int collectionId =
hgs
parents:
diff changeset
   461
            HsMenuService::createCollection(collectionName);
hgs
parents:
diff changeset
   462
hgs
parents:
diff changeset
   463
        HsCollectionState *collectionState =
hgs
parents:
diff changeset
   464
            new HsCollectionState(builder, menuMode, mainWindow, machine.data());
hgs
parents:
diff changeset
   465
hgs
parents:
diff changeset
   466
        collectionState->mCollectionId = collectionId;
hgs
parents:
diff changeset
   467
hgs
parents:
diff changeset
   468
        AddToHomeScreenMockState *mockState =
hgs
parents:
diff changeset
   469
            new AddToHomeScreenMockState(machine.data());
hgs
parents:
diff changeset
   470
hgs
parents:
diff changeset
   471
        HsMenuEventTransition transition(
hgs
parents:
diff changeset
   472
            HsMenuEvent::AddAppsToCollection, collectionState, mockState);
hgs
parents:
diff changeset
   473
hgs
parents:
diff changeset
   474
        collectionState->addTransition(&transition);
hgs
parents:
diff changeset
   475
hgs
parents:
diff changeset
   476
        machine->setInitialState(collectionState);
hgs
parents:
diff changeset
   477
        machine->start();
hgs
parents:
diff changeset
   478
hgs
parents:
diff changeset
   479
        qApp->sendPostedEvents();
hgs
parents:
diff changeset
   480
        qApp->processEvents();
hgs
parents:
diff changeset
   481
hgs
parents:
diff changeset
   482
        collectionState->addAppsAction();
hgs
parents:
diff changeset
   483
hgs
parents:
diff changeset
   484
        qApp->sendPostedEvents();
hgs
parents:
diff changeset
   485
        qApp->processEvents();
hgs
parents:
diff changeset
   486
hgs
parents:
diff changeset
   487
        QVERIFY(mockState->enteredValue());
hgs
parents:
diff changeset
   488
hgs
parents:
diff changeset
   489
        machine->stop();
hgs
parents:
diff changeset
   490
hgs
parents:
diff changeset
   491
        // cleanup
hgs
parents:
diff changeset
   492
        HsMenuService::removeCollection(collectionId);
hgs
parents:
diff changeset
   493
    }
hgs
parents:
diff changeset
   494
#ifdef Q_OS_SYMBIAN
hgs
parents:
diff changeset
   495
#ifdef UT_MEMORY_CHECK
hgs
parents:
diff changeset
   496
    __UHEAP_MARKEND;
hgs
parents:
diff changeset
   497
#endif//UT_MEMORY_CHECK
hgs
parents:
diff changeset
   498
#endif//Q_OS_SYMBIAN
hgs
parents:
diff changeset
   499
}
hgs
parents:
diff changeset
   500
hgs
parents:
diff changeset
   501
void MenuStatesTest::renameAction()
hgs
parents:
diff changeset
   502
{
hgs
parents:
diff changeset
   503
#ifdef Q_OS_SYMBIAN
hgs
parents:
diff changeset
   504
    User::ResetInactivityTime();//it should help for Viewserver11 panic
hgs
parents:
diff changeset
   505
#ifdef UT_MEMORY_CHECK
hgs
parents:
diff changeset
   506
    __UHEAP_MARK;
hgs
parents:
diff changeset
   507
#endif//UT_MEMORY_CHECK
hgs
parents:
diff changeset
   508
#endif//Q_OS_SYMBIAN
hgs
parents:
diff changeset
   509
    {
hgs
parents:
diff changeset
   510
        HsMenuViewBuilder builder;
hgs
parents:
diff changeset
   511
        HsMenuModeWrapper menuMode;
hgs
parents:
diff changeset
   512
        HsMainWindowMock mainWindow;
hgs
parents:
diff changeset
   513
hgs
parents:
diff changeset
   514
        QScopedPointer<QStateMachine> machine(new QStateMachine(0));
hgs
parents:
diff changeset
   515
hgs
parents:
diff changeset
   516
        const QString collectionName("testCollection" +
hgs
parents:
diff changeset
   517
                                     QDateTime::currentDateTime().
hgs
parents:
diff changeset
   518
                                     toString("ddmmyyyy_hh_mm_ss_zzz"));
hgs
parents:
diff changeset
   519
hgs
parents:
diff changeset
   520
        const int collectionId = HsMenuService::createCollection(collectionName);
hgs
parents:
diff changeset
   521
hgs
parents:
diff changeset
   522
        HsCollectionState *collectionState =
hgs
parents:
diff changeset
   523
            new HsCollectionState(builder, menuMode, mainWindow, machine.data());
hgs
parents:
diff changeset
   524
hgs
parents:
diff changeset
   525
hgs
parents:
diff changeset
   526
        collectionState->mCollectionId = collectionId;
hgs
parents:
diff changeset
   527
hgs
parents:
diff changeset
   528
        AddToHomeScreenMockState *mockState =
hgs
parents:
diff changeset
   529
            new AddToHomeScreenMockState(machine.data());
hgs
parents:
diff changeset
   530
hgs
parents:
diff changeset
   531
        HsMenuEventTransition transition(
hgs
parents:
diff changeset
   532
            HsMenuEvent::RenameCollection, collectionState, mockState);
hgs
parents:
diff changeset
   533
hgs
parents:
diff changeset
   534
        collectionState->addTransition(&transition);
hgs
parents:
diff changeset
   535
hgs
parents:
diff changeset
   536
        machine->setInitialState(collectionState);
hgs
parents:
diff changeset
   537
hgs
parents:
diff changeset
   538
        machine->start();
hgs
parents:
diff changeset
   539
hgs
parents:
diff changeset
   540
        qApp->sendPostedEvents();
hgs
parents:
diff changeset
   541
hgs
parents:
diff changeset
   542
        collectionState->renameAction();
hgs
parents:
diff changeset
   543
hgs
parents:
diff changeset
   544
        qApp->sendPostedEvents();
hgs
parents:
diff changeset
   545
hgs
parents:
diff changeset
   546
        QVERIFY(mockState->enteredValue());
hgs
parents:
diff changeset
   547
hgs
parents:
diff changeset
   548
        machine->stop();
hgs
parents:
diff changeset
   549
hgs
parents:
diff changeset
   550
        // cleanup
hgs
parents:
diff changeset
   551
        HsMenuService::removeCollection(collectionId);
hgs
parents:
diff changeset
   552
    }
hgs
parents:
diff changeset
   553
#ifdef Q_OS_SYMBIAN
hgs
parents:
diff changeset
   554
#ifdef UT_MEMORY_CHECK
hgs
parents:
diff changeset
   555
    __UHEAP_MARKEND;
hgs
parents:
diff changeset
   556
#endif//UT_MEMORY_CHECK
hgs
parents:
diff changeset
   557
#endif//Q_OS_SYMBIAN
hgs
parents:
diff changeset
   558
}
hgs
parents:
diff changeset
   559
hgs
parents:
diff changeset
   560
hgs
parents:
diff changeset
   561
void MenuStatesTest::deleteAppsAction()
hgs
parents:
diff changeset
   562
{
hgs
parents:
diff changeset
   563
#ifdef Q_OS_SYMBIAN
hgs
parents:
diff changeset
   564
    User::ResetInactivityTime();//it should help for Viewserver11 panic
hgs
parents:
diff changeset
   565
#ifdef UT_MEMORY_CHECK
hgs
parents:
diff changeset
   566
    __UHEAP_MARK;
hgs
parents:
diff changeset
   567
#endif//UT_MEMORY_CHECK
hgs
parents:
diff changeset
   568
#endif//Q_OS_SYMBIAN
hgs
parents:
diff changeset
   569
    {
hgs
parents:
diff changeset
   570
        HsMenuViewBuilder builder;
hgs
parents:
diff changeset
   571
        HsMenuModeWrapper menuMode;
hgs
parents:
diff changeset
   572
        HsMainWindowMock mainWindow;
hgs
parents:
diff changeset
   573
hgs
parents:
diff changeset
   574
        QScopedPointer<QStateMachine> machine(new QStateMachine(0));
hgs
parents:
diff changeset
   575
hgs
parents:
diff changeset
   576
        const QString collectionName("testCollection" +
hgs
parents:
diff changeset
   577
                                     QDateTime::currentDateTime().
hgs
parents:
diff changeset
   578
                                     toString("ddmmyyyy_hh_mm_ss_zzz"));
hgs
parents:
diff changeset
   579
hgs
parents:
diff changeset
   580
        const int collectionId = HsMenuService::createCollection(collectionName);
hgs
parents:
diff changeset
   581
hgs
parents:
diff changeset
   582
        HsCollectionState *collectionState =
hgs
parents:
diff changeset
   583
            new HsCollectionState(builder, menuMode, mainWindow, machine.data());
hgs
parents:
diff changeset
   584
hgs
parents:
diff changeset
   585
        collectionState->mCollectionId = collectionId;
hgs
parents:
diff changeset
   586
hgs
parents:
diff changeset
   587
        machine->setInitialState(collectionState);
hgs
parents:
diff changeset
   588
hgs
parents:
diff changeset
   589
        AddToHomeScreenMockState *mockState =
hgs
parents:
diff changeset
   590
            new AddToHomeScreenMockState(machine.data());
hgs
parents:
diff changeset
   591
hgs
parents:
diff changeset
   592
        HsMenuEventTransition transition(
hgs
parents:
diff changeset
   593
            HsMenuEvent::DeleteCollection, collectionState, mockState);
hgs
parents:
diff changeset
   594
hgs
parents:
diff changeset
   595
        collectionState->addTransition(&transition);
hgs
parents:
diff changeset
   596
hgs
parents:
diff changeset
   597
        machine->setInitialState(collectionState);
hgs
parents:
diff changeset
   598
        machine->start();
hgs
parents:
diff changeset
   599
        qApp->sendPostedEvents();
hgs
parents:
diff changeset
   600
hgs
parents:
diff changeset
   601
        collectionState->deleteAction();
hgs
parents:
diff changeset
   602
hgs
parents:
diff changeset
   603
        qApp->sendPostedEvents();
hgs
parents:
diff changeset
   604
hgs
parents:
diff changeset
   605
        QVERIFY(mockState->enteredValue());
hgs
parents:
diff changeset
   606
hgs
parents:
diff changeset
   607
        machine->stop();
hgs
parents:
diff changeset
   608
hgs
parents:
diff changeset
   609
        // cleanup
hgs
parents:
diff changeset
   610
        HsMenuService::removeCollection(collectionId);
hgs
parents:
diff changeset
   611
    }
hgs
parents:
diff changeset
   612
#ifdef Q_OS_SYMBIAN
hgs
parents:
diff changeset
   613
#ifdef UT_MEMORY_CHECK
hgs
parents:
diff changeset
   614
    __UHEAP_MARKEND;
hgs
parents:
diff changeset
   615
#endif//UT_MEMORY_CHECK
hgs
parents:
diff changeset
   616
#endif//Q_OS_SYMBIAN
hgs
parents:
diff changeset
   617
}
hgs
parents:
diff changeset
   618
hgs
parents:
diff changeset
   619
void MenuStatesTest::updateLabel()
hgs
parents:
diff changeset
   620
{
hgs
parents:
diff changeset
   621
#ifdef Q_OS_SYMBIAN
hgs
parents:
diff changeset
   622
    User::ResetInactivityTime();//it should help for Viewserver11 panic
hgs
parents:
diff changeset
   623
#ifdef UT_MEMORY_CHECK
hgs
parents:
diff changeset
   624
    __UHEAP_MARK;
hgs
parents:
diff changeset
   625
#endif//UT_MEMORY_CHECK
hgs
parents:
diff changeset
   626
#endif//Q_OS_SYMBIAN
hgs
parents:
diff changeset
   627
    {
hgs
parents:
diff changeset
   628
        HsMenuViewBuilder builder;
hgs
parents:
diff changeset
   629
        HsMenuModeWrapper menuMode;
hgs
parents:
diff changeset
   630
        HsMainWindowMock mainWindow;
hgs
parents:
diff changeset
   631
hgs
parents:
diff changeset
   632
        QScopedPointer<QStateMachine> machine(new QStateMachine(0));
hgs
parents:
diff changeset
   633
        QState *rootState = new QState(machine.data());
hgs
parents:
diff changeset
   634
        machine->setInitialState(rootState);
hgs
parents:
diff changeset
   635
hgs
parents:
diff changeset
   636
        const QString collectionName("testCollection" +
hgs
parents:
diff changeset
   637
                                     QDateTime::currentDateTime().
hgs
parents:
diff changeset
   638
                                     toString("ddmmyyyy_hh_mm_ss_zzz"));
hgs
parents:
diff changeset
   639
hgs
parents:
diff changeset
   640
        const int collectionId =
hgs
parents:
diff changeset
   641
            HsMenuService::createCollection(collectionName);
hgs
parents:
diff changeset
   642
hgs
parents:
diff changeset
   643
        HsCollectionState *collectionState =
hgs
parents:
diff changeset
   644
            new HsCollectionState(builder, menuMode, mainWindow, rootState);
hgs
parents:
diff changeset
   645
hgs
parents:
diff changeset
   646
        collectionState->mCollectionId = collectionId;
hgs
parents:
diff changeset
   647
hgs
parents:
diff changeset
   648
        collectionState->mModel =
hgs
parents:
diff changeset
   649
            static_cast<HsMenuItemModel *>(
hgs
parents:
diff changeset
   650
                HsMenuService::getCollectionModel(collectionState->mCollectionId,
hgs
parents:
diff changeset
   651
                        collectionState->mSortAttribute));
hgs
parents:
diff changeset
   652
hgs
parents:
diff changeset
   653
        const QString label1 = collectionState->mModel->root().data(
hgs
parents:
diff changeset
   654
                                   Qt::DisplayRole).toString();
hgs
parents:
diff changeset
   655
hgs
parents:
diff changeset
   656
        const QString newName(label1 +
hgs
parents:
diff changeset
   657
                              QDateTime::currentDateTime().
hgs
parents:
diff changeset
   658
                              toString("ddmmyyyy_hh_mm_ss_zzz"));
hgs
parents:
diff changeset
   659
hgs
parents:
diff changeset
   660
        const bool renamed = HsMenuService::renameCollection(
hgs
parents:
diff changeset
   661
                                 collectionState->mCollectionId, newName);
hgs
parents:
diff changeset
   662
hgs
parents:
diff changeset
   663
        QVERIFY(renamed);
hgs
parents:
diff changeset
   664
hgs
parents:
diff changeset
   665
        QTest::qWait(3000);
hgs
parents:
diff changeset
   666
hgs
parents:
diff changeset
   667
        collectionState->updateLabel();
hgs
parents:
diff changeset
   668
hgs
parents:
diff changeset
   669
        const QString label2 = builder.currentViewLabel()->heading();
hgs
parents:
diff changeset
   670
hgs
parents:
diff changeset
   671
        QCOMPARE(label2, newName);
hgs
parents:
diff changeset
   672
hgs
parents:
diff changeset
   673
        QVERIFY(HsMenuService::renameCollection(collectionState->mCollectionId, label1));
hgs
parents:
diff changeset
   674
hgs
parents:
diff changeset
   675
        // cleanup
hgs
parents:
diff changeset
   676
        HsMenuService::removeCollection(collectionId);
hgs
parents:
diff changeset
   677
    }
hgs
parents:
diff changeset
   678
#ifdef UT_MEMORY_CHECK
hgs
parents:
diff changeset
   679
    __UHEAP_MARKEND;
hgs
parents:
diff changeset
   680
#endif//UT_MEMORY_CHECK
hgs
parents:
diff changeset
   681
}
hgs
parents:
diff changeset
   682
hgs
parents:
diff changeset
   683
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   684
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   685
//
hgs
parents:
diff changeset
   686
void MenuStatesTest::addElementToHomeScreen()
hgs
parents:
diff changeset
   687
{
hgs
parents:
diff changeset
   688
#ifdef Q_OS_SYMBIAN
hgs
parents:
diff changeset
   689
    User::ResetInactivityTime();//it should help for Viewserver11 panic
hgs
parents:
diff changeset
   690
#ifdef UT_MEMORY_CHECK
hgs
parents:
diff changeset
   691
    __UHEAP_MARK;
hgs
parents:
diff changeset
   692
#endif//UT_MEMORY_CHECK
hgs
parents:
diff changeset
   693
#endif//Q_OS_SYMBIAN
hgs
parents:
diff changeset
   694
    {
hgs
parents:
diff changeset
   695
        HsMenuViewBuilder builder;
hgs
parents:
diff changeset
   696
        HsMenuModeWrapper menuMode;
hgs
parents:
diff changeset
   697
        HsMainWindowMock mainWindow;
hgs
parents:
diff changeset
   698
hgs
parents:
diff changeset
   699
        QScopedPointer<QStateMachine> machine(new QStateMachine(0));
hgs
parents:
diff changeset
   700
hgs
parents:
diff changeset
   701
        const QString collectionName("testCollection" +
hgs
parents:
diff changeset
   702
                                     QDateTime::currentDateTime().
hgs
parents:
diff changeset
   703
                                     toString("ddmmyyyy_hh_mm_ss_zzz"));
hgs
parents:
diff changeset
   704
hgs
parents:
diff changeset
   705
        const int collectionId = HsMenuService::createCollection(collectionName);
hgs
parents:
diff changeset
   706
        HsMenuItemModel *allAppsModel = HsMenuService::getAllApplicationsModel();
hgs
parents:
diff changeset
   707
        QVERIFY(allAppsModel->rowCount() >= 1);
hgs
parents:
diff changeset
   708
        QModelIndex appIndex = allAppsModel->index(0, 0);
hgs
parents:
diff changeset
   709
hgs
parents:
diff changeset
   710
        const int appId = allAppsModel->data(appIndex, CaItemModel::IdRole).toInt();
hgs
parents:
diff changeset
   711
        QList<int> appIdList;
hgs
parents:
diff changeset
   712
        appIdList << appId;
hgs
parents:
diff changeset
   713
hgs
parents:
diff changeset
   714
        HsCollectionState *collectionState =
hgs
parents:
diff changeset
   715
            new HsCollectionState(builder, menuMode, mainWindow, machine.data());
hgs
parents:
diff changeset
   716
        collectionState->mCollectionId = collectionId;
hgs
parents:
diff changeset
   717
hgs
parents:
diff changeset
   718
        HsMenuService::addApplicationsToCollection(appIdList, collectionId);
hgs
parents:
diff changeset
   719
hgs
parents:
diff changeset
   720
        // create a state which is to be reached when add-to-home-screen
hgs
parents:
diff changeset
   721
        // event is triggered
hgs
parents:
diff changeset
   722
        AddToHomeScreenMockState *addToHomeScreenState =
hgs
parents:
diff changeset
   723
            new AddToHomeScreenMockState(machine.data());
hgs
parents:
diff changeset
   724
hgs
parents:
diff changeset
   725
        // create a transition to the new child state which will be triggered by
hgs
parents:
diff changeset
   726
        // an event with specified operation type
hgs
parents:
diff changeset
   727
        HsMenuEventTransition addToHomeScreenTransition(
hgs
parents:
diff changeset
   728
            HsMenuEvent::AddToHomeScreen, collectionState, addToHomeScreenState);
hgs
parents:
diff changeset
   729
hgs
parents:
diff changeset
   730
        // prepare the state graph
hgs
parents:
diff changeset
   731
        collectionState->addTransition(&addToHomeScreenTransition);
hgs
parents:
diff changeset
   732
hgs
parents:
diff changeset
   733
        machine->setInitialState(collectionState);
hgs
parents:
diff changeset
   734
        machine->start();
hgs
parents:
diff changeset
   735
        qApp->processEvents();
hgs
parents:
diff changeset
   736
hgs
parents:
diff changeset
   737
        const QModelIndex idx = collectionState->mModel->index(0);
hgs
parents:
diff changeset
   738
hgs
parents:
diff changeset
   739
        collectionState->addToHomeScreen(idx.data(CaItemModel::IdRole).toInt());
hgs
parents:
diff changeset
   740
hgs
parents:
diff changeset
   741
        qApp->processEvents();
hgs
parents:
diff changeset
   742
hgs
parents:
diff changeset
   743
        QVERIFY(addToHomeScreenState->enteredValue());
hgs
parents:
diff changeset
   744
hgs
parents:
diff changeset
   745
        machine->stop();
hgs
parents:
diff changeset
   746
hgs
parents:
diff changeset
   747
        // cleanup
hgs
parents:
diff changeset
   748
        if (!appIdList.isEmpty()) {
hgs
parents:
diff changeset
   749
            for (int i=0; i<appIdList.count(); i++) {
hgs
parents:
diff changeset
   750
                HsMenuService::removeApplicationFromCollection(appIdList[i],collectionId);
hgs
parents:
diff changeset
   751
            }
hgs
parents:
diff changeset
   752
        }
hgs
parents:
diff changeset
   753
        HsMenuService::removeCollection(collectionId);
hgs
parents:
diff changeset
   754
    }
hgs
parents:
diff changeset
   755
#ifdef Q_OS_SYMBIAN
hgs
parents:
diff changeset
   756
#ifdef UT_MEMORY_CHECK
hgs
parents:
diff changeset
   757
    __UHEAP_MARKEND;
hgs
parents:
diff changeset
   758
#endif//UT_MEMORY_CHECK
hgs
parents:
diff changeset
   759
#endif//Q_OS_SYMBIAN
hgs
parents:
diff changeset
   760
}
hgs
parents:
diff changeset
   761
hgs
parents:
diff changeset
   762
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   763
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   764
//
hgs
parents:
diff changeset
   765
void MenuStatesTest::addCollectionShortcutToHomeScreenAction()
hgs
parents:
diff changeset
   766
{
hgs
parents:
diff changeset
   767
#ifdef Q_OS_SYMBIAN
hgs
parents:
diff changeset
   768
    User::ResetInactivityTime();//it should help for Viewserver11 panic
hgs
parents:
diff changeset
   769
#ifdef UT_MEMORY_CHECK
hgs
parents:
diff changeset
   770
    __UHEAP_MARK;
hgs
parents:
diff changeset
   771
#endif//UT_MEMORY_CHECK
hgs
parents:
diff changeset
   772
#endif//Q_OS_SYMBIAN
hgs
parents:
diff changeset
   773
    {
hgs
parents:
diff changeset
   774
        HsMenuViewBuilder builder;
hgs
parents:
diff changeset
   775
        HsMenuModeWrapper menuMode;
hgs
parents:
diff changeset
   776
        HsMainWindowMock mainWindow;
hgs
parents:
diff changeset
   777
hgs
parents:
diff changeset
   778
        QScopedPointer<QStateMachine> machine(new QStateMachine(0));
hgs
parents:
diff changeset
   779
hgs
parents:
diff changeset
   780
        // we will start from collection view
hgs
parents:
diff changeset
   781
hgs
parents:
diff changeset
   782
        const QString collectionName("testCollection" +
hgs
parents:
diff changeset
   783
                                     QDateTime::currentDateTime().toString("ddmmyyyy_hh_mm_ss_zzz"));
hgs
parents:
diff changeset
   784
hgs
parents:
diff changeset
   785
        const int collectionId = HsMenuService::createCollection(collectionName);
hgs
parents:
diff changeset
   786
hgs
parents:
diff changeset
   787
        HsCollectionState *collectionState = new HsCollectionState(builder,
hgs
parents:
diff changeset
   788
                menuMode, mainWindow, machine.data());
hgs
parents:
diff changeset
   789
        collectionState->mCollectionId = collectionId;
hgs
parents:
diff changeset
   790
hgs
parents:
diff changeset
   791
        // create a state which is to be reached when add-to-home-screen
hgs
parents:
diff changeset
   792
        // event is triggered
hgs
parents:
diff changeset
   793
        AddToHomeScreenMockState *addToHomeScreenState =
hgs
parents:
diff changeset
   794
            new AddToHomeScreenMockState(machine.data());
hgs
parents:
diff changeset
   795
hgs
parents:
diff changeset
   796
        // create a transition to the new child state which will be triggered by
hgs
parents:
diff changeset
   797
        // an event with specified operation type
hgs
parents:
diff changeset
   798
        HsMenuEventTransition addToHomeScreenTransition(
hgs
parents:
diff changeset
   799
            HsMenuEvent::AddToHomeScreen, collectionState, addToHomeScreenState);
hgs
parents:
diff changeset
   800
hgs
parents:
diff changeset
   801
        // prepare the state graph
hgs
parents:
diff changeset
   802
        collectionState->addTransition(&addToHomeScreenTransition);
hgs
parents:
diff changeset
   803
hgs
parents:
diff changeset
   804
hgs
parents:
diff changeset
   805
        machine->setInitialState(collectionState);
hgs
parents:
diff changeset
   806
        machine->start();
hgs
parents:
diff changeset
   807
        qApp->sendPostedEvents();
hgs
parents:
diff changeset
   808
hgs
parents:
diff changeset
   809
        collectionState->addCollectionShortcutToHomeScreenAction();
hgs
parents:
diff changeset
   810
        qApp->sendPostedEvents();
hgs
parents:
diff changeset
   811
hgs
parents:
diff changeset
   812
        QVERIFY(addToHomeScreenState->enteredValue());
hgs
parents:
diff changeset
   813
hgs
parents:
diff changeset
   814
        // cleanup
hgs
parents:
diff changeset
   815
        HsMenuService::removeCollection(collectionId);
hgs
parents:
diff changeset
   816
    }
hgs
parents:
diff changeset
   817
#ifdef Q_OS_SYMBIAN
hgs
parents:
diff changeset
   818
#ifdef UT_MEMORY_CHECK
hgs
parents:
diff changeset
   819
    __UHEAP_MARKEND;
hgs
parents:
diff changeset
   820
#endif//UT_MEMORY_CHECK
hgs
parents:
diff changeset
   821
#endif//Q_OS_SYMBIAN
hgs
parents:
diff changeset
   822
}
hgs
parents:
diff changeset
   823
hgs
parents:
diff changeset
   824
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   825
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   826
//
hgs
parents:
diff changeset
   827
void MenuStatesTest::latestOnTopMenuAction()
hgs
parents:
diff changeset
   828
{
hgs
parents:
diff changeset
   829
#ifdef Q_OS_SYMBIAN
hgs
parents:
diff changeset
   830
    User::ResetInactivityTime();//it should help for Viewserver11 panic
hgs
parents:
diff changeset
   831
#ifdef UT_MEMORY_CHECK
hgs
parents:
diff changeset
   832
    __UHEAP_MARK;
hgs
parents:
diff changeset
   833
#endif//UT_MEMORY_CHECK
hgs
parents:
diff changeset
   834
#endif//Q_OS_SYMBIAN
hgs
parents:
diff changeset
   835
    {
hgs
parents:
diff changeset
   836
        HsMenuViewBuilder builder;
hgs
parents:
diff changeset
   837
        HsMenuModeWrapper menuMode;
hgs
parents:
diff changeset
   838
        HsMainWindowMock mainWindow;
hgs
parents:
diff changeset
   839
hgs
parents:
diff changeset
   840
        QScopedPointer<QState> parent(new QState);
hgs
parents:
diff changeset
   841
        parent->setObjectName(tr("testName1"));
hgs
parents:
diff changeset
   842
hgs
parents:
diff changeset
   843
        const QString collectionName("testCollection" +
hgs
parents:
diff changeset
   844
                                     QDateTime::currentDateTime().toString("ddmmyyyy_hh_mm_ss_zzz"));
hgs
parents:
diff changeset
   845
        const int collectionId = HsMenuService::createCollection(collectionName);
hgs
parents:
diff changeset
   846
hgs
parents:
diff changeset
   847
        HsCollectionState *collectionState = new HsCollectionState(
hgs
parents:
diff changeset
   848
            builder, menuMode, mainWindow, parent.data());
hgs
parents:
diff changeset
   849
        collectionState->mCollectionId = collectionId;
hgs
parents:
diff changeset
   850
hgs
parents:
diff changeset
   851
        collectionState->mSortAttribute =
hgs
parents:
diff changeset
   852
            Hs::OldestOnTopHsSortAttribute;
hgs
parents:
diff changeset
   853
hgs
parents:
diff changeset
   854
        MockModel *collectionModel = new MockModel;
hgs
parents:
diff changeset
   855
        collectionState->mModel = collectionModel;
hgs
parents:
diff changeset
   856
        collectionState->mMenuView->setModel(collectionModel);
hgs
parents:
diff changeset
   857
hgs
parents:
diff changeset
   858
        qRegisterMetaType<Hs::HsSortAttribute>(
hgs
parents:
diff changeset
   859
            "Hs::HsSortAttribute");
hgs
parents:
diff changeset
   860
        collectionState->mCollectionType = Hs::collectionDownloadedTypeName;
hgs
parents:
diff changeset
   861
        collectionState->setMenuOptions();
hgs
parents:
diff changeset
   862
        QVERIFY(collectionModel->rowCount() > 1 );
hgs
parents:
diff changeset
   863
        QVERIFY(collectionState->mLatestOnTopMenuAction != 0);
hgs
parents:
diff changeset
   864
        QVERIFY(collectionState->mOldestOnTopMenuAction != 0);
hgs
parents:
diff changeset
   865
        collectionState->latestOnTopMenuAction();
hgs
parents:
diff changeset
   866
hgs
parents:
diff changeset
   867
        QCOMPARE(collectionState->mSortAttribute,
hgs
parents:
diff changeset
   868
                 Hs::LatestOnTopHsSortAttribute);
hgs
parents:
diff changeset
   869
hgs
parents:
diff changeset
   870
        // cleanup
hgs
parents:
diff changeset
   871
        HsMenuService::removeCollection(collectionId);
hgs
parents:
diff changeset
   872
    }
hgs
parents:
diff changeset
   873
#ifdef Q_OS_SYMBIAN
hgs
parents:
diff changeset
   874
#ifdef UT_MEMORY_CHECK
hgs
parents:
diff changeset
   875
    __UHEAP_MARKEND;
hgs
parents:
diff changeset
   876
#endif//UT_MEMORY_CHECK
hgs
parents:
diff changeset
   877
#endif//Q_OS_SYMBIAN
hgs
parents:
diff changeset
   878
}
hgs
parents:
diff changeset
   879
hgs
parents:
diff changeset
   880
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   881
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   882
//
hgs
parents:
diff changeset
   883
void MenuStatesTest::oldestOnTopMenuAction()
hgs
parents:
diff changeset
   884
{
hgs
parents:
diff changeset
   885
#ifdef Q_OS_SYMBIAN
hgs
parents:
diff changeset
   886
    User::ResetInactivityTime();//it should help for Viewserver11 panic
hgs
parents:
diff changeset
   887
#ifdef UT_MEMORY_CHECK
hgs
parents:
diff changeset
   888
    __UHEAP_MARK;
hgs
parents:
diff changeset
   889
#endif//UT_MEMORY_CHECK
hgs
parents:
diff changeset
   890
#endif//Q_OS_SYMBIAN
hgs
parents:
diff changeset
   891
    {
hgs
parents:
diff changeset
   892
        // GUI objects set up
hgs
parents:
diff changeset
   893
hgs
parents:
diff changeset
   894
        HsMenuViewBuilder builder;
hgs
parents:
diff changeset
   895
        HsMenuModeWrapper menuMode;
hgs
parents:
diff changeset
   896
        HsMainWindowMock mainWindow;
hgs
parents:
diff changeset
   897
hgs
parents:
diff changeset
   898
        QScopedPointer<QState> parent(new QState);
hgs
parents:
diff changeset
   899
        parent->setObjectName(tr("testName1"));
hgs
parents:
diff changeset
   900
hgs
parents:
diff changeset
   901
        const QString collectionName("testCollection" +
hgs
parents:
diff changeset
   902
                                     QDateTime::currentDateTime().toString("ddmmyyyy_hh_mm_ss_zzz"));
hgs
parents:
diff changeset
   903
        const int collectionId = HsMenuService::createCollection(collectionName);
hgs
parents:
diff changeset
   904
hgs
parents:
diff changeset
   905
        HsCollectionState *collectionState =
hgs
parents:
diff changeset
   906
            new HsCollectionState(builder, menuMode, mainWindow, parent.data());
hgs
parents:
diff changeset
   907
        collectionState->mCollectionId = collectionId;
hgs
parents:
diff changeset
   908
hgs
parents:
diff changeset
   909
        collectionState->mSortAttribute =
hgs
parents:
diff changeset
   910
            Hs::LatestOnTopHsSortAttribute;
hgs
parents:
diff changeset
   911
hgs
parents:
diff changeset
   912
        MockModel *collectionModel = new MockModel;
hgs
parents:
diff changeset
   913
        collectionState->mModel = collectionModel;
hgs
parents:
diff changeset
   914
        collectionState->mMenuView->setModel(collectionModel);
hgs
parents:
diff changeset
   915
hgs
parents:
diff changeset
   916
        qRegisterMetaType<Hs::HsSortAttribute>(
hgs
parents:
diff changeset
   917
            "Hs::HsSortAttribute");
hgs
parents:
diff changeset
   918
        collectionState->mCollectionType = Hs::collectionDownloadedTypeName;
hgs
parents:
diff changeset
   919
        collectionState->setMenuOptions();
hgs
parents:
diff changeset
   920
        QVERIFY(collectionModel->rowCount() > 1 );
hgs
parents:
diff changeset
   921
        QVERIFY(collectionState->mLatestOnTopMenuAction != 0);
hgs
parents:
diff changeset
   922
        QVERIFY(collectionState->mOldestOnTopMenuAction != 0);
hgs
parents:
diff changeset
   923
hgs
parents:
diff changeset
   924
        collectionState->oldestOnTopMenuAction();
hgs
parents:
diff changeset
   925
hgs
parents:
diff changeset
   926
        QCOMPARE(collectionState->mSortAttribute,
hgs
parents:
diff changeset
   927
                 Hs::OldestOnTopHsSortAttribute);
hgs
parents:
diff changeset
   928
hgs
parents:
diff changeset
   929
        // cleanup
hgs
parents:
diff changeset
   930
        HsMenuService::removeCollection(collectionId);
hgs
parents:
diff changeset
   931
    }
hgs
parents:
diff changeset
   932
#ifdef Q_OS_SYMBIAN
hgs
parents:
diff changeset
   933
#ifdef UT_MEMORY_CHECK
hgs
parents:
diff changeset
   934
    __UHEAP_MARKEND;
hgs
parents:
diff changeset
   935
#endif//UT_MEMORY_CHECK
hgs
parents:
diff changeset
   936
#endif//Q_OS_SYMBIAN
hgs
parents:
diff changeset
   937
}
hgs
parents:
diff changeset
   938
hgs
parents:
diff changeset
   939
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   940
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   941
//
hgs
parents:
diff changeset
   942
void MenuStatesTest::createArrangeCollection()
hgs
parents:
diff changeset
   943
{
hgs
parents:
diff changeset
   944
#ifdef Q_OS_SYMBIAN
hgs
parents:
diff changeset
   945
    User::ResetInactivityTime();//it should help for Viewserver11 panic
hgs
parents:
diff changeset
   946
#ifdef UT_MEMORY_CHECK
hgs
parents:
diff changeset
   947
    __UHEAP_MARK;
hgs
parents:
diff changeset
   948
#endif//UT_MEMORY_CHECK
hgs
parents:
diff changeset
   949
#endif//Q_OS_SYMBIAN
hgs
parents:
diff changeset
   950
    {
hgs
parents:
diff changeset
   951
        HsMenuViewBuilder builder;
hgs
parents:
diff changeset
   952
        HsMenuModeWrapper menuMode;
hgs
parents:
diff changeset
   953
        HsMainWindowMock mainWindow;
hgs
parents:
diff changeset
   954
        QStateMachine *machine = new QStateMachine(0);
hgs
parents:
diff changeset
   955
hgs
parents:
diff changeset
   956
        const QString collectionName("testCollection" +
hgs
parents:
diff changeset
   957
                                     QDateTime::currentDateTime().
hgs
parents:
diff changeset
   958
                                     toString("ddmmyyyy_hh_mm_ss_zzz"));
hgs
parents:
diff changeset
   959
        const int collectionId = HsMenuService::createCollection(collectionName);
hgs
parents:
diff changeset
   960
hgs
parents:
diff changeset
   961
        HsCollectionState *collectionState =
hgs
parents:
diff changeset
   962
            new HsCollectionState(builder, menuMode, mainWindow, machine);
hgs
parents:
diff changeset
   963
hgs
parents:
diff changeset
   964
        collectionState->mCollectionId = collectionId;
hgs
parents:
diff changeset
   965
hgs
parents:
diff changeset
   966
        machine->setInitialState(collectionState);
hgs
parents:
diff changeset
   967
hgs
parents:
diff changeset
   968
        AddToHomeScreenMockState *mockState = new AddToHomeScreenMockState(machine);
hgs
parents:
diff changeset
   969
hgs
parents:
diff changeset
   970
        // create a transition to the new child state which will be triggered by
hgs
parents:
diff changeset
   971
        // an event with specified operation type
hgs
parents:
diff changeset
   972
        HsMenuEventTransition *transition = new HsMenuEventTransition(
hgs
parents:
diff changeset
   973
            HsMenuEvent::ArrangeCollection, collectionState, mockState);
hgs
parents:
diff changeset
   974
        collectionState->addTransition(transition);
hgs
parents:
diff changeset
   975
hgs
parents:
diff changeset
   976
        machine->start();
hgs
parents:
diff changeset
   977
        qApp->sendPostedEvents();
hgs
parents:
diff changeset
   978
        collectionState->createArrangeCollection();
hgs
parents:
diff changeset
   979
        qApp->sendPostedEvents();
hgs
parents:
diff changeset
   980
hgs
parents:
diff changeset
   981
        QVERIFY(mockState->enteredValue());
hgs
parents:
diff changeset
   982
        qApp->removePostedEvents(0);
hgs
parents:
diff changeset
   983
        machine->stop();
hgs
parents:
diff changeset
   984
hgs
parents:
diff changeset
   985
        delete machine;
hgs
parents:
diff changeset
   986
    }
hgs
parents:
diff changeset
   987
#ifdef Q_OS_SYMBIAN
hgs
parents:
diff changeset
   988
#ifdef UT_MEMORY_CHECK
hgs
parents:
diff changeset
   989
    __UHEAP_MARKEND;
hgs
parents:
diff changeset
   990
#endif//UT_MEMORY_CHECK
hgs
parents:
diff changeset
   991
#endif//Q_OS_SYMBIAN
hgs
parents:
diff changeset
   992
}
hgs
parents:
diff changeset
   993
hgs
parents:
diff changeset
   994
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   995
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   996
//
hgs
parents:
diff changeset
   997
#ifdef Q_OS_SYMBIAN
hgs
parents:
diff changeset
   998
void MenuStatesTest::openTaskSwitcher()
hgs
parents:
diff changeset
   999
{
hgs
parents:
diff changeset
  1000
#ifdef Q_OS_SYMBIAN
hgs
parents:
diff changeset
  1001
    User::ResetInactivityTime();//it should help for Viewserver11 panic
hgs
parents:
diff changeset
  1002
#ifdef UT_MEMORY_CHECK
hgs
parents:
diff changeset
  1003
    __UHEAP_MARK;
hgs
parents:
diff changeset
  1004
#endif//UT_MEMORY_CHECK
hgs
parents:
diff changeset
  1005
#endif//Q_OS_SYMBIAN
hgs
parents:
diff changeset
  1006
    {
hgs
parents:
diff changeset
  1007
hgs
parents:
diff changeset
  1008
        HsMenuViewBuilder builder;
hgs
parents:
diff changeset
  1009
        HsMenuModeWrapper menuMode;
hgs
parents:
diff changeset
  1010
        HsMainWindowMock mainWindow;
hgs
parents:
diff changeset
  1011
        QScopedPointer<QStateMachine> machine(new QStateMachine(0));
hgs
parents:
diff changeset
  1012
        HsCollectionState *collectionState =
hgs
parents:
diff changeset
  1013
            new HsCollectionState(builder, menuMode, mainWindow, machine.data());
hgs
parents:
diff changeset
  1014
        QVERIFY(collectionState->openTaskSwitcher());
hgs
parents:
diff changeset
  1015
    }
hgs
parents:
diff changeset
  1016
#ifdef Q_OS_SYMBIAN
hgs
parents:
diff changeset
  1017
#ifdef UT_MEMORY_CHECK
hgs
parents:
diff changeset
  1018
    __UHEAP_MARKEND;
hgs
parents:
diff changeset
  1019
#endif//UT_MEMORY_CHECK
hgs
parents:
diff changeset
  1020
#endif//Q_OS_SYMBIAN
hgs
parents:
diff changeset
  1021
}
hgs
parents:
diff changeset
  1022
#endif//Q_OS_SYMBIAN
hgs
parents:
diff changeset
  1023
hgs
parents:
diff changeset
  1024
hgs
parents:
diff changeset
  1025
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
  1026
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
  1027
//
hgs
parents:
diff changeset
  1028
void MenuStatesTest::disableSearchAction()
hgs
parents:
diff changeset
  1029
{
hgs
parents:
diff changeset
  1030
#ifdef Q_OS_SYMBIAN
hgs
parents:
diff changeset
  1031
    User::ResetInactivityTime();//it should help for Viewserver11 panic
hgs
parents:
diff changeset
  1032
#ifdef UT_MEMORY_CHECK
hgs
parents:
diff changeset
  1033
    __UHEAP_MARK;
hgs
parents:
diff changeset
  1034
#endif//UT_MEMORY_CHECK
hgs
parents:
diff changeset
  1035
#endif//Q_OS_SYMBIAN
hgs
parents:
diff changeset
  1036
    {
hgs
parents:
diff changeset
  1037
        HsMenuViewBuilder builder;
hgs
parents:
diff changeset
  1038
        HsMenuModeWrapper menuMode;
hgs
parents:
diff changeset
  1039
        HsMainWindowMock mainWindow;
hgs
parents:
diff changeset
  1040
hgs
parents:
diff changeset
  1041
        QScopedPointer<QStateMachine> machine(new QStateMachine(0));
hgs
parents:
diff changeset
  1042
hgs
parents:
diff changeset
  1043
        const QString collectionName("testCollection" +
hgs
parents:
diff changeset
  1044
                                     QDateTime::currentDateTime().
hgs
parents:
diff changeset
  1045
                                     toString("ddmmyyyy_hh_mm_ss_zzz"));
hgs
parents:
diff changeset
  1046
hgs
parents:
diff changeset
  1047
        const int collectionId = HsMenuService::createCollection(collectionName);
hgs
parents:
diff changeset
  1048
hgs
parents:
diff changeset
  1049
        HsCollectionState *collectionState =
hgs
parents:
diff changeset
  1050
            new HsCollectionState(builder, menuMode, mainWindow, machine.data());
hgs
parents:
diff changeset
  1051
hgs
parents:
diff changeset
  1052
hgs
parents:
diff changeset
  1053
        collectionState->mCollectionId = collectionId;
hgs
parents:
diff changeset
  1054
hgs
parents:
diff changeset
  1055
        machine->setInitialState(collectionState);
hgs
parents:
diff changeset
  1056
hgs
parents:
diff changeset
  1057
        machine->start();
hgs
parents:
diff changeset
  1058
hgs
parents:
diff changeset
  1059
        qApp->sendPostedEvents();
hgs
parents:
diff changeset
  1060
hgs
parents:
diff changeset
  1061
        collectionState->stateEntered();
hgs
parents:
diff changeset
  1062
hgs
parents:
diff changeset
  1063
        collectionState->mMenuView->disableSearch(true);
hgs
parents:
diff changeset
  1064
hgs
parents:
diff changeset
  1065
        QVERIFY(!collectionState->mMenuView->mBuilder.searchAction()->isEnabled());
hgs
parents:
diff changeset
  1066
hgs
parents:
diff changeset
  1067
        collectionState->mMenuView->disableSearch(false);
hgs
parents:
diff changeset
  1068
hgs
parents:
diff changeset
  1069
        QVERIFY(collectionState->mMenuView->mBuilder.searchAction()->isEnabled());
hgs
parents:
diff changeset
  1070
hgs
parents:
diff changeset
  1071
        collectionState->lockSearchButton(true);
hgs
parents:
diff changeset
  1072
hgs
parents:
diff changeset
  1073
        QVERIFY(!collectionState->mMenuView->mBuilder.searchAction()->isEnabled());
hgs
parents:
diff changeset
  1074
hgs
parents:
diff changeset
  1075
        collectionState->lockSearchButton(false);
hgs
parents:
diff changeset
  1076
hgs
parents:
diff changeset
  1077
        QVERIFY(collectionState->mMenuView->mBuilder.searchAction()->isEnabled());
hgs
parents:
diff changeset
  1078
hgs
parents:
diff changeset
  1079
        collectionState->stateExited();
hgs
parents:
diff changeset
  1080
hgs
parents:
diff changeset
  1081
        machine->stop();
hgs
parents:
diff changeset
  1082
hgs
parents:
diff changeset
  1083
        // cleanup
hgs
parents:
diff changeset
  1084
        HsMenuService::removeCollection(collectionId);
hgs
parents:
diff changeset
  1085
    }
hgs
parents:
diff changeset
  1086
#ifdef Q_OS_SYMBIAN
hgs
parents:
diff changeset
  1087
#ifdef UT_MEMORY_CHECK
hgs
parents:
diff changeset
  1088
    __UHEAP_MARKEND;
hgs
parents:
diff changeset
  1089
#endif//UT_MEMORY_CHECK
hgs
parents:
diff changeset
  1090
#endif//Q_OS_SYMBIAN
hgs
parents:
diff changeset
  1091
}
hgs
parents:
diff changeset
  1092
QTEST_MAIN(MenuStatesTest)
hgs
parents:
diff changeset
  1093