--- a/calendarui/settings/src/calensettings.cpp Mon May 03 12:30:32 2010 +0300
+++ b/calendarui/settings/src/calensettings.cpp Mon Jun 28 15:22:02 2010 +0530
@@ -23,42 +23,67 @@
#include <hbabstractbutton.h>
#include <xqsettingsmanager.h>
#include <xqsettingskey.h>
+#include <HbExtendedLocale.h>
#include "calensettings.h"
-#include <calendarinternalcrkeys.h> // includes CalendarInternalCRKeys.h
+#include "calenservices.h"
+#include "calendarprivatecrkeys.h"
-CalenSettings::CalenSettings(HbDataForm *form, QObject *parent)
+// Constants
+const int KValueZero( 0 );
+const int KValueOne( 1 );
+
+
+CalenSettings::CalenSettings(MCalenServices& services, HbDataForm *form, QObject *parent)
:QObject(parent),
+ mServices(services),
mSettingsForm(form),
- mSettingsModel(0),
- mShowRegionalInfoItem(NULL)
+ mSettingsModel(NULL),
+ mAlarmSnoozeTimeItem(NULL),
+ mShowWeekNumberItem(NULL),
+ mShowRegionalInfoItem(NULL),
+ mShowWeekStartOnInfoItem(NULL),
+ mStartOfWeekItem(NULL),
+ mWeekNumberItemAdded(false),
+ mRegionalpluginActive(false)
{
- mSettingsManager = new XQSettingsManager(this);
+ mSettingsManager = new XQSettingsManager(this);
mAlarmSnoozeCenrepKey = new XQSettingsKey(
- XQSettingsKey::TargetCentralRepository,
- KCRUidCalendar, KCalendarSnoozeTime);
+ XQSettingsKey::TargetCentralRepository,
+ KCRUidCalendar, KCalendarSnoozeTime);
mWeekNumberCenrepKey = new XQSettingsKey(
- XQSettingsKey::TargetCentralRepository,
- KCRUidCalendar, KCalendarWeekViewTitle);
- mShowRegionalInfoKey = new XQSettingsKey(XQSettingsKey::TargetCentralRepository,
- KCRUidCalendar, KShowRegionalInformation);
-
- // Read the initial values from the cenrep
- QVariant value = mSettingsManager->readItemValue(*mAlarmSnoozeCenrepKey);
- mAlarmSnoozeTime = value.toUInt();
-
- value = mSettingsManager->readItemValue(*mWeekNumberCenrepKey);
- mShowWeekNumber = value.toUInt();
-
- value = mSettingsManager->readItemValue(*mShowRegionalInfoKey);
- mShowRegionalInfo = value.toUInt();
+ XQSettingsKey::TargetCentralRepository,
+ KCRUidCalendar, KCalendarShowWeekNum);
+ mShowRegionalInfoKey = new XQSettingsKey(
+ XQSettingsKey::TargetCentralRepository,
+ KCRUidCalendar, KCalendarShowRegionalInfo);
}
+/*!
+ Destructor
+ */
CalenSettings::~CalenSettings()
{
- // Nothing yet.
+ if (mSettingsManager) {
+ delete mSettingsManager;
+ }
+ // Delete the cenrep keys
+ delete mAlarmSnoozeCenrepKey;
+ delete mWeekNumberCenrepKey;
+ delete mShowRegionalInfoKey;
+
+ if (mSettingsModel) {
+ delete mSettingsModel;
+ }
+ if (mAlarmSnoozeTimeHash.count()) {
+ // Clear the contents
+ mAlarmSnoozeTimeHash.clear();
+ }
}
+/*!
+ Creates the settings model
+ */
void CalenSettings::createModel()
{
// Remove the model.
@@ -69,193 +94,289 @@
}
// Create a model and set it.
- mSettingsModel = new HbDataFormModel();
+ mSettingsModel = new HbDataFormModel(mSettingsForm);
// Create the alarm snooze choices
QStringList alarmSnoozeChoices;
alarmSnoozeChoices << hbTrId(
- "txt_calendar_setlabel_alarm_snooze_time_val_5_minu")
- << hbTrId("txt_calendar_setlabel_alarm_snooze_time_val_10_min")
- << hbTrId("txt_calendar_setlabel_alarm_snooze_time_val_15_min")
- << hbTrId("txt_calendar_setlabel_alarm_snooze_time_val_30_min");
+ "txt_calendar_setlabel_reminder_snooze_time_val_5_m")
+ << hbTrId("txt_calendar_setlabel_reminder_snooze_time_val_10")
+ << hbTrId("txt_calendar_setlabel_reminder_snooze_time_val_15")
+ << hbTrId("txt_calendar_setlabel_reminder_snooze_time_val_30");
+ // Build the hash map for the alarm snooze time.
+ // The values are five, ten, fifteen and thirty minutes
+ mAlarmSnoozeTimeHash[0] = 5;
+ mAlarmSnoozeTimeHash[1] = 10;
+ mAlarmSnoozeTimeHash[2] = 15;
+ mAlarmSnoozeTimeHash[3] = 30;
// Append Alarm Snooze Time Setting item
mAlarmSnoozeTimeItem = new HbDataFormModelItem();
mAlarmSnoozeTimeItem->setType(HbDataFormModelItem::ComboBoxItem);
mAlarmSnoozeTimeItem->setData(HbDataFormModelItem::LabelRole,
- QString(hbTrId("txt_calendar_setlabel_alarm_snooze_time")));
+ QString(hbTrId("txt_calendar_setlabel_reminder_snooze_time")));
mAlarmSnoozeTimeItem->setContentWidgetData(QString("items"),
- alarmSnoozeChoices);
+ alarmSnoozeChoices);
mAlarmSnoozeTimeItem->setContentWidgetData(QString("currentIndex"), 0);
mSettingsForm->addConnection(mAlarmSnoozeTimeItem,
SIGNAL(currentIndexChanged(int)),
this, SLOT(handleAlarmSnoozeTimeChange(int)));
mSettingsModel->appendDataFormItem(mAlarmSnoozeTimeItem);
- // Append Show Week Number settings item
- mShowWeekNumberItem = new HbDataFormModelItem();
- mShowWeekNumberItem->setType(HbDataFormModelItem::ToggleValueItem);
- QStringList values;
- values << hbTrId("txt_calendar_button_no")
- << hbTrId("txt_calendar_button_yes");
- mShowWeekNumberItem->setData(HbDataFormModelItem::LabelRole,
- QString(hbTrId("txt_calendar_setlabel_show_week_numbers")));
-
+ // Create the weekday list based on start of week.
+ QStringList weekdaysList;
+ weekdaysList
+ << hbTrId("txt_calendar_setlabel_week_starts_on_val_monday")
+ << hbTrId("txt_calendar_setlabel_week_starts_on_val_tuesday")
+ << hbTrId("txt_calendar_setlabel_week_starts_on_val_wednesday")
+ << hbTrId("txt_calendar_setlabel_week_starts_on_val_thursday")
+ << hbTrId("txt_calendar_setlabel_week_starts_on_val_friday")
+ << hbTrId("txt_calendar_setlabel_week_starts_on_val_saturday")
+ << hbTrId("txt_calendar_setlabel_week_starts_on_val_sunday");
+ // Start of week item.
+ mShowWeekStartOnInfoItem = mSettingsModel->appendDataFormItem(
+ HbDataFormModelItem::ComboBoxItem,
+ hbTrId("txt_calendar_setlabel_week_starts_on"));
- // For HbPushButton type properties -- to be used for toggle value item
- mShowWeekNumberItem->setContentWidgetData(QString("text"),
- QString(hbTrId("txt_calendar_button_no")));
- mShowWeekNumberItem->setContentWidgetData(QString("additionalText"),
- QString(hbTrId("txt_calendar_button_yes")));
-
- mSettingsForm->addConnection(mShowWeekNumberItem, SIGNAL(clicked()),
- this, SLOT(handleWeekNumberChange()));
- mSettingsModel->appendDataFormItem(mShowWeekNumberItem);
-
- // TODO: Append the regional information setting only if any regional plugins have been
- // loaded by the customisation manager
+ // Get start of week from the locale.
+ HbExtendedLocale locale = HbExtendedLocale::system();
+ mStartOfWeek = locale.startOfWeek();
+ mShowWeekStartOnInfoItem->setContentWidgetData("items", weekdaysList);
+ mShowWeekStartOnInfoItem->setContentWidgetData("currentIndex", mStartOfWeek);
+ mSettingsForm->addConnection(mShowWeekStartOnInfoItem,
+ SIGNAL(currentIndexChanged(int)),
+ this, SLOT(setStartDayOfWeek(int)));
+ // Add the show week number item in the model
+ addWeekNumberItem();
+
+ if (isPluginEnabled()) {
+ addRegionalInfoItem();
+ }
+}
+
+/*!
+ Adds the regional info item to the model
+ */
+void CalenSettings::addRegionalInfoItem()
+{
+ mRegionalpluginActive = true;
mShowRegionalInfoItem = new HbDataFormModelItem();
mShowRegionalInfoItem->setType(HbDataFormModelItem::ToggleValueItem);
mShowRegionalInfoItem->setData(HbDataFormModelItem::LabelRole,
- QString("Show regional info"));
+ QString(hbTrId("txt_calendar_setlabel_show_lunar_calendar")));
// For HbPushButton type properties -- to be used for toggle value item
mShowRegionalInfoItem->setContentWidgetData(QString("text"),
- QString(hbTrId("txt_calendar_button_no")));
+ QString(hbTrId("txt_calendar_button_no")));
mShowRegionalInfoItem->setContentWidgetData(QString("additionalText"),
- QString(hbTrId("txt_calendar_button_yes")));
+ QString(hbTrId("txt_calendar_button_yes")));
mSettingsForm->addConnection(mShowRegionalInfoItem, SIGNAL(clicked()),
- this, SLOT(handleRegionalInfoChange()));
+ this, SLOT(handleRegionalInfoChange()));
mSettingsModel->appendDataFormItem(mShowRegionalInfoItem);
}
+/*!
+ Removes the regional info item from the model
+ */
+void CalenSettings::removeRegionalInfoItem()
+{
+ mSettingsForm->removeConnection(mShowRegionalInfoItem, SIGNAL(clicked()),
+ this, SLOT(handleRegionalInfoChange()));
+ mSettingsModel->removeItem(mShowRegionalInfoItem);
+ mRegionalpluginActive = false;
+}
+
+/*!
+ Handles the alarm snooze time change
+ */
void CalenSettings::handleAlarmSnoozeTimeChange(int index)
{
-switch(index)
- {
- case 0:
- {
- mSettingsManager->writeItemValue(*mAlarmSnoozeCenrepKey, 5);
- }
- break;
- case 1:
- {
- mSettingsManager->writeItemValue(*mAlarmSnoozeCenrepKey, 10);
- }
- break;
- case 2:
- {
- mSettingsManager->writeItemValue(*mAlarmSnoozeCenrepKey, 15);
- }
- break;
- case 3:
- {
- mSettingsManager->writeItemValue(*mAlarmSnoozeCenrepKey, 30);
- }
- break;
- default:
- break;
- }
-QVariant value = mSettingsManager->readItemValue(*mAlarmSnoozeCenrepKey);
- uint time = value.toUInt();
+ if(mAlarmSnoozeTimeHash.value(index) > KValueZero) {
+ mSettingsManager->writeItemValue(*mAlarmSnoozeCenrepKey, mAlarmSnoozeTimeHash[index]);
+ }
}
+/*!
+ Handles the week number change
+ */
void CalenSettings::handleWeekNumberChange()
{
QVariant data = mShowWeekNumberItem->contentWidgetData(QString("text"));
QString value = data.toString();
- if(!value.compare(hbTrId("txt_calendar_button_no")))
- {
+ if (!value.compare(hbTrId("txt_calendar_button_no"))) {
// User has made it OFF.
- mShowWeekNumber = 0;
- mSettingsManager->writeItemValue(*mWeekNumberCenrepKey, 0);
+ mSettingsManager->writeItemValue(*mWeekNumberCenrepKey, KValueZero);
+ } else if (!value.compare(hbTrId("txt_calendar_button_yes"))) {
+ // User has made it ON.
+ mSettingsManager->writeItemValue(*mWeekNumberCenrepKey, KValueOne);
}
- else if(!value.compare(hbTrId("txt_calendar_button_yes")))
- {
+}
+
+/*!
+ Handles the regional info option change
+ */
+void CalenSettings::handleRegionalInfoChange()
+{
+ QVariant data = mShowRegionalInfoItem->contentWidgetData(QString("text"));
+ QString value = data.toString();
+ if (!value.compare(hbTrId("txt_calendar_button_no"))) {
+ // User has made it OFF
+ mSettingsManager->writeItemValue(*mShowRegionalInfoKey, KValueZero);
+ } else if (!value.compare(hbTrId("txt_calendar_button_yes"))) {
// User has made it ON.
- mShowWeekNumber = 1;
- mSettingsManager->writeItemValue(*mWeekNumberCenrepKey, 1);
+ mSettingsManager->writeItemValue(*mShowRegionalInfoKey, KValueOne);
}
}
-void CalenSettings::handleRegionalInfoChange()
-{
- QVariant data = mShowRegionalInfoItem->contentWidgetData(QString("text"));
- QString value = data.toString();
- if(!value.compare(hbTrId("txt_calendar_button_no"))) {
- // User has made it OFF
- mShowRegionalInfo = 0;
- mSettingsManager->writeItemValue(*mShowRegionalInfoKey, 0);
- } else if(!value.compare(hbTrId("txt_calendar_button_yes"))) {
- // User has made it ON.
- mShowRegionalInfo = 1;
- mSettingsManager->writeItemValue(*mShowRegionalInfoKey, 1);
- }
-}
-
+/*!
+ Populates the settings model
+ */
void CalenSettings::populateSettingList()
{
- // Read the values from cenrep
- // Read the initial values from the cenrep
- QVariant value = mSettingsManager->readItemValue(*mAlarmSnoozeCenrepKey);
- mAlarmSnoozeTime = value.toUInt();
-
- value = mSettingsManager->readItemValue(*mWeekNumberCenrepKey);
- mShowWeekNumber = value.toUInt();
-
- // set the value to the form
- int choiceIndex = 0;
- switch(mAlarmSnoozeTime)
- {
- case 5:
- choiceIndex = 0;
- break;
- case 10:
- choiceIndex = 1;
- break;
- case 15:
- choiceIndex = 2;
- break;
- case 30:
- choiceIndex = 3;
- break;
- default:
- choiceIndex = 0;
- break;
- }
- mAlarmSnoozeTimeItem->setContentWidgetData(QString("currentIndex"),
- choiceIndex);
- if(mShowWeekNumber)
- {
- mShowWeekNumberItem->setContentWidgetData(QString("text"),
- QString(hbTrId("txt_calendar_button_yes")));
- mShowWeekNumberItem->setContentWidgetData(QString("additionalText"),
- QString(hbTrId("txt_calendar_button_no")));
- }
- else
- {
- mShowWeekNumberItem->setContentWidgetData(QString("text"),
- QString(hbTrId("txt_calendar_button_no")));
- mShowWeekNumberItem->setContentWidgetData(QString("additionalText"),
- QString(hbTrId("txt_calendar_button_yes")));
- }
-
- value = mSettingsManager->readItemValue(*mShowRegionalInfoKey);
- mShowRegionalInfo = value.toUInt();
-
- if (mShowRegionalInfo) {
- mShowRegionalInfoItem->setContentWidgetData(QString("text"),
- QString(hbTrId("txt_calendar_button_yes")));
- mShowRegionalInfoItem->setContentWidgetData(QString("additionalText"),
- QString(hbTrId("txt_calendar_button_no")));
- } else {
- mShowRegionalInfoItem->setContentWidgetData(QString("text"),
- QString(hbTrId("txt_calendar_button_no")));
- mShowRegionalInfoItem->setContentWidgetData(QString("additionalText"),
- QString(hbTrId("txt_calendar_button_yes")));
- }
-
- mSettingsForm->setModel(mSettingsModel);
+ // Read the values from cenrep
+ // Read the initial values from the cenrep
+ QVariant value = mSettingsManager->readItemValue(*mAlarmSnoozeCenrepKey);
+ uint alarmSnoozeTime = value.toUInt();
+
+ // Get the value from the hash and set the value to the form
+ int choiceIndex = mAlarmSnoozeTimeHash.key(alarmSnoozeTime);
+ mAlarmSnoozeTimeItem->setContentWidgetData(QString("currentIndex"),
+ choiceIndex);
+ // Get start of week from the locale.
+ HbExtendedLocale locale = HbExtendedLocale::system();
+ mStartOfWeek = locale.startOfWeek();
+
+ mShowWeekStartOnInfoItem->setContentWidgetData("currentIndex", mStartOfWeek);
+ //update the show week number option
+ updateShowWeekItem();
+ // Check the the regional info plugin is loaded now or not
+ if (isPluginEnabled()) {
+ // If the plugin was already there just populate the item
+ // else add the regional info item and then populate
+ if (mRegionalpluginActive) {
+ populateRegionalInfo();
+ }else {
+ addRegionalInfoItem();
+ populateRegionalInfo();
+ }
+ }else {
+ // If the plugin is removed now and if it was loaded before
+ // remove the item
+ if (mRegionalpluginActive) {
+ removeRegionalInfoItem();
+ }
+ }
+ mSettingsForm->setModel(mSettingsModel);
+}
+
+/*!
+ Populates the regional info item
+ */
+void CalenSettings::populateRegionalInfo()
+{
+ QVariant value = mSettingsManager->readItemValue(*mShowRegionalInfoKey);
+ uint showRegionalInfo = value.toUInt();
+
+ if (showRegionalInfo) {
+ mShowRegionalInfoItem->setContentWidgetData(
+ QString("text"), QString(hbTrId("txt_calendar_button_yes")));
+ mShowRegionalInfoItem->setContentWidgetData(
+ QString("additionalText"), QString(
+ hbTrId("txt_calendar_button_no")));
+ } else {
+ mShowRegionalInfoItem->setContentWidgetData(
+ QString("text"), QString(hbTrId("txt_calendar_button_no")));
+ mShowRegionalInfoItem->setContentWidgetData(
+ QString("additionalText"), QString(
+ hbTrId("txt_calendar_button_yes")));
+ }
+}
+
+/*!
+ Adds the week number item in the model
+ */
+void CalenSettings::addWeekNumberItem()
+{
+ mWeekNumberItemAdded = true;
+ // Append Show Week Number settings item
+ mShowWeekNumberItem = new HbDataFormModelItem();
+ mShowWeekNumberItem->setType(HbDataFormModelItem::ToggleValueItem);
+
+ QStringList values;
+ values << hbTrId("txt_calendar_button_no")
+ << hbTrId("txt_calendar_button_yes");
+ mShowWeekNumberItem->setData(HbDataFormModelItem::LabelRole,
+ QString(hbTrId("txt_calendar_setlabel_show_week_numbers")));
+
+ mSettingsModel->appendDataFormItem(mShowWeekNumberItem);
+ mSettingsForm->addConnection(mShowWeekNumberItem, SIGNAL(clicked()),
+ this, SLOT(handleWeekNumberChange()));
+}
+
+/*!
+ Returns true if the regional plugin is loaded
+ */
+bool CalenSettings::isPluginEnabled()
+{
+ QString *pluginInfo = mServices.InfobarTextL();
+ if (!pluginInfo) {
+ return false;
+ } else {
+ return true;
+ }
+}
+
+/*!
+ Sets the start day of the week to the locale
+ Is called when user selects week day
+ */
+void CalenSettings::setStartDayOfWeek(const int index)
+{
+ TLocale locale;
+ TDay day = (TDay)index;
+ //set the start day of the week to locale
+ locale.SetStartOfWeek(day);
+ locale.Set();
+ updateShowWeekItem();
+}
+
+/*!
+ Updates the show week number option
+ */
+void CalenSettings::updateShowWeekItem()
+{
+ // Get start of week from the locale.
+ HbExtendedLocale locale = HbExtendedLocale::system();
+ mStartOfWeek = locale.startOfWeek();
+ mShowWeekStartOnInfoItem->setContentWidgetData("currentIndex", mStartOfWeek);
+
+ // Read the value form cenrep
+ QVariant value = mSettingsManager->readItemValue(*mWeekNumberCenrepKey);
+ uint showWeekNumber = value.toUInt();
+
+ //if start day is not Monday
+ //set the show week number option dimmed ,
+ //else set to proper status
+ if(mStartOfWeek != HbExtendedLocale::Monday) {
+ mShowWeekNumberItem->setContentWidgetData(QString("text"),
+ QString(hbTrId("txt_calendar_button_no")));
+ mShowWeekNumberItem->setContentWidgetData(QString("additionalText"),
+ QString(hbTrId("txt_calendar_button_yes")));
+ mShowWeekNumberItem->setEnabled(false);
+ } else {
+ if(showWeekNumber) {
+ mShowWeekNumberItem->setContentWidgetData(QString("text"),
+ QString(hbTrId("txt_calendar_button_yes")));
+ mShowWeekNumberItem->setContentWidgetData(QString("additionalText"),
+ QString(hbTrId("txt_calendar_button_no")));
+ } else {
+ mShowWeekNumberItem->setContentWidgetData(QString("text"),
+ QString(hbTrId("txt_calendar_button_no")));
+ mShowWeekNumberItem->setContentWidgetData(QString("additionalText"),
+ QString(hbTrId("txt_calendar_button_yes")));
+ }
+ mShowWeekNumberItem->setEnabled(true);
+ }
}
// End of file