00001 /* ==================================================================== 00002 * File: TestAppAppUi.cpp 00003 * Created: 28/06/06 by Forum Nokia 00004 * Author: 00005 * Copyright (c): All rights reserved 00006 * ==================================================================== */ 00007 00008 #include <avkon.hrh> 00009 #include <aknnotewrappers.h> 00010 00011 #include "TestApp.pan" 00012 #include "TestAppAppUi.h" 00013 #include "TestAppAppView.h" 00014 #include "TestApp.hrh" 00015 00016 #include <apmstd.h> //TDAtatype, link against: apmime.lib 00017 #include <DocumentHandler.h> 00018 #include <apgcli.h> //RApaLsSession 00019 00020 #ifdef __SERIES60_3X__ 00021 _LIT(KTestFile,"c:\\data\\Images\\Pictures\\test.new"); 00022 #else 00023 _LIT(KTestFile,"c:\\nokia\\Images\\Pictures\\test.new"); 00024 #endif 00025 00026 #ifdef __SERIES60_3X__ 00027 _LIT(KTestFile2,"c:\\data\\Images\\Pictures\\test2.new"); 00028 #else 00029 _LIT(KTestFile2,"c:\\nokia\\Images\\Pictures\\test2.new"); 00030 #endif 00031 00032 void CTestAppAppUi::ConstructL() 00033 { 00034 BaseConstructL(); 00035 00036 iAppView = CTestAppAppView::NewL(ClientRect()); 00037 iDocHandler = CDocumentHandler::NewL( CEikonEnv::Static()->Process() ); 00038 00039 AddToStackL(iAppView); 00040 } 00041 00042 CTestAppAppUi::CTestAppAppUi() 00043 { 00044 // no implementation required 00045 } 00046 00047 CTestAppAppUi::~CTestAppAppUi() 00048 { 00049 if (iAppView) 00050 { 00051 RemoveFromStack(iAppView); 00052 delete iAppView; 00053 iAppView = NULL; 00054 } 00055 delete iDocHandler; 00056 } 00057 00058 // handle any menu commands 00059 void CTestAppAppUi::HandleCommandL(TInt aCommand) 00060 { 00061 switch(aCommand) 00062 { 00063 case EEikCmdExit: 00064 case EAknSoftkeyExit: 00065 Exit(); 00066 break; 00067 00068 case ETestAppCommand1: 00069 { 00070 LaunchFileL(EFalse); //standalone 00071 break; 00072 } 00073 00074 case ETestAppCommand2: 00075 { 00076 LaunchFileL(ETrue); //embedded 00077 break; 00078 } 00079 break; 00080 00081 default: 00082 Panic(ETestAppBasicUi); 00083 break; 00084 } 00085 } 00086 00087 void CTestAppAppUi::LaunchFileL(TBool aEmbedded) 00088 { 00089 TFileName path; 00090 if (iCount++ % 2 == 0) 00091 { 00092 path = KTestFile; 00093 } 00094 else 00095 { 00096 path = KTestFile2; 00097 } 00098 00099 TDataType empty = TDataType(); 00100 00101 if( aEmbedded ) 00102 { 00103 //Set the exit observer so NotifyExit or in 3rd edition 00104 //HandleServerAppExit will be called 00105 iDocHandler->SetExitObserver(this); 00106 iDocHandler->OpenFileEmbeddedL(path,empty ); 00107 } 00108 else 00109 { 00110 iDocHandler->OpenFileL(path,empty ); 00111 00112 //If the standalone handler is already running then update the 00113 //document file 00114 TUid handlerUid; 00115 TInt err = KErrNone; 00116 #ifdef __SERIES60_3X__ 00117 err = iDocHandler->HandlerAppUid(handlerUid); 00118 #else 00119 RApaLsSession apaLs; 00120 User::LeaveIfError( apaLs.Connect() ); 00121 err = apaLs.AppForDocument(path, handlerUid, empty); 00122 apaLs.Close(); 00123 #endif 00124 00125 if( !err ) 00126 { 00127 RefreshDocumentFileL(handlerUid, path); 00128 } 00129 else if( err == KNotInitialized ) 00130 { 00131 //Handler not initialized 00132 } 00133 else 00134 { 00135 //Some other error 00136 } 00137 00138 } 00139 00140 } 00141 00142 TBool CTestAppAppUi::RefreshDocumentFileL(const TUid& aUid, const TDesC& aFileName ) 00143 { 00144 TApaTaskList taskList(iCoeEnv->WsSession()); 00145 TApaTask task = (taskList.FindApp(aUid)); 00146 00147 if (task.Exists()) 00148 { 00149 //calls AppUi::OpenFileL, requires SwEvent capability 00150 User::LeaveIfError(task.SwitchOpenFile(aFileName)); 00151 //task.BringToForeground(); 00152 return ETrue; 00153 } 00154 return EFalse; 00155 } 00156 00157 void CTestAppAppUi::HandleResourceChangeL(TInt aType) 00158 { 00159 CAknAppUi::HandleResourceChangeL(aType); //call to upper class 00160 00161 // ADDED FOR SCALABLE UI SUPPORT 00162 // ***************************** 00163 //if ( aType == KEikDynamicLayoutVariantSwitch ) 00164 //hard coded constant so it can be compiled with first edition 00165 00166 if ( aType == 0x101F8121 ) 00167 { 00168 iAppView->SetRect( ClientRect() ); 00169 } 00170 } 00171 00172 00173 #ifdef __SERIES60_3X__ 00174 void CTestAppAppUi::HandleServerAppExit (TInt aReason) 00175 { 00176 //Handle the closing of the handler application 00177 MAknServerAppExitObserver::HandleServerAppExit( aReason ); 00178 } 00179 #else 00180 void CTestAppAppUi::NotifyExit(TExitMode aMode) 00181 { 00182 //Handle the closing of the handler application 00183 //The mode can be set by the handler application by calling 00184 //iDoorObserver->NotifyExit(TExitMode); 00185 00186 switch (aMode) 00187 { 00188 00190 case EKeepChanges: 00191 { 00192 //TODO 00193 } 00194 break; 00195 00198 case ERevertToSaved: 00199 { 00200 //TODO 00201 } 00202 break; 00204 case ENoChanges: 00205 { 00206 //TODO 00207 } 00208 break; 00210 case EEmpty: 00211 { 00212 //TODO 00213 } 00214 break; 00215 default: 00216 //TODO 00217 break; 00218 } 00219 } 00220 #endif
Copyright ©2010 Nokia Corporation and/or its subsidiary(-ies).
All rights
reserved. Unless otherwise stated, these materials are provided under the terms of the Eclipse Public License
v1.0.