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

Infinity API - CMenuItemDisplay.hpp Source File generated on 7 Mar 2007