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 #ifndef CTRL_LIST_HPP
00026 #define CTRL_LIST_HPP
00027
00028 #include "ctrl_generic.hpp"
00029 #include "../utils/observer.hpp"
00030 #include "../utils/var_list.hpp"
00031
00032 class OSGraphics;
00033 class GenericFont;
00034 class GenericBitmap;
00035
00036
00038 class CtrlList: public CtrlGeneric, public Observer<VarList>,
00039 public Observer<VarPercent>
00040 {
00041 public:
00042 CtrlList( intf_thread_t *pIntf, VarList &rList,
00043 const GenericFont &rFont, const GenericBitmap *pBitmap,
00044 uint32_t fgcolor, uint32_t playcolor, uint32_t bgcolor1,
00045 uint32_t bgcolor2, uint32_t selColor,
00046 const UString &rHelp, VarBool *pVisible );
00047 virtual ~CtrlList();
00048
00050 virtual void handleEvent( EvtGeneric &rEvent );
00051
00053 virtual bool mouseOver( int x, int y ) const;
00054
00056 virtual void draw( OSGraphics &rImage, int xDest, int yDest );
00057
00059 virtual void onResize();
00060
00062 virtual bool isFocusable() const { return true; }
00063
00065 virtual string getType() const { return "list"; }
00066
00067 private:
00069 VarList &m_rList;
00071 const GenericFont &m_rFont;
00073
00074 const GenericBitmap *m_pBitmap;
00076 uint32_t m_fgColor;
00078 uint32_t m_playColor;
00080 uint32_t m_bgColor1, m_bgColor2;
00082 uint32_t m_selColor;
00084 VarList::Elem_t *m_pLastSelected;
00086 OSGraphics *m_pImage;
00088 int m_lastPos;
00089
00091 virtual void onUpdate( Subject<VarList> &rList );
00092
00094 virtual void onUpdate( Subject<VarPercent> &rPercent );
00095
00097 virtual void onPositionChange();
00098
00100 void autoScroll();
00101
00103 void makeImage();
00104 };
00105
00106 #endif