--- a/calendarui/settings/src/calensettings.cpp Fri Jun 11 13:37:54 2010 +0300
+++ b/calendarui/settings/src/calensettings.cpp Wed Jun 23 18:11:28 2010 +0300
@@ -23,15 +23,21 @@
#include <hbabstractbutton.h>
#include <xqsettingsmanager.h>
#include <xqsettingskey.h>
+#include <HbExtendedLocale.h>
#include "calensettings.h"
+#include "calenservices.h"
#include "calendarprivatecrkeys.h"
-CalenSettings::CalenSettings(HbDataForm *form, QObject *parent)
+CalenSettings::CalenSettings(MCalenServices& services, HbDataForm *form, QObject *parent)
:QObject(parent),
+ mServices(services),
mSettingsForm(form),
mSettingsModel(0),
- mShowRegionalInfoItem(NULL)
+ mShowRegionalInfoItem(NULL),
+ mShowWeekStartOnInfoItem(NULL),
+ mWeekNumberItemAdded(false),
+ mRegionalpluginActive(false)
{
mSettingsManager = new XQSettingsManager(this);
mAlarmSnoozeCenrepKey = new XQSettingsKey(
@@ -94,44 +100,64 @@
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")));
-
-
- // 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()));
+ // Create the weekday list based on start of week.
+ QStringList weekdaysList;
+ weekdaysList
+ << QString("Monday")//hbTrId("txt_clk_setlabel_val_monday")//@TODO set to proper localization strings once available
+ << QString("Tuesday")//hbTrId("txt_clk_setlabel_val_tuesday")
+ << QString("Wednesday")//hbTrId("txt_clk_setlabel_val_wednesday")
+ << QString("Thursday")//hbTrId("txt_clk_setlabel_val_thursday")
+ << QString("Friday")//hbTrId("txt_clk_setlabel_val_friday")
+ << QString("Saturday")//hbTrId("txt_clk_setlabel_val_saturday")
+ << QString("Sunday");//hbTrId("txt_clk_setlabel_val_sunday");
+ // Start of week item.
+ mShowWeekStartOnInfoItem = mSettingsModel->appendDataFormItem(HbDataFormModelItem::ComboBoxItem,QString("Week Starts On"));
+ // hbTrId("txt_clock_setlabel_week_starts_on"));//@TODO set to proper localization strings once available
+ // 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 show week number item in the model
+
+ addWeekNumberItem();
mSettingsModel->appendDataFormItem(mShowWeekNumberItem);
-
- // TODO: Append the regional information setting only if any regional
- // plugins have been loaded by the customisation manager
- mShowRegionalInfoItem = new HbDataFormModelItem();
- mShowRegionalInfoItem->setType(HbDataFormModelItem::ToggleValueItem);
- mShowRegionalInfoItem->setData(HbDataFormModelItem::LabelRole,
- QString("Show regional info"));
+
+ if(isPluginEnabled()) {
+ addRegionalInfoItem();
+ }
+}
+
+void CalenSettings::addRegionalInfoItem()
+{
+ mRegionalpluginActive = true;
+ // Regional info is the second item in the model
+ int index = mSettingsModel->indexFromItem(mAlarmSnoozeTimeItem).row() + 1;
+
+ mShowRegionalInfoItem = mSettingsModel->insertDataFormItem(
+ index ,
+ HbDataFormModelItem::ToggleValueItem,
+ QString(hbTrId("txt_calendar_setlabel_show_lunar_calendar")),
+ mSettingsModel->invisibleRootItem());
// For HbPushButton type properties -- to be used for toggle value item
- mShowRegionalInfoItem->setContentWidgetData(
- QString("text"), QString(hbTrId("txt_calendar_button_no")));
- mShowRegionalInfoItem->setContentWidgetData(
- QString("additionalText"), QString(
- hbTrId("txt_calendar_button_yes")));
+ mShowRegionalInfoItem->setContentWidgetData(QString("text"),
+ QString(hbTrId("txt_calendar_button_no")));
+ mShowRegionalInfoItem->setContentWidgetData(QString("additionalText"),
+ QString(hbTrId("txt_calendar_button_yes")));
mSettingsForm->addConnection(mShowRegionalInfoItem, SIGNAL(clicked()),
- this, SLOT(handleRegionalInfoChange()));
- mSettingsModel->appendDataFormItem(mShowRegionalInfoItem);
+ this, SLOT(handleRegionalInfoChange()));
+
+}
+
+void CalenSettings::removeRegionalInfoItem()
+{
+ mSettingsForm->removeConnection(mShowRegionalInfoItem, SIGNAL(clicked()),
+ this, SLOT(handleRegionalInfoChange()));
+ mSettingsModel->removeItem(mShowRegionalInfoItem);
+ mRegionalpluginActive = false;
}
void CalenSettings::handleAlarmSnoozeTimeChange(int index)
@@ -161,7 +187,7 @@
default:
break;
}
-QVariant value = mSettingsManager->readItemValue(*mAlarmSnoozeCenrepKey);
+ QVariant value = mSettingsManager->readItemValue(*mAlarmSnoozeCenrepKey);
uint time = value.toUInt();
}
@@ -230,40 +256,156 @@
}
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);
+}
+
+void CalenSettings::populateRegionalInfo()
+{
+ QVariant 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")));
+ }
+
+}
+
+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")));
+
+
+ // For HbPushButton type properties -- to be used for toggle value item
if(mShowWeekNumber)
{
- mShowWeekNumberItem->setContentWidgetData(
- QString("text"), QString(hbTrId("txt_calendar_button_yes")));
- mShowWeekNumberItem->setContentWidgetData(
- QString("additionalText"), QString(
- hbTrId("txt_calendar_button_no")));
+ 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->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")));
+
+ mSettingsForm->addConnection(mShowWeekNumberItem, SIGNAL(clicked()),
+ this, SLOT(handleWeekNumberChange()));
+}
+
+/*!
+ Returns true if plugin is loaded
+ */
+bool CalenSettings::isPluginEnabled()
+{
+ QString *pluginInfo = mServices.InfobarTextL();
+ if (!pluginInfo) {
+ return false;
} else {
- mShowRegionalInfoItem->setContentWidgetData(
- QString("text"), QString(hbTrId("txt_calendar_button_no")));
- mShowRegionalInfoItem->setContentWidgetData(
- QString("additionalText"), QString(
- hbTrId("txt_calendar_button_yes")));
+ return true;
+ }
+}
+// ---------------------------------------------------------
+// CalenSettings::setStartDayOfWeek
+// sets the start day of the week to the locale
+// calls when user select 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();
}
-
- mSettingsForm->setModel(mSettingsModel);
-}
+
+// ---------------------------------------------------------
+// CalenSettings::updateShowWeekItem
+// update 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);
+ //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(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")));
+ }
+ mShowWeekNumberItem->setEnabled(true);
+ }
+ }
// End of file