28 #include <akntabgrp.h> |
28 #include <akntabgrp.h> |
29 #include <akntoolbarextension.h> |
29 #include <akntoolbarextension.h> |
30 #include <aknquerydialog.h> |
30 #include <aknquerydialog.h> |
31 #include <barsread.h> |
31 #include <barsread.h> |
32 #include <akntitle.h> |
32 #include <akntitle.h> |
|
33 #include <akniconarray.h> |
|
34 #include <EIKCLBD.H> |
33 |
35 |
34 #include "buildno.h" |
36 #include "buildno.h" |
35 |
37 |
36 const TInt KDefaultGran = 5; |
38 const TInt KDefaultGran = 5; |
37 |
39 |
38 CPodcastListContainer::CPodcastListContainer() |
40 CPodcastListContainer::CPodcastListContainer() |
39 { |
41 { |
40 } |
42 } |
41 |
43 |
42 void CPodcastListContainer::SetKeyEventListener(MKeyEventListener *aKeyEventListener) |
44 void CPodcastListContainer::SetContainerListener(MContainerListener *aContainerListener) |
43 { |
45 { |
44 iKeyEventListener = aKeyEventListener; |
46 iContainerListener = aContainerListener; |
45 } |
47 } |
46 |
48 |
47 TKeyResponse CPodcastListContainer::OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType) |
49 TKeyResponse CPodcastListContainer::OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType) |
48 { |
50 { |
49 TKeyResponse response = iListbox->OfferKeyEventL(aKeyEvent, aType); |
51 TKeyResponse response = iListbox->OfferKeyEventL(aKeyEvent, aType); |
50 if (iKeyEventListener) |
52 if (iContainerListener) |
51 iKeyEventListener->OfferKeyEventL(aKeyEvent, aType); |
53 iContainerListener->OfferKeyEventL(aKeyEvent, aType); |
52 |
54 |
53 return response; |
55 return response; |
54 } |
56 } |
55 |
57 |
56 void CPodcastListContainer::ConstructL( const TRect& aRect, TInt aListboxFlags ) |
58 void CPodcastListContainer::ConstructL( const TRect& aRect, TInt aListboxFlags ) |
57 { |
59 { |
|
60 DP("CPodcastListContainer::ConstructL BEGIN"); |
58 CreateWindowL(); |
61 CreateWindowL(); |
59 |
62 |
60 iBgContext = |
63 iBgContext = |
61 CAknsBasicBackgroundControlContext::NewL( KAknsIIDQsnBgAreaMain, |
64 CAknsBasicBackgroundControlContext::NewL( KAknsIIDQsnBgAreaMain, |
62 aRect, |
65 aRect, |
63 ETrue ); |
66 ETrue ); |
64 |
67 |
|
68 iListboxLandscape = new (ELeave) CAknSingleLargeStyleListBox; |
|
69 iListboxLandscape->ConstructL(this, aListboxFlags); |
|
70 iListboxLandscape->SetMopParent( this ); |
|
71 iListboxLandscape->SetContainerWindowL(*this); |
|
72 iListboxLandscape->CreateScrollBarFrameL(ETrue); |
|
73 iListboxLandscape->ScrollBarFrame()->SetScrollBarVisibilityL(CEikScrollBarFrame::EAuto, CEikScrollBarFrame::EAuto ); |
|
74 iListboxLandscape->SetSize(aRect.Size()); |
|
75 iListboxLandscape->MakeVisible(EFalse); |
|
76 |
|
77 iListboxPortrait = new (ELeave) CAknDoubleLargeStyleListBox; |
|
78 iListboxPortrait->ConstructL(this, aListboxFlags); |
|
79 iListboxPortrait->SetMopParent( this ); |
|
80 iListboxPortrait->SetContainerWindowL(*this); |
|
81 iListboxPortrait->CreateScrollBarFrameL(ETrue); |
|
82 iListboxPortrait->ScrollBarFrame()->SetScrollBarVisibilityL(CEikScrollBarFrame::EAuto, CEikScrollBarFrame::EAuto ); |
|
83 iListboxPortrait->SetSize(aRect.Size()); |
|
84 iListboxPortrait->MakeVisible(EFalse); |
|
85 |
|
86 if (aRect.Width() > aRect.Height()) |
|
87 { |
|
88 iLandscape = ETrue; |
|
89 iListbox = iListboxLandscape; |
|
90 iListboxLandscape->MakeVisible(ETrue); |
|
91 } |
|
92 else |
|
93 { |
|
94 iLandscape = EFalse; |
|
95 iListboxPortrait->MakeVisible(ETrue); |
|
96 iListbox = (CEikColumnListBox*) iListboxPortrait; |
|
97 } |
|
98 |
|
99 MakeVisible(EFalse); |
|
100 |
65 // Set the windows size |
101 // Set the windows size |
66 SetRect( aRect ); |
102 SetRect( aRect ); |
67 iListbox =static_cast<CEikFormattedCellListBox*>( new (ELeave) CAknDoubleLargeStyleListBox); |
103 |
68 iListbox->ConstructL(this, aListboxFlags); |
|
69 iListbox->SetMopParent( this ); |
|
70 iListbox->SetContainerWindowL(*this); |
|
71 iListbox->CreateScrollBarFrameL(ETrue); |
|
72 iListbox->ScrollBarFrame()->SetScrollBarVisibilityL(CEikScrollBarFrame::EAuto, CEikScrollBarFrame::EAuto ); |
|
73 |
|
74 iListbox->ItemDrawer()->FormattedCellData()->EnableMarqueeL( ETrue ); |
|
75 |
|
76 iListbox->SetSize(aRect.Size()); |
|
77 iListbox->MakeVisible(ETrue); |
|
78 MakeVisible(EFalse); |
|
79 |
|
80 // Activate the window, which makes it ready to be drawn |
104 // Activate the window, which makes it ready to be drawn |
81 ActivateL(); |
105 ActivateL(); |
|
106 DP("CPodcastListContainer::ConstructL END"); |
82 } |
107 } |
83 |
108 |
84 TInt CPodcastListContainer::CountComponentControls() const |
109 TInt CPodcastListContainer::CountComponentControls() const |
85 { |
110 { |
86 return 1; // return number of controls inside this container |
111 return 1; // return number of controls inside this container |
126 iListbox->ScrollToMakeItemVisible(iListbox->CurrentItemIndex()); |
154 iListbox->ScrollToMakeItemVisible(iListbox->CurrentItemIndex()); |
127 } |
155 } |
128 } |
156 } |
129 void CPodcastListContainer::SizeChanged() |
157 void CPodcastListContainer::SizeChanged() |
130 { |
158 { |
131 DP2("CPodcastListContainer::SizeChanged(), width=%d, height=%d",Size().iWidth, Size().iHeight); |
159 DP2("CPodcastListContainer::SizeChanged() BEGIN, width=%d, height=%d",Size().iWidth, Size().iHeight); |
132 if(iListbox != NULL) |
160 |
133 { |
161 iLandscape = Size().iWidth > Size().iHeight; |
134 iListbox->SetSize(Size()); |
162 |
135 } |
163 if (iContainerListener) |
136 } |
164 iContainerListener->SizeChanged(); |
137 |
165 |
138 CEikFormattedCellListBox* CPodcastListContainer::Listbox() |
166 if (iLandscape) |
|
167 { |
|
168 iListboxPortrait->ScrollBarFrame()->SetScrollBarVisibilityL(CEikScrollBarFrame::EOff, CEikScrollBarFrame::EOff ); |
|
169 iListboxPortrait->UpdateScrollBarsL(); |
|
170 iListboxPortrait->MakeVisible(EFalse); |
|
171 |
|
172 iListboxLandscape->ScrollBarFrame()->SetScrollBarVisibilityL(CEikScrollBarFrame::EAuto, CEikScrollBarFrame::EAuto ); |
|
173 iListboxLandscape->MakeVisible(ETrue); |
|
174 iListboxLandscape->SetFocus(ETrue, EDrawNow); |
|
175 iListbox = iListboxLandscape; |
|
176 } |
|
177 else |
|
178 { |
|
179 iListboxLandscape->ScrollBarFrame()->SetScrollBarVisibilityL(CEikScrollBarFrame::EOff, CEikScrollBarFrame::EOff ); |
|
180 iListboxLandscape->UpdateScrollBarsL(); |
|
181 iListboxLandscape->MakeVisible(EFalse); |
|
182 |
|
183 iListboxPortrait->ScrollBarFrame()->SetScrollBarVisibilityL(CEikScrollBarFrame::EAuto, CEikScrollBarFrame::EAuto ); |
|
184 iListboxPortrait->MakeVisible(ETrue); |
|
185 iListboxPortrait->SetFocus(ETrue, EDrawNow); |
|
186 iListbox = (CEikColumnListBox*) iListboxPortrait; |
|
187 } |
|
188 |
|
189 iListbox->SetSize(Size()); |
|
190 ActivateL(); |
|
191 DrawNow(); |
|
192 DP("CPodcastListContainer::SizeChanged END"); |
|
193 } |
|
194 |
|
195 CEikColumnListBox* CPodcastListContainer::Listbox() |
139 { |
196 { |
140 return iListbox; |
197 return iListbox; |
141 } |
198 } |
142 |
199 |
|
200 void CPodcastListContainer::SetListboxObserver(MEikListBoxObserver *aObserver) |
|
201 { |
|
202 iListboxLandscape->SetListBoxObserver(aObserver); |
|
203 iListboxPortrait->SetListBoxObserver(aObserver); |
|
204 } |
|
205 |
|
206 void CPodcastListContainer::SetListboxIcons(CArrayPtr< CGulIcon >* aIcons) |
|
207 { |
|
208 iListboxLandscape->ItemDrawer()->ColumnData()->SetIconArray(aIcons); |
|
209 iListboxPortrait->ItemDrawer()->FormattedCellData()->SetIconArrayL(aIcons); |
|
210 } |
|
211 |
|
212 CArrayPtr<CGulIcon>* CPodcastListContainer::ListboxIcons() |
|
213 { |
|
214 if (iListboxLandscape == iListbox) |
|
215 return iListboxLandscape->ItemDrawer()->ColumnData()->IconArray(); |
|
216 else |
|
217 return iListboxPortrait->ItemDrawer()->FormattedCellData()->IconArray(); |
|
218 } |
|
219 |
|
220 void CPodcastListContainer::SetListboxTextArrays(CDesCArray* aPortraitArray, CDesCArray* aLandscapeArray) |
|
221 { |
|
222 iListboxLandscape->Model()->SetOwnershipType(ELbmDoesNotOwnItemArray); |
|
223 iListboxLandscape->Model()->SetItemTextArray(aLandscapeArray); |
|
224 iListboxPortrait->Model()->SetOwnershipType(ELbmDoesNotOwnItemArray); |
|
225 iListboxPortrait->Model()->SetItemTextArray(aPortraitArray); |
|
226 } |
143 |
227 |
144 CPodcastListContainer::~CPodcastListContainer() |
228 CPodcastListContainer::~CPodcastListContainer() |
145 { |
229 { |
146 delete iListbox; |
230 iListboxLandscape->ItemDrawer()->ColumnData()->SetIconArray(NULL); |
|
231 delete iListboxPortrait; |
|
232 delete iListboxLandscape; |
147 delete iBgContext; |
233 delete iBgContext; |
148 } |
234 } |
149 |
235 |
|
236 void CPodcastListContainer::SetEmptyText(const TDesC &aText) |
|
237 { |
|
238 iListboxPortrait->View()->SetListEmptyTextL(aText); |
|
239 iListboxLandscape->View()->SetListEmptyTextL(aText); |
|
240 } |
150 |
241 |
151 void CPodcastListContainer::Draw(const TRect& aRect) const |
242 void CPodcastListContainer::Draw(const TRect& aRect) const |
152 { |
243 { |
153 CWindowGc& gc = SystemGc(); |
244 CWindowGc& gc = SystemGc(); |
154 gc.SetBrushStyle(CGraphicsContext::ESolidBrush); |
245 gc.SetBrushStyle(CGraphicsContext::ESolidBrush); |
167 return CCoeControl::MopSupplyObject(aId); |
258 return CCoeControl::MopSupplyObject(aId); |
168 } |
259 } |
169 |
260 |
170 void CPodcastListContainer::HandlePointerEventL(const TPointerEvent& aPointerEvent) |
261 void CPodcastListContainer::HandlePointerEventL(const TPointerEvent& aPointerEvent) |
171 { |
262 { |
172 if (iPointerListener) |
263 if (iContainerListener) |
173 iPointerListener->PointerEventL(aPointerEvent); |
264 iContainerListener->PointerEventL(aPointerEvent); |
174 |
265 |
175 // Call base class HandlePointerEventL() if not a long tap |
266 // Call base class HandlePointerEventL() if not a long tap |
176 if (!iLongTapDetected) |
267 if (!iLongTapDetected) |
177 { |
268 { |
178 CCoeControl::HandlePointerEventL(aPointerEvent); |
269 CCoeControl::HandlePointerEventL(aPointerEvent); |
179 } |
270 } |
180 } |
271 } |
181 |
272 |
182 |
|
183 void CPodcastListContainer::SetPointerListener(MPointerListener *aPointerListener) |
|
184 { |
|
185 iPointerListener = aPointerListener; |
|
186 } |
|
187 |
|
188 |
|
189 CPodcastListView::CPodcastListView() |
273 CPodcastListView::CPodcastListView() |
190 { |
274 { |
191 } |
275 } |
192 |
276 |
193 void CPodcastListView::ConstructL() |
277 void CPodcastListView::ConstructL() |
194 { |
278 { |
195 DP("CPodcastListView::ConstructL BEGIN"); |
279 DP("CPodcastListView::ConstructL BEGIN"); |
|
280 |
196 iListContainer = new (ELeave) CPodcastListContainer; |
281 iListContainer = new (ELeave) CPodcastListContainer; |
197 iListContainer->ConstructL(ClientRect(), iListboxFlags); |
282 TRect rect = ClientRect(); |
|
283 |
|
284 iListContainer->ConstructL(rect, iListboxFlags); |
198 iListContainer->SetMopParent(this); |
285 iListContainer->SetMopParent(this); |
199 iListContainer->ActivateL(); |
286 iListContainer->ActivateL(); |
|
287 |
200 iItemArray = new (ELeave)CDesCArrayFlat(KDefaultGran); |
288 iItemArray = new (ELeave)CDesCArrayFlat(KDefaultGran); |
201 iListContainer->Listbox()->Model()->SetItemTextArray(iItemArray); |
289 iItemArrayShort = new (ELeave)CDesCArrayFlat(KDefaultGran); |
202 iListContainer->Listbox()->Model()->SetOwnershipType(ELbmDoesNotOwnItemArray); |
290 |
203 |
291 iListContainer->SetListboxTextArrays(iItemArray, iItemArrayShort); |
|
292 iListContainer->SetContainerListener(this); |
|
293 iListContainer->SetListboxObserver(this); |
|
294 |
204 if (Toolbar()) { |
295 if (Toolbar()) { |
205 iToolbar = Toolbar(); |
296 iToolbar = Toolbar(); |
206 iToolbar->SetToolbarObserver(this); |
297 iToolbar->SetToolbarObserver(this); |
207 } |
298 } |
208 |
299 |
209 iLongTapDetector = CAknLongTapDetector::NewL(this); |
300 iLongTapDetector = CAknLongTapDetector::NewL(this); |
210 iListContainer->SetPointerListener(this); |
|
211 iListContainer->SetKeyEventListener(this); |
|
212 |
301 |
213 DP("CPodcastListView::ConstructL END"); |
302 DP("CPodcastListView::ConstructL END"); |
214 } |
303 } |
215 |
304 |
216 void CPodcastListView::HandleViewRectChange() |
305 void CPodcastListView::HandleViewRectChange() |
217 { |
306 { |
218 if ( iListContainer ) |
307 TBool wasVisible = iListContainer->IsVisible(); |
|
308 |
|
309 if ( iListContainer ) |
219 { |
310 { |
220 iListContainer->SetRect( ClientRect() ); |
311 iListContainer->SetRect( ClientRect() ); |
221 } |
312 } |
222 } |
313 } |
223 |
314 |
224 void CPodcastListView::HandleStatusPaneSizeChange() |
315 void CPodcastListView::HandleStatusPaneSizeChange() |
225 { |
316 { |
226 DP2("CPodcastListView::HandleStatusPaneSizeChange(), width=%d, height=%d", ClientRect().Width(), ClientRect().Height()); |
317 DP2("CPodcastListView::HandleStatusPaneSizeChange(), width=%d, height=%d", ClientRect().Width(), ClientRect().Height()); |
227 |
318 |
228 if ( iListContainer ) |
319 HandleViewRectChange(); |
229 { |
|
230 iListContainer->SetRect( ClientRect() ); |
|
231 } |
|
232 |
|
233 } |
320 } |
234 |
321 |
235 |
322 |
236 CPodcastListView::~CPodcastListView() |
323 CPodcastListView::~CPodcastListView() |
237 { |
324 { |