Merge pull request #1385 from margro/fix_trac_13165
[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-2012 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, see
27  *  <http://www.gnu.org/licenses/>.
28  *
29  */
30
31 #include "GUIControl.h"
32 #include "GUILabel.h"
33
34 /*!
35  \ingroup controls
36  \brief
37  */
38 class CGUILabelControl :
39       public CGUIControl
40 {
41 public:
42   CGUILabelControl(int parentID, int controlID, float posX, float posY, float width, float height, const CLabelInfo& labelInfo, bool wrapMultiLine, bool bHasPath);
43   virtual ~CGUILabelControl(void);
44   virtual CGUILabelControl *Clone() const { return new CGUILabelControl(*this); };
45
46   virtual void Process(unsigned int currentTime, CDirtyRegionList &dirtyregions);
47   virtual void Render();
48   virtual void UpdateInfo(const CGUIListItem *item = NULL);
49   virtual bool CanFocus() const;
50   virtual bool OnMessage(CGUIMessage& message);
51   virtual CStdString GetDescription() const;
52   virtual float GetWidth() const;
53   virtual void SetWidth(float width);
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