27 #include "nmmessageenvelope.h" |
26 #include "nmmessageenvelope.h" |
28 #include "nmhswidgettitlerow.h" |
27 #include "nmhswidgettitlerow.h" |
29 #include "nmhswidgetemailrow.h" |
28 #include "nmhswidgetemailrow.h" |
30 #include "nmhswidgetconsts.h" |
29 #include "nmhswidgetconsts.h" |
31 #include "nmhswidgetdatetimeobserver.h" |
30 #include "nmhswidgetdatetimeobserver.h" |
|
31 #include "emailtrace.h" |
32 |
32 |
33 NmHsWidget::NmHsWidget(QGraphicsItem *parent, Qt::WindowFlags flags) |
33 NmHsWidget::NmHsWidget(QGraphicsItem *parent, Qt::WindowFlags flags) |
34 : HbWidget(parent, flags), |
34 : HbWidget(parent, flags), |
35 mEngine(0), |
35 mEngine(0), |
36 mRowLayout(0), |
36 mRowLayout(0), |
37 mTitleRow(0), |
37 mTitleRow(0), |
38 mAccountId(0), |
38 mAccountId(0), |
39 mAccountIconName(0), |
39 mAccountIconName(), |
40 mTranslator(0), |
40 mTranslator(0), |
41 mBackgroundFrameDrawer(0), |
41 mBackgroundFrameDrawer(0), |
42 mIsExpanded(true), |
42 mIsExpanded(false), |
43 mStaticWidget(true), |
43 mStaticWidget(true), |
44 mDateObserver(0) |
44 mDateObserver(0) |
45 { |
45 { |
46 qDebug() << "NmHsWidget::NmHsWidget IN -->>"; |
46 NM_FUNCTION; |
47 |
|
48 qDebug() << "NmHsWidget::NmHsWidget OUT <<--"; |
|
49 } |
47 } |
50 |
48 |
51 /*! |
49 /*! |
52 Destructor |
50 Destructor |
53 */ |
51 */ |
54 NmHsWidget::~NmHsWidget() |
52 NmHsWidget::~NmHsWidget() |
55 { |
53 { |
56 qDebug() << "NmHsWidget::~NmHsWidget IN -->>"; |
54 NM_FUNCTION; |
57 if(mTranslator){ |
55 |
58 delete mTranslator; |
56 delete mTranslator; |
59 mTranslator = NULL; |
57 mTranslator = NULL; |
60 } |
58 |
61 |
59 delete mEngine; |
62 if(mEngine){ |
60 mEngine = NULL; |
63 delete mEngine; |
61 |
64 mEngine = NULL; |
62 delete mBackgroundFrameDrawer; |
65 } |
63 mBackgroundFrameDrawer = NULL; |
66 |
64 |
67 if(mBackgroundFrameDrawer){ |
65 delete mDateObserver; |
68 delete mBackgroundFrameDrawer; |
66 mDateObserver = NULL; |
69 mBackgroundFrameDrawer = NULL; |
|
70 } |
|
71 |
|
72 if(mDateObserver){ |
|
73 delete mDateObserver; |
|
74 mDateObserver = NULL; |
|
75 } |
|
76 qDebug() << "NmHsWidget::~NmHsWidget OUT <<--"; |
|
77 } |
67 } |
78 |
68 |
79 /*! |
69 /*! |
80 \fn void NmHsWidget::onShow() |
70 \fn void NmHsWidget::onShow() |
81 |
71 |
82 called by home screen fw when widget gets visible |
72 called by home screen fw when widget gets visible |
83 */ |
73 */ |
84 void NmHsWidget::onShow() |
74 void NmHsWidget::onShow() |
85 { |
75 { |
86 qDebug() << "NmHsWidget::onShow IN -->>"; |
76 NM_FUNCTION; |
87 if (mEngine) |
77 if (mEngine) |
88 { |
78 { |
89 mEngine->activate(); |
79 mEngine->activate(); |
90 } |
80 } |
91 qDebug() << "NmHsWidget::onShow OUT <<--"; |
|
92 } |
81 } |
93 |
82 |
94 /*! |
83 /*! |
95 \fn void NmHsWidget::onHide() |
84 \fn void NmHsWidget::onHide() |
96 |
85 |
97 called by home screen fw when widget gets hidden |
86 called by home screen fw when widget gets hidden |
98 */ |
87 */ |
99 void NmHsWidget::onHide() |
88 void NmHsWidget::onHide() |
100 { |
89 { |
101 qDebug() << "NmHsWidget::onHide IN -->>"; |
90 NM_FUNCTION; |
102 if (mEngine) |
91 if (mEngine) |
103 { |
92 { |
104 mEngine->suspend(); |
93 mEngine->suspend(); |
105 } |
94 } |
106 qDebug() << "NmHsWidget::onHide OUT <<--"; |
|
107 } |
95 } |
108 |
96 |
109 /*! |
97 /*! |
110 Initializes Localization. |
98 Initializes Localization. |
111 /post mTranslator constructed & localization file loaded |
99 /post mTranslator constructed & localization file loaded |
112 returns false in failure, otherwise true |
100 returns false in failure, otherwise true |
113 */ |
101 */ |
114 bool NmHsWidget::setupLocalization() |
102 bool NmHsWidget::setupLocalization() |
115 { |
103 { |
116 qDebug() << "NmHsWidget::setupLocalization IN -->>"; |
104 NM_FUNCTION; |
117 |
105 |
118 //Use correct localisation |
106 //Use correct localisation |
119 bool ret(false); |
107 bool ret(false); |
120 mTranslator = new QTranslator(); |
108 mTranslator = new QTranslator(); |
121 QString lang = QLocale::system().name(); |
109 QString lang = QLocale::system().name(); |
122 ret = mTranslator->load(KNmHsWidgetLocFileName + lang, KNmHsWidgetLocLocation); |
110 ret = mTranslator->load(KNmHsWidgetLocFileName + lang, KNmHsWidgetLocLocation); |
123 qDebug() << "NmHsWidget::setupLocalization mTranslator->load loadSucceed:"<<ret; |
|
124 QCoreApplication::installTranslator(mTranslator); |
111 QCoreApplication::installTranslator(mTranslator); |
125 |
112 |
126 qDebug() << "NmHsWidget::setupLocalization OUT <<--"; |
|
127 return ret; |
113 return ret; |
128 } |
114 } |
129 |
115 |
130 /*! |
116 /*! |
131 Initializes UI. Everything that is not done in docml files should be here. |
117 Initializes UI. Everything that is not done in docml files should be here. |
132 return true if ok, in error false. |
118 return true if ok, in error false. |
133 */ |
119 */ |
134 void NmHsWidget::setupUi() |
120 void NmHsWidget::setupUi() |
135 { |
121 { |
136 qDebug() << "NmHsWidget::setupUi IN -->>"; |
122 NM_FUNCTION; |
|
123 |
137 setContentsMargins( KNmHsWidgetContentsMargin, KNmHsWidgetContentsMargin, |
124 setContentsMargins( KNmHsWidgetContentsMargin, KNmHsWidgetContentsMargin, |
138 KNmHsWidgetContentsMargin, KNmHsWidgetContentsMargin); |
125 KNmHsWidgetContentsMargin, KNmHsWidgetContentsMargin); |
139 |
126 |
140 //Setup layout |
127 //Setup layout |
141 mRowLayout = new QGraphicsLinearLayout(Qt::Vertical); |
128 mRowLayout = new QGraphicsLinearLayout(Qt::Vertical); |
149 mBackgroundFrameDrawer = new HbFrameDrawer( KNmHsWidgetBackgroundImage, HbFrameDrawer::NinePieces ); |
136 mBackgroundFrameDrawer = new HbFrameDrawer( KNmHsWidgetBackgroundImage, HbFrameDrawer::NinePieces ); |
150 HbFrameItem* backgroundLayoutItem = new HbFrameItem( mBackgroundFrameDrawer ); |
137 HbFrameItem* backgroundLayoutItem = new HbFrameItem( mBackgroundFrameDrawer ); |
151 //set to NULL to indicate that ownership transferred |
138 //set to NULL to indicate that ownership transferred |
152 mBackgroundFrameDrawer = NULL; |
139 mBackgroundFrameDrawer = NULL; |
153 setBackgroundItem( backgroundLayoutItem ); |
140 setBackgroundItem( backgroundLayoutItem ); |
154 |
|
155 qDebug() << "NmHsWidget::setupUi OUT -->>"; |
|
156 } |
141 } |
157 |
142 |
158 /*! |
143 /*! |
159 Initializes the widget. |
144 Initializes the widget. |
160 |
145 |
161 called by home screen fw when widget is added to home screen |
146 called by home screen fw when widget is added to home screen |
162 */ |
147 */ |
163 void NmHsWidget::onInitialize() |
148 void NmHsWidget::onInitialize() |
164 { |
149 { |
165 QT_TRY{ |
150 NM_FUNCTION; |
166 qDebug() << "NmHsWidget::onInitialize IN -->>"; |
151 |
167 |
152 QT_TRY{ |
168 setupUi(); |
153 setupUi(); |
169 //emit error if localization fails |
154 //emit error if localization fails |
170 if(!setupLocalization()){ |
155 if(!setupLocalization()){ |
171 emit error(); |
156 emit error(); |
172 return; |
157 return; |
265 |
249 |
266 for(int i=0; i<envelopes.count(); i++) |
250 for(int i=0; i<envelopes.count(); i++) |
267 { |
251 { |
268 mMailRows[i]->updateMailData( envelopes[i] ); |
252 mMailRows[i]->updateMailData( envelopes[i] ); |
269 } |
253 } |
270 qDebug() << "NmHsWidget::updateData OUT <<--"; |
|
271 } |
254 } |
272 |
255 |
273 /*! |
256 /*! |
274 Sets monitored account id from given string |
257 Sets monitored account id from given string |
275 Needed for home screen framework which supports only QString type properties |
258 Needed for home screen framework which supports only QString type properties |
276 */ |
259 */ |
277 void NmHsWidget::setAccountId(const QString &text) |
260 void NmHsWidget::setAccountId(const QString &text) |
278 { |
261 { |
279 qDebug() << "NmHsWidget::setAccountId IN -->>"; |
262 NM_FUNCTION; |
|
263 |
280 bool ok; |
264 bool ok; |
281 quint64 id = text.toULongLong(&ok); |
265 quint64 id = text.toULongLong(&ok); |
282 if (!ok) |
266 if (!ok) |
283 { |
267 { |
284 qDebug() << "NmHsWidget::setAccountId: invalid account ID data, signal finished()!!!"; |
268 NM_ERROR(1,"NmHsWidget::setAccountId: invalid account ID data, signal finished()!!!"); |
285 //No valid account id so give up |
269 //No valid account id so give up |
286 emit finished(); |
270 emit finished(); |
287 } |
271 } |
288 else |
272 else |
289 { |
273 { |
290 mAccountId.setId(id); |
274 mAccountId.setId(id); |
291 } |
275 } |
292 qDebug() << "NmHsWidget::setAccountId OUT <<--"; |
|
293 } |
276 } |
294 |
277 |
295 /*! |
278 /*! |
296 Returns monitored account id as a string |
279 Returns monitored account id as a string |
297 Needed for home screen framework which supports only QString type properties |
280 Needed for home screen framework which supports only QString type properties |
298 */ |
281 */ |
299 QString NmHsWidget::accountId() const |
282 QString NmHsWidget::accountId() const |
300 { |
283 { |
301 qDebug() << "NmHsWidget::accountId()"; |
284 NM_FUNCTION; |
302 return QString::number(mAccountId.id()); |
285 return QString::number(mAccountId.id()); |
303 } |
286 } |
304 |
287 |
305 /*! |
288 /*! |
306 Sets monitored account icon name from given string |
289 Sets monitored account icon name from given string |
307 */ |
290 */ |
308 void NmHsWidget::setAccountIconName(const QString &text) |
291 void NmHsWidget::setAccountIconName(const QString &text) |
309 { |
292 { |
310 qDebug() << "NmHsWidget::setAccountIconName IN -->>"; |
293 NM_FUNCTION; |
311 mAccountIconName = text; |
294 mAccountIconName = text; |
312 qDebug() << "NmHsWidget::setAccountIconName OUT <<--"; |
|
313 } |
295 } |
314 |
296 |
315 /*! |
297 /*! |
316 Returns monitored account icon name |
298 Returns monitored account icon name |
317 */ |
299 */ |
318 QString NmHsWidget::accountIconName() const |
300 QString NmHsWidget::accountIconName() const |
319 { |
301 { |
320 qDebug() << "NmHsWidget::accountIconName()"; |
302 NM_FUNCTION; |
321 return mAccountIconName; |
303 return mAccountIconName; |
322 } |
304 } |
323 |
305 |
324 /*! |
306 /*! |
325 Slot to handle expand/collapse trigger event |
307 Slot to handle expand/collapse trigger event |
326 */ |
308 */ |
327 void NmHsWidget::handleExpandCollapseEvent() |
309 void NmHsWidget::handleExpandCollapseEvent() |
328 { |
310 { |
329 qDebug() << "NmHsWidget::handleExpandCollapseEvent IN -->>"; |
311 NM_FUNCTION; |
330 toggleExpansionState(); |
312 toggleExpansionState(); |
331 qDebug() << "NmHsWidget::handleExpandCollapseEvent OUT <<--"; |
|
332 } |
313 } |
333 |
314 |
334 /*! |
315 /*! |
335 Sets widget expand/collapse state |
316 Sets widget expand/collapse state |
336 /post widget expansion state is changed |
317 /post widget expansion state is changed |
337 */ |
318 */ |
338 void NmHsWidget::toggleExpansionState() |
319 void NmHsWidget::toggleExpansionState() |
339 { |
320 { |
340 qDebug() << "NmHsWidget::setExpanded IN -->>"; |
321 NM_FUNCTION; |
341 |
322 |
342 mIsExpanded = !mIsExpanded; |
323 mIsExpanded = !mIsExpanded; |
343 |
324 |
344 //save new state to home screen |
325 //save new state to home screen |
345 QStringList propertiesList; |
326 QStringList propertiesList; |
347 emit setPreferences(propertiesList); |
328 emit setPreferences(propertiesList); |
348 |
329 |
349 //handle state change drawing |
330 //handle state change drawing |
350 updateMailData(); |
331 updateMailData(); |
351 |
332 |
352 qDebug() << "NmHsWidget::setExpanded OUT <<--"; |
333 mTitleRow->setExpandCollapseIcon(mIsExpanded); |
353 } |
334 } |
354 |
335 |
355 /*! |
336 /*! |
356 Sets expand/collapse state from given string (needed by homescreen) |
337 Sets expand/collapse state from given string (needed by homescreen) |
357 */ |
338 */ |
358 void NmHsWidget::setWidgetStateProperty(QString value) |
339 void NmHsWidget::setWidgetStateProperty(QString value) |
359 { |
340 { |
360 qDebug() << "NmHsWidget::setWidgetStateProperty IN -->>"; |
341 NM_FUNCTION; |
361 if (value == KNmHsWidgetStateCollapsed) |
342 if (value == KNmHsWidgetStateCollapsed) |
362 { |
343 { |
363 mIsExpanded = false; |
344 mIsExpanded = false; |
364 } |
345 } |
365 else |
346 else |
366 { |
347 { |
367 mIsExpanded = true; |
348 mIsExpanded = true; |
368 } |
349 } |
369 qDebug() << "NmHsWidget::setWidgetStateProperty OUT <<--"; |
|
370 } |
350 } |
371 |
351 |
372 /*! |
352 /*! |
373 Returns widget expand/collapse state as string (needed by homescreen) |
353 Returns widget expand/collapse state as string (needed by homescreen) |
374 */ |
354 */ |
375 QString NmHsWidget::widgetStateProperty() |
355 QString NmHsWidget::widgetStateProperty() |
376 { |
356 { |
377 qDebug() << "NmHsWidget::widgetStateProperty()"; |
357 NM_FUNCTION; |
378 if (mIsExpanded) |
358 if (mIsExpanded) |
379 { |
359 { |
380 return KNmHsWidgetStateExpanded; |
360 return KNmHsWidgetStateExpanded; |
381 } |
361 } |
382 else |
362 else |
406 while (mMailRows.count() != neededRowsCount) |
384 while (mMailRows.count() != neededRowsCount) |
407 { |
385 { |
408 //more mails to show than rows |
386 //more mails to show than rows |
409 if (mMailRows.count() < neededRowsCount) |
387 if (mMailRows.count() < neededRowsCount) |
410 { |
388 { |
411 qDebug() << "NmHsWidget - add new mail row"; |
|
412 NmHsWidgetEmailRow *row = new NmHsWidgetEmailRow(); |
389 NmHsWidgetEmailRow *row = new NmHsWidgetEmailRow(); |
413 if( !row->loadDocML()){ |
390 if( !row->loadDocML()){ |
414 qDebug() << "NmHsWidget::updateMailRowsList row->loadDocML() fails"; |
391 NM_ERROR(1,"NmHsWidget::updateMailRowsList row->loadDocML() fails"); |
415 //if docml loading fails no point to proceed |
392 //if docml loading fails no point to proceed |
416 //but memoryleak must be prevented |
393 //but memoryleak must be prevented |
417 delete row; |
394 delete row; |
418 row = NULL; |
395 row = NULL; |
419 emit error(); |
396 emit error(); |
441 |
417 |
442 if (mStaticWidget) |
418 if (mStaticWidget) |
443 { |
419 { |
444 this->updateMailRowsVisibility(mailCount); |
420 this->updateMailRowsVisibility(mailCount); |
445 } |
421 } |
446 qDebug() << "NmHsWidget::updateMailRowsList OUT <<--"; |
|
447 } |
422 } |
448 |
423 |
449 /*! |
424 /*! |
450 Updates mail row visibilities in static widget |
425 Updates mail row visibilities in static widget |
451 /param visibleCount defines how many items do have mail data |
426 /param visibleCount defines how many items do have mail data |
452 /post all row items having mail data are visible, other rows are hidden |
427 /post all row items having mail data are visible, other rows are hidden |
453 */ |
428 */ |
454 void NmHsWidget::updateMailRowsVisibility(const int visibleCount) |
429 void NmHsWidget::updateMailRowsVisibility(const int visibleCount) |
455 { |
430 { |
456 qDebug() << "NmHsWidget::updateMailRowsVisibility IN -->>"; |
431 NM_FUNCTION; |
457 |
432 |
458 // set visible as many rows as requested by visibleCount param |
433 // set visible as many rows as requested by visibleCount param |
459 bool isVisible; |
434 bool isVisible; |
460 for (int i=0; i < mMailRows.count(); i++) |
435 for (int i=0; i < mMailRows.count(); i++) |
461 { |
436 { |