homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/t_hshomescreenstateplugin/src/t_hsidlestate.cpp
author hgs
Wed, 06 Oct 2010 16:06:24 +0300
changeset 97 66b5fe3c07fd
parent 90 3ac3aaebaee5
child 101 ba1b7e218624
permissions -rw-r--r--
201039_01
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
90
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2009 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:  Tests for HsIdleState class.
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
#include <QStateMachine>
hgs
parents:
diff changeset
    19
#include <QGestureEvent>
hgs
parents:
diff changeset
    20
hgs
parents:
diff changeset
    21
#include <HbMainWindow>
hgs
parents:
diff changeset
    22
#include <hbview.h>
hgs
parents:
diff changeset
    23
#include <hbmenu.h>
hgs
parents:
diff changeset
    24
#include <HbMessageBox>
hgs
parents:
diff changeset
    25
#include <HbAction>
hgs
parents:
diff changeset
    26
#include <HbTapAndHoldGesture>
hgs
parents:
diff changeset
    27
#include <HbPanGesture>
hgs
parents:
diff changeset
    28
#include "t_hshomescreenstateplugin.h"
hgs
parents:
diff changeset
    29
#include "hsscene.h"
hgs
parents:
diff changeset
    30
#include "hsgui.h"
hgs
parents:
diff changeset
    31
#include "hspage.h"
hgs
parents:
diff changeset
    32
#include "hswidgethost.h"
hgs
parents:
diff changeset
    33
#include "hswidgethostvisual.h"
hgs
parents:
diff changeset
    34
#include "hstitleresolver.h"
hgs
parents:
diff changeset
    35
#include "hsconfiguration.h"
hgs
parents:
diff changeset
    36
#include "hsidlewidget.h"
hgs
parents:
diff changeset
    37
hgs
parents:
diff changeset
    38
void HomeScreenStatePluginTest::testIdleStateConstruction()
hgs
parents:
diff changeset
    39
{
hgs
parents:
diff changeset
    40
    QState *parent = new QState;
hgs
parents:
diff changeset
    41
    HsIdleState *is = new HsIdleState(parent);
hgs
parents:
diff changeset
    42
hgs
parents:
diff changeset
    43
    QVERIFY(is->parent() == parent);
hgs
parents:
diff changeset
    44
    QVERIFY(!is->mNavigationAction);
hgs
parents:
diff changeset
    45
hgs
parents:
diff changeset
    46
    QVERIFY(!is->findChildren<QState *>().isEmpty());
hgs
parents:
diff changeset
    47
hgs
parents:
diff changeset
    48
    delete parent;
hgs
parents:
diff changeset
    49
}
hgs
parents:
diff changeset
    50
hgs
parents:
diff changeset
    51
void HomeScreenStatePluginTest::testIdleStateEntryAndExit()
hgs
parents:
diff changeset
    52
{
hgs
parents:
diff changeset
    53
    createSceneAndWindow(1, 0);
hgs
parents:
diff changeset
    54
hgs
parents:
diff changeset
    55
    HsIdleState *is = new HsIdleState;
hgs
parents:
diff changeset
    56
hgs
parents:
diff changeset
    57
    QStateMachine *sm = new QStateMachine;
hgs
parents:
diff changeset
    58
    sm->addState(is);
hgs
parents:
diff changeset
    59
    sm->setInitialState(is);
hgs
parents:
diff changeset
    60
hgs
parents:
diff changeset
    61
    QFinalState *fs = new QFinalState;
hgs
parents:
diff changeset
    62
    sm->addState(fs);
hgs
parents:
diff changeset
    63
hgs
parents:
diff changeset
    64
    is->addTransition(this, SIGNAL(finishStateMachine()), fs);
hgs
parents:
diff changeset
    65
hgs
parents:
diff changeset
    66
    sm->start();
hgs
parents:
diff changeset
    67
   // QApplication::processEvents();
hgs
parents:
diff changeset
    68
    QCoreApplication::sendPostedEvents();
hgs
parents:
diff changeset
    69
hgs
parents:
diff changeset
    70
    emit finishStateMachine();
hgs
parents:
diff changeset
    71
hgs
parents:
diff changeset
    72
    sm->stop();
hgs
parents:
diff changeset
    73
    delete sm;
hgs
parents:
diff changeset
    74
hgs
parents:
diff changeset
    75
    deleteSceneAndWindow();
hgs
parents:
diff changeset
    76
}
hgs
parents:
diff changeset
    77
hgs
parents:
diff changeset
    78
void HomeScreenStatePluginTest::testIdleStatePageLayerPos()
hgs
parents:
diff changeset
    79
{
hgs
parents:
diff changeset
    80
    createSceneAndWindow(1, 0);
hgs
parents:
diff changeset
    81
hgs
parents:
diff changeset
    82
    HsIdleState *is = new HsIdleState;
hgs
parents:
diff changeset
    83
    QVERIFY(qFuzzyCompare(is->pageLayerXPos(0), qreal(0)));
hgs
parents:
diff changeset
    84
hgs
parents:
diff changeset
    85
    delete is;
hgs
parents:
diff changeset
    86
    deleteSceneAndWindow();
hgs
parents:
diff changeset
    87
}
hgs
parents:
diff changeset
    88
hgs
parents:
diff changeset
    89
void HomeScreenStatePluginTest::testIdleStatePageChangeAnimation()
hgs
parents:
diff changeset
    90
{
hgs
parents:
diff changeset
    91
    createSceneAndWindow(2, 0);
hgs
parents:
diff changeset
    92
hgs
parents:
diff changeset
    93
    HsIdleState *is = new HsIdleState;
hgs
parents:
diff changeset
    94
hgs
parents:
diff changeset
    95
    QStateMachine *sm = new QStateMachine;
hgs
parents:
diff changeset
    96
    sm->addState(is);
hgs
parents:
diff changeset
    97
    sm->setInitialState(is);
hgs
parents:
diff changeset
    98
hgs
parents:
diff changeset
    99
    QFinalState *fs = new QFinalState;
hgs
parents:
diff changeset
   100
    sm->addState(fs);
hgs
parents:
diff changeset
   101
hgs
parents:
diff changeset
   102
    is->addTransition(this, SIGNAL(finishStateMachine()), fs);
hgs
parents:
diff changeset
   103
hgs
parents:
diff changeset
   104
    sm->start();
hgs
parents:
diff changeset
   105
    QCoreApplication::sendPostedEvents();
hgs
parents:
diff changeset
   106
    is->startPageChangeAnimation(1, 10);
hgs
parents:
diff changeset
   107
hgs
parents:
diff changeset
   108
    // Start two anims in a row
hgs
parents:
diff changeset
   109
    is->startPageChangeAnimation(1, 10);
hgs
parents:
diff changeset
   110
    is->startPageChangeAnimation(2, 10);
hgs
parents:
diff changeset
   111
hgs
parents:
diff changeset
   112
    emit finishStateMachine();
hgs
parents:
diff changeset
   113
hgs
parents:
diff changeset
   114
    sm->stop();
hgs
parents:
diff changeset
   115
    delete sm;
hgs
parents:
diff changeset
   116
hgs
parents:
diff changeset
   117
    deleteSceneAndWindow();
hgs
parents:
diff changeset
   118
}
hgs
parents:
diff changeset
   119
hgs
parents:
diff changeset
   120
void HomeScreenStatePluginTest::testIdleStatePageChangeZones()
hgs
parents:
diff changeset
   121
{
hgs
parents:
diff changeset
   122
    createSceneAndWindow(1, 0);
hgs
parents:
diff changeset
   123
    HsIdleState *is = new HsIdleState;
hgs
parents:
diff changeset
   124
hgs
parents:
diff changeset
   125
    QStateMachine *sm = new QStateMachine;
hgs
parents:
diff changeset
   126
    sm->addState(is);
hgs
parents:
diff changeset
   127
    sm->setInitialState(is);
hgs
parents:
diff changeset
   128
    sm->start();
hgs
parents:
diff changeset
   129
    QCoreApplication::sendPostedEvents();
hgs
parents:
diff changeset
   130
    
hgs
parents:
diff changeset
   131
    //Test left page change zone's left border
hgs
parents:
diff changeset
   132
    is->mWidgetHotSpot = QPointF(0, 0);
hgs
parents:
diff changeset
   133
    QVERIFY(is->isInLeftPageChangeZone());
hgs
parents:
diff changeset
   134
    QVERIFY(!is->isInRightPageChangeZone());
hgs
parents:
diff changeset
   135
    QVERIFY(is->isInPageChangeZone());
hgs
parents:
diff changeset
   136
hgs
parents:
diff changeset
   137
    //Test left page change zone's right border
hgs
parents:
diff changeset
   138
    is->mWidgetHotSpot = QPointF(HSCONFIGURATION_GET(pageChangeZoneWidth) - 1, 0);
hgs
parents:
diff changeset
   139
    QVERIFY(is->isInLeftPageChangeZone());
hgs
parents:
diff changeset
   140
    QVERIFY(!is->isInRightPageChangeZone());
hgs
parents:
diff changeset
   141
    QVERIFY(is->isInPageChangeZone());
hgs
parents:
diff changeset
   142
hgs
parents:
diff changeset
   143
    //Test not in either of the page change zones
hgs
parents:
diff changeset
   144
    is->mWidgetHotSpot = QPointF(HSCONFIGURATION_GET(pageChangeZoneWidth), 0);
hgs
parents:
diff changeset
   145
    QVERIFY(!is->isInLeftPageChangeZone());
hgs
parents:
diff changeset
   146
    QVERIFY(!is->isInRightPageChangeZone());
hgs
parents:
diff changeset
   147
    QVERIFY(!is->isInPageChangeZone());
hgs
parents:
diff changeset
   148
hgs
parents:
diff changeset
   149
    //Test right page change zone's right border
hgs
parents:
diff changeset
   150
    HsScene *scene = HsScene::instance();
hgs
parents:
diff changeset
   151
hgs
parents:
diff changeset
   152
    sm->stop();
hgs
parents:
diff changeset
   153
    delete sm;
hgs
parents:
diff changeset
   154
    deleteSceneAndWindow();
hgs
parents:
diff changeset
   155
}
hgs
parents:
diff changeset
   156
hgs
parents:
diff changeset
   157
void HomeScreenStatePluginTest::testIdleStateAddPage()
hgs
parents:
diff changeset
   158
{
hgs
parents:
diff changeset
   159
    createSceneAndWindow(2, 0, 3); //pagecount 2, default page 0, max pages 3
hgs
parents:
diff changeset
   160
hgs
parents:
diff changeset
   161
    HsIdleState *is = new HsIdleState;
hgs
parents:
diff changeset
   162
hgs
parents:
diff changeset
   163
    QStateMachine *sm = new QStateMachine;
hgs
parents:
diff changeset
   164
    sm->addState(is);
hgs
parents:
diff changeset
   165
    sm->setInitialState(is);
hgs
parents:
diff changeset
   166
    sm->start();
hgs
parents:
diff changeset
   167
    QCoreApplication::sendPostedEvents();
hgs
parents:
diff changeset
   168
    QString menuaction;
hgs
parents:
diff changeset
   169
    bool found = false;
hgs
parents:
diff changeset
   170
    HbView *idleView = HsGui::instance()->idleView();
hgs
parents:
diff changeset
   171
    for(int i=0; i < idleView->menu()->actions().count(); i++){
hgs
parents:
diff changeset
   172
        menuaction = idleView->menu()->actions()[i]->text();
hgs
parents:
diff changeset
   173
        if(menuaction.left(27) == "txt_homescreen_opt_add_page"){
hgs
parents:
diff changeset
   174
            found = true;
hgs
parents:
diff changeset
   175
        }
hgs
parents:
diff changeset
   176
    }
hgs
parents:
diff changeset
   177
    if(!found){
hgs
parents:
diff changeset
   178
        QFAIL("txt_homescreen_opt_add_page menu action not found!");
hgs
parents:
diff changeset
   179
    }
hgs
parents:
diff changeset
   180
hgs
parents:
diff changeset
   181
    emit is->event_addPage();
hgs
parents:
diff changeset
   182
hgs
parents:
diff changeset
   183
    HsScene *scene = HsScene::instance();
hgs
parents:
diff changeset
   184
    QCOMPARE(scene->pages().count(), 3);
hgs
parents:
diff changeset
   185
    // Active page index 0, the new page is created to the right side of it.
hgs
parents:
diff changeset
   186
    QCOMPARE(scene->activePageIndex(), 1);
hgs
parents:
diff changeset
   187
hgs
parents:
diff changeset
   188
    found = false;
hgs
parents:
diff changeset
   189
    for(int i=0; i < idleView->menu()->actions().count(); i++){
hgs
parents:
diff changeset
   190
        menuaction = idleView->menu()->actions()[i]->text();
hgs
parents:
diff changeset
   191
        if(menuaction.left(27) == "txt_homescreen_opt_add_page"){
hgs
parents:
diff changeset
   192
            found = true;
hgs
parents:
diff changeset
   193
        }
hgs
parents:
diff changeset
   194
    }
hgs
parents:
diff changeset
   195
    if(found){
hgs
parents:
diff changeset
   196
        QFAIL("txt_homescreen_opt_add_page menu action should not be found!");
hgs
parents:
diff changeset
   197
    }
hgs
parents:
diff changeset
   198
hgs
parents:
diff changeset
   199
    sm->stop();
hgs
parents:
diff changeset
   200
    delete sm;
hgs
parents:
diff changeset
   201
hgs
parents:
diff changeset
   202
    deleteSceneAndWindow();
hgs
parents:
diff changeset
   203
}
hgs
parents:
diff changeset
   204
hgs
parents:
diff changeset
   205
void HomeScreenStatePluginTest::testIdleStateRemoveActivePage()
hgs
parents:
diff changeset
   206
{
hgs
parents:
diff changeset
   207
    createSceneAndWindow(3, 2);
hgs
parents:
diff changeset
   208
hgs
parents:
diff changeset
   209
    HsIdleState *is = new HsIdleState;
hgs
parents:
diff changeset
   210
    QStateMachine *sm = new QStateMachine;
hgs
parents:
diff changeset
   211
    sm->addState(is);
hgs
parents:
diff changeset
   212
    sm->setInitialState(is);
hgs
parents:
diff changeset
   213
    sm->start();
hgs
parents:
diff changeset
   214
    QCoreApplication::sendPostedEvents();
hgs
parents:
diff changeset
   215
    HsScene *scene = HsScene::instance();
hgs
parents:
diff changeset
   216
    int numOfPages = scene->pages().count();
hgs
parents:
diff changeset
   217
hgs
parents:
diff changeset
   218
    emit is->event_preRemovePage();
hgs
parents:
diff changeset
   219
    QCoreApplication::sendPostedEvents(0, QEvent::DeferredDelete);
hgs
parents:
diff changeset
   220
    QVERIFY(scene->pages().count() == numOfPages-1);
hgs
parents:
diff changeset
   221
    QVERIFY(scene->activePageIndex() == 1);
hgs
parents:
diff changeset
   222
    
hgs
parents:
diff changeset
   223
    sm->stop();
hgs
parents:
diff changeset
   224
    
hgs
parents:
diff changeset
   225
    delete sm;
hgs
parents:
diff changeset
   226
hgs
parents:
diff changeset
   227
    deleteSceneAndWindow();
hgs
parents:
diff changeset
   228
}
hgs
parents:
diff changeset
   229
hgs
parents:
diff changeset
   230
void HomeScreenStatePluginTest::testIdleStateRemovePage()
hgs
parents:
diff changeset
   231
{
hgs
parents:
diff changeset
   232
    createSceneAndWindow(2, 0);
hgs
parents:
diff changeset
   233
    HsScene::instance()->setActivePageIndex(1); // default page 0 cannot be removed
hgs
parents:
diff changeset
   234
hgs
parents:
diff changeset
   235
    HsIdleState *is = new HsIdleState;
hgs
parents:
diff changeset
   236
hgs
parents:
diff changeset
   237
    QStateMachine *sm = new QStateMachine;
hgs
parents:
diff changeset
   238
    sm->addState(is);
hgs
parents:
diff changeset
   239
    sm->setInitialState(is);
hgs
parents:
diff changeset
   240
    sm->start();
hgs
parents:
diff changeset
   241
   
hgs
parents:
diff changeset
   242
    QCoreApplication::sendPostedEvents();
hgs
parents:
diff changeset
   243
    
hgs
parents:
diff changeset
   244
    QString menuaction;
hgs
parents:
diff changeset
   245
    bool found = false;
hgs
parents:
diff changeset
   246
    HbView *idleView = HsGui::instance()->idleView();
hgs
parents:
diff changeset
   247
    for(int i=0; i < idleView->menu()->actions().count(); i++){
hgs
parents:
diff changeset
   248
        menuaction = idleView->menu()->actions()[i]->text();
hgs
parents:
diff changeset
   249
        if(menuaction.left(30) == "txt_homescreen_opt_remove_page"){
hgs
parents:
diff changeset
   250
            found = true;
hgs
parents:
diff changeset
   251
        }
hgs
parents:
diff changeset
   252
    }
hgs
parents:
diff changeset
   253
    if(!found){
hgs
parents:
diff changeset
   254
        QFAIL("txt_homescreen_opt_remove_page menu action not found!");
hgs
parents:
diff changeset
   255
    }
hgs
parents:
diff changeset
   256
hgs
parents:
diff changeset
   257
    emit is->event_preRemovePage();
hgs
parents:
diff changeset
   258
    
hgs
parents:
diff changeset
   259
    QCoreApplication::sendPostedEvents(0, QEvent::DeferredDelete);
hgs
parents:
diff changeset
   260
hgs
parents:
diff changeset
   261
    HsScene *scene = HsScene::instance();
hgs
parents:
diff changeset
   262
    QCOMPARE(scene->pages().count(), 1); 
hgs
parents:
diff changeset
   263
    QCOMPARE(scene->activePageIndex(), 0);
hgs
parents:
diff changeset
   264
hgs
parents:
diff changeset
   265
    found = false;
hgs
parents:
diff changeset
   266
    idleView = HsGui::instance()->idleView();
hgs
parents:
diff changeset
   267
    for(int i=0; i < idleView->menu()->actions().count(); i++){
hgs
parents:
diff changeset
   268
        menuaction = idleView->menu()->actions()[i]->text();
hgs
parents:
diff changeset
   269
        if(menuaction.left(30) == "txt_homescreen_opt_remove_page"){
hgs
parents:
diff changeset
   270
            found = true;
hgs
parents:
diff changeset
   271
        }
hgs
parents:
diff changeset
   272
    }
hgs
parents:
diff changeset
   273
    if(found){ // Se above comment.
hgs
parents:
diff changeset
   274
        QFAIL("txt_homescreen_opt_remove_page menu action shound not be found!");
hgs
parents:
diff changeset
   275
    }
hgs
parents:
diff changeset
   276
hgs
parents:
diff changeset
   277
    sm->stop();
hgs
parents:
diff changeset
   278
    
hgs
parents:
diff changeset
   279
    delete sm;
hgs
parents:
diff changeset
   280
hgs
parents:
diff changeset
   281
    deleteSceneAndWindow();
hgs
parents:
diff changeset
   282
}
hgs
parents:
diff changeset
   283
hgs
parents:
diff changeset
   284
void HomeScreenStatePluginTest::testIdleStateToggleConnection()
hgs
parents:
diff changeset
   285
{
hgs
parents:
diff changeset
   286
    createSceneAndWindow(1, 0);
hgs
parents:
diff changeset
   287
hgs
parents:
diff changeset
   288
    HsIdleState *is = new HsIdleState;
hgs
parents:
diff changeset
   289
hgs
parents:
diff changeset
   290
    QStateMachine *sm = new QStateMachine;
hgs
parents:
diff changeset
   291
    sm->addState(is);
hgs
parents:
diff changeset
   292
    sm->setInitialState(is);
hgs
parents:
diff changeset
   293
    sm->start();
hgs
parents:
diff changeset
   294
    QCoreApplication::sendPostedEvents();
hgs
parents:
diff changeset
   295
    
hgs
parents:
diff changeset
   296
    HsScene *scene = HsScene::instance();
hgs
parents:
diff changeset
   297
hgs
parents:
diff changeset
   298
    QVERIFY(scene->isOnline());
hgs
parents:
diff changeset
   299
    emit is->event_toggleConnection();
hgs
parents:
diff changeset
   300
    QVERIFY(!scene->isOnline());
hgs
parents:
diff changeset
   301
    
hgs
parents:
diff changeset
   302
    sm->stop();
hgs
parents:
diff changeset
   303
    delete sm;
hgs
parents:
diff changeset
   304
hgs
parents:
diff changeset
   305
    deleteSceneAndWindow();
hgs
parents:
diff changeset
   306
}
hgs
parents:
diff changeset
   307
hgs
parents:
diff changeset
   308
void HomeScreenStatePluginTest::testIdleStateTapPage()
hgs
parents:
diff changeset
   309
{
hgs
parents:
diff changeset
   310
    createSceneAndWindow(HSCONFIGURATION_GET(maximumPageCount), 0);
hgs
parents:
diff changeset
   311
hgs
parents:
diff changeset
   312
    HsIdleState *is = new HsIdleState;
hgs
parents:
diff changeset
   313
hgs
parents:
diff changeset
   314
    QStateMachine *sm = new QStateMachine;
hgs
parents:
diff changeset
   315
    sm->addState(is);
hgs
parents:
diff changeset
   316
    sm->setInitialState(is);
hgs
parents:
diff changeset
   317
    sm->start();
hgs
parents:
diff changeset
   318
    QCoreApplication::sendPostedEvents();
hgs
parents:
diff changeset
   319
    
hgs
parents:
diff changeset
   320
    HbTapAndHoldGesture *gesture = new HbTapAndHoldGesture;
hgs
parents:
diff changeset
   321
    gesture->setHotSpot(QPointF(10, 100));
hgs
parents:
diff changeset
   322
    QList<QGesture *> gestures;
hgs
parents:
diff changeset
   323
    gestures << gesture;
hgs
parents:
diff changeset
   324
    QGestureEvent *gestureEvent = new QGestureEvent(gestures);
hgs
parents:
diff changeset
   325
hgs
parents:
diff changeset
   326
    QVERIFY(!is->mSceneMenu);
hgs
parents:
diff changeset
   327
    is->onPageTapAndHoldFinished(gestureEvent);
hgs
parents:
diff changeset
   328
    QVERIFY(is->mSceneMenu);
hgs
parents:
diff changeset
   329
    QVERIFY(is->mSceneMenu->actions().count() == 2);  //Add page action should not exist
hgs
parents:
diff changeset
   330
hgs
parents:
diff changeset
   331
    delete gestureEvent;
hgs
parents:
diff changeset
   332
    gestures.clear(); 
hgs
parents:
diff changeset
   333
    sm->stop();
hgs
parents:
diff changeset
   334
    delete sm;
hgs
parents:
diff changeset
   335
hgs
parents:
diff changeset
   336
    deleteSceneAndWindow();
hgs
parents:
diff changeset
   337
}
hgs
parents:
diff changeset
   338
hgs
parents:
diff changeset
   339
void HomeScreenStatePluginTest::testIdleStatePanPage()
hgs
parents:
diff changeset
   340
{
hgs
parents:
diff changeset
   341
    createSceneAndWindow(2, 0);
hgs
parents:
diff changeset
   342
hgs
parents:
diff changeset
   343
    HsIdleState *is = new HsIdleState;
hgs
parents:
diff changeset
   344
hgs
parents:
diff changeset
   345
    QStateMachine *sm = new QStateMachine;
hgs
parents:
diff changeset
   346
    sm->addState(is);
hgs
parents:
diff changeset
   347
    sm->setInitialState(is);
hgs
parents:
diff changeset
   348
    sm->start();
hgs
parents:
diff changeset
   349
    QCoreApplication::sendPostedEvents();
hgs
parents:
diff changeset
   350
    
hgs
parents:
diff changeset
   351
    HbPanGesture *gesture = new HbPanGesture;
hgs
parents:
diff changeset
   352
    gesture->setHotSpot(QPointF(10, 100));
hgs
parents:
diff changeset
   353
    QList<QGesture *> gestures;
hgs
parents:
diff changeset
   354
    gestures << gesture;
hgs
parents:
diff changeset
   355
    QGestureEvent *gestureEvent = new QGestureEvent(gestures);
hgs
parents:
diff changeset
   356
hgs
parents:
diff changeset
   357
    //Start Panning
hgs
parents:
diff changeset
   358
    QSignalSpy moveSceneSpy(is, SIGNAL(event_moveScene()));
hgs
parents:
diff changeset
   359
    is->onPagePanStarted(gestureEvent);
hgs
parents:
diff changeset
   360
    QCOMPARE(moveSceneSpy.count(), 1);
hgs
parents:
diff changeset
   361
hgs
parents:
diff changeset
   362
    //Continue Panning
hgs
parents:
diff changeset
   363
    gesture->setHotSpot(QPointF(50, 100));
hgs
parents:
diff changeset
   364
    is->onPagePanUpdated(gestureEvent);
hgs
parents:
diff changeset
   365
hgs
parents:
diff changeset
   366
    //Finish Panning
hgs
parents:
diff changeset
   367
    gesture->setHotSpot(QPointF(150, 100));
hgs
parents:
diff changeset
   368
    QSignalSpy waitInputSpy(is, SIGNAL(event_waitInput()));
hgs
parents:
diff changeset
   369
    is->onPagePanFinished(gestureEvent);
hgs
parents:
diff changeset
   370
    QCOMPARE(waitInputSpy.count(), 1);
hgs
parents:
diff changeset
   371
hgs
parents:
diff changeset
   372
    delete gestureEvent;
hgs
parents:
diff changeset
   373
    gestures.clear(); 
hgs
parents:
diff changeset
   374
    sm->stop();
hgs
parents:
diff changeset
   375
    delete sm;
hgs
parents:
diff changeset
   376
hgs
parents:
diff changeset
   377
    deleteSceneAndWindow();
hgs
parents:
diff changeset
   378
}
hgs
parents:
diff changeset
   379
hgs
parents:
diff changeset
   380
void HomeScreenStatePluginTest::testIdleStateTapWidget()
hgs
parents:
diff changeset
   381
{
hgs
parents:
diff changeset
   382
    createSceneAndWindow(2, 0);
hgs
parents:
diff changeset
   383
hgs
parents:
diff changeset
   384
    HsIdleState *is = new HsIdleState;
hgs
parents:
diff changeset
   385
hgs
parents:
diff changeset
   386
    QStateMachine *sm = new QStateMachine;
hgs
parents:
diff changeset
   387
    sm->addState(is);
hgs
parents:
diff changeset
   388
    sm->setInitialState(is);
hgs
parents:
diff changeset
   389
    sm->start();
hgs
parents:
diff changeset
   390
    QCoreApplication::sendPostedEvents();
hgs
parents:
diff changeset
   391
    
hgs
parents:
diff changeset
   392
    HsScene *scene = HsScene::instance();
hgs
parents:
diff changeset
   393
    HsWidgetHost *widget = scene->activePage()->widgets().first();
hgs
parents:
diff changeset
   394
    is->onWidgetTapStarted(QPointF(0,0), widget);
hgs
parents:
diff changeset
   395
    // widget is not activated on tap, only on tap and hold
hgs
parents:
diff changeset
   396
    QVERIFY(!scene->activeWidget());
hgs
parents:
diff changeset
   397
hgs
parents:
diff changeset
   398
    sm->stop();
hgs
parents:
diff changeset
   399
    delete sm;
hgs
parents:
diff changeset
   400
hgs
parents:
diff changeset
   401
    deleteSceneAndWindow();
hgs
parents:
diff changeset
   402
}
hgs
parents:
diff changeset
   403
hgs
parents:
diff changeset
   404
void HomeScreenStatePluginTest::testIdleStateDragWidget()
hgs
parents:
diff changeset
   405
{
hgs
parents:
diff changeset
   406
    createSceneAndWindow(2, 0, 3);
hgs
parents:
diff changeset
   407
    QStateMachine *sm = new QStateMachine;
hgs
parents:
diff changeset
   408
    HsIdleState *is = new HsIdleState;
hgs
parents:
diff changeset
   409
    sm->addState(is);
hgs
parents:
diff changeset
   410
    sm->setInitialState(is);
hgs
parents:
diff changeset
   411
    sm->start();
hgs
parents:
diff changeset
   412
    QCoreApplication::sendPostedEvents();
hgs
parents:
diff changeset
   413
    // try to move widget left from page 1, which isn't possible
hgs
parents:
diff changeset
   414
    HbTapAndHoldGesture *gesture = new HbTapAndHoldGesture;
hgs
parents:
diff changeset
   415
    gesture->setHotSpot(QPointF(10, 100));
hgs
parents:
diff changeset
   416
    QList<QGesture *> gestures;
hgs
parents:
diff changeset
   417
    gestures << gesture;
hgs
parents:
diff changeset
   418
    QGestureEvent *gestureEvent = new QGestureEvent(gestures);
hgs
parents:
diff changeset
   419
    QSignalSpy moveWidgetSpy(is, SIGNAL(event_moveWidget()));
hgs
parents:
diff changeset
   420
    HsScene *scene = HsScene::instance();
hgs
parents:
diff changeset
   421
    HsWidgetHost *widget = scene->activePage()->widgets().first();
hgs
parents:
diff changeset
   422
    is->onWidgetTapAndHoldFinished(gestureEvent, widget);
hgs
parents:
diff changeset
   423
    QCOMPARE(moveWidgetSpy.count(), 1);
hgs
parents:
diff changeset
   424
    moveWidgetSpy.clear();
hgs
parents:
diff changeset
   425
    
hgs
parents:
diff changeset
   426
    is->onWidgetMoveUpdated(QPointF(10, 150), widget);
hgs
parents:
diff changeset
   427
    is->onWidgetMoveUpdated(QPointF(150, 150), widget);
hgs
parents:
diff changeset
   428
    QSignalSpy waitInputSpy(is, SIGNAL(event_MoveWidgetDelete()));
hgs
parents:
diff changeset
   429
    is->onWidgetMoveFinished(QPointF(150, 150), widget);
hgs
parents:
diff changeset
   430
    QCOMPARE(waitInputSpy.count(), 1);
hgs
parents:
diff changeset
   431
    waitInputSpy.clear();
hgs
parents:
diff changeset
   432
     
hgs
parents:
diff changeset
   433
    // move widget to second page
hgs
parents:
diff changeset
   434
    gesture->setHotSpot(QPointF(150, 150));
hgs
parents:
diff changeset
   435
    is->onWidgetTapAndHoldFinished(gestureEvent, widget);
hgs
parents:
diff changeset
   436
    QCOMPARE(moveWidgetSpy.count(), 1);
hgs
parents:
diff changeset
   437
    moveWidgetSpy.clear();
hgs
parents:
diff changeset
   438
    is->onWidgetMoveUpdated(QPointF(355, 150), widget);
hgs
parents:
diff changeset
   439
    is->onWidgetMoveUpdated(QPointF(150, 150), widget);
hgs
parents:
diff changeset
   440
    
hgs
parents:
diff changeset
   441
    // move widget back to first page
hgs
parents:
diff changeset
   442
    is->onWidgetMoveUpdated(QPointF(10, 150), widget);
hgs
parents:
diff changeset
   443
    is->onWidgetMoveUpdated(QPointF(150, 150), widget);
hgs
parents:
diff changeset
   444
    
hgs
parents:
diff changeset
   445
    // move widget to second page
hgs
parents:
diff changeset
   446
    is->onWidgetMoveUpdated(QPointF(350, 150), widget);
hgs
parents:
diff changeset
   447
    is->onWidgetMoveUpdated(QPointF(150, 150), widget);
hgs
parents:
diff changeset
   448
hgs
parents:
diff changeset
   449
    // try to add page without releasing mouse button
hgs
parents:
diff changeset
   450
    is->onWidgetMoveUpdated(QPointF(350, 150), widget);
hgs
parents:
diff changeset
   451
    is->onWidgetMoveUpdated(QPointF(150, 150), widget);
hgs
parents:
diff changeset
   452
    is->onWidgetMoveFinished(QPointF(150, 150), widget);
hgs
parents:
diff changeset
   453
    QCOMPARE(waitInputSpy.count(), 1);
hgs
parents:
diff changeset
   454
    waitInputSpy.clear();
hgs
parents:
diff changeset
   455
hgs
parents:
diff changeset
   456
    // add page 3
hgs
parents:
diff changeset
   457
    gesture->setHotSpot(QPointF(150, 150));
hgs
parents:
diff changeset
   458
    is->onWidgetTapAndHoldFinished(gestureEvent, widget);
hgs
parents:
diff changeset
   459
    QCOMPARE(moveWidgetSpy.count(), 1);
hgs
parents:
diff changeset
   460
    moveWidgetSpy.clear();
hgs
parents:
diff changeset
   461
    is->onWidgetMoveUpdated(QPointF(350, 150), widget);
hgs
parents:
diff changeset
   462
    is->onWidgetMoveUpdated(QPointF(150, 150), widget);
hgs
parents:
diff changeset
   463
    is->onWidgetMoveFinished(QPointF(150, 150), widget);
hgs
parents:
diff changeset
   464
    QCOMPARE(waitInputSpy.count(), 1);
hgs
parents:
diff changeset
   465
    waitInputSpy.clear();
hgs
parents:
diff changeset
   466
hgs
parents:
diff changeset
   467
    // try to move widget over trash bin
hgs
parents:
diff changeset
   468
    gesture->setHotSpot(QPointF(150, 150));
hgs
parents:
diff changeset
   469
    is->onWidgetTapAndHoldFinished(gestureEvent, widget);
hgs
parents:
diff changeset
   470
    QCOMPARE(moveWidgetSpy.count(), 1);
hgs
parents:
diff changeset
   471
    moveWidgetSpy.clear();
hgs
parents:
diff changeset
   472
    is->onWidgetMoveUpdated(QPointF(180, 600), widget);
hgs
parents:
diff changeset
   473
    is->onWidgetMoveUpdated(QPointF(180, 605), widget);
hgs
parents:
diff changeset
   474
    is->onWidgetMoveUpdated(QPointF(180, 610), widget);
hgs
parents:
diff changeset
   475
    is->onWidgetMoveUpdated(QPointF(180, 615), widget);
hgs
parents:
diff changeset
   476
    is->onWidgetMoveUpdated(QPointF(180, 620), widget);
hgs
parents:
diff changeset
   477
    is->onWidgetMoveUpdated(QPointF(180, 625), widget);
hgs
parents:
diff changeset
   478
    is->onWidgetMoveUpdated(QPointF(180, 630), widget);
hgs
parents:
diff changeset
   479
    is->onWidgetMoveUpdated(QPointF(180, 635), widget);
hgs
parents:
diff changeset
   480
    is->onWidgetMoveUpdated(QPointF(150, 150), widget);
hgs
parents:
diff changeset
   481
    is->onWidgetMoveFinished(QPointF(150, 150), widget);
hgs
parents:
diff changeset
   482
    QCOMPARE(waitInputSpy.count(), 1);
hgs
parents:
diff changeset
   483
    waitInputSpy.clear();
hgs
parents:
diff changeset
   484
    
hgs
parents:
diff changeset
   485
    is->pageChangeAnimationFinished();
hgs
parents:
diff changeset
   486
  
hgs
parents:
diff changeset
   487
hgs
parents:
diff changeset
   488
    sm->stop();
hgs
parents:
diff changeset
   489
    delete sm;
hgs
parents:
diff changeset
   490
hgs
parents:
diff changeset
   491
    deleteSceneAndWindow();
hgs
parents:
diff changeset
   492
}
hgs
parents:
diff changeset
   493
hgs
parents:
diff changeset
   494
void HomeScreenStatePluginTest::testIdleStateDeleteWidget()
hgs
parents:
diff changeset
   495
{
hgs
parents:
diff changeset
   496
    createSceneAndWindow(2, 0, 3);
hgs
parents:
diff changeset
   497
    QStateMachine *sm = new QStateMachine;
hgs
parents:
diff changeset
   498
    HsIdleState *is = new HsIdleState;
hgs
parents:
diff changeset
   499
    sm->addState(is);
hgs
parents:
diff changeset
   500
    sm->setInitialState(is);
hgs
parents:
diff changeset
   501
    sm->start();
hgs
parents:
diff changeset
   502
    //QApplication::processEvents();
hgs
parents:
diff changeset
   503
    QCoreApplication::sendPostedEvents();
hgs
parents:
diff changeset
   504
    // try to move widget left from page 1, which isn't possible
hgs
parents:
diff changeset
   505
    HbTapAndHoldGesture *gesture = new HbTapAndHoldGesture;
hgs
parents:
diff changeset
   506
    gesture->setHotSpot(QPointF(10, 100));
hgs
parents:
diff changeset
   507
    QList<QGesture *> gestures;
hgs
parents:
diff changeset
   508
    gestures << gesture;
hgs
parents:
diff changeset
   509
    QGestureEvent *gestureEvent = new QGestureEvent(gestures);
hgs
parents:
diff changeset
   510
    QSignalSpy moveWidgetSpy(is, SIGNAL(event_moveWidget()));
hgs
parents:
diff changeset
   511
    HsScene *scene = HsScene::instance();
hgs
parents:
diff changeset
   512
    HsWidgetHost *widget = scene->activePage()->widgets().first();
hgs
parents:
diff changeset
   513
    is->onWidgetTapAndHoldFinished(gestureEvent, widget);
hgs
parents:
diff changeset
   514
    QCOMPARE(moveWidgetSpy.count(), 1);
hgs
parents:
diff changeset
   515
    moveWidgetSpy.clear();
hgs
parents:
diff changeset
   516
    
hgs
parents:
diff changeset
   517
    // test cases where active widget is not set and stop widget drag (should not be possible in real life)
hgs
parents:
diff changeset
   518
    QSignalSpy waitDeleteSpy(is, SIGNAL(event_MoveWidgetDelete()));
hgs
parents:
diff changeset
   519
    QSignalSpy waitInputSpy(is, SIGNAL(event_waitInput()));
hgs
parents:
diff changeset
   520
    scene->setActiveWidget(0);
hgs
parents:
diff changeset
   521
    is->onWidgetMoveFinished(QPointF(150, 150), widget);
97
66b5fe3c07fd 201039_01
hgs
parents: 90
diff changeset
   522
    QCOMPARE(waitInputSpy.count(), 1);
90
hgs
parents:
diff changeset
   523
    QCOMPARE(waitDeleteSpy.count(), 1);
hgs
parents:
diff changeset
   524
    
hgs
parents:
diff changeset
   525
    is->pageChangeAnimationFinished();
hgs
parents:
diff changeset
   526
  
hgs
parents:
diff changeset
   527
hgs
parents:
diff changeset
   528
    sm->stop();
hgs
parents:
diff changeset
   529
    delete sm;
hgs
parents:
diff changeset
   530
hgs
parents:
diff changeset
   531
    deleteSceneAndWindow();
hgs
parents:
diff changeset
   532
    
hgs
parents:
diff changeset
   533
    
hgs
parents:
diff changeset
   534
}
hgs
parents:
diff changeset
   535
hgs
parents:
diff changeset
   536
void HomeScreenStatePluginTest::testIdleStateMisc()
hgs
parents:
diff changeset
   537
{
hgs
parents:
diff changeset
   538
    createSceneAndWindow(2, 0);
hgs
parents:
diff changeset
   539
hgs
parents:
diff changeset
   540
    HsIdleState *is = new HsIdleState;
hgs
parents:
diff changeset
   541
hgs
parents:
diff changeset
   542
    QStateMachine *sm = new QStateMachine;
hgs
parents:
diff changeset
   543
    sm->addState(is);
hgs
parents:
diff changeset
   544
    sm->setInitialState(is);
hgs
parents:
diff changeset
   545
    sm->start();
hgs
parents:
diff changeset
   546
    QCoreApplication::sendPostedEvents();
hgs
parents:
diff changeset
   547
    
hgs
parents:
diff changeset
   548
    is->onAddContentFromOptionsMenuActionTriggered();
hgs
parents:
diff changeset
   549
    is->onAddContentFromContextMenuActionTriggered();
hgs
parents:
diff changeset
   550
    is->action_idle_orientationChanged();
hgs
parents:
diff changeset
   551
hgs
parents:
diff changeset
   552
    HsScene *scene = HsScene::instance();
hgs
parents:
diff changeset
   553
    scene->setActiveWidget(scene->activePage()->widgets().first());
hgs
parents:
diff changeset
   554
    is->updateSnapAlgorithmParameters();
hgs
parents:
diff changeset
   555
hgs
parents:
diff changeset
   556
    sm->stop();
hgs
parents:
diff changeset
   557
    delete sm;
hgs
parents:
diff changeset
   558
hgs
parents:
diff changeset
   559
    deleteSceneAndWindow();
hgs
parents:
diff changeset
   560
}
hgs
parents:
diff changeset
   561
hgs
parents:
diff changeset
   562
void HomeScreenStatePluginTest::testIdleStateChromeBehaviour()
hgs
parents:
diff changeset
   563
{
hgs
parents:
diff changeset
   564
    createSceneAndWindow(1, 0);
hgs
parents:
diff changeset
   565
    QScopedPointer<HsIdleState> is(new HsIdleState());
hgs
parents:
diff changeset
   566
hgs
parents:
diff changeset
   567
    is->action_idle_setupView();
hgs
parents:
diff changeset
   568
hgs
parents:
diff changeset
   569
    QString newTitle("title");
hgs
parents:
diff changeset
   570
hgs
parents:
diff changeset
   571
    is->action_idle_setupTitle();
hgs
parents:
diff changeset
   572
hgs
parents:
diff changeset
   573
    is->mTitleResolver->metaObject()->invokeMethod(is->mTitleResolver,
hgs
parents:
diff changeset
   574
                                                   "titleChanged",
hgs
parents:
diff changeset
   575
                                                   Q_ARG(QString, newTitle));
hgs
parents:
diff changeset
   576
    HbView *idleView = HsGui::instance()->idleView();
hgs
parents:
diff changeset
   577
hgs
parents:
diff changeset
   578
    QCOMPARE(idleView->title(), newTitle);
hgs
parents:
diff changeset
   579
hgs
parents:
diff changeset
   580
    QString t2("new title");
hgs
parents:
diff changeset
   581
hgs
parents:
diff changeset
   582
    is->action_idle_cleanupTitle();
hgs
parents:
diff changeset
   583
hgs
parents:
diff changeset
   584
    is->mTitleResolver->metaObject()->invokeMethod(is->mTitleResolver,
hgs
parents:
diff changeset
   585
                                                   "titleChanged",
hgs
parents:
diff changeset
   586
                                                   Q_ARG(QString, t2));
hgs
parents:
diff changeset
   587
hgs
parents:
diff changeset
   588
    QCOMPARE(idleView->title(), newTitle);
hgs
parents:
diff changeset
   589
hgs
parents:
diff changeset
   590
    is->action_idle_setupTitle();
hgs
parents:
diff changeset
   591
hgs
parents:
diff changeset
   592
    is->mTitleResolver->metaObject()->invokeMethod(is->mTitleResolver,
hgs
parents:
diff changeset
   593
                                                   "titleChanged",
hgs
parents:
diff changeset
   594
                                                   Q_ARG(QString, t2));
hgs
parents:
diff changeset
   595
hgs
parents:
diff changeset
   596
    QCOMPARE(idleView->title(), t2);
hgs
parents:
diff changeset
   597
hgs
parents:
diff changeset
   598
    deleteSceneAndWindow();
hgs
parents:
diff changeset
   599
}
hgs
parents:
diff changeset
   600
hgs
parents:
diff changeset
   601
void HomeScreenStatePluginTest::testEventFilter()
hgs
parents:
diff changeset
   602
{
hgs
parents:
diff changeset
   603
	// Create with no active page
hgs
parents:
diff changeset
   604
    createSceneAndWindow(1, -1);
hgs
parents:
diff changeset
   605
	HsIdleState *is = new HsIdleState();
hgs
parents:
diff changeset
   606
	QEvent e(QEvent::ApplicationActivate);
hgs
parents:
diff changeset
   607
	is->eventFilter(0, &e);
hgs
parents:
diff changeset
   608
hgs
parents:
diff changeset
   609
	HsScene *s = HsScene::instance();
hgs
parents:
diff changeset
   610
	HsPage *page = new HsPage();
hgs
parents:
diff changeset
   611
	HsWidgetHost *wh = new HsWidgetHost(1);
hgs
parents:
diff changeset
   612
	page->addNewWidget(wh);
hgs
parents:
diff changeset
   613
	s->addPage(page);
hgs
parents:
diff changeset
   614
	s->setActivePage(page);
hgs
parents:
diff changeset
   615
hgs
parents:
diff changeset
   616
	is->eventFilter(0, &e);
hgs
parents:
diff changeset
   617
hgs
parents:
diff changeset
   618
	is->action_idle_setupView();
hgs
parents:
diff changeset
   619
hgs
parents:
diff changeset
   620
	QEvent ee(QEvent::ApplicationDeactivate);
hgs
parents:
diff changeset
   621
	QSignalSpy spy(is, SIGNAL(event_waitInput()));
hgs
parents:
diff changeset
   622
	is->eventFilter(0, &ee);
hgs
parents:
diff changeset
   623
hgs
parents:
diff changeset
   624
	QCOMPARE(1, spy.count());
hgs
parents:
diff changeset
   625
hgs
parents:
diff changeset
   626
	deleteSceneAndWindow();
hgs
parents:
diff changeset
   627
	delete is;
hgs
parents:
diff changeset
   628
}
hgs
parents:
diff changeset
   629
hgs
parents:
diff changeset
   630
void HomeScreenStatePluginTest::testIdleStateSnapToObject()
hgs
parents:
diff changeset
   631
{
hgs
parents:
diff changeset
   632
    createSceneAndWindow(2, 0);
hgs
parents:
diff changeset
   633
hgs
parents:
diff changeset
   634
    HsIdleState *is = new HsIdleState;
hgs
parents:
diff changeset
   635
hgs
parents:
diff changeset
   636
    QStateMachine *sm = new QStateMachine;
hgs
parents:
diff changeset
   637
    sm->addState(is);
hgs
parents:
diff changeset
   638
    sm->setInitialState(is);
hgs
parents:
diff changeset
   639
    sm->start();
hgs
parents:
diff changeset
   640
    QCoreApplication::sendPostedEvents();
hgs
parents:
diff changeset
   641
    
hgs
parents:
diff changeset
   642
    //The page has one widget, remove the widget.
hgs
parents:
diff changeset
   643
    HsScene *scene = HsScene::instance();
hgs
parents:
diff changeset
   644
    HsWidgetHost *widget = scene->activePage()->widgets().first();
hgs
parents:
diff changeset
   645
    scene->activePage()->removeWidget(widget);
hgs
parents:
diff changeset
   646
hgs
parents:
diff changeset
   647
    sm->stop();
hgs
parents:
diff changeset
   648
    delete sm;
hgs
parents:
diff changeset
   649
hgs
parents:
diff changeset
   650
    deleteSceneAndWindow();
hgs
parents:
diff changeset
   651
}
hgs
parents:
diff changeset
   652
hgs
parents:
diff changeset
   653
void HomeScreenStatePluginTest::testIdleStateSnapToObjectSnapEffectDisabled()
hgs
parents:
diff changeset
   654
{
hgs
parents:
diff changeset
   655
    createSceneAndWindow(2, 0);
hgs
parents:
diff changeset
   656
hgs
parents:
diff changeset
   657
    HSCONFIGURATION_SET(setSnapEffectsEnabled, false);
hgs
parents:
diff changeset
   658
    HsIdleState *is = new HsIdleState;
hgs
parents:
diff changeset
   659
hgs
parents:
diff changeset
   660
    QStateMachine *sm = new QStateMachine;
hgs
parents:
diff changeset
   661
    sm->addState(is);
hgs
parents:
diff changeset
   662
    sm->setInitialState(is);
hgs
parents:
diff changeset
   663
    sm->start();
hgs
parents:
diff changeset
   664
	QCoreApplication::sendPostedEvents();
hgs
parents:
diff changeset
   665
hgs
parents:
diff changeset
   666
    //The page has one widget, remove the widget
hgs
parents:
diff changeset
   667
    HsScene *scene = HsScene::instance();
hgs
parents:
diff changeset
   668
    HsWidgetHost *widget = scene->activePage()->widgets().first();
hgs
parents:
diff changeset
   669
    scene->activePage()->removeWidget(widget);
hgs
parents:
diff changeset
   670
hgs
parents:
diff changeset
   671
    sm->stop();
hgs
parents:
diff changeset
   672
    delete sm;
hgs
parents:
diff changeset
   673
hgs
parents:
diff changeset
   674
    deleteSceneAndWindow();
hgs
parents:
diff changeset
   675
}
hgs
parents:
diff changeset
   676
hgs
parents:
diff changeset
   677
void HomeScreenStatePluginTest::testIdleStateSnapToObjectSnappingDisabled()
hgs
parents:
diff changeset
   678
{
hgs
parents:
diff changeset
   679
    createSceneAndWindow(2, 0);
hgs
parents:
diff changeset
   680
hgs
parents:
diff changeset
   681
    HSCONFIGURATION_SET(setSnapEnabled, false);
hgs
parents:
diff changeset
   682
    HsIdleState *is = new HsIdleState;
hgs
parents:
diff changeset
   683
hgs
parents:
diff changeset
   684
    QStateMachine *sm = new QStateMachine;
hgs
parents:
diff changeset
   685
    sm->addState(is);
hgs
parents:
diff changeset
   686
    sm->setInitialState(is);
hgs
parents:
diff changeset
   687
    sm->start();
hgs
parents:
diff changeset
   688
	QCoreApplication::sendPostedEvents();
hgs
parents:
diff changeset
   689
hgs
parents:
diff changeset
   690
    //The page has one widget, remove the widget
hgs
parents:
diff changeset
   691
    HsScene *scene = HsScene::instance();
hgs
parents:
diff changeset
   692
    HsWidgetHost *widget = scene->activePage()->widgets().first();
hgs
parents:
diff changeset
   693
    scene->activePage()->removeWidget(widget);
hgs
parents:
diff changeset
   694
hgs
parents:
diff changeset
   695
    sm->stop();
hgs
parents:
diff changeset
   696
    delete sm;
hgs
parents:
diff changeset
   697
hgs
parents:
diff changeset
   698
    deleteSceneAndWindow();
hgs
parents:
diff changeset
   699
}
hgs
parents:
diff changeset
   700
hgs
parents:
diff changeset
   701
void HomeScreenStatePluginTest::testOnVerticalSnapLineTimerTimeout()
hgs
parents:
diff changeset
   702
{
hgs
parents:
diff changeset
   703
    createSceneAndWindow(1, 0);
hgs
parents:
diff changeset
   704
hgs
parents:
diff changeset
   705
    HsIdleState *is = new HsIdleState;
hgs
parents:
diff changeset
   706
hgs
parents:
diff changeset
   707
    QStateMachine *sm = new QStateMachine;
hgs
parents:
diff changeset
   708
    sm->addState(is);
hgs
parents:
diff changeset
   709
    sm->setInitialState(is);
hgs
parents:
diff changeset
   710
    sm->start();
hgs
parents:
diff changeset
   711
    QCoreApplication::sendPostedEvents();
hgs
parents:
diff changeset
   712
    is->onVerticalSnapLineTimerTimeout();
hgs
parents:
diff changeset
   713
    sm->stop();
hgs
parents:
diff changeset
   714
    delete sm;
hgs
parents:
diff changeset
   715
hgs
parents:
diff changeset
   716
    deleteSceneAndWindow();
hgs
parents:
diff changeset
   717
}
hgs
parents:
diff changeset
   718
hgs
parents:
diff changeset
   719
void HomeScreenStatePluginTest::testOnHorizontalSnapLineTimerTimeout()
hgs
parents:
diff changeset
   720
{
hgs
parents:
diff changeset
   721
    createSceneAndWindow(1, 0);
hgs
parents:
diff changeset
   722
hgs
parents:
diff changeset
   723
    HsIdleState *is = new HsIdleState;
hgs
parents:
diff changeset
   724
hgs
parents:
diff changeset
   725
    QStateMachine *sm = new QStateMachine;
hgs
parents:
diff changeset
   726
    sm->addState(is);
hgs
parents:
diff changeset
   727
    sm->setInitialState(is);
hgs
parents:
diff changeset
   728
    sm->start();
hgs
parents:
diff changeset
   729
    QCoreApplication::sendPostedEvents();
hgs
parents:
diff changeset
   730
    is->onHorizontalSnapLineTimerTimeout();
hgs
parents:
diff changeset
   731
    sm->stop();
hgs
parents:
diff changeset
   732
    delete sm;
hgs
parents:
diff changeset
   733
hgs
parents:
diff changeset
   734
    deleteSceneAndWindow();
hgs
parents:
diff changeset
   735
}
hgs
parents:
diff changeset
   736
hgs
parents:
diff changeset
   737
void HomeScreenStatePluginTest::testShowHorizontalLine()
hgs
parents:
diff changeset
   738
{
hgs
parents:
diff changeset
   739
    createSceneAndWindow(1, 0);
hgs
parents:
diff changeset
   740
hgs
parents:
diff changeset
   741
    HsIdleState *is = new HsIdleState;
hgs
parents:
diff changeset
   742
hgs
parents:
diff changeset
   743
    QStateMachine *sm = new QStateMachine;
hgs
parents:
diff changeset
   744
    sm->addState(is);
hgs
parents:
diff changeset
   745
    sm->setInitialState(is);
hgs
parents:
diff changeset
   746
    sm->start();
hgs
parents:
diff changeset
   747
    QCoreApplication::sendPostedEvents();
hgs
parents:
diff changeset
   748
    is->showHorizontalLine();
hgs
parents:
diff changeset
   749
    sm->stop();
hgs
parents:
diff changeset
   750
    delete sm;
hgs
parents:
diff changeset
   751
hgs
parents:
diff changeset
   752
    deleteSceneAndWindow();
hgs
parents:
diff changeset
   753
}
hgs
parents:
diff changeset
   754
hgs
parents:
diff changeset
   755
void HomeScreenStatePluginTest::testEditorAndVKB()
hgs
parents:
diff changeset
   756
{
hgs
parents:
diff changeset
   757
    createSceneAndWindow(1, 0);
hgs
parents:
diff changeset
   758
hgs
parents:
diff changeset
   759
    HsIdleState *is = new HsIdleState;
hgs
parents:
diff changeset
   760
    
hgs
parents:
diff changeset
   761
    is->closeVirtualKeyboard();
hgs
parents:
diff changeset
   762
    
hgs
parents:
diff changeset
   763
    HsScene *scene = HsScene::instance();
hgs
parents:
diff changeset
   764
    HsWidgetHost *widget = scene->activePage()->widgets().first();
hgs
parents:
diff changeset
   765
    
hgs
parents:
diff changeset
   766
    // scene is not set for the widgets yet.
hgs
parents:
diff changeset
   767
    QVERIFY(!is->isEditor(QPointF(0,0), widget));
hgs
parents:
diff changeset
   768
    
hgs
parents:
diff changeset
   769
    delete is;
hgs
parents:
diff changeset
   770
    
hgs
parents:
diff changeset
   771
    deleteSceneAndWindow();
hgs
parents:
diff changeset
   772
}