diff -r 2e1adbfc62af -r ee64f059b8e1 internetradio2.0/uisrc/irdocument.cpp --- a/internetradio2.0/uisrc/irdocument.cpp Mon May 03 12:25:23 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,239 +0,0 @@ -/* -* Copyright (c) 2006-2007 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: ?Description -* -*/ - - -#include -#include -#include -#include -#include -#include - -#include "ir.hrh" -#include "irdebug.h" -#include "irdocument.h" -#include "irui.h" -#include "irpubsubkeys.h" - - -// At least 3 MB of free RAM is needed to run the application. -const TInt KIRMinimumRAMNeeded = 3145728; -// 5 seconds inverval for memory check timer. -const TTimeIntervalMicroSeconds32 KIRMemCheckTimerInterval = 5000000; - -const TInt KBufMaxSize = 255; - -_LIT( KIRPlsFile, "c:\\private\\2000b499\\tempplsfile.pls" ); -// ---------------------------------------------------------------------------- -// CIRDocument::NewL(CEikApplication& aApp). -// returns an instance of CIRDocument. -// ---------------------------------------------------------------------------- -// -CIRDocument* CIRDocument::NewL(CEikApplication& aApp) - { - IRLOG_INFO( "CIRDocument::NewL - Entering" ); - CIRDocument* self = new (ELeave) CIRDocument(aApp); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - IRLOG_DEBUG( "CIRDocument::NewL - Exiting" ); - return self; - } - -// ---------------------------------------------------------------------------- -// CIRDocument::ConstructL(). -// ---------------------------------------------------------------------------- -// -void CIRDocument::ConstructL() - { - IRLOG_DEBUG( "CIRDocument::ConstructL - Entering" ); - iMemCheckTimer = CPeriodic::NewL( CActive::EPriorityStandard ); - iMemCheckTimer->Start(0, KIRMemCheckTimerInterval, - TCallBack( CIRDocument::MemCheckTimerCallback, this ) ); - IRLOG_DEBUG( "CIRDocument::ConstructL - Exiting" ); - } - - -// ---------------------------------------------------------------------------- -// CIRDocument::CIRDocument(CEikApplication& aApp). -// ---------------------------------------------------------------------------- -// -CIRDocument::CIRDocument(CEikApplication& aApp) : CAknDocument(aApp) - { - IRLOG_DEBUG( "CIRDocument::CIRDocument" ); - } - -CIRDocument::~CIRDocument() - { - IRLOG_DEBUG( "CIRDocument::~CIRDocument - Entering" ); - delete iMemCheckTimer; - IRLOG_DEBUG( "CIRDocument::~CIRDocument - Exiting" ); - } - -// ---------------------------------------------------------------------------- -// CIRDocument::CreateAppUiL(). -// Create the application user interface, and return a pointer to it,the -// framework takes ownership of this object -// ---------------------------------------------------------------------------- -// -CEikAppUi* CIRDocument::CreateAppUiL() - { - IRLOG_DEBUG( "CIRDocument::CreateAppUiL - Entering" ); - iAppUi = new (ELeave) CIRUi; - IRLOG_DEBUG( "CIRDocument::CreateAppUiL - Exiting" ); - return iAppUi; - } - -TInt CIRDocument::MemCheckTimerCallback(TAny* /*aSelf*/) - { - IRLOG_DEBUG("CIRDocument::MemCheckTimerCallback(TAny*) - Entering"); - TInt val(0); - TInt err = HAL::Get(HALData::EMemoryRAMFree, val); - if ( err || (val < KIRMinimumRAMNeeded) ) - { - TRAP_IGNORE( - HBufC* errorText = StringLoader::LoadLC( R_IRAPP_MEMLO_RAM_OUT_OF_MEM ); - CAknGlobalNote* note = CAknGlobalNote::NewLC(); - note->ShowNoteL( EAknGlobalErrorNote, *errorText ); - CleanupStack::PopAndDestroy( note ); - CleanupStack::PopAndDestroy( errorText ) ) - User::Exit( KErrNoMemory ); - } - IRLOG_DEBUG("CIRDocument::MemCheckTimerCallback(TAny*) - Exiting"); - return KErrNone; - } - -// ---------------------------------------------------------------------------- -// CIRDocument::OpenFileL( TBool aDoOpen, const TDesC& aFilename, RFs& aFs ) -// ---------------------------------------------------------------------------- -// -CFileStore* CIRDocument::OpenFileL( TBool /*aDoOpen*/, const TDesC& aFilename, RFs& /*aFs*/ ) - { - IRLOG_DEBUG("CIRDocument::OpenFileL(TBool, const TDesC&, RFs&)"); - _LIT(KPlsExtension, ".pls"); - - CIRUi *appui = static_cast (iAppUi); - - TParse parse; - parse.Set(aFilename,NULL,NULL); - TPtrC ext=parse.Ext(); // extract the extension from the filename - CEikonEnv* env = CEikonEnv::Static(); - RFs& fs = env->FsSession(); - RFile plsFile; - TInt status=plsFile.Open(fs, aFilename, EFileShareReadersOnly); - if(status) - { - OpenFileL( ETrue, aFilename, fs ); - return NULL; - } - CleanupClosePushL(plsFile); - CFileStore* fileStore; - fileStore = NULL; //So the other OpenFileL version is not called - - if (ext.CompareF(KPlsExtension)==0) - { - appui->ParsePlsDataL(fileStore,plsFile); - } - CleanupStack::PopAndDestroy( &plsFile ); - //Deleting the local copy of the pls file - fs.Delete( KIRPlsFile ); - return NULL; - } - -// ---------------------------------------------------------------------------- -// CIRDocument::OpenFileL(CFileStore*& aFileStore, RFile& aFile) -// ---------------------------------------------------------------------------- -// - -void CIRDocument::OpenFileL(CFileStore*& aFileStore, RFile& aFile) - { - IRLOG_DEBUG("CIRDocument::OpenFileL(CFileStore*&, RFile&) - Entering"); - CIRUi *appui = static_cast (iAppUi); - aFileStore = NULL; //So the other OpenFileL version is not called - - TBuf16 aName; - aFile.FullName(aName); - - CEikonEnv* env = CEikonEnv::Static(); - TApaTaskList taskList( env->WsSession() ); - // Find handler application by its UID - RWsSession& ws = env->WsSession(); - const TInt myWgId = env->RootWin().Identifier(); - TInt wgId = 0; - TUid uid(KUidActiveInternetRadioApp); - // Look for another instance of this app - while (wgId >= 0) - { - if (wgId && wgId != myWgId) - { - TApaTask FirstInstance(ws); - TApaTask SecondInstance(ws); - FirstInstance.SetWgId(wgId); - SecondInstance.SetWgId(myWgId); - SecondInstance.EndTask(); - - //To copy the contents of .PLS file into local PLS file - - TInt fileSize; - User::LeaveIfError( aFile.Size( fileSize ) ); - HBufC8* plsData = HBufC8::NewLC( fileSize ); - TPtr8 pData8( plsData->Des() ); - User::LeaveIfError( aFile.Read( pData8 ) ); - RFile plsFile; - RFs& fs = env->FsSession(); - TInt ret=plsFile.Open(fs, KIRPlsFile, EFileShareReadersOrWriters); - if(ret==KErrNotFound) - { - TInt status=plsFile.Create(fs, KIRPlsFile, EFileShareReadersOrWriters); - } - plsFile.Write(pData8); - TBuf16 plsName; - plsFile.FullName(plsName); - - CleanupStack::PopAndDestroy( plsData ); - - User::LeaveIfError( FirstInstance.SwitchOpenFile( plsName ) ); - return; - } - CApaWindowGroupName::FindByAppUid(uid, ws, wgId); - } - - _LIT(KPlsExtension, ".pls"); - TParse parse; - parse.Set(aName,NULL,NULL); - TPtrC ext=parse.Ext(); // extract the extension from the filename - if (ext.CompareF(KPlsExtension)==0) - { - appui->ParsePlsDataL(aFileStore,aFile); - } - IRLOG_DEBUG("CIRDocument::OpenFileL - Exiting."); - } - -// --------------------------------------------------------------------------- -// From CEikDocument; Hide the application from the tasklist -// --------------------------------------------------------------------------- -// -void CIRDocument::UpdateTaskNameL( CApaWindowGroupName* aWgName ) - { - IRLOG_INFO("CIRDocument::UpdateTaskNameL - Hiding InternetRadio from grid - Entering"); - CAknDocument::UpdateTaskNameL( aWgName ); -#ifndef __DISABLE_RADIO_LAUNCHER - - aWgName->SetHidden( EFalse ); - IRLOG_DEBUG("CIRDocument::UpdateTaskNameL - Exiting."); -#endif - }