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 if (iListbox) |
|
69 delete iListbox; |
|
70 |
|
71 if (aRect.Width() > aRect.Height()) |
|
72 { |
|
73 DP("Landscape mode"); |
|
74 iLandscape = ETrue; |
|
75 iListboxLandscape = new (ELeave) CAknSingleLargeStyleListBox; |
|
76 iListboxLandscape->ConstructL(this, aListboxFlags); |
|
77 iListboxLandscape->SetMopParent( this ); |
|
78 iListboxLandscape->SetContainerWindowL(*this); |
|
79 iListboxLandscape->CreateScrollBarFrameL(ETrue); |
|
80 iListboxLandscape->ScrollBarFrame()->SetScrollBarVisibilityL(CEikScrollBarFrame::EAuto, CEikScrollBarFrame::EAuto ); |
|
81 iListboxLandscape->SetSize(aRect.Size()); |
|
82 iListboxLandscape->MakeVisible(ETrue); |
|
83 iListbox = iListboxLandscape; |
|
84 } |
|
85 else |
|
86 { |
|
87 DP("Portrait mode"); |
|
88 iLandscape = EFalse; |
|
89 iListboxPortrait = new (ELeave) CAknDoubleLargeStyleListBox; |
|
90 iListboxPortrait->ConstructL(this, aListboxFlags); |
|
91 iListboxPortrait->SetMopParent( this ); |
|
92 iListboxPortrait->SetContainerWindowL(*this); |
|
93 iListboxPortrait->CreateScrollBarFrameL(ETrue); |
|
94 iListboxPortrait->ScrollBarFrame()->SetScrollBarVisibilityL(CEikScrollBarFrame::EAuto, CEikScrollBarFrame::EAuto ); |
|
95 iListboxPortrait->SetSize(aRect.Size()); |
|
96 iListboxPortrait->MakeVisible(ETrue); |
|
97 iListbox = (CEikColumnListBox*) iListboxPortrait; |
|
98 } |
|
99 |
|
100 MakeVisible(EFalse); |
|
101 |
65 // Set the windows size |
102 // Set the windows size |
66 SetRect( aRect ); |
103 SetRect( aRect ); |
67 iListbox =static_cast<CEikFormattedCellListBox*>( new (ELeave) CAknDoubleLargeStyleListBox); |
104 |
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 |
105 // Activate the window, which makes it ready to be drawn |
81 ActivateL(); |
106 ActivateL(); |
|
107 DP("CPodcastListContainer::ConstructL END"); |
82 } |
108 } |
83 |
109 |
84 TInt CPodcastListContainer::CountComponentControls() const |
110 TInt CPodcastListContainer::CountComponentControls() const |
85 { |
111 { |
86 return 1; // return number of controls inside this container |
112 return 1; // return number of controls inside this container |
110 void CPodcastListContainer::ScrollToVisible() { |
136 void CPodcastListContainer::ScrollToVisible() { |
111 if (iListbox != NULL) { |
137 if (iListbox != NULL) { |
112 iListbox->ScrollToMakeItemVisible(iListbox->CurrentItemIndex()); |
138 iListbox->ScrollToMakeItemVisible(iListbox->CurrentItemIndex()); |
113 } |
139 } |
114 } |
140 } |
|
141 |
|
142 TBool CPodcastListContainer::IsLandscape() |
|
143 { |
|
144 return iLandscape; |
|
145 } |
|
146 |
115 void CPodcastListContainer::SizeChanged() |
147 void CPodcastListContainer::SizeChanged() |
116 { |
148 { |
117 DP2("CPodcastListContainer::SizeChanged(), width=%d, height=%d",Size().iWidth, Size().iHeight); |
149 DP2("CPodcastListContainer::SizeChanged() BEGIN, width=%d, height=%d",Size().iWidth, Size().iHeight); |
118 if(iListbox != NULL) |
150 |
119 { |
151 if (iListbox == NULL) |
120 iListbox->SetSize(Size()); |
152 return; |
121 } |
153 |
122 } |
154 iListbox->SetSize(Size()); |
123 |
155 |
124 CEikFormattedCellListBox* CPodcastListContainer::Listbox() |
156 if (iContainerListener) |
|
157 iContainerListener->SizeChanged(); |
|
158 |
|
159 DP("CPodcastListContainer::SizeChanged END"); |
|
160 } |
|
161 |
|
162 CEikColumnListBox* CPodcastListContainer::Listbox() |
125 { |
163 { |
126 return iListbox; |
164 return iListbox; |
127 } |
165 } |
128 |
166 |
|
167 |
|
168 void CPodcastListContainer::SetListboxIcons(CArrayPtr< CGulIcon >* aIcons) |
|
169 { |
|
170 if (iListboxLandscape == iListbox) |
|
171 iListboxLandscape->ItemDrawer()->ColumnData()->SetIconArray(aIcons); |
|
172 else |
|
173 iListboxPortrait->ItemDrawer()->FormattedCellData()->SetIconArrayL(aIcons); |
|
174 } |
|
175 |
|
176 CArrayPtr<CGulIcon>* CPodcastListContainer::ListboxIcons() |
|
177 { |
|
178 if (iListboxLandscape == iListbox) |
|
179 return iListboxLandscape->ItemDrawer()->ColumnData()->IconArray(); |
|
180 else |
|
181 return iListboxPortrait->ItemDrawer()->FormattedCellData()->IconArray(); |
|
182 } |
|
183 |
|
184 void CPodcastListContainer::SetTextArray(CDesCArray* aArray) |
|
185 { |
|
186 iListbox->Model()->SetOwnershipType(ELbmDoesNotOwnItemArray); |
|
187 iListbox->Model()->SetItemTextArray(aArray); |
|
188 } |
129 |
189 |
130 CPodcastListContainer::~CPodcastListContainer() |
190 CPodcastListContainer::~CPodcastListContainer() |
131 { |
191 { |
132 delete iListbox; |
192 delete iListbox; |
133 delete iBgContext; |
193 delete iBgContext; |
134 } |
194 } |
135 |
195 |
|
196 void CPodcastListView::SwitchListbox() |
|
197 { |
|
198 HandleViewRectChange(); |
|
199 } |
136 |
200 |
137 void CPodcastListContainer::Draw(const TRect& aRect) const |
201 void CPodcastListContainer::Draw(const TRect& aRect) const |
138 { |
202 { |
139 CWindowGc& gc = SystemGc(); |
203 CWindowGc& gc = SystemGc(); |
140 gc.SetBrushStyle(CGraphicsContext::ESolidBrush); |
204 gc.SetBrushStyle(CGraphicsContext::ESolidBrush); |
158 } |
222 } |
159 |
223 |
160 void CPodcastListView::ConstructL() |
224 void CPodcastListView::ConstructL() |
161 { |
225 { |
162 DP("CPodcastListView::ConstructL BEGIN"); |
226 DP("CPodcastListView::ConstructL BEGIN"); |
|
227 |
|
228 ResetContainer(); |
|
229 |
|
230 if (Toolbar()) { |
|
231 iToolbar = Toolbar(); |
|
232 iToolbar->SetToolbarObserver(this); |
|
233 } |
|
234 |
|
235 |
|
236 DP("CPodcastListView::ConstructL END"); |
|
237 } |
|
238 |
|
239 void CPodcastListView::ResetContainer() |
|
240 { |
|
241 DP("CPodcastListView::ResetContainer BEGIN"); |
|
242 |
|
243 if(iListContainer) |
|
244 { |
|
245 AppUi()->RemoveFromStack(iListContainer); |
|
246 delete iListContainer; |
|
247 } |
|
248 |
163 iListContainer = new (ELeave) CPodcastListContainer; |
249 iListContainer = new (ELeave) CPodcastListContainer; |
164 iListContainer->ConstructL(ClientRect(), iListboxFlags); |
250 TRect rect = ClientRect(); |
|
251 |
|
252 // flipFlop = !flipFlop; |
|
253 // |
|
254 // if (!flipFlop) |
|
255 // { |
|
256 // TUint w = rect.Width(); |
|
257 // rect.SetWidth(rect.Height()); |
|
258 // rect.SetHeight(w); |
|
259 // } |
|
260 |
|
261 iListContainer->ConstructL(rect, iListboxFlags); |
165 iListContainer->SetMopParent(this); |
262 iListContainer->SetMopParent(this); |
166 iListContainer->ActivateL(); |
263 iListContainer->ActivateL(); |
167 iItemArray = new (ELeave)CDesCArrayFlat(KDefaultGran); |
264 iItemArray = new (ELeave)CDesCArrayFlat(KDefaultGran); |
168 iListContainer->Listbox()->Model()->SetItemTextArray(iItemArray); |
265 iListContainer->SetTextArray(iItemArray); |
169 iListContainer->Listbox()->Model()->SetOwnershipType(ELbmDoesNotOwnItemArray); |
266 iListContainer->SetContainerListener(this); |
170 |
267 |
171 if (Toolbar()) { |
268 DP("CPodcastListView::ResetContainer END"); |
172 iToolbar = Toolbar(); |
269 } |
173 iToolbar->SetToolbarObserver(this); |
|
174 } |
|
175 |
|
176 iListContainer->SetKeyEventListener(this); |
|
177 |
|
178 DP("CPodcastListView::ConstructL END"); |
|
179 } |
|
180 |
270 |
181 void CPodcastListView::HandleViewRectChange() |
271 void CPodcastListView::HandleViewRectChange() |
182 { |
272 { |
183 if ( iListContainer ) |
273 TBool wasVisible = iListContainer->IsVisible(); |
|
274 |
|
275 if (wasVisible) |
|
276 { |
|
277 AppUi()->ActivateLocalViewL(KUidPodcastSearchViewID, TUid::Uid(0), KNullDesC8); |
|
278 |
|
279 DoDeactivate(); |
|
280 } |
|
281 |
|
282 ResetContainer(); |
|
283 |
|
284 if (wasVisible) |
|
285 { |
|
286 AppUi()->ActivateLocalViewL(ViewId().iViewUid, TUid::Uid(0), KNullDesC8); |
|
287 } |
|
288 |
|
289 if ( iListContainer ) |
184 { |
290 { |
185 iListContainer->SetRect( ClientRect() ); |
291 iListContainer->SetRect( ClientRect() ); |
186 } |
292 } |
187 } |
293 } |
188 |
294 |
189 void CPodcastListView::HandleStatusPaneSizeChange() |
295 void CPodcastListView::HandleStatusPaneSizeChange() |
190 { |
296 { |
191 DP2("CPodcastListView::HandleStatusPaneSizeChange(), width=%d, height=%d", ClientRect().Width(), ClientRect().Height()); |
297 DP2("CPodcastListView::HandleStatusPaneSizeChange(), width=%d, height=%d", ClientRect().Width(), ClientRect().Height()); |
192 |
298 |
193 if ( iListContainer ) |
299 HandleViewRectChange(); |
194 { |
|
195 iListContainer->SetRect( ClientRect() ); |
|
196 } |
|
197 |
|
198 } |
300 } |
199 |
301 |
200 |
302 |
201 CPodcastListView::~CPodcastListView() |
303 CPodcastListView::~CPodcastListView() |
202 { |
304 { |