homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/t_allcollectionsstate/src/t_allcollectionsstate.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 <hblistview.h>
hgs
parents:
diff changeset
    22
#include <hblistviewitem.h>
hgs
parents:
diff changeset
    23
#include <HbMenu>
hgs
parents:
diff changeset
    24
#include <HbAction>
hgs
parents:
diff changeset
    25
#include <qscopedpointer>
hgs
parents:
diff changeset
    26
hgs
parents:
diff changeset
    27
#include "caentry.h"
hgs
parents:
diff changeset
    28
#include "caitemmodel.h"
hgs
parents:
diff changeset
    29
#include "hsmenuview.h"
hgs
parents:
diff changeset
    30
#include "hsmenuviewbuilder.h"
hgs
parents:
diff changeset
    31
#include "hsmenumodewrapper.h"
hgs
parents:
diff changeset
    32
#include "hsmenuevent.h"
hgs
parents:
diff changeset
    33
#include "hsallcollectionsstate.h"
hgs
parents:
diff changeset
    34
#include "hsmenueventtransition.h"
hgs
parents:
diff changeset
    35
#include "hsmainwindow.h"
hgs
parents:
diff changeset
    36
hgs
parents:
diff changeset
    37
#include "t_hsaddtohomescreenmockstate.h"
hgs
parents:
diff changeset
    38
#include "t_hsmockmodel.h"
hgs
parents:
diff changeset
    39
#include "t_allcollectionsstate.h"
hgs
parents:
diff changeset
    40
hgs
parents:
diff changeset
    41
class HsMainWindowMock : public HsMainWindow
hgs
parents:
diff changeset
    42
{
hgs
parents:
diff changeset
    43
    virtual void setCurrentView(HbView *view);
hgs
parents:
diff changeset
    44
hgs
parents:
diff changeset
    45
};
hgs
parents:
diff changeset
    46
hgs
parents:
diff changeset
    47
void HsMainWindowMock::setCurrentView(HbView *view)
hgs
parents:
diff changeset
    48
{
hgs
parents:
diff changeset
    49
    Q_UNUSED(view);
hgs
parents:
diff changeset
    50
    // do nothing    
hgs
parents:
diff changeset
    51
}
hgs
parents:
diff changeset
    52
hgs
parents:
diff changeset
    53
void MenuStatesTest::initTestCase()
hgs
parents:
diff changeset
    54
{
hgs
parents:
diff changeset
    55
//    mWindow = NULL;
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
//    mWindow = new HbMainWindow;
hgs
parents:
diff changeset
    61
}
hgs
parents:
diff changeset
    62
hgs
parents:
diff changeset
    63
void MenuStatesTest::cleanup()
hgs
parents:
diff changeset
    64
{
hgs
parents:
diff changeset
    65
    qApp->processEvents();
hgs
parents:
diff changeset
    66
//    delete mWindow;
hgs
parents:
diff changeset
    67
//    mWindow = NULL;
hgs
parents:
diff changeset
    68
}
hgs
parents:
diff changeset
    69
hgs
parents:
diff changeset
    70
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    71
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    72
//
hgs
parents:
diff changeset
    73
void MenuStatesTest::construction()
hgs
parents:
diff changeset
    74
{
hgs
parents:
diff changeset
    75
#ifdef Q_OS_SYMBIAN
hgs
parents:
diff changeset
    76
    User::ResetInactivityTime();//it should help for Viewserver11 panic
hgs
parents:
diff changeset
    77
#ifdef UT_MEMORY_CHECK
hgs
parents:
diff changeset
    78
    __UHEAP_MARK;
hgs
parents:
diff changeset
    79
#endif//UT_MEMORY_CHECK
hgs
parents:
diff changeset
    80
#endif//Q_OS_SYMBIAN
hgs
parents:
diff changeset
    81
    {
hgs
parents:
diff changeset
    82
        HsMenuViewBuilder builder;
hgs
parents:
diff changeset
    83
        HsMenuModeWrapper menuMode;
hgs
parents:
diff changeset
    84
        HsMainWindowMock mainWindow;
hgs
parents:
diff changeset
    85
        QState *parent = new QState;
hgs
parents:
diff changeset
    86
hgs
parents:
diff changeset
    87
        HsAllCollectionsState *allCollectionsState =
hgs
parents:
diff changeset
    88
            new HsAllCollectionsState(builder,
hgs
parents:
diff changeset
    89
                                      menuMode,
hgs
parents:
diff changeset
    90
                                      mainWindow,
hgs
parents:
diff changeset
    91
                                      parent);
hgs
parents:
diff changeset
    92
hgs
parents:
diff changeset
    93
        QCOMPARE(allCollectionsState->mBackKeyAction,
hgs
parents:
diff changeset
    94
                 allCollectionsState->mMenuView->view()->navigationAction());
hgs
parents:
diff changeset
    95
hgs
parents:
diff changeset
    96
        QVERIFY(allCollectionsState->mModel !=
hgs
parents:
diff changeset
    97
                static_cast<HsMenuItemModel *>(0));
hgs
parents:
diff changeset
    98
        delete parent;
hgs
parents:
diff changeset
    99
    }
hgs
parents:
diff changeset
   100
#ifdef Q_OS_SYMBIAN
hgs
parents:
diff changeset
   101
#ifdef UT_MEMORY_CHECK
hgs
parents:
diff changeset
   102
    __UHEAP_MARKEND;
hgs
parents:
diff changeset
   103
#endif//UT_MEMORY_CHECK
hgs
parents:
diff changeset
   104
#endif//Q_OS_SYMBIAN
hgs
parents:
diff changeset
   105
}
hgs
parents:
diff changeset
   106
hgs
parents:
diff changeset
   107
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   108
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   109
//
hgs
parents:
diff changeset
   110
hgs
parents:
diff changeset
   111
void MenuStatesTest::addModeEnteredExited()
hgs
parents:
diff changeset
   112
{
hgs
parents:
diff changeset
   113
#ifdef Q_OS_SYMBIAN
hgs
parents:
diff changeset
   114
    User::ResetInactivityTime();//it should help for Viewserver11 panic
hgs
parents:
diff changeset
   115
#ifdef UT_MEMORY_CHECK
hgs
parents:
diff changeset
   116
    __UHEAP_MARK;
hgs
parents:
diff changeset
   117
#endif//UT_MEMORY_CHECK
hgs
parents:
diff changeset
   118
#endif//Q_OS_SYMBIAN
hgs
parents:
diff changeset
   119
    {
hgs
parents:
diff changeset
   120
        HsMenuViewBuilder builder;
hgs
parents:
diff changeset
   121
        HsMenuModeWrapper menuMode;
hgs
parents:
diff changeset
   122
        QState *parent = new QState;
hgs
parents:
diff changeset
   123
        HsMainWindowMock mainWindow;
hgs
parents:
diff changeset
   124
        HsAllCollectionsState *allCollectionsState =
hgs
parents:
diff changeset
   125
            new HsAllCollectionsState(
hgs
parents:
diff changeset
   126
            builder, menuMode, mainWindow, parent);
hgs
parents:
diff changeset
   127
hgs
parents:
diff changeset
   128
        allCollectionsState->mMenuMode->setHsMenuMode(Hs::AddHsMenuMode);
hgs
parents:
diff changeset
   129
        allCollectionsState->addModeEntered();
hgs
parents:
diff changeset
   130
hgs
parents:
diff changeset
   131
        QCOMPARE(allCollectionsState->mMenuMode->getHsMenuMode(),
hgs
parents:
diff changeset
   132
                 Hs::AddHsMenuMode);
hgs
parents:
diff changeset
   133
        delete parent;
hgs
parents:
diff changeset
   134
    }
hgs
parents:
diff changeset
   135
#ifdef Q_OS_SYMBIAN
hgs
parents:
diff changeset
   136
#ifdef UT_MEMORY_CHECK
hgs
parents:
diff changeset
   137
    __UHEAP_MARKEND;
hgs
parents:
diff changeset
   138
#endif//UT_MEMORY_CHECK
hgs
parents:
diff changeset
   139
#endif//Q_OS_SYMBIAN
hgs
parents:
diff changeset
   140
}
hgs
parents:
diff changeset
   141
hgs
parents:
diff changeset
   142
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   143
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   144
//
hgs
parents:
diff changeset
   145
hgs
parents:
diff changeset
   146
void MenuStatesTest::normalModeEnteredExited()
hgs
parents:
diff changeset
   147
{
hgs
parents:
diff changeset
   148
#ifdef Q_OS_SYMBIAN
hgs
parents:
diff changeset
   149
    User::ResetInactivityTime();//it should help for Viewserver11 panic
hgs
parents:
diff changeset
   150
#ifdef UT_MEMORY_CHECK
hgs
parents:
diff changeset
   151
    __UHEAP_MARK;
hgs
parents:
diff changeset
   152
#endif//UT_MEMORY_CHECK
hgs
parents:
diff changeset
   153
#endif//Q_OS_SYMBIAN
hgs
parents:
diff changeset
   154
    {
hgs
parents:
diff changeset
   155
        HsMenuViewBuilder builder;
hgs
parents:
diff changeset
   156
        HsMenuModeWrapper menuMode;
hgs
parents:
diff changeset
   157
        HsMainWindowMock mainWindow;
hgs
parents:
diff changeset
   158
        QState *parent = new QState;
hgs
parents:
diff changeset
   159
        HsAllCollectionsState *allCollectionsState = new HsAllCollectionsState(
hgs
parents:
diff changeset
   160
            builder, menuMode, mainWindow, parent);
hgs
parents:
diff changeset
   161
hgs
parents:
diff changeset
   162
        allCollectionsState->mMenuMode->setHsMenuMode(Hs::NormalHsMenuMode);
hgs
parents:
diff changeset
   163
        allCollectionsState->normalModeEntered();
hgs
parents:
diff changeset
   164
        QCOMPARE(allCollectionsState->mMenuMode->getHsMenuMode(),
hgs
parents:
diff changeset
   165
                 Hs::NormalHsMenuMode);
hgs
parents:
diff changeset
   166
        allCollectionsState->normalModeExited();
hgs
parents:
diff changeset
   167
        QCOMPARE(allCollectionsState->mMenuMode->getHsMenuMode(),
hgs
parents:
diff changeset
   168
                 Hs::NormalHsMenuMode);
hgs
parents:
diff changeset
   169
        delete parent;
hgs
parents:
diff changeset
   170
    }
hgs
parents:
diff changeset
   171
#ifdef Q_OS_SYMBIAN
hgs
parents:
diff changeset
   172
#ifdef UT_MEMORY_CHECK
hgs
parents:
diff changeset
   173
    __UHEAP_MARKEND;
hgs
parents:
diff changeset
   174
#endif//UT_MEMORY_CHECK
hgs
parents:
diff changeset
   175
#endif//Q_OS_SYMBIAN
hgs
parents:
diff changeset
   176
}
hgs
parents:
diff changeset
   177
hgs
parents:
diff changeset
   178
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   179
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   180
//
hgs
parents:
diff changeset
   181
void MenuStatesTest::createNewCollection()
hgs
parents:
diff changeset
   182
{
hgs
parents:
diff changeset
   183
#ifdef Q_OS_SYMBIAN
hgs
parents:
diff changeset
   184
    User::ResetInactivityTime();//it should help for Viewserver11 panic
hgs
parents:
diff changeset
   185
#ifdef UT_MEMORY_CHECK
hgs
parents:
diff changeset
   186
    __UHEAP_MARK;
hgs
parents:
diff changeset
   187
#endif//UT_MEMORY_CHECK
hgs
parents:
diff changeset
   188
#endif//Q_OS_SYMBIAN
hgs
parents:
diff changeset
   189
    {
hgs
parents:
diff changeset
   190
        HsMenuViewBuilder builder;
hgs
parents:
diff changeset
   191
        HsMenuModeWrapper menuMode;
hgs
parents:
diff changeset
   192
        HsMainWindowMock mainWindow;
hgs
parents:
diff changeset
   193
        QStateMachine *machine = new QStateMachine(0);
hgs
parents:
diff changeset
   194
hgs
parents:
diff changeset
   195
        HsAllCollectionsState *allCollectionsState =
hgs
parents:
diff changeset
   196
            new HsAllCollectionsState(builder, menuMode, mainWindow, machine);
hgs
parents:
diff changeset
   197
hgs
parents:
diff changeset
   198
        machine->setInitialState(allCollectionsState);
hgs
parents:
diff changeset
   199
hgs
parents:
diff changeset
   200
        AddToHomeScreenMockState *mockState = new AddToHomeScreenMockState(machine);
hgs
parents:
diff changeset
   201
hgs
parents:
diff changeset
   202
        // create a transition to the new child state which will be triggered by
hgs
parents:
diff changeset
   203
        // an event with specified operation type
hgs
parents:
diff changeset
   204
        HsMenuEventTransition *newCollectionTransition = new HsMenuEventTransition(
hgs
parents:
diff changeset
   205
            HsMenuEvent::CreateCollection, allCollectionsState, mockState);
hgs
parents:
diff changeset
   206
hgs
parents:
diff changeset
   207
        allCollectionsState->addTransition(newCollectionTransition);
hgs
parents:
diff changeset
   208
hgs
parents:
diff changeset
   209
        allCollectionsState->scrollToBeginning();
hgs
parents:
diff changeset
   210
        allCollectionsState->stateEntered();
hgs
parents:
diff changeset
   211
hgs
parents:
diff changeset
   212
        machine->start();
hgs
parents:
diff changeset
   213
        qApp->sendPostedEvents();
hgs
parents:
diff changeset
   214
hgs
parents:
diff changeset
   215
        allCollectionsState->createNewCollection();
hgs
parents:
diff changeset
   216
        qApp->sendPostedEvents();
hgs
parents:
diff changeset
   217
        QVERIFY(mockState->enteredValue());
hgs
parents:
diff changeset
   218
        qApp->removePostedEvents(0);
hgs
parents:
diff changeset
   219
        machine->stop();
hgs
parents:
diff changeset
   220
        delete machine;
hgs
parents:
diff changeset
   221
    }
hgs
parents:
diff changeset
   222
#ifdef Q_OS_SYMBIAN
hgs
parents:
diff changeset
   223
#ifdef UT_MEMORY_CHECK
hgs
parents:
diff changeset
   224
    __UHEAP_MARKEND;
hgs
parents:
diff changeset
   225
#endif//UT_MEMORY_CHECK
hgs
parents:
diff changeset
   226
#endif//Q_OS_SYMBIAN
hgs
parents:
diff changeset
   227
}
hgs
parents:
diff changeset
   228
hgs
parents:
diff changeset
   229
hgs
parents:
diff changeset
   230
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   231
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   232
//
hgs
parents:
diff changeset
   233
void MenuStatesTest::createArrangeCollection()
hgs
parents:
diff changeset
   234
{
hgs
parents:
diff changeset
   235
#ifdef Q_OS_SYMBIAN
hgs
parents:
diff changeset
   236
    User::ResetInactivityTime();//it should help for Viewserver11 panic
hgs
parents:
diff changeset
   237
#ifdef UT_MEMORY_CHECK
hgs
parents:
diff changeset
   238
    __UHEAP_MARK;
hgs
parents:
diff changeset
   239
#endif//UT_MEMORY_CHECK
hgs
parents:
diff changeset
   240
#endif//Q_OS_SYMBIAN
hgs
parents:
diff changeset
   241
    {
hgs
parents:
diff changeset
   242
        HsMenuViewBuilder builder;
hgs
parents:
diff changeset
   243
        HsMenuModeWrapper menuMode;
hgs
parents:
diff changeset
   244
        HsMainWindowMock mainWindow;
hgs
parents:
diff changeset
   245
        QStateMachine *machine = new QStateMachine(0);
hgs
parents:
diff changeset
   246
        HsAllCollectionsState *allCollectionsState =
hgs
parents:
diff changeset
   247
            new HsAllCollectionsState(builder, menuMode, mainWindow, machine);
hgs
parents:
diff changeset
   248
hgs
parents:
diff changeset
   249
        machine->setInitialState(allCollectionsState);
hgs
parents:
diff changeset
   250
hgs
parents:
diff changeset
   251
        AddToHomeScreenMockState *mockState = new AddToHomeScreenMockState(machine);
hgs
parents:
diff changeset
   252
hgs
parents:
diff changeset
   253
        // create a transition to the new child state which will be triggered by
hgs
parents:
diff changeset
   254
        // an event with specified operation type
hgs
parents:
diff changeset
   255
        HsMenuEventTransition *transition = new HsMenuEventTransition(
hgs
parents:
diff changeset
   256
            HsMenuEvent::ArrangeAllCollections, allCollectionsState, mockState);
hgs
parents:
diff changeset
   257
hgs
parents:
diff changeset
   258
        allCollectionsState->addTransition(transition);
hgs
parents:
diff changeset
   259
hgs
parents:
diff changeset
   260
        allCollectionsState->scrollToBeginning();
hgs
parents:
diff changeset
   261
        allCollectionsState->stateEntered();
hgs
parents:
diff changeset
   262
        machine->start();
hgs
parents:
diff changeset
   263
        qApp->sendPostedEvents();
hgs
parents:
diff changeset
   264
hgs
parents:
diff changeset
   265
        allCollectionsState->createArrangeCollection();
hgs
parents:
diff changeset
   266
        qApp->sendPostedEvents();
hgs
parents:
diff changeset
   267
hgs
parents:
diff changeset
   268
        QVERIFY(mockState->enteredValue());
hgs
parents:
diff changeset
   269
        qApp->removePostedEvents(0);
hgs
parents:
diff changeset
   270
        machine->stop();
hgs
parents:
diff changeset
   271
hgs
parents:
diff changeset
   272
        delete machine;
hgs
parents:
diff changeset
   273
    }
hgs
parents:
diff changeset
   274
#ifdef Q_OS_SYMBIAN
hgs
parents:
diff changeset
   275
#ifdef UT_MEMORY_CHECK
hgs
parents:
diff changeset
   276
    __UHEAP_MARKEND;
hgs
parents:
diff changeset
   277
#endif//UT_MEMORY_CHECK
hgs
parents:
diff changeset
   278
#endif//Q_OS_SYMBIAN
hgs
parents:
diff changeset
   279
}
hgs
parents:
diff changeset
   280
hgs
parents:
diff changeset
   281
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   282
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   283
//
hgs
parents:
diff changeset
   284
void MenuStatesTest::listItemActivated()
hgs
parents:
diff changeset
   285
{
hgs
parents:
diff changeset
   286
#ifdef Q_OS_SYMBIAN
hgs
parents:
diff changeset
   287
    User::ResetInactivityTime();//it should help for Viewserver11 panic
hgs
parents:
diff changeset
   288
#ifdef UT_MEMORY_CHECK
hgs
parents:
diff changeset
   289
    __UHEAP_MARK;
hgs
parents:
diff changeset
   290
#endif//UT_MEMORY_CHECK
hgs
parents:
diff changeset
   291
#endif//Q_OS_SYMBIAN
hgs
parents:
diff changeset
   292
    {
hgs
parents:
diff changeset
   293
        HsMenuViewBuilder builder;
hgs
parents:
diff changeset
   294
        HsMenuModeWrapper menuMode;
hgs
parents:
diff changeset
   295
        HsMainWindowMock mainWindow;
hgs
parents:
diff changeset
   296
        QStateMachine *machine = new QStateMachine(0);
hgs
parents:
diff changeset
   297
        QState *parent = new QState(machine);
hgs
parents:
diff changeset
   298
hgs
parents:
diff changeset
   299
        HsAllCollectionsState *allCollectionsState =
hgs
parents:
diff changeset
   300
            new HsAllCollectionsState(builder, menuMode, mainWindow, parent);
hgs
parents:
diff changeset
   301
hgs
parents:
diff changeset
   302
        allCollectionsState->scrollToBeginning();
hgs
parents:
diff changeset
   303
        allCollectionsState->stateEntered();
hgs
parents:
diff changeset
   304
hgs
parents:
diff changeset
   305
        QVERIFY(allCollectionsState->mModel != NULL);
hgs
parents:
diff changeset
   306
        QModelIndex applicationModelIndex =
hgs
parents:
diff changeset
   307
            allCollectionsState->mModel->index(0, 0);
hgs
parents:
diff changeset
   308
hgs
parents:
diff changeset
   309
        allCollectionsState->openCollection(applicationModelIndex);
hgs
parents:
diff changeset
   310
hgs
parents:
diff changeset
   311
        allCollectionsState->stateExited();
hgs
parents:
diff changeset
   312
hgs
parents:
diff changeset
   313
        qApp->processEvents();
hgs
parents:
diff changeset
   314
        delete machine;
hgs
parents:
diff changeset
   315
    }
hgs
parents:
diff changeset
   316
#ifdef Q_OS_SYMBIAN
hgs
parents:
diff changeset
   317
#ifdef UT_MEMORY_CHECK
hgs
parents:
diff changeset
   318
    __UHEAP_MARKEND;
hgs
parents:
diff changeset
   319
#endif//UT_MEMORY_CHECK
hgs
parents:
diff changeset
   320
#endif//Q_OS_SYMBIAN
hgs
parents:
diff changeset
   321
}
hgs
parents:
diff changeset
   322
hgs
parents:
diff changeset
   323
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   324
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   325
hgs
parents:
diff changeset
   326
void MenuStatesTest::listItemLongPressed()
hgs
parents:
diff changeset
   327
{
hgs
parents:
diff changeset
   328
#ifdef Q_OS_SYMBIAN
hgs
parents:
diff changeset
   329
    User::ResetInactivityTime();//it should help for Viewserver11 panic
hgs
parents:
diff changeset
   330
#ifdef UT_MEMORY_CHECK
hgs
parents:
diff changeset
   331
    __UHEAP_MARK;
hgs
parents:
diff changeset
   332
#endif//UT_MEMORY_CHECK
hgs
parents:
diff changeset
   333
#endif//Q_OS_SYMBIAN
hgs
parents:
diff changeset
   334
    {
hgs
parents:
diff changeset
   335
        QScopedPointer<HbMainWindow> wind(new HbMainWindow);
hgs
parents:
diff changeset
   336
hgs
parents:
diff changeset
   337
        HsMenuViewBuilder builder;
hgs
parents:
diff changeset
   338
        HsMenuModeWrapper menuMode;
hgs
parents:
diff changeset
   339
        HsMainWindowMock mainWindow;
hgs
parents:
diff changeset
   340
        
hgs
parents:
diff changeset
   341
        QStateMachine *machine = new QStateMachine(0);
hgs
parents:
diff changeset
   342
        QState *parent = new QState(machine);
hgs
parents:
diff changeset
   343
hgs
parents:
diff changeset
   344
        HsAllCollectionsState *allCollectionsState =
hgs
parents:
diff changeset
   345
            new HsAllCollectionsState(builder, menuMode, mainWindow, parent);
hgs
parents:
diff changeset
   346
hgs
parents:
diff changeset
   347
        allCollectionsState->scrollToBeginning();
hgs
parents:
diff changeset
   348
        allCollectionsState->stateEntered();
hgs
parents:
diff changeset
   349
hgs
parents:
diff changeset
   350
        HbAbstractViewItem *item = new HbListViewItem;
hgs
parents:
diff changeset
   351
hgs
parents:
diff changeset
   352
        item->setModelIndex(allCollectionsState->mModel->index(0,0));        
hgs
parents:
diff changeset
   353
hgs
parents:
diff changeset
   354
        allCollectionsState->showContextMenu(item ,
hgs
parents:
diff changeset
   355
                QPointF(50,50));
hgs
parents:
diff changeset
   356
hgs
parents:
diff changeset
   357
        uint flags = allCollectionsState->mModel->data(allCollectionsState->mModel->index(0, 0),
hgs
parents:
diff changeset
   358
                                          CaItemModel::FlagsRole).value<EntryFlags> ();
hgs
parents:
diff changeset
   359
hgs
parents:
diff changeset
   360
        if (flags & RemovableEntryFlag) {
hgs
parents:
diff changeset
   361
            QCOMPARE(allCollectionsState->mContextMenu->actions().length(), 4);
hgs
parents:
diff changeset
   362
        } else {
hgs
parents:
diff changeset
   363
            QCOMPARE(allCollectionsState->mContextMenu->actions().length(), 2);
hgs
parents:
diff changeset
   364
        }
hgs
parents:
diff changeset
   365
hgs
parents:
diff changeset
   366
hgs
parents:
diff changeset
   367
        QVERIFY(allCollectionsState->mContextMenu->testAttribute(Qt::WA_DeleteOnClose));
hgs
parents:
diff changeset
   368
hgs
parents:
diff changeset
   369
        qApp->processEvents();
hgs
parents:
diff changeset
   370
hgs
parents:
diff changeset
   371
        allCollectionsState->stateExited();
hgs
parents:
diff changeset
   372
hgs
parents:
diff changeset
   373
        qApp->processEvents();
hgs
parents:
diff changeset
   374
        delete machine;
hgs
parents:
diff changeset
   375
        delete item;
hgs
parents:
diff changeset
   376
    }
hgs
parents:
diff changeset
   377
#ifdef Q_OS_SYMBIAN
hgs
parents:
diff changeset
   378
#ifdef UT_MEMORY_CHECK
hgs
parents:
diff changeset
   379
    __UHEAP_MARKEND;
hgs
parents:
diff changeset
   380
#endif//UT_MEMORY_CHECK
hgs
parents:
diff changeset
   381
#endif//Q_OS_SYMBIAN
hgs
parents:
diff changeset
   382
}
hgs
parents:
diff changeset
   383
hgs
parents:
diff changeset
   384
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   385
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   386
//
hgs
parents:
diff changeset
   387
void MenuStatesTest::contextMenuAction()
hgs
parents:
diff changeset
   388
{
hgs
parents:
diff changeset
   389
#ifdef Q_OS_SYMBIAN
hgs
parents:
diff changeset
   390
    User::ResetInactivityTime();//it should help for Viewserver11 panic
hgs
parents:
diff changeset
   391
#ifdef UT_MEMORY_CHECK
hgs
parents:
diff changeset
   392
    __UHEAP_MARK;
hgs
parents:
diff changeset
   393
#endif//UT_MEMORY_CHECK
hgs
parents:
diff changeset
   394
#endif//Q_OS_SYMBIAN
hgs
parents:
diff changeset
   395
    {
hgs
parents:
diff changeset
   396
        QScopedPointer<QStateMachine> machine(new QStateMachine(0));
hgs
parents:
diff changeset
   397
hgs
parents:
diff changeset
   398
        QScopedPointer<HbMainWindow> window(new HbMainWindow);
hgs
parents:
diff changeset
   399
hgs
parents:
diff changeset
   400
        HsMenuViewBuilder builder;
hgs
parents:
diff changeset
   401
        HsMenuModeWrapper menuMode;
hgs
parents:
diff changeset
   402
        HsMainWindow mainWindow;
hgs
parents:
diff changeset
   403
hgs
parents:
diff changeset
   404
        QScopedPointer<HsAllCollectionsState> allCollectionsState (new HsAllCollectionsState(
hgs
parents:
diff changeset
   405
            builder, menuMode, mainWindow, machine.data()));
hgs
parents:
diff changeset
   406
hgs
parents:
diff changeset
   407
hgs
parents:
diff changeset
   408
        // we will start from all apps view
hgs
parents:
diff changeset
   409
        machine->setInitialState(allCollectionsState.data());
hgs
parents:
diff changeset
   410
hgs
parents:
diff changeset
   411
        // create a state which is to be reached when add-to-home-screen
hgs
parents:
diff changeset
   412
        // event is triggered
hgs
parents:
diff changeset
   413
        AddToHomeScreenMockState addToHomeScreenState(machine.data());
hgs
parents:
diff changeset
   414
hgs
parents:
diff changeset
   415
        // create a transition to the new child state which will be triggered by
hgs
parents:
diff changeset
   416
        // an event with specified operation type
hgs
parents:
diff changeset
   417
        HsMenuEventTransition addToHomeScreenTransition(
hgs
parents:
diff changeset
   418
            HsMenuEvent::AddToHomeScreen, allCollectionsState.data(), &addToHomeScreenState);
hgs
parents:
diff changeset
   419
hgs
parents:
diff changeset
   420
        // prepare the state graph
hgs
parents:
diff changeset
   421
        allCollectionsState->addTransition(&addToHomeScreenTransition);
hgs
parents:
diff changeset
   422
hgs
parents:
diff changeset
   423
        // MockModel object is to provide CaEntry representing widget
hgs
parents:
diff changeset
   424
        // the object will be deleted on destruction of allAppsState
hgs
parents:
diff changeset
   425
        MockModel *allCollectionsMockModel = new MockModel;
hgs
parents:
diff changeset
   426
        allCollectionsState->mModel = allCollectionsMockModel;
hgs
parents:
diff changeset
   427
        allCollectionsState->mMenuView->setModel(allCollectionsMockModel);
hgs
parents:
diff changeset
   428
hgs
parents:
diff changeset
   429
        machine->start();
hgs
parents:
diff changeset
   430
        qApp->sendPostedEvents();
hgs
parents:
diff changeset
   431
hgs
parents:
diff changeset
   432
        HbAction *action = new HbAction("test_addtohomescreen");
hgs
parents:
diff changeset
   433
        action->setData(Hs::AddToHomeScreenContextAction);
hgs
parents:
diff changeset
   434
        allCollectionsState->mContextModelIndex = allCollectionsMockModel->fixedIndex();
hgs
parents:
diff changeset
   435
hgs
parents:
diff changeset
   436
        allCollectionsState->contextMenuAction(action);
hgs
parents:
diff changeset
   437
hgs
parents:
diff changeset
   438
        qApp->sendPostedEvents();
hgs
parents:
diff changeset
   439
hgs
parents:
diff changeset
   440
        QVERIFY(addToHomeScreenState.enteredValue());
hgs
parents:
diff changeset
   441
hgs
parents:
diff changeset
   442
        machine->stop();
hgs
parents:
diff changeset
   443
        qApp->removePostedEvents(0);
hgs
parents:
diff changeset
   444
hgs
parents:
diff changeset
   445
        allCollectionsState->stateExited();
hgs
parents:
diff changeset
   446
hgs
parents:
diff changeset
   447
        qApp->processEvents();
hgs
parents:
diff changeset
   448
hgs
parents:
diff changeset
   449
        delete action;
hgs
parents:
diff changeset
   450
    }
hgs
parents:
diff changeset
   451
#ifdef Q_OS_SYMBIAN
hgs
parents:
diff changeset
   452
#ifdef UT_MEMORY_CHECK
hgs
parents:
diff changeset
   453
    __UHEAP_MARKEND;
hgs
parents:
diff changeset
   454
#endif//UT_MEMORY_CHECK
hgs
parents:
diff changeset
   455
#endif//Q_OS_SYMBIAN
hgs
parents:
diff changeset
   456
}
hgs
parents:
diff changeset
   457
hgs
parents:
diff changeset
   458
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   459
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   460
hgs
parents:
diff changeset
   461
void MenuStatesTest::addModeSlots()
hgs
parents:
diff changeset
   462
{
hgs
parents:
diff changeset
   463
#ifdef Q_OS_SYMBIAN
hgs
parents:
diff changeset
   464
    User::ResetInactivityTime();//it should help for Viewserver11 panic
hgs
parents:
diff changeset
   465
#ifdef UT_MEMORY_CHECK
hgs
parents:
diff changeset
   466
    __UHEAP_MARK;
hgs
parents:
diff changeset
   467
#endif//UT_MEMORY_CHECK
hgs
parents:
diff changeset
   468
#endif//Q_OS_SYMBIAN
hgs
parents:
diff changeset
   469
    {
hgs
parents:
diff changeset
   470
        HsMenuViewBuilder builder;    
hgs
parents:
diff changeset
   471
        QScopedPointer<QStateMachine> machine(new QStateMachine(0));
hgs
parents:
diff changeset
   472
        HsMenuModeWrapper menuMode;
hgs
parents:
diff changeset
   473
        HsMainWindowMock mainWindow;
hgs
parents:
diff changeset
   474
        menuMode.setHsMenuMode(Hs::AddHsMenuMode);
hgs
parents:
diff changeset
   475
        QScopedPointer<HsAllCollectionsState> allCollectionsState(
hgs
parents:
diff changeset
   476
                    new HsAllCollectionsState(builder, menuMode, mainWindow, machine.data()));
hgs
parents:
diff changeset
   477
hgs
parents:
diff changeset
   478
        {
hgs
parents:
diff changeset
   479
            // we will start from all apps view
hgs
parents:
diff changeset
   480
            machine->setInitialState(allCollectionsState.data());
hgs
parents:
diff changeset
   481
hgs
parents:
diff changeset
   482
            // create a state which is to be reached when add-to-home-screen
hgs
parents:
diff changeset
   483
            // event is triggered
hgs
parents:
diff changeset
   484
            AddToHomeScreenMockState addToHomeScreenState(machine.data());
hgs
parents:
diff changeset
   485
hgs
parents:
diff changeset
   486
            // create a transition to the new child state which will be triggered by
hgs
parents:
diff changeset
   487
            // an event with specified operation type
hgs
parents:
diff changeset
   488
            HsMenuEventTransition addToHomeScreenTransition(
hgs
parents:
diff changeset
   489
                HsMenuEvent::AddToHomeScreen, allCollectionsState.data(), &addToHomeScreenState);
hgs
parents:
diff changeset
   490
hgs
parents:
diff changeset
   491
            // prepare the state graph
hgs
parents:
diff changeset
   492
            allCollectionsState->addTransition(&addToHomeScreenTransition);
hgs
parents:
diff changeset
   493
hgs
parents:
diff changeset
   494
            // MockModel object is to provide CaEntry representing widget
hgs
parents:
diff changeset
   495
            // the object will be deleted on destruction of allAppsState
hgs
parents:
diff changeset
   496
            allCollectionsState->scrollToBeginning();
hgs
parents:
diff changeset
   497
            allCollectionsState->stateEntered();
hgs
parents:
diff changeset
   498
hgs
parents:
diff changeset
   499
hgs
parents:
diff changeset
   500
            machine->start();
hgs
parents:
diff changeset
   501
            qApp->sendPostedEvents();
hgs
parents:
diff changeset
   502
			
hgs
parents:
diff changeset
   503
            allCollectionsState->addActivated(allCollectionsState->mModel->index(0,0));
hgs
parents:
diff changeset
   504
            
hgs
parents:
diff changeset
   505
            qApp->sendPostedEvents();
hgs
parents:
diff changeset
   506
hgs
parents:
diff changeset
   507
            QVERIFY(addToHomeScreenState.enteredValue());
hgs
parents:
diff changeset
   508
            machine->stop();
hgs
parents:
diff changeset
   509
            qApp->removePostedEvents(0);
hgs
parents:
diff changeset
   510
        }
hgs
parents:
diff changeset
   511
    }
hgs
parents:
diff changeset
   512
#ifdef Q_OS_SYMBIAN
hgs
parents:
diff changeset
   513
#ifdef UT_MEMORY_CHECK
hgs
parents:
diff changeset
   514
    __UHEAP_MARKEND;
hgs
parents:
diff changeset
   515
#endif//UT_MEMORY_CHECK
hgs
parents:
diff changeset
   516
#endif//Q_OS_SYMBIAN
hgs
parents:
diff changeset
   517
}
hgs
parents:
diff changeset
   518
hgs
parents:
diff changeset
   519
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   520
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   521
//
hgs
parents:
diff changeset
   522
#ifdef Q_OS_SYMBIAN
hgs
parents:
diff changeset
   523
void MenuStatesTest::openTaskSwitcher()
hgs
parents:
diff changeset
   524
{
hgs
parents:
diff changeset
   525
#ifdef Q_OS_SYMBIAN
hgs
parents:
diff changeset
   526
    User::ResetInactivityTime();//it should help for Viewserver11 panic
hgs
parents:
diff changeset
   527
#ifdef UT_MEMORY_CHECK
hgs
parents:
diff changeset
   528
    __UHEAP_MARK;
hgs
parents:
diff changeset
   529
#endif//UT_MEMORY_CHECK
hgs
parents:
diff changeset
   530
#endif//Q_OS_SYMBIAN
hgs
parents:
diff changeset
   531
    {
hgs
parents:
diff changeset
   532
        HsMenuViewBuilder builder;
hgs
parents:
diff changeset
   533
        HsMenuModeWrapper menuMode;
hgs
parents:
diff changeset
   534
        HsMainWindowMock mainWindow;
hgs
parents:
diff changeset
   535
        QStateMachine *machine = new QStateMachine(0);
hgs
parents:
diff changeset
   536
        QState *parent = new QState(machine);
hgs
parents:
diff changeset
   537
        menuMode.setHsMenuMode(Hs::AddHsMenuMode);
hgs
parents:
diff changeset
   538
        HsAllCollectionsState *allCollectionsState =
hgs
parents:
diff changeset
   539
            new HsAllCollectionsState(builder, menuMode, mainWindow, parent);
hgs
parents:
diff changeset
   540
hgs
parents:
diff changeset
   541
        QVERIFY(allCollectionsState->openTaskSwitcher());
hgs
parents:
diff changeset
   542
        delete machine;
hgs
parents:
diff changeset
   543
    }
hgs
parents:
diff changeset
   544
#ifdef Q_OS_SYMBIAN
hgs
parents:
diff changeset
   545
#ifdef UT_MEMORY_CHECK
hgs
parents:
diff changeset
   546
    __UHEAP_MARKEND;
hgs
parents:
diff changeset
   547
#endif//UT_MEMORY_CHECK
hgs
parents:
diff changeset
   548
#endif//Q_OS_SYMBIAN
hgs
parents:
diff changeset
   549
}
hgs
parents:
diff changeset
   550
#endif//Q_OS_SYMBIAN
hgs
parents:
diff changeset
   551
hgs
parents:
diff changeset
   552
QTEST_MAIN(MenuStatesTest)
hgs
parents:
diff changeset
   553