Merge pull request #1360 from MartijnKaijser/master
[vuplus_xbmc] / xbmc / guilib / GUILabelControl.h
1 /*!
2 \file GUILabelControl.h
3 \brief
4 */
5
6 #ifndef GUILIB_GUILABELCONTROL_H
7 #define GUILIB_GUILABELCONTROL_H
8
9 #pragma once
10
11 /*
12  *      Copyright (C) 2005-2008 Team XBMC
13  *      http://www.xbmc.org
14  *
15  *  This Program is free software; you can redistribute it and/or modify
16  *  it under the terms of the GNU General Public License as published by
17  *  the Free Software Foundation; either version 2, or (at your option)
18  *  any later version.
19  *
20  *  This Program is distributed in the hope that it will be useful,
21  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
22  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23  *  GNU General Public License for more details.
24  *
25  *  You should have received a copy of the GNU General Public License
26  *  along with XBMC; see the file COPYING.  If not, write to
27  *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
28  *  http://www.gnu.org/copyleft/gpl.html
29  *
30  */
31
32 #include "GUIControl.h"
33 #include "GUILabel.h"
34
35 /*!
36  \ingroup controls
37  \brief
38  */
39 class CGUILabelControl :
40       public CGUIControl
41 {
42 public:
43   CGUILabelControl(int parentID, int controlID, float posX, float posY, float width, float height, const CLabelInfo& labelInfo, bool wrapMultiLine, bool bHasPath);
44   virtual ~CGUILabelControl(void);
45   virtual CGUILabelControl *Clone() const { return new CGUILabelControl(*this); };
46
47   virtual void Process(unsigned int currentTime, CDirtyRegionList &dirtyregions);
48   virtual void Render();
49   virtual void UpdateInfo(const CGUIListItem *item = NULL);
50   virtual bool CanFocus() const;
51   virtual bool OnMessage(CGUIMessage& message);
52   virtual CStdString GetDescription() const;
53   virtual float GetWidth() const;
54   virtual CRect CalcRenderRegion() const;
55  
56   const CLabelInfo& GetLabelInfo() const { return m_label.GetLabelInfo(); };
57   void SetLabel(const std::string &strLabel);
58   void ShowCursor(bool bShow = true);
59   void SetCursorPos(int iPos);
60   int GetCursorPos() const { return m_iCursorPos;};
61   void SetInfo(const CGUIInfoLabel&labelInfo);
62   void SetWidthControl(float minWidth, bool bScroll);
63   void SetAlignment(uint32_t align);
64   void SetHighlight(unsigned int start, unsigned int end);
65
66 protected:
67   bool UpdateColors();
68   CStdString ShortenPath(const CStdString &path);
69
70   CGUILabel m_label;
71
72   bool m_bHasPath;
73   bool m_bShowCursor;
74   int m_iCursorPos;
75   unsigned int m_dwCounter;
76
77   // stuff for autowidth
78   float m_minWidth;
79
80   // multi-info stuff
81   CGUIInfoLabel m_infoLabel;
82
83   unsigned int m_startHighlight;
84   unsigned int m_endHighlight;
85 };
86 #endif