added: overlay to indicate that a movie is watched in database views (overlaywatched...
[xbmc:xbmc-antiquated.git] / guilib / GUIListItem.cpp
1 #include "include.h"
2 #include "GUIListItem.h"
3 #include "GUIImage.h"
4
5
6 CGUIListItem::CGUIListItem(const CGUIListItem& item)
7 {
8   *this = item;
9   m_thumbChanged = m_iconChanged = false;
10 }
11
12 CGUIListItem::CGUIListItem(void)
13 {
14   m_bIsFolder = false;
15   m_strLabel2 = "";
16   m_strLabel = "";
17   m_pThumbnailImage = NULL;
18   m_pIconImage = NULL;
19   m_overlayImage = NULL;
20   m_bSelected = false;
21   m_strIcon = "";
22   m_strThumbnailImage = "";
23   m_overlayIcon = ICON_OVERLAY_NONE;
24   m_thumbChanged = m_iconChanged = false;
25 }
26
27 CGUIListItem::CGUIListItem(const CStdString& strLabel)
28 {
29   m_bIsFolder = false;
30   m_strLabel2 = "";
31   m_strLabel = strLabel;
32   m_pThumbnailImage = NULL;
33   m_pIconImage = NULL;
34   m_overlayImage = NULL;
35   m_bSelected = false;
36   m_strIcon = "";
37   m_strThumbnailImage = "";
38   m_overlayIcon = ICON_OVERLAY_NONE;
39   m_thumbChanged = m_iconChanged = false;
40 }
41
42 CGUIListItem::~CGUIListItem(void)
43 {
44   FreeMemory();
45   DeleteCriticalSection(&m_critSection);
46 }
47
48 void CGUIListItem::SetLabel(const CStdString& strLabel)
49 {
50   m_strLabel = strLabel;
51 }
52
53 const CStdString& CGUIListItem::GetLabel() const
54 {
55   return m_strLabel;
56 }
57
58
59 void CGUIListItem::SetLabel2(const CStdString& strLabel2)
60 {
61   m_strLabel2 = strLabel2;
62 }
63
64 const CStdString& CGUIListItem::GetLabel2() const
65 {
66   return m_strLabel2;
67 }
68
69 void CGUIListItem::SetThumbnailImage(const CStdString& strThumbnail)
70 {
71   m_strThumbnailImage = strThumbnail;
72 }
73
74 const CStdString& CGUIListItem::GetThumbnailImage() const
75 {
76   return m_strThumbnailImage;
77 }
78
79 void CGUIListItem::SetIconImage(const CStdString& strIcon)
80 {
81   m_strIcon = strIcon;
82 }
83
84 const CStdString& CGUIListItem::GetIconImage() const
85 {
86   return m_strIcon;
87 }
88
89 void CGUIListItem::SetOverlayImage(GUIIconOverlay icon, bool bOnOff)
90 {
91   if (bOnOff)
92     m_overlayIcon = GUIIconOverlay((int)(icon)+1);
93   else
94     m_overlayIcon = icon;
95   //m_overlayIcon = (GUIIconOverlay)((int)(icon)+bOnOff?1:0);
96 }
97
98 CStdString CGUIListItem::GetOverlayImage() const
99 {
100   switch (m_overlayIcon)
101   {
102   case ICON_OVERLAY_RAR:
103     return "OverlayRAR.png";
104   case ICON_OVERLAY_ZIP:
105     return "OverlayZIP.png";
106   case ICON_OVERLAY_TRAINED:
107     return "OverlayTrained.png";
108   case ICON_OVERLAY_HAS_TRAINER:
109     return "OverlayHasTrainer.png";
110   case ICON_OVERLAY_LOCKED:
111     return "OverlayLocked.png";
112   case ICON_OVERLAY_UNWATCHED:
113     return "OverlayUnwatched.png";
114   case ICON_OVERLAY_WATCHED:
115     return "OverlayWatched.png";
116   }
117   return "";
118 }
119
120 void CGUIListItem::Select(bool bOnOff)
121 {
122   m_bSelected = bOnOff;
123 }
124
125 bool CGUIListItem::HasIcon() const
126 {
127   return (m_strIcon.size() != 0);
128 }
129
130
131 bool CGUIListItem::HasThumbnail() const
132 {
133   return (m_strThumbnailImage.size() != 0);
134 }
135
136 bool CGUIListItem::HasOverlay() const
137 {
138   return (m_overlayIcon != CGUIListItem::ICON_OVERLAY_NONE);
139 }
140
141 bool CGUIListItem::IsSelected() const
142 {
143   return m_bSelected;
144 }
145
146 CGUIImage* CGUIListItem::GetThumbnail()
147 {
148   return m_thumbChanged ? NULL : m_pThumbnailImage;
149 }
150
151 CGUIImage* CGUIListItem::GetIcon()
152 {
153   return m_iconChanged ? NULL : m_pIconImage;
154 }
155
156 CGUIImage* CGUIListItem::GetOverlay()
157 {
158   return m_iconChanged ? NULL : m_overlayImage;
159 }
160
161 void CGUIListItem::SetThumbnail(CGUIImage* pImage)
162 {
163   if (m_pThumbnailImage)
164   {
165     m_pThumbnailImage->FreeResources();
166     delete m_pThumbnailImage;
167   }
168   m_pThumbnailImage = pImage;
169   m_thumbChanged = false;
170 }
171
172 void CGUIListItem::SetIcon(CGUIImage* pImage)
173 {
174   if (m_pIconImage)
175   {
176     m_pIconImage->FreeResources();
177     delete m_pIconImage;
178   }
179   m_pIconImage = pImage;
180   m_iconChanged = false;
181 }
182
183 void CGUIListItem::SetOverlay(CGUIImage *pImage)
184 {
185   if (m_overlayImage)
186   {
187     m_overlayImage->FreeResources();
188     delete m_overlayImage;
189   }
190   m_overlayImage = pImage;
191 }
192
193 const CGUIListItem& CGUIListItem::operator =(const CGUIListItem& item)
194 {
195   if (&item == this) return * this;
196   m_strLabel2 = item.m_strLabel2;
197   m_strLabel = item.m_strLabel;
198   m_pThumbnailImage = NULL;
199   m_pIconImage = NULL;
200   m_overlayImage = NULL;
201   m_bSelected = item.m_bSelected;
202   m_strIcon = item.m_strIcon;
203   m_strThumbnailImage = item.m_strThumbnailImage;
204   m_overlayIcon = item.m_overlayIcon;
205   m_bIsFolder = item.m_bIsFolder;
206   return *this;
207 }
208
209 void CGUIListItem::FreeIcons()
210 {
211   FreeMemory();
212   m_strThumbnailImage = "";
213   m_strIcon = "";
214 }
215
216 void CGUIListItem::FreeMemory()
217 {
218   if (m_pThumbnailImage)
219   {
220     m_pThumbnailImage->FreeResources();
221     delete m_pThumbnailImage;
222     m_pThumbnailImage = NULL;
223   }
224   if (m_pIconImage)
225   {
226     m_pIconImage->FreeResources();
227     delete m_pIconImage;
228     m_pIconImage = NULL;
229   }
230   if (m_overlayImage)
231   {
232     m_overlayImage->FreeResources();
233     delete m_overlayImage;
234     m_overlayImage = NULL;
235   }
236   m_thumbChanged = false;
237   m_iconChanged = false;
238 }