mirror of
https://github.com/RaySollium99/picodrive.git
synced 2025-09-05 15:27:46 -04:00
initial import
git-svn-id: file:///home/notaz/opt/svn/PicoDrive@2 be3aeb3a-fb24-0410-a615-afba39da0efa
This commit is contained in:
parent
2cadbd5e56
commit
cc68a136aa
341 changed files with 180839 additions and 0 deletions
178
platform/s60/Picodriveapps60.cpp
Normal file
178
platform/s60/Picodriveapps60.cpp
Normal file
|
@ -0,0 +1,178 @@
|
|||
#include "PicoDriveAppS60.h"
|
||||
#include <picodrives60.rsg>
|
||||
#include <apgcli.h>
|
||||
#include <eikdll.h>
|
||||
EXPORT_C CApaApplication* NewApplication()
|
||||
{
|
||||
return (new CPicoDrive);
|
||||
}
|
||||
|
||||
CPicoDrive::CPicoDrive()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
CPicoDrive::~CPicoDrive()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
CApaDocument* CPicoDrive::CreateDocumentL()
|
||||
{
|
||||
return new (ELeave) CPicoDriveDoc(*this);
|
||||
}
|
||||
TUid CPicoDrive::AppDllUid() const
|
||||
{
|
||||
return TUid::Uid(0x101F9B49);
|
||||
}
|
||||
|
||||
|
||||
CPicoDriveDoc::CPicoDriveDoc(CEikApplication& aApp):CAknDocument(aApp)
|
||||
{
|
||||
}
|
||||
|
||||
CPicoDriveDoc::~CPicoDriveDoc()
|
||||
{
|
||||
}
|
||||
|
||||
CEikAppUi* CPicoDriveDoc::CreateAppUiL()
|
||||
{
|
||||
return new (ELeave) CPicoDriveUi;
|
||||
}
|
||||
|
||||
|
||||
void CPicoDriveUi::HandleForegroundEventL(TBool aForeground)
|
||||
{
|
||||
if(aForeground)
|
||||
{
|
||||
BringUpEmulatorL();
|
||||
}
|
||||
}
|
||||
|
||||
CPicoDriveUi::CPicoDriveUi()
|
||||
{
|
||||
}
|
||||
|
||||
CPicoDriveUi::~CPicoDriveUi()
|
||||
{
|
||||
|
||||
RemoveFromViewStack(*iView,iView);
|
||||
DeregisterViewAndRemoveStack(*iView);
|
||||
delete iView;
|
||||
if(iWatcher)
|
||||
{
|
||||
iThreadWatch.LogonCancel(iWatcher->iStatus);
|
||||
iWatcher->Cancel();
|
||||
}
|
||||
delete iWatcher;
|
||||
|
||||
iThreadWatch.Close();
|
||||
}
|
||||
|
||||
|
||||
void CPicoDriveUi::ConstructL()
|
||||
{
|
||||
BaseConstructL();
|
||||
iView = new(ELeave)CPicoView;
|
||||
iView->SetMopParent(this);
|
||||
iView->ConstructL();
|
||||
RegisterViewAndAddStackL(*iView);
|
||||
AddToViewStackL(*iView,iView);
|
||||
SetDefaultViewL(*iView);
|
||||
TBuf<128> startFile;
|
||||
startFile = iEikonEnv->EikAppUi()->Application()->AppFullName();
|
||||
TParse parser;
|
||||
parser.Set(startFile,NULL,NULL);
|
||||
|
||||
startFile = parser.DriveAndPath();
|
||||
#ifndef __WINS__
|
||||
startFile.Append( _L("PicoDrive.EXE"));
|
||||
#else
|
||||
startFile.Append( _L("PicoDrive.DLL"));
|
||||
#endif
|
||||
CApaCommandLine* cmdLine=CApaCommandLine::NewLC(startFile);
|
||||
RApaLsSession lsSession;
|
||||
lsSession.Connect();
|
||||
CleanupClosePushL(lsSession);
|
||||
lsSession.StartApp(*cmdLine,iThreadId);
|
||||
CleanupStack::PopAndDestroy();//close lsSession
|
||||
CleanupStack::PopAndDestroy(cmdLine);
|
||||
User::After(500000);// Let the application start
|
||||
TApaTaskList taskList(iEikonEnv->WsSession());
|
||||
TApaTask myTask=taskList.FindApp(TUid::Uid(0x101F9B49));
|
||||
myTask.SendToBackground();
|
||||
TApaTask exeTask=taskList.FindByPos(0);
|
||||
iExeWgId=exeTask.WgId();
|
||||
if(iThreadWatch.Open(iThreadId)==KErrNone)
|
||||
{
|
||||
iWatcher = new (ELeave)CPicoWatcher;
|
||||
iWatcher->iAppUi=this;
|
||||
iThreadWatch.Logon(iWatcher->iStatus);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
CPicoWatcher::CPicoWatcher():CActive(EPriorityStandard)
|
||||
{
|
||||
CActiveScheduler::Add(this);
|
||||
iStatus=KRequestPending;
|
||||
SetActive();
|
||||
}
|
||||
|
||||
CPicoWatcher::~CPicoWatcher()
|
||||
{
|
||||
}
|
||||
void CPicoWatcher::DoCancel()
|
||||
{
|
||||
}
|
||||
|
||||
void CPicoWatcher::RunL()
|
||||
{
|
||||
iAppUi->HandleCommandL(EEikCmdExit);
|
||||
}
|
||||
|
||||
void CPicoDriveUi::BringUpEmulatorL()
|
||||
{
|
||||
RThread thread;
|
||||
if(thread.Open(iThreadId)==KErrNone)
|
||||
{
|
||||
thread.Close();
|
||||
TApaTask apaTask(iEikonEnv->WsSession());
|
||||
apaTask.SetWgId(iExeWgId);
|
||||
apaTask.BringToForeground();
|
||||
}
|
||||
else
|
||||
{
|
||||
iExeWgId=-1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void CPicoDriveUi::HandleCommandL(TInt aCommand)
|
||||
{
|
||||
|
||||
switch(aCommand)
|
||||
{
|
||||
case EEikCmdExit:
|
||||
{
|
||||
RThread thread;
|
||||
if(thread.Open(iThreadId)==KErrNone)
|
||||
{
|
||||
thread.Terminate(0);
|
||||
thread.Close();
|
||||
}
|
||||
Exit();
|
||||
}
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
GLDEF_C TInt E32Dll(TDllReason)
|
||||
{
|
||||
return KErrNone;
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue