| 1 | /*******************************************************************\r |
| 2 | *\r |
| 3 | * File: App.h\r |
| 4 | *\r |
| 5 | * Author: Peter van Sebille (peter@yipton.net)\r |
| 6 | *\r |
| 7 | * Modified/adapted for picodriveN by notaz, 2006\r |
| 8 | *\r |
| 9 | * (c) Copyright 2006, notaz\r |
| 10 | * (c) Copyright 2001, Peter van Sebille\r |
| 11 | * All Rights Reserved\r |
| 12 | *\r |
| 13 | *******************************************************************/\r |
| 14 | \r |
| 15 | #ifndef __APP_H\r |
| 16 | #define __APP_H\r |
| 17 | \r |
| 18 | #include <coecntrl.h>\r |
| 19 | #include <coeccntx.h>\r |
| 20 | #include <coemain.h>\r |
| 21 | \r |
| 22 | #include <eikappui.h>\r |
| 23 | #include <eikapp.h>\r |
| 24 | #include <eikdoc.h>\r |
| 25 | \r |
| 26 | #include "Engine.h"\r |
| 27 | #include "../ClientServer.h"\r |
| 28 | #include "SimpleClient.h"\r |
| 29 | #include "picodriven.hrh"\r |
| 30 | \r |
| 31 | const TUid KUidPicolApp = { 0x1000C193 };\r |
| 32 | const TUid KUidPicolFOView = { 0x1000C194 };\r |
| 33 | const TUid KUidPicolFCView = { 0x1000C195 };\r |
| 34 | \r |
| 35 | enum\r |
| 36 | {\r |
| 37 | EScreenModeFlipOpen = 0,\r |
| 38 | EScreenModeFlipClosed\r |
| 39 | };\r |
| 40 | \r |
| 41 | \r |
| 42 | //class CWsBitmap;\r |
| 43 | \r |
| 44 | \r |
| 45 | class CPicolDocument : public CEikDocument\r |
| 46 | {\r |
| 47 | public:\r |
| 48 | ~CPicolDocument();\r |
| 49 | CPicolDocument(CEikApplication& aApp);\r |
| 50 | void ConstructL();\r |
| 51 | \r |
| 52 | private: // from CEikDocument\r |
| 53 | CEikAppUi* CreateAppUiL();\r |
| 54 | };\r |
| 55 | \r |
| 56 | \r |
| 57 | class CEPicolAppView : public CCoeControl // , public MCoeControlBrushContext\r |
| 58 | {\r |
| 59 | public:\r |
| 60 | ~CEPicolAppView();\r |
| 61 | void ConstructL(const TRect& aRect);\r |
| 62 | \r |
| 63 | private:\r |
| 64 | void Draw(const TRect& aRect) const;\r |
| 65 | \r |
| 66 | //CWsBitmap* iBgImage;\r |
| 67 | //TPoint iImagePosition;\r |
| 68 | };\r |
| 69 | \r |
| 70 | \r |
| 71 | class CPicolViewBase : public CBase, public MCoeView\r |
| 72 | {\r |
| 73 | public:\r |
| 74 | \r |
| 75 | CPicolViewBase(CEPicolAppView& aAppViewCtl) : iAppViewCtl(aAppViewCtl) {}\r |
| 76 | //~CPicolViewBase();\r |
| 77 | \r |
| 78 | protected: \r |
| 79 | \r |
| 80 | // implements MCoeView:\r |
| 81 | virtual void ViewActivatedL(const TVwsViewId& /*aPrevViewId*/, TUid /*aCustomMessageId*/, const TDesC8& /*aCustomMessage*/);\r |
| 82 | virtual void ViewDeactivated();\r |
| 83 | //virtual void ViewConstructL();\r |
| 84 | \r |
| 85 | CEPicolAppView& iAppViewCtl;\r |
| 86 | };\r |
| 87 | \r |
| 88 | \r |
| 89 | class CPicolFOView : public CPicolViewBase\r |
| 90 | {\r |
| 91 | public:\r |
| 92 | \r |
| 93 | CPicolFOView(CEPicolAppView& aAppViewCtl) : CPicolViewBase(aAppViewCtl) {}\r |
| 94 | //~CPicolFOView();\r |
| 95 | virtual TVwsViewId ViewId() const;\r |
| 96 | virtual TVwsViewIdAndMessage ViewScreenDeviceChangedL();\r |
| 97 | virtual TBool ViewScreenModeCompatible(TInt aScreenMode);\r |
| 98 | virtual void ViewActivatedL(const TVwsViewId& /*aPrevViewId*/, TUid /*aCustomMessageId*/, const TDesC8& /*aCustomMessage*/);\r |
| 99 | };\r |
| 100 | \r |
| 101 | \r |
| 102 | class CPicolFCView : public CPicolViewBase\r |
| 103 | {\r |
| 104 | public:\r |
| 105 | \r |
| 106 | CPicolFCView(CEPicolAppView& aAppViewCtl) : CPicolViewBase(aAppViewCtl) {}\r |
| 107 | //~CPicolFCView();\r |
| 108 | virtual TVwsViewId ViewId() const;\r |
| 109 | virtual TVwsViewIdAndMessage ViewScreenDeviceChangedL();\r |
| 110 | virtual TBool ViewScreenModeCompatible(TInt aScreenMode);\r |
| 111 | virtual void ViewActivatedL(const TVwsViewId& /*aPrevViewId*/, TUid /*aCustomMessageId*/, const TDesC8& /*aCustomMessage*/);\r |
| 112 | };\r |
| 113 | \r |
| 114 | \r |
| 115 | \r |
| 116 | class CPicolAppUi : public CEikAppUi, public MGameWatcher\r |
| 117 | {\r |
| 118 | public:\r |
| 119 | CPicolAppUi();\r |
| 120 | void ConstructL();\r |
| 121 | ~CPicolAppUi();\r |
| 122 | \r |
| 123 | public: // implements MGameWatcher\r |
| 124 | void NotifyEmuDeath();\r |
| 125 | void NotifyForcedExit();\r |
| 126 | \r |
| 127 | TBool EmuRunning() const;\r |
| 128 | \r |
| 129 | protected: // from CEikAppUi\r |
| 130 | void HandleCommandL(TInt aCommand);\r |
| 131 | void DynInitMenuPaneL(TInt aResourceId,CEikMenuPane* aMenuPane);\r |
| 132 | void HandleSystemEventL(const TWsEvent& aEvent);\r |
| 133 | \r |
| 134 | protected: // new stuf\r |
| 135 | void DisplayAboutDialogL();\r |
| 136 | void DisplayOpenROMDialogL();\r |
| 137 | void DisplayConfigDialogL();\r |
| 138 | void DisplayDebugDialogL();\r |
| 139 | \r |
| 140 | void StopGame();\r |
| 141 | void RunGameL();\r |
| 142 | void SendConfig();\r |
| 143 | void RetrieveConfig();\r |
| 144 | \r |
| 145 | CGameRunner* iGameRunner;\r |
| 146 | CExitForcer* iExitForcer; // makes sure emu process exits\r |
| 147 | CThreadWatcher* iThreadWatcher1; // emu process helper thread watcher\r |
| 148 | RServSession ss;\r |
| 149 | \r |
| 150 | private:\r |
| 151 | //void HandleScreenDeviceChangedL();\r |
| 152 | //void HandleWsEventL(const TWsEvent& aEvent, CCoeControl* aDestination);\r |
| 153 | virtual void HandleApplicationSpecificEventL(TInt aType, const TWsEvent& aEvent);\r |
| 154 | \r |
| 155 | private:\r |
| 156 | TBool iQuitting;\r |
| 157 | TBool iROMLoaded;\r |
| 158 | TBool iEmuRunning;\r |
| 159 | TBool iAfterConfigDialog;\r |
| 160 | TTime iConfigDialogClosed;\r |
| 161 | TPicoConfig iCurrentConfig;\r |
| 162 | TPLauncherConfig iCurrentLConfig;\r |
| 163 | \r |
| 164 | CEPicolAppView* iAppView;\r |
| 165 | CPicolFOView* iFOView;\r |
| 166 | CPicolFCView* iFCView;\r |
| 167 | };\r |
| 168 | \r |
| 169 | \r |
| 170 | \r |
| 171 | class CPicolApplication : public CEikApplication\r |
| 172 | {\r |
| 173 | private: // from CApaApplication\r |
| 174 | CApaDocument* CreateDocumentL();\r |
| 175 | TUid AppDllUid() const;\r |
| 176 | };\r |
| 177 | \r |
| 178 | #endif\r |