videocollection/videofiledetailsview/src/videofiledetailsviewplugin.cpp
author hgs
Thu, 01 Apr 2010 23:22:15 +0300
changeset 34 bbb98528c666
parent 30 4f111d64a341
child 35 3738fe97f027
permissions -rw-r--r--
201009
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
30
hgs
parents:
diff changeset
     1
/*
34
hgs
parents: 30
diff changeset
     2
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
30
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:   VideoCollectionViewPlugin class implementation
34
hgs
parents: 30
diff changeset
    15
*
30
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
// INCLUDE FILES
34
hgs
parents: 30
diff changeset
    19
#include <qcoreapplication.h>
30
hgs
parents:
diff changeset
    20
#include <xqserviceutil.h>
hgs
parents:
diff changeset
    21
#include <xqplugin.h>
hgs
parents:
diff changeset
    22
#include <hbview.h>
hgs
parents:
diff changeset
    23
#include <hbinstance.h>
hgs
parents:
diff changeset
    24
#include <hbstackedwidget.h>
hgs
parents:
diff changeset
    25
#include <hbmarqueeitem.h>
hgs
parents:
diff changeset
    26
#include <hbpushbutton.h>
hgs
parents:
diff changeset
    27
#include <hbaction.h>
hgs
parents:
diff changeset
    28
#include <qabstractitemmodel.h>
hgs
parents:
diff changeset
    29
#include <qdebug.h>
hgs
parents:
diff changeset
    30
#include <hbmessagebox.h>
34
hgs
parents: 30
diff changeset
    31
#include <hblistwidget.h>
hgs
parents: 30
diff changeset
    32
#include <hblistwidgetitem.h>
hgs
parents: 30
diff changeset
    33
#include <hblistviewitem.h>
30
hgs
parents:
diff changeset
    34
#include <cmath>
hgs
parents:
diff changeset
    35
#include <thumbnailmanager_qt.h>
hgs
parents:
diff changeset
    36
#include "videocollectionclient.h"
hgs
parents:
diff changeset
    37
#include "videofiledetailsviewplugin.h"
hgs
parents:
diff changeset
    38
#include "videocollectioncommon.h"
hgs
parents:
diff changeset
    39
#include "mpxhbvideocommondefs.h"
hgs
parents:
diff changeset
    40
#include "videocollectionwrapper.h"
hgs
parents:
diff changeset
    41
#include "videosortfilterproxymodel.h"
hgs
parents:
diff changeset
    42
#include "videoservices.h"
34
hgs
parents: 30
diff changeset
    43
#include "videodetailslabel.h"
30
hgs
parents:
diff changeset
    44
hgs
parents:
diff changeset
    45
const char* const VIDEO_DETAILS_DOCML = ":/xml/videofiledetails.docml";
hgs
parents:
diff changeset
    46
const char* const VIDEO_DETAILS_GFX_PLAY = ":/gfx/play.png";
hgs
parents:
diff changeset
    47
const char* const VIDEO_DETAILS_GFX_DEFAULT = ":/gfx/pri_large_video.svg";
hgs
parents:
diff changeset
    48
const char* const VIDEO_DETAILS_VIEW = "videofiledetailsview";
hgs
parents:
diff changeset
    49
const char* const VIDEO_DETAILS_TITLE = "mLblTitle";
34
hgs
parents: 30
diff changeset
    50
const char* const VIDEO_DETAILS_THUMBNAIL = "mDetailsLabel";
hgs
parents: 30
diff changeset
    51
const char* const VIDEO_DETAILS_BUTTON = "mButton";
30
hgs
parents:
diff changeset
    52
const char* const VIDEO_DETAILS_MENUACTION_DELETE = "mOptionsDelete";
34
hgs
parents: 30
diff changeset
    53
const char* const VIDEO_DETAILS_LISTWIDGET ="mDetailsList";
30
hgs
parents:
diff changeset
    54
34
hgs
parents: 30
diff changeset
    55
// Just for testing, remove this
30
hgs
parents:
diff changeset
    56
void _DebugNotImplementedYet()
hgs
parents:
diff changeset
    57
{
hgs
parents:
diff changeset
    58
    HbMessageBox::information(QObject::tr("Not implemented yet"));
hgs
parents:
diff changeset
    59
}
hgs
parents:
diff changeset
    60
hgs
parents:
diff changeset
    61
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    62
// Constructor
hgs
parents:
diff changeset
    63
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    64
//
hgs
parents:
diff changeset
    65
VideoFileDetailsViewPlugin::VideoFileDetailsViewPlugin()
hgs
parents:
diff changeset
    66
    : mModel(0),
hgs
parents:
diff changeset
    67
      mVideoServices(0),
hgs
parents:
diff changeset
    68
      mActivated(false),
hgs
parents:
diff changeset
    69
      mIsService(false),
hgs
parents:
diff changeset
    70
      mCreated(VideoFileDetailsViewPlugin::ENotCreated),
34
hgs
parents: 30
diff changeset
    71
      mVideoId(TMPXItemId::InvalidId()),
hgs
parents: 30
diff changeset
    72
      mDeletedIndex(-1),
hgs
parents: 30
diff changeset
    73
      mNavKeyBackAction(0),
30
hgs
parents:
diff changeset
    74
      mTitleAnim(0),
34
hgs
parents: 30
diff changeset
    75
      mThumbLabel(0),
hgs
parents: 30
diff changeset
    76
      mThumbnailManager(0),
hgs
parents: 30
diff changeset
    77
      mCollectionWrapper(VideoCollectionWrapper::instance())
30
hgs
parents:
diff changeset
    78
{
34
hgs
parents: 30
diff changeset
    79
30
hgs
parents:
diff changeset
    80
}
hgs
parents:
diff changeset
    81
hgs
parents:
diff changeset
    82
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    83
// Destructor
hgs
parents:
diff changeset
    84
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    85
//
hgs
parents:
diff changeset
    86
VideoFileDetailsViewPlugin::~VideoFileDetailsViewPlugin()
hgs
parents:
diff changeset
    87
{
34
hgs
parents: 30
diff changeset
    88
	destroyView();
30
hgs
parents:
diff changeset
    89
}
hgs
parents:
diff changeset
    90
hgs
parents:
diff changeset
    91
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    92
// Create view
hgs
parents:
diff changeset
    93
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    94
//
hgs
parents:
diff changeset
    95
void VideoFileDetailsViewPlugin::createView()
hgs
parents:
diff changeset
    96
{
hgs
parents:
diff changeset
    97
    if (VideoFileDetailsViewPlugin::EPreCreated == mCreated)
hgs
parents:
diff changeset
    98
    {
hgs
parents:
diff changeset
    99
    	finalizeCreateView();
hgs
parents:
diff changeset
   100
    }
hgs
parents:
diff changeset
   101
    else if (VideoFileDetailsViewPlugin::ENotCreated == mCreated)
hgs
parents:
diff changeset
   102
    {
hgs
parents:
diff changeset
   103
    	preCreateView();
hgs
parents:
diff changeset
   104
    }
hgs
parents:
diff changeset
   105
}
hgs
parents:
diff changeset
   106
hgs
parents:
diff changeset
   107
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   108
// preCreateView
hgs
parents:
diff changeset
   109
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   110
//
hgs
parents:
diff changeset
   111
void VideoFileDetailsViewPlugin::preCreateView()
hgs
parents:
diff changeset
   112
{
hgs
parents:
diff changeset
   113
	mActivated = false;
hgs
parents:
diff changeset
   114
	mCreated = VideoFileDetailsViewPlugin::EPreCreated;
34
hgs
parents: 30
diff changeset
   115
30
hgs
parents:
diff changeset
   116
	if (!mThumbnailManager)
hgs
parents:
diff changeset
   117
	{
hgs
parents:
diff changeset
   118
		mThumbnailManager = new ThumbnailManager();
hgs
parents:
diff changeset
   119
	}
hgs
parents:
diff changeset
   120
}
hgs
parents:
diff changeset
   121
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   122
// finalizeCreateView
hgs
parents:
diff changeset
   123
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   124
//
hgs
parents:
diff changeset
   125
void VideoFileDetailsViewPlugin::finalizeCreateView()
hgs
parents:
diff changeset
   126
{
hgs
parents:
diff changeset
   127
	mView.reset();
hgs
parents:
diff changeset
   128
	mActivated = false;
hgs
parents:
diff changeset
   129
	mCreated = VideoFileDetailsViewPlugin::EFinalized;
hgs
parents:
diff changeset
   130
	bool ok = false;
hgs
parents:
diff changeset
   131
	mView.load(VIDEO_DETAILS_DOCML, &ok);
hgs
parents:
diff changeset
   132
34
hgs
parents: 30
diff changeset
   133
	mModel = mCollectionWrapper.getModel(VideoCollectionWrapper::EAllVideos);
30
hgs
parents:
diff changeset
   134
hgs
parents:
diff changeset
   135
	if (!mModel)
hgs
parents:
diff changeset
   136
		{
hgs
parents:
diff changeset
   137
		qDebug() << "VideoFileDetailsViewPlugin::createView(): Unable to open collection wrapper. Cannot connect slots, aborting...";
hgs
parents:
diff changeset
   138
		// TODO need to throw exception instead?
hgs
parents:
diff changeset
   139
		return;
hgs
parents:
diff changeset
   140
		}
hgs
parents:
diff changeset
   141
hgs
parents:
diff changeset
   142
	mIsService = XQServiceUtil::isService();
hgs
parents:
diff changeset
   143
hgs
parents:
diff changeset
   144
	// no deallocation needed for this since
hgs
parents:
diff changeset
   145
	// stackedwidget takes ownership
hgs
parents:
diff changeset
   146
	mTitleAnim = new HbMarqueeItem;
34
hgs
parents: 30
diff changeset
   147
	HbFontSpec spec = mTitleAnim->fontSpec();
hgs
parents: 30
diff changeset
   148
    spec.setRole( HbFontSpec::Primary );
hgs
parents: 30
diff changeset
   149
    mTitleAnim->setFontSpec( spec );
hgs
parents: 30
diff changeset
   150
    mTitleAnim->setLoopCount(-1);
hgs
parents: 30
diff changeset
   151
hgs
parents: 30
diff changeset
   152
	connect(mModel->sourceModel(),
hgs
parents: 30
diff changeset
   153
			SIGNAL(shortDetailsReady(TMPXItemId)),
hgs
parents: 30
diff changeset
   154
			this, SLOT(shortDetailsReadySlot(TMPXItemId)));
30
hgs
parents:
diff changeset
   155
hgs
parents:
diff changeset
   156
	connect(mModel,
34
hgs
parents: 30
diff changeset
   157
			SIGNAL(fullDetailsReady(TMPXItemId)),
hgs
parents: 30
diff changeset
   158
			this, SLOT(fullDetailsReadySlot(TMPXItemId)));
30
hgs
parents:
diff changeset
   159
hgs
parents:
diff changeset
   160
	connect(mModel,
hgs
parents:
diff changeset
   161
			SIGNAL(rowsRemoved(const QModelIndex&, int, int)),
hgs
parents:
diff changeset
   162
			this, SLOT(rowsRemovedSlot(const QModelIndex&, int, int)));
hgs
parents:
diff changeset
   163
34
hgs
parents: 30
diff changeset
   164
	HbStackedWidget* thumbWidget = findWidget<HbStackedWidget>(VIDEO_DETAILS_THUMBNAIL);
hgs
parents: 30
diff changeset
   165
hgs
parents: 30
diff changeset
   166
	// no deallocation needed for this since
hgs
parents: 30
diff changeset
   167
	// stackedwidget takes ownership
hgs
parents: 30
diff changeset
   168
	mThumbLabel = new VideoDetailsLabel;
hgs
parents: 30
diff changeset
   169
hgs
parents: 30
diff changeset
   170
	mThumbLabel->setAlignment(Qt::AlignCenter);
hgs
parents: 30
diff changeset
   171
hgs
parents: 30
diff changeset
   172
	connect(mThumbLabel, SIGNAL(clicked(bool)), this, SLOT(startPlaybackSlot()));
hgs
parents: 30
diff changeset
   173
hgs
parents: 30
diff changeset
   174
	thumbWidget->addWidget(mThumbLabel);
hgs
parents: 30
diff changeset
   175
30
hgs
parents:
diff changeset
   176
	HbStackedWidget* title = findObject<HbStackedWidget>(VIDEO_DETAILS_TITLE);
hgs
parents:
diff changeset
   177
	title->addWidget(mTitleAnim);
hgs
parents:
diff changeset
   178
hgs
parents:
diff changeset
   179
	HbAction* deleteAction = findObject<HbAction>(VIDEO_DETAILS_MENUACTION_DELETE);
hgs
parents:
diff changeset
   180
hgs
parents:
diff changeset
   181
	if (mIsService)
hgs
parents:
diff changeset
   182
	{
hgs
parents:
diff changeset
   183
		deleteAction->setVisible(false);
hgs
parents:
diff changeset
   184
	}
hgs
parents:
diff changeset
   185
	else
hgs
parents:
diff changeset
   186
	{
hgs
parents:
diff changeset
   187
		connect(deleteAction, SIGNAL(triggered(bool)), this, SLOT(deleteVideoSlot()));
hgs
parents:
diff changeset
   188
	}
hgs
parents:
diff changeset
   189
	
34
hgs
parents: 30
diff changeset
   190
	// Create navigation keys.
hgs
parents: 30
diff changeset
   191
	mNavKeyBackAction = new HbAction(Hb::BackNaviAction);
hgs
parents: 30
diff changeset
   192
	
hgs
parents: 30
diff changeset
   193
	connect(mThumbnailManager, SIGNAL(thumbnailReady(QPixmap,void*,int,int)),
30
hgs
parents:
diff changeset
   194
			this, SLOT(thumbnailReadySlot(QPixmap,void*,int,int)));
hgs
parents:
diff changeset
   195
}
hgs
parents:
diff changeset
   196
hgs
parents:
diff changeset
   197
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   198
// Destroy view
hgs
parents:
diff changeset
   199
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   200
//
hgs
parents:
diff changeset
   201
void VideoFileDetailsViewPlugin::destroyView()
hgs
parents:
diff changeset
   202
{
hgs
parents:
diff changeset
   203
    if (mActivated)
hgs
parents:
diff changeset
   204
    {
hgs
parents:
diff changeset
   205
        deactivateView();
hgs
parents:
diff changeset
   206
    }
hgs
parents:
diff changeset
   207
hgs
parents:
diff changeset
   208
    if(mVideoServices)
hgs
parents:
diff changeset
   209
    {
hgs
parents:
diff changeset
   210
    	mVideoServices->decreaseReferenceCount();
hgs
parents:
diff changeset
   211
    	mVideoServices = 0;
hgs
parents:
diff changeset
   212
    }
hgs
parents:
diff changeset
   213
34
hgs
parents: 30
diff changeset
   214
    delete mNavKeyBackAction; mNavKeyBackAction = 0;
30
hgs
parents:
diff changeset
   215
    delete mThumbnailManager; mThumbnailManager = 0;
hgs
parents:
diff changeset
   216
    disconnect();
hgs
parents:
diff changeset
   217
    mView.reset();
hgs
parents:
diff changeset
   218
}
hgs
parents:
diff changeset
   219
hgs
parents:
diff changeset
   220
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   221
// Activate view
hgs
parents:
diff changeset
   222
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   223
//
hgs
parents:
diff changeset
   224
void VideoFileDetailsViewPlugin::activateView()
hgs
parents:
diff changeset
   225
{
hgs
parents:
diff changeset
   226
	if ( !mActivated && (VideoFileDetailsViewPlugin::EFinalized == mCreated))
hgs
parents:
diff changeset
   227
    {
hgs
parents:
diff changeset
   228
        HbMainWindow *mainWnd = hbInstance->allMainWindows().value(0);
hgs
parents:
diff changeset
   229
34
hgs
parents: 30
diff changeset
   230
        HbView *currentView = mainWnd->currentView();
hgs
parents: 30
diff changeset
   231
        if(currentView && mNavKeyBackAction)
hgs
parents: 30
diff changeset
   232
        {
hgs
parents: 30
diff changeset
   233
        	if (connect(mNavKeyBackAction, SIGNAL(triggered()), this, SLOT(back())))
hgs
parents: 30
diff changeset
   234
        	{
hgs
parents: 30
diff changeset
   235
        		currentView->setNavigationAction(mNavKeyBackAction);
hgs
parents: 30
diff changeset
   236
        	}
hgs
parents: 30
diff changeset
   237
        	else
hgs
parents: 30
diff changeset
   238
        	{
hgs
parents: 30
diff changeset
   239
        		return;
hgs
parents: 30
diff changeset
   240
        	}
hgs
parents: 30
diff changeset
   241
        }
hgs
parents: 30
diff changeset
   242
        
hgs
parents: 30
diff changeset
   243
        mainWnd->setOrientation(Qt::Vertical, false);
hgs
parents: 30
diff changeset
   244
hgs
parents: 30
diff changeset
   245
        // following if is for the future implementations where we should support
hgs
parents: 30
diff changeset
   246
        // also landscape configuration.
30
hgs
parents:
diff changeset
   247
        Qt::Orientation orientation = mainWnd->orientation();
hgs
parents:
diff changeset
   248
        if ( orientation == Qt::Vertical )
hgs
parents:
diff changeset
   249
        {
34
hgs
parents: 30
diff changeset
   250
    		mView.load(VIDEO_DETAILS_DOCML, "portrait");
30
hgs
parents:
diff changeset
   251
        }
hgs
parents:
diff changeset
   252
        else if ( orientation == Qt::Horizontal )
hgs
parents:
diff changeset
   253
        {
34
hgs
parents: 30
diff changeset
   254
    		mView.load(VIDEO_DETAILS_DOCML, "landscape");
30
hgs
parents:
diff changeset
   255
        }
hgs
parents:
diff changeset
   256
hgs
parents:
diff changeset
   257
    	if (mIsService && !mVideoServices)
hgs
parents:
diff changeset
   258
    	{
hgs
parents:
diff changeset
   259
    		mVideoServices = VideoServices::instance();
hgs
parents:
diff changeset
   260
hgs
parents:
diff changeset
   261
			if (!mVideoServices)
hgs
parents:
diff changeset
   262
			{
hgs
parents:
diff changeset
   263
				return;
hgs
parents:
diff changeset
   264
			}
34
hgs
parents: 30
diff changeset
   265
    	}
hgs
parents: 30
diff changeset
   266
    	if (mIsService && mVideoServices)
hgs
parents: 30
diff changeset
   267
		{
hgs
parents: 30
diff changeset
   268
			HbPushButton* attachBtn = findWidget<HbPushButton>(VIDEO_DETAILS_BUTTON);
hgs
parents: 30
diff changeset
   269
			attachBtn->setText(tr("Attach")); //TODO: Localisation
hgs
parents: 30
diff changeset
   270
hgs
parents: 30
diff changeset
   271
			connect(attachBtn, SIGNAL(clicked(bool)), this, SLOT(getFileUri()));
hgs
parents: 30
diff changeset
   272
			connect(this, SIGNAL(fileUri(const QString&)), mVideoServices, SLOT(itemSelected(const QString&)));
hgs
parents: 30
diff changeset
   273
hgs
parents: 30
diff changeset
   274
            HbMainWindow *mainWnd = hbInstance->allMainWindows().value(0);
hgs
parents: 30
diff changeset
   275
hgs
parents: 30
diff changeset
   276
            mainWnd->currentView()->setTitle(mVideoServices->contextTitle());
hgs
parents: 30
diff changeset
   277
		}
hgs
parents: 30
diff changeset
   278
    	else if(!mIsService)
hgs
parents: 30
diff changeset
   279
    	{
hgs
parents: 30
diff changeset
   280
    		HbPushButton* shareBtn = findWidget<HbPushButton>(VIDEO_DETAILS_BUTTON);
hgs
parents: 30
diff changeset
   281
			connect(shareBtn, SIGNAL(triggered(bool)), this, SLOT(sendVideoSlot()));
hgs
parents: 30
diff changeset
   282
			shareBtn->setText(hbTrId("txt_videos_opt_share"));
30
hgs
parents:
diff changeset
   283
    	}
hgs
parents:
diff changeset
   284
hgs
parents:
diff changeset
   285
        connect(mainWnd,
hgs
parents:
diff changeset
   286
                SIGNAL(orientationChanged(Qt::Orientation)),
hgs
parents:
diff changeset
   287
                this, SLOT(orientationChange(Qt::Orientation)));
34
hgs
parents: 30
diff changeset
   288
hgs
parents: 30
diff changeset
   289
        connect(&mCollectionWrapper,
hgs
parents: 30
diff changeset
   290
               SIGNAL(asyncStatus(int, QVariant&)),
30
hgs
parents:
diff changeset
   291
               this, SLOT(handleErrorSlot(int, QVariant&)));
hgs
parents:
diff changeset
   292
hgs
parents:
diff changeset
   293
        // setup title size in order for animation to be enabled if needed
34
hgs
parents: 30
diff changeset
   294
        mTitleAnim->setMinimumWidth(hbInstance->allMainWindows().value(0)->width()-50);
30
hgs
parents:
diff changeset
   295
        mTitleAnim->adjustSize();
34
hgs
parents: 30
diff changeset
   296
30
hgs
parents:
diff changeset
   297
        mActivated = true;
hgs
parents:
diff changeset
   298
    }
hgs
parents:
diff changeset
   299
}
hgs
parents:
diff changeset
   300
hgs
parents:
diff changeset
   301
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   302
// Deactivate view
hgs
parents:
diff changeset
   303
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   304
//
hgs
parents:
diff changeset
   305
void VideoFileDetailsViewPlugin::deactivateView()
hgs
parents:
diff changeset
   306
{
hgs
parents:
diff changeset
   307
    if ( mActivated )
hgs
parents:
diff changeset
   308
    {
34
hgs
parents: 30
diff changeset
   309
        mVideoId = TMPXItemId::InvalidId();
hgs
parents: 30
diff changeset
   310
hgs
parents: 30
diff changeset
   311
        mDeletedIndex = -1;  // set index as invalid.
hgs
parents: 30
diff changeset
   312
30
hgs
parents:
diff changeset
   313
        HbMainWindow *mainWnd = hbInstance->allMainWindows().value(0);
34
hgs
parents: 30
diff changeset
   314
hgs
parents: 30
diff changeset
   315
        mainWnd->unsetOrientation();
hgs
parents: 30
diff changeset
   316
hgs
parents: 30
diff changeset
   317
        HbView *currentView = mainWnd->currentView();
hgs
parents: 30
diff changeset
   318
        if(currentView)
hgs
parents: 30
diff changeset
   319
        {
hgs
parents: 30
diff changeset
   320
       		currentView->setNavigationAction(0);
hgs
parents: 30
diff changeset
   321
        }
hgs
parents: 30
diff changeset
   322
hgs
parents: 30
diff changeset
   323
        disconnect(mNavKeyBackAction, SIGNAL(triggered()), this, SLOT(back()));
30
hgs
parents:
diff changeset
   324
hgs
parents:
diff changeset
   325
        disconnect(mainWnd, SIGNAL( orientationChanged( Qt::Orientation ) ),
hgs
parents:
diff changeset
   326
             this, SLOT( orientationChange( Qt::Orientation ) ));
hgs
parents:
diff changeset
   327
34
hgs
parents: 30
diff changeset
   328
        disconnect(&mCollectionWrapper,
hgs
parents: 30
diff changeset
   329
                       SIGNAL(asyncStatus(int, QVariant&)),
30
hgs
parents:
diff changeset
   330
                       this, SLOT(handleErrorSlot(int, QVariant&)));
hgs
parents:
diff changeset
   331
hgs
parents:
diff changeset
   332
        mTitleAnim->stopAnimation();
hgs
parents:
diff changeset
   333
        mTitleAnim->setText("");
34
hgs
parents: 30
diff changeset
   334
30
hgs
parents:
diff changeset
   335
        mActivated = false;
hgs
parents:
diff changeset
   336
34
hgs
parents: 30
diff changeset
   337
    	mThumbLabel->setIcon(HbIcon());
hgs
parents: 30
diff changeset
   338
hgs
parents: 30
diff changeset
   339
   		HbPushButton* button = findWidget<HbPushButton>(VIDEO_DETAILS_BUTTON);
30
hgs
parents:
diff changeset
   340
hgs
parents:
diff changeset
   341
    	if (mIsService)
hgs
parents:
diff changeset
   342
    	{
34
hgs
parents: 30
diff changeset
   343
			disconnect(button, SIGNAL(clicked(bool)), this, SLOT(getFileUri()));
30
hgs
parents:
diff changeset
   344
			disconnect(this, SIGNAL(fileUri(const QString&)), mVideoServices, SLOT(itemSelected(const QString&)));
hgs
parents:
diff changeset
   345
    	}
34
hgs
parents: 30
diff changeset
   346
		else
hgs
parents: 30
diff changeset
   347
		{
hgs
parents: 30
diff changeset
   348
			disconnect(button, SIGNAL(triggered(bool)), this, SLOT(sendVideoSlot()));
hgs
parents: 30
diff changeset
   349
		}
30
hgs
parents:
diff changeset
   350
hgs
parents:
diff changeset
   351
    }
hgs
parents:
diff changeset
   352
}
hgs
parents:
diff changeset
   353
hgs
parents:
diff changeset
   354
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   355
// Get view
hgs
parents:
diff changeset
   356
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   357
//
hgs
parents:
diff changeset
   358
QGraphicsWidget* VideoFileDetailsViewPlugin::getView()
hgs
parents:
diff changeset
   359
{
hgs
parents:
diff changeset
   360
    return mView.findWidget(VIDEO_DETAILS_VIEW);
hgs
parents:
diff changeset
   361
}
hgs
parents:
diff changeset
   362
hgs
parents:
diff changeset
   363
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   364
// Slot: Orientation change
hgs
parents:
diff changeset
   365
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   366
//
hgs
parents:
diff changeset
   367
void VideoFileDetailsViewPlugin::orientationChange( Qt::Orientation orientation )
34
hgs
parents: 30
diff changeset
   368
{
hgs
parents: 30
diff changeset
   369
    if ( orientation == Qt::Vertical )
30
hgs
parents:
diff changeset
   370
    {
34
hgs
parents: 30
diff changeset
   371
    	mView.load(VIDEO_DETAILS_DOCML, "portrait");
30
hgs
parents:
diff changeset
   372
    }
34
hgs
parents: 30
diff changeset
   373
hgs
parents: 30
diff changeset
   374
    else if ( orientation == Qt::Horizontal )
30
hgs
parents:
diff changeset
   375
    {
34
hgs
parents: 30
diff changeset
   376
       	mView.load(VIDEO_DETAILS_DOCML, "landscape");
30
hgs
parents:
diff changeset
   377
    }
hgs
parents:
diff changeset
   378
    mTitleAnim->adjustSize();
hgs
parents:
diff changeset
   379
    mTitleAnim->startAnimation();
hgs
parents:
diff changeset
   380
}
hgs
parents:
diff changeset
   381
hgs
parents:
diff changeset
   382
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   383
// Slot: back
hgs
parents:
diff changeset
   384
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   385
//
hgs
parents:
diff changeset
   386
void VideoFileDetailsViewPlugin::back()
hgs
parents:
diff changeset
   387
{
hgs
parents:
diff changeset
   388
    if ( mActivated )
hgs
parents:
diff changeset
   389
    {
hgs
parents:
diff changeset
   390
        emit command( MpxHbVideoCommon::ActivateCollectionView );
hgs
parents:
diff changeset
   391
    }
hgs
parents:
diff changeset
   392
}
hgs
parents:
diff changeset
   393
hgs
parents:
diff changeset
   394
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   395
// Slot: shortDetailsReadySlot
hgs
parents:
diff changeset
   396
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   397
//
34
hgs
parents: 30
diff changeset
   398
void VideoFileDetailsViewPlugin::shortDetailsReadySlot(TMPXItemId id)
30
hgs
parents:
diff changeset
   399
{
hgs
parents:
diff changeset
   400
    // first clear all details, so that the view doesn't display the old data.
34
hgs
parents: 30
diff changeset
   401
    findWidget<HbListWidget>(VIDEO_DETAILS_LISTWIDGET)->clear();
30
hgs
parents:
diff changeset
   402
34
hgs
parents: 30
diff changeset
   403
    QModelIndex modelIndex = mModel->indexOfId(id);
hgs
parents: 30
diff changeset
   404
hgs
parents: 30
diff changeset
   405
    mVideoId = id;
30
hgs
parents:
diff changeset
   406
34
hgs
parents: 30
diff changeset
   407
    QVariant variant = mModel->data(modelIndex, Qt::DisplayRole);
30
hgs
parents:
diff changeset
   408
34
hgs
parents: 30
diff changeset
   409
    if (variant.isValid() && mTitleAnim)
30
hgs
parents:
diff changeset
   410
    {
34
hgs
parents: 30
diff changeset
   411
        mTitleAnim->setText(variant.toStringList().first());
hgs
parents: 30
diff changeset
   412
    }
30
hgs
parents:
diff changeset
   413
    startFetchingThumbnail();
hgs
parents:
diff changeset
   414
}
hgs
parents:
diff changeset
   415
hgs
parents:
diff changeset
   416
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   417
// Slot: fullDetailsReadySlot
hgs
parents:
diff changeset
   418
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   419
//
34
hgs
parents: 30
diff changeset
   420
void VideoFileDetailsViewPlugin::fullDetailsReadySlot(TMPXItemId id)
30
hgs
parents:
diff changeset
   421
{
hgs
parents:
diff changeset
   422
    using namespace VideoCollectionCommon;
34
hgs
parents: 30
diff changeset
   423
30
hgs
parents:
diff changeset
   424
    int detailCount = sizeof(VideoDetailLabelKeys) / sizeof(int);
hgs
parents:
diff changeset
   425
34
hgs
parents: 30
diff changeset
   426
    QModelIndex modelIndex = mModel->indexOfId(id);
hgs
parents: 30
diff changeset
   427
hgs
parents: 30
diff changeset
   428
    QVariant variant = mModel->data(modelIndex, KeyMetaData);
hgs
parents: 30
diff changeset
   429
30
hgs
parents:
diff changeset
   430
    QMap<QString, QVariant> metadata = variant.toMap();
34
hgs
parents: 30
diff changeset
   431
hgs
parents: 30
diff changeset
   432
    HbListWidget* list = findWidget<HbListWidget>(VIDEO_DETAILS_LISTWIDGET);
hgs
parents: 30
diff changeset
   433
hgs
parents: 30
diff changeset
   434
    if(list->count())
hgs
parents: 30
diff changeset
   435
    {
hgs
parents: 30
diff changeset
   436
        list->clear();
hgs
parents: 30
diff changeset
   437
    }
hgs
parents: 30
diff changeset
   438
hgs
parents: 30
diff changeset
   439
    //TODO: define maximum line count once >3 supported
hgs
parents: 30
diff changeset
   440
    HbListViewItem *prototype = list->listItemPrototype();
hgs
parents: 30
diff changeset
   441
    prototype->setSecondaryTextRowCount(1, 3);
hgs
parents: 30
diff changeset
   442
30
hgs
parents:
diff changeset
   443
    for(int i = 0; i< detailCount; i++) {
34
hgs
parents: 30
diff changeset
   444
        if (metadata.contains(VideoDetailLabelKeys[i]))
hgs
parents: 30
diff changeset
   445
        {
hgs
parents: 30
diff changeset
   446
            HbListWidgetItem* listWidgetItem = new HbListWidgetItem();
hgs
parents: 30
diff changeset
   447
            listWidgetItem->setEnabled(false);
30
hgs
parents:
diff changeset
   448
34
hgs
parents: 30
diff changeset
   449
            listWidgetItem->setText( hbTrId(VideoDetailLabels[i]) );
hgs
parents: 30
diff changeset
   450
            listWidgetItem->setSecondaryText( metadata[VideoDetailLabelKeys[i]].toString() );
hgs
parents: 30
diff changeset
   451
            list->addItem( listWidgetItem );
30
hgs
parents:
diff changeset
   452
        }
hgs
parents:
diff changeset
   453
    }
hgs
parents:
diff changeset
   454
hgs
parents:
diff changeset
   455
    // start title animation
hgs
parents:
diff changeset
   456
    mTitleAnim->startAnimation();
hgs
parents:
diff changeset
   457
}
hgs
parents:
diff changeset
   458
hgs
parents:
diff changeset
   459
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   460
// Slot: getFileUri
hgs
parents:
diff changeset
   461
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   462
//
hgs
parents:
diff changeset
   463
void VideoFileDetailsViewPlugin::getFileUri()
hgs
parents:
diff changeset
   464
{
34
hgs
parents: 30
diff changeset
   465
	if (mVideoId != TMPXItemId::InvalidId())
30
hgs
parents:
diff changeset
   466
    {
34
hgs
parents: 30
diff changeset
   467
        QModelIndex modelIndex = mModel->indexOfId(mVideoId);
hgs
parents: 30
diff changeset
   468
		QVariant variant = mModel->data(modelIndex, VideoCollectionCommon::KeyFilePath);
30
hgs
parents:
diff changeset
   469
		if ( variant.isValid()  )
hgs
parents:
diff changeset
   470
		{
hgs
parents:
diff changeset
   471
			QString itemPath = variant.value<QString>();
hgs
parents:
diff changeset
   472
    		emit(fileUri(itemPath));
hgs
parents:
diff changeset
   473
		}
hgs
parents:
diff changeset
   474
    }
hgs
parents:
diff changeset
   475
}
hgs
parents:
diff changeset
   476
hgs
parents:
diff changeset
   477
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   478
// Slot: startPlaybackSlot
hgs
parents:
diff changeset
   479
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   480
//
hgs
parents:
diff changeset
   481
void VideoFileDetailsViewPlugin::startPlaybackSlot()
hgs
parents:
diff changeset
   482
{
34
hgs
parents: 30
diff changeset
   483
	if (mVideoId != TMPXItemId::InvalidId())
hgs
parents: 30
diff changeset
   484
	{
hgs
parents: 30
diff changeset
   485
    	mModel->openItem(mVideoId);
hgs
parents: 30
diff changeset
   486
	}
30
hgs
parents:
diff changeset
   487
}
hgs
parents:
diff changeset
   488
hgs
parents:
diff changeset
   489
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   490
// Slot: sendVideo
hgs
parents:
diff changeset
   491
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   492
//
hgs
parents:
diff changeset
   493
void VideoFileDetailsViewPlugin::sendVideoSlot()
hgs
parents:
diff changeset
   494
{
hgs
parents:
diff changeset
   495
    _DebugNotImplementedYet();
hgs
parents:
diff changeset
   496
}
hgs
parents:
diff changeset
   497
hgs
parents:
diff changeset
   498
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   499
// Slot: deleteVideo
hgs
parents:
diff changeset
   500
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   501
//
hgs
parents:
diff changeset
   502
void VideoFileDetailsViewPlugin::deleteVideoSlot()
hgs
parents:
diff changeset
   503
{
34
hgs
parents: 30
diff changeset
   504
	if (mVideoId != TMPXItemId::InvalidId())
30
hgs
parents:
diff changeset
   505
        {
34
hgs
parents: 30
diff changeset
   506
		QModelIndex modelIndex = mModel->indexOfId(mVideoId);
hgs
parents: 30
diff changeset
   507
		QVariant variant = mModel->data(modelIndex, Qt::DisplayRole);
30
hgs
parents:
diff changeset
   508
34
hgs
parents: 30
diff changeset
   509
        if (variant.isValid())
hgs
parents: 30
diff changeset
   510
        {
hgs
parents: 30
diff changeset
   511
            QString text = tr("Do you want to delete \"%1\"?").arg(variant.toStringList().first()); //TODO: Localisation: txt_common_menu_delete
30
hgs
parents:
diff changeset
   512
34
hgs
parents: 30
diff changeset
   513
            if (HbMessageBox::question(text))
hgs
parents: 30
diff changeset
   514
            {
30
hgs
parents:
diff changeset
   515
                deleteItem(modelIndex);
hgs
parents:
diff changeset
   516
            }
hgs
parents:
diff changeset
   517
        }
hgs
parents:
diff changeset
   518
    }
hgs
parents:
diff changeset
   519
}
hgs
parents:
diff changeset
   520
hgs
parents:
diff changeset
   521
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   522
// deleteItem
hgs
parents:
diff changeset
   523
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   524
//
hgs
parents:
diff changeset
   525
void VideoFileDetailsViewPlugin::deleteItem(QModelIndex index)
hgs
parents:
diff changeset
   526
{
34
hgs
parents: 30
diff changeset
   527
    mDeletedIndex = index.row();
hgs
parents: 30
diff changeset
   528
30
hgs
parents:
diff changeset
   529
    QModelIndexList list;
hgs
parents:
diff changeset
   530
    list.append(index);
hgs
parents:
diff changeset
   531
    mModel->deleteItems(list);
hgs
parents:
diff changeset
   532
}
hgs
parents:
diff changeset
   533
hgs
parents:
diff changeset
   534
hgs
parents:
diff changeset
   535
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   536
// Slot: rowsRemovedSlot
hgs
parents:
diff changeset
   537
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   538
//
34
hgs
parents: 30
diff changeset
   539
void VideoFileDetailsViewPlugin::rowsRemovedSlot(const QModelIndex& parent,
30
hgs
parents:
diff changeset
   540
                                                 int first, int last)
hgs
parents:
diff changeset
   541
{
34
hgs
parents: 30
diff changeset
   542
	Q_UNUSED(parent);
hgs
parents: 30
diff changeset
   543
hgs
parents: 30
diff changeset
   544
	if(mActivated && mDeletedIndex > -1 &&
hgs
parents: 30
diff changeset
   545
       (mDeletedIndex >= first && mDeletedIndex <= last))
30
hgs
parents:
diff changeset
   546
    {
hgs
parents:
diff changeset
   547
        // item is withing the group of removed items, deactivate view
hgs
parents:
diff changeset
   548
        emit command(MpxHbVideoCommon::ActivateCollectionView);
hgs
parents:
diff changeset
   549
    }
hgs
parents:
diff changeset
   550
}
hgs
parents:
diff changeset
   551
hgs
parents:
diff changeset
   552
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   553
// Slot: handleErrorSlot()
hgs
parents:
diff changeset
   554
// error signal received from collectionwrapper
hgs
parents:
diff changeset
   555
// -------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   556
//
hgs
parents:
diff changeset
   557
void VideoFileDetailsViewPlugin::handleErrorSlot(int errorCode, QVariant &additional)
hgs
parents:
diff changeset
   558
{
hgs
parents:
diff changeset
   559
    QString msg("");
hgs
parents:
diff changeset
   560
    if(errorCode == VideoCollectionCommon::statusSingleDeleteFail)
hgs
parents:
diff changeset
   561
    {
34
hgs
parents: 30
diff changeset
   562
        QString format = tr("Unable to delete item %1. It is currently open."); //TODO: Localisation
30
hgs
parents:
diff changeset
   563
        if(additional.isValid())
hgs
parents:
diff changeset
   564
        {
hgs
parents:
diff changeset
   565
           msg = format.arg(additional.toString());
hgs
parents:
diff changeset
   566
        }
hgs
parents:
diff changeset
   567
    }
hgs
parents:
diff changeset
   568
    if(msg.count() > 0)
hgs
parents:
diff changeset
   569
    {
hgs
parents:
diff changeset
   570
        // show msg box if there's something to show
hgs
parents:
diff changeset
   571
        HbMessageBox::warning(msg);
34
hgs
parents: 30
diff changeset
   572
    }
30
hgs
parents:
diff changeset
   573
}
hgs
parents:
diff changeset
   574
hgs
parents:
diff changeset
   575
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   576
// Slot: thumbnailReadySlot
hgs
parents:
diff changeset
   577
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   578
//
34
hgs
parents: 30
diff changeset
   579
void VideoFileDetailsViewPlugin::thumbnailReadySlot(QPixmap pixmap,
30
hgs
parents:
diff changeset
   580
        void * clientData, int id, int errorCode)
hgs
parents:
diff changeset
   581
{
hgs
parents:
diff changeset
   582
    Q_UNUSED(clientData);
hgs
parents:
diff changeset
   583
    Q_UNUSED(id);
hgs
parents:
diff changeset
   584
34
hgs
parents: 30
diff changeset
   585
	QSize size(mThumbLabel->size().toSize());
30
hgs
parents:
diff changeset
   586
	QImage play(VIDEO_DETAILS_GFX_PLAY);
hgs
parents:
diff changeset
   587
34
hgs
parents: 30
diff changeset
   588
	if (!errorCode)
hgs
parents: 30
diff changeset
   589
	{
30
hgs
parents:
diff changeset
   590
		QImage sourceImage = pixmap.toImage();
hgs
parents:
diff changeset
   591
34
hgs
parents: 30
diff changeset
   592
		if ((sourceImage.size().height() != size.height()) || (sourceImage.size().width() != size.width()))
30
hgs
parents:
diff changeset
   593
		{
hgs
parents:
diff changeset
   594
			// Smooth scaling is very expensive (size^2). Therefore we reduce the size
hgs
parents:
diff changeset
   595
			// to 2x of the destination size and using fast transformation before doing final smooth scaling.
hgs
parents:
diff changeset
   596
			if (sourceImage.size().width() > (4*size.width()) || sourceImage.size().height() > (4*size.height()))
hgs
parents:
diff changeset
   597
			{
hgs
parents:
diff changeset
   598
				QSize intermediate_size = QSize( size.width() * 2, size.height() * 2 );
34
hgs
parents: 30
diff changeset
   599
				sourceImage = sourceImage.scaled(intermediate_size, Qt::KeepAspectRatioByExpanding, Qt::FastTransformation );
30
hgs
parents:
diff changeset
   600
			}
34
hgs
parents: 30
diff changeset
   601
			sourceImage = sourceImage.scaled(size, Qt::KeepAspectRatioByExpanding, Qt::SmoothTransformation);
30
hgs
parents:
diff changeset
   602
		}
hgs
parents:
diff changeset
   603
34
hgs
parents: 30
diff changeset
   604
		int difference(0);
hgs
parents: 30
diff changeset
   605
		QRect rect = mThumbLabel->rect().toRect();
hgs
parents: 30
diff changeset
   606
hgs
parents: 30
diff changeset
   607
		if(sourceImage.width() > size.width())
hgs
parents: 30
diff changeset
   608
		{
hgs
parents: 30
diff changeset
   609
			difference = sourceImage.width() - size.width();
hgs
parents: 30
diff changeset
   610
			difference = (difference/2)+1;
hgs
parents: 30
diff changeset
   611
			rect.moveLeft(rect.left()+difference);
hgs
parents: 30
diff changeset
   612
		}
hgs
parents: 30
diff changeset
   613
		else if(sourceImage.height() > size.height())
hgs
parents: 30
diff changeset
   614
		{
hgs
parents: 30
diff changeset
   615
			difference = sourceImage.height() - size.height();
hgs
parents: 30
diff changeset
   616
			difference = (difference/2)+1;
hgs
parents: 30
diff changeset
   617
			rect.moveBottom(rect.bottom()+difference);
hgs
parents: 30
diff changeset
   618
		}
hgs
parents: 30
diff changeset
   619
hgs
parents: 30
diff changeset
   620
		sourceImage = sourceImage.copy(rect);
30
hgs
parents:
diff changeset
   621
		QImage resultImage = QImage(sourceImage.size(), QImage::Format_ARGB32_Premultiplied);
34
hgs
parents: 30
diff changeset
   622
30
hgs
parents:
diff changeset
   623
		QPainter painter(&resultImage);
hgs
parents:
diff changeset
   624
		painter.setCompositionMode(QPainter::CompositionMode_Source);
hgs
parents:
diff changeset
   625
		painter.fillRect(resultImage.rect(), Qt::transparent);
hgs
parents:
diff changeset
   626
		painter.setCompositionMode(QPainter::CompositionMode_SourceOver);
34
hgs
parents: 30
diff changeset
   627
		painter.drawImage( (int)(sourceImage.width() - play.width())/2,
hgs
parents: 30
diff changeset
   628
				           (int)(sourceImage.height() - play.height())/2,
30
hgs
parents:
diff changeset
   629
				            play );
hgs
parents:
diff changeset
   630
		painter.setCompositionMode(QPainter::CompositionMode_Screen);
hgs
parents:
diff changeset
   631
		painter.drawImage(0, 0, sourceImage);
hgs
parents:
diff changeset
   632
		painter.end();
hgs
parents:
diff changeset
   633
hgs
parents:
diff changeset
   634
		HbIcon compsedIcon(QPixmap::fromImage(resultImage));
34
hgs
parents: 30
diff changeset
   635
	    mThumbLabel->setIcon(compsedIcon);
30
hgs
parents:
diff changeset
   636
	}
34
hgs
parents: 30
diff changeset
   637
    else
hgs
parents: 30
diff changeset
   638
    {
hgs
parents: 30
diff changeset
   639
		mThumbLabel->setIcon(HbIcon(VIDEO_DETAILS_GFX_DEFAULT));
30
hgs
parents:
diff changeset
   640
	}
hgs
parents:
diff changeset
   641
}
hgs
parents:
diff changeset
   642
hgs
parents:
diff changeset
   643
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   644
// startFetchingThumbnail
hgs
parents:
diff changeset
   645
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   646
//
hgs
parents:
diff changeset
   647
void VideoFileDetailsViewPlugin::startFetchingThumbnail()
hgs
parents:
diff changeset
   648
{
hgs
parents:
diff changeset
   649
    int tnId = -1;
34
hgs
parents: 30
diff changeset
   650
hgs
parents: 30
diff changeset
   651
    if(mModel && mThumbnailManager)
hgs
parents: 30
diff changeset
   652
    {
hgs
parents: 30
diff changeset
   653
    	QModelIndex modelIndex = mModel->indexOfId(mVideoId);
hgs
parents: 30
diff changeset
   654
		QVariant variant = mModel->data(modelIndex, VideoCollectionCommon::KeyFilePath);
hgs
parents: 30
diff changeset
   655
        if(variant.isValid())
hgs
parents: 30
diff changeset
   656
        {
30
hgs
parents:
diff changeset
   657
            mThumbnailManager->setThumbnailSize(ThumbnailManager::ThumbnailLarge);
hgs
parents:
diff changeset
   658
            tnId = mThumbnailManager->getThumbnail(variant.toString(), 0, 5000);
hgs
parents:
diff changeset
   659
        }
34
hgs
parents: 30
diff changeset
   660
    }
hgs
parents: 30
diff changeset
   661
    else
hgs
parents: 30
diff changeset
   662
    {
30
hgs
parents:
diff changeset
   663
        qWarning() << "Tried to start fetching thumbnail when either mModel or mThumbnailManager is NULL!";
hgs
parents:
diff changeset
   664
    }
34
hgs
parents: 30
diff changeset
   665
hgs
parents: 30
diff changeset
   666
    if(tnId == -1)
hgs
parents: 30
diff changeset
   667
    {
hgs
parents: 30
diff changeset
   668
    	mThumbLabel->setIcon(HbIcon(VIDEO_DETAILS_GFX_DEFAULT));
30
hgs
parents:
diff changeset
   669
    }
hgs
parents:
diff changeset
   670
}
hgs
parents:
diff changeset
   671
hgs
parents:
diff changeset
   672
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   673
// findWidget
hgs
parents:
diff changeset
   674
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   675
//
hgs
parents:
diff changeset
   676
template<class T>
hgs
parents:
diff changeset
   677
T* VideoFileDetailsViewPlugin::findWidget(QString name)
hgs
parents:
diff changeset
   678
{
hgs
parents:
diff changeset
   679
    return qobject_cast<T *>(mView.findWidget(name));
hgs
parents:
diff changeset
   680
}
hgs
parents:
diff changeset
   681
hgs
parents:
diff changeset
   682
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   683
// findObject
hgs
parents:
diff changeset
   684
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   685
//
hgs
parents:
diff changeset
   686
template<class T>
hgs
parents:
diff changeset
   687
T* VideoFileDetailsViewPlugin::findObject(QString name)
hgs
parents:
diff changeset
   688
{
hgs
parents:
diff changeset
   689
    return qobject_cast<T *>(mView.findObject(name));
hgs
parents:
diff changeset
   690
}
hgs
parents:
diff changeset
   691
hgs
parents:
diff changeset
   692
XQ_EXPORT_PLUGIN2( videofiledetailsview, VideoFileDetailsViewPlugin );
hgs
parents:
diff changeset
   693
hgs
parents:
diff changeset
   694
// end of file