00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef CTRL_TREE_HPP
00025 #define CTRL_TREE_HPP
00026
00027 #include "ctrl_generic.hpp"
00028 #include "../utils/observer.hpp"
00029 #include "../utils/var_tree.hpp"
00030
00031 class OSGraphics;
00032 class GenericFont;
00033 class GenericBitmap;
00034
00036 class CtrlTree: public CtrlGeneric, public Observer<VarTree>,
00037 public Observer<VarPercent>
00038 {
00039 public:
00040 CtrlTree( intf_thread_t *pIntf,
00041 VarTree &rTree,
00042 const GenericFont &rFont,
00043 const GenericBitmap *pBgBitmap,
00044 const GenericBitmap *pItemBitmap,
00045 const GenericBitmap *pOpenBitmap,
00046 const GenericBitmap *pClosedBitmap,
00047 uint32_t fgColor,
00048 uint32_t playColor,
00049 uint32_t bgColor1,
00050 uint32_t bgColor2,
00051 uint32_t selColor,
00052 const UString &rHelp,
00053 VarBool *pVisible );
00054 virtual ~CtrlTree();
00055
00057 virtual void handleEvent( EvtGeneric &rEvent );
00058
00060 virtual bool mouseOver( int x, int y ) const;
00061
00063 virtual void draw( OSGraphics &rImage, int xDest, int yDest );
00064
00066 virtual void onResize();
00067
00069 virtual bool isFocusable() const { return true; }
00070
00072 virtual string getType() const { return "tree"; }
00073
00074 private:
00076 VarTree &m_rTree;
00078 const GenericFont &m_rFont;
00080 const GenericBitmap *m_pBgBitmap;
00082
00083
00084 const GenericBitmap *m_pItemBitmap;
00086 const GenericBitmap *m_pOpenBitmap;
00088 const GenericBitmap *m_pClosedBitmap;
00090 uint32_t m_fgColor;
00092 uint32_t m_playColor;
00094 uint32_t m_bgColor1, m_bgColor2;
00096 uint32_t m_selColor;
00098 VarTree *m_pLastSelected;
00100 OSGraphics *m_pImage;
00102 VarTree::Iterator m_lastPos;
00103
00105 virtual void onUpdate( Subject<VarTree> &rTree );
00106
00107
00108 virtual void onUpdate( Subject<VarPercent> &rPercent );
00109
00111 virtual void onPositionChange();
00112
00114 int maxItems();
00115
00117 int itemHeight();
00118
00120 int itemImageWidth();
00121
00123 void autoScroll();
00124
00126 void makeImage();
00127
00129
00133 VarTree::Iterator findItemAtPos( int n );
00134 };
00135
00136 #endif