- Main Page
- Namespaces
- Classes
- Files
- Directories
- Related Pages

- File List
- File Members

# CMenuItemDisplay.hpp

Go to the documentation of this file.

    00001 #ifndef __CMenuItemDisplay__
    00002 #define __CMenuItemDisplay__
    00003
    00004 #include "CControlPanel.hpp"
    00005 #include "CMenuItem.hpp"
    00006 #include "CTextLabel.hpp"
    00007 #include "CImageLabel.hpp"
    00008 #include <Mathtools/CBounds.hpp>
    00009 #include <Collections/TAutomaticPointer.hpp>
    00010 #include "SMenuColours.hpp"
    00011
    00012 //  ===========================================================================
    00013
    00014 using Exponent::Collections::TAutomaticPointer;
    00015 using Exponent::GUI::Controls::CControlPanel;
    00016 using Exponent::GUI::Controls::CMenuItem;
    00017 using Exponent::GUI::Controls::CTextLabel;
    00018 using Exponent::GUI::Controls::CImageLabel;
    00019 using Exponent::MathTools::CBounds;
    00020 using Exponent::GUI::Controls::SMenuColours;
    00021
    00022 //  ===========================================================================
    00023
    00024 namespace Exponent
    00025 {
    00026     namespace GUI
    00027     {
    00028         namespace Controls
    00029         {
    00047             class CMenuItemDisplay : public CControlPanel
    00048             {
    00050                 EXPONENT_CLASS_DECLARATION;
    00053 //  ===========================================================================
    00054
    00055             public:
    00056
    00057 //  ===========================================================================
    00058
    00059                 const static long CMENUITEM_DISPLAY_WIDTH_FROM_LEFT = 24;
    00060                 const static long CMENUITEM_DISPLAY_WIDTH_FROM_RIGHT = 48;
    00061                 const static long CMENUITEM_DISPLAY_SEPERATOR_WIDTH_FROM_RIGHT = 12;
    00063 //  ===========================================================================
    00064
    00076                 CMenuItemDisplay(IControlRoot *root, const long uniqueId, const CRect &area, CMenuItem *menuItem, const bool useIcons, const bool selectable, const bool subMenu, const long iconSize);
    00077
    00081                 virtual ~CMenuItemDisplay();
    00082
    00083 //  ===========================================================================
    00084
    00089                 virtual void setMenuItem(CMenuItem *item);
    00090
    00095                 virtual const CMenuItem *getMenuItem() const { return m_menuItem.getPointer(); }
    00096
    00101                 virtual CMenuItem *getMutableMenuItem() { return m_menuItem.getMutablePointer(); }
    00102
    00103 //  ===========================================================================
    00104
    00109                 virtual void setFont(CFont *font);
    00110
    00115                 virtual void setColours(const SMenuColours &colours);
    00116
    00117 //  ===========================================================================
    00118
    00124                 virtual void mouseIsOver(const bool mouseOver = true);
    00125
    00130                 virtual void useIcons(const bool useIcons = true) { m_useIcons = useIcons; }
    00131
    00132 //  ===========================================================================
    00133
    00138                 virtual void drawControl(CGraphics &graphics);
    00139
    00140 //  ===========================================================================
    00141
    00142             protected:
    00143
    00144 //  ===========================================================================
    00145
    00150                 class CMenuItemSubMenuPointer : public CControl
    00151                 {
    00153                     EXPONENT_CLASS_DECLARATION;
    00156                 public:
    00157
    00164                     CMenuItemSubMenuPointer(IControlRoot *root, const long uniqueId, const CRect &area);
    00165
    00169                     virtual ~CMenuItemSubMenuPointer();
    00170
    00175                     virtual void drawControl(CGraphics &graphics);
    00176
    00181                     void setPointerColours(const CAlphaColour &pointerColour)
    00182                     {
    00183                         m_pointerColour = pointerColour;
    00184                         this->update();
    00185                     }
    00186
    00187                 protected:
    00188
    00189                     CAlphaColour m_pointerColour;
    00190                 };
    00191
    00196                 class CMenuItemSelectable : public CControl
    00197                 {
    00199                     EXPONENT_CLASS_DECLARATION;
    00202                 public:
    00203
    00211                     CMenuItemSelectable(IControlRoot *root, const long uniqueId, const CRect &area, CMenuItem *item);
    00212
    00216                     virtual ~CMenuItemSelectable();
    00217
    00222                     virtual void drawControl(CGraphics &graphics);
    00223
    00228                     void setMenuItem(CMenuItem *item) { m_menuItem = item; }
    00229
    00230                 protected:
    00231
    00232                     TAutomaticPointer<CMenuItem> m_menuItem;
    00233                 };
    00234
    00235 //  ===========================================================================
    00236
    00237                 SMenuColours m_colours;
    00238                 bool m_mouseOver;
    00239                 bool m_useIcons;
    00240                 bool m_hasSubMenu;
    00241                 bool m_hasSelect;
    00242                 long m_iconSize;
    00244                 TAutomaticPointer<CMenuItem> m_menuItem;
    00245                 TAutomaticPointer<CTextLabel> m_titleLabel;
    00246                 TAutomaticPointer<CImageLabel> m_imageLabel;
    00247                 TAutomaticPointer<CMenuItemSubMenuPointer> m_subMenuPointer;
    00248                 TAutomaticPointer<CMenuItemSelectable> m_selectableControl;
    00249             };
    00250         }
    00251     }
    00252 }
    00253 #endif  // End of CMenuItemDisplay.hpp