00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #if !defined(__COSMILEY_H__)
00030 #define __COSMILEY_H__
00031
00033
00034
00035
00036
00037
00038
00039
00040
00042
00043
00044 #include <eikon.hrh>
00045 #include "CustomControls.hrh"
00046
00047 #include <eikon.rsg>
00048 #include <customcontrols.rsg>
00049
00050 #include <eikenv.h>
00051 #include <eikappui.h>
00052 #include <eikproc.h>
00053 #include <eikdialg.h>
00054 #include <eikmenub.h>
00055 #include <eikapp.h>
00056 #include <eikdoc.h>
00057 #include <coeutils.h>
00058 #include <barsread.h>
00059 #include <eikfctry.h>
00060
00061
00062
00063
00064 const TUid KUidExampleApp={0xE8000004};
00065
00066
00068
00069
00070
00072 class CSmileyDialog : public CEikDialog
00073 {
00074 public:
00075
00076 static TBool RunDlgLD();
00077 private:
00078 SEikControlInfo CreateCustomControlL(TInt aControlType);
00079 };
00080
00082
00083
00084
00086 class CSmiley : public CCoeControl
00087 {
00088 public:
00089 CSmiley(TBool aSmiling);
00090 ~CSmiley();
00091 public:
00092 TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType);
00093 TBool IsSmiling();
00094 private:
00095 void Draw(const TRect& aRect) const;
00096 void SizeChanged();
00097 protected:
00098 void HandlePointerEventL(const TPointerEvent& aPointerEvent);
00099 void FocusChanged(TDrawNow aDrawNow);
00100 private:
00101 TBool iSmiling;
00102 TRect iSmileyRect;
00103 TInt iSmileyWidth;
00104 TInt iSmileyHeight;
00105 TRect iSmileRect;
00106 TRect iFrownRect;
00107 };
00108
00110
00111
00112
00114 class CSmileyContainer : public CCoeControl,
00115 public MCoeControlObserver
00116 {
00117 public:
00118
00119 CSmileyContainer();
00120 void ConstructL(const TRect& aRect);
00121
00122 ~CSmileyContainer();
00123 void ConstructFromResourceL(TResourceReader& aReader);
00124 void PrepareForFocusLossL();
00125 TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType);
00126 protected:
00127 void FocusChanged(TDrawNow aDrawNow);
00128 private:
00129
00130
00131 void Draw(const TRect& aRect) const;
00132
00133
00134
00135 TInt CountComponentControls() const;
00136
00137
00138
00139 CCoeControl* ComponentControl(TInt aIndex) const;
00140
00141
00142
00143 void SizeChanged();
00144
00145
00146
00147
00148 void HandleControlEventL(CCoeControl* aControl,
00149 TCoeEvent aEventType);
00150 private:
00151
00152 void SwapFocus(CCoeControl* aControl);
00153 private:
00154
00155 CSmiley* iSmiley1;
00156 CSmiley* iSmiley2;
00157 };
00158
00159
00160
00162
00163
00164
00166 class CMainWinControl : public CCoeControl
00167 {
00168 public:
00169 CMainWinControl();
00170 ~CMainWinControl();
00171 void ConstructL(const TRect& rect);
00172 TInt CountComponentControls() const;
00173 CCoeControl* ComponentControl(TInt aIndex) const;
00174 TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType);
00175 private:
00176 void Draw(const TRect& aRect) const;
00177 private:
00178 CSmileyContainer* iContainer;
00179 };
00180
00182
00183
00184
00186 class CExampleAppUi : public CEikAppUi
00187 {
00188 public:
00189
00190 ~CExampleAppUi();
00191
00192 public:
00193
00194
00195 void ConstructL();
00196
00197 private:
00198
00199
00200
00201 void HandleCommandL(TInt aCommand);
00202
00203
00204
00205
00206 void HandleModelChangeL();
00207
00208 private:
00209 void OnCmdExit();
00210 private:
00211
00212 CMainWinControl* iMainWinControl;
00213 };
00214
00216
00217
00218
00220 class CExampleDocument : public CEikDocument
00221 {
00222 public:
00223
00224 static CExampleDocument* NewL(CEikApplication& aApp);
00225 CExampleDocument(CEikApplication& aApp);
00226
00227 ~CExampleDocument();
00228
00229 private:
00230
00231
00232 CEikAppUi* CreateAppUiL();
00233
00234
00235
00236
00237 void NewDocumentL();
00238
00239
00240
00241
00242 void StoreL(CStreamStore& aStore,
00243 CStreamDictionary& aStreamDic
00244 ) const;
00245 void RestoreL(const CStreamStore& aStore,
00246 const CStreamDictionary& aStreamDic
00247 );
00248
00249 public:
00250
00251 void DoNewFileL(const TFileName& aFileName);
00252 void DoOpenFileL(const TFileName& aFileName);
00253 void DoSaveToNewFileL(const TFileName& aNewFileName);
00254 TBool FileNameExists(const TFileName& aFileName) const;
00255
00256 private:
00257
00258 void CreateModelL();
00259 void ResetModelL();
00260 };
00261
00263
00264
00265
00267 class CExampleApplication : public CEikApplication
00268 {
00269 private:
00270
00271
00272 TUid AppDllUid() const;
00273
00274
00275
00276 CApaDocument* CreateDocumentL();
00277 };
00278
00279
00280
00281 #endif