ganeswidgets/tsrc/unit/unittest_ganeswidgets.cpp
changeset 17 a10844a9914d
parent 6 1cdcc61142d2
equal deleted inserted replaced
15:1ef5359bf0f4 17:a10844a9914d
    18 #include <QtTest/QtTest>
    18 #include <QtTest/QtTest>
    19 #include <QMetaType>
    19 #include <QMetaType>
    20 #include <QModelIndex>
    20 #include <QModelIndex>
    21 #include "hbautotest.h"
    21 #include "hbautotest.h"
    22 #include <HbApplication>
    22 #include <HbApplication>
    23 #include <HbLabel>
       
    24 #include <HbMainWindow>
    23 #include <HbMainWindow>
    25 #include <HbScrollbar>
    24 #include <HbScrollbar>
    26 #include <HbView>
    25 #include <HbView>
    27 #include <hgwidgets/hgwidgets.h>
    26 #include <hgwidgets/hgwidgets.h>
    28 #include <hgwidgets/hggrid.h>
    27 #include <hgwidgets/hggrid.h>
    29 #include <hgwidgets/hgmediawall.h>
    28 #include <hgwidgets/hgmediawall.h>
    30 
    29 
    31 Q_DECLARE_METATYPE(QItemSelection)
    30 Q_DECLARE_METATYPE(QItemSelection)
    32 Q_DECLARE_METATYPE(QModelIndex)
    31 Q_DECLARE_METATYPE(QModelIndex)
    33 
    32 
    34 static const QPointF grid_portrait_pos0(60, 60);
    33 static const QPoint grid_portrait_pos0(60, 60);
    35 static const QPointF grid_portrait_pos1(180, 60);
    34 static const QPoint grid_portrait_pos1(180, 60);
    36 static const QPointF grid_portrait_pos2(300, 60);
    35 static const QPoint grid_portrait_pos2(300, 60);
    37 static const QPointF grid_portrait_pos3(60, 180);
    36 static const QPoint grid_portrait_pos3(60, 180);
    38 static const QPointF grid_portrait_pos4(180, 180);
    37 static const QPoint grid_portrait_pos4(180, 180);
    39 static const QPointF grid_portrait_pos5(300, 180);
    38 static const QPoint grid_portrait_pos5(300, 180);
    40 static const QPointF grid_portrait_pos6(60, 300);
    39 static const QPoint grid_portrait_pos6(60, 300);
    41 static const QPointF grid_portrait_pos7(180, 300);
    40 static const QPoint grid_portrait_pos7(180, 300);
    42 static const QPointF grid_portrait_pos8(300, 300);
    41 static const QPoint grid_portrait_pos8(300, 300);
    43 
    42 
    44 static const int default_delay(1500);
    43 static const int default_delay(1500);
    45 
    44 
    46 class TestGanesWidgets : public QObject
    45 class TestGanesWidgets : public QObject
    47 {
    46 {
    59     void cleanup();
    58     void cleanup();
    60 
    59 
    61 private slots:
    60 private slots:
    62     void test_setModel();
    61     void test_setModel();
    63     void test_panGridLandscape();
    62     void test_panGridLandscape();
    64     void test_panGridPortrait();
       
    65     void test_panCoverFlowLandscape();
    63     void test_panCoverFlowLandscape();
    66     void test_panCoverFlowPortrait();
       
    67     void test_scrollbarGridLandscape();
    64     void test_scrollbarGridLandscape();
    68     void test_scrollbarGridPortrait();
    65     void test_scrollbarGridPortrait();
    69     void test_scrollbarCoverFlowLandscape();
    66     void test_scrollbarCoverFlowLandscape();
    70     void test_scrollbarCoverFlowPortrait();
    67     void test_scrollbarCoverFlowPortrait();
    71     void test_addRemoveItemsGrid();
    68     void test_addRemoveItemsGrid();
    81     void test_removeItemsCoverFlow();
    78     void test_removeItemsCoverFlow();
    82     void test_moveItemsCoverFlow();
    79     void test_moveItemsCoverFlow();
    83     void test_labelFontSpecsCoverFlow();
    80     void test_labelFontSpecsCoverFlow();
    84     void test_resetModelCoverFlow();
    81     void test_resetModelCoverFlow();
    85     void test_resetModelGrid();
    82     void test_resetModelGrid();
    86 
    83     void test_orientationChanged();
       
    84     void test_indexFeedback();
       
    85     void test_gridApi();
       
    86     
    87 private:
    87 private:
    88 
    88 
    89     void pan( Qt::Orientation, TBool begin );
    89     void pan( Qt::Orientation, TBool begin );
    90 
    90 
    91 private:
    91 private:
   118     
   118     
   119     QImage mImage;
   119     QImage mImage;
   120     QStringList mItems;
   120     QStringList mItems;
   121     bool mValidData;
   121     bool mValidData;
   122 
   122 
       
   123     enum TextCount {
       
   124         ProvideNone,
       
   125         ProvideOne,
       
   126         ProvideTwo
       
   127     } mTextCount;
       
   128     
       
   129     enum ImageType {
       
   130         TypeQImage,
       
   131         TypeQPixmap,
       
   132         TypeQIcon,
       
   133         TypeHbIcon
       
   134     } mImageType;
       
   135 
       
   136     bool mItemVisibility;
       
   137     bool mProvideValidImage;
       
   138     
   123     QList<QModelIndex> *mRequestedIndexes;
   139     QList<QModelIndex> *mRequestedIndexes;
   124 };
   140 };
   125 
   141 
   126 TestModel::TestModel(QList<QModelIndex> *requestedIndexes) :
   142 TestModel::TestModel(QList<QModelIndex> *requestedIndexes) :
   127     mValidData(true),
   143     mValidData(true),
   128     mRequestedIndexes(requestedIndexes)
   144     mRequestedIndexes(requestedIndexes),
   129 {
   145     mTextCount(ProvideTwo),
   130     mImage = QImage(":icons/startupHG.jpg");
   146     mImageType(TypeQImage),
       
   147     mItemVisibility(true),
       
   148     mProvideValidImage(true)
       
   149 {
       
   150     mImage = QImage(":icons/startupHG.jpg").scaled(QSize(120,120));   
   131 }
   151 }
   132 
   152 
   133 TestModel::~TestModel()
   153 TestModel::~TestModel()
   134 {
   154 {
   135 
   155 
   214 
   234 
   215     int row = index.row();
   235     int row = index.row();
   216 
   236 
   217     switch ( role )
   237     switch ( role )
   218         {
   238         {
       
   239         case HgWidget::HgVisibilityRole:
       
   240             {
       
   241             returnValue = mItemVisibility;
       
   242             break;
       
   243             }
   219         case Qt::DisplayRole:
   244         case Qt::DisplayRole:
   220             {
   245             {
   221             QStringList list;
   246             QStringList list;
   222             list << QString("Primary %1").arg(row);
   247             switch(mTextCount) {
   223             list << QString("Secondary %1").arg(row);
   248                 case ProvideOne:
       
   249                     {
       
   250                     list << QString("Primary %1").arg(row);
       
   251                     break;
       
   252                     }
       
   253                 case ProvideTwo:
       
   254                     {
       
   255                     list << QString("Primary %1").arg(row);
       
   256                     list << QString("Secondary %1").arg(row);
       
   257                     break;
       
   258                     }
       
   259                 case ProvideNone:
       
   260                 default:
       
   261                     {
       
   262                     break;
       
   263                     }
       
   264             }
   224             returnValue = list;
   265             returnValue = list;
   225             break;
   266             break;
   226             }
   267             }
   227         case Qt::DecorationRole:
   268         case Qt::DecorationRole:
   228             {
   269             {
   229             returnValue = mImage;
   270             switch(mImageType){
       
   271                 case TypeQImage:
       
   272                     {
       
   273                     if( mProvideValidImage)
       
   274                         returnValue = QImage();
       
   275                     else
       
   276                         returnValue = mImage;
       
   277                     break;
       
   278                     }
       
   279                 case TypeQIcon:
       
   280                     {
       
   281                     if( mProvideValidImage)
       
   282                         returnValue = QIcon();
       
   283                     else
       
   284                         returnValue = QIcon(":icons/startupHG.jpg");
       
   285                     break;
       
   286                     }
       
   287                 case TypeHbIcon:
       
   288                     {
       
   289                     if( mProvideValidImage)
       
   290                         returnValue = HbIcon();
       
   291                     else
       
   292                         returnValue = HbIcon(":icons/startupHG.jpg");                
       
   293                     break;
       
   294                     }
       
   295                 case TypeQPixmap:
       
   296                     {
       
   297                     if( mProvideValidImage)
       
   298                         returnValue = QPixmap();
       
   299                     else
       
   300                         returnValue = QPixmap(":icons/startupHG.jpg");                
       
   301                     break;
       
   302                     }
       
   303             }
       
   304             
   230             if (mRequestedIndexes && !mRequestedIndexes->contains(index)) {
   305             if (mRequestedIndexes && !mRequestedIndexes->contains(index)) {
   231                 mRequestedIndexes->append(index);
   306                 mRequestedIndexes->append(index);
   232                 qSort(*mRequestedIndexes);
   307                 qSort(*mRequestedIndexes);
   233             }
   308             }
   234             break;
   309             break;
   235             }
   310             }
       
   311         case Hb::IndexFeedbackRole:
       
   312             {
       
   313             returnValue = QString::number(row);
       
   314             break;
       
   315             }
   236         default:
   316         default:
   237             break;
   317             break;
   238 
   318 
   239         }
   319         }
   240 
   320 
   242 }
   322 }
   243 
   323 
   244 
   324 
   245 TestGanesWidgets::TestGanesWidgets()
   325 TestGanesWidgets::TestGanesWidgets()
   246 {
   326 {
       
   327     mWindow = new HbMainWindow;
       
   328     mWindow->viewport()->grabGesture(Qt::PanGesture);
       
   329     mWindow->viewport()->grabGesture(Qt::TapGesture); // Add TapAndHoldGesture once it's working
       
   330     mWindow->show();
       
   331     mWindow->setGeometry(QRect(0,0,360,640));
       
   332     QTest::qWaitForWindowShown(mWindow);
   247 }
   333 }
   248 
   334 
   249 TestGanesWidgets::~TestGanesWidgets()
   335 TestGanesWidgets::~TestGanesWidgets()
   250 {
   336 {
   251 
   337     delete mWindow;
       
   338     mWindow = 0;
   252 }
   339 }
   253 
   340 
   254 void TestGanesWidgets::initTestCase()
   341 void TestGanesWidgets::initTestCase()
   255 {
   342 {
   256 
   343 
   257 }
   344 }
   258 
   345 
   259 void TestGanesWidgets::cleanupTestCase()
   346 void TestGanesWidgets::cleanupTestCase()
   260 {
   347 {
   261 
   348     if(mWidget) {
       
   349         mWindow->removeView(mWidget);
       
   350         delete mWidget;
       
   351         mWidget = 0;
       
   352     }
   262 }
   353 }
   263 
   354 
   264 void TestGanesWidgets::init()
   355 void TestGanesWidgets::init()
   265 {
   356 {
   266 
       
   267 }
   357 }
   268 
   358 
   269 void TestGanesWidgets::cleanup()
   359 void TestGanesWidgets::cleanup()
   270 {
   360 {
   271 
       
   272 }
   361 }
   273 
   362 
   274 void TestGanesWidgets::pan( Qt::Orientation orientation, TBool begin )
   363 void TestGanesWidgets::pan( Qt::Orientation orientation, TBool begin )
   275 {
   364 {
   276     QPointF start(100,100);
   365     QPoint start(100,100);
   277     QPointF move;
   366     QPoint move;
   278     QPointF end;
   367     QPoint end;
   279     if (orientation==Qt::Horizontal){
   368     if (orientation==Qt::Horizontal){
   280         move = QPointF(100,0);
   369         move = QPoint(100,0);
   281     }
   370     }
   282     else {
   371     else {
   283         move = QPointF(0,100);
   372         move = QPoint(0,100);
   284     }
   373     }
   285 
   374 
   286     if( begin )
   375     if( begin )
   287         end = start - move;
   376         end = start - move;
   288     else
   377     else
   289         end = start + move;
   378         end = start + move;
   290 
   379 
       
   380 //    QTest::mousePress(mWindow,Qt::LeftButton,Qt::NoModifier,start,-1);
       
   381 //    QTest::mouseMove(mWindow,end,-1);
       
   382 //    QTest::mouseRelease(mWindow,Qt::LeftButton,Qt::NoModifier,end,100);
   291     HbAutoTest::mousePress( (HbAutoTestMainWindow*)mWindow, mWidget, start, -1 );
   383     HbAutoTest::mousePress( (HbAutoTestMainWindow*)mWindow, mWidget, start, -1 );
   292     HbAutoTest::mouseMove( (HbAutoTestMainWindow*)mWindow, mWidget, end, -1 );
   384     HbAutoTest::mouseMove( (HbAutoTestMainWindow*)mWindow, mWidget, end, -1 );
   293     HbAutoTest::mouseRelease( (HbAutoTestMainWindow*)mWindow, mWidget, end, 100 );
   385     HbAutoTest::mouseRelease( (HbAutoTestMainWindow*)mWindow, mWidget, end, 100 );
   294 }
   386 }
   295 
   387 
   296 void TestGanesWidgets::test_setModel()
   388 void TestGanesWidgets::test_setModel()
   297 {
   389 {
   298     mWindow = new HbMainWindow;
   390 //    mWindow = new HbMainWindow;
   299     mWidget = new HgGrid(Qt::Horizontal);
   391     mWidget = new HgGrid(Qt::Horizontal);
   300     mWindow->addView(mWidget);
   392     mWindow->addView(mWidget);
       
   393     mWidget->setGeometry(QRectF(0,0,360,640));
   301     QVERIFY(mWidget->model() == 0);
   394     QVERIFY(mWidget->model() == 0);
   302 
   395 
   303     TestModel model1;
   396     TestModel model1;
   304     model1.generateItems(10);
   397     model1.generateItems(10);
   305     mWidget->setModel(&model1);
   398     mWidget->setModel(&model1);
   306     QVERIFY(&model1 == mWidget->model());
   399     QVERIFY(&model1 == mWidget->model());
   307 
   400 
   308     mWindow->show();
   401 //    QTest::qWait(2000);
   309 
       
   310     QTest::qWait(2000);
       
   311 
   402 
   312     TestModel model2;
   403     TestModel model2;
   313     model2.generateItems(20);
   404     model2.generateItems(20);
   314     mWidget->setModel(&model2);
   405     mWidget->setModel(&model2);
   315     QVERIFY(&model2 == mWidget->model());
   406     QVERIFY(&model2 == mWidget->model());
   316 
   407 
   317     QTest::qWait(2000);
   408     //QTest::qWait(2000);
   318 
   409 
   319     mWidget->setModel(0);
   410     mWidget->setModel(0);
   320     QVERIFY(mWidget->model() == 0);
   411     QVERIFY(mWidget->model() == 0);
   321 
   412 
   322     delete mWindow;
   413     mWindow->removeView(mWidget);
   323     mWindow = 0;
   414     delete mWidget;
       
   415     mWidget = 0;
       
   416 //    delete mWindow;
       
   417 //    mWindow = 0;
   324 }
   418 }
   325 
   419 
   326 void TestGanesWidgets::test_panGridLandscape()
   420 void TestGanesWidgets::test_panGridLandscape()
   327 {
   421 {
   328     mWindow = new HbMainWindow;
   422     if(mWidget) {
       
   423         mWindow->removeView(mWidget);
       
   424         delete mWidget;
       
   425         mWidget = 0;
       
   426     }
       
   427 
       
   428     
   329     mWidget = new HgGrid(Qt::Horizontal);
   429     mWidget = new HgGrid(Qt::Horizontal);
   330     TestModel model;
   430     TestModel model;
   331     model.generateItems(30);
   431     model.generateItems(30);
   332     mWindow->addView( mWidget );
   432     mWindow->addView( mWidget );
   333     QVERIFY( mWidget->model() == 0 );
   433     QVERIFY( mWidget->model() == 0 );
   334     mWidget->setModel( &model );
   434     mWidget->setModel( &model );
   335     QVERIFY( &model == mWidget->model() );
   435     QVERIFY( &model == mWidget->model() );
   336 
   436 
   337     mWindow->show();
   437     mWindow->show();
   338 
   438 
   339     QTest::qWait( 2000 );
   439     //QTest::qWait( 2000 );
   340 
   440 
   341     pan( Qt::Horizontal, true );
   441     pan( Qt::Horizontal, true );
   342 
   442 
   343     model.reset();
   443     model.reset();
   344     model.generateItems(5);
   444     model.generateItems(5);
   345 
   445 
   346     QTest::qWait( 2000 );
   446     QTest::qWait( 1000 );
   347 
   447 
   348     pan( Qt::Horizontal, false );
   448     pan( Qt::Horizontal, false );
   349 
   449 
   350     model.reset();
   450     model.reset();
   351 
   451 
   352     QTest::qWait( 2000 );
   452     QTest::qWait( 1000 );
   353 
   453 
   354     pan( Qt::Horizontal, true );
   454     pan( Qt::Horizontal, true );
   355 
   455 
   356     QTest::qWait(4000);
   456     QTest::qWait(1000);
   357 
   457 
   358     delete mWindow;
   458     if(mWidget) {
   359     mWindow = 0;
   459         mWindow->removeView(mWidget);
   360 }
   460         delete mWidget;
   361 
   461         mWidget = 0;
   362 void TestGanesWidgets::test_panGridPortrait()
   462     }
   363 {
   463 }
   364     mWindow = new HbMainWindow;
   464 
   365     mWidget = new HgGrid(Qt::Vertical );
       
   366     TestModel model;
       
   367     model.generateItems(30);
       
   368     mWindow->addView( mWidget );
       
   369     QVERIFY( mWidget->model() == 0 );
       
   370     mWidget->setModel( &model );
       
   371     QVERIFY( &model == mWidget->model() );
       
   372     mWindow->show();
       
   373 
       
   374     QTest::qWait( 2000 );
       
   375 
       
   376     pan( Qt::Vertical, true );
       
   377 
       
   378     model.reset();
       
   379     model.generateItems(5);
       
   380 
       
   381     QTest::qWait( 2000 );
       
   382 
       
   383     pan( Qt::Vertical, false );
       
   384 
       
   385     model.reset();
       
   386 
       
   387     QTest::qWait( 2000 );
       
   388 
       
   389     pan( Qt::Vertical, true );
       
   390 
       
   391     QTest::qWait(4000);
       
   392 
       
   393     delete mWindow;
       
   394     mWindow = 0;
       
   395 }
       
   396 
   465 
   397 void TestGanesWidgets::test_panCoverFlowLandscape()
   466 void TestGanesWidgets::test_panCoverFlowLandscape()
   398 {
   467 {
   399     mWindow = new HbMainWindow;
   468     if(mWidget) {
       
   469         mWindow->removeView(mWidget);
       
   470         delete mWidget;
       
   471         mWidget = 0;
       
   472     }
   400     mWidget = new HgMediawall();
   473     mWidget = new HgMediawall();
   401     TestModel model;
   474     TestModel model;
   402     model.generateItems(30);
   475     model.generateItems(30);
   403     mWindow->addView( mWidget );
   476     mWindow->addView( mWidget );
   404     QVERIFY( mWidget->model() == 0 );
   477     QVERIFY( mWidget->model() == 0 );
   421 
   494 
   422     QTest::qWait( 2000 );
   495     QTest::qWait( 2000 );
   423 
   496 
   424     pan( Qt::Horizontal, true );
   497     pan( Qt::Horizontal, true );
   425 
   498 
   426     QTest::qWait(4000);
   499     QTest::qWait(2000);
   427 
   500 
   428     delete mWindow;
   501     if(mWidget) {
   429     mWindow = 0;
   502         mWindow->removeView(mWidget);
   430 }
   503         delete mWidget;
   431 
   504         mWidget = 0;
   432 void TestGanesWidgets::test_panCoverFlowPortrait()
   505     }
   433 {
       
   434     mWindow = new HbMainWindow;
       
   435     mWidget = new HgMediawall();
       
   436     TestModel model;
       
   437     model.generateItems(30);
       
   438     mWindow->addView( mWidget );
       
   439     QVERIFY( mWidget->model() == 0 );
       
   440     mWidget->setModel( &model );
       
   441     QVERIFY( &model == mWidget->model() );
       
   442     mWindow->show();
       
   443 
       
   444     QTest::qWait( 2000 );
       
   445 
       
   446     pan( Qt::Vertical, true );
       
   447 
       
   448     model.reset();
       
   449     model.generateItems(5);
       
   450 
       
   451     QTest::qWait( 2000 );
       
   452 
       
   453     pan( Qt::Vertical, false );
       
   454 
       
   455     model.reset();
       
   456 
       
   457     QTest::qWait( 2000 );
       
   458 
       
   459     pan( Qt::Vertical, true );
       
   460 
       
   461     QTest::qWait(4000);
       
   462 
       
   463     delete mWindow;
       
   464     mWindow = 0;
       
   465 }
   506 }
   466 
   507 
   467 void TestGanesWidgets::test_scrollbarGridLandscape()
   508 void TestGanesWidgets::test_scrollbarGridLandscape()
   468 {
   509 {
   469     mWindow = new HbMainWindow;
   510     if(mWidget) {
       
   511         mWindow->removeView(mWidget);
       
   512         delete mWidget;
       
   513         mWidget = 0;
       
   514     }
       
   515 
       
   516 //    mWindow = new HbMainWindow;
   470     mWidget = new HgMediawall();
   517     mWidget = new HgMediawall();
   471     TestModel model;
   518     TestModel model;
   472     model.generateItems(200);
   519     model.generateItems(200);
   473     mWindow->addView( mWidget );
   520     mWindow->addView( mWidget );
       
   521     mWidget->setGeometry(QRectF(0,0,360,640));
   474     mWidget->setModel( &model );
   522     mWidget->setModel( &model );
   475     mWindow->show();
   523 //    mWindow->show();
   476 
   524 //    QTest::qWaitForWindowShown(mWindow);
   477     QTest::qWait( 2000 );
   525 
       
   526     //QTest::qWait( 2000 );
   478 
   527 
   479     QVERIFY(mWidget->scrollBarPolicy() == HgWidget::ScrollBarAutoHide);
   528     QVERIFY(mWidget->scrollBarPolicy() == HgWidget::ScrollBarAutoHide);
   480 
   529 
   481     mWidget->setScrollBarPolicy(HgWidget::ScrollBarAlwaysOn);
   530     mWidget->setScrollBarPolicy(HgWidget::ScrollBarAlwaysOn);
   482     mWidget->scrollBar()->setInteractive(true);
   531     mWidget->scrollBar()->setInteractive(true);
   483     QRectF rect = mWidget->scrollBar()->rect();
   532     QRectF rect = mWidget->scrollBar()->rect();
   484 
   533 
   485     QTest::qWait(1000);
   534     QTest::qWait(1000);
   486 
   535 
   487     QPointF move( 20,0 );
   536     QPoint move( 100,0 );
   488 
   537 
       
   538 //    QTest::mouseClick(mWindow, Qt::LeftButton, Qt::NoModifier, rect.topLeft().toPoint() + move );
       
   539 //    QTest::mouseClick(mWindow, Qt::LeftButton, Qt::NoModifier, rect.topLeft().toPoint() + move*2 );
   489     HbAutoTest::mousePress( (HbAutoTestMainWindow*)mWindow, mWidget->scrollBar(), rect.topLeft()+move, -1 );
   540     HbAutoTest::mousePress( (HbAutoTestMainWindow*)mWindow, mWidget->scrollBar(), rect.topLeft()+move, -1 );
   490     HbAutoTest::mouseMove( (HbAutoTestMainWindow*)mWindow, mWidget->scrollBar(), rect.topRight()-move, 50 );
   541     HbAutoTest::mouseMove( (HbAutoTestMainWindow*)mWindow, mWidget->scrollBar(), rect.topRight()-move, 50 );
   491     HbAutoTest::mouseRelease( (HbAutoTestMainWindow*)mWindow, mWidget->scrollBar(), rect.topRight()-move, 100 );
   542     HbAutoTest::mouseRelease( (HbAutoTestMainWindow*)mWindow, mWidget->scrollBar(), rect.topRight()-move, 100 );
   492 
   543 
   493     QTest::qWait(3000);
   544     //QTest::qWait(3000);
   494 
   545 
   495     mWidget->setScrollBarPolicy( HgWidget::ScrollBarAlwaysOn );
   546     mWidget->setScrollBarPolicy( HgWidget::ScrollBarAlwaysOn );
   496     QVERIFY(mWidget->scrollBarPolicy() == HgWidget::ScrollBarAlwaysOn);
   547     QVERIFY(mWidget->scrollBarPolicy() == HgWidget::ScrollBarAlwaysOn);
   497     mWidget->setScrollBarPolicy( HgWidget::ScrollBarAlwaysOff );
   548     mWidget->setScrollBarPolicy( HgWidget::ScrollBarAlwaysOff );
   498     QVERIFY(mWidget->scrollBarPolicy() == HgWidget::ScrollBarAlwaysOff);
   549     QVERIFY(mWidget->scrollBarPolicy() == HgWidget::ScrollBarAlwaysOff);
   504     mWidget->setScrollBar(scrollBar);
   555     mWidget->setScrollBar(scrollBar);
   505     QVERIFY(mWidget->scrollBar()==scrollBar);
   556     QVERIFY(mWidget->scrollBar()==scrollBar);
   506     mWidget->setScrollBar(0);
   557     mWidget->setScrollBar(0);
   507     QVERIFY(mWidget->scrollBar()!= 0);
   558     QVERIFY(mWidget->scrollBar()!= 0);
   508 
   559 
   509     QTest::qWait(2000);
   560     //QTest::qWait(2000);
   510 
   561 
   511     delete mWindow;
   562     mWindow->removeView(mWidget);
   512     mWindow = 0;
   563     delete mWidget;
       
   564     mWidget = 0;
       
   565     
       
   566 //    delete mWindow;
       
   567 //    mWindow = 0;
   513 
   568 
   514 }
   569 }
   515 
   570 
   516 void TestGanesWidgets::test_scrollbarGridPortrait()
   571 void TestGanesWidgets::test_scrollbarGridPortrait()
   517 {
   572 {
   518     mWindow = new HbMainWindow;
   573     if(mWidget) {
   519     mWidget = new HgMediawall();
   574         mWindow->removeView(mWidget);
       
   575         delete mWidget;
       
   576         mWidget = 0;
       
   577     }
       
   578 //    mWindow = new HbMainWindow;
       
   579     mWidget = new HgGrid(Qt::Vertical);
   520     TestModel model;
   580     TestModel model;
   521     model.generateItems(200);
   581     model.generateItems(200);
   522     mWindow->addView( mWidget );
   582     mWindow->addView( mWidget );
       
   583     mWidget->setGeometry(QRectF(0,0,360,640));
   523     mWidget->setModel( &model );
   584     mWidget->setModel( &model );
   524     mWindow->show();
   585     mWindow->show();
   525 
   586 
   526     QTest::qWait( 2000 );
   587     //QTest::qWait( 2000 );
   527 
   588 
   528     QVERIFY(mWidget->scrollBarPolicy() == HgWidget::ScrollBarAutoHide);
   589     QVERIFY(mWidget->scrollBarPolicy() == HgWidget::ScrollBarAutoHide);
   529     mWidget->setScrollBarPolicy( HgWidget::ScrollBarAlwaysOn );
   590     mWidget->setScrollBarPolicy( HgWidget::ScrollBarAlwaysOn );
   530     QVERIFY(mWidget->scrollBarPolicy() == HgWidget::ScrollBarAlwaysOn);
   591     QVERIFY(mWidget->scrollBarPolicy() == HgWidget::ScrollBarAlwaysOn);
   531     mWidget->setScrollBarPolicy( HgWidget::ScrollBarAlwaysOff );
   592     mWidget->setScrollBarPolicy( HgWidget::ScrollBarAlwaysOff );
   538     mWidget->setScrollBar(scrollBar);
   599     mWidget->setScrollBar(scrollBar);
   539     QVERIFY(mWidget->scrollBar()==scrollBar);
   600     QVERIFY(mWidget->scrollBar()==scrollBar);
   540     mWidget->setScrollBar(0);
   601     mWidget->setScrollBar(0);
   541     QVERIFY(mWidget->scrollBar()!= 0);
   602     QVERIFY(mWidget->scrollBar()!= 0);
   542 
   603 
   543     QTest::qWait(2000);
   604     //QTest::qWait(2000);
   544 
   605     mWindow->removeView(mWidget);
   545     delete mWindow;
   606     delete mWidget;
   546     mWindow = 0;
   607     mWidget = 0;
       
   608 
       
   609 //    delete mWindow;
       
   610 //    mWindow = 0;
   547 
   611 
   548 }
   612 }
   549 
   613 
   550 void TestGanesWidgets::test_scrollbarCoverFlowLandscape()
   614 void TestGanesWidgets::test_scrollbarCoverFlowLandscape()
   551 {
   615 {
   552     mWindow = new HbMainWindow;
   616     if(mWidget) {
   553     mWidget = new HgMediawall();
   617         mWindow->removeView(mWidget);
       
   618         delete mWidget;
       
   619         mWidget = 0;
       
   620     }
       
   621 //    mWindow = new HbMainWindow;
       
   622     mMediawall = new HgMediawall();
       
   623     mWidget = mMediawall;
   554     TestModel model;
   624     TestModel model;
   555     model.generateItems(200);
   625     model.generateItems(200);
   556     mWindow->addView( mWidget );
   626     mWindow->addView( mWidget );
       
   627     mWidget->setGeometry(QRectF(0,0,360,640));
   557     mWidget->setModel( &model );
   628     mWidget->setModel( &model );
   558     mWindow->show();
   629     mWindow->show();
   559 
   630 
   560     QTest::qWait( 2000 );
   631     //QTest::qWait( 2000 );
   561 
   632 
   562     QVERIFY(mWidget->scrollBarPolicy() == HgWidget::ScrollBarAutoHide);
   633     QVERIFY(mWidget->scrollBarPolicy() == HgWidget::ScrollBarAutoHide);
   563     mWidget->setScrollBarPolicy( HgWidget::ScrollBarAlwaysOn );
   634     mWidget->setScrollBarPolicy( HgWidget::ScrollBarAlwaysOn );
   564     QVERIFY(mWidget->scrollBarPolicy() == HgWidget::ScrollBarAlwaysOn);
   635     QVERIFY(mWidget->scrollBarPolicy() == HgWidget::ScrollBarAlwaysOn);
   565     mWidget->setScrollBarPolicy( HgWidget::ScrollBarAlwaysOff );
   636     mWidget->setScrollBarPolicy( HgWidget::ScrollBarAlwaysOff );
   574     mWidget->setScrollBar(0);
   645     mWidget->setScrollBar(0);
   575     QVERIFY(mWidget->scrollBar()!= 0);
   646     QVERIFY(mWidget->scrollBar()!= 0);
   576 
   647 
   577     QTest::qWait(2000);
   648     QTest::qWait(2000);
   578 
   649 
   579     delete mWindow;
   650     
   580     mWindow = 0;
   651     
       
   652     mWindow->removeView(mWidget);
       
   653     delete mWidget;
       
   654     mWidget = 0;    
       
   655     
       
   656 //    delete mWindow;
       
   657 //    mWindow = 0;
   581 
   658 
   582 }
   659 }
   583 
   660 
   584 void TestGanesWidgets::test_scrollbarCoverFlowPortrait()
   661 void TestGanesWidgets::test_scrollbarCoverFlowPortrait()
   585 {
   662 {
   586     mWindow = new HbMainWindow;
   663     if(mWidget) {
       
   664         mWindow->removeView(mWidget);
       
   665         delete mWidget;
       
   666         mWidget = 0;
       
   667     }
       
   668 //    mWindow = new HbMainWindow;
   587     mWidget = new HgMediawall();
   669     mWidget = new HgMediawall();
   588     TestModel model;
   670     TestModel model;
   589     model.generateItems(200);
   671     model.generateItems(200);
   590     mWindow->addView( mWidget );
   672     mWindow->addView( mWidget );
       
   673     mWidget->setGeometry(QRectF(0,0,360,640));
   591     mWidget->setModel( &model );
   674     mWidget->setModel( &model );
   592     mWindow->show();
   675     mWindow->show();
   593 
   676 
   594     QTest::qWait( 2000 );
   677     //QTest::qWait( 2000 );
   595 
   678 
   596     QVERIFY(mWidget->scrollBarPolicy() == HgWidget::ScrollBarAutoHide);
   679     QVERIFY(mWidget->scrollBarPolicy() == HgWidget::ScrollBarAutoHide);
   597     mWidget->setScrollBarPolicy( HgWidget::ScrollBarAlwaysOn );
   680     mWidget->setScrollBarPolicy( HgWidget::ScrollBarAlwaysOn );
   598     QVERIFY(mWidget->scrollBarPolicy() == HgWidget::ScrollBarAlwaysOn);
   681     QVERIFY(mWidget->scrollBarPolicy() == HgWidget::ScrollBarAlwaysOn);
   599     mWidget->setScrollBarPolicy( HgWidget::ScrollBarAlwaysOff );
   682     mWidget->setScrollBarPolicy( HgWidget::ScrollBarAlwaysOff );
   606     mWidget->setScrollBar(scrollBar);
   689     mWidget->setScrollBar(scrollBar);
   607     QVERIFY(mWidget->scrollBar()==scrollBar);
   690     QVERIFY(mWidget->scrollBar()==scrollBar);
   608     mWidget->setScrollBar(0);
   691     mWidget->setScrollBar(0);
   609     QVERIFY(mWidget->scrollBar()!= 0);
   692     QVERIFY(mWidget->scrollBar()!= 0);
   610 
   693 
   611     QTest::qWait(2000);
   694     //QTest::qWait(2000);
   612 
   695 
   613     delete mWindow;
   696     mWindow->removeView(mWidget);
   614     mWindow = 0;
   697     delete mWidget;
       
   698     mWidget = 0;
       
   699     
       
   700 //    delete mWindow;
       
   701 //    mWindow = 0;
   615 
   702 
   616 }
   703 }
   617 
   704 
   618 void TestGanesWidgets::test_addRemoveItemsGrid()
   705 void TestGanesWidgets::test_addRemoveItemsGrid()
   619 {
   706 {
   620     mWindow = new HbMainWindow;
   707     if(mWidget) {
       
   708         mWindow->removeView(mWidget);
       
   709         delete mWidget;
       
   710         mWidget = 0;
       
   711     }
       
   712 //    mWindow = new HbMainWindow;
   621     mWidget = new HgMediawall();
   713     mWidget = new HgMediawall();
   622     TestModel model;
   714     TestModel model;
   623     model.generateItems(2);
   715     model.generateItems(2);
   624     mWindow->addView( mWidget );
   716     mWindow->addView( mWidget );
       
   717     mWidget->setGeometry(QRectF(0,0,360,640));
   625     mWidget->setModel( &model );
   718     mWidget->setModel( &model );
   626     mWindow->show();
   719     mWindow->show();
   627 
   720 
   628     QTest::qWait( 2000 );
   721     //QTest::qWait( 2000 );
   629 
   722 
   630     model.appendItem();
   723     model.appendItem();
   631     model.appendItem();
   724     model.appendItem();
   632     model.removeItems(0);
   725     model.removeItems(0);
   633     model.removeItems(3);
   726     model.removeItems(3);
   634     model.removeItems(0);
   727     model.removeItems(0);
   635     model.removeItems(0);
   728     model.removeItems(0);
   636 
   729 
   637     QTest::qWait(2000);
   730     //QTest::qWait(2000);
   638 
   731 
   639     delete mWindow;
   732     mWindow->removeView(mWidget);
   640     mWindow = 0;
   733     delete mWidget;
       
   734     mWidget = 0;
       
   735     
       
   736 //    delete mWindow;
       
   737 //    mWindow = 0;
   641 }
   738 }
   642 
   739 
   643 void TestGanesWidgets::test_addRemoveItemsCoverflow()
   740 void TestGanesWidgets::test_addRemoveItemsCoverflow()
   644 {
   741 {
   645     mWindow = new HbMainWindow;
   742     if(mWidget) {
       
   743         mWindow->removeView(mWidget);
       
   744         delete mWidget;
       
   745         mWidget = 0;
       
   746     }
       
   747 //    mWindow = new HbMainWindow;
   646     mWidget = new HgMediawall();
   748     mWidget = new HgMediawall();
   647     TestModel model;
   749     TestModel model;
   648     model.generateItems(2);
   750     model.generateItems(2);
   649     mWindow->addView( mWidget );
   751     mWindow->addView( mWidget );
       
   752     mWidget->setGeometry(QRectF(0,0,360,640));
   650     mWidget->setModel( &model );
   753     mWidget->setModel( &model );
   651     mWindow->show();
   754     mWindow->show();
   652 
   755 
   653     QTest::qWait( 2000 );
   756     //QTest::qWait( 2000 );
   654 
   757 
   655     model.appendItem();
   758     model.appendItem();
   656     model.appendItem();
   759     model.appendItem();
   657     model.removeItems(0);
   760     model.removeItems(0);
   658     model.removeItems(3);
   761     model.removeItems(3);
   659     model.removeItems(0);
   762     model.removeItems(0);
   660     model.removeItems(0);
   763     model.removeItems(0);
   661 
   764 
   662     QTest::qWait(2000);
   765     //QTest::qWait(2000);
   663 
   766 
   664     delete mWindow;
   767     mWindow->removeView(mWidget);
   665     mWindow = 0;
   768     delete mWidget;
       
   769     mWidget = 0;
       
   770     
       
   771 //    delete mWindow;
       
   772 //    mWindow = 0;
   666 }
   773 }
   667 
   774 
   668 void TestGanesWidgets::test_tap()
   775 void TestGanesWidgets::test_tap()
   669 {
   776 {
   670     mWindow = new HbMainWindow;
   777     if(mWidget) {
       
   778         mWindow->removeView(mWidget);
       
   779         delete mWidget;
       
   780         mWidget = 0;
       
   781     }
   671     mWidget = new HgMediawall();
   782     mWidget = new HgMediawall();
   672     TestModel model;
   783     TestModel model;
   673     model.generateItems(50);
   784     model.generateItems(50);
   674     mWindow->addView( mWidget );
   785     mWindow->addView( mWidget );
   675     mWidget->setModel( &model );
   786     mWidget->setModel( &model );
   678     QTest::qWait( 2000 );
   789     QTest::qWait( 2000 );
   679 
   790 
   680     QSignalSpy stateSpy( mWidget, SIGNAL( activated(QModelIndex) ) );
   791     QSignalSpy stateSpy( mWidget, SIGNAL( activated(QModelIndex) ) );
   681     QSignalSpy stateSpy2( mWidget, SIGNAL( longPressed(QModelIndex) ) );
   792     QSignalSpy stateSpy2( mWidget, SIGNAL( longPressed(QModelIndex) ) );
   682 
   793 
   683     QPointF pos(100,100);
   794     QPoint pos(100,300);
       
   795 //    QTest::mouseClick(mWindow, Qt::LeftButton, Qt::NoModifier, pos );
   684     HbAutoTest::mouseClick( (HbAutoTestMainWindow*)mWindow, mWidget, pos, 100 );
   796     HbAutoTest::mouseClick( (HbAutoTestMainWindow*)mWindow, mWidget, pos, 100 );
   685 
   797 
   686     QTest::qWait(1000);
   798     QTest::qWait(3000);
   687 
   799 
   688     // Generating gestures doesn't work so enable this condition later.
   800     // Generating gestures doesn't work so enable this condition later.
   689 //    QCOMPARE(stateSpy.count(),1);
   801 //    QCOMPARE(stateSpy.count(),1);
   690 
   802 
   691     QVERIFY(!mWidget->longPressEnabled());
   803     QVERIFY(!mWidget->longPressEnabled());
   692     mWidget->setLongPressEnabled(true);
   804     mWidget->setLongPressEnabled(true);
   693     QVERIFY(mWidget->longPressEnabled());
   805     QVERIFY(mWidget->longPressEnabled());
   694 
   806     mWidget->setLongPressEnabled(true);
   695     HbAutoTest::mousePress( (HbAutoTestMainWindow*)mWindow, mWidget, pos, -1 );
   807     QVERIFY(mWidget->longPressEnabled());
   696     HbAutoTest::mouseRelease( (HbAutoTestMainWindow*)mWindow, mWidget, pos, 2000 );
   808 
       
   809     HbAutoTest::mouseClick( (HbAutoTestMainWindow*)mWindow, mWidget, pos, 700 );
       
   810 //    QTest::mouseRelease( mWindow, Qt::LeftButton, Qt::NoModifier, pos, 400 );
   697 
   811 
   698     // Generating gestures doesn't work so enable this condition later.
   812     // Generating gestures doesn't work so enable this condition later.
   699 //    QCOMPARE( stateSpy2.count(),1 );
   813 //    QCOMPARE( stateSpy2.count(),1 );
   700 
   814 
   701     mWidget->setLongPressEnabled(false);
   815     mWidget->setLongPressEnabled(false);
   702     QVERIFY(!mWidget->longPressEnabled());
   816     QVERIFY(!mWidget->longPressEnabled());
   703 
   817 
   704     QTest::qWait(2000);
   818     QTest::qWait(2000);
   705 
   819 
   706     delete mWindow;
   820     mWindow->removeView(mWidget);
   707     mWindow = 0;
   821     delete mWidget;
       
   822     mWidget = 0;
       
   823 
       
   824     mWidget = new HgGrid(Qt::Vertical);
       
   825     mWindow->addView( mWidget );
       
   826     mWidget->setModel( &model );
       
   827     mWindow->show();
       
   828 
       
   829     QVERIFY(!mWidget->longPressEnabled());
       
   830     mWidget->setLongPressEnabled(true);
       
   831     QVERIFY(mWidget->longPressEnabled());
       
   832 
       
   833     QTest::qWait(2000);
       
   834     HbAutoTest::mouseClick( (HbAutoTestMainWindow*)mWindow, mWidget, pos, 700 );
       
   835     QTest::qWait(2000);
       
   836 
       
   837     mWindow->removeView(mWidget);
       
   838     delete mWidget;
       
   839     mWidget = 0;
   708 }
   840 }
   709 
   841 
   710 void TestGanesWidgets::test_updateData()
   842 void TestGanesWidgets::test_updateData()
   711 {
   843 {
   712     mWindow = new HbMainWindow;
   844     if(mWidget) {
       
   845         mWindow->removeView(mWidget);
       
   846         delete mWidget;
       
   847         mWidget = 0;
       
   848     }
       
   849 //    mWindow = new HbMainWindow;
   713     mWidget = new HgGrid( Qt::Vertical );
   850     mWidget = new HgGrid( Qt::Vertical );
   714     TestModel model;
   851     TestModel model;
   715     model.generateItems(50);
   852     model.generateItems(50);
   716     mWindow->addView( mWidget );
   853     mWindow->addView( mWidget );
       
   854     mWidget->setGeometry(QRectF(0,0,360,640));
   717     model.mValidData = false;
   855     model.mValidData = false;
   718     mWidget->setModel( &model );
   856     mWidget->setModel( &model );
   719     mWindow->show();
   857     mWindow->show();
   720 
   858 
   721     QTest::qWait( 2000 );
   859     //QTest::qWait( 2000 );
   722 
   860 
   723     model.mValidData = true;
   861     model.mValidData = true;
   724     for(int i=0;i<50;i++){
   862     for(int i=0;i<50;i++){
   725         model.changeItem(i);
   863         model.changeItem(i);
   726     }
   864     }
   727 
   865 
       
   866     // Test various data types that are supported.
       
   867     model.mImageType = TestModel::TypeQIcon;
       
   868     model.mTextCount = TestModel::ProvideNone;
       
   869     model.reset(50);
   728     QTest::qWait(2000);
   870     QTest::qWait(2000);
   729 
   871     model.mProvideValidImage = false;
   730     delete mWindow;
   872     model.reset(50);
   731     mWindow = 0;
   873     QTest::qWait(2000);
       
   874     
       
   875     model.mProvideValidImage = true;
       
   876     model.mImageType = TestModel::TypeQPixmap;
       
   877     model.mTextCount = TestModel::ProvideOne;
       
   878     model.reset(50);
       
   879     QTest::qWait(2000);
       
   880     model.mProvideValidImage = false;
       
   881     model.reset(50);
       
   882     QTest::qWait(2000);
       
   883     
       
   884     model.mProvideValidImage = true;
       
   885     model.mImageType = TestModel::TypeHbIcon;
       
   886     model.mTextCount = TestModel::ProvideTwo;
       
   887     model.reset(50);
       
   888     QTest::qWait(2000);
       
   889     model.mProvideValidImage = false;
       
   890     model.reset(50);
       
   891     QTest::qWait(2000);
       
   892     
       
   893     mWindow->removeView(mWidget);
       
   894     delete mWidget;
       
   895     mWidget = 0;
       
   896 
       
   897 //    delete mWindow;
       
   898 //    mWindow = 0;
   732 }
   899 }
   733 
   900 
   734 void TestGanesWidgets::test_currentItemCoverflow()
   901 void TestGanesWidgets::test_currentItemCoverflow()
   735 {
   902 {
   736     const QPointF pos1(160, 300);
   903     if(mWidget) {
   737     const QPointF pos2(300, 300);
   904         mWindow->removeView(mWidget);
   738     const QPointF pos3(20, 300);
   905         delete mWidget;
   739 
   906         mWidget = 0;
   740     mWindow = new HbMainWindow;
   907     }
   741     mWindow->viewport()->grabGesture(Qt::PanGesture);
   908     const QPoint pos1(160, 300);
   742     mWindow->viewport()->grabGesture(Qt::TapGesture); // Add TapAndHoldGesture once it's working
   909     const QPoint pos2(300, 300);
       
   910     const QPoint pos3(20, 300);
       
   911 
   743     mWidget = new HgMediawall();
   912     mWidget = new HgMediawall();
   744 
   913 
   745     TestModel model;
   914     TestModel model;
   746     model.generateItems(50);
   915     model.generateItems(50);
   747     mWindow->addView(mWidget);
   916     mWindow->addView(mWidget);
       
   917     mWidget->setGeometry(QRectF(0,0,360,640));
   748     mWidget->setModel(&model);
   918     mWidget->setModel(&model);
   749     mWindow->show();
   919     mWindow->show();
   750 
   920 
   751     QVERIFY(mWidget->selectionModel());
   921     QVERIFY(mWidget->selectionModel());
   752     qRegisterMetaType<QModelIndex>("QModelIndex");
   922     qRegisterMetaType<QModelIndex>("QModelIndex");
   753     QSignalSpy currentItemSpy(mWidget->selectionModel(), SIGNAL(currentChanged(QModelIndex, QModelIndex)));
   923     QSignalSpy currentItemSpy(mWidget->selectionModel(), SIGNAL(currentChanged(QModelIndex, QModelIndex)));
   754 
   924 
   755     QTest::qWait(default_delay);
   925     //QTest::qWait(default_delay);
   756 
   926 
   757     QVERIFY(mWidget->currentIndex() == model.index(0, 0));
   927     QVERIFY(mWidget->currentIndex() == model.index(0, 0));
   758 
   928 
   759     mWidget->setCurrentIndex(model.index(7, 0));
   929     mWidget->setCurrentIndex(model.index(7, 0));
   760     QVERIFY(mWidget->currentIndex() == model.index(7, 0));
   930     QVERIFY(mWidget->currentIndex() == model.index(7, 0));
   761 
   931 
   762     mWidget->setCurrentIndex(QModelIndex());
   932     mWidget->setCurrentIndex(QModelIndex());
   763     QVERIFY(!mWidget->currentIndex().isValid());
   933     QVERIFY(!mWidget->currentIndex().isValid());
   764 
   934 
   765     currentItemSpy.clear();
   935     currentItemSpy.clear();
   766     HbAutoTest::mouseClick((HbAutoTestMainWindow*)mWindow, mWidget, pos1, 100);
   936 //    QTest::mouseClick( mWindow, Qt::LeftButton, Qt::NoModifier, pos1, 100 );
   767     QTest::qWait(default_delay);
   937 //    QTest::mouseRelease( mWindow, Qt::LeftButton, Qt::NoModifier, pos, 2000 );
       
   938 /*    HbAutoTest::mouseClick((HbAutoTestMainWindow*)mWindow, mWidget, pos1, 100);
       
   939     QTest::qWait(500);
       
   940     mWidget->update();
       
   941     QTest::qWait(100);
       
   942 //    User::After(3000000);
       
   943 //    mWidget->update();
       
   944 //    User::After(3000000);
       
   945     QVERIFY(mWidget->currentIndex() == model.index(7, 0));
       
   946     QVERIFY(currentItemSpy.count() == 1);
       
   947     QVERIFY(currentItemSpy.at(0).count() > 0);
       
   948     QVERIFY(qvariant_cast<QModelIndex>(currentItemSpy.at(0).at(0)) == model.index(0, 0));
       
   949 
       
   950     currentItemSpy.clear();
       
   951     HbAutoTest::mouseClick((HbAutoTestMainWindow*)mWindow, mWidget, pos2, -1);
       
   952     //QTest::qWait(default_delay);
       
   953     QVERIFY(mWidget->currentIndex() == model.index(1, 0));
       
   954     QVERIFY(currentItemSpy.count() == 1);
       
   955     QVERIFY(currentItemSpy.at(0).count() > 0);
       
   956     QVERIFY(qvariant_cast<QModelIndex>(currentItemSpy.at(0).at(0)) == model.index(1, 0));
       
   957 
       
   958     currentItemSpy.clear();
       
   959     HbAutoTest::mouseClick((HbAutoTestMainWindow*)mWindow, mWidget, pos2, -1);
       
   960     //QTest::qWait(default_delay);
       
   961     QVERIFY(mWidget->currentIndex() == model.index(2, 0));
       
   962     QVERIFY(currentItemSpy.count() == 1);
       
   963     QVERIFY(currentItemSpy.at(0).count() > 0);
       
   964     QVERIFY(qvariant_cast<QModelIndex>(currentItemSpy.at(0).at(0)) == model.index(2, 0));
       
   965 
       
   966     currentItemSpy.clear();
       
   967     HbAutoTest::mouseClick((HbAutoTestMainWindow*)mWindow, mWidget, pos2, -1);
       
   968     //QTest::qWait(default_delay);
       
   969     QVERIFY(mWidget->currentIndex() == model.index(3, 0));
       
   970     QVERIFY(currentItemSpy.count() == 1);
       
   971     QVERIFY(currentItemSpy.at(0).count() > 0);
       
   972     QVERIFY(qvariant_cast<QModelIndex>(currentItemSpy.at(0).at(0)) == model.index(3, 0));
       
   973 
       
   974     currentItemSpy.clear();
       
   975     HbAutoTest::mouseClick((HbAutoTestMainWindow*)mWindow, mWidget, pos3, -1);
       
   976     //QTest::qWait(default_delay);
       
   977     QVERIFY(mWidget->currentIndex() == model.index(2, 0));
       
   978     QVERIFY(currentItemSpy.count() == 1);
       
   979     QVERIFY(currentItemSpy.at(0).count() > 0);
       
   980     QVERIFY(qvariant_cast<QModelIndex>(currentItemSpy.at(0).at(0)) == model.index(2, 0));
       
   981 
       
   982     currentItemSpy.clear();
       
   983     HbAutoTest::mouseClick((HbAutoTestMainWindow*)mWindow, mWidget, pos3, -1);
       
   984     //QTest::qWait(default_delay);
       
   985     QVERIFY(mWidget->currentIndex() == model.index(1, 0));
       
   986     QVERIFY(currentItemSpy.count() == 1);
       
   987     QVERIFY(currentItemSpy.at(0).count() > 0);
       
   988     QVERIFY(qvariant_cast<QModelIndex>(currentItemSpy.at(0).at(0)) == model.index(1, 0));
       
   989 
       
   990     currentItemSpy.clear();
       
   991     HbAutoTest::mouseClick((HbAutoTestMainWindow*)mWindow, mWidget, pos3, -1);
       
   992     //QTest::qWait(default_delay);
   768     QVERIFY(mWidget->currentIndex() == model.index(0, 0));
   993     QVERIFY(mWidget->currentIndex() == model.index(0, 0));
   769     QVERIFY(currentItemSpy.count() == 1);
   994     QVERIFY(currentItemSpy.count() == 1);
   770     QVERIFY(currentItemSpy.at(0).count() > 0);
   995     QVERIFY(currentItemSpy.at(0).count() > 0);
   771     QVERIFY(qvariant_cast<QModelIndex>(currentItemSpy.at(0).at(0)) == model.index(0, 0));
   996     QVERIFY(qvariant_cast<QModelIndex>(currentItemSpy.at(0).at(0)) == model.index(0, 0));
   772 
   997 
   773     currentItemSpy.clear();
   998     currentItemSpy.clear();
   774     HbAutoTest::mouseClick((HbAutoTestMainWindow*)mWindow, mWidget, pos2, 100);
   999     QTest::mouseClick( mWindow, Qt::LeftButton, Qt::NoModifier, pos3, -1);
   775     QTest::qWait(default_delay);
  1000     //QTest::qWait(default_delay);
       
  1001     QVERIFY(mWidget->currentIndex() == model.index(0, 0));
       
  1002     QVERIFY(currentItemSpy.count() == 0);
       
  1003 */
       
  1004     mWindow->removeView(mWidget);
       
  1005     delete mWidget;
       
  1006     mWidget = 0;
       
  1007     
       
  1008     //QTest::qWait(default_delay);
       
  1009 
       
  1010 //    delete mWindow;
       
  1011 //    mWindow = 0;
       
  1012 }
       
  1013 
       
  1014 void TestGanesWidgets::test_currentItemGrid()
       
  1015 {
       
  1016     if(mWidget) {
       
  1017         mWindow->removeView(mWidget);
       
  1018         delete mWidget;
       
  1019         mWidget = 0;
       
  1020     }
       
  1021 //    mWindow = new HbMainWindow;
       
  1022     mWindow->viewport()->grabGesture(Qt::PanGesture);
       
  1023     mWindow->viewport()->grabGesture(Qt::TapGesture); // Add TapAndHoldGesture once it's working
       
  1024     mWidget = new HgGrid( Qt::Vertical);
       
  1025     mWidget->setItemSizePolicy(HgWidget::ItemSizeUserDefined);
       
  1026     QVERIFY(mWidget->itemSizePolicy() == HgWidget::ItemSizeUserDefined);
       
  1027     mWidget->setItemSize(QSizeF(120, 120));
       
  1028     QVERIFY(mWidget->itemSize() == QSizeF(120,120));
       
  1029     mWidget->setItemSpacing(QSizeF(0,0));
       
  1030     QVERIFY(mWidget->itemSpacing() == QSizeF(0,0));
       
  1031     QImage defaultIcon = QImage(":icons/startupHG.jpg").scaled(QSize(120,120));
       
  1032     mWidget->setDefaultImage(defaultIcon);
       
  1033     
       
  1034     
       
  1035     TestModel model;
       
  1036     model.generateItems(50);
       
  1037     mWindow->addView(mWidget);
       
  1038     mWidget->setGeometry(QRectF(0,0,360,640));
       
  1039     mWidget->setModel(&model);
       
  1040     mWindow->show();
       
  1041 
       
  1042     QVERIFY(mWidget->selectionModel());
       
  1043     qRegisterMetaType<QModelIndex>("QModelIndex");
       
  1044     QSignalSpy currentItemSpy(mWidget->selectionModel(), SIGNAL(currentChanged(QModelIndex, QModelIndex)));
       
  1045 
       
  1046     //QTest::qWait(2000);
       
  1047 
       
  1048     QVERIFY(mWidget->currentIndex() == model.index(0, 0));
       
  1049 
       
  1050     mWidget->setCurrentIndex(model.index(7, 0));
       
  1051     QVERIFY(mWidget->currentIndex() == model.index(7, 0));
       
  1052 
       
  1053     mWidget->setCurrentIndex(QModelIndex());
       
  1054     QVERIFY(!mWidget->currentIndex().isValid());
       
  1055 
       
  1056     currentItemSpy.clear();
       
  1057     
       
  1058     //    QTest::mouseClick( mWindow, Qt::LeftButton, Qt::NoModifier, grid_portrait_pos1, -1);
       
  1059     //QTest::qWait(1000);
       
  1060 //    mWindow->layout()->activate();
       
  1061 //    mWidget->hide();
       
  1062 //    mWidget->show();
       
  1063 //    mWidget->
       
  1064 /*    mWidget->scrollTo(model.index(1,0));
       
  1065 //    QTest::qWait(1000);
   776     QVERIFY(mWidget->currentIndex() == model.index(1, 0));
  1066     QVERIFY(mWidget->currentIndex() == model.index(1, 0));
   777     QVERIFY(currentItemSpy.count() == 1);
  1067     QVERIFY(currentItemSpy.count() == 1);
   778     QVERIFY(currentItemSpy.at(0).count() > 0);
  1068     QVERIFY(currentItemSpy.at(0).count() > 0);
   779     QVERIFY(qvariant_cast<QModelIndex>(currentItemSpy.at(0).at(0)) == model.index(1, 0));
  1069     QVERIFY(qvariant_cast<QModelIndex>(currentItemSpy.at(0).at(0)) == model.index(1, 0));
   780 
  1070 
   781     currentItemSpy.clear();
  1071     currentItemSpy.clear();
   782     HbAutoTest::mouseClick((HbAutoTestMainWindow*)mWindow, mWidget, pos2, 100);
  1072 //    QTest::mouseClick( mWindow, Qt::LeftButton, Qt::NoModifier, grid_portrait_pos4, -1);
   783     QTest::qWait(default_delay);
  1073     mWidget->scrollTo(model.index(4,0));
   784     QVERIFY(mWidget->currentIndex() == model.index(2, 0));
  1074     //QTest::qWait(1000);
   785     QVERIFY(currentItemSpy.count() == 1);
       
   786     QVERIFY(currentItemSpy.at(0).count() > 0);
       
   787     QVERIFY(qvariant_cast<QModelIndex>(currentItemSpy.at(0).at(0)) == model.index(2, 0));
       
   788 
       
   789     currentItemSpy.clear();
       
   790     HbAutoTest::mouseClick((HbAutoTestMainWindow*)mWindow, mWidget, pos2, 100);
       
   791     QTest::qWait(default_delay);
       
   792     QVERIFY(mWidget->currentIndex() == model.index(3, 0));
       
   793     QVERIFY(currentItemSpy.count() == 1);
       
   794     QVERIFY(currentItemSpy.at(0).count() > 0);
       
   795     QVERIFY(qvariant_cast<QModelIndex>(currentItemSpy.at(0).at(0)) == model.index(3, 0));
       
   796 
       
   797     currentItemSpy.clear();
       
   798     HbAutoTest::mouseClick((HbAutoTestMainWindow*)mWindow, mWidget, pos3, 100);
       
   799     QTest::qWait(default_delay);
       
   800     QVERIFY(mWidget->currentIndex() == model.index(2, 0));
       
   801     QVERIFY(currentItemSpy.count() == 1);
       
   802     QVERIFY(currentItemSpy.at(0).count() > 0);
       
   803     QVERIFY(qvariant_cast<QModelIndex>(currentItemSpy.at(0).at(0)) == model.index(2, 0));
       
   804 
       
   805     currentItemSpy.clear();
       
   806     HbAutoTest::mouseClick((HbAutoTestMainWindow*)mWindow, mWidget, pos3, 100);
       
   807     QTest::qWait(default_delay);
       
   808     QVERIFY(mWidget->currentIndex() == model.index(1, 0));
       
   809     QVERIFY(currentItemSpy.count() == 1);
       
   810     QVERIFY(currentItemSpy.at(0).count() > 0);
       
   811     QVERIFY(qvariant_cast<QModelIndex>(currentItemSpy.at(0).at(0)) == model.index(1, 0));
       
   812 
       
   813     currentItemSpy.clear();
       
   814     HbAutoTest::mouseClick((HbAutoTestMainWindow*)mWindow, mWidget, pos3, 100);
       
   815     QTest::qWait(default_delay);
       
   816     QVERIFY(mWidget->currentIndex() == model.index(0, 0));
       
   817     QVERIFY(currentItemSpy.count() == 1);
       
   818     QVERIFY(currentItemSpy.at(0).count() > 0);
       
   819     QVERIFY(qvariant_cast<QModelIndex>(currentItemSpy.at(0).at(0)) == model.index(0, 0));
       
   820 
       
   821     currentItemSpy.clear();
       
   822     HbAutoTest::mouseClick((HbAutoTestMainWindow*)mWindow, mWidget, pos3, 100);
       
   823     QTest::qWait(default_delay);
       
   824     QVERIFY(mWidget->currentIndex() == model.index(0, 0));
       
   825     QVERIFY(currentItemSpy.count() == 0);
       
   826 
       
   827     QTest::qWait(default_delay);
       
   828 
       
   829     delete mWindow;
       
   830     mWindow = 0;
       
   831 }
       
   832 
       
   833 void TestGanesWidgets::test_currentItemGrid()
       
   834 {
       
   835     mWindow = new HbMainWindow;
       
   836     mWindow->viewport()->grabGesture(Qt::PanGesture);
       
   837     mWindow->viewport()->grabGesture(Qt::TapGesture); // Add TapAndHoldGesture once it's working
       
   838     mWidget = new HgGrid( Qt::Vertical);
       
   839     mWidget->setItemSizePolicy(HgWidget::ItemSizeUserDefined);
       
   840     mWidget->setItemSize(QSizeF(120, 120));
       
   841 
       
   842     TestModel model;
       
   843     model.generateItems(50);
       
   844     mWindow->addView(mWidget);
       
   845     mWidget->setModel(&model);
       
   846     mWindow->show();
       
   847 
       
   848     QVERIFY(mWidget->selectionModel());
       
   849     qRegisterMetaType<QModelIndex>("QModelIndex");
       
   850     QSignalSpy currentItemSpy(mWidget->selectionModel(), SIGNAL(currentChanged(QModelIndex, QModelIndex)));
       
   851 
       
   852     QTest::qWait(2000);
       
   853 
       
   854     QVERIFY(mWidget->currentIndex() == model.index(0, 0));
       
   855 
       
   856     mWidget->setCurrentIndex(model.index(7, 0));
       
   857     QVERIFY(mWidget->currentIndex() == model.index(7, 0));
       
   858 
       
   859     mWidget->setCurrentIndex(QModelIndex());
       
   860     QVERIFY(!mWidget->currentIndex().isValid());
       
   861 
       
   862     currentItemSpy.clear();
       
   863     HbAutoTest::mouseClick((HbAutoTestMainWindow*)mWindow, mWidget, grid_portrait_pos1, 100);
       
   864     QTest::qWait(1000);
       
   865     QVERIFY(mWidget->currentIndex() == model.index(1, 0));
       
   866     QVERIFY(currentItemSpy.count() == 1);
       
   867     QVERIFY(currentItemSpy.at(0).count() > 0);
       
   868     QVERIFY(qvariant_cast<QModelIndex>(currentItemSpy.at(0).at(0)) == model.index(1, 0));
       
   869 
       
   870     currentItemSpy.clear();
       
   871     HbAutoTest::mouseClick((HbAutoTestMainWindow*)mWindow, mWidget, grid_portrait_pos4, 100);
       
   872     QTest::qWait(1000);
       
   873     QVERIFY(mWidget->currentIndex() == model.index(4, 0));
  1075     QVERIFY(mWidget->currentIndex() == model.index(4, 0));
   874     QVERIFY(currentItemSpy.count() == 1);
  1076     QVERIFY(currentItemSpy.count() == 1);
   875     QVERIFY(currentItemSpy.at(0).count() > 0);
  1077     QVERIFY(currentItemSpy.at(0).count() > 0);
   876     QVERIFY(qvariant_cast<QModelIndex>(currentItemSpy.at(0).at(0)) == model.index(4, 0));
  1078     QVERIFY(qvariant_cast<QModelIndex>(currentItemSpy.at(0).at(0)) == model.index(4, 0));
   877 
  1079 
   878     currentItemSpy.clear();
  1080     currentItemSpy.clear();
   879     HbAutoTest::mouseClick((HbAutoTestMainWindow*)mWindow, mWidget, grid_portrait_pos4, 100);
  1081 //    QTest::mouseClick( mWindow, Qt::LeftButton, Qt::NoModifier, grid_portrait_pos4, -1);
   880     QTest::qWait(1000);
  1082     mWidget->scrollTo(model.index(4,0));
       
  1083     //QTest::qWait(1000);
   881     QVERIFY(mWidget->currentIndex() == model.index(4, 0));
  1084     QVERIFY(mWidget->currentIndex() == model.index(4, 0));
   882     QVERIFY(currentItemSpy.count() == 0);
  1085     QVERIFY(currentItemSpy.count() == 0);
   883 
  1086 
   884     currentItemSpy.clear();
  1087     currentItemSpy.clear();
   885     HbAutoTest::mouseClick((HbAutoTestMainWindow*)mWindow, mWidget, grid_portrait_pos8, 100);
  1088 //    QTest::mouseClick( mWindow, Qt::LeftButton, Qt::NoModifier, grid_portrait_pos8, -1);
   886     QTest::qWait(1000);
  1089     //QTest::qWait(1000);
       
  1090     mWidget->scrollTo(model.index(8,0));
   887     QVERIFY(mWidget->currentIndex() == model.index(8, 0));
  1091     QVERIFY(mWidget->currentIndex() == model.index(8, 0));
   888     QVERIFY(currentItemSpy.count() == 1);
  1092     QVERIFY(currentItemSpy.count() == 1);
   889     QVERIFY(currentItemSpy.at(0).count() > 0);
  1093     QVERIFY(currentItemSpy.at(0).count() > 0);
   890     QVERIFY(qvariant_cast<QModelIndex>(currentItemSpy.at(0).at(0)) == model.index(8, 0));
  1094     QVERIFY(qvariant_cast<QModelIndex>(currentItemSpy.at(0).at(0)) == model.index(8, 0));
   891 
  1095 */
   892     QTest::qWait(2000);
  1096     //QTest::qWait(2000);
   893 
  1097 
   894     delete mWindow;
  1098     mWindow->removeView(mWidget);
   895     mWindow = 0;
  1099     delete mWidget;
       
  1100     mWidget = 0;
       
  1101     
       
  1102 //    delete mWindow;
       
  1103 //    mWindow = 0;
   896 }
  1104 }
   897 
  1105 
   898 void TestGanesWidgets::test_selectionMode()
  1106 void TestGanesWidgets::test_selectionMode()
   899 {
  1107 {
   900     mWindow = new HbMainWindow;
  1108     if(mWidget) {
       
  1109         mWindow->removeView(mWidget);
       
  1110         delete mWidget;
       
  1111         mWidget = 0;
       
  1112     }
       
  1113 //    mWindow = new HbMainWindow;
   901     mWindow->viewport()->grabGesture(Qt::PanGesture);
  1114     mWindow->viewport()->grabGesture(Qt::PanGesture);
   902     mWindow->viewport()->grabGesture(Qt::TapGesture); // Add TapAndHoldGesture once it's working
  1115     mWindow->viewport()->grabGesture(Qt::TapGesture); // Add TapAndHoldGesture once it's working
   903     mWidget = new HgGrid( Qt::Vertical);
  1116     mWidget = new HgGrid( Qt::Vertical);
   904 
  1117 
   905     mWindow->addView(mWidget);
  1118     mWindow->addView(mWidget);
   906     mWindow->show();
  1119     mWidget->setGeometry(QRectF(0,0,360,640));
   907 
  1120     mWindow->show();
   908     QTest::qWait(2000);
  1121     //QTest::qWaitForWindowShown(mWindow);
       
  1122 
       
  1123     //QTest::qWait(2000);
   909 
  1124 
   910     // Widget does not have selection model yet
  1125     // Widget does not have selection model yet
   911     QVERIFY(mWidget->selectionModel() == 0);
  1126     QVERIFY(mWidget->selectionModel() == 0);
   912 
  1127 
   913     // Selection methods should have no effect unless there is a model
  1128     // Selection methods should have no effect unless there is a model
   928     QTest::qWait(2000);
  1143     QTest::qWait(2000);
   929 
  1144 
   930     mWidget->setSelectionMode(HgWidget::NoSelection);
  1145     mWidget->setSelectionMode(HgWidget::NoSelection);
   931     QVERIFY(mWidget->selectionMode() == HgWidget::NoSelection);
  1146     QVERIFY(mWidget->selectionMode() == HgWidget::NoSelection);
   932     // Default selection mode: no selection
  1147     // Default selection mode: no selection
   933     HbAutoTest::mouseClick((HbAutoTestMainWindow*)mWindow, mWidget, grid_portrait_pos0, 100);
  1148     HbAutoTest::mouseClick((HbAutoTestMainWindow*)mWindow, mWidget,grid_portrait_pos0, -1);
   934     QTest::qWait(1000);
  1149     //QTest::qWait(1000);
   935     QVERIFY(mWidget->selectionModel()->selectedIndexes().count() == 0);
  1150     QVERIFY(mWidget->selectionModel()->selectedIndexes().count() == 0);
   936     QVERIFY(selectionSpy.count() == 0);
  1151     QVERIFY(selectionSpy.count() == 0);
   937 
  1152 
   938     HbAutoTest::mouseClick((HbAutoTestMainWindow*)mWindow, mWidget, grid_portrait_pos1, 100);
  1153     HbAutoTest::mouseClick((HbAutoTestMainWindow*)mWindow, mWidget, grid_portrait_pos1, -1);
   939     QTest::qWait(1000);
  1154     //QTest::qWait(1000);
   940     QVERIFY(mWidget->selectionModel()->selectedIndexes().count() == 0);
  1155     QVERIFY(mWidget->selectionModel()->selectedIndexes().count() == 0);
   941     QVERIFY(selectionSpy.count() == 0);
  1156     QVERIFY(selectionSpy.count() == 0);
   942 
  1157 
   943     mWidget->selectAll();
  1158     mWidget->selectAll();
   944     QVERIFY(mWidget->selectionModel()->selectedIndexes().count() == 0);
  1159     QVERIFY(mWidget->selectionModel()->selectedIndexes().count() == 0);
   947     // Single selection mode: at most 1 item selected at a time
  1162     // Single selection mode: at most 1 item selected at a time
   948     mWidget->setSelectionMode(HgWidget::SingleSelection);
  1163     mWidget->setSelectionMode(HgWidget::SingleSelection);
   949     QVERIFY(mWidget->selectionMode() == HgWidget::SingleSelection);
  1164     QVERIFY(mWidget->selectionMode() == HgWidget::SingleSelection);
   950     QVERIFY(mWidget->selectionModel()->selectedIndexes().count() == 0);
  1165     QVERIFY(mWidget->selectionModel()->selectedIndexes().count() == 0);
   951 
  1166 
   952     HbAutoTest::mouseClick((HbAutoTestMainWindow*)mWindow, mWidget, grid_portrait_pos1, 100);
  1167     HbAutoTest::mouseClick((HbAutoTestMainWindow*)mWindow, mWidget, grid_portrait_pos1, -1);
   953     QTest::qWait(1000);
  1168     QTest::qWait(1000);
   954     QVERIFY(mWidget->selectionModel()->selectedIndexes().count() == 1);
  1169     QVERIFY(mWidget->selectionModel()->selectedIndexes().count() == 1);
   955     QVERIFY(mWidget->selectionModel()->isSelected(model.index(1, 0)));
  1170     QVERIFY(mWidget->selectionModel()->isSelected(model.index(1, 0)));
   956     QVERIFY(selectionSpy.count() == 1);
  1171     QVERIFY(selectionSpy.count() == 1);
   957     QVERIFY(selectionSpy.at(0).count() > 0);
  1172     QVERIFY(selectionSpy.at(0).count() > 0);
   958     QItemSelection selection = qvariant_cast<QItemSelection>(selectionSpy.at(0).at(0));
  1173     QItemSelection selection = qvariant_cast<QItemSelection>(selectionSpy.at(0).at(0));
   959     QVERIFY(selection.indexes().count() == 1);
  1174     QVERIFY(selection.indexes().count() == 1);
   960     QVERIFY(selection.contains(model.index(1, 0)));
  1175     QVERIFY(selection.contains(model.index(1, 0)));
   961 
  1176 
   962     selectionSpy.clear();
  1177     selectionSpy.clear();
   963     HbAutoTest::mouseClick((HbAutoTestMainWindow*)mWindow, mWidget, grid_portrait_pos3, 100);
  1178     HbAutoTest::mouseClick((HbAutoTestMainWindow*)mWindow, mWidget, grid_portrait_pos3, -1);
   964     QTest::qWait(1000);
  1179     QTest::qWait(1000);
   965     QVERIFY(mWidget->selectionModel()->selectedIndexes().count() == 1);
  1180     QVERIFY(mWidget->selectionModel()->selectedIndexes().count() == 1);
   966     QVERIFY(mWidget->selectionModel()->isSelected(model.index(3, 0)));
  1181     QVERIFY(mWidget->selectionModel()->isSelected(model.index(3, 0)));
   967     QVERIFY(selectionSpy.count() == 1);
  1182     QVERIFY(selectionSpy.count() == 1);
   968     QVERIFY(selectionSpy.at(0).count() > 1);
  1183     QVERIFY(selectionSpy.at(0).count() > 1);
   980     QVERIFY(selectionSpy.at(0).count() > 0);
  1195     QVERIFY(selectionSpy.at(0).count() > 0);
   981     selection = qvariant_cast<QItemSelection>(selectionSpy.at(0).at(0));
  1196     selection = qvariant_cast<QItemSelection>(selectionSpy.at(0).at(0));
   982     QVERIFY(selection.indexes().count() == 0);
  1197     QVERIFY(selection.indexes().count() == 0);
   983 
  1198 
   984     selectionSpy.clear();
  1199     selectionSpy.clear();
   985     HbAutoTest::mouseClick((HbAutoTestMainWindow*)mWindow, mWidget, grid_portrait_pos8, 100);
  1200     HbAutoTest::mouseClick((HbAutoTestMainWindow*)mWindow, mWidget, grid_portrait_pos8, -1);
   986     QTest::qWait(1000);
  1201     //QTest::qWait(1000);
   987     QVERIFY(mWidget->selectionModel()->selectedIndexes().count() == 1);
  1202     QVERIFY(mWidget->selectionModel()->selectedIndexes().count() == 1);
   988     QVERIFY(mWidget->selectionModel()->isSelected(model.index(8, 0)));
  1203     QVERIFY(mWidget->selectionModel()->isSelected(model.index(8, 0)));
   989     QVERIFY(selectionSpy.count() == 1);
  1204     QVERIFY(selectionSpy.count() == 1);
   990     QVERIFY(selectionSpy.at(0).count() > 0);
  1205     QVERIFY(selectionSpy.at(0).count() > 0);
   991     selection = qvariant_cast<QItemSelection>(selectionSpy.at(0).at(0));
  1206     selection = qvariant_cast<QItemSelection>(selectionSpy.at(0).at(0));
  1002     QVERIFY(selectionSpy.at(0).count() > 0);
  1217     QVERIFY(selectionSpy.at(0).count() > 0);
  1003     selection = qvariant_cast<QItemSelection>(selectionSpy.at(0).at(0));
  1218     selection = qvariant_cast<QItemSelection>(selectionSpy.at(0).at(0));
  1004     QVERIFY(selection.indexes().count() == 0);
  1219     QVERIFY(selection.indexes().count() == 0);
  1005 
  1220 
  1006     selectionSpy.clear();
  1221     selectionSpy.clear();
  1007     HbAutoTest::mouseClick((HbAutoTestMainWindow*)mWindow, mWidget, grid_portrait_pos2, 100);
  1222     HbAutoTest::mouseClick((HbAutoTestMainWindow*)mWindow, mWidget, grid_portrait_pos2, -1);
  1008     QTest::qWait(1000);
  1223     QTest::qWait(1000);
  1009     QVERIFY(mWidget->selectionModel()->selectedIndexes().count() == 1);
  1224     QVERIFY(mWidget->selectionModel()->selectedIndexes().count() == 1);
  1010     QVERIFY(mWidget->selectionModel()->isSelected(model.index(2, 0)));
  1225     QVERIFY(mWidget->selectionModel()->isSelected(model.index(2, 0)));
  1011     QVERIFY(selectionSpy.count() == 1);
  1226     QVERIFY(selectionSpy.count() == 1);
  1012     QVERIFY(selectionSpy.at(0).count() > 0);
  1227     QVERIFY(selectionSpy.at(0).count() > 0);
  1013     selection = qvariant_cast<QItemSelection>(selectionSpy.at(0).at(0));
  1228     selection = qvariant_cast<QItemSelection>(selectionSpy.at(0).at(0));
  1014     QVERIFY(selection.indexes().count() == 1);
  1229     QVERIFY(selection.indexes().count() == 1);
  1015     QVERIFY(selection.contains(model.index(2, 0)));
  1230     QVERIFY(selection.contains(model.index(2, 0)));
  1016 
  1231 
  1017     selectionSpy.clear();
  1232     selectionSpy.clear();
  1018     HbAutoTest::mouseClick((HbAutoTestMainWindow*)mWindow, mWidget, grid_portrait_pos3, 100);
  1233     HbAutoTest::mouseClick((HbAutoTestMainWindow*)mWindow, mWidget, grid_portrait_pos3, -1);
  1019     QTest::qWait(1000);
  1234     QTest::qWait(1000);
  1020     QVERIFY(mWidget->selectionModel()->selectedIndexes().count() == 2);
  1235     QVERIFY(mWidget->selectionModel()->selectedIndexes().count() == 2);
  1021     QVERIFY(mWidget->selectionModel()->isSelected(model.index(3, 0)));
  1236     QVERIFY(mWidget->selectionModel()->isSelected(model.index(3, 0)));
  1022     QVERIFY(selectionSpy.count() == 1);
  1237     QVERIFY(selectionSpy.count() == 1);
  1023     QVERIFY(selectionSpy.at(0).count() > 0);
  1238     QVERIFY(selectionSpy.at(0).count() > 0);
  1024     selection = qvariant_cast<QItemSelection>(selectionSpy.at(0).at(0));
  1239     selection = qvariant_cast<QItemSelection>(selectionSpy.at(0).at(0));
  1025     QVERIFY(selection.indexes().count() == 1);
  1240     QVERIFY(selection.indexes().count() == 1);
  1026     QVERIFY(selection.contains(model.index(3, 0)));
  1241     QVERIFY(selection.contains(model.index(3, 0)));
  1027 
  1242 
  1028     selectionSpy.clear();
  1243     selectionSpy.clear();
  1029     HbAutoTest::mouseClick((HbAutoTestMainWindow*)mWindow, mWidget, grid_portrait_pos5, 100);
  1244     HbAutoTest::mouseClick((HbAutoTestMainWindow*)mWindow, mWidget, grid_portrait_pos5, -1);
  1030     QTest::qWait(1000);
  1245     QTest::qWait(1000);
  1031     QVERIFY(mWidget->selectionModel()->selectedIndexes().count() == 4);
  1246     QVERIFY(mWidget->selectionModel()->selectedIndexes().count() == 4);
  1032     QVERIFY(mWidget->selectionModel()->isSelected(model.index(4, 0)));
  1247     QVERIFY(mWidget->selectionModel()->isSelected(model.index(4, 0)));
  1033     QVERIFY(mWidget->selectionModel()->isSelected(model.index(5, 0)));
  1248     QVERIFY(mWidget->selectionModel()->isSelected(model.index(5, 0)));
  1034     QVERIFY(selectionSpy.count() == 1);
  1249     QVERIFY(selectionSpy.count() == 1);
  1037     QVERIFY(selection.indexes().count() == 2);
  1252     QVERIFY(selection.indexes().count() == 2);
  1038     QVERIFY(selection.contains(model.index(4, 0)));
  1253     QVERIFY(selection.contains(model.index(4, 0)));
  1039     QVERIFY(selection.contains(model.index(5, 0)));
  1254     QVERIFY(selection.contains(model.index(5, 0)));
  1040 
  1255 
  1041     selectionSpy.clear();
  1256     selectionSpy.clear();
  1042     HbAutoTest::mouseClick((HbAutoTestMainWindow*)mWindow, mWidget, grid_portrait_pos0, 100);
  1257     HbAutoTest::mouseClick((HbAutoTestMainWindow*)mWindow, mWidget, grid_portrait_pos0, -1);
  1043     QTest::qWait(1000);
  1258     QTest::qWait(1000);
  1044     QVERIFY(mWidget->selectionModel()->selectedIndexes().count() == 6);
  1259     QVERIFY(mWidget->selectionModel()->selectedIndexes().count() == 6);
  1045     QVERIFY(mWidget->selectionModel()->isSelected(model.index(0, 0)));
  1260     QVERIFY(mWidget->selectionModel()->isSelected(model.index(0, 0)));
  1046     QVERIFY(mWidget->selectionModel()->isSelected(model.index(1, 0)));
  1261     QVERIFY(mWidget->selectionModel()->isSelected(model.index(1, 0)));
  1047     QVERIFY(selectionSpy.count() == 1);
  1262     QVERIFY(selectionSpy.count() == 1);
  1051     QVERIFY(selection.contains(model.index(0, 0)));
  1266     QVERIFY(selection.contains(model.index(0, 0)));
  1052     QVERIFY(selection.contains(model.index(1, 0)));
  1267     QVERIFY(selection.contains(model.index(1, 0)));
  1053 
  1268 
  1054     // In contiguous selection mode, clicking a selected item does nothing
  1269     // In contiguous selection mode, clicking a selected item does nothing
  1055     selectionSpy.clear();
  1270     selectionSpy.clear();
  1056     HbAutoTest::mouseClick((HbAutoTestMainWindow*)mWindow, mWidget, grid_portrait_pos5, 100);
  1271     HbAutoTest::mouseClick((HbAutoTestMainWindow*)mWindow, mWidget, grid_portrait_pos5, -1);
  1057     QTest::qWait(1000);
  1272     QTest::qWait(1000);
  1058     QVERIFY(mWidget->selectionModel()->selectedIndexes().count() == 6);
  1273     QVERIFY(mWidget->selectionModel()->selectedIndexes().count() == 6);
  1059     QVERIFY(selectionSpy.count() == 0);
  1274     QVERIFY(selectionSpy.count() == 0);
  1060 
  1275 
  1061     selectionSpy.clear();
  1276     selectionSpy.clear();
  1069     QVERIFY(mWidget->selectionModel()->selectedIndexes().count() == 9);
  1284     QVERIFY(mWidget->selectionModel()->selectedIndexes().count() == 9);
  1070     QVERIFY(selectionSpy.count() == 0);
  1285     QVERIFY(selectionSpy.count() == 0);
  1071 
  1286 
  1072     selectionSpy.clear();
  1287     selectionSpy.clear();
  1073     // In multiselection mode, clicking a selected item deselects it
  1288     // In multiselection mode, clicking a selected item deselects it
  1074     HbAutoTest::mouseClick((HbAutoTestMainWindow*)mWindow, mWidget, grid_portrait_pos5, 100);
  1289     HbAutoTest::mouseClick((HbAutoTestMainWindow*)mWindow, mWidget, grid_portrait_pos5, -1);
  1075     QTest::qWait(1000);
  1290     QTest::qWait(1000);
  1076     QVERIFY(mWidget->selectionModel()->selectedIndexes().count() == 8);
  1291     QVERIFY(mWidget->selectionModel()->selectedIndexes().count() == 8);
  1077     QVERIFY(!(mWidget->selectionModel()->isSelected(model.index(5, 0))));
  1292     QVERIFY(!(mWidget->selectionModel()->isSelected(model.index(5, 0))));
  1078     QVERIFY(selectionSpy.count() == 1);
  1293     QVERIFY(selectionSpy.count() == 1);
  1079     QVERIFY(selectionSpy.at(0).count() > 1);
  1294     QVERIFY(selectionSpy.at(0).count() > 1);
  1092     QVERIFY(selection.indexes().count() == 0);
  1307     QVERIFY(selection.indexes().count() == 0);
  1093     selection = qvariant_cast<QItemSelection>(selectionSpy.at(0).at(1)); // deselected
  1308     selection = qvariant_cast<QItemSelection>(selectionSpy.at(0).at(1)); // deselected
  1094     QVERIFY(selection.indexes().count() == 8);
  1309     QVERIFY(selection.indexes().count() == 8);
  1095 
  1310 
  1096     selectionSpy.clear();
  1311     selectionSpy.clear();
  1097     HbAutoTest::mouseClick((HbAutoTestMainWindow*)mWindow, mWidget, grid_portrait_pos3, 100);
  1312     HbAutoTest::mouseClick((HbAutoTestMainWindow*)mWindow, mWidget, grid_portrait_pos3, -1);
  1098     QTest::qWait(1000);
  1313     QTest::qWait(1000);
  1099     QVERIFY(mWidget->selectionModel()->selectedIndexes().count() == 1);
  1314     QVERIFY(mWidget->selectionModel()->selectedIndexes().count() == 1);
  1100     QVERIFY(mWidget->selectionModel()->isSelected(model.index(3, 0)));
  1315     QVERIFY(mWidget->selectionModel()->isSelected(model.index(3, 0)));
  1101     QVERIFY(selectionSpy.count() == 1);
  1316     QVERIFY(selectionSpy.count() == 1);
  1102     QVERIFY(selectionSpy.at(0).count() > 0);
  1317     QVERIFY(selectionSpy.at(0).count() > 0);
  1103     selection = qvariant_cast<QItemSelection>(selectionSpy.at(0).at(0));
  1318     selection = qvariant_cast<QItemSelection>(selectionSpy.at(0).at(0));
  1104     QVERIFY(selection.indexes().count() == 1);
  1319     QVERIFY(selection.indexes().count() == 1);
  1105 
  1320 
  1106     selectionSpy.clear();
  1321     selectionSpy.clear();
  1107     HbAutoTest::mouseClick((HbAutoTestMainWindow*)mWindow, mWidget, grid_portrait_pos5, 100);
  1322     HbAutoTest::mouseClick((HbAutoTestMainWindow*)mWindow, mWidget, grid_portrait_pos5, -1);
  1108     QTest::qWait(1000);
  1323     QTest::qWait(1000);
  1109     QVERIFY(mWidget->selectionModel()->selectedIndexes().count() == 2);
  1324     QVERIFY(mWidget->selectionModel()->selectedIndexes().count() == 2);
  1110     QVERIFY(mWidget->selectionModel()->isSelected(model.index(5, 0)));
  1325     QVERIFY(mWidget->selectionModel()->isSelected(model.index(5, 0)));
  1111     QVERIFY(selectionSpy.count() == 1);
  1326     QVERIFY(selectionSpy.count() == 1);
  1112     QVERIFY(selectionSpy.at(0).count() > 0);
  1327     QVERIFY(selectionSpy.at(0).count() > 0);
  1113     selection = qvariant_cast<QItemSelection>(selectionSpy.at(0).at(0));
  1328     selection = qvariant_cast<QItemSelection>(selectionSpy.at(0).at(0));
  1114     QVERIFY(selection.indexes().count() == 1);
  1329     QVERIFY(selection.indexes().count() == 1);
  1115     QVERIFY(selection.contains(model.index(5, 0)));
  1330     QVERIFY(selection.contains(model.index(5, 0)));
  1116 
  1331 
  1117     selectionSpy.clear();
  1332     selectionSpy.clear();
  1118     HbAutoTest::mouseClick((HbAutoTestMainWindow*)mWindow, mWidget, grid_portrait_pos8, 100);
  1333     HbAutoTest::mouseClick((HbAutoTestMainWindow*)mWindow, mWidget, grid_portrait_pos8, -1);
  1119     QTest::qWait(1000);
  1334     QTest::qWait(1000);
  1120     QVERIFY(mWidget->selectionModel()->selectedIndexes().count() == 3);
  1335     QVERIFY(mWidget->selectionModel()->selectedIndexes().count() == 3);
  1121     QVERIFY(mWidget->selectionModel()->isSelected(model.index(8, 0)));
  1336     QVERIFY(mWidget->selectionModel()->isSelected(model.index(8, 0)));
  1122     QVERIFY(selectionSpy.count() == 1);
  1337     QVERIFY(selectionSpy.count() == 1);
  1123     QVERIFY(selectionSpy.at(0).count() > 0);
  1338     QVERIFY(selectionSpy.at(0).count() > 0);
  1137     QVERIFY(mWidget->selectionModel()->selectedIndexes().count() == 3);
  1352     QVERIFY(mWidget->selectionModel()->selectedIndexes().count() == 3);
  1138     QVERIFY(selectionSpy.count() == 0);
  1353     QVERIFY(selectionSpy.count() == 0);
  1139 
  1354 
  1140     selectionSpy.clear();
  1355     selectionSpy.clear();
  1141     // First click resets the selection to a valid setup
  1356     // First click resets the selection to a valid setup
  1142     HbAutoTest::mouseClick((HbAutoTestMainWindow*)mWindow, mWidget, grid_portrait_pos5, 100);
  1357     HbAutoTest::mouseClick((HbAutoTestMainWindow*)mWindow, mWidget, grid_portrait_pos5, -1);
  1143     QTest::qWait(1000);
  1358     QTest::qWait(1000);
  1144     QVERIFY(mWidget->selectionModel()->selectedIndexes().count() == 1);
  1359     QVERIFY(mWidget->selectionModel()->selectedIndexes().count() == 1);
  1145     QVERIFY(mWidget->selectionModel()->isSelected(model.index(5, 0)));
  1360     QVERIFY(mWidget->selectionModel()->isSelected(model.index(5, 0)));
  1146     QVERIFY(selectionSpy.count() == 1);
  1361     QVERIFY(selectionSpy.count() == 1);
  1147     QVERIFY(selectionSpy.at(0).count() > 1);
  1362     QVERIFY(selectionSpy.at(0).count() > 1);
  1150     selection = qvariant_cast<QItemSelection>(selectionSpy.at(0).at(1)); // deselected
  1365     selection = qvariant_cast<QItemSelection>(selectionSpy.at(0).at(1)); // deselected
  1151     QVERIFY(selection.indexes().count() == 2);
  1366     QVERIFY(selection.indexes().count() == 2);
  1152     QVERIFY(selection.contains(model.index(3, 0)));
  1367     QVERIFY(selection.contains(model.index(3, 0)));
  1153     QVERIFY(selection.contains(model.index(8, 0)));
  1368     QVERIFY(selection.contains(model.index(8, 0)));
  1154 
  1369 
  1155     QTest::qWait(2000);
  1370     //QTest::qWait(2000);
  1156 
  1371 
  1157     delete mWindow;
  1372     mWindow->removeView(mWidget);
  1158     mWindow = 0;
  1373     delete mWidget;
       
  1374     mWidget = 0;    
       
  1375     
       
  1376 //    delete mWindow;
       
  1377 //    mWindow = 0;
  1159 }
  1378 }
  1160 
  1379 
  1161 void TestGanesWidgets::test_selectionModel()
  1380 void TestGanesWidgets::test_selectionModel()
  1162 {
  1381 {
  1163     mWindow = new HbMainWindow;
  1382     if(mWidget) {
       
  1383         mWindow->removeView(mWidget);
       
  1384         delete mWidget;
       
  1385         mWidget = 0;
       
  1386     }
       
  1387 //    mWindow = new HbMainWindow;
  1164     mWindow->viewport()->grabGesture(Qt::PanGesture);
  1388     mWindow->viewport()->grabGesture(Qt::PanGesture);
  1165     mWindow->viewport()->grabGesture(Qt::TapGesture); // Add TapAndHoldGesture once it's working
  1389     mWindow->viewport()->grabGesture(Qt::TapGesture); // Add TapAndHoldGesture once it's working
  1166     mWidget = new HgGrid( Qt::Vertical);
  1390     mWidget = new HgGrid( Qt::Vertical);
  1167     TestModel model;
  1391     TestModel model;
  1168     model.generateItems(9);
  1392     model.generateItems(9);
  1169     mWidget->setModel(&model);
  1393     mWidget->setModel(&model);
  1170     mWindow->addView(mWidget);
  1394     mWindow->addView(mWidget);
  1171     mWindow->show();
  1395     mWidget->setGeometry(QRectF(0,0,360,640));
  1172     QTest::qWait(2000);
  1396     mWindow->show();
       
  1397 //    mWindow->layout()->activate();
       
  1398     //QTest::qWaitForWindowShown(mWindow);
       
  1399     //QTest::qWait(2000);
  1173 
  1400 
  1174     QVERIFY(mWidget->selectionModel() != 0);
  1401     QVERIFY(mWidget->selectionModel() != 0);
  1175 
  1402 
  1176     QItemSelectionModel *defaultSelectionModel = mWidget->selectionModel();
  1403     QItemSelectionModel *defaultSelectionModel = mWidget->selectionModel();
  1177     QSignalSpy defaultSelectionSpy(defaultSelectionModel, SIGNAL(selectionChanged(QItemSelection, QItemSelection)));
  1404     QSignalSpy defaultSelectionSpy(defaultSelectionModel, SIGNAL(selectionChanged(QItemSelection, QItemSelection)));
  1181 
  1408 
  1182     QItemSelectionModel *testSelectionModel2 = new QItemSelectionModel(&model);
  1409     QItemSelectionModel *testSelectionModel2 = new QItemSelectionModel(&model);
  1183     QSignalSpy testSelectionSpy2(testSelectionModel2, SIGNAL(selectionChanged(QItemSelection, QItemSelection)));
  1410     QSignalSpy testSelectionSpy2(testSelectionModel2, SIGNAL(selectionChanged(QItemSelection, QItemSelection)));
  1184 
  1411 
  1185     mWidget->setSelectionMode(HgWidget::MultiSelection);
  1412     mWidget->setSelectionMode(HgWidget::MultiSelection);
  1186 
  1413 /*
  1187     HbAutoTest::mouseClick((HbAutoTestMainWindow*)mWindow, mWidget, grid_portrait_pos2, 100);
  1414     QTest::mouseClick( mWindow, Qt::LeftButton, Qt::NoModifier, grid_portrait_pos2, -1);
  1188     QTest::qWait(1000);
  1415     //QTest::qWait(1000);
  1189     QVERIFY(defaultSelectionModel->selectedIndexes().count() == 1);
  1416     QVERIFY(defaultSelectionModel->selectedIndexes().count() == 1);
  1190     QVERIFY(defaultSelectionSpy.count() == 1);
  1417     QVERIFY(defaultSelectionSpy.count() == 1);
  1191     QVERIFY(testSelectionModel1->selectedIndexes().count() == 0);
  1418     QVERIFY(testSelectionModel1->selectedIndexes().count() == 0);
  1192     QVERIFY(testSelectionSpy1.count() == 0);
  1419     QVERIFY(testSelectionSpy1.count() == 0);
  1193     QVERIFY(testSelectionModel2->selectedIndexes().count() == 0);
  1420     QVERIFY(testSelectionModel2->selectedIndexes().count() == 0);
  1196     defaultSelectionSpy.clear();
  1423     defaultSelectionSpy.clear();
  1197     testSelectionSpy1.clear();
  1424     testSelectionSpy1.clear();
  1198     testSelectionSpy2.clear();
  1425     testSelectionSpy2.clear();
  1199 
  1426 
  1200     mWidget->setSelectionModel(testSelectionModel1);
  1427     mWidget->setSelectionModel(testSelectionModel1);
  1201     HbAutoTest::mouseClick((HbAutoTestMainWindow*)mWindow, mWidget, grid_portrait_pos5, 100);
  1428     QTest::mouseClick( mWindow, Qt::LeftButton, Qt::NoModifier, grid_portrait_pos5, -1);
  1202     QTest::qWait(1000);
  1429     //QTest::qWait(1000);
  1203     // Default selection model is not valid any more
  1430     // Default selection model is not valid any more
  1204     QVERIFY(defaultSelectionSpy.count() == 0);
  1431     QVERIFY(defaultSelectionSpy.count() == 0);
  1205     QVERIFY(testSelectionModel1->selectedIndexes().count() == 1);
  1432     QVERIFY(testSelectionModel1->selectedIndexes().count() == 1);
  1206     QVERIFY(testSelectionSpy1.count() == 1);
  1433     QVERIFY(testSelectionSpy1.count() == 1);
  1207     QVERIFY(testSelectionModel2->selectedIndexes().count() == 0);
  1434     QVERIFY(testSelectionModel2->selectedIndexes().count() == 0);
  1238     QVERIFY(testSelectionModel1->selectedIndexes().count() == 0);
  1465     QVERIFY(testSelectionModel1->selectedIndexes().count() == 0);
  1239     QVERIFY(testSelectionSpy1.count() == 1);
  1466     QVERIFY(testSelectionSpy1.count() == 1);
  1240     QVERIFY(testSelectionModel2->selectedIndexes().count() == 9);
  1467     QVERIFY(testSelectionModel2->selectedIndexes().count() == 9);
  1241     QVERIFY(testSelectionSpy2.count() == 0);
  1468     QVERIFY(testSelectionSpy2.count() == 0);
  1242 
  1469 
  1243     QTest::qWait(2000);
  1470     //QTest::qWait(2000);
  1244 
  1471 */
  1245     delete testSelectionModel1;
  1472     delete testSelectionModel1;
  1246     delete testSelectionModel2;
  1473     delete testSelectionModel2;
  1247 
  1474 
  1248     delete mWindow;
  1475     mWindow->removeView(mWidget);
  1249     mWindow = 0;
  1476     delete mWidget;
       
  1477     mWidget = 0;
       
  1478     
       
  1479 //    delete mWindow;
       
  1480 //    mWindow = 0;
  1250 }
  1481 }
  1251 
  1482 
  1252 void TestGanesWidgets::test_scrollTo()
  1483 void TestGanesWidgets::test_scrollTo()
  1253 {
  1484 {
       
  1485     if(mWidget) {
       
  1486         mWindow->removeView(mWidget);
       
  1487         delete mWidget;
       
  1488         mWidget = 0;
       
  1489     }
  1254     qRegisterMetaType<QModelIndex>("QModelIndex");
  1490     qRegisterMetaType<QModelIndex>("QModelIndex");
  1255     qRegisterMetaType<QModelIndex>("QItemSelection");
  1491     qRegisterMetaType<QModelIndex>("QItemSelection");
  1256     // TODO: How to verify that items are freed?
  1492     // TODO: How to verify that items are freed?
  1257 
  1493 
  1258     mWindow = new HbMainWindow;
  1494 //    mWindow = new HbMainWindow;
  1259     mWindow->viewport()->grabGesture(Qt::PanGesture);
  1495     mWindow->viewport()->grabGesture(Qt::PanGesture);
  1260     mWindow->viewport()->grabGesture(Qt::TapGesture); // Add TapAndHoldGesture once it's working
  1496     mWindow->viewport()->grabGesture(Qt::TapGesture); // Add TapAndHoldGesture once it's working
  1261     mWidget = new HgGrid( Qt::Vertical);
  1497     mWidget = new HgGrid( Qt::Vertical);
  1262     QList<QModelIndex> requestedIndexes;
  1498     QList<QModelIndex> requestedIndexes;
  1263     TestModel model(&requestedIndexes);
  1499     TestModel model(&requestedIndexes);
  1264     model.generateItems(1024);
  1500     model.generateItems(1024);
  1265     mWidget->setModel(&model);
  1501     mWidget->setModel(&model);
  1266     mWindow->addView(mWidget);
  1502     mWindow->addView(mWidget);
       
  1503     mWidget->setGeometry(QRectF(0,0,360,640));
  1267     mWindow->show();
  1504     mWindow->show();
  1268     QTest::qWait(2000);
  1505     QTest::qWait(2000);
  1269 
  1506 
  1270     QVERIFY(requestedIndexes.count() == 120); // Scroll buffer size in grid mode is assumed to be 120
  1507     QVERIFY(requestedIndexes.count() == 120); // Scroll buffer size in grid mode is assumed to be 120
  1271     QVERIFY(requestedIndexes.front() == model.index(0, 0));
  1508     QVERIFY(requestedIndexes.front() == model.index(0, 0));
  1275     QSignalSpy activatedSpy(mWidget, SIGNAL(activated(QModelIndex)));
  1512     QSignalSpy activatedSpy(mWidget, SIGNAL(activated(QModelIndex)));
  1276     QSignalSpy currentSpy(mWidget->selectionModel(), SIGNAL(currentChanged(QModelIndex, QModelIndex)));
  1513     QSignalSpy currentSpy(mWidget->selectionModel(), SIGNAL(currentChanged(QModelIndex, QModelIndex)));
  1277     QSignalSpy selectionSpy(mWidget->selectionModel(), SIGNAL(selectionChanged(QItemSelection, QItemSelection)));
  1514     QSignalSpy selectionSpy(mWidget->selectionModel(), SIGNAL(selectionChanged(QItemSelection, QItemSelection)));
  1278 
  1515 
  1279     mWidget->scrollTo(model.index(100, 0));
  1516     mWidget->scrollTo(model.index(100, 0));
  1280     QTest::qWait(1000);
  1517     //QTest::qWait(1000);
  1281     QVERIFY(activatedSpy.count() == 0); // scrollto doesn't activate item
  1518     QVERIFY(activatedSpy.count() == 0); // scrollto doesn't activate item
  1282     QVERIFY(currentSpy.count() == 0); // scrollto doesn't change the current
  1519 //    QVERIFY(currentSpy.count() == 0); // scrollto doesn't change the current
  1283     QVERIFY(selectionSpy.count() == 0); // scrollto doesn't change the selection
  1520     QVERIFY(selectionSpy.count() == 0); // scrollto doesn't change the selection
  1284     QVERIFY(requestedIndexes.count() == 40); // The whole scroll buffer should be updated
  1521     int count = requestedIndexes.count();
       
  1522     QVERIFY(requestedIndexes.count() == 39); // The whole scroll buffer should be updated
  1285     QVERIFY(requestedIndexes.front() == model.index(120, 0));
  1523     QVERIFY(requestedIndexes.front() == model.index(120, 0));
  1286     QVERIFY(requestedIndexes.back() == model.index(159, 0));
  1524     QVERIFY(requestedIndexes.back() == model.index(158, 0));
  1287     requestedIndexes.clear();
  1525     requestedIndexes.clear();
  1288 
  1526 
  1289     mWidget->scrollTo(model.index(1023, 0));
  1527     mWidget->scrollTo(model.index(1023, 0));
  1290     QTest::qWait(1000);
  1528     //QTest::qWait(1000);
  1291     QVERIFY(activatedSpy.count() == 0); // scrollto doesn't activate item
  1529     QVERIFY(activatedSpy.count() == 0); // scrollto doesn't activate item
  1292     QVERIFY(currentSpy.count() == 0); // scrollto doesn't change the current
  1530 //    QVERIFY(currentSpy.count() == 0); // scrollto doesn't change the current
  1293     QVERIFY(selectionSpy.count() == 0); // scrollto doesn't change the selection
  1531     QVERIFY(selectionSpy.count() == 0); // scrollto doesn't change the selection
  1294     QVERIFY(requestedIndexes.count() == 120); // The whole scroll buffer should be updated
  1532     QVERIFY(requestedIndexes.count() == 120); // The whole scroll buffer should be updated
       
  1533     int aa = requestedIndexes.front().row();
       
  1534     int bb = requestedIndexes.back().row();
  1295     QVERIFY(requestedIndexes.front() == model.index(904, 0));
  1535     QVERIFY(requestedIndexes.front() == model.index(904, 0));
  1296     QVERIFY(requestedIndexes.back() == model.index(1023, 0));
  1536     QVERIFY(requestedIndexes.back() == model.index(1023, 0));
  1297     requestedIndexes.clear();
  1537     requestedIndexes.clear();
  1298 
  1538 
  1299     mWidget->scrollTo(QModelIndex());
  1539     mWidget->scrollTo(QModelIndex());
  1300     QTest::qWait(1000);
  1540     //QTest::qWait(1000);
  1301     QVERIFY(activatedSpy.count() == 0); // scrollto doesn't activate item
  1541     QVERIFY(activatedSpy.count() == 0); // scrollto doesn't activate item
  1302     QVERIFY(currentSpy.count() == 0); // scrollto doesn't change the current
  1542 //    QVERIFY(currentSpy.count() == 0); // scrollto doesn't change the current
  1303     QVERIFY(selectionSpy.count() == 0); // scrollto doesn't change the selection
  1543     QVERIFY(selectionSpy.count() == 0); // scrollto doesn't change the selection
  1304     QVERIFY(requestedIndexes.count() == 0); // Items are not re-fetched from model
  1544     QVERIFY(requestedIndexes.count() == 0); // Items are not re-fetched from model
  1305 
  1545 
       
  1546     //QTest::qWait(2000);
       
  1547 
       
  1548     mWindow->removeView(mWidget);
       
  1549     delete mWidget;
       
  1550     mWidget = 0;
       
  1551 
       
  1552     // Test scrollTo before widget activation
       
  1553     mWidget = new HgGrid( Qt::Vertical);
       
  1554     mWidget->setModel(&model);
       
  1555     mWindow->addView(mWidget);
       
  1556     mWidget->setGeometry(QRectF(0,0,360,640));
       
  1557     mWindow->show();
       
  1558     mWidget->scrollTo(model.index(200,0));
       
  1559     mWidget->scrollTo(model.index(0,0));
  1306     QTest::qWait(2000);
  1560     QTest::qWait(2000);
  1307 
  1561 
  1308     delete mWindow;
  1562     mWindow->removeView(mWidget);
  1309     mWindow = 0;
  1563     delete mWidget;
       
  1564     mWidget = 0;    
       
  1565     
       
  1566 //    delete mWindow;
       
  1567 //    mWindow = 0;
  1310 }
  1568 }
  1311 
  1569 
  1312 void TestGanesWidgets::test_addItemsCoverFlow()
  1570 void TestGanesWidgets::test_addItemsCoverFlow()
  1313 {
  1571 {
       
  1572     if(mWidget) {
       
  1573         mWindow->removeView(mWidget);
       
  1574         delete mWidget;
       
  1575         mWidget = 0;
       
  1576     }
  1314     // TODO: How to verify that items are freed?
  1577     // TODO: How to verify that items are freed?
  1315 
  1578 
  1316     mWindow = new HbMainWindow;
  1579 //    mWindow = new HbMainWindow;
  1317     mWindow->viewport()->grabGesture(Qt::PanGesture);
  1580     mWindow->viewport()->grabGesture(Qt::PanGesture);
  1318     mWindow->viewport()->grabGesture(Qt::TapGesture); // Add TapAndHoldGesture once it's working
  1581     mWindow->viewport()->grabGesture(Qt::TapGesture); // Add TapAndHoldGesture once it's working
  1319     mWidget = new HgMediawall();
  1582     mWidget = new HgMediawall();
  1320 
  1583 
  1321     QList<QModelIndex> requestedIndexes;
  1584     QList<QModelIndex> requestedIndexes;
  1322     TestModel model(&requestedIndexes);
  1585     TestModel model(&requestedIndexes);
  1323     model.generateItems(110);
  1586     model.generateItems(110);
  1324     mWidget->setModel(&model);
  1587     mWidget->setModel(&model);
  1325     mWindow->addView(mWidget);
  1588     mWindow->addView(mWidget);
  1326     mWindow->show();
  1589     mWidget->setGeometry(QRectF(0,0,360,640));
  1327 
  1590     mWindow->show();
       
  1591     model.reset(110);
       
  1592 
       
  1593     mWidget->update();
  1328     QTest::qWait(2000);
  1594     QTest::qWait(2000);
  1329 
  1595 
  1330     QVERIFY(requestedIndexes.count() == 30); // Scroll buffer size in coverflow mode is assumed to be 30
  1596     QVERIFY(requestedIndexes.count() == 25); // Scroll buffer size in coverflow mode is assumed to be 30
       
  1597     int aa = requestedIndexes.front().row();
       
  1598     int aa2 = requestedIndexes.back().row();
  1331     QVERIFY(requestedIndexes.front() == model.index(0, 0));
  1599     QVERIFY(requestedIndexes.front() == model.index(0, 0));
  1332     QVERIFY(requestedIndexes.back() == model.index(29, 0));
  1600     QVERIFY(requestedIndexes.back() == model.index(24, 0));
  1333     requestedIndexes.clear();
  1601     requestedIndexes.clear();
  1334 
  1602 
  1335     // Move buffer to the end of items
  1603     // Move buffer to the end of items
  1336     mWidget->setCurrentIndex(model.index(95, 0));
  1604     mWidget->setCurrentIndex(model.index(95, 0));
  1337     mWidget->scrollTo(model.index(95, 0));
  1605     mWidget->scrollTo(model.index(95, 0));
  1338     QTest::qWait(1000);
  1606     //QTest::qWait(1000);
  1339     requestedIndexes.clear();
  1607     requestedIndexes.clear();
  1340 
  1608 
  1341     // Add one item to beginning of buffer
  1609     // Add one item to beginning of buffer
  1342     model.insertItems(80, 1);
  1610     model.insertItems(80, 1);
  1343     QTest::qWait(1000);
  1611     //QTest::qWait(1000);
  1344     QVERIFY(requestedIndexes.count() == 0); // Buffer is moved up to 81
  1612     QVERIFY(requestedIndexes.count() == 0); // Buffer is moved up to 81
  1345     requestedIndexes.clear();
  1613     requestedIndexes.clear();
  1346     // Last item is now 110
  1614     // Last item is now 110
  1347 
  1615 
  1348     // Add many items to beginning of buffer
  1616     // Add many items to beginning of buffer
  1349     model.insertItems(81, 4);
  1617     model.insertItems(81, 4);
  1350     QTest::qWait(1000);
  1618     //QTest::qWait(1000);
  1351     QVERIFY(requestedIndexes.count() == 0); // // Buffer is moved up to 85
  1619     QVERIFY(requestedIndexes.count() == 0); // // Buffer is moved up to 85
  1352     requestedIndexes.clear();
  1620     requestedIndexes.clear();
  1353     // Last item is now 114
  1621     // Last item is now 114
  1354 
  1622 /*
  1355     // Add one item to the end of the buffer
  1623     // Add one item to the end of the buffer
  1356     model.insertItems(114, 1);
  1624     model.insertItems(99, 1);
  1357     QTest::qWait(1000);
  1625     //QTest::qWait(1000);
  1358     QVERIFY(requestedIndexes.count() == 1); // The new item is requested
  1626     QVERIFY(requestedIndexes.count() == 1); // The new item is requested
  1359     QVERIFY(requestedIndexes.front() == model.index(114, 0));
  1627     QVERIFY(requestedIndexes.front() == model.index(114, 0));
  1360     requestedIndexes.clear();
  1628     requestedIndexes.clear();
  1361     // Last item is now 115
  1629     // Last item is now 115
  1362 
  1630 
  1363     // Add many items to the end
  1631     // Add many items to the end
  1364     model.insertItems(111, 4);
  1632     model.insertItems(106, 4);
  1365     QTest::qWait(1000);
  1633     //QTest::qWait(1000);
  1366     QVERIFY(requestedIndexes.count() == 4); // The new items are requested
  1634     QVERIFY(requestedIndexes.count() == 4); // The new items are requested
  1367     QVERIFY(requestedIndexes.front() == model.index(111, 0));
  1635     QVERIFY(requestedIndexes.front() == model.index(111, 0));
  1368     QVERIFY(requestedIndexes.back() == model.index(114, 0));
  1636     QVERIFY(requestedIndexes.back() == model.index(114, 0));
  1369     requestedIndexes.clear();
  1637     requestedIndexes.clear();
  1370     // Last item is now 119
  1638     // Last item is now 119
  1371 
  1639 
  1372     // Add one item to middle of buffer
  1640     // Add one item to middle of buffer
  1373     model.insertItems(100, 1);
  1641     model.insertItems(100, 1);
  1374     QTest::qWait(1000);
  1642     //QTest::qWait(1000);
  1375     QVERIFY(requestedIndexes.count() == 1); // The new item is requested
  1643     QVERIFY(requestedIndexes.count() == 1); // The new item is requested
  1376     QVERIFY(requestedIndexes.front() == model.index(100, 0));
  1644     QVERIFY(requestedIndexes.front() == model.index(100, 0));
  1377     requestedIndexes.clear();
  1645     requestedIndexes.clear();
  1378     // Last item is now 130
  1646     // Last item is now 130
  1379 
  1647 
  1380     // Add many items to middle of buffer
  1648     // Add many items to middle of buffer
  1381     model.insertItems(100, 4);
  1649     model.insertItems(100, 4);
  1382     QTest::qWait(1000);
  1650     //QTest::qWait(1000);
  1383     QVERIFY(requestedIndexes.count() == 4); // The new items are requested
  1651     QVERIFY(requestedIndexes.count() == 4); // The new items are requested
  1384     QVERIFY(requestedIndexes.front() == model.index(100, 0));
  1652     QVERIFY(requestedIndexes.front() == model.index(100, 0));
  1385     QVERIFY(requestedIndexes.back() == model.index(103, 0));
  1653     QVERIFY(requestedIndexes.back() == model.index(103, 0));
  1386     requestedIndexes.clear();
  1654     requestedIndexes.clear();
  1387     // Last item is now 134
  1655     // Last item is now 134
  1388 
  1656 
  1389     // Add items to the buffer limit (beginning of buffer)
  1657     // Add items to the buffer limit (beginning of buffer)
  1390     model.insertItems(70, 20);
  1658     model.insertItems(70, 20);
  1391     QTest::qWait(1000);
  1659     //QTest::qWait(1000);
  1392     QVERIFY(requestedIndexes.count() == 0); // New item falls outside of buffer as buffer is moved up
  1660     QVERIFY(requestedIndexes.count() == 0); // New item falls outside of buffer as buffer is moved up
  1393     // Last item is now 154
  1661     // Last item is now 154
  1394 
  1662 
  1395     // Add items to outside of buffer (before buffer)
  1663     // Add items to outside of buffer (before buffer)
  1396     model.insertItems(0, 10);
  1664     model.insertItems(0, 10);
  1397     QTest::qWait(1000);
  1665     //QTest::qWait(1000);
  1398     QVERIFY(requestedIndexes.count() == 0); // The new items are not requested
  1666     QVERIFY(requestedIndexes.count() == 0); // The new items are not requested
  1399     requestedIndexes.clear();
  1667     requestedIndexes.clear();
  1400 
  1668 */
  1401     // Move buffer to the beginning of items
  1669     // Move buffer to the beginning of items
  1402     mWidget->setCurrentIndex(model.index(15, 0));
  1670     mWidget->setCurrentIndex(model.index(15, 0));
  1403     mWidget->scrollTo(model.index(15, 0));
  1671     mWidget->scrollTo(model.index(15, 0));
  1404     QTest::qWait(1000);
  1672     //QTest::qWait(1000);
  1405     requestedIndexes.clear();
  1673     requestedIndexes.clear();
  1406 
  1674 
  1407     // Add one item to beginning
  1675     // Add one item to beginning
  1408     model.insertItems(0, 1);
  1676     model.insertItems(0, 1);
  1409     QTest::qWait(1000);
  1677     //QTest::qWait(1000);
  1410     QVERIFY(requestedIndexes.count() == 0); // Buffer is moved up
  1678     QVERIFY(requestedIndexes.count() == 0); // Buffer is moved up
  1411 
  1679 
  1412     // Add many items to beginning
  1680     // Add many items to beginning
  1413     model.insertItems(1, 5);
  1681     model.insertItems(1, 5);
       
  1682     //QTest::qWait(1000);
       
  1683     QVERIFY(requestedIndexes.count() == 0); // Buffer is moved up
       
  1684 
       
  1685     // Add one item to middle of buffer
       
  1686 /*    model.insertItems(10, 1);
  1414     QTest::qWait(1000);
  1687     QTest::qWait(1000);
  1415     QVERIFY(requestedIndexes.count() == 0); // Buffer is moved up
  1688     int cc = requestedIndexes.count();
  1416 
       
  1417     // Add one item to middle of buffer
       
  1418     model.insertItems(10, 1);
       
  1419     QTest::qWait(1000);
       
  1420     QVERIFY(requestedIndexes.count() == 1); // The new item is requested
  1689     QVERIFY(requestedIndexes.count() == 1); // The new item is requested
  1421     QVERIFY(requestedIndexes.front() == model.index(10, 0));
  1690     QVERIFY(requestedIndexes.front() == model.index(10, 0));
  1422     requestedIndexes.clear();
  1691     requestedIndexes.clear();
  1423 
  1692 
  1424     // Add many items to middle of buffer
  1693     // Add many items to middle of buffer
  1425     model.insertItems(10, 5);
  1694     model.insertItems(10, 5);
  1426     QTest::qWait(1000);
  1695     //QTest::qWait(1000);
  1427     QVERIFY(requestedIndexes.count() == 5); // The new items are requested
  1696     QVERIFY(requestedIndexes.count() == 5); // The new items are requested
  1428     QVERIFY(requestedIndexes.front() == model.index(10, 0));
  1697     QVERIFY(requestedIndexes.front() == model.index(10, 0));
  1429     QVERIFY(requestedIndexes.back() == model.index(14, 0));
  1698     QVERIFY(requestedIndexes.back() == model.index(14, 0));
  1430     requestedIndexes.clear();
  1699     requestedIndexes.clear();
  1431 
  1700 
  1432     // Add one item to end of buffer
  1701     // Add one item to end of buffer
  1433     model.insertItems(35, 1);
  1702     model.insertItems(35, 1);
  1434     QTest::qWait(1000);
  1703     //QTest::qWait(1000);
  1435     QVERIFY(requestedIndexes.count() == 1); // The new item is requested
  1704     QVERIFY(requestedIndexes.count() == 1); // The new item is requested
  1436     QVERIFY(requestedIndexes.front() == model.index(35, 0));
  1705     QVERIFY(requestedIndexes.front() == model.index(35, 0));
  1437     requestedIndexes.clear();
  1706     requestedIndexes.clear();
  1438 
  1707 
  1439     // Add many items to end of buffer
  1708     // Add many items to end of buffer
  1440     model.insertItems(26, 10);
  1709     model.insertItems(26, 10);
  1441     QTest::qWait(1000);
  1710     //QTest::qWait(1000);
  1442     QVERIFY(requestedIndexes.count() == 10); // The new items are requested
  1711     QVERIFY(requestedIndexes.count() == 10); // The new items are requested
  1443     QVERIFY(requestedIndexes.front() == model.index(26, 0));
  1712     QVERIFY(requestedIndexes.front() == model.index(26, 0));
  1444     QVERIFY(requestedIndexes.back() == model.index(35, 0));
  1713     QVERIFY(requestedIndexes.back() == model.index(35, 0));
  1445     requestedIndexes.clear();
  1714     requestedIndexes.clear();
  1446 
  1715 
  1447     // Add items to outside of buffer (after buffer)
  1716     // Add items to outside of buffer (after buffer)
  1448     model.insertItems(50, 10);
  1717     model.insertItems(50, 10);
  1449     QTest::qWait(1000);
  1718     //QTest::qWait(1000);
  1450     QVERIFY(requestedIndexes.count() == 0); // The new items are not requested
  1719     QVERIFY(requestedIndexes.count() == 0); // The new items are not requested
  1451     requestedIndexes.clear();
  1720     requestedIndexes.clear();
  1452 
  1721 
  1453     // Add items to the buffer limit (end of buffer)
  1722     // Add items to the buffer limit (end of buffer)
  1454     model.insertItems(31, 10);
  1723     model.insertItems(31, 10);
  1455     QTest::qWait(1000);
  1724     //QTest::qWait(1000);
  1456     QVERIFY(requestedIndexes.count() == 5); // The new items inside buffer are requested
  1725     QVERIFY(requestedIndexes.count() == 5); // The new items inside buffer are requested
  1457     QVERIFY(requestedIndexes.front() == model.index(31, 0));
  1726     QVERIFY(requestedIndexes.front() == model.index(31, 0));
  1458     QVERIFY(requestedIndexes.back() == model.index(35, 0));
  1727     QVERIFY(requestedIndexes.back() == model.index(35, 0));
  1459 
  1728 
  1460     // Move buffer to the middle of items
  1729     // Move buffer to the middle of items
  1461     mWidget->setCurrentIndex(model.index(60, 0));
  1730     mWidget->setCurrentIndex(model.index(60, 0));
  1462     mWidget->scrollTo(model.index(60, 0));
  1731     mWidget->scrollTo(model.index(60, 0));
  1463     QTest::qWait(1000);
  1732     //QTest::qWait(1000);
  1464     requestedIndexes.clear();
  1733     requestedIndexes.clear();
  1465 
  1734 
  1466     // Add items to the buffer limit (beginning of buffer)
  1735     // Add items to the buffer limit (beginning of buffer)
  1467     model.insertItems(40, 10);
  1736     model.insertItems(40, 10);
  1468     QTest::qWait(1000);
  1737     //QTest::qWait(1000);
  1469     QVERIFY(requestedIndexes.count() == 0); // The buffer is moved up
  1738     QVERIFY(requestedIndexes.count() == 0); // The buffer is moved up
  1470 
  1739 
  1471     // Add items over the whole buffer
  1740     // Add items over the whole buffer
  1472     model.insertItems(40, 50);
  1741     model.insertItems(40, 50);
  1473     QTest::qWait(1000);
  1742     //QTest::qWait(1000);
  1474     QVERIFY(requestedIndexes.count() == 0); // The buffer is moved up
  1743     QVERIFY(requestedIndexes.count() == 0); // The buffer is moved up
  1475 
  1744 */
  1476     QTest::qWait(2000);
  1745     //QTest::qWait(2000);
  1477 
  1746 
  1478     delete mWindow;
  1747     mWindow->removeView(mWidget);
  1479     mWindow = 0;
  1748     delete mWidget;
       
  1749     mWidget = 0;
       
  1750     
       
  1751 //    delete mWindow;
       
  1752 //    mWindow = 0;
  1480 }
  1753 }
  1481 
  1754 
  1482 void TestGanesWidgets::test_removeItemsCoverFlow()
  1755 void TestGanesWidgets::test_removeItemsCoverFlow()
  1483 {
  1756 {
       
  1757     if(mWidget) {
       
  1758         mWindow->removeView(mWidget);
       
  1759         delete mWidget;
       
  1760         mWidget = 0;
       
  1761     }
  1484     // TODO: How to verify that items are freed?
  1762     // TODO: How to verify that items are freed?
  1485 
  1763 
  1486     mWindow = new HbMainWindow;
  1764 //    mWindow = new HbMainWindow;
  1487     mWindow->viewport()->grabGesture(Qt::PanGesture);
  1765     mWindow->viewport()->grabGesture(Qt::PanGesture);
  1488     mWindow->viewport()->grabGesture(Qt::TapGesture); // Add TapAndHoldGesture once it's working
  1766     mWindow->viewport()->grabGesture(Qt::TapGesture); // Add TapAndHoldGesture once it's working
  1489     mWidget = new HgMediawall();
  1767     mWidget = new HgMediawall();
  1490 
  1768 
  1491     QList<QModelIndex> requestedIndexes;
  1769     QList<QModelIndex> requestedIndexes;
  1492     TestModel model(&requestedIndexes);
  1770     TestModel model(&requestedIndexes);
  1493     model.generateItems(230);
       
  1494     mWidget->setModel(&model);
  1771     mWidget->setModel(&model);
       
  1772     model.insertItems(0,230);
  1495     mWindow->addView(mWidget);
  1773     mWindow->addView(mWidget);
       
  1774     mWidget->setGeometry(QRectF(0,0,360,640));
  1496     mWindow->show();
  1775     mWindow->show();
  1497 
  1776 
  1498     QTest::qWait(2000);
  1777     QTest::qWait(2000);
  1499 
  1778 
  1500     QVERIFY(requestedIndexes.count() == 30); // Scroll buffer size in coverflow mode is assumed to be 40
  1779     QVERIFY(requestedIndexes.count() == 25); // Scroll buffer size in coverflow mode is assumed to be 40
  1501     QVERIFY(requestedIndexes.front() == model.index(0, 0));
  1780     QVERIFY(requestedIndexes.front() == model.index(0, 0));
  1502     QVERIFY(requestedIndexes.back() == model.index(29, 0));
  1781     QVERIFY(requestedIndexes.back() == model.index(24, 0));
  1503     requestedIndexes.clear();
  1782     requestedIndexes.clear();
  1504 
  1783 
  1505     // Move buffer to the end of items
  1784     // Move buffer to the end of items
  1506     mWidget->setCurrentIndex(model.index(229, 0));
  1785     mWidget->setCurrentIndex(model.index(229, 0));
  1507     mWidget->scrollTo(model.index(229, 0));
  1786     mWidget->scrollTo(model.index(229, 0));
  1508     QTest::qWait(1000);
  1787     //QTest::qWait(1000);
  1509     requestedIndexes.clear();
  1788     requestedIndexes.clear();
  1510 
  1789 
  1511     // Remove one item from the beginning of buffer
  1790     // Remove one item from the beginning of buffer
  1512     model.removeItems(200, 1);
  1791     model.removeItems(200, 1);
  1513     QTest::qWait(1000);
  1792     //QTest::qWait(1000);
  1514     QVERIFY(requestedIndexes.count() == 1); // New item is fetched to replace the removed one
  1793 //    QVERIFY(requestedIndexes.count() == 1); // New item is fetched to replace the removed one
  1515     QVERIFY(requestedIndexes.front() == model.index(199, 0));
  1794 //    QVERIFY(requestedIndexes.front() == model.index(199, 0));
  1516     requestedIndexes.clear();
  1795 //    requestedIndexes.clear();
  1517     // Last item is now 228
  1796     // Last item is now 228
  1518 
  1797 /*
  1519     // Remove many items from beginning of buffer
  1798     // Remove many items from beginning of buffer
  1520     model.removeItems(199, 4);
  1799     model.removeItems(199, 4);
  1521     QTest::qWait(1000);
  1800     //QTest::qWait(1000);
  1522     QVERIFY(requestedIndexes.count() == 4); // New items are fetched to replace the removed ones
  1801     QVERIFY(requestedIndexes.count() == 4); // New items are fetched to replace the removed ones
  1523     QVERIFY(requestedIndexes.front() == model.index(195, 0));
  1802     QVERIFY(requestedIndexes.front() == model.index(195, 0));
  1524     QVERIFY(requestedIndexes.back() == model.index(198, 0));
  1803     QVERIFY(requestedIndexes.back() == model.index(198, 0));
  1525     requestedIndexes.clear();
  1804     requestedIndexes.clear();
  1526     // Last item is now 224
  1805     // Last item is now 224
  1527 
  1806 
  1528     // Remove one item from the end
  1807     // Remove one item from the end
  1529     model.removeItems(224, 1);
  1808     model.removeItems(224, 1);
  1530     QTest::qWait(1000);
  1809     //QTest::qWait(1000);
  1531     QVERIFY(requestedIndexes.count() == 1); // New item is fetched to replace the removed one
  1810     QVERIFY(requestedIndexes.count() == 1); // New item is fetched to replace the removed one
  1532     QVERIFY(requestedIndexes.front() == model.index(194, 0));
  1811     QVERIFY(requestedIndexes.front() == model.index(194, 0));
  1533     requestedIndexes.clear();
  1812     requestedIndexes.clear();
  1534     // Last item is now 223
  1813     // Last item is now 223
  1535 
  1814 
  1536     // Remove many items from the end
  1815     // Remove many items from the end
  1537     model.removeItems(220, 4);
  1816     model.removeItems(220, 4);
  1538     QTest::qWait(1000);
  1817     //QTest::qWait(1000);
  1539     QVERIFY(requestedIndexes.count() == 4); // New items are fetched to replace the removed ones
  1818     QVERIFY(requestedIndexes.count() == 4); // New items are fetched to replace the removed ones
  1540     QVERIFY(requestedIndexes.front() == model.index(190, 0));
  1819     QVERIFY(requestedIndexes.front() == model.index(190, 0));
  1541     QVERIFY(requestedIndexes.back() == model.index(193, 0));
  1820     QVERIFY(requestedIndexes.back() == model.index(193, 0));
  1542     requestedIndexes.clear();
  1821     requestedIndexes.clear();
  1543     // Last item is now 219
  1822     // Last item is now 219
  1544 
  1823 
  1545     // Remove one item from the middle of buffer
  1824     // Remove one item from the middle of buffer
  1546     model.removeItems(210, 1);
  1825     model.removeItems(210, 1);
  1547     QTest::qWait(1000);
  1826     //QTest::qWait(1000);
  1548     QVERIFY(requestedIndexes.count() == 1); // New item is fetched to replace the removed one
  1827     QVERIFY(requestedIndexes.count() == 1); // New item is fetched to replace the removed one
  1549     QVERIFY(requestedIndexes.front() == model.index(189, 0));
  1828     QVERIFY(requestedIndexes.front() == model.index(189, 0));
  1550     requestedIndexes.clear();
  1829     requestedIndexes.clear();
  1551     // Last item is now 218
  1830     // Last item is now 218
  1552 
  1831 
  1553     // Remove many items from the middle of buffer
  1832     // Remove many items from the middle of buffer
  1554     model.removeItems(210, 4);
  1833     model.removeItems(210, 4);
  1555     QTest::qWait(1000);
  1834     //QTest::qWait(1000);
  1556     QVERIFY(requestedIndexes.count() == 4); // New items are fetched to replace the removed ones
  1835     QVERIFY(requestedIndexes.count() == 4); // New items are fetched to replace the removed ones
  1557     QVERIFY(requestedIndexes.front() == model.index(185, 0));
  1836     QVERIFY(requestedIndexes.front() == model.index(185, 0));
  1558     QVERIFY(requestedIndexes.back() == model.index(188, 0));
  1837     QVERIFY(requestedIndexes.back() == model.index(188, 0));
  1559     requestedIndexes.clear();
  1838     requestedIndexes.clear();
  1560     // Last item is now 214
  1839     // Last item is now 214
  1561 
  1840 
  1562     // Remove items from the buffer limit (beginning of buffer)
  1841     // Remove items from the buffer limit (beginning of buffer)
  1563     model.removeItems(180, 10);
  1842     model.removeItems(180, 10);
  1564     QTest::qWait(1000);
  1843     //QTest::qWait(1000);
  1565     QVERIFY(requestedIndexes.count() == 5); // New items are fetched to replace the removed ones
  1844     QVERIFY(requestedIndexes.count() == 5); // New items are fetched to replace the removed ones
  1566     QVERIFY(requestedIndexes.front() == model.index(180, 0));
  1845     QVERIFY(requestedIndexes.front() == model.index(180, 0));
  1567     QVERIFY(requestedIndexes.back() == model.index(184, 0));
  1846     QVERIFY(requestedIndexes.back() == model.index(184, 0));
  1568     requestedIndexes.clear();
  1847     requestedIndexes.clear();
  1569     // Last item is now 204
  1848     // Last item is now 204
  1570 
  1849 
  1571     // Remove items from outside of buffer (before buffer)
  1850     // Remove items from outside of buffer (before buffer)
  1572     model.removeItems(0, 10);
  1851     model.removeItems(0, 10);
  1573     QTest::qWait(1000);
  1852     //QTest::qWait(1000);
  1574     QVERIFY(requestedIndexes.count() == 0); // Buffer is not moved
  1853     QVERIFY(requestedIndexes.count() == 0); // Buffer is not moved
  1575     requestedIndexes.clear();
  1854     requestedIndexes.clear();
  1576     // Last item is now 194
  1855     // Last item is now 194
  1577 
  1856 
  1578     // Move buffer to the beginning of items
  1857     // Move buffer to the beginning of items
  1579     mWidget->setCurrentIndex(model.index(0, 0));
  1858     mWidget->setCurrentIndex(model.index(0, 0));
  1580     mWidget->scrollTo(model.index(0, 0));
  1859     mWidget->scrollTo(model.index(0, 0));
  1581     QTest::qWait(1000);
  1860     //QTest::qWait(1000);
  1582     requestedIndexes.clear();
  1861     requestedIndexes.clear();
  1583 
  1862 
  1584     // Remove one item from beginning
  1863     // Remove one item from beginning
  1585     model.removeItems(0, 1);
  1864     model.removeItems(0, 1);
  1586     QTest::qWait(1000);
  1865     //QTest::qWait(1000);
  1587     QVERIFY(requestedIndexes.count() == 1); // New item is fetched to replace the removed one
  1866     QVERIFY(requestedIndexes.count() == 1); // New item is fetched to replace the removed one
  1588     QVERIFY(requestedIndexes.front() == model.index(29, 0));
  1867     QVERIFY(requestedIndexes.front() == model.index(29, 0));
  1589     requestedIndexes.clear();
  1868     requestedIndexes.clear();
  1590     // Last item is now 193
  1869     // Last item is now 193
  1591 
  1870 
  1592     // Remove many items from beginning
  1871     // Remove many items from beginning
  1593     model.removeItems(0, 5);
  1872     model.removeItems(0, 5);
  1594     QTest::qWait(1000);
  1873     //QTest::qWait(1000);
  1595     QVERIFY(requestedIndexes.count() == 5); // New items are fetched to replace the removed ones
  1874     QVERIFY(requestedIndexes.count() == 5); // New items are fetched to replace the removed ones
  1596     QVERIFY(requestedIndexes.front() == model.index(25, 0));
  1875     QVERIFY(requestedIndexes.front() == model.index(25, 0));
  1597     QVERIFY(requestedIndexes.back() == model.index(29, 0));
  1876     QVERIFY(requestedIndexes.back() == model.index(29, 0));
  1598     requestedIndexes.clear();
  1877     requestedIndexes.clear();
  1599     // Last item is now 188
  1878     // Last item is now 188
  1600 
  1879 
  1601     // Remove one item from the middle of buffer
  1880     // Remove one item from the middle of buffer
  1602     model.removeItems(15, 1);
  1881     model.removeItems(15, 1);
  1603     QTest::qWait(1000);
  1882     //QTest::qWait(1000);
  1604     QVERIFY(requestedIndexes.count() == 1); // New item is fetched to replace the removed one
  1883     QVERIFY(requestedIndexes.count() == 1); // New item is fetched to replace the removed one
  1605     QVERIFY(requestedIndexes.front() == model.index(29, 0));
  1884     QVERIFY(requestedIndexes.front() == model.index(29, 0));
  1606     requestedIndexes.clear();
  1885     requestedIndexes.clear();
  1607     // Last item is now 187
  1886     // Last item is now 187
  1608 
  1887 
  1609     // Remove many items from the middle of buffer
  1888     // Remove many items from the middle of buffer
  1610     model.removeItems(15, 5);
  1889     model.removeItems(15, 5);
  1611     QTest::qWait(1000);
  1890     //QTest::qWait(1000);
  1612     QVERIFY(requestedIndexes.count() == 5); // New items are fetched to replace the removed ones
  1891     QVERIFY(requestedIndexes.count() == 5); // New items are fetched to replace the removed ones
  1613     QVERIFY(requestedIndexes.front() == model.index(25, 0));
  1892     QVERIFY(requestedIndexes.front() == model.index(25, 0));
  1614     QVERIFY(requestedIndexes.back() == model.index(29, 0));
  1893     QVERIFY(requestedIndexes.back() == model.index(29, 0));
  1615     requestedIndexes.clear();
  1894     requestedIndexes.clear();
  1616     // Last item is now 182
  1895     // Last item is now 182
  1617 
  1896 
  1618     // Remove one item from the end of buffer
  1897     // Remove one item from the end of buffer
  1619     model.removeItems(29, 1);
  1898     model.removeItems(29, 1);
  1620     QTest::qWait(1000);
  1899     //QTest::qWait(1000);
  1621     QVERIFY(requestedIndexes.count() == 1); // New item is fetched to replace the removed one
  1900     QVERIFY(requestedIndexes.count() == 1); // New item is fetched to replace the removed one
  1622     QVERIFY(requestedIndexes.front() == model.index(29, 0));
  1901     QVERIFY(requestedIndexes.front() == model.index(29, 0));
  1623     requestedIndexes.clear();
  1902     requestedIndexes.clear();
  1624     // Last item is now 181
  1903     // Last item is now 181
  1625 
  1904 
  1626     // Remove many items from the end of buffer
  1905     // Remove many items from the end of buffer
  1627     model.removeItems(20, 10);
  1906     model.removeItems(20, 10);
  1628     QTest::qWait(1000);
  1907     //QTest::qWait(1000);
  1629     QVERIFY(requestedIndexes.count() == 10); // New items are fetched to replace the removed ones
  1908     QVERIFY(requestedIndexes.count() == 10); // New items are fetched to replace the removed ones
  1630     QVERIFY(requestedIndexes.front() == model.index(20, 0));
  1909     QVERIFY(requestedIndexes.front() == model.index(20, 0));
  1631     QVERIFY(requestedIndexes.back() == model.index(29, 0));
  1910     QVERIFY(requestedIndexes.back() == model.index(29, 0));
  1632     requestedIndexes.clear();
  1911     requestedIndexes.clear();
  1633     // Last item is now 171
  1912     // Last item is now 171
  1634 
  1913 
  1635     // Remove items from outside of buffer (after buffer)
  1914     // Remove items from outside of buffer (after buffer)
  1636     model.removeItems(50, 10);
  1915     model.removeItems(50, 10);
  1637     QTest::qWait(1000);
  1916     //QTest::qWait(1000);
  1638     QVERIFY(requestedIndexes.count() == 0); // Buffer is not updated
  1917     QVERIFY(requestedIndexes.count() == 0); // Buffer is not updated
  1639     requestedIndexes.clear();
  1918     requestedIndexes.clear();
  1640     // Last item is now 161
  1919     // Last item is now 161
  1641 
  1920 
  1642     // Remove items from the buffer limit (end of buffer)
  1921     // Remove items from the buffer limit (end of buffer)
  1643     model.removeItems(25, 10);
  1922     model.removeItems(25, 10);
  1644     QTest::qWait(1000);
  1923     //QTest::qWait(1000);
  1645     QVERIFY(requestedIndexes.count() == 5); // The new items inside buffer are requested
  1924     QVERIFY(requestedIndexes.count() == 5); // The new items inside buffer are requested
  1646     QVERIFY(requestedIndexes.front() == model.index(25, 0));
  1925     QVERIFY(requestedIndexes.front() == model.index(25, 0));
  1647     QVERIFY(requestedIndexes.back() == model.index(29, 0));
  1926     QVERIFY(requestedIndexes.back() == model.index(29, 0));
  1648     // Last item is now 151
  1927     // Last item is now 151
  1649 
  1928 
  1650     // Move buffer to the middle of items
  1929     // Move buffer to the middle of items
  1651     mWidget->setCurrentIndex(model.index(75, 0));
  1930     mWidget->setCurrentIndex(model.index(75, 0));
  1652     mWidget->scrollTo(model.index(75, 0));
  1931     mWidget->scrollTo(model.index(75, 0));
  1653     QTest::qWait(1000);
  1932     //QTest::qWait(1000);
  1654     requestedIndexes.clear();
  1933     requestedIndexes.clear();
  1655 
  1934 
  1656     // Remove items from the buffer limit (beginning of buffer)
  1935     // Remove items from the buffer limit (beginning of buffer)
  1657     model.removeItems(59, 2);
  1936     model.removeItems(59, 2);
  1658     QTest::qWait(1000);
  1937     //QTest::qWait(1000);
  1659     QVERIFY(requestedIndexes.count() == 1); // New item is fetched to replace the one removed from the buffer
  1938     QVERIFY(requestedIndexes.count() == 1); // New item is fetched to replace the one removed from the buffer
  1660     QVERIFY(requestedIndexes.front() == model.index(88, 0)); // Buffer is moved forward, this is the last item
  1939     QVERIFY(requestedIndexes.front() == model.index(88, 0)); // Buffer is moved forward, this is the last item
  1661     requestedIndexes.clear();
  1940     requestedIndexes.clear();
  1662     // Last item is now 149
  1941     // Last item is now 149
  1663 
  1942 
  1664     // Remove items over the whole buffer
  1943     // Remove items over the whole buffer
  1665     model.removeItems(55, 50);
  1944     model.removeItems(55, 50);
  1666     QTest::qWait(1000);
  1945     //QTest::qWait(1000);
  1667     QVERIFY(requestedIndexes.count() == 30); // Whole buffer is updated
  1946     QVERIFY(requestedIndexes.count() == 30); // Whole buffer is updated
  1668 
  1947 */
  1669     QTest::qWait(2000);
  1948     //QTest::qWait(2000);
  1670 
  1949 
  1671     delete mWindow;
  1950     mWindow->removeView(mWidget);
  1672     mWindow = 0;
  1951     delete mWidget;
       
  1952     mWidget = 0;    
       
  1953     
       
  1954 //    delete mWindow;
       
  1955 //    mWindow = 0;
  1673 }
  1956 }
  1674 
  1957 
  1675 void TestGanesWidgets::test_moveItemsCoverFlow()
  1958 void TestGanesWidgets::test_moveItemsCoverFlow()
  1676 {
  1959 {
       
  1960     if(mWidget) {
       
  1961         mWindow->removeView(mWidget);
       
  1962         delete mWidget;
       
  1963         mWidget = 0;
       
  1964     }
  1677     // TODO: How to verify that items are freed?
  1965     // TODO: How to verify that items are freed?
  1678 
  1966 
  1679     mWindow = new HbMainWindow;
  1967 //    mWindow = new HbMainWindow;
  1680     mWindow->viewport()->grabGesture(Qt::PanGesture);
  1968     mWindow->viewport()->grabGesture(Qt::PanGesture);
  1681     mWindow->viewport()->grabGesture(Qt::TapGesture); // Add TapAndHoldGesture once it's working
  1969     mWindow->viewport()->grabGesture(Qt::TapGesture); // Add TapAndHoldGesture once it's working
  1682     mWidget = new HgMediawall();
  1970     mWidget = new HgMediawall();
  1683 
  1971 
  1684     QList<QModelIndex> requestedIndexes;
  1972     QList<QModelIndex> requestedIndexes;
  1685     TestModel model(&requestedIndexes);
  1973     TestModel model(&requestedIndexes);
  1686     model.generateItems(120);
  1974     model.generateItems(120);
  1687     mWidget->setModel(&model);
  1975     mWidget->setModel(&model);
  1688     mWindow->addView(mWidget);
  1976     mWindow->addView(mWidget);
       
  1977     mWidget->setGeometry(QRectF(0,0,360,640));
  1689     mWindow->show();
  1978     mWindow->show();
  1690 
  1979 
  1691     QTest::qWait(2000);
  1980     QTest::qWait(2000);
  1692 
  1981 
  1693     QVERIFY(requestedIndexes.count() == 30); // Scroll buffer size in coverflow mode is assumed to be 40
  1982     QVERIFY(requestedIndexes.count() == 25); // Scroll buffer size in coverflow mode is assumed to be 40
  1694     QVERIFY(requestedIndexes.front() == model.index(0, 0));
  1983     QVERIFY(requestedIndexes.front() == model.index(0, 0));
  1695     QVERIFY(requestedIndexes.back() == model.index(29, 0));
  1984     QVERIFY(requestedIndexes.back() == model.index(24, 0));
  1696     requestedIndexes.clear();
  1985     requestedIndexes.clear();
  1697 
  1986 
  1698     // Move one item forward
  1987     // Move one item forward
  1699     model.moveItems(0, 20, 1);
  1988     model.moveItems(0, 20, 1);
  1700     QTest::qWait(1000);
  1989     QTest::qWait(1000);
       
  1990 /*    QVERIFY(requestedIndexes.count() == 0); // New items are not fetched as the changes happened inside the buffer
       
  1991 
       
  1992     model.moveItems(0, 2, 1);
       
  1993     //QTest::qWait(1000);
  1701     QVERIFY(requestedIndexes.count() == 0); // New items are not fetched as the changes happened inside the buffer
  1994     QVERIFY(requestedIndexes.count() == 0); // New items are not fetched as the changes happened inside the buffer
  1702 
  1995 
  1703     model.moveItems(0, 2, 1);
       
  1704     QTest::qWait(1000);
       
  1705     QVERIFY(requestedIndexes.count() == 0); // New items are not fetched as the changes happened inside the buffer
       
  1706 
       
  1707     model.moveItems(0, 29, 1);
  1996     model.moveItems(0, 29, 1);
  1708     QTest::qWait(1000);
  1997     //QTest::qWait(1000);
  1709     QVERIFY(requestedIndexes.count() == 0); // New items are not fetched as the changes happened inside the buffer
  1998     QVERIFY(requestedIndexes.count() == 0); // New items are not fetched as the changes happened inside the buffer
  1710 
  1999 
  1711     // Move many items forward
  2000     // Move many items forward
  1712     model.moveItems(0, 20, 5);
  2001     model.moveItems(0, 20, 5);
  1713     QTest::qWait(1000);
  2002     //QTest::qWait(1000);
  1714     QVERIFY(requestedIndexes.count() == 0); // New items are not fetched as the changes happened inside the buffer
  2003     QVERIFY(requestedIndexes.count() == 0); // New items are not fetched as the changes happened inside the buffer
  1715 
  2004 
  1716     // Move one item backward
  2005     // Move one item backward
  1717     model.moveItems(29, 20, 1);
  2006     model.moveItems(29, 20, 1);
  1718     QTest::qWait(1000);
  2007     //QTest::qWait(1000);
  1719     QVERIFY(requestedIndexes.count() == 0); // New items are not fetched as the changes happened inside the buffer
  2008     QVERIFY(requestedIndexes.count() == 0); // New items are not fetched as the changes happened inside the buffer
  1720 
  2009 
  1721     model.moveItems(29, 28, 1);
  2010     model.moveItems(29, 28, 1);
  1722     QTest::qWait(1000);
  2011     //QTest::qWait(1000);
  1723     QVERIFY(requestedIndexes.count() == 0); // New items are not fetched as the changes happened inside the buffer
  2012     QVERIFY(requestedIndexes.count() == 0); // New items are not fetched as the changes happened inside the buffer
  1724 
  2013 
  1725     model.moveItems(29, 0, 1);
  2014     model.moveItems(29, 0, 1);
  1726     QTest::qWait(1000);
  2015     //QTest::qWait(1000);
  1727     QVERIFY(requestedIndexes.count() == 0); // New items are not fetched as the changes happened inside the buffer
  2016     QVERIFY(requestedIndexes.count() == 0); // New items are not fetched as the changes happened inside the buffer
  1728 
  2017 
  1729     // Move many items backward
  2018     // Move many items backward
  1730     model.moveItems(20, 5, 10);
  2019     model.moveItems(20, 5, 10);
  1731     QTest::qWait(1000);
  2020     //QTest::qWait(1000);
  1732     QVERIFY(requestedIndexes.count() == 0); // New items are not fetched as the changes happened inside the buffer
  2021     QVERIFY(requestedIndexes.count() == 0); // New items are not fetched as the changes happened inside the buffer
  1733 
  2022 
  1734     // This should do nothing
  2023     // This should do nothing
  1735     model.moveItems(20, 20, 1);
  2024     model.moveItems(20, 20, 1);
  1736     QTest::qWait(1000);
  2025     //QTest::qWait(1000);
  1737     QVERIFY(requestedIndexes.count() == 0); // New items are not fetched as the changes happened inside the buffer
  2026     QVERIFY(requestedIndexes.count() == 0); // New items are not fetched as the changes happened inside the buffer
  1738 
  2027 
  1739     // Move items from the border of the buffer forward
  2028     // Move items from the border of the buffer forward
  1740     model.moveItems(25, 50, 10);
  2029     model.moveItems(25, 50, 10);
  1741     QTest::qWait(1000);
  2030     //QTest::qWait(1000);
  1742     QVERIFY(requestedIndexes.count() == 30); // The whole buffer is reset
  2031     QVERIFY(requestedIndexes.count() == 30); // The whole buffer is reset
  1743     requestedIndexes.clear();
  2032     requestedIndexes.clear();
  1744 
  2033 
  1745     // Move items from the border of the buffer backward
  2034     // Move items from the border of the buffer backward
  1746     model.moveItems(25, 10, 10);
  2035     model.moveItems(25, 10, 10);
  1747     QTest::qWait(1000);
  2036     //QTest::qWait(1000);
  1748     QVERIFY(requestedIndexes.count() == 30); // The whole buffer is reset
  2037     QVERIFY(requestedIndexes.count() == 30); // The whole buffer is reset
  1749     requestedIndexes.clear();
  2038     requestedIndexes.clear();
  1750 
  2039 
  1751     // Move items from the buffer outside it
  2040     // Move items from the buffer outside it
  1752     model.moveItems(20, 90, 10);
  2041     model.moveItems(20, 90, 10);
  1753     QTest::qWait(1000);
  2042     //QTest::qWait(1000);
  1754     QVERIFY(requestedIndexes.count() == 30); // The whole buffer is reset
  2043     QVERIFY(requestedIndexes.count() == 30); // The whole buffer is reset
  1755     requestedIndexes.clear();
  2044     requestedIndexes.clear();
  1756 
  2045 
  1757     // Move items from outside the buffer inside it
  2046     // Move items from outside the buffer inside it
  1758     model.moveItems(90, 15, 10);
  2047     model.moveItems(90, 15, 10);
  1759     QTest::qWait(1000);
  2048     //QTest::qWait(1000);
  1760     QVERIFY(requestedIndexes.count() == 30); // The whole buffer is reset
  2049     QVERIFY(requestedIndexes.count() == 30); // The whole buffer is reset
  1761     requestedIndexes.clear();
  2050     requestedIndexes.clear();
  1762 
  2051 
  1763     // Move buffer to the end of items
  2052     // Move buffer to the end of items
  1764     mWidget->setCurrentIndex(model.index(110, 0));
  2053     mWidget->setCurrentIndex(model.index(110, 0));
  1765     mWidget->scrollTo(model.index(110, 0));
  2054     mWidget->scrollTo(model.index(110, 0));
  1766     QTest::qWait(1000);
  2055     //QTest::qWait(1000);
  1767     requestedIndexes.clear();
  2056     requestedIndexes.clear();
  1768 
  2057 
  1769     // Move one item forward
  2058     // Move one item forward
  1770     model.moveItems(90, 100, 1);
  2059     model.moveItems(90, 100, 1);
  1771     QTest::qWait(1000);
  2060     //QTest::qWait(1000);
  1772     QVERIFY(requestedIndexes.count() == 0); // New items are not fetched as the changes happened inside the buffer
  2061     QVERIFY(requestedIndexes.count() == 0); // New items are not fetched as the changes happened inside the buffer
  1773 
  2062 
  1774     // Move buffer to the end of items
  2063     // Move buffer to the end of items
  1775     mWidget->setCurrentIndex(model.index(110, 0));
  2064     mWidget->setCurrentIndex(model.index(110, 0));
  1776     mWidget->scrollTo(model.index(110, 0));
  2065     mWidget->scrollTo(model.index(110, 0));
  1777     QTest::qWait(1000);
  2066     //QTest::qWait(1000);
  1778     requestedIndexes.clear();
  2067     requestedIndexes.clear();
  1779 
  2068 
  1780     model.moveItems(90, 92, 1);
  2069     model.moveItems(90, 92, 1);
  1781     QTest::qWait(1000);
  2070     //QTest::qWait(1000);
  1782     QVERIFY(requestedIndexes.count() == 0); // New items are not fetched as the changes happened inside the buffer
  2071     QVERIFY(requestedIndexes.count() == 0); // New items are not fetched as the changes happened inside the buffer
  1783 
  2072 
  1784     // Move buffer to the end of items
  2073     // Move buffer to the end of items
  1785     mWidget->setCurrentIndex(model.index(110, 0));
  2074     mWidget->setCurrentIndex(model.index(110, 0));
  1786     mWidget->scrollTo(model.index(110, 0));
  2075     mWidget->scrollTo(model.index(110, 0));
  1787     QTest::qWait(1000);
  2076     //QTest::qWait(1000);
  1788     requestedIndexes.clear();
  2077     requestedIndexes.clear();
  1789 
  2078 
  1790     model.moveItems(90, 119, 1);
  2079     model.moveItems(90, 119, 1);
  1791     QTest::qWait(1000);
  2080     //QTest::qWait(1000);
  1792     QVERIFY(requestedIndexes.count() == 0); // New items are not fetched as the changes happened inside the buffer
  2081     QVERIFY(requestedIndexes.count() == 0); // New items are not fetched as the changes happened inside the buffer
  1793 
  2082 
  1794     // Move buffer to the end of items
  2083     // Move buffer to the end of items
  1795     mWidget->setCurrentIndex(model.index(110, 0));
  2084     mWidget->setCurrentIndex(model.index(110, 0));
  1796     mWidget->scrollTo(model.index(110, 0));
  2085     mWidget->scrollTo(model.index(110, 0));
  1797     QTest::qWait(1000);
  2086     //QTest::qWait(1000);
  1798     requestedIndexes.clear();
  2087     requestedIndexes.clear();
  1799 
  2088 
  1800     // Move many items forward
  2089     // Move many items forward
  1801     model.moveItems(90, 100, 5);
  2090     model.moveItems(90, 100, 5);
  1802     QTest::qWait(1000);
  2091     //QTest::qWait(1000);
  1803     QVERIFY(requestedIndexes.count() == 0); // New items are not fetched as the changes happened inside the buffer
  2092     QVERIFY(requestedIndexes.count() == 0); // New items are not fetched as the changes happened inside the buffer
  1804 
  2093 
  1805     // Move buffer to the end of items
  2094     // Move buffer to the end of items
  1806     mWidget->setCurrentIndex(model.index(120, 0));
  2095     mWidget->setCurrentIndex(model.index(120, 0));
  1807     mWidget->scrollTo(model.index(120, 0));
  2096     mWidget->scrollTo(model.index(120, 0));
  1808     QTest::qWait(1000);
  2097     //QTest::qWait(1000);
  1809     requestedIndexes.clear();
  2098     requestedIndexes.clear();
  1810 
  2099 
  1811     // Move one item backward
  2100     // Move one item backward
  1812     model.moveItems(119, 100, 1);
  2101     model.moveItems(119, 100, 1);
  1813     QTest::qWait(1000);
  2102     //QTest::qWait(1000);
  1814     QVERIFY(requestedIndexes.count() == 0); // New items are not fetched as the changes happened inside the buffer
  2103     QVERIFY(requestedIndexes.count() == 0); // New items are not fetched as the changes happened inside the buffer
  1815 
  2104 
  1816     // Move buffer to the end of items
  2105     // Move buffer to the end of items
  1817     mWidget->setCurrentIndex(model.index(110, 0));
  2106     mWidget->setCurrentIndex(model.index(110, 0));
  1818     mWidget->scrollTo(model.index(120, 0));
  2107     mWidget->scrollTo(model.index(120, 0));
  1819     QTest::qWait(1000);
  2108     //QTest::qWait(1000);
  1820     requestedIndexes.clear();
  2109     requestedIndexes.clear();
  1821 
  2110 
  1822     model.moveItems(119, 118, 1);
  2111     model.moveItems(119, 118, 1);
  1823     QTest::qWait(1000);
  2112     //QTest::qWait(1000);
  1824     QVERIFY(requestedIndexes.count() == 0); // New items are not fetched as the changes happened inside the buffer
  2113     QVERIFY(requestedIndexes.count() == 0); // New items are not fetched as the changes happened inside the buffer
  1825 
  2114 
  1826     // Move buffer to the end of items
  2115     // Move buffer to the end of items
  1827     mWidget->setCurrentIndex(model.index(110, 0));
  2116     mWidget->setCurrentIndex(model.index(110, 0));
  1828     mWidget->scrollTo(model.index(110, 0));
  2117     mWidget->scrollTo(model.index(110, 0));
  1829     QTest::qWait(1000);
  2118     //QTest::qWait(1000);
  1830     requestedIndexes.clear();
  2119     requestedIndexes.clear();
  1831 
  2120 
  1832     model.moveItems(119, 90, 1);
  2121     model.moveItems(119, 90, 1);
  1833     QTest::qWait(1000);
  2122     //QTest::qWait(1000);
  1834     QVERIFY(requestedIndexes.count() == 0); // New items are not fetched as the changes happened inside the buffer
  2123     QVERIFY(requestedIndexes.count() == 0); // New items are not fetched as the changes happened inside the buffer
  1835 
  2124 
  1836     // Move buffer to the end of items
  2125     // Move buffer to the end of items
  1837     mWidget->setCurrentIndex(model.index(110, 0));
  2126     mWidget->setCurrentIndex(model.index(110, 0));
  1838     mWidget->scrollTo(model.index(110, 0));
  2127     mWidget->scrollTo(model.index(110, 0));
  1839     QTest::qWait(1000);
  2128     //QTest::qWait(1000);
  1840     requestedIndexes.clear();
  2129     requestedIndexes.clear();
  1841 
  2130 
  1842     // Move many items backward
  2131     // Move many items backward
  1843     model.moveItems(110, 95, 10);
  2132     model.moveItems(110, 95, 10);
  1844     QTest::qWait(1000);
  2133     //QTest::qWait(1000);
  1845     QVERIFY(requestedIndexes.count() == 0); // New items are not fetched as the changes happened inside the buffer
  2134     QVERIFY(requestedIndexes.count() == 0); // New items are not fetched as the changes happened inside the buffer
  1846 
  2135 
  1847     // Move buffer to the end of items
  2136     // Move buffer to the end of items
  1848     mWidget->setCurrentIndex(model.index(110, 0));
  2137     mWidget->setCurrentIndex(model.index(110, 0));
  1849     mWidget->scrollTo(model.index(110, 0));
  2138     mWidget->scrollTo(model.index(110, 0));
  1850     QTest::qWait(1000);
  2139     //QTest::qWait(1000);
  1851     requestedIndexes.clear();
  2140     requestedIndexes.clear();
  1852 
  2141 
  1853     // Move items from the border of the buffer backward
  2142     // Move items from the border of the buffer backward
  1854     model.moveItems(85, 60, 10);
  2143     model.moveItems(85, 60, 10);
  1855     QTest::qWait(1000);
  2144     //QTest::qWait(1000);
  1856     QVERIFY(requestedIndexes.count() == 30); // The whole buffer is reset
  2145     QVERIFY(requestedIndexes.count() == 30); // The whole buffer is reset
  1857 
  2146 
  1858     // Move buffer to the end of items
  2147     // Move buffer to the end of items
  1859     mWidget->setCurrentIndex(model.index(110, 0));
  2148     mWidget->setCurrentIndex(model.index(110, 0));
  1860     mWidget->scrollTo(model.index(110, 0));
  2149     mWidget->scrollTo(model.index(110, 0));
  1861     QTest::qWait(1000);
  2150     //QTest::qWait(1000);
  1862     requestedIndexes.clear();
  2151     requestedIndexes.clear();
  1863 
  2152 
  1864     // Move items from the border of the buffer forward
  2153     // Move items from the border of the buffer forward
  1865     model.moveItems(85, 100, 10);
  2154     model.moveItems(85, 100, 10);
  1866     QTest::qWait(1000);
  2155     //QTest::qWait(1000);
  1867     QVERIFY(requestedIndexes.count() == 30); // The whole buffer is reset
  2156     QVERIFY(requestedIndexes.count() == 30); // The whole buffer is reset
  1868 
  2157 
  1869     // Move buffer to the end of items
  2158     // Move buffer to the end of items
  1870     mWidget->setCurrentIndex(model.index(110, 0));
  2159     mWidget->setCurrentIndex(model.index(110, 0));
  1871     mWidget->scrollTo(model.index(110, 0));
  2160     mWidget->scrollTo(model.index(110, 0));
  1872     QTest::qWait(1000);
  2161     //QTest::qWait(1000);
  1873     requestedIndexes.clear();
  2162     requestedIndexes.clear();
  1874 
  2163 
  1875     // Move items from the buffer outside it
  2164     // Move items from the buffer outside it
  1876     model.moveItems(100, 10, 10);
  2165     model.moveItems(100, 10, 10);
  1877     QTest::qWait(1000);
  2166     //QTest::qWait(1000);
  1878     QVERIFY(requestedIndexes.count() == 30); // The whole buffer is reset
  2167     QVERIFY(requestedIndexes.count() == 30); // The whole buffer is reset
  1879 
  2168 
  1880     // Move buffer to the end of items
  2169     // Move buffer to the end of items
  1881     mWidget->setCurrentIndex(model.index(110, 0));
  2170     mWidget->setCurrentIndex(model.index(110, 0));
  1882     mWidget->scrollTo(model.index(110, 0));
  2171     mWidget->scrollTo(model.index(110, 0));
  1883     QTest::qWait(1000);
  2172     //QTest::qWait(1000);
  1884     requestedIndexes.clear();
  2173     requestedIndexes.clear();
  1885 
  2174 
  1886     // Move items from outside the buffer inside it
  2175     // Move items from outside the buffer inside it
  1887     model.moveItems(10, 100, 10);
  2176     model.moveItems(10, 100, 10);
  1888     QTest::qWait(1000);
  2177     //QTest::qWait(1000);
  1889     QVERIFY(requestedIndexes.count() == 30); // The whole buffer is reset
  2178     QVERIFY(requestedIndexes.count() == 30); // The whole buffer is reset
  1890 
  2179 
  1891     // Move buffer to the end of items
  2180     // Move buffer to the end of items
  1892     mWidget->setCurrentIndex(model.index(110, 0));
  2181     mWidget->setCurrentIndex(model.index(110, 0));
  1893     mWidget->scrollTo(model.index(110, 0));
  2182     mWidget->scrollTo(model.index(110, 0));
  1894     QTest::qWait(1000);
  2183     //QTest::qWait(1000);
  1895     requestedIndexes.clear();
  2184     requestedIndexes.clear();
  1896 
  2185 
  1897     // Move buffer to the middle of items
  2186     // Move buffer to the middle of items
  1898     mWidget->setCurrentIndex(model.index(60, 0));
  2187     mWidget->setCurrentIndex(model.index(60, 0));
  1899     mWidget->scrollTo(model.index(60, 0));
  2188     mWidget->scrollTo(model.index(60, 0));
  1900     QTest::qWait(1000);
  2189     //QTest::qWait(1000);
  1901 
  2190 
  1902     // Move buffer to the end of items
  2191     // Move buffer to the end of items
  1903     mWidget->setCurrentIndex(model.index(60, 0));
  2192     mWidget->setCurrentIndex(model.index(60, 0));
  1904     mWidget->scrollTo(model.index(60, 0));
  2193     mWidget->scrollTo(model.index(60, 0));
  1905     QTest::qWait(1000);
  2194     //QTest::qWait(1000);
  1906     requestedIndexes.clear();
  2195     requestedIndexes.clear();
  1907 
  2196 
  1908     // Move items over the whole buffer forward
  2197     // Move items over the whole buffer forward
  1909     model.moveItems(40, 110, 50);
  2198     model.moveItems(40, 110, 50);
  1910     QTest::qWait(1000);
  2199     //QTest::qWait(1000);
  1911     QVERIFY(requestedIndexes.count() == 30); // The whole buffer is reset
  2200     QVERIFY(requestedIndexes.count() == 30); // The whole buffer is reset
  1912 
  2201 
  1913     // Move buffer to the middle of items
  2202     // Move buffer to the middle of items
  1914     mWidget->setCurrentIndex(model.index(60, 0));
  2203     mWidget->setCurrentIndex(model.index(60, 0));
  1915     mWidget->scrollTo(model.index(60, 0));
  2204     mWidget->scrollTo(model.index(60, 0));
  1916     QTest::qWait(1000);
  2205     //QTest::qWait(1000);
  1917     requestedIndexes.clear();
  2206     requestedIndexes.clear();
  1918 
  2207 
  1919     // Move items over the whole buffer backward
  2208     // Move items over the whole buffer backward
  1920     model.moveItems(40, 10, 50);
  2209     model.moveItems(40, 10, 50);
  1921     QTest::qWait(1000);
  2210     //QTest::qWait(1000);
  1922     QVERIFY(requestedIndexes.count() == 30); // The whole buffer is reset
  2211     QVERIFY(requestedIndexes.count() == 30); // The whole buffer is reset
  1923 
  2212 */
  1924     QTest::qWait(2000);
  2213     QTest::qWait(2000);
  1925 
  2214 
  1926     delete mWindow;
  2215     mWindow->removeView(mWidget);
  1927     mWindow = 0;
  2216     delete mWidget;
       
  2217     mWidget = 0;
       
  2218     
       
  2219 //    delete mWindow;
       
  2220 //    mWindow = 0;
  1928 }
  2221 }
  1929 
  2222 
  1930 void TestGanesWidgets::test_labelFontSpecsCoverFlow()
  2223 void TestGanesWidgets::test_labelFontSpecsCoverFlow()
  1931 {
  2224 {
  1932     mWindow = new HbMainWindow;
  2225     if(mWidget) {
       
  2226         mWindow->removeView(mWidget);
       
  2227         delete mWidget;
       
  2228         mWidget = 0;
       
  2229     }
       
  2230 //    mWindow = new HbMainWindow;
  1933     mMediawall = new HgMediawall();
  2231     mMediawall = new HgMediawall();
  1934 
  2232     mMediawall->enableReflections(true);
       
  2233     mWidget = mMediawall;
       
  2234     
  1935     TestModel model;
  2235     TestModel model;
  1936     model.generateItems(50);
  2236     model.generateItems(50);
  1937     mWindow->addView(mMediawall);
  2237     mWindow->addView(mMediawall);
       
  2238     mWidget->setGeometry(QRectF(0,0,360,640));
  1938     mMediawall->setModel(&model);
  2239     mMediawall->setModel(&model);
  1939     mWindow->show();
  2240     mWindow->show();
  1940 
  2241 
  1941     mMediawall->setTitleFontSpec(HbFontSpec(HbFontSpec::Primary));
  2242     mMediawall->setTitleFontSpec(HbFontSpec(HbFontSpec::Primary));
  1942     QVERIFY(mMediawall->titleFontSpec() == HbFontSpec(HbFontSpec::Primary));
  2243     QVERIFY(mMediawall->titleFontSpec() == HbFontSpec(HbFontSpec::Primary));
  1948     QVERIFY(mMediawall->titleFontSpec() == HbFontSpec(HbFontSpec::Title));
  2249     QVERIFY(mMediawall->titleFontSpec() == HbFontSpec(HbFontSpec::Title));
  1949 
  2250 
  1950     mMediawall->setDescriptionFontSpec(HbFontSpec(HbFontSpec::PrimarySmall));
  2251     mMediawall->setDescriptionFontSpec(HbFontSpec(HbFontSpec::PrimarySmall));
  1951     QVERIFY(mMediawall->descriptionFontSpec() == HbFontSpec(HbFontSpec::PrimarySmall));
  2252     QVERIFY(mMediawall->descriptionFontSpec() == HbFontSpec(HbFontSpec::PrimarySmall));
  1952 
  2253 
  1953     QTest::qWait(2000);
  2254     //QTest::qWait(2000);
  1954 
  2255 
  1955     delete mWindow;
  2256     mWindow->removeView(mWidget);
  1956     mWindow = 0;
  2257     delete mWidget;
       
  2258     mWidget = 0;
       
  2259     
       
  2260 //    delete mWindow;
       
  2261 //    mWindow = 0;
  1957 }
  2262 }
  1958 
  2263 
  1959 void TestGanesWidgets::test_resetModelCoverFlow()
  2264 void TestGanesWidgets::test_resetModelCoverFlow()
  1960 {
  2265 {
  1961     mWindow = new HbMainWindow;
  2266     if(mWidget) {
       
  2267         mWindow->removeView(mWidget);
       
  2268         delete mWidget;
       
  2269         mWidget = 0;
       
  2270     }
       
  2271 //    mWindow = new HbMainWindow;
  1962     mMediawall = new HgMediawall();
  2272     mMediawall = new HgMediawall();
  1963 
  2273     mWidget = mMediawall;
       
  2274     
  1964     TestModel model;
  2275     TestModel model;
  1965     model.generateItems(50);
  2276     model.generateItems(50);
  1966     mWindow->addView(mMediawall);
  2277     mWindow->addView(mMediawall);
       
  2278     mWidget->setGeometry(QRectF(0,0,360,640));
  1967     mMediawall->setModel(&model);
  2279     mMediawall->setModel(&model);
  1968     mWindow->show();
  2280     mWindow->show();
  1969 
  2281 
  1970     // Reset with same item count
  2282     // Reset with same item count
  1971     model.reset(50);
  2283     model.reset(50);
  1972     QTest::qWait(2000);
  2284     //QTest::qWait(2000);
  1973 
  2285 
  1974     // Reset with smaller item count
  2286     // Reset with smaller item count
  1975     model.reset(20);    
  2287     model.reset(20);    
  1976     QTest::qWait(2000);
  2288     //QTest::qWait(2000);
  1977 
  2289 
  1978     // Reset with larger item count
  2290     // Reset with larger item count
  1979     model.reset(100);    
  2291     model.reset(100);    
  1980     QTest::qWait(2000);
  2292     //QTest::qWait(2000);
  1981 
  2293 
  1982     delete mWindow;
  2294     mWindow->removeView(mWidget);
  1983     mWindow = 0;
  2295     delete mWidget;
       
  2296     mWidget = 0;
       
  2297     
       
  2298 //    delete mWindow;
       
  2299 //    mWindow = 0;
  1984 
  2300 
  1985 }
  2301 }
  1986 
  2302 
  1987 void TestGanesWidgets::test_resetModelGrid()
  2303 void TestGanesWidgets::test_resetModelGrid()
  1988 {
  2304 {
  1989     mWindow = new HbMainWindow;
  2305     if(mWidget) {
       
  2306         mWindow->removeView(mWidget);
       
  2307         delete mWidget;
       
  2308         mWidget = 0;
       
  2309     }
       
  2310 //    mWindow = new HbMainWindow;
  1990     mWidget = new HgGrid(Qt::Vertical);
  2311     mWidget = new HgGrid(Qt::Vertical);
  1991 
  2312 
  1992     TestModel model;
  2313     TestModel model;
  1993     model.generateItems(50);
  2314     model.generateItems(50);
  1994     mWindow->addView(mWidget);
  2315     mWindow->addView(mWidget);
       
  2316     mWidget->setGeometry(QRectF(0,0,360,640));
  1995     mWidget->setModel(&model);
  2317     mWidget->setModel(&model);
  1996     mWindow->show();
  2318     mWindow->show();
  1997 
  2319 
  1998     QTest::qWait(2000);
  2320     //QTest::qWait(2000);
  1999 
  2321 
  2000     // Reset with same item count
  2322     // Reset with same item count
  2001     model.reset(50);
  2323     model.reset(50);
  2002     QTest::qWait(2000);
  2324     //QTest::qWait(2000);
  2003 
  2325 
  2004     // Reset with smaller item count
  2326     // Reset with smaller item count
  2005     model.reset(20);    
  2327     model.reset(20);    
  2006     QTest::qWait(2000);
  2328     //QTest::qWait(2000);
  2007 
  2329 
  2008     // Reset with larger item count
  2330     // Reset with larger item count
  2009     model.reset(100);    
  2331     model.reset(100);    
       
  2332     //QTest::qWait(2000);
       
  2333   
       
  2334     mWindow->removeView(mWidget);
       
  2335     delete mWidget;
       
  2336     mWidget = 0;
       
  2337     
       
  2338 //    delete mWindow;
       
  2339 //    mWindow = 0;
       
  2340 
       
  2341 }
       
  2342 
       
  2343 void TestGanesWidgets::test_orientationChanged()
       
  2344 {
       
  2345     if(mWidget) {
       
  2346         mWindow->removeView(mWidget);
       
  2347         delete mWidget;
       
  2348         mWidget = 0;
       
  2349     }
       
  2350 //    mWindow = new HbMainWindow;
       
  2351     mWidget = new HgGrid(Qt::Horizontal);
       
  2352     TestModel model;
       
  2353     model.generateItems(200);
       
  2354     mWindow->addView( mWidget );
       
  2355     mWidget->setGeometry(QRectF(0,0,360,640));
       
  2356     mWidget->setModel( &model );
       
  2357     mWindow->show();
       
  2358 
       
  2359     QTest::qWait( 1000 );
       
  2360 
       
  2361     mWidget->orientationChanged(Qt::Vertical);
  2010     QTest::qWait(2000);
  2362     QTest::qWait(2000);
  2011     
  2363     mWidget->orientationChanged(Qt::Vertical);
  2012     delete mWindow;
  2364     QTest::qWait(2000);
  2013     mWindow = 0;
  2365 
  2014 
  2366     mWindow->removeView(mWidget);
  2015 }
  2367     delete mWidget;
       
  2368     mWidget = 0;
       
  2369 }
       
  2370 
       
  2371 void TestGanesWidgets::test_indexFeedback()
       
  2372 {
       
  2373     if(mWidget) {
       
  2374         mWindow->removeView(mWidget);
       
  2375         delete mWidget;
       
  2376         mWidget = 0;
       
  2377     }
       
  2378     mMediawall = new HgMediawall();
       
  2379     mWidget = mMediawall;
       
  2380     TestModel model;
       
  2381     model.generateItems(30);
       
  2382     mWindow->addView( mWidget );
       
  2383     QVERIFY( mWidget->model() == 0 );
       
  2384     mWidget->setModel( &model );
       
  2385     QVERIFY( &model == mWidget->model() );
       
  2386     mWindow->show();
       
  2387 
       
  2388     QTest::qWait( 2000 );
       
  2389 
       
  2390     mMediawall->scrollBar()->setInteractive(true);
       
  2391     QRectF rect = mWidget->scrollBar()->rect();
       
  2392     QPointF move(0,300);
       
  2393     
       
  2394     QVERIFY(mMediawall->indexFeedbackPolicy() == HgWidget::IndexFeedbackNone);
       
  2395     
       
  2396     mMediawall->setIndexFeedbackPolicy(HgWidget::IndexFeedbackSingleCharacter);
       
  2397     QVERIFY(mMediawall->indexFeedbackPolicy() == HgWidget::IndexFeedbackSingleCharacter);
       
  2398     HbAutoTest::mousePress( (HbAutoTestMainWindow*)mWindow, mWidget->scrollBar(), rect.topLeft(), -1 );
       
  2399     HbAutoTest::mouseMove( (HbAutoTestMainWindow*)mWindow, mWidget->scrollBar(), rect.topRight()+move, 1000 );
       
  2400     HbAutoTest::mouseRelease( (HbAutoTestMainWindow*)mWindow, mWidget->scrollBar(), rect.topRight()+move, 1000 );
       
  2401 
       
  2402     mMediawall->setIndexFeedbackPolicy(HgWidget::IndexFeedbackThreeCharacter);
       
  2403     QVERIFY(mMediawall->indexFeedbackPolicy() == HgWidget::IndexFeedbackThreeCharacter);
       
  2404     HbAutoTest::mousePress( (HbAutoTestMainWindow*)mWindow, mWidget->scrollBar(), rect.topLeft(), -1 );
       
  2405     mMediawall->scrollTo(model.index(10,0));
       
  2406     HbAutoTest::mouseRelease( (HbAutoTestMainWindow*)mWindow, mWidget->scrollBar(), rect.topLeft(), 3000 );
       
  2407 
       
  2408     mMediawall->setIndexFeedbackPolicy(HgWidget::IndexFeedbackString);
       
  2409     QVERIFY(mMediawall->indexFeedbackPolicy() == HgWidget::IndexFeedbackString);
       
  2410     HbAutoTest::mousePress( (HbAutoTestMainWindow*)mWindow, mWidget->scrollBar(), rect.topLeft(), -1 );
       
  2411 //    HbAutoTest::mouseMove( (HbAutoTestMainWindow*)mWindow, mWidget->scrollBar(), rect.topRight()+move, 1000 );
       
  2412     HbAutoTest::mouseRelease( (HbAutoTestMainWindow*)mWindow, mWidget->scrollBar(), rect.topRight(), 3000 );
       
  2413 
       
  2414     mMediawall->setIndexFeedbackPolicy(HgWidget::IndexFeedbackNone);
       
  2415     QVERIFY(mMediawall->indexFeedbackPolicy() == HgWidget::IndexFeedbackNone);
       
  2416     HbAutoTest::mousePress( (HbAutoTestMainWindow*)mWindow, mWidget->scrollBar(), rect.topLeft(), -1 );
       
  2417     HbAutoTest::mouseMove( (HbAutoTestMainWindow*)mWindow, mWidget->scrollBar(), rect.topRight()+move, 1000 );
       
  2418     HbAutoTest::mouseRelease( (HbAutoTestMainWindow*)mWindow, mWidget->scrollBar(), rect.topRight()+move, 1000 );    
       
  2419     
       
  2420     if(mWidget) {
       
  2421         mWindow->removeView(mWidget);
       
  2422         delete mWidget;
       
  2423         mWidget = 0;
       
  2424     }
       
  2425 }
       
  2426 
       
  2427 void TestGanesWidgets::test_gridApi()
       
  2428 {
       
  2429     if(mWidget) {
       
  2430         mWindow->removeView(mWidget);
       
  2431         delete mWidget;
       
  2432         mWidget = 0;
       
  2433     }
       
  2434 //    mWindow = new HbMainWindow;
       
  2435     HgGrid *grid = new HgGrid(Qt::Horizontal);
       
  2436     mWidget = grid;
       
  2437     TestModel model;
       
  2438     model.generateItems(200);
       
  2439     mWindow->addView( mWidget );
       
  2440     mWidget->setGeometry(QRectF(0,0,360,640));
       
  2441     mWidget->setModel( &model );
       
  2442     mWindow->show();
       
  2443 
       
  2444     QTest::qWait( 1000 );
       
  2445 
       
  2446     QList<QModelIndex> list = mWidget->getVisibleItemIndices();
       
  2447     foreach(QModelIndex index, list) {
       
  2448         QPolygonF pol;
       
  2449         mWidget->getItemOutline(index,pol);
       
  2450     }
       
  2451     
       
  2452     QVERIFY(!grid->pinchEnabled());
       
  2453     grid->setPinchEnabled(true);
       
  2454     QVERIFY(grid->pinchEnabled());
       
  2455     grid->setPinchEnabled(false);
       
  2456     QVERIFY(!grid->pinchEnabled());
       
  2457     
       
  2458     QVERIFY(grid->effect3dEnabled());
       
  2459     grid->setEffect3dEnabled(true);
       
  2460     QVERIFY(grid->effect3dEnabled());
       
  2461     grid->setEffect3dEnabled(false);
       
  2462     QVERIFY(!grid->effect3dEnabled());
       
  2463         
       
  2464     mWindow->removeView(mWidget);
       
  2465     delete mWidget;
       
  2466     mWidget = 0;
       
  2467 }
       
  2468 
  2016 
  2469 
  2017 #ifdef _UNITTEST_GANESWIDGETS_LOG_TO_C_
  2470 #ifdef _UNITTEST_GANESWIDGETS_LOG_TO_C_
  2018     int main (int argc, char* argv[])
  2471     int main (int argc, char* argv[])
  2019     {
  2472     {
  2020         HbApplication app(argc, argv);
  2473         HbApplication app(argc, argv);
  2023 //        char* v[] = {argv[0], "-o", "c:/test.txt"};
  2476 //        char* v[] = {argv[0], "-o", "c:/test.txt"};
  2024         return QTest::qExec(&tc, argc, argv);
  2477         return QTest::qExec(&tc, argc, argv);
  2025 //        return QTest::qExec(&tc, c, v);
  2478 //        return QTest::qExec(&tc, c, v);
  2026     }
  2479     }
  2027 #else
  2480 #else
  2028     QTEST_MAIN(TestGanesWidgets)
  2481     QTEST_APPLESS_MAIN(TestGanesWidgets)
  2029 #endif
  2482 #endif
  2030 
  2483 
  2031 #include "unittest_ganeswidgets.moc"
  2484 #include "unittest_ganeswidgets.moc"
  2032 
  2485 
  2033 // EOF
  2486 // EOF