diff -r f345bda72bc4 -r 43e37759235e Symbian3/Examples/guid-6013a680-57f9-415b-8851-c4fa63356636/helloworldbasicappui_8cpp_source.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/Examples/guid-6013a680-57f9-415b-8851-c4fa63356636/helloworldbasicappui_8cpp_source.html Tue Mar 30 16:16:55 2010 +0100 @@ -0,0 +1,239 @@ + + +
+ +00001 /* +00002 * ============================================================================== +00003 * Name : helloworldbasicappui.cpp +00004 * Part of : Helloworldbasic +00005 * Interface : +00006 * Description : +00007 * Version : +00008 * +00009 * Copyright (c) 2005-2006 Nokia Corporation. +00010 * This material, including documentation and any related +00011 * computer programs, is protected by copyright controlled by +00012 * Nokia Corporation. +00013 * ============================================================================== +00014 */ +00015 +00016 // INCLUDE FILES +00017 #include <avkon.hrh> +00018 #include <aknnotewrappers.h> +00019 #include <stringloader.h> +00020 #include <HelloWorldBasic.rsg> +00021 #include <f32file.h> +00022 #include <s32file.h> +00023 +00024 #include "HelloWorldBasic.pan" +00025 #include "HelloWorldBasicAppUi.h" +00026 #include "HelloWorldBasicAppView.h" +00027 #include "HelloWorldBasic.hrh" +00028 #include "HelloWorldBasicQueryDialog.h" +00029 +00030 _LIT( KHelloFileName, "Hello.txt" ); +00031 +00032 // ============================ MEMBER FUNCTIONS =============================== +00033 +00034 +00035 // ----------------------------------------------------------------------------- +00036 // CHelloWorldBasicAppUi::ConstructL() +00037 // Symbian 2nd phase constructor can leave. +00038 // ----------------------------------------------------------------------------- +00039 // +00040 void CHelloWorldBasicAppUi::ConstructL() +00041 { +00042 // Initialise app UI with standard value. +00043 BaseConstructL(CAknAppUi::EAknEnableSkin); +00044 +00045 // Here the Hello.txt file is created. Because HelloWorld application is +00046 // localized to various languages, the Hello.txt-file is created every time +00047 // with current localization language +00048 // +00049 RFs fsSession; +00050 User::LeaveIfError(fsSession.Connect()); +00051 CleanupClosePushL( fsSession ); +00052 TInt objectsInStack = 1; +00053 +00054 #if defined(__WINS__) || defined(__WINSCW__) +00055 // create private folder, when testing in emulator. +00056 // ignore the return value; if this fails, then file.Replace() will fail +00057 // and a warning note will be printed. +00058 // +00059 fsSession.CreatePrivatePath(EDriveC); +00060 #endif +00061 +00062 RFile file; +00063 +00064 // Create a file to write the text to +00065 TInt err = file.Replace(fsSession, KHelloFileName, EFileWrite ); +00066 if (KErrNone == err) +00067 { +00068 CleanupClosePushL( file ); +00069 +00070 RFileWriteStream outputFileStream( file ); +00071 CleanupClosePushL( outputFileStream ); +00072 +00073 // Load a string from the resource file and stream it to file +00074 HBufC* textResource = StringLoader::LoadLC( R_HEWB_FILE_TEXT ); +00075 objectsInStack += 3; // file, outputFileStream, testResource +00076 +00077 outputFileStream << *textResource; +00078 } +00079 else +00080 { +00081 _LIT(KFileWriteFailed,"Writing file %S failed: error %d"); +00082 CAknWarningNote* note = new ( ELeave ) CAknWarningNote(ETrue); +00083 +00084 TBuf<64> text; +00085 text.Format(KFileWriteFailed, &KHelloFileName, err); +00086 note->ExecuteLD( text ); +00087 } +00088 +00089 CleanupStack::PopAndDestroy(objectsInStack, &fsSession); +00090 +00091 // Create view object +00092 iAppView = CHelloWorldBasicAppView::NewL( ClientRect() ); +00093 +00094 } +00095 // ----------------------------------------------------------------------------- +00096 // CHelloWorldBasicAppUi::CHelloWorldBasicAppUi() +00097 // C++ default constructor can NOT contain any code, that might leave. +00098 // ----------------------------------------------------------------------------- +00099 // +00100 CHelloWorldBasicAppUi::CHelloWorldBasicAppUi() +00101 { +00102 // No implementation required +00103 } +00104 +00105 // ----------------------------------------------------------------------------- +00106 // CHelloWorldBasicAppUi::~CHelloWorldBasicAppUi() +00107 // Destructor. +00108 // ----------------------------------------------------------------------------- +00109 // +00110 CHelloWorldBasicAppUi::~CHelloWorldBasicAppUi() +00111 { +00112 if ( iAppView ) +00113 { +00114 delete iAppView; +00115 iAppView = NULL; +00116 } +00117 } +00118 +00119 // ----------------------------------------------------------------------------- +00120 // CHelloWorldBasicAppUi::HandleCommandL() +00121 // Takes care of command handling. +00122 // ----------------------------------------------------------------------------- +00123 // +00124 void CHelloWorldBasicAppUi::HandleCommandL( TInt aCommand ) +00125 { +00126 // clear possible old user-given text +00127 if (iAppView->GetText().Size() > 0) +00128 { +00129 iAppView->GetText().Zero(); +00130 iAppView->DrawNow(); +00131 } +00132 +00133 switch( aCommand ) +00134 { +00135 case EEikCmdExit: +00136 case EAknSoftkeyExit: +00137 Exit(); +00138 break; +00139 +00140 case EHelloWorldBasicCommand1: +00141 { +00142 // Load a string from the resource file and display it +00143 HBufC* textResource = StringLoader::LoadLC( R_HEWB_COMMAND1_TEXT ); +00144 CAknInformationNote* note = new ( ELeave ) CAknInformationNote; +00145 +00146 // Show the information Note with +00147 // textResource loaded with StringLoader. +00148 note->ExecuteLD( *textResource ); +00149 +00150 // Pop HBuf from CleanUpStack and Destroy it. +00151 CleanupStack::PopAndDestroy( textResource ); +00152 } +00153 break; +00154 +00155 case EHelloWorldBasicCommand2: +00156 { +00157 RFs fsSession; +00158 RFile rFile; +00159 +00160 // Connects a client process to the fileserver +00161 User::LeaveIfError(fsSession.Connect()); +00162 CleanupClosePushL(fsSession); +00163 +00164 //Open file where the stream text is +00165 User::LeaveIfError(rFile.Open(fsSession,KHelloFileName, EFileStreamText)); +00166 CleanupClosePushL(rFile); +00167 +00168 // copy stream from file to RFileStream object +00169 RFileReadStream inputFileStream(rFile); +00170 CleanupClosePushL(inputFileStream); +00171 +00172 // HBufC descriptor is created from the RFileStream object. +00173 HBufC* fileData = HBufC::NewLC(inputFileStream, 32); +00174 +00175 CAknInformationNote* note = new ( ELeave ) CAknInformationNote; +00176 +00177 // Show the information Note +00178 note->ExecuteLD( *fileData ); +00179 +00180 // Pop loaded resources from the cleanup stack: +00181 // filedata, inputFileStream, rFile, fsSession +00182 CleanupStack::PopAndDestroy(4, &fsSession); +00183 } +00184 break; +00185 +00186 case EHelloWorldBasicCommand3: +00187 { +00188 // Load a string from the resources and use it as a default value +00189 HBufC* defaultText = StringLoader::LoadLC( R_HEWB_FILE_TEXT ); +00190 +00191 CHelloWorldQueryDialog *dlg = new (ELeave) +00192 CHelloWorldQueryDialog( iAppView->GetText(), defaultText ); +00193 +00194 dlg->ExecuteLD( R_DIALOG_TEXT_EDIT_QUERY ); +00195 iAppView->DrawNow(); +00196 +00197 // Pop HBuf from CleanUpStack and Destroy it. +00198 CleanupStack::PopAndDestroy( defaultText ); +00199 } +00200 break; +00201 +00202 default: +00203 break; +00204 } +00205 } +00206 // ----------------------------------------------------------------------------- +00207 // Called by framework when layout is changed. +00208 // Passes the new client rectangle to the AppView +00209 // ----------------------------------------------------------------------------- +00210 // +00211 void CHelloWorldBasicAppUi::HandleResourceChangeL( TInt aType ) +00212 { +00213 // base-class call also +00214 CAknAppUi::HandleResourceChangeL(aType); +00215 if (aType == KEikDynamicLayoutVariantSwitch) +00216 { +00217 if (iAppView) +00218 iAppView->SetRect( ClientRect() ); +00219 } +00220 } +00221 +00222 // End of File +00223 +