21 #include <hbdataformmodelitem.h> |
21 #include <hbdataformmodelitem.h> |
22 #include <hbdataformviewitem.h> |
22 #include <hbdataformviewitem.h> |
23 #include <hbabstractbutton.h> |
23 #include <hbabstractbutton.h> |
24 #include <xqsettingsmanager.h> |
24 #include <xqsettingsmanager.h> |
25 #include <xqsettingskey.h> |
25 #include <xqsettingskey.h> |
|
26 #include <HbExtendedLocale.h> |
26 |
27 |
27 #include "calensettings.h" |
28 #include "calensettings.h" |
|
29 #include "calenservices.h" |
28 #include "calendarprivatecrkeys.h" |
30 #include "calendarprivatecrkeys.h" |
29 |
31 |
30 CalenSettings::CalenSettings(HbDataForm *form, QObject *parent) |
32 CalenSettings::CalenSettings(MCalenServices& services, HbDataForm *form, QObject *parent) |
31 :QObject(parent), |
33 :QObject(parent), |
|
34 mServices(services), |
32 mSettingsForm(form), |
35 mSettingsForm(form), |
33 mSettingsModel(0), |
36 mSettingsModel(0), |
34 mShowRegionalInfoItem(NULL) |
37 mShowRegionalInfoItem(NULL), |
|
38 mShowWeekStartOnInfoItem(NULL), |
|
39 mWeekNumberItemAdded(false), |
|
40 mRegionalpluginActive(false) |
35 { |
41 { |
36 mSettingsManager = new XQSettingsManager(this); |
42 mSettingsManager = new XQSettingsManager(this); |
37 mAlarmSnoozeCenrepKey = new XQSettingsKey( |
43 mAlarmSnoozeCenrepKey = new XQSettingsKey( |
38 XQSettingsKey::TargetCentralRepository, |
44 XQSettingsKey::TargetCentralRepository, |
39 KCRUidCalendar, KCalendarSnoozeTime); |
45 KCRUidCalendar, KCalendarSnoozeTime); |
92 mSettingsForm->addConnection(mAlarmSnoozeTimeItem, |
98 mSettingsForm->addConnection(mAlarmSnoozeTimeItem, |
93 SIGNAL(currentIndexChanged(int)), |
99 SIGNAL(currentIndexChanged(int)), |
94 this, SLOT(handleAlarmSnoozeTimeChange(int))); |
100 this, SLOT(handleAlarmSnoozeTimeChange(int))); |
95 mSettingsModel->appendDataFormItem(mAlarmSnoozeTimeItem); |
101 mSettingsModel->appendDataFormItem(mAlarmSnoozeTimeItem); |
96 |
102 |
97 // Append Show Week Number settings item |
103 // Create the weekday list based on start of week. |
98 mShowWeekNumberItem = new HbDataFormModelItem(); |
104 QStringList weekdaysList; |
99 mShowWeekNumberItem->setType(HbDataFormModelItem::ToggleValueItem); |
105 weekdaysList |
100 QStringList values; |
106 << QString("Monday")//hbTrId("txt_clk_setlabel_val_monday")//@TODO set to proper localization strings once available |
101 values << hbTrId("txt_calendar_button_no") |
107 << QString("Tuesday")//hbTrId("txt_clk_setlabel_val_tuesday") |
102 << hbTrId("txt_calendar_button_yes"); |
108 << QString("Wednesday")//hbTrId("txt_clk_setlabel_val_wednesday") |
103 mShowWeekNumberItem->setData( |
109 << QString("Thursday")//hbTrId("txt_clk_setlabel_val_thursday") |
104 HbDataFormModelItem::LabelRole, QString( |
110 << QString("Friday")//hbTrId("txt_clk_setlabel_val_friday") |
105 hbTrId("txt_calendar_setlabel_show_week_numbers"))); |
111 << QString("Saturday")//hbTrId("txt_clk_setlabel_val_saturday") |
106 |
112 << QString("Sunday");//hbTrId("txt_clk_setlabel_val_sunday"); |
107 |
113 // Start of week item. |
|
114 mShowWeekStartOnInfoItem = mSettingsModel->appendDataFormItem(HbDataFormModelItem::ComboBoxItem,QString("Week Starts On")); |
|
115 // hbTrId("txt_clock_setlabel_week_starts_on"));//@TODO set to proper localization strings once available |
|
116 // Get start of week from the locale. |
|
117 HbExtendedLocale locale = HbExtendedLocale::system(); |
|
118 mStartOfWeek = locale.startOfWeek(); |
|
119 mShowWeekStartOnInfoItem->setContentWidgetData("items", weekdaysList); |
|
120 mShowWeekStartOnInfoItem->setContentWidgetData("currentIndex", mStartOfWeek); |
|
121 mSettingsForm->addConnection(mShowWeekStartOnInfoItem, SIGNAL(currentIndexChanged(int)), |
|
122 this, SLOT(setStartDayOfWeek(int))); |
|
123 //add show week number item in the model |
|
124 |
|
125 addWeekNumberItem(); |
|
126 mSettingsModel->appendDataFormItem(mShowWeekNumberItem); |
|
127 |
|
128 if(isPluginEnabled()) { |
|
129 addRegionalInfoItem(); |
|
130 } |
|
131 } |
|
132 |
|
133 void CalenSettings::addRegionalInfoItem() |
|
134 { |
|
135 mRegionalpluginActive = true; |
|
136 // Regional info is the second item in the model |
|
137 int index = mSettingsModel->indexFromItem(mAlarmSnoozeTimeItem).row() + 1; |
|
138 |
|
139 mShowRegionalInfoItem = mSettingsModel->insertDataFormItem( |
|
140 index , |
|
141 HbDataFormModelItem::ToggleValueItem, |
|
142 QString(hbTrId("txt_calendar_setlabel_show_lunar_calendar")), |
|
143 mSettingsModel->invisibleRootItem()); |
|
144 |
108 // For HbPushButton type properties -- to be used for toggle value item |
145 // For HbPushButton type properties -- to be used for toggle value item |
109 mShowWeekNumberItem->setContentWidgetData( |
146 mShowRegionalInfoItem->setContentWidgetData(QString("text"), |
110 QString("text"), QString(hbTrId("txt_calendar_button_no"))); |
147 QString(hbTrId("txt_calendar_button_no"))); |
111 mShowWeekNumberItem->setContentWidgetData( |
148 mShowRegionalInfoItem->setContentWidgetData(QString("additionalText"), |
112 QString("additionalText"), QString( |
149 QString(hbTrId("txt_calendar_button_yes"))); |
113 hbTrId("txt_calendar_button_yes"))); |
|
114 |
|
115 mSettingsForm->addConnection(mShowWeekNumberItem, SIGNAL(clicked()), |
|
116 this, SLOT(handleWeekNumberChange())); |
|
117 mSettingsModel->appendDataFormItem(mShowWeekNumberItem); |
|
118 |
|
119 // TODO: Append the regional information setting only if any regional |
|
120 // plugins have been loaded by the customisation manager |
|
121 mShowRegionalInfoItem = new HbDataFormModelItem(); |
|
122 mShowRegionalInfoItem->setType(HbDataFormModelItem::ToggleValueItem); |
|
123 mShowRegionalInfoItem->setData(HbDataFormModelItem::LabelRole, |
|
124 QString("Show regional info")); |
|
125 |
|
126 // For HbPushButton type properties -- to be used for toggle value item |
|
127 mShowRegionalInfoItem->setContentWidgetData( |
|
128 QString("text"), QString(hbTrId("txt_calendar_button_no"))); |
|
129 mShowRegionalInfoItem->setContentWidgetData( |
|
130 QString("additionalText"), QString( |
|
131 hbTrId("txt_calendar_button_yes"))); |
|
132 mSettingsForm->addConnection(mShowRegionalInfoItem, SIGNAL(clicked()), |
150 mSettingsForm->addConnection(mShowRegionalInfoItem, SIGNAL(clicked()), |
133 this, SLOT(handleRegionalInfoChange())); |
151 this, SLOT(handleRegionalInfoChange())); |
134 mSettingsModel->appendDataFormItem(mShowRegionalInfoItem); |
152 |
|
153 } |
|
154 |
|
155 void CalenSettings::removeRegionalInfoItem() |
|
156 { |
|
157 mSettingsForm->removeConnection(mShowRegionalInfoItem, SIGNAL(clicked()), |
|
158 this, SLOT(handleRegionalInfoChange())); |
|
159 mSettingsModel->removeItem(mShowRegionalInfoItem); |
|
160 mRegionalpluginActive = false; |
135 } |
161 } |
136 |
162 |
137 void CalenSettings::handleAlarmSnoozeTimeChange(int index) |
163 void CalenSettings::handleAlarmSnoozeTimeChange(int index) |
138 { |
164 { |
139 switch(index) |
165 switch(index) |
228 choiceIndex = 0; |
254 choiceIndex = 0; |
229 break; |
255 break; |
230 } |
256 } |
231 mAlarmSnoozeTimeItem->setContentWidgetData(QString("currentIndex"), |
257 mAlarmSnoozeTimeItem->setContentWidgetData(QString("currentIndex"), |
232 choiceIndex); |
258 choiceIndex); |
233 if(mShowWeekNumber) |
|
234 { |
|
235 mShowWeekNumberItem->setContentWidgetData( |
|
236 QString("text"), QString(hbTrId("txt_calendar_button_yes"))); |
|
237 mShowWeekNumberItem->setContentWidgetData( |
|
238 QString("additionalText"), QString( |
|
239 hbTrId("txt_calendar_button_no"))); |
|
240 } |
|
241 else |
|
242 { |
|
243 mShowWeekNumberItem->setContentWidgetData( |
|
244 QString("text"), QString(hbTrId("txt_calendar_button_no"))); |
|
245 mShowWeekNumberItem->setContentWidgetData( |
|
246 QString("additionalText"), QString( |
|
247 hbTrId("txt_calendar_button_yes"))); |
|
248 } |
|
249 |
259 |
250 value = mSettingsManager->readItemValue(*mShowRegionalInfoKey); |
260 // Get start of week from the locale. |
|
261 HbExtendedLocale locale = HbExtendedLocale::system(); |
|
262 mStartOfWeek = locale.startOfWeek(); |
|
263 |
|
264 |
|
265 mShowWeekStartOnInfoItem->setContentWidgetData("currentIndex", mStartOfWeek); |
|
266 //update the show week number option |
|
267 updateShowWeekItem(); |
|
268 // Check the the regional info plugin is loaded now or not |
|
269 if(isPluginEnabled()) { |
|
270 // If the plugin was already there just populate the item |
|
271 // else add the regional info item and then populate |
|
272 if(mRegionalpluginActive) { |
|
273 populateRegionalInfo(); |
|
274 }else { |
|
275 addRegionalInfoItem(); |
|
276 populateRegionalInfo(); |
|
277 } |
|
278 }else { |
|
279 // If the plugin is removed now and if it was loaded before |
|
280 // remove the item |
|
281 if(mRegionalpluginActive) { |
|
282 removeRegionalInfoItem(); |
|
283 } |
|
284 } |
|
285 mSettingsForm->setModel(mSettingsModel); |
|
286 } |
|
287 |
|
288 void CalenSettings::populateRegionalInfo() |
|
289 { |
|
290 QVariant value = mSettingsManager->readItemValue(*mShowRegionalInfoKey); |
251 mShowRegionalInfo = value.toUInt(); |
291 mShowRegionalInfo = value.toUInt(); |
252 |
292 |
253 if (mShowRegionalInfo) { |
293 if (mShowRegionalInfo) { |
254 mShowRegionalInfoItem->setContentWidgetData( |
294 mShowRegionalInfoItem->setContentWidgetData( |
255 QString("text"), QString(hbTrId("txt_calendar_button_yes"))); |
295 QString("text"), QString(hbTrId("txt_calendar_button_yes"))); |
256 mShowRegionalInfoItem->setContentWidgetData( |
296 mShowRegionalInfoItem->setContentWidgetData( |
257 QString("additionalText"), QString( |
297 QString("additionalText"), QString( |
258 hbTrId("txt_calendar_button_no"))); |
298 hbTrId("txt_calendar_button_no"))); |
259 } else { |
299 } else { |
260 mShowRegionalInfoItem->setContentWidgetData( |
300 mShowRegionalInfoItem->setContentWidgetData( |
261 QString("text"), QString(hbTrId("txt_calendar_button_no"))); |
301 QString("text"), QString(hbTrId("txt_calendar_button_no"))); |
262 mShowRegionalInfoItem->setContentWidgetData( |
302 mShowRegionalInfoItem->setContentWidgetData( |
263 QString("additionalText"), QString( |
303 QString("additionalText"), QString( |
264 hbTrId("txt_calendar_button_yes"))); |
304 hbTrId("txt_calendar_button_yes"))); |
265 } |
305 } |
266 |
306 |
267 mSettingsForm->setModel(mSettingsModel); |
307 } |
268 } |
308 |
|
309 void CalenSettings::addWeekNumberItem() |
|
310 { |
|
311 mWeekNumberItemAdded = true; |
|
312 // Append Show Week Number settings item |
|
313 mShowWeekNumberItem = new HbDataFormModelItem(); |
|
314 mShowWeekNumberItem->setType(HbDataFormModelItem::ToggleValueItem); |
|
315 QStringList values; |
|
316 values << hbTrId("txt_calendar_button_no") |
|
317 << hbTrId("txt_calendar_button_yes"); |
|
318 mShowWeekNumberItem->setData(HbDataFormModelItem::LabelRole, |
|
319 QString(hbTrId("txt_calendar_setlabel_show_week_numbers"))); |
|
320 |
|
321 |
|
322 // For HbPushButton type properties -- to be used for toggle value item |
|
323 if(mShowWeekNumber) |
|
324 { |
|
325 mShowWeekNumberItem->setContentWidgetData(QString("text"), |
|
326 QString(hbTrId("txt_calendar_button_yes"))); |
|
327 mShowWeekNumberItem->setContentWidgetData(QString("additionalText"), |
|
328 QString(hbTrId("txt_calendar_button_no"))); |
|
329 } |
|
330 else |
|
331 { |
|
332 mShowWeekNumberItem->setContentWidgetData(QString("text"), |
|
333 QString(hbTrId("txt_calendar_button_no"))); |
|
334 mShowWeekNumberItem->setContentWidgetData(QString("additionalText"), |
|
335 QString(hbTrId("txt_calendar_button_yes"))); |
|
336 } |
|
337 |
|
338 mSettingsForm->addConnection(mShowWeekNumberItem, SIGNAL(clicked()), |
|
339 this, SLOT(handleWeekNumberChange())); |
|
340 } |
|
341 |
|
342 /*! |
|
343 Returns true if plugin is loaded |
|
344 */ |
|
345 bool CalenSettings::isPluginEnabled() |
|
346 { |
|
347 QString *pluginInfo = mServices.InfobarTextL(); |
|
348 if (!pluginInfo) { |
|
349 return false; |
|
350 } else { |
|
351 return true; |
|
352 } |
|
353 } |
|
354 // --------------------------------------------------------- |
|
355 // CalenSettings::setStartDayOfWeek |
|
356 // sets the start day of the week to the locale |
|
357 // calls when user select week day |
|
358 // --------------------------------------------------------- |
|
359 // |
|
360 void CalenSettings::setStartDayOfWeek(const int index) |
|
361 { |
|
362 TLocale locale; |
|
363 TDay day = (TDay)index; |
|
364 //set the start day of the week to locale |
|
365 locale.SetStartOfWeek(day); |
|
366 locale.Set(); |
|
367 updateShowWeekItem(); |
|
368 } |
|
369 |
|
370 // --------------------------------------------------------- |
|
371 // CalenSettings::updateShowWeekItem |
|
372 // update the show week number option |
|
373 // --------------------------------------------------------- |
|
374 // |
|
375 void CalenSettings::updateShowWeekItem() |
|
376 { |
|
377 // Get start of week from the locale. |
|
378 HbExtendedLocale locale = HbExtendedLocale::system(); |
|
379 mStartOfWeek = locale.startOfWeek(); |
|
380 mShowWeekStartOnInfoItem->setContentWidgetData("currentIndex", mStartOfWeek); |
|
381 //if start day is not Monday |
|
382 //set the show week number option dimmed , |
|
383 //else set to proper status |
|
384 if(mStartOfWeek != HbExtendedLocale::Monday) |
|
385 { |
|
386 mShowWeekNumberItem->setContentWidgetData(QString("text"), |
|
387 QString(hbTrId("txt_calendar_button_no"))); |
|
388 mShowWeekNumberItem->setContentWidgetData(QString("additionalText"), |
|
389 QString(hbTrId("txt_calendar_button_yes"))); |
|
390 mShowWeekNumberItem->setEnabled(false); |
|
391 } |
|
392 else |
|
393 { |
|
394 if(mShowWeekNumber) |
|
395 { |
|
396 mShowWeekNumberItem->setContentWidgetData(QString("text"), |
|
397 QString(hbTrId("txt_calendar_button_yes"))); |
|
398 mShowWeekNumberItem->setContentWidgetData(QString("additionalText"), |
|
399 QString(hbTrId("txt_calendar_button_no"))); |
|
400 } |
|
401 else |
|
402 { |
|
403 mShowWeekNumberItem->setContentWidgetData(QString("text"), |
|
404 QString(hbTrId("txt_calendar_button_no"))); |
|
405 mShowWeekNumberItem->setContentWidgetData(QString("additionalText"), |
|
406 QString(hbTrId("txt_calendar_button_yes"))); |
|
407 } |
|
408 mShowWeekNumberItem->setEnabled(true); |
|
409 } |
|
410 } |
269 // End of file |
411 // End of file |