diff -r 360d55486d7f -r 5de72ea7a065 calendarui/settings/src/calensettings.cpp --- 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 #include #include +#include #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