videocollection/videofiledetailsview/tsrc/testplugin/src/testvideofiledetails.cpp
author hgs
Thu, 01 Apr 2010 22:38:49 +0300
changeset 30 4f111d64a341
child 34 bbb98528c666
permissions -rw-r--r--
201005
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
30
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:   TestVideoFileDetails class implementation
hgs
parents:
diff changeset
    15
* 
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
// INCLUDE FILES
hgs
parents:
diff changeset
    19
#include "hbmessagebox.h"
hgs
parents:
diff changeset
    20
hgs
parents:
diff changeset
    21
#include <QtTest/QtTest>
hgs
parents:
diff changeset
    22
#include <qdebug.h>
hgs
parents:
diff changeset
    23
#include <hbinstance.h>
hgs
parents:
diff changeset
    24
#include <hbwidget.h>
hgs
parents:
diff changeset
    25
#include <hbpushbutton.h>
hgs
parents:
diff changeset
    26
#include <hblabel.h>
hgs
parents:
diff changeset
    27
#include <hbaction.h>
hgs
parents:
diff changeset
    28
#include <hbapplication.h>
hgs
parents:
diff changeset
    29
#include <hbscrollarea.h>
hgs
parents:
diff changeset
    30
#include <hbmarqueeitem.h>
hgs
parents:
diff changeset
    31
hgs
parents:
diff changeset
    32
#include "hbmessagebox.h"
hgs
parents:
diff changeset
    33
#include "thumbnailmanager_qt.h"
hgs
parents:
diff changeset
    34
#include "videocollectioncommon.h"
hgs
parents:
diff changeset
    35
#include "mpxhbvideocommondefs.h"
hgs
parents:
diff changeset
    36
#include "videocollectionwrapper.h"
hgs
parents:
diff changeset
    37
#include "videosortfilterproxymodel.h"
hgs
parents:
diff changeset
    38
#include "testvideofiledetails.h"
hgs
parents:
diff changeset
    39
hgs
parents:
diff changeset
    40
// trick to get access to protected/private members.
hgs
parents:
diff changeset
    41
#define private public
hgs
parents:
diff changeset
    42
#include "videofiledetailsviewplugin.h"
hgs
parents:
diff changeset
    43
#undef private
hgs
parents:
diff changeset
    44
hgs
parents:
diff changeset
    45
const char *TEST_VIDEO_DETAILS_VIEW = "videofiledetailsview";
hgs
parents:
diff changeset
    46
const char *TEST_VIDEO_DETAILS_WIDGET = "mContent";
hgs
parents:
diff changeset
    47
hgs
parents:
diff changeset
    48
const char *TEST_VIDEO_DETAILS_TITLE = "mLblTitle";
hgs
parents:
diff changeset
    49
const char *TEST_VIDEO_DETAILS_ITEM = "mLblDetail";
hgs
parents:
diff changeset
    50
const char *TEST_VIDEO_DETAILS_BUTTON_PLAY = "mBtnPlay";
hgs
parents:
diff changeset
    51
const char* const VIDEO_DETAILS_BUTTON_ATTACH = "mBtnAttach";
hgs
parents:
diff changeset
    52
const char *TEST_VIDEO_DETAILS_MENUACTION_SHARE = "mOptionsShare";
hgs
parents:
diff changeset
    53
const char *TEST_VIDEO_DETAILS_MENUACTION_DELETE = "mOptionsDelete";
hgs
parents:
diff changeset
    54
hgs
parents:
diff changeset
    55
const char *TEST_VIDEO_DETAILS_SCROLLAREA = "mDetailScrollArea";
hgs
parents:
diff changeset
    56
hgs
parents:
diff changeset
    57
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    58
// initTestCase
hgs
parents:
diff changeset
    59
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    60
//
hgs
parents:
diff changeset
    61
void TestVideoFileDetails::initTestCase()
hgs
parents:
diff changeset
    62
{
hgs
parents:
diff changeset
    63
   mWrapper = VideoCollectionWrapper::instance();
hgs
parents:
diff changeset
    64
   mDummyModel = 0;
hgs
parents:
diff changeset
    65
   mDummyModel = new VideoSortFilterProxyModel();
hgs
parents:
diff changeset
    66
   
hgs
parents:
diff changeset
    67
   connect(this, SIGNAL(shortDetailsReady(int)), mDummyModel, SIGNAL(shortDetailsReady(int)));
hgs
parents:
diff changeset
    68
   connect(this, SIGNAL(fullDetailsReady(int)), mDummyModel, SIGNAL(fullDetailsReady(int)));
hgs
parents:
diff changeset
    69
hgs
parents:
diff changeset
    70
   connect(this, SIGNAL(dataChanged(const QModelIndex&, const QModelIndex&)), 
hgs
parents:
diff changeset
    71
           mDummyModel, SIGNAL(dataChanged(const QModelIndex&, const QModelIndex&)));
hgs
parents:
diff changeset
    72
   
hgs
parents:
diff changeset
    73
   connect(this, SIGNAL(rowsRemoved(const QModelIndex&, int, int)),
hgs
parents:
diff changeset
    74
           mDummyModel, SIGNAL(rowsRemoved(const QModelIndex&, int, int)));
hgs
parents:
diff changeset
    75
   
hgs
parents:
diff changeset
    76
   mWrapper->setModel(mDummyModel);
hgs
parents:
diff changeset
    77
}
hgs
parents:
diff changeset
    78
hgs
parents:
diff changeset
    79
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    80
// cleanupTestCase
hgs
parents:
diff changeset
    81
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    82
//
hgs
parents:
diff changeset
    83
void TestVideoFileDetails::cleanupTestCase()
hgs
parents:
diff changeset
    84
{
hgs
parents:
diff changeset
    85
    disconnect(this, SIGNAL(shortDetailsReady(int)), mDummyModel, SIGNAL(shortDetailsReady(int)));
hgs
parents:
diff changeset
    86
    disconnect(this, SIGNAL(fullDetailsReady(int)),mDummyModel, SIGNAL(fullDetailsReady(int)));
hgs
parents:
diff changeset
    87
    disconnect(this, SIGNAL(dataChanged(const QModelIndex&, const QModelIndex&)), 
hgs
parents:
diff changeset
    88
            mDummyModel, SIGNAL(dataChanged(const QModelIndex&, const QModelIndex&)));
hgs
parents:
diff changeset
    89
    disconnect(this, SIGNAL(rowsRemoved(const QModelIndex&, int, int)),
hgs
parents:
diff changeset
    90
            mDummyModel, SIGNAL(rowsRemoved(const QModelIndex&, int, int)));
hgs
parents:
diff changeset
    91
    delete mDummyModel; mDummyModel = 0;
hgs
parents:
diff changeset
    92
    delete mPlugin; mPlugin = 0;
hgs
parents:
diff changeset
    93
    mWrapper->decreaseReferenceCount();
hgs
parents:
diff changeset
    94
    QCOMPARE(mWrapper->mReferenceCount, 0);
hgs
parents:
diff changeset
    95
}
hgs
parents:
diff changeset
    96
hgs
parents:
diff changeset
    97
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    98
// init before every test function
hgs
parents:
diff changeset
    99
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   100
//
hgs
parents:
diff changeset
   101
void TestVideoFileDetails::init()
hgs
parents:
diff changeset
   102
{
hgs
parents:
diff changeset
   103
    mDummyModel->reset();
hgs
parents:
diff changeset
   104
    
hgs
parents:
diff changeset
   105
    mPlugin = new VideoFileDetailsViewPlugin();
hgs
parents:
diff changeset
   106
    mPlugin->createView();
hgs
parents:
diff changeset
   107
    mPlugin->createView();
hgs
parents:
diff changeset
   108
    mCommandReceived = false;
hgs
parents:
diff changeset
   109
    mReceivedCommand = -1;
hgs
parents:
diff changeset
   110
    ThumbnailManager::mRequests.clear();
hgs
parents:
diff changeset
   111
}
hgs
parents:
diff changeset
   112
hgs
parents:
diff changeset
   113
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   114
// cleanup after every test function
hgs
parents:
diff changeset
   115
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   116
//
hgs
parents:
diff changeset
   117
void TestVideoFileDetails::cleanup()
hgs
parents:
diff changeset
   118
{
hgs
parents:
diff changeset
   119
    if(mPlugin->getView()) {
hgs
parents:
diff changeset
   120
        hbInstance->allMainWindows().at(0)->removeView(mPlugin->getView());
hgs
parents:
diff changeset
   121
    }
hgs
parents:
diff changeset
   122
    mDummyModel->reset();
hgs
parents:
diff changeset
   123
    delete mPlugin; mPlugin = 0;
hgs
parents:
diff changeset
   124
}
hgs
parents:
diff changeset
   125
hgs
parents:
diff changeset
   126
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   127
// Helper function that activates view after init()
hgs
parents:
diff changeset
   128
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   129
//
hgs
parents:
diff changeset
   130
void TestVideoFileDetails::activateView()
hgs
parents:
diff changeset
   131
{
hgs
parents:
diff changeset
   132
    hbInstance->allMainWindows().at(0)->addView(mPlugin->getView());
hgs
parents:
diff changeset
   133
    mPlugin->activateView();
hgs
parents:
diff changeset
   134
hgs
parents:
diff changeset
   135
    // without this the xml loaded objects don't have the correct geometry.
hgs
parents:
diff changeset
   136
    mPlugin->getView()->setGeometry(hbInstance->allMainWindows().at(0)->rect());
hgs
parents:
diff changeset
   137
}
hgs
parents:
diff changeset
   138
hgs
parents:
diff changeset
   139
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   140
// Helper function that populates a qmap with dummy data.
hgs
parents:
diff changeset
   141
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   142
//
hgs
parents:
diff changeset
   143
QMap<QString, QVariant> TestVideoFileDetails::createDummyMetadata(int ratingStartCount)
hgs
parents:
diff changeset
   144
{
hgs
parents:
diff changeset
   145
    using namespace VideoCollectionCommon;
hgs
parents:
diff changeset
   146
    
hgs
parents:
diff changeset
   147
    QMap<QString, QVariant> map;
hgs
parents:
diff changeset
   148
    
hgs
parents:
diff changeset
   149
    int detailCount = sizeof(VideoDetailLabelKeys) / sizeof(int);
hgs
parents:
diff changeset
   150
    QString txt;
hgs
parents:
diff changeset
   151
    for(int i = 0; i<detailCount; i++) {
hgs
parents:
diff changeset
   152
        txt = QString(VideoDetailLabelKeys[i]);
hgs
parents:
diff changeset
   153
        if(i%2 == 0)
hgs
parents:
diff changeset
   154
        {            
hgs
parents:
diff changeset
   155
            map[VideoDetailLabelKeys[i]] = txt;
hgs
parents:
diff changeset
   156
        }
hgs
parents:
diff changeset
   157
        else
hgs
parents:
diff changeset
   158
        {
hgs
parents:
diff changeset
   159
            txt.append(QString("test test test test test test test test test test test test test test test test test test test"));
hgs
parents:
diff changeset
   160
            map[VideoDetailLabelKeys[i]] = txt;
hgs
parents:
diff changeset
   161
        }
hgs
parents:
diff changeset
   162
    }
hgs
parents:
diff changeset
   163
    if(ratingStartCount > -1)
hgs
parents:
diff changeset
   164
    {
hgs
parents:
diff changeset
   165
        map[MetaKeyStarRating] = ratingStartCount;
hgs
parents:
diff changeset
   166
    }
hgs
parents:
diff changeset
   167
    return map;
hgs
parents:
diff changeset
   168
}
hgs
parents:
diff changeset
   169
hgs
parents:
diff changeset
   170
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   171
// One round for the activate view test
hgs
parents:
diff changeset
   172
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   173
//
hgs
parents:
diff changeset
   174
inline void TestVideoFileDetails::activateViewTestRound()
hgs
parents:
diff changeset
   175
    {
hgs
parents:
diff changeset
   176
    init();
hgs
parents:
diff changeset
   177
    
hgs
parents:
diff changeset
   178
    HbScrollArea* area = findWidget<HbScrollArea>(TEST_VIDEO_DETAILS_SCROLLAREA);
hgs
parents:
diff changeset
   179
    
hgs
parents:
diff changeset
   180
    // won't scroll without these
hgs
parents:
diff changeset
   181
    area->contentWidget()->adjustSize();
hgs
parents:
diff changeset
   182
    area->setHorizontalScrollBarPolicy(HbScrollArea::ScrollBarAutoHide);
hgs
parents:
diff changeset
   183
    
hgs
parents:
diff changeset
   184
    area->scrollContentsTo(QPointF(0, 200));
hgs
parents:
diff changeset
   185
    
hgs
parents:
diff changeset
   186
    QSignalSpy spy(area, SIGNAL(scrollPositionChanged(const QPointF)));
hgs
parents:
diff changeset
   187
    
hgs
parents:
diff changeset
   188
    activateView();
hgs
parents:
diff changeset
   189
    
hgs
parents:
diff changeset
   190
    QVERIFY( mPlugin->getView() != 0 );
hgs
parents:
diff changeset
   191
    QVERIFY( mPlugin->viewPlugin() == mPlugin );
hgs
parents:
diff changeset
   192
    QCOMPARE( mPlugin->mVideoIndex, -1 );
hgs
parents:
diff changeset
   193
    
hgs
parents:
diff changeset
   194
    verifyOrientation();
hgs
parents:
diff changeset
   195
    
hgs
parents:
diff changeset
   196
    // verify that actions are currently disabled.
hgs
parents:
diff changeset
   197
    HbPushButton* playBtn = findWidget<HbPushButton>(TEST_VIDEO_DETAILS_BUTTON_PLAY);
hgs
parents:
diff changeset
   198
    HbAction* shareAction = findObject<HbAction>(TEST_VIDEO_DETAILS_MENUACTION_SHARE);
hgs
parents:
diff changeset
   199
    HbAction* deleteAction = findObject<HbAction>(TEST_VIDEO_DETAILS_MENUACTION_DELETE);
hgs
parents:
diff changeset
   200
    
hgs
parents:
diff changeset
   201
    QVERIFY( playBtn != 0 );
hgs
parents:
diff changeset
   202
    QVERIFY( shareAction != 0 );
hgs
parents:
diff changeset
   203
    QVERIFY( deleteAction != 0 );
hgs
parents:
diff changeset
   204
    QVERIFY( playBtn->isEnabled() );
hgs
parents:
diff changeset
   205
    QVERIFY( shareAction->isEnabled() );
hgs
parents:
diff changeset
   206
    QVERIFY( deleteAction->isEnabled() );
hgs
parents:
diff changeset
   207
    
hgs
parents:
diff changeset
   208
    // verify that the scroll area has been scrolled to the top.
hgs
parents:
diff changeset
   209
    QCOMPARE( spy.count(), 1 );
hgs
parents:
diff changeset
   210
    QPointF scrollPoint = spy.takeFirst().at(0).toPointF();
hgs
parents:
diff changeset
   211
    QCOMPARE( scrollPoint, QPointF(0, 0) );
hgs
parents:
diff changeset
   212
    
hgs
parents:
diff changeset
   213
    QVERIFY(mPlugin->mActivated);    
hgs
parents:
diff changeset
   214
     // second activation should not affect
hgs
parents:
diff changeset
   215
    activateView();
hgs
parents:
diff changeset
   216
    QVERIFY(mPlugin->mActivated);
hgs
parents:
diff changeset
   217
    QVERIFY( playBtn != 0 );
hgs
parents:
diff changeset
   218
    QVERIFY( shareAction != 0 );
hgs
parents:
diff changeset
   219
    QVERIFY( deleteAction != 0 );
hgs
parents:
diff changeset
   220
    QVERIFY( playBtn->isEnabled() );
hgs
parents:
diff changeset
   221
    QVERIFY( shareAction->isEnabled() );
hgs
parents:
diff changeset
   222
    QVERIFY( deleteAction->isEnabled() );
hgs
parents:
diff changeset
   223
        
hgs
parents:
diff changeset
   224
    
hgs
parents:
diff changeset
   225
    cleanup();
hgs
parents:
diff changeset
   226
    }
hgs
parents:
diff changeset
   227
hgs
parents:
diff changeset
   228
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   229
// Verifies that correct orientation is loaded from xml
hgs
parents:
diff changeset
   230
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   231
//
hgs
parents:
diff changeset
   232
inline void TestVideoFileDetails::verifyOrientation()
hgs
parents:
diff changeset
   233
{
hgs
parents:
diff changeset
   234
    HbWidget* info = findWidget<HbWidget>(TEST_VIDEO_DETAILS_SCROLLAREA);
hgs
parents:
diff changeset
   235
    
hgs
parents:
diff changeset
   236
    // this verifies that we have correct orientation loaded from the xml.
hgs
parents:
diff changeset
   237
    if (hbInstance->allMainWindows().at(0)->orientation() == Qt::Vertical)
hgs
parents:
diff changeset
   238
    {
hgs
parents:
diff changeset
   239
        QVERIFY( info->pos().x() < 300 );
hgs
parents:
diff changeset
   240
        QVERIFY( info->pos().x() > 0 );
hgs
parents:
diff changeset
   241
    } else {
hgs
parents:
diff changeset
   242
        QVERIFY( info->pos().x() > 300 );
hgs
parents:
diff changeset
   243
        QVERIFY( info->pos().x() < 640 );
hgs
parents:
diff changeset
   244
    }
hgs
parents:
diff changeset
   245
}
hgs
parents:
diff changeset
   246
hgs
parents:
diff changeset
   247
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   248
// Slot: create view
hgs
parents:
diff changeset
   249
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   250
//
hgs
parents:
diff changeset
   251
void TestVideoFileDetails::handleCommand(int command)
hgs
parents:
diff changeset
   252
{
hgs
parents:
diff changeset
   253
    mCommandReceived = true;
hgs
parents:
diff changeset
   254
    mReceivedCommand = command;
hgs
parents:
diff changeset
   255
}
hgs
parents:
diff changeset
   256
hgs
parents:
diff changeset
   257
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   258
// Slot: create view
hgs
parents:
diff changeset
   259
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   260
//
hgs
parents:
diff changeset
   261
void TestVideoFileDetails::testCreateView()
hgs
parents:
diff changeset
   262
{
hgs
parents:
diff changeset
   263
    init();
hgs
parents:
diff changeset
   264
    // actual create view is done in the init.
hgs
parents:
diff changeset
   265
    QVERIFY( mPlugin->mModel == mDummyModel );
hgs
parents:
diff changeset
   266
    QVERIFY( mPlugin->mIsService == false);
hgs
parents:
diff changeset
   267
    QVERIFY( mPlugin->mVideoServices == 0);
hgs
parents:
diff changeset
   268
    // testing the special case where the model is null.
hgs
parents:
diff changeset
   269
    cleanup();
hgs
parents:
diff changeset
   270
    mWrapper->setModel(0);
hgs
parents:
diff changeset
   271
    init();
hgs
parents:
diff changeset
   272
    QVERIFY( mPlugin->mModel == 0 );
hgs
parents:
diff changeset
   273
    QVERIFY( mPlugin->mIsService == false);
hgs
parents:
diff changeset
   274
    QVERIFY( mPlugin->mVideoServices == 0);
hgs
parents:
diff changeset
   275
    // TODO if the plugin is changed to throw exception in case of null model,
hgs
parents:
diff changeset
   276
    //      then it needs to be added here.
hgs
parents:
diff changeset
   277
    
hgs
parents:
diff changeset
   278
    // restoring the proper model.
hgs
parents:
diff changeset
   279
    mWrapper->setModel(mDummyModel);
hgs
parents:
diff changeset
   280
    cleanup();
hgs
parents:
diff changeset
   281
}
hgs
parents:
diff changeset
   282
hgs
parents:
diff changeset
   283
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   284
// Slot: destroy view
hgs
parents:
diff changeset
   285
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   286
//
hgs
parents:
diff changeset
   287
void TestVideoFileDetails::testDestroyView()
hgs
parents:
diff changeset
   288
{
hgs
parents:
diff changeset
   289
    init();
hgs
parents:
diff changeset
   290
    activateView();
hgs
parents:
diff changeset
   291
    mPlugin->destroyView();
hgs
parents:
diff changeset
   292
    QVERIFY( mPlugin->getView() == 0 );
hgs
parents:
diff changeset
   293
    // plugin is still alive
hgs
parents:
diff changeset
   294
    QVERIFY( mPlugin->viewPlugin() == mPlugin );
hgs
parents:
diff changeset
   295
    QVERIFY( mPlugin->mSecSkAction == 0 );
hgs
parents:
diff changeset
   296
    QVERIFY( mPlugin->mActivated == false );
hgs
parents:
diff changeset
   297
    cleanup();
hgs
parents:
diff changeset
   298
}
hgs
parents:
diff changeset
   299
hgs
parents:
diff changeset
   300
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   301
// Slot: activate view
hgs
parents:
diff changeset
   302
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   303
//
hgs
parents:
diff changeset
   304
void TestVideoFileDetails::testActivateViewPortrait()
hgs
parents:
diff changeset
   305
{
hgs
parents:
diff changeset
   306
    hbInstance->allMainWindows().at(0)->setOrientation(Qt::Vertical);
hgs
parents:
diff changeset
   307
    activateViewTestRound();  
hgs
parents:
diff changeset
   308
}
hgs
parents:
diff changeset
   309
hgs
parents:
diff changeset
   310
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   311
// Slot: activate view
hgs
parents:
diff changeset
   312
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   313
//
hgs
parents:
diff changeset
   314
void TestVideoFileDetails::testActivateViewLandscape()
hgs
parents:
diff changeset
   315
{
hgs
parents:
diff changeset
   316
    hbInstance->allMainWindows().at(0)->setOrientation(Qt::Horizontal);
hgs
parents:
diff changeset
   317
    activateViewTestRound();
hgs
parents:
diff changeset
   318
}
hgs
parents:
diff changeset
   319
hgs
parents:
diff changeset
   320
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   321
// Slot: activate view
hgs
parents:
diff changeset
   322
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   323
//
hgs
parents:
diff changeset
   324
void TestVideoFileDetails::testDeactivateView()
hgs
parents:
diff changeset
   325
{
hgs
parents:
diff changeset
   326
    init();
hgs
parents:
diff changeset
   327
    activateView();
hgs
parents:
diff changeset
   328
    mPlugin->deactivateView();
hgs
parents:
diff changeset
   329
    QVERIFY( mPlugin->mActivated == false );
hgs
parents:
diff changeset
   330
    QCOMPARE( mPlugin->mVideoIndex, -1 );
hgs
parents:
diff changeset
   331
    mPlugin->deactivateView();
hgs
parents:
diff changeset
   332
    QVERIFY( mPlugin->mActivated == false );
hgs
parents:
diff changeset
   333
    QCOMPARE( mPlugin->mVideoIndex, -1 );
hgs
parents:
diff changeset
   334
    cleanup();
hgs
parents:
diff changeset
   335
}
hgs
parents:
diff changeset
   336
hgs
parents:
diff changeset
   337
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   338
// Slot: data for orientation change test
hgs
parents:
diff changeset
   339
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   340
//
hgs
parents:
diff changeset
   341
void TestVideoFileDetails::testOrientationChange_data()
hgs
parents:
diff changeset
   342
{
hgs
parents:
diff changeset
   343
    QTest::addColumn<int>("start");
hgs
parents:
diff changeset
   344
    QTest::addColumn<int>("switchTo");
hgs
parents:
diff changeset
   345
    
hgs
parents:
diff changeset
   346
    QTest::newRow("from portrait to landscape") 
hgs
parents:
diff changeset
   347
            << static_cast<int>(Qt::Vertical) 
hgs
parents:
diff changeset
   348
            << static_cast<int>(Qt::Horizontal);
hgs
parents:
diff changeset
   349
    QTest::newRow("from landscape to portrait") 
hgs
parents:
diff changeset
   350
            << static_cast<int>(Qt::Horizontal) 
hgs
parents:
diff changeset
   351
            << static_cast<int>(Qt::Vertical);
hgs
parents:
diff changeset
   352
}
hgs
parents:
diff changeset
   353
hgs
parents:
diff changeset
   354
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   355
// Slot: test for the orientationChange slot
hgs
parents:
diff changeset
   356
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   357
//
hgs
parents:
diff changeset
   358
void TestVideoFileDetails::testOrientationChange()
hgs
parents:
diff changeset
   359
{
hgs
parents:
diff changeset
   360
    QFETCH(int, start);
hgs
parents:
diff changeset
   361
    QFETCH(int, switchTo);
hgs
parents:
diff changeset
   362
    
hgs
parents:
diff changeset
   363
    init();
hgs
parents:
diff changeset
   364
    hbInstance->allMainWindows().at(0)->setOrientation(static_cast<Qt::Orientation>(start));
hgs
parents:
diff changeset
   365
    activateView();
hgs
parents:
diff changeset
   366
    
hgs
parents:
diff changeset
   367
    hbInstance->allMainWindows().at(0)->setOrientation(static_cast<Qt::Orientation>(switchTo));
hgs
parents:
diff changeset
   368
    
hgs
parents:
diff changeset
   369
    // without this the view doesn't have the correct geometry.
hgs
parents:
diff changeset
   370
    mPlugin->getView()->setGeometry(hbInstance->allMainWindows().at(0)->rect());
hgs
parents:
diff changeset
   371
    // give fw some time to update content
hgs
parents:
diff changeset
   372
    QTest::qWait(100);
hgs
parents:
diff changeset
   373
    
hgs
parents:
diff changeset
   374
    verifyOrientation();
hgs
parents:
diff changeset
   375
    
hgs
parents:
diff changeset
   376
    cleanup();
hgs
parents:
diff changeset
   377
}
hgs
parents:
diff changeset
   378
hgs
parents:
diff changeset
   379
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   380
// Slot: test for the back slot
hgs
parents:
diff changeset
   381
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   382
//
hgs
parents:
diff changeset
   383
void TestVideoFileDetails::testBack()
hgs
parents:
diff changeset
   384
{
hgs
parents:
diff changeset
   385
    init();
hgs
parents:
diff changeset
   386
    connect(this, SIGNAL(testSignal()), mPlugin, SLOT(back()));
hgs
parents:
diff changeset
   387
    connect(mPlugin, SIGNAL(command(int)), this, SLOT(handleCommand(int)));
hgs
parents:
diff changeset
   388
    
hgs
parents:
diff changeset
   389
    emit testSignal();
hgs
parents:
diff changeset
   390
    QCOMPARE( mCommandReceived, false );
hgs
parents:
diff changeset
   391
    QCOMPARE( mReceivedCommand, -1 );
hgs
parents:
diff changeset
   392
    
hgs
parents:
diff changeset
   393
    mPlugin->mSecSkAction->trigger();
hgs
parents:
diff changeset
   394
    QCOMPARE( mCommandReceived, false );
hgs
parents:
diff changeset
   395
    QCOMPARE( mReceivedCommand, -1 );
hgs
parents:
diff changeset
   396
    
hgs
parents:
diff changeset
   397
    activateView();
hgs
parents:
diff changeset
   398
    
hgs
parents:
diff changeset
   399
    emit testSignal();
hgs
parents:
diff changeset
   400
    QCOMPARE( mCommandReceived, true );
hgs
parents:
diff changeset
   401
    QCOMPARE( mReceivedCommand, static_cast<int>(MpxHbVideoCommon::ActivateCollectionView) );
hgs
parents:
diff changeset
   402
    
hgs
parents:
diff changeset
   403
    mCommandReceived = false;
hgs
parents:
diff changeset
   404
    mReceivedCommand = -1;
hgs
parents:
diff changeset
   405
hgs
parents:
diff changeset
   406
    mPlugin->mSecSkAction->trigger();
hgs
parents:
diff changeset
   407
    QCOMPARE( mCommandReceived, true );
hgs
parents:
diff changeset
   408
    QCOMPARE( mReceivedCommand, static_cast<int>(MpxHbVideoCommon::ActivateCollectionView) );
hgs
parents:
diff changeset
   409
    
hgs
parents:
diff changeset
   410
    mCommandReceived = false;
hgs
parents:
diff changeset
   411
    mReceivedCommand = -1;
hgs
parents:
diff changeset
   412
    
hgs
parents:
diff changeset
   413
    mPlugin->deactivateView();
hgs
parents:
diff changeset
   414
    
hgs
parents:
diff changeset
   415
    emit testSignal();
hgs
parents:
diff changeset
   416
    QCOMPARE( mCommandReceived, false );
hgs
parents:
diff changeset
   417
    QCOMPARE( mReceivedCommand, -1 );
hgs
parents:
diff changeset
   418
    
hgs
parents:
diff changeset
   419
    mPlugin->mSecSkAction->trigger();
hgs
parents:
diff changeset
   420
    QCOMPARE( mCommandReceived, false );
hgs
parents:
diff changeset
   421
    QCOMPARE( mReceivedCommand, -1 );
hgs
parents:
diff changeset
   422
hgs
parents:
diff changeset
   423
    disconnect(mPlugin, SIGNAL(command(int)), this, SLOT(handleCommand(int)));
hgs
parents:
diff changeset
   424
    disconnect(this, SIGNAL(testSignal()), mPlugin, SLOT(back()));
hgs
parents:
diff changeset
   425
    cleanup();
hgs
parents:
diff changeset
   426
}
hgs
parents:
diff changeset
   427
hgs
parents:
diff changeset
   428
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   429
// Slot: test for the shortDetailsReadySlot
hgs
parents:
diff changeset
   430
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   431
//
hgs
parents:
diff changeset
   432
void TestVideoFileDetails::testShortDetailsReadySlot()
hgs
parents:
diff changeset
   433
{
hgs
parents:
diff changeset
   434
    const int testIndex = 5;
hgs
parents:
diff changeset
   435
    QStringList display;
hgs
parents:
diff changeset
   436
    display.append("first row");
hgs
parents:
diff changeset
   437
    display.append("second row");
hgs
parents:
diff changeset
   438
    QString filepath("filepath");
hgs
parents:
diff changeset
   439
    
hgs
parents:
diff changeset
   440
    // TODO need to add the default thumbnail checking.
hgs
parents:
diff changeset
   441
    
hgs
parents:
diff changeset
   442
    init();
hgs
parents:
diff changeset
   443
    activateView();
hgs
parents:
diff changeset
   444
    
hgs
parents:
diff changeset
   445
     // no data 
hgs
parents:
diff changeset
   446
    emit shortDetailsReady(testIndex);
hgs
parents:
diff changeset
   447
    
hgs
parents:
diff changeset
   448
    QCOMPARE( mPlugin->mVideoIndex, testIndex );
hgs
parents:
diff changeset
   449
    QVERIFY( mPlugin->mTitleAnim->text().isEmpty() );
hgs
parents:
diff changeset
   450
    QCOMPARE( mPlugin->mThumbnailManager->mRequests.count(), 0 );
hgs
parents:
diff changeset
   451
    QVERIFY( findWidget<HbPushButton>(TEST_VIDEO_DETAILS_BUTTON_PLAY)->primitive(HbStyle::P_PushButton_background)->isVisible() == false );
hgs
parents:
diff changeset
   452
    
hgs
parents:
diff changeset
   453
    mDummyModel->setData(Qt::DisplayRole, display);
hgs
parents:
diff changeset
   454
    mDummyModel->setData(VideoCollectionCommon::KeyFilePath, filepath);
hgs
parents:
diff changeset
   455
    
hgs
parents:
diff changeset
   456
    // no tn manager
hgs
parents:
diff changeset
   457
    ThumbnailManager *tmpTnManager = mPlugin->mThumbnailManager;
hgs
parents:
diff changeset
   458
    mPlugin->mThumbnailManager = 0;
hgs
parents:
diff changeset
   459
    emit shortDetailsReady(testIndex);
hgs
parents:
diff changeset
   460
    QCOMPARE( mPlugin->mVideoIndex, testIndex );
hgs
parents:
diff changeset
   461
    QCOMPARE( mPlugin->mTitleAnim->text(), display.at(0) );
hgs
parents:
diff changeset
   462
    QVERIFY( findWidget<HbPushButton>(TEST_VIDEO_DETAILS_BUTTON_PLAY)->primitive(HbStyle::P_PushButton_background)->isVisible() == false );    
hgs
parents:
diff changeset
   463
    mPlugin->mThumbnailManager = tmpTnManager;
hgs
parents:
diff changeset
   464
hgs
parents:
diff changeset
   465
    // data exists
hgs
parents:
diff changeset
   466
    emit shortDetailsReady(testIndex);
hgs
parents:
diff changeset
   467
    
hgs
parents:
diff changeset
   468
    QCOMPARE( mDummyModel->lastIndex().row(), testIndex );
hgs
parents:
diff changeset
   469
    QCOMPARE( mPlugin->mTitleAnim->text(), display.at(0) );
hgs
parents:
diff changeset
   470
    QVERIFY( ThumbnailManager::mRequests.contains(0) );
hgs
parents:
diff changeset
   471
    ThumbnailManager::TnRequest request = ThumbnailManager::mRequests[0];
hgs
parents:
diff changeset
   472
    QCOMPARE( request.name, filepath );
hgs
parents:
diff changeset
   473
    // 20 == priorityHight in this case
hgs
parents:
diff changeset
   474
    QCOMPARE( request.priority, 5000 );
hgs
parents:
diff changeset
   475
    QVERIFY( findWidget<HbPushButton>(TEST_VIDEO_DETAILS_BUTTON_PLAY)->primitive(HbStyle::P_PushButton_background)->isVisible() == false );
hgs
parents:
diff changeset
   476
hgs
parents:
diff changeset
   477
    
hgs
parents:
diff changeset
   478
    mDummyModel->setData(VideoCollectionCommon::KeyMetaData, createDummyMetadata() );
hgs
parents:
diff changeset
   479
    emit fullDetailsReady(testIndex);
hgs
parents:
diff changeset
   480
             
hgs
parents:
diff changeset
   481
    emit shortDetailsReady(testIndex);
hgs
parents:
diff changeset
   482
    QVERIFY( findWidget<HbPushButton>(TEST_VIDEO_DETAILS_BUTTON_PLAY)->primitive(HbStyle::P_PushButton_background)->isVisible() == false );
hgs
parents:
diff changeset
   483
    
hgs
parents:
diff changeset
   484
   int detailCount = sizeof(VideoCollectionCommon::VideoDetailLabelKeys) / sizeof(int);
hgs
parents:
diff changeset
   485
    for(int i = 1; i<=detailCount; i++) {
hgs
parents:
diff changeset
   486
        HbLabel* detail = findWidget<HbLabel>(TEST_VIDEO_DETAILS_ITEM + QString::number(i));
hgs
parents:
diff changeset
   487
        QVERIFY( detail->text().isEmpty() );
hgs
parents:
diff changeset
   488
    }
hgs
parents:
diff changeset
   489
   
hgs
parents:
diff changeset
   490
    QVERIFY( findWidget<HbPushButton>(TEST_VIDEO_DETAILS_BUTTON_PLAY)->icon().isNull() );
hgs
parents:
diff changeset
   491
            
hgs
parents:
diff changeset
   492
    cleanup();
hgs
parents:
diff changeset
   493
}
hgs
parents:
diff changeset
   494
hgs
parents:
diff changeset
   495
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   496
// Slot: test for the fullDetailsReadySlot
hgs
parents:
diff changeset
   497
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   498
//
hgs
parents:
diff changeset
   499
void TestVideoFileDetails::testFullDetailsReadySlot()
hgs
parents:
diff changeset
   500
{
hgs
parents:
diff changeset
   501
    const int testIndex = 6;
hgs
parents:
diff changeset
   502
    init();
hgs
parents:
diff changeset
   503
    activateView();
hgs
parents:
diff changeset
   504
    
hgs
parents:
diff changeset
   505
    int detailCount = sizeof(VideoCollectionCommon::VideoDetailLabelKeys) / sizeof(int);
hgs
parents:
diff changeset
   506
    for(int i = 1; i<=detailCount; i++) {
hgs
parents:
diff changeset
   507
        HbLabel* detail = findWidget<HbLabel>(TEST_VIDEO_DETAILS_ITEM + QString::number(i));
hgs
parents:
diff changeset
   508
        if(detail == 0)
hgs
parents:
diff changeset
   509
        {
hgs
parents:
diff changeset
   510
            QFAIL(QString("Found a null label at %1, check that the xml is "
hgs
parents:
diff changeset
   511
                "correct, and that the resource files have been regenerated (by running abld "
hgs
parents:
diff changeset
   512
                "reallyclean before build)").arg(TEST_VIDEO_DETAILS_ITEM + QString::number(i)).
hgs
parents:
diff changeset
   513
                toStdString().data());
hgs
parents:
diff changeset
   514
        }
hgs
parents:
diff changeset
   515
    }
hgs
parents:
diff changeset
   516
    
hgs
parents:
diff changeset
   517
    mDummyModel->setData(VideoCollectionCommon::KeyMetaData, createDummyMetadata() );
hgs
parents:
diff changeset
   518
       
hgs
parents:
diff changeset
   519
    emit fullDetailsReady(testIndex);
hgs
parents:
diff changeset
   520
    
hgs
parents:
diff changeset
   521
    // verify that actions are currently enabled.
hgs
parents:
diff changeset
   522
    HbPushButton* playBtn = findWidget<HbPushButton>(TEST_VIDEO_DETAILS_BUTTON_PLAY);
hgs
parents:
diff changeset
   523
    HbAction* shareAction = findObject<HbAction>(TEST_VIDEO_DETAILS_MENUACTION_SHARE);
hgs
parents:
diff changeset
   524
    HbAction* deleteAction = findObject<HbAction>(TEST_VIDEO_DETAILS_MENUACTION_DELETE);
hgs
parents:
diff changeset
   525
    
hgs
parents:
diff changeset
   526
    QVERIFY( playBtn != 0 );
hgs
parents:
diff changeset
   527
    QVERIFY( shareAction != 0 );
hgs
parents:
diff changeset
   528
    QVERIFY( deleteAction != 0 );
hgs
parents:
diff changeset
   529
    QVERIFY( playBtn->isEnabled() );
hgs
parents:
diff changeset
   530
    QVERIFY( shareAction->isEnabled() );
hgs
parents:
diff changeset
   531
    QVERIFY( deleteAction->isEnabled() );
hgs
parents:
diff changeset
   532
    
hgs
parents:
diff changeset
   533
    for(int i = 0; i<detailCount; i++) {        
hgs
parents:
diff changeset
   534
        QString expected = tr(VideoCollectionCommon::VideoDetailLabels[i]).arg(
hgs
parents:
diff changeset
   535
                VideoCollectionCommon::VideoDetailLabelKeys[i]);
hgs
parents:
diff changeset
   536
        HbLabel* detail = findWidget<HbLabel>(TEST_VIDEO_DETAILS_ITEM + QString::number(i+1));
hgs
parents:
diff changeset
   537
        QVERIFY( detail != 0 );
hgs
parents:
diff changeset
   538
        QVERIFY( detail->text().contains(expected) );
hgs
parents:
diff changeset
   539
    }
hgs
parents:
diff changeset
   540
    
hgs
parents:
diff changeset
   541
    // for coverity sake, retest without star-rating
hgs
parents:
diff changeset
   542
    mDummyModel->reset();
hgs
parents:
diff changeset
   543
    mDummyModel->setData(VideoCollectionCommon::KeyMetaData, createDummyMetadata(1) );
hgs
parents:
diff changeset
   544
    emit fullDetailsReady(testIndex);
hgs
parents:
diff changeset
   545
    for(int i = 0; i<detailCount; i++) 
hgs
parents:
diff changeset
   546
    {   
hgs
parents:
diff changeset
   547
        if(VideoCollectionCommon::VideoDetailLabelKeys[i] != VideoCollectionCommon::MetaKeyStarRating)
hgs
parents:
diff changeset
   548
        {
hgs
parents:
diff changeset
   549
            QString expected = tr(VideoCollectionCommon::VideoDetailLabels[i]).arg(
hgs
parents:
diff changeset
   550
                    VideoCollectionCommon::VideoDetailLabelKeys[i]);
hgs
parents:
diff changeset
   551
            HbLabel* detail = findWidget<HbLabel>(TEST_VIDEO_DETAILS_ITEM + QString::number(i+1));
hgs
parents:
diff changeset
   552
            QVERIFY( detail != 0 );
hgs
parents:
diff changeset
   553
            QVERIFY( detail->text().contains(expected) );
hgs
parents:
diff changeset
   554
        }
hgs
parents:
diff changeset
   555
    }
hgs
parents:
diff changeset
   556
    
hgs
parents:
diff changeset
   557
    cleanup();
hgs
parents:
diff changeset
   558
}
hgs
parents:
diff changeset
   559
hgs
parents:
diff changeset
   560
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   561
// Slot: test for the testStartPlaybackSlot
hgs
parents:
diff changeset
   562
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   563
//
hgs
parents:
diff changeset
   564
void TestVideoFileDetails::testStartPlaybackSlot()
hgs
parents:
diff changeset
   565
{
hgs
parents:
diff changeset
   566
    const int testIndex = 6;
hgs
parents:
diff changeset
   567
    mDummyModel->reset();
hgs
parents:
diff changeset
   568
    init();
hgs
parents:
diff changeset
   569
    activateView();
hgs
parents:
diff changeset
   570
    
hgs
parents:
diff changeset
   571
    // Note that if the details view has not received signal in it's 
hgs
parents:
diff changeset
   572
    // fullDetailsReadySlot, the button is disabled and should not do anything.
hgs
parents:
diff changeset
   573
    
hgs
parents:
diff changeset
   574
    HbPushButton* playBtn = findWidget<HbPushButton>(TEST_VIDEO_DETAILS_BUTTON_PLAY);
hgs
parents:
diff changeset
   575
    QVERIFY( playBtn != 0 );
hgs
parents:
diff changeset
   576
    playBtn->click();
hgs
parents:
diff changeset
   577
    
hgs
parents:
diff changeset
   578
    QCOMPARE( mDummyModel->startPlaybackIndex(), -1 );
hgs
parents:
diff changeset
   579
    
hgs
parents:
diff changeset
   580
    emit fullDetailsReady(testIndex);
hgs
parents:
diff changeset
   581
    mPlugin->mVideoIndex = testIndex;
hgs
parents:
diff changeset
   582
    
hgs
parents:
diff changeset
   583
    playBtn->click();
hgs
parents:
diff changeset
   584
    
hgs
parents:
diff changeset
   585
    QCOMPARE( mDummyModel->startPlaybackIndex(), testIndex );
hgs
parents:
diff changeset
   586
    
hgs
parents:
diff changeset
   587
    // invalid index
hgs
parents:
diff changeset
   588
    mPlugin->mVideoIndex = -1;
hgs
parents:
diff changeset
   589
    playBtn->click();
hgs
parents:
diff changeset
   590
    // startplayback index has not changed since previous
hgs
parents:
diff changeset
   591
    QCOMPARE( mDummyModel->startPlaybackIndex(), testIndex );
hgs
parents:
diff changeset
   592
    
hgs
parents:
diff changeset
   593
    cleanup();
hgs
parents:
diff changeset
   594
}
hgs
parents:
diff changeset
   595
hgs
parents:
diff changeset
   596
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   597
// Slot: test for the sendVideoSlot
hgs
parents:
diff changeset
   598
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   599
//
hgs
parents:
diff changeset
   600
void TestVideoFileDetails::testSendVideoSlot()
hgs
parents:
diff changeset
   601
{
hgs
parents:
diff changeset
   602
    // TODO add test after send video has been implemented.
hgs
parents:
diff changeset
   603
}
hgs
parents:
diff changeset
   604
hgs
parents:
diff changeset
   605
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   606
// Slot: test for the deleteVideoSlot
hgs
parents:
diff changeset
   607
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   608
//
hgs
parents:
diff changeset
   609
void TestVideoFileDetails::testDeleteVideoSlot()
hgs
parents:
diff changeset
   610
{
hgs
parents:
diff changeset
   611
    mDummyModel->reset();
hgs
parents:
diff changeset
   612
    init();
hgs
parents:
diff changeset
   613
    
hgs
parents:
diff changeset
   614
    HbAction* deleteAction = findObject<HbAction>(TEST_VIDEO_DETAILS_MENUACTION_DELETE);
hgs
parents:
diff changeset
   615
    
hgs
parents:
diff changeset
   616
    QVERIFY( deleteAction != 0 ); 
hgs
parents:
diff changeset
   617
    deleteAction->trigger();
hgs
parents:
diff changeset
   618
    QCOMPARE( mDummyModel->dataAccessCount(), 0 );    
hgs
parents:
diff changeset
   619
    mPlugin->mVideoIndex = 0;
hgs
parents:
diff changeset
   620
    
hgs
parents:
diff changeset
   621
    mDummyModel->setDataReturnInvalid(true);
hgs
parents:
diff changeset
   622
    QModelIndex expected = mDummyModel->index(0, 0);
hgs
parents:
diff changeset
   623
    deleteAction->trigger();
hgs
parents:
diff changeset
   624
    QCOMPARE( mDummyModel->dataAccessCount(), 1 );
hgs
parents:
diff changeset
   625
    QVERIFY( mDummyModel->lastIndex() == expected );
hgs
parents:
diff changeset
   626
    QCOMPARE( mDummyModel->deleteFileIndex(), -1 ); // verify that no file was deleted.
hgs
parents:
diff changeset
   627
    mDummyModel->setDataReturnInvalid(false);
hgs
parents:
diff changeset
   628
hgs
parents:
diff changeset
   629
    mPlugin->mVideoIndex = 0;
hgs
parents:
diff changeset
   630
    expected = mDummyModel->index(0, 0);
hgs
parents:
diff changeset
   631
    deleteAction->trigger();
hgs
parents:
diff changeset
   632
    QCOMPARE( mDummyModel->dataAccessCount(), 2 );
hgs
parents:
diff changeset
   633
    QVERIFY( mDummyModel->lastIndex() == expected );
hgs
parents:
diff changeset
   634
    QCOMPARE( mDummyModel->deleteFileIndex(), -1 ); // verify that no file was deleted.
hgs
parents:
diff changeset
   635
    
hgs
parents:
diff changeset
   636
    QStringList display;
hgs
parents:
diff changeset
   637
    display.append("first row");
hgs
parents:
diff changeset
   638
    display.append("second row");
hgs
parents:
diff changeset
   639
    mDummyModel->setData(Qt::DisplayRole, display);
hgs
parents:
diff changeset
   640
    
hgs
parents:
diff changeset
   641
    QString expectedText = tr("Do you want to delete \"%1\"?").arg(
hgs
parents:
diff changeset
   642
            display.at(0));
hgs
parents:
diff changeset
   643
    
hgs
parents:
diff changeset
   644
    HbMessageBox::mQuestionReturnValue = true;
hgs
parents:
diff changeset
   645
    deleteAction->trigger();
hgs
parents:
diff changeset
   646
    QCOMPARE( mDummyModel->dataAccessCount(), 3 );
hgs
parents:
diff changeset
   647
    QVERIFY( mDummyModel->lastIndex() == expected );
hgs
parents:
diff changeset
   648
    QCOMPARE( mDummyModel->deleteFileIndex(), expected.row() );
hgs
parents:
diff changeset
   649
    QCOMPARE( HbMessageBox::mLatestTxt, expectedText );
hgs
parents:
diff changeset
   650
    
hgs
parents:
diff changeset
   651
    HbMessageBox::mQuestionReturnValue = false;
hgs
parents:
diff changeset
   652
    deleteAction->trigger();
hgs
parents:
diff changeset
   653
    QCOMPARE( mDummyModel->dataAccessCount(), 4 );
hgs
parents:
diff changeset
   654
    QVERIFY( mDummyModel->lastIndex() == expected );
hgs
parents:
diff changeset
   655
    QCOMPARE( mDummyModel->deleteFileIndex(), expected.row() );
hgs
parents:
diff changeset
   656
    QCOMPARE( HbMessageBox::mLatestTxt, expectedText );
hgs
parents:
diff changeset
   657
    
hgs
parents:
diff changeset
   658
hgs
parents:
diff changeset
   659
    mDummyModel->reset();
hgs
parents:
diff changeset
   660
    HbMessageBox::mQuestionReturnValue = false;
hgs
parents:
diff changeset
   661
    deleteAction->trigger();
hgs
parents:
diff changeset
   662
    QCOMPARE( mDummyModel->dataAccessCount(), 1 );
hgs
parents:
diff changeset
   663
    QVERIFY( mDummyModel->lastIndex() == expected );
hgs
parents:
diff changeset
   664
    QCOMPARE( mDummyModel->deleteFileIndex(), -1 ); // verify that no file was deleted.
hgs
parents:
diff changeset
   665
    QCOMPARE( HbMessageBox::mLatestTxt, expectedText );
hgs
parents:
diff changeset
   666
    
hgs
parents:
diff changeset
   667
    cleanup();
hgs
parents:
diff changeset
   668
}
hgs
parents:
diff changeset
   669
hgs
parents:
diff changeset
   670
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   671
// Slot: test for the testRowsRemovedSlot
hgs
parents:
diff changeset
   672
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   673
//
hgs
parents:
diff changeset
   674
void TestVideoFileDetails::testRowsRemovedSlot()
hgs
parents:
diff changeset
   675
{
hgs
parents:
diff changeset
   676
    const int testIndex = 9;
hgs
parents:
diff changeset
   677
    init();
hgs
parents:
diff changeset
   678
    connect(mPlugin, SIGNAL(command(int)), this, SLOT(handleCommand(int)));
hgs
parents:
diff changeset
   679
    
hgs
parents:
diff changeset
   680
    emit rowsRemoved(QModelIndex(), testIndex, testIndex);
hgs
parents:
diff changeset
   681
    QCOMPARE( mCommandReceived, false );
hgs
parents:
diff changeset
   682
    QCOMPARE( mReceivedCommand, -1 );
hgs
parents:
diff changeset
   683
    
hgs
parents:
diff changeset
   684
    activateView();
hgs
parents:
diff changeset
   685
    
hgs
parents:
diff changeset
   686
    emit rowsRemoved(QModelIndex(), testIndex, testIndex);
hgs
parents:
diff changeset
   687
    QCOMPARE( mCommandReceived, false );
hgs
parents:
diff changeset
   688
    QCOMPARE( mReceivedCommand, -1 );
hgs
parents:
diff changeset
   689
    
hgs
parents:
diff changeset
   690
    emit fullDetailsReady(testIndex);
hgs
parents:
diff changeset
   691
    mPlugin->mVideoIndex = testIndex;
hgs
parents:
diff changeset
   692
    
hgs
parents:
diff changeset
   693
    emit rowsRemoved(QModelIndex(), testIndex+1, testIndex-1);
hgs
parents:
diff changeset
   694
    QCOMPARE( mCommandReceived, false );
hgs
parents:
diff changeset
   695
    QCOMPARE( mReceivedCommand, -1 );
hgs
parents:
diff changeset
   696
hgs
parents:
diff changeset
   697
    emit rowsRemoved(QModelIndex(), testIndex-3, testIndex-1);
hgs
parents:
diff changeset
   698
    QCOMPARE( mCommandReceived, false );
hgs
parents:
diff changeset
   699
    QCOMPARE( mReceivedCommand, -1 );
hgs
parents:
diff changeset
   700
    
hgs
parents:
diff changeset
   701
    emit rowsRemoved(QModelIndex(), testIndex+1, testIndex+3);
hgs
parents:
diff changeset
   702
    QCOMPARE( mCommandReceived, false );
hgs
parents:
diff changeset
   703
    QCOMPARE( mReceivedCommand, -1 );
hgs
parents:
diff changeset
   704
    
hgs
parents:
diff changeset
   705
    emit rowsRemoved(QModelIndex(), testIndex, testIndex);
hgs
parents:
diff changeset
   706
    QCOMPARE( mCommandReceived, true );
hgs
parents:
diff changeset
   707
    QCOMPARE( mReceivedCommand, static_cast<int>(MpxHbVideoCommon::ActivateCollectionView) );
hgs
parents:
diff changeset
   708
    
hgs
parents:
diff changeset
   709
    disconnect(mPlugin, SIGNAL(command(int)), this, SLOT(handleCommand(int)));
hgs
parents:
diff changeset
   710
    cleanup();
hgs
parents:
diff changeset
   711
}
hgs
parents:
diff changeset
   712
hgs
parents:
diff changeset
   713
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   714
// Slot: testHandleErrorSlot test error messages
hgs
parents:
diff changeset
   715
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   716
//
hgs
parents:
diff changeset
   717
void TestVideoFileDetails::testHandleErrorSlot()
hgs
parents:
diff changeset
   718
{
hgs
parents:
diff changeset
   719
    init();
hgs
parents:
diff changeset
   720
    connect(this, SIGNAL(testErrorSignal(int, QVariant&)), mPlugin, SLOT(handleErrorSlot(int, QVariant&)));
hgs
parents:
diff changeset
   721
hgs
parents:
diff changeset
   722
    HbMessageBox::mLatestTxt = "";
hgs
parents:
diff changeset
   723
    QVariant additional =  QVariant();
hgs
parents:
diff changeset
   724
    // invalid msg,
hgs
parents:
diff changeset
   725
    emit testErrorSignal( VideoCollectionCommon::statusMultipleDeleteFail + 1, additional);
hgs
parents:
diff changeset
   726
    
hgs
parents:
diff changeset
   727
    QVERIFY(HbMessageBox::mLatestTxt.isEmpty());
hgs
parents:
diff changeset
   728
     
hgs
parents:
diff changeset
   729
    // VideoCollectionCommon::statusSingleDeleteFail
hgs
parents:
diff changeset
   730
    // - without additional data
hgs
parents:
diff changeset
   731
    emit testErrorSignal( VideoCollectionCommon::statusSingleDeleteFail , additional);
hgs
parents:
diff changeset
   732
    QVERIFY(HbMessageBox::mLatestTxt.isEmpty());
hgs
parents:
diff changeset
   733
    
hgs
parents:
diff changeset
   734
    // - with additional data
hgs
parents:
diff changeset
   735
    QString txt = "testdata";
hgs
parents:
diff changeset
   736
    additional = txt;
hgs
parents:
diff changeset
   737
    emit testErrorSignal( VideoCollectionCommon::statusSingleDeleteFail , additional);
hgs
parents:
diff changeset
   738
    QCOMPARE(HbMessageBox::mLatestTxt, QString("Unable to delete item %1. It is currently open.").arg(txt));
hgs
parents:
diff changeset
   739
    
hgs
parents:
diff changeset
   740
    HbMessageBox::mLatestTxt = "";
hgs
parents:
diff changeset
   741
    // VideoCollectionCommon::statusMultipleDeleteFail
hgs
parents:
diff changeset
   742
    emit testErrorSignal( VideoCollectionCommon::statusMultipleDeleteFail , additional);
hgs
parents:
diff changeset
   743
    QVERIFY(HbMessageBox::mLatestTxt.isEmpty());
hgs
parents:
diff changeset
   744
    
hgs
parents:
diff changeset
   745
    disconnect(this, SIGNAL(testErrorSignal(int, QVariant&)), mPlugin, SLOT(handleErrorSlot(int, QVariant&)));
hgs
parents:
diff changeset
   746
    
hgs
parents:
diff changeset
   747
    cleanup();
hgs
parents:
diff changeset
   748
}
hgs
parents:
diff changeset
   749
hgs
parents:
diff changeset
   750
hgs
parents:
diff changeset
   751
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   752
// Slot: test for the testThumbnailReadySlot
hgs
parents:
diff changeset
   753
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   754
//
hgs
parents:
diff changeset
   755
void TestVideoFileDetails::testThumbnailReadySlot()
hgs
parents:
diff changeset
   756
{
hgs
parents:
diff changeset
   757
    int testIndex = 9;
hgs
parents:
diff changeset
   758
    QStringList display;
hgs
parents:
diff changeset
   759
    display.append("first row");
hgs
parents:
diff changeset
   760
    display.append("second row");
hgs
parents:
diff changeset
   761
    QString filepath("filepath");
hgs
parents:
diff changeset
   762
    
hgs
parents:
diff changeset
   763
    init();
hgs
parents:
diff changeset
   764
    activateView();
hgs
parents:
diff changeset
   765
    
hgs
parents:
diff changeset
   766
    mDummyModel->setData(Qt::DisplayRole, display);
hgs
parents:
diff changeset
   767
    mDummyModel->setData(VideoCollectionCommon::KeyFilePath, filepath);
hgs
parents:
diff changeset
   768
hgs
parents:
diff changeset
   769
    emit shortDetailsReady(testIndex);
hgs
parents:
diff changeset
   770
    
hgs
parents:
diff changeset
   771
    mPlugin->mThumbnailManager->mThumbnailReadyError = -1;
hgs
parents:
diff changeset
   772
    mPlugin->mThumbnailManager->emitThumbnailReady(0);
hgs
parents:
diff changeset
   773
    
hgs
parents:
diff changeset
   774
    QVERIFY( findWidget<HbPushButton>(TEST_VIDEO_DETAILS_BUTTON_PLAY)->icon().qicon().isNull() == false );
hgs
parents:
diff changeset
   775
    
hgs
parents:
diff changeset
   776
    mPlugin->mThumbnailManager->mThumbnailReadyError = 0;
hgs
parents:
diff changeset
   777
    emit shortDetailsReady(testIndex);
hgs
parents:
diff changeset
   778
    mPlugin->mThumbnailManager->emitThumbnailReady(0);
hgs
parents:
diff changeset
   779
    
hgs
parents:
diff changeset
   780
    QVERIFY( findWidget<HbPushButton>(TEST_VIDEO_DETAILS_BUTTON_PLAY)->icon().qicon().isNull() == false );
hgs
parents:
diff changeset
   781
    
hgs
parents:
diff changeset
   782
    cleanup();
hgs
parents:
diff changeset
   783
}
hgs
parents:
diff changeset
   784
hgs
parents:
diff changeset
   785
hgs
parents:
diff changeset
   786
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   787
// findWidget
hgs
parents:
diff changeset
   788
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   789
//
hgs
parents:
diff changeset
   790
template<class T> 
hgs
parents:
diff changeset
   791
T* TestVideoFileDetails::findWidget(QString name)
hgs
parents:
diff changeset
   792
{
hgs
parents:
diff changeset
   793
    return qobject_cast<T *>(mPlugin->mView.findWidget(name));
hgs
parents:
diff changeset
   794
}
hgs
parents:
diff changeset
   795
hgs
parents:
diff changeset
   796
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   797
// findObject
hgs
parents:
diff changeset
   798
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   799
//
hgs
parents:
diff changeset
   800
template<class T> 
hgs
parents:
diff changeset
   801
T* TestVideoFileDetails::findObject(QString name)
hgs
parents:
diff changeset
   802
{
hgs
parents:
diff changeset
   803
    return qobject_cast<T *>(mPlugin->mView.findObject(name));
hgs
parents:
diff changeset
   804
}
hgs
parents:
diff changeset
   805
hgs
parents:
diff changeset
   806
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   807
// main
hgs
parents:
diff changeset
   808
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   809
//
hgs
parents:
diff changeset
   810
int main(int argc, char *argv[])
hgs
parents:
diff changeset
   811
{
hgs
parents:
diff changeset
   812
    HbApplication app(argc, argv);
hgs
parents:
diff changeset
   813
    HbApplication::setKeypadNavigationEnabled(false);
hgs
parents:
diff changeset
   814
    HbMainWindow mainWindow;
hgs
parents:
diff changeset
   815
    mainWindow.show();
hgs
parents:
diff changeset
   816
    
hgs
parents:
diff changeset
   817
    TestVideoFileDetails tc;
hgs
parents:
diff changeset
   818
    
hgs
parents:
diff changeset
   819
    char *pass[3];
hgs
parents:
diff changeset
   820
    pass[0] = argv[0];
hgs
parents:
diff changeset
   821
    pass[1] = "-o";
hgs
parents:
diff changeset
   822
    pass[2] = "c:\\data\\testvideofiledetailsviewplugin.txt";
hgs
parents:
diff changeset
   823
hgs
parents:
diff changeset
   824
    return QTest::qExec(&tc, 3, pass);
hgs
parents:
diff changeset
   825
}
hgs
parents:
diff changeset
   826
hgs
parents:
diff changeset
   827
// end of file