diff -r 000000000000 -r 2f259fa3e83a commonuis/CommonUi/src/Docmidlethandler.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/commonuis/CommonUi/src/Docmidlethandler.cpp Tue Feb 02 01:00:49 2010 +0200 @@ -0,0 +1,162 @@ +/* +* Copyright (c) 2002-2005 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: Implements Midlet handler class for document handler. +* +*/ + + +#include +#include +#include +#include +#include +#include // CEikProcess +#include // CEikDocument +#include // CEikEnv +#include +#include +#include +#include + +#include "DocMidletHandler.h" +#include "DocSaver.h" // CDocAsyncSaver + +// The UID for Java MIDlets +const TInt KUidJavaMidpAppValue = 0x100096C5; + +// --------------------------------------------------------- +// Constructor +// --------------------------------------------------------- +CDocMidletHandler::CDocMidletHandler( + const TDataType& aDataType, + const TUid& aUid, + CDocumentHandler* aDocDispatcher) : + CDocDefaultHandler( aDataType, aUid, aDocDispatcher, EDocOpenAndSave ) + { + } + +// --------------------------------------------------------- +// void CDocMidletHandler::ConstructL(..) +// Epoc constructor. +// --------------------------------------------------------- +void CDocMidletHandler::ConstructL() + { + BaseConstructL(); + } + +// --------------------------------------------------------- +// CDocMidletHandler::~CDocMidletHandler() +// Destructor +// --------------------------------------------------------- +CDocMidletHandler::~CDocMidletHandler() + { + } + +// --------------------------------------------------------- +// CDocMidletHandler* CDocMidletHandler::NewL(..) +// Returns a contructed CDocMidletHandler object +// --------------------------------------------------------- +CDocMidletHandler* CDocMidletHandler::NewL( + const TDataType& aDataType, + const TUid& aUid, + CDocumentHandler* aDocDispatcher) + { + CDocMidletHandler* self = CDocMidletHandler::NewLC( aDataType, + aUid, aDocDispatcher ); + CleanupStack::Pop(); // self + return self; + } + +// --------------------------------------------------------- +// CDocMidletHandler* CDocMidletHandler::NewLC(..) +// Returns a contructed CDocMidletHandler object. Leaves +// the object in the cleanup stack. +// --------------------------------------------------------- +CDocMidletHandler* CDocMidletHandler::NewLC( + const TDataType& aDataType, + const TUid& aUid, + CDocumentHandler* aDocDispatcher) + { + CDocMidletHandler * self = + new( ELeave ) CDocMidletHandler( aDataType, aUid, + aDocDispatcher ); + CleanupStack::PushL( self ); + self->ConstructL( ); + return self; + } + +TInt CDocMidletHandler::OpenFileEmbeddedL(RFile& aFileHandle) + { + // Midlets cannot be launched as embedded, so just call OpenFileL() + // here for now. + return OpenFileL(aFileHandle); + } + +TInt CDocMidletHandler::OpenFileL(RFile& /*aFileHandle*/) + { +// TODO: This type of application launching is not supported on release 3.0 +// Do we need still support midlets? + return KErrNotSupported; + } + + +TBool CDocMidletHandler::IsMidlet(const TUid& aUid) + { + // Find out if given UID belongs to a Java Midlet + TBool isMidlet = EFalse; + + RApaLsSession appArcSession; + TInt error = appArcSession.Connect(); + if (error == KErrNone) + { + TApaAppInfo aInfo; + appArcSession.GetAppInfo(aInfo, aUid); + #ifdef _DEBUG + RDebug::Print(_L("DocumentHandler: CDocMidletHandler::IsMidlet: Checking possible Midlet app = ")); + RDebug::Print(aInfo.iFullName); + #endif + + RFs fs; + TInt connectError = fs.Connect(); + if (connectError == KErrNone) + { + TEntry entry; + TInt readError = fs.Entry(aInfo.iFullName,entry); // Check if file exists, and get uid + if (readError == KErrNone) + { + TUid uid = TUid::Uid(KUidJavaMidpAppValue); + if (entry.iType[1] == uid) + { + isMidlet = ETrue; + #ifdef _DEBUG + RDebug::Print(_L("DocumentHandler: CDocMidletHandler::IsMidlet: App is a Midlet app !")); + #endif + } + } + fs.Close(); + } + else + { + #ifdef _DEBUG + RDebug::Print(_L("DocumentHandler: CDocMidletHandler::IsMidlet: connect fs error: %d"), connectError); + #endif + } + + appArcSession.Close(); + } + + return isMidlet; + } + +// End of File