CMenu.h
上传用户:snevogroup
上传日期:2008-06-06
资源大小:432k
文件大小:3k
源码类别:

Symbian

开发平台:

C/C++

  1. #ifndef __CMENU_H
  2. #define __CMENU_H
  3. #include <w32std.h>
  4. const TInt MenuItemSum = 19;
  5. const TInt MenuPageSum = 7;
  6. const TInt SettingStr = 17;
  7. const TInt SettingItem = 6;
  8. enum TMenuItem
  9. {
  10. EStart = 0,
  11. EOptions,
  12. ECredit,
  13. EHighScore,
  14. EQuit,
  15. EOptions_Sound,
  16. EOptions_Difficulty,
  17. EOptions_RotateDir,
  18. EOptions_Back,
  19. ESound_Sounds,
  20. ESound_Music,
  21. ESound_Volume,
  22. ESound_Done,
  23. EDifficulty_StartLines,
  24. EDifficulty_AddBrick,
  25. EDifficulty_Done,
  26. EPause_Continue,
  27. EPause_Sound,
  28. EPause_EndGame,
  29. ENoneItem
  30. };
  31. enum TMenuState
  32. {
  33. EMainPage = 0,
  34. EOptionsPage,
  35. ESoundPage,
  36. EDifficultyPage,
  37. EPausePage,
  38. ECreditPage,
  39. EHighScorePage,
  40. ENonePage
  41. };
  42. class CMenu : public CBase
  43. {
  44. // Construct and destruct
  45. public:
  46. static CMenu* NewL(CFbsBitGc* aFbsBitGc);
  47. ~CMenu();
  48. private:
  49. void ConstructL();
  50. CMenu(CFbsBitGc* aFbsBitGc);
  51. //////////////////////////////////////////////////////////////////////
  52. // Other Method
  53. public:
  54. // draw the menu
  55. void Draw();
  56. // handel command
  57. TInt32 Command(TInt aCommand);
  58. private:
  59. // set the frame contains the text
  60. // Dymamic modify the frame's position if possible
  61. void SetFrameDynamic(TInt aMenuItem);
  62. // don't modify it's position
  63. void SetFrame(TInt aMenuItem);
  64. void ResetPos();
  65. void DrawPage(TInt aItemForm, TInt aItemTo);
  66. void DrawBg();
  67. // Init menu positon and Txt
  68. void LoadResL();
  69. // Index
  70. TInt Index(TInt aMenuItem);
  71. /////////////////////////////////////////////////////////////////////
  72. // Data
  73. private:
  74. CFbsBitGc* iGc; // graphic context
  75. TInt iMenuItem; // current menu item
  76. TInt iPrevItem;
  77. TMenuState iMenuState; // current menu page
  78. TMenuState iPrevPage;
  79. TFixedArray<TPoint, MenuItemSum> iMenuItemPos; // menu item position
  80. TFixedArray<HBufC*, MenuItemSum> iMenuItemTxt; // menu item text
  81. TFixedArray<HBufC*, SettingStr> iSettingStr;
  82. TFixedArray<TPoint, SettingItem> iSettingPos;
  83. TFixedArray<TPoint, MenuPageSum> iMenuPagePos; // Menu Page start&end menuItem num
  84. CFbsBitmap* iBitmap;
  85. TPoint iPos; // used for background
  86. TPoint iPointList[12]; // 12 points form a frame
  87. TPoint iCurrentMenuItemPos[MenuItemSum];
  88. TInt iBlink; // used for blink menu
  89. TInt iSpeed; // used for showing menu
  90. TBool iSelect; // used for highlight menu one time when selected
  91. //CEikLabel* iLabel;
  92. public:
  93. TFixedArray<TInt, SettingItem> iSetting; // used for return
  94. };
  95. #endif