calendarui/settings/src/calensettings.cpp
changeset 49 5de72ea7a065
parent 32 ea672fcb0ea0
child 50 579cc610882e
equal deleted inserted replaced
37:360d55486d7f 49:5de72ea7a065
    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)
   159         }
   185         }
   160         break;
   186         break;
   161     default:
   187     default:
   162         break;
   188         break;
   163     }
   189     }
   164 QVariant value = mSettingsManager->readItemValue(*mAlarmSnoozeCenrepKey);
   190 	QVariant value = mSettingsManager->readItemValue(*mAlarmSnoozeCenrepKey);
   165     uint time = value.toUInt();
   191     uint time = value.toUInt();
   166 }
   192 }
   167 
   193 
   168 void CalenSettings::handleWeekNumberChange()
   194 void CalenSettings::handleWeekNumberChange()
   169 {
   195 {
   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