00001 // Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). 00002 // All rights reserved. 00003 // This component and the accompanying materials are made available 00004 // under the terms of "Eclipse Public License v1.0" 00005 // which accompanies this distribution, and is available 00006 // at the URL "http://www.eclipse.org/legal/epl-v10.html". 00007 // 00008 // Initial Contributors: 00009 // Nokia Corporation - initial contribution. 00010 // 00011 // Contributors: 00012 // 00013 // Description: 00014 // UI Control Framework example application 00015 // 00016 00017 #if !defined(__COSMILEY_H__) 00018 #define __COSMILEY_H__ 00019 00021 // 00022 // Include files containing: 00023 // 00024 // 1. Symbol definitions used by C++ code and resource scripts (the *.hrh) 00025 // 2. Resource ids generated by resource compilation of 00026 // resource scripts (the *.rsg) 00027 // 3. Class definitions required by this app (the *.h) 00028 // 00030 00031 // 1. 00032 #include <eikon.hrh> 00033 #include "CustomControls.hrh" 00034 // 2. 00035 #include <eikon.rsg> 00036 #include <customcontrols.rsg> 00037 // 3. 00038 #include <eikenv.h> 00039 #include <eikappui.h> 00040 #include <eikproc.h> 00041 #include <eikdialg.h> 00042 #include <eikmenub.h> 00043 #include <eikapp.h> 00044 #include <eikdoc.h> 00045 #include <coeutils.h> 00046 #include <barsread.h> 00047 #include <eikfctry.h> 00048 00049 // The unique identifier for this application. 00050 // NOTE that the number has been arbitrarily chosen for the purpose of 00051 // of the example. 00052 const TUid KUidExampleApp={0xE8000004}; 00053 00054 00056 // 00057 // -----> CSmileyDialog(definition) 00058 // 00060 class CSmileyDialog : public CEikDialog 00061 { 00062 public: 00063 // Construct and run 00064 static TBool RunDlgLD(); 00065 private: 00066 SEikControlInfo CreateCustomControlL(TInt aControlType); 00067 }; 00068 00070 // 00071 // -----> CSmiley (definition) 00072 // 00074 class CSmiley : public CCoeControl 00075 { 00076 public: 00077 CSmiley(TBool aSmiling); 00078 ~CSmiley(); 00079 public: 00080 TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType); 00081 TBool IsSmiling(); 00082 private: 00083 void Draw(const TRect& aRect) const; 00084 void SizeChanged(); 00085 protected: 00086 void HandlePointerEventL(const TPointerEvent& aPointerEvent); 00087 void FocusChanged(TDrawNow aDrawNow); 00088 private: 00089 TBool iSmiling; 00090 TRect iSmileyRect; 00091 TInt iSmileyWidth; 00092 TInt iSmileyHeight; 00093 TRect iSmileRect; 00094 TRect iFrownRect; 00095 }; 00096 00098 // 00099 // -----> CSmileyContainer(definition) 00100 // 00102 class CSmileyContainer : public CCoeControl, 00103 public MCoeControlObserver 00104 { 00105 public: 00106 // Construction 00107 CSmileyContainer(); 00108 void ConstructL(const TRect& aRect); 00109 // Destruction 00110 ~CSmileyContainer(); 00111 void ConstructFromResourceL(TResourceReader& aReader); 00112 void PrepareForFocusLossL(); 00113 TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType); 00114 protected: 00115 void FocusChanged(TDrawNow aDrawNow); 00116 private: 00117 // Virtual, defined by CCoeControl; replaces the default implementation 00118 // provided by CCoeControl. 00119 void Draw(const TRect& aRect) const; 00120 00121 // Virtual, defined by CCoeControl; replaces the default implementation 00122 // provided by CCoeControl. 00123 TInt CountComponentControls() const; 00124 00125 // Virtual, defined by CCoeControl; replaces the default implementation 00126 // provided by CCoeControl. 00127 CCoeControl* ComponentControl(TInt aIndex) const; 00128 00129 // Virtual, defined by CCoeControl; empty implementation provided by 00130 // CCoeControl; full implementation provided by this class 00131 void SizeChanged(); 00132 00133 // Defined as pure virtual by the mixin class MCoeControlObserver 00134 // inherited by CCoeControl. An empty implementation provided by 00135 // this class (its containees do not report events). 00136 void HandleControlEventL(CCoeControl* aControl, 00137 TCoeEvent aEventType); 00138 private: 00139 // Member functions defined and used by this class 00140 void SwapFocus(CCoeControl* aControl); 00141 private: 00142 // Data members defined and used by this class. 00143 CSmiley* iSmiley1; 00144 CSmiley* iSmiley2; 00145 }; 00146 00147 00148 00150 // 00151 // -----> CMainWinControl (definition) 00152 // 00154 class CMainWinControl : public CCoeControl 00155 { 00156 public: 00157 CMainWinControl(); 00158 ~CMainWinControl(); 00159 void ConstructL(const TRect& rect); 00160 TInt CountComponentControls() const; 00161 CCoeControl* ComponentControl(TInt aIndex) const; 00162 TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType); 00163 private: 00164 void Draw(const TRect& aRect) const; 00165 private: 00166 CSmileyContainer* iContainer; 00167 }; 00168 00170 // 00171 // -----> CExampleAppUi (definition) 00172 // 00174 class CExampleAppUi : public CEikAppUi 00175 { 00176 public: 00177 // Destruction. 00178 ~CExampleAppUi(); 00179 00180 public: 00181 // Virtual, defined by CEikAppUi; replaces the implementation 00182 // provided by CEikAppUi. 00183 void ConstructL(); 00184 00185 private: 00186 // Virtual, defined by CEikAppUi; empty implementation 00187 // provided by CEikAppUi; full implementation provided 00188 // by this class. 00189 void HandleCommandL(TInt aCommand); 00190 00191 // Virtual, defined by CEikAppUi; empty implementation 00192 // provided by CEikAppUi; full implementation provided 00193 // by this class. 00194 void HandleModelChangeL(); 00195 00196 private: 00197 void OnCmdExit(); 00198 private: 00199 // Data members defined by this class. 00200 CMainWinControl* iMainWinControl; 00201 }; 00202 00204 // 00205 // -----> CExampleDocument (definition) 00206 // 00208 class CExampleDocument : public CEikDocument 00209 { 00210 public: 00211 // Construction. 00212 static CExampleDocument* NewL(CEikApplication& aApp); 00213 CExampleDocument(CEikApplication& aApp); 00214 // Destruction. 00215 ~CExampleDocument(); 00216 00217 private: 00218 // Defined as pure virtual by CEikDocument; full implementation 00219 // provided by this class 00220 CEikAppUi* CreateAppUiL(); // Construct an app.user interface 00221 00222 // Defined as pure virtual by CApaDocument; empty implementation 00223 // provided by CEikDocument; full implementation provided 00224 // by this class. 00225 void NewDocumentL(); // Build a new document 00226 00227 // Defined as pure virtual by CApaDocument; empty implementation 00228 // provided by CEikDocument; full implementation provided 00229 // by this class. 00230 void StoreL(CStreamStore& aStore, 00231 CStreamDictionary& aStreamDic 00232 ) const; 00233 void RestoreL(const CStreamStore& aStore, 00234 const CStreamDictionary& aStreamDic 00235 ); 00236 00237 public: 00238 // Member functions defined by this class 00239 void DoNewFileL(const TFileName& aFileName); 00240 void DoOpenFileL(const TFileName& aFileName); 00241 void DoSaveToNewFileL(const TFileName& aNewFileName); 00242 TBool FileNameExists(const TFileName& aFileName) const; 00243 00244 private: 00245 // Member functions defined by this class 00246 void CreateModelL(); 00247 void ResetModelL(); 00248 }; 00249 00251 // 00252 // -----> CExampleApplication (definition) 00253 // 00255 class CExampleApplication : public CEikApplication 00256 { 00257 private: 00258 // Defined as pure virtual by CApaApplication; implementation 00259 // provided by this class 00260 TUid AppDllUid() const; // Returns Uid associated with app 00261 00262 // Defined as pure virtual by CEikApplication; implementation 00263 // provided by this class. 00264 CApaDocument* CreateDocumentL(); // Construct new document 00265 }; 00266 00267 00268 00269 #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.