added: overlay to indicate that a movie is unwatched in database views (overlayunwatc...
[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)
90 {
91   m_overlayIcon = icon;
92 }
93
94 CStdString CGUIListItem::GetOverlayImage() const
95 {
96   switch (m_overlayIcon)
97   {
98   case ICON_OVERLAY_RAR:
99     return "OverlayRAR.png";
100   case ICON_OVERLAY_ZIP:
101     return "OverlayZIP.png";
102   case ICON_OVERLAY_TRAINED:
103     return "OverlayTrained.png";
104   case ICON_OVERLAY_HAS_TRAINER:
105     return "OverlayHasTrainer.png";
106   case ICON_OVERLAY_LOCKED:
107     return "OverlayLocked.png";
108   case ICON_OVERLAY_UNWATCHED:
109     return "OverlayUnwatched.png";
110   }
111   return "";
112 }
113
114 void CGUIListItem::Select(bool bOnOff)
115 {
116   m_bSelected = bOnOff;
117 }
118
119 bool CGUIListItem::HasIcon() const
120 {
121   return (m_strIcon.size() != 0);
122 }
123
124
125 bool CGUIListItem::HasThumbnail() const
126 {
127   return (m_strThumbnailImage.size() != 0);
128 }
129
130 bool CGUIListItem::HasOverlay() const
131 {
132   return (m_overlayIcon != CGUIListItem::ICON_OVERLAY_NONE);
133 }
134
135 bool CGUIListItem::IsSelected() const
136 {
137   return m_bSelected;
138 }
139
140 CGUIImage* CGUIListItem::GetThumbnail()
141 {
142   return m_thumbChanged ? NULL : m_pThumbnailImage;
143 }
144
145 CGUIImage* CGUIListItem::GetIcon()
146 {
147   return m_iconChanged ? NULL : m_pIconImage;
148 }
149
150 CGUIImage* CGUIListItem::GetOverlay()
151 {
152   return m_iconChanged ? NULL : m_overlayImage;
153 }
154
155 void CGUIListItem::SetThumbnail(CGUIImage* pImage)
156 {
157   if (m_pThumbnailImage)
158   {
159     m_pThumbnailImage->FreeResources();
160     delete m_pThumbnailImage;
161   }
162   m_pThumbnailImage = pImage;
163   m_thumbChanged = false;
164 }
165
166 void CGUIListItem::SetIcon(CGUIImage* pImage)
167 {
168   if (m_pIconImage)
169   {
170     m_pIconImage->FreeResources();
171     delete m_pIconImage;
172   }
173   m_pIconImage = pImage;
174   m_iconChanged = false;
175 }
176
177 void CGUIListItem::SetOverlay(CGUIImage *pImage)
178 {
179   if (m_overlayImage)
180   {
181     m_overlayImage->FreeResources();
182     delete m_overlayImage;
183   }
184   m_overlayImage = pImage;
185 }
186
187 const CGUIListItem& CGUIListItem::operator =(const CGUIListItem& item)
188 {
189   if (&item == this) return * this;
190   m_strLabel2 = item.m_strLabel2;
191   m_strLabel = item.m_strLabel;
192   m_pThumbnailImage = NULL;
193   m_pIconImage = NULL;
194   m_overlayImage = NULL;
195   m_bSelected = item.m_bSelected;
196   m_strIcon = item.m_strIcon;
197   m_strThumbnailImage = item.m_strThumbnailImage;
198   m_overlayIcon = item.m_overlayIcon;
199   m_bIsFolder = item.m_bIsFolder;
200   return *this;
201 }
202
203 void CGUIListItem::FreeIcons()
204 {
205   FreeMemory();
206   m_strThumbnailImage = "";
207   m_strIcon = "";
208 }
209
210 void CGUIListItem::FreeMemory()
211 {
212   if (m_pThumbnailImage)
213   {
214     m_pThumbnailImage->FreeResources();
215     delete m_pThumbnailImage;
216     m_pThumbnailImage = NULL;
217   }
218   if (m_pIconImage)
219   {
220     m_pIconImage->FreeResources();
221     delete m_pIconImage;
222     m_pIconImage = NULL;
223   }
224   if (m_overlayImage)
225   {
226     m_overlayImage->FreeResources();
227     delete m_overlayImage;
228     m_overlayImage = NULL;
229   }
230   m_thumbChanged = false;
231   m_iconChanged = false;
232 }