--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/videocollection/videocollectionview/src/videooperatorservice.cpp Thu Jul 08 13:05:19 2010 +0300
@@ -0,0 +1,158 @@
+/*
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: VideoOperatorService class implementation.
+*
+*/
+
+// Version :
+
+// INCLUDE FILES
+
+#include <qdesktopservices.h>
+#include <qurl.h>
+
+#include <e32base.h>
+#include <eikenv.h>
+#include <eikappui.h>
+#include <apgcli.h>
+
+#include "videooperatorservice.h"
+#include "videocollectionviewutils.h"
+#include "videocollectioncenrepdefs.h"
+#include "videocollectiontrace.h"
+
+// ---------------------------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------------------------
+//
+VideoOperatorService::VideoOperatorService(QObject *parent) :
+ QObject(parent)
+{
+ FUNC_LOG;
+}
+
+// ---------------------------------------------------------------------------
+// load
+// ---------------------------------------------------------------------------
+//
+bool VideoOperatorService::load(int titleKey, int iconKey, int serviceUriKey, int appUidKey)
+{
+ FUNC_LOG;
+ VideoCollectionViewUtils& utils = VideoCollectionViewUtils::instance();
+
+ mTitle = utils.getCenRepStringValue(titleKey);
+ mIconResource = utils.getCenRepStringValue(iconKey);
+ mServiceUri = utils.getCenRepStringValue(serviceUriKey);
+ mApplicationUid = utils.getCenRepIntValue(appUidKey);
+
+ // Icon is required, either service uri or application uid is required.
+ if(mIconResource.isEmpty() && (mServiceUri.isEmpty() || mApplicationUid > 0))
+ {
+ return false;
+ }
+
+ return true;
+}
+
+// ---------------------------------------------------------------------------
+// title
+// ---------------------------------------------------------------------------
+//
+const QString VideoOperatorService::title() const
+{
+ return mTitle;
+}
+
+// ---------------------------------------------------------------------------
+// iconResource
+// ---------------------------------------------------------------------------
+//
+const QString VideoOperatorService::iconResource() const
+{
+ return mIconResource;
+}
+
+// ---------------------------------------------------------------------------
+// launchService
+// ---------------------------------------------------------------------------
+//
+void VideoOperatorService::launchService()
+{
+ FUNC_LOG;
+
+ if(!mServiceUri.isEmpty())
+ {
+ INFO_1("VideoOperatorService::launchService() starting url: %S", mServiceUri);
+ QDesktopServices::openUrl(QUrl(mServiceUri));
+ }
+ else
+ {
+ INFO_1("VideoOperatorService::launchService() starting application 0x%x", mApplicationUid);
+ TRAP_IGNORE(launchApplicationL(TUid::Uid(mApplicationUid), 0));
+ }
+}
+
+// ---------------------------------------------------------------------------
+// launchApplicationL
+// ---------------------------------------------------------------------------
+//
+void VideoOperatorService::launchApplicationL(const TUid uid, TInt viewId)
+{
+ CEikonEnv *eikEnv = CEikonEnv::Static();
+
+ if (viewId > 0 && eikEnv) {
+ TVwsViewId view(uid, TUid::Uid(viewId));
+ eikEnv->EikAppUi()->ActivateViewL(view);
+ } else
+ {
+ RWsSession wsSession;
+ User::LeaveIfError(wsSession.Connect());
+ CleanupClosePushL<RWsSession>(wsSession);
+
+ // TApaAppInfo size is greater then 1024 bytes
+ // so its instances should not be created on the stack.
+ TApaAppInfo* appInfo = new (ELeave) TApaAppInfo;
+ CleanupStack::PushL(appInfo);
+ TApaAppCapabilityBuf capabilityBuf;
+ RApaLsSession appArcSession;
+ User::LeaveIfError(appArcSession.Connect());
+ CleanupClosePushL<RApaLsSession>(appArcSession);
+
+ User::LeaveIfError(appArcSession.GetAppInfo(*appInfo, uid));
+ User::LeaveIfError(appArcSession.GetAppCapability(
+ capabilityBuf, uid));
+
+ TApaAppCapability &caps = capabilityBuf();
+ CApaCommandLine *cmdLine = CApaCommandLine::NewLC();
+ cmdLine->SetExecutableNameL(appInfo->iFullName);
+
+ if (caps.iLaunchInBackground) {
+ cmdLine->SetCommandL(EApaCommandBackground);
+ } else {
+ cmdLine->SetCommandL(EApaCommandRun);
+ }
+
+ cmdLine->SetTailEndL(KNullDesC8);
+
+ User::LeaveIfError(appArcSession.StartApp(*cmdLine));
+
+ CleanupStack::PopAndDestroy(cmdLine);
+ CleanupStack::PopAndDestroy(&appArcSession);
+ CleanupStack::PopAndDestroy(appInfo);
+
+ CleanupStack::PopAndDestroy(&wsSession);
+ }
+}
+
+// End of file.