- 24-02-2006 changed: Thumb setting via the background thumb loaders (Pictures,...
[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_bSelected = false;
20   m_strIcon = "";
21   m_strThumbnailImage = "";
22   m_thumbChanged = m_iconChanged = false;
23 }
24
25 CGUIListItem::CGUIListItem(const CStdString& strLabel)
26 {
27   m_bIsFolder = false;
28   m_strLabel2 = "";
29   m_strLabel = strLabel;
30   m_pThumbnailImage = NULL;
31   m_pIconImage = NULL;
32   m_bSelected = false;
33   m_strIcon = "";
34   m_strThumbnailImage = "";
35   m_thumbChanged = m_iconChanged = false;
36 }
37
38 CGUIListItem::~CGUIListItem(void)
39 {
40   FreeMemory();
41   DeleteCriticalSection(&m_critSection);
42 }
43
44 void CGUIListItem::SetLabel(const CStdString& strLabel)
45 {
46   m_strLabel = strLabel;
47 }
48
49 const CStdString& CGUIListItem::GetLabel() const
50 {
51   return m_strLabel;
52 }
53
54
55 void CGUIListItem::SetLabel2(const CStdString& strLabel2)
56 {
57   m_strLabel2 = strLabel2;
58 }
59
60 const CStdString& CGUIListItem::GetLabel2() const
61 {
62   return m_strLabel2;
63 }
64
65 void CGUIListItem::SetThumbnailImage(const CStdString& strThumbnail)
66 {
67   m_strThumbnailImage = strThumbnail;
68 }
69
70 const CStdString& CGUIListItem::GetThumbnailImage() const
71 {
72   return m_strThumbnailImage;
73 }
74
75 void CGUIListItem::SetIconImage(const CStdString& strIcon)
76 {
77   m_strIcon = strIcon;
78 }
79
80 const CStdString& CGUIListItem::GetIconImage() const
81 {
82   return m_strIcon;
83 }
84
85
86 void CGUIListItem::Select(bool bOnOff)
87 {
88   m_bSelected = bOnOff;
89 }
90
91 bool CGUIListItem::HasIcon() const
92 {
93   return (m_strIcon.size() != 0);
94 }
95
96
97 bool CGUIListItem::HasThumbnail() const
98 {
99   return (m_strThumbnailImage.size() != 0);
100 }
101
102 bool CGUIListItem::IsSelected() const
103 {
104   return m_bSelected;
105 }
106
107 CGUIImage* CGUIListItem::GetThumbnail()
108 {
109   return m_thumbChanged ? NULL : m_pThumbnailImage;
110 }
111
112 CGUIImage* CGUIListItem::GetIcon()
113 {
114   return m_iconChanged ? NULL : m_pIconImage;
115 }
116
117
118 void CGUIListItem::SetThumbnail(CGUIImage* pImage)
119 {
120   if (m_pThumbnailImage)
121   {
122     m_pThumbnailImage->FreeResources();
123     delete m_pThumbnailImage;
124   }
125   m_pThumbnailImage = pImage;
126   m_thumbChanged = false;
127 }
128
129
130 void CGUIListItem::SetIcon(CGUIImage* pImage)
131 {
132   if (m_pIconImage)
133   {
134     m_pIconImage->FreeResources();
135     delete m_pIconImage;
136   }
137   m_pIconImage = pImage;
138   m_iconChanged = false;
139 }
140
141
142 const CGUIListItem& CGUIListItem::operator =(const CGUIListItem& item)
143 {
144   if (&item == this) return * this;
145   m_strLabel2 = item.m_strLabel2;
146   m_strLabel = item.m_strLabel;
147   m_pThumbnailImage = NULL;
148   m_pIconImage = NULL;
149   m_bSelected = item.m_bSelected;
150   m_strIcon = item.m_strIcon;
151   m_strThumbnailImage = item.m_strThumbnailImage;
152   m_bIsFolder = item.m_bIsFolder;
153   return *this;
154 }
155
156 void CGUIListItem::FreeIcons()
157 {
158   FreeMemory();
159   m_strThumbnailImage = "";
160   m_strIcon = "";
161 }
162
163 void CGUIListItem::FreeMemory()
164 {
165   if (m_pThumbnailImage)
166   {
167     m_pThumbnailImage->FreeResources();
168     delete m_pThumbnailImage;
169     m_pThumbnailImage = NULL;
170   }
171   if (m_pIconImage)
172   {
173     m_pIconImage->FreeResources();
174     delete m_pIconImage;
175     m_pIconImage = NULL;
176   }
177   m_thumbChanged = false;
178   m_iconChanged = false;
179 }