calendarui/caleneditor/src/caleneditorreminderfield.cpp
author hgs
Mon, 28 Jun 2010 15:22:02 +0530
changeset 45 b6db4fd4947b
parent 23 fd30d51f876b
child 51 0b38fc5b94c6
permissions -rw-r--r--
201025
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
23
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     1
/*
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     2
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     3
* All rights reserved.
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     4
* This component and the accompanying materials are made available
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     6
* which accompanies this distribution, and is available
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     8
*
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     9
* Initial Contributors:
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    11
*
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    12
* Contributors:
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    13
*
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    14
* Description:
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    15
* Definition of CalenEditorReminderField class.
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    16
*
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    17
*/
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    18
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    19
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    20
// System Includes
45
hgs
parents: 23
diff changeset
    21
#include <QDate>
hgs
parents: 23
diff changeset
    22
23
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    23
#include <hbdataformmodelitem.h>
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    24
#include <hbdataformmodel.h>
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    25
#include <hbdataform.h>
45
hgs
parents: 23
diff changeset
    26
#include <hbdatetimepicker.h>
hgs
parents: 23
diff changeset
    27
#include <hbextendedlocale.h>
hgs
parents: 23
diff changeset
    28
#include <hbi18ndef.h>
hgs
parents: 23
diff changeset
    29
#include <hbdialog.h>
hgs
parents: 23
diff changeset
    30
#include <hblabel.h>
hgs
parents: 23
diff changeset
    31
#include <hbaction.h>
23
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    32
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    33
// User Includes
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    34
#include "caleneditorreminderfield.h"
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    35
45
hgs
parents: 23
diff changeset
    36
#define numberOfMinutesInADay 1440
23
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    37
/*!
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    38
	\class CalenEditorReminderField
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    39
 */
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    40
/*!
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    41
	Constructor.
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    42
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    43
	\param parent QObject pointer
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    44
 */
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    45
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    46
CalenEditorReminderField::CalenEditorReminderField(
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    47
										CalenEditorPrivate* calenEditor,
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    48
										HbDataForm* form, 
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    49
										HbDataFormModel* model,
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    50
										QObject *parent)
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    51
	:QObject(parent),
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    52
	 mCalenEditor(calenEditor), 
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    53
	 mEditorForm(form), 
45
hgs
parents: 23
diff changeset
    54
	 mCalenEditorModel(model),
hgs
parents: 23
diff changeset
    55
	 mCustomReminderTimeItem(NULL),
hgs
parents: 23
diff changeset
    56
	 mReminderTimeAdded(false)
23
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    57
{
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    58
	mReminderItem = new HbDataFormModelItem();
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    59
	mReminderItem->setType(HbDataFormModelItem::ComboBoxItem);
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    60
	mReminderItem->setData(HbDataFormModelItem::LabelRole,
45
hgs
parents: 23
diff changeset
    61
						   hbTrId("txt_calendar_setlabel_reminder"));	
23
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    62
	// Add it to the model
45
hgs
parents: 23
diff changeset
    63
	mCalenEditorModel->appendDataFormItem(mReminderItem,
23
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    64
										mCalenEditorModel->invisibleRootItem());
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    65
}
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    66
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    67
/*!
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    68
	 Destructor
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    69
 */
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    70
CalenEditorReminderField::~CalenEditorReminderField()
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    71
{
45
hgs
parents: 23
diff changeset
    72
	if(mReminderHash.count()) {
hgs
parents: 23
diff changeset
    73
		mReminderHash.clear();
hgs
parents: 23
diff changeset
    74
	}
hgs
parents: 23
diff changeset
    75
}
hgs
parents: 23
diff changeset
    76
hgs
parents: 23
diff changeset
    77
/*!
hgs
parents: 23
diff changeset
    78
	 Set the reminder choices.
hgs
parents: 23
diff changeset
    79
 */
hgs
parents: 23
diff changeset
    80
void CalenEditorReminderField::setReminderChoices()
hgs
parents: 23
diff changeset
    81
{
hgs
parents: 23
diff changeset
    82
	// Create the reminder choices
hgs
parents: 23
diff changeset
    83
	QStringList reminderChoices;
hgs
parents: 23
diff changeset
    84
	reminderChoices << hbTrId("txt_calendar_setlabel_reminder_val_off")
hgs
parents: 23
diff changeset
    85
				<< hbTrId("txt_calendar_setlabel_reminder_val_at_the_start")
hgs
parents: 23
diff changeset
    86
				<< hbTrId("txt_calendar_setlabel_reminder_val_15_minutes_befo")
hgs
parents: 23
diff changeset
    87
				<< hbTrId("txt_calendar_setlabel_reminder_val_30_minutes_befo")
hgs
parents: 23
diff changeset
    88
				<< hbTrId("txt_calendar_setlabel_reminder_val_1_hour_before");
hgs
parents: 23
diff changeset
    89
hgs
parents: 23
diff changeset
    90
	mReminderItem->setContentWidgetData(QString("items"), reminderChoices);
hgs
parents: 23
diff changeset
    91
hgs
parents: 23
diff changeset
    92
	// Build the hash map for the reminder.
hgs
parents: 23
diff changeset
    93
	mReminderHash[0] = -1; // OFF.
hgs
parents: 23
diff changeset
    94
	mReminderHash[1] = 0;
hgs
parents: 23
diff changeset
    95
	mReminderHash[2] = 15;
hgs
parents: 23
diff changeset
    96
	mReminderHash[3] = 30;
hgs
parents: 23
diff changeset
    97
	mReminderHash[4] = 60;
hgs
parents: 23
diff changeset
    98
	mReminderItem->setEnabled(true);
23
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    99
}
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   100
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   101
/*!
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   102
	 Adds reminder item to the model
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   103
 */
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   104
void CalenEditorReminderField::addItemToModel()
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   105
{	
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   106
	// Add reminder to the model
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   107
	mCalenEditorModel->appendDataFormItem( mReminderItem,
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   108
				   mCalenEditorModel->invisibleRootItem());
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   109
}
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   110
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   111
/*!
45
hgs
parents: 23
diff changeset
   112
	 Removes reminder item from the model
23
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   113
 */
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   114
void CalenEditorReminderField::removeItemFromModel()
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   115
{
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   116
	mCalenEditorModel->removeItem(modelIndex());
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   117
}
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   118
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   119
/*!
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   120
	 Populates reminder item with available choices to the user
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   121
	 \param newEntry bool value to indicate if its a new entry
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   122
 */
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   123
void CalenEditorReminderField::populateReminderItem(bool newEntry)
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   124
{
45
hgs
parents: 23
diff changeset
   125
	AgendaAlarm reminder;
hgs
parents: 23
diff changeset
   126
	bool pastEvent =  false;
hgs
parents: 23
diff changeset
   127
	
hgs
parents: 23
diff changeset
   128
	// Set reference date to start date or repeat until date accordingly to 
hgs
parents: 23
diff changeset
   129
	// decide whether its a past event or not.
hgs
parents: 23
diff changeset
   130
	QDate referenceDate;
hgs
parents: 23
diff changeset
   131
	if (!mCalenEditor->editedEntry()->isRepeating() || 
hgs
parents: 23
diff changeset
   132
					(mCalenEditor->isEditRangeThisOnly())) {
hgs
parents: 23
diff changeset
   133
		referenceDate = mCalenEditor->editedEntry()->startTime().date();
hgs
parents: 23
diff changeset
   134
	} else {
hgs
parents: 23
diff changeset
   135
		referenceDate = mCalenEditor->editedEntry()->repeatRule().until().date();
hgs
parents: 23
diff changeset
   136
	}
hgs
parents: 23
diff changeset
   137
	
hgs
parents: 23
diff changeset
   138
	if ((referenceDate < QDate::currentDate()) || 
hgs
parents: 23
diff changeset
   139
					(referenceDate == QDate::currentDate()
hgs
parents: 23
diff changeset
   140
					&& (mCalenEditor->editedEntry()->startTime().time() < 
hgs
parents: 23
diff changeset
   141
					QTime::currentTime()))) {
hgs
parents: 23
diff changeset
   142
		pastEvent = true;
hgs
parents: 23
diff changeset
   143
	}
hgs
parents: 23
diff changeset
   144
	
hgs
parents: 23
diff changeset
   145
	if (mCalenEditor->isAllDayEvent()) {
hgs
parents: 23
diff changeset
   146
		updateReminderChoicesForAllDay(referenceDate);
hgs
parents: 23
diff changeset
   147
	} else {
hgs
parents: 23
diff changeset
   148
		setReminderChoices();
hgs
parents: 23
diff changeset
   149
	}
23
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   150
	// Set the default reminder value to 15 minutes 
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   151
	if (newEntry) {
45
hgs
parents: 23
diff changeset
   152
		if (!pastEvent) {
hgs
parents: 23
diff changeset
   153
			mReminderItem->setContentWidgetData("currentIndex", 2);
hgs
parents: 23
diff changeset
   154
			// Save the reminder alarm for the entry
hgs
parents: 23
diff changeset
   155
			reminder.setTimeOffset(mReminderHash.value(2));
hgs
parents: 23
diff changeset
   156
			reminder.setAlarmSoundName(QString(" "));
hgs
parents: 23
diff changeset
   157
			// Set the reminder to the entry as well as original entry.
hgs
parents: 23
diff changeset
   158
			mCalenEditor->editedEntry()->setAlarm(reminder);
hgs
parents: 23
diff changeset
   159
			mCalenEditor->originalEntry()->setAlarm(reminder);
hgs
parents: 23
diff changeset
   160
		} else {
hgs
parents: 23
diff changeset
   161
			mReminderItem->setContentWidgetData("currentIndex", 0);
hgs
parents: 23
diff changeset
   162
			mReminderItem->setEnabled(false);
hgs
parents: 23
diff changeset
   163
		}
23
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   164
	} else {
45
hgs
parents: 23
diff changeset
   165
		// If the alarm is not null,
hgs
parents: 23
diff changeset
   166
		// Check if all day event or not and then set the choices accordingly.
23
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   167
		if (mCalenEditor->editedEntry()->alarm().isNull()) {
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   168
			// Alarm is set off
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   169
			mReminderItem->setContentWidgetData("currentIndex", 0);
45
hgs
parents: 23
diff changeset
   170
			if(mReminderTimeAdded) {
hgs
parents: 23
diff changeset
   171
				removeReminderTimeField();
hgs
parents: 23
diff changeset
   172
			}
hgs
parents: 23
diff changeset
   173
		} else if (mCalenEditor->editedEntry()->type()
hgs
parents: 23
diff changeset
   174
		        != AgendaEntry::TypeEvent) {
23
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   175
			// Get the reminder offset value.
45
hgs
parents: 23
diff changeset
   176
			int reminderOffset =
hgs
parents: 23
diff changeset
   177
			        mCalenEditor->editedEntry()->alarm().timeOffset();
23
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   178
			// Get the index value for the reminder combo box from the hash 
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   179
			// table.
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   180
			int index = mReminderHash.key(reminderOffset);
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   181
			mReminderItem->setContentWidgetData("currentIndex", index);
45
hgs
parents: 23
diff changeset
   182
		} else {
hgs
parents: 23
diff changeset
   183
			// Insert reminder time field and display entry's reminder time.
hgs
parents: 23
diff changeset
   184
			// If past then disable the field.
hgs
parents: 23
diff changeset
   185
			if (!mReminderTimeAdded) {
hgs
parents: 23
diff changeset
   186
				insertReminderTimeField();
hgs
parents: 23
diff changeset
   187
				if (pastEvent) {
hgs
parents: 23
diff changeset
   188
					mCustomReminderTimeItem->setEnabled(false);
hgs
parents: 23
diff changeset
   189
				}
hgs
parents: 23
diff changeset
   190
			}
hgs
parents: 23
diff changeset
   191
			QStringList reminderChoicesForAllDay;
hgs
parents: 23
diff changeset
   192
			reminderChoicesForAllDay << hbTrId("txt_calendar_setlabel_reminder_val_off") 
hgs
parents: 23
diff changeset
   193
					<< hbTrId("txt_calendar_setlabel_reminder_val_on_event_day")
hgs
parents: 23
diff changeset
   194
					<< hbTrId("txt_calendar_setlabel_reminder_val_1_day_before")
hgs
parents: 23
diff changeset
   195
					<< hbTrId("txt_calendar_setlabel_reminder_val_2_days_before");
hgs
parents: 23
diff changeset
   196
			mReminderItem->setContentWidgetData(QString("items"),
hgs
parents: 23
diff changeset
   197
			                                    reminderChoicesForAllDay);
hgs
parents: 23
diff changeset
   198
			QTime referenceTime(0, 0, 0);
hgs
parents: 23
diff changeset
   199
			// Set the appropriate reminder depending on the value of time offset.
hgs
parents: 23
diff changeset
   200
			reminder = mCalenEditor->editedEntry()->alarm();
hgs
parents: 23
diff changeset
   201
			int offsetInMins = reminder.timeOffset();
hgs
parents: 23
diff changeset
   202
			if (offsetInMins < 0 || offsetInMins == 0) {
hgs
parents: 23
diff changeset
   203
				mReminderItem->setContentWidgetData("currentIndex", 1);
hgs
parents: 23
diff changeset
   204
				mReminderTimeForAllDay = referenceTime.addSecs(-(offsetInMins
hgs
parents: 23
diff changeset
   205
						* 60));
hgs
parents: 23
diff changeset
   206
			} else if (offsetInMins < numberOfMinutesInADay) {
hgs
parents: 23
diff changeset
   207
				mReminderItem->setContentWidgetData("currentIndex", 2);
hgs
parents: 23
diff changeset
   208
				mReminderTimeForAllDay = referenceTime.addSecs(-(offsetInMins
hgs
parents: 23
diff changeset
   209
						* 60));
hgs
parents: 23
diff changeset
   210
			} else {
hgs
parents: 23
diff changeset
   211
				mReminderItem->setContentWidgetData("currentIndex", 3);
hgs
parents: 23
diff changeset
   212
				offsetInMins %= (24 * 60);
hgs
parents: 23
diff changeset
   213
				mReminderTimeForAllDay = referenceTime.addSecs(-(offsetInMins
hgs
parents: 23
diff changeset
   214
						* 60));
hgs
parents: 23
diff changeset
   215
			}
hgs
parents: 23
diff changeset
   216
			setDisplayTime();
hgs
parents: 23
diff changeset
   217
		}
hgs
parents: 23
diff changeset
   218
		if (pastEvent) {
hgs
parents: 23
diff changeset
   219
			mReminderItem->setEnabled(false);
23
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   220
		}
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   221
	}
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   222
	mEditorForm->addConnection(mReminderItem,
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   223
							SIGNAL(currentIndexChanged(int)), this,
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   224
							SLOT(handleReminderIndexChanged(int)));
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   225
}
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   226
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   227
/*!
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   228
	Triggerd from tapping on reminder item.
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   229
	Handles the reminder time change and updates the same in the event.
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   230
	\param index The new index chosen in the reminder list.
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   231
 */
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   232
void CalenEditorReminderField::handleReminderIndexChanged(int index)
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   233
{
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   234
	AgendaAlarm reminder;
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   235
	if (!mCalenEditor->editedEntry()->alarm().isNull()) {
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   236
		reminder = mCalenEditor->editedEntry()->alarm();
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   237
	}
45
hgs
parents: 23
diff changeset
   238
	// Check whether all day event or not and store appropriately.
hgs
parents: 23
diff changeset
   239
	if (!mCalenEditor->isAllDayEvent()) {
hgs
parents: 23
diff changeset
   240
		// If value for the index in hash table is -1 i.e reminder is "OFF",
hgs
parents: 23
diff changeset
   241
		// then set the default constructed reminder to
hgs
parents: 23
diff changeset
   242
		// the entry which is Null.
hgs
parents: 23
diff changeset
   243
		if (mReminderHash.value(index) < 0) {
hgs
parents: 23
diff changeset
   244
			// Construct the default alarm which is NULL
hgs
parents: 23
diff changeset
   245
			reminder = AgendaAlarm();
hgs
parents: 23
diff changeset
   246
		} else {
hgs
parents: 23
diff changeset
   247
			// If not zero then set the reminder offset
hgs
parents: 23
diff changeset
   248
			// value to the entry.
hgs
parents: 23
diff changeset
   249
			reminder.setTimeOffset(mReminderHash.value(index));
hgs
parents: 23
diff changeset
   250
			reminder.setAlarmSoundName(QString(" "));
hgs
parents: 23
diff changeset
   251
		}
23
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   252
	} else {
45
hgs
parents: 23
diff changeset
   253
		QDateTime reminderDateTimeForAllDay; 
hgs
parents: 23
diff changeset
   254
		QDateTime
hgs
parents: 23
diff changeset
   255
		        startDateTimeForAllDay(
hgs
parents: 23
diff changeset
   256
		                               mCalenEditor->editedEntry()->startTime().date(),
hgs
parents: 23
diff changeset
   257
		                               QTime(0, 0, 0));
hgs
parents: 23
diff changeset
   258
		if (mReminderItem->contentWidgetData("currentIndex") == 0) {
hgs
parents: 23
diff changeset
   259
			reminder = AgendaAlarm();
hgs
parents: 23
diff changeset
   260
			mCustomReminderTimeItem->setEnabled(false);
hgs
parents: 23
diff changeset
   261
		} else {
hgs
parents: 23
diff changeset
   262
			int offset = 0;
hgs
parents: 23
diff changeset
   263
			if (mReminderItem->contentWidgetData("currentIndex") == 2) {
hgs
parents: 23
diff changeset
   264
				offset = 1;
hgs
parents: 23
diff changeset
   265
			} else if (mReminderItem->contentWidgetData("currentIndex") == 3) {
hgs
parents: 23
diff changeset
   266
				offset = 2;
hgs
parents: 23
diff changeset
   267
			}
hgs
parents: 23
diff changeset
   268
			if(!mReminderTimeAdded) {
hgs
parents: 23
diff changeset
   269
				insertReminderTimeField()
hgs
parents: 23
diff changeset
   270
;			}
hgs
parents: 23
diff changeset
   271
			// If on same day as that of the event then check if time has been 
hgs
parents: 23
diff changeset
   272
			// changed , if changed retain that else set default time.
hgs
parents: 23
diff changeset
   273
			if (offset == 0) {
hgs
parents: 23
diff changeset
   274
				if(mReminderTimeForAllDay == QTime(18, 0, 0, 0)) {
hgs
parents: 23
diff changeset
   275
					mReminderTimeForAllDay.setHMS(8, 0, 0);
hgs
parents: 23
diff changeset
   276
					setDisplayTime();
hgs
parents: 23
diff changeset
   277
				}
hgs
parents: 23
diff changeset
   278
			}
hgs
parents: 23
diff changeset
   279
			reminderDateTimeForAllDay.setDate(
hgs
parents: 23
diff changeset
   280
					mCalenEditor->editedEntry()->startTime().date().addDays(
hgs
parents: 23
diff changeset
   281
																	-offset));
hgs
parents: 23
diff changeset
   282
			reminderDateTimeForAllDay.setTime(mReminderTimeForAllDay);
hgs
parents: 23
diff changeset
   283
			int seconds =
hgs
parents: 23
diff changeset
   284
					reminderDateTimeForAllDay.secsTo(startDateTimeForAllDay);
hgs
parents: 23
diff changeset
   285
			int timeOffest = seconds / 60;
hgs
parents: 23
diff changeset
   286
			mCustomReminderTimeItem->setEnabled(true);
hgs
parents: 23
diff changeset
   287
			reminder.setTimeOffset(timeOffest);
hgs
parents: 23
diff changeset
   288
			reminder.setAlarmSoundName(QString(" "));
hgs
parents: 23
diff changeset
   289
		}
23
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   290
	}
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   291
	// Set the reminder to the entry.
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   292
	mCalenEditor->editedEntry()->setAlarm(reminder);
45
hgs
parents: 23
diff changeset
   293
	if(!mCalenEditor->isNewEntry()) {
hgs
parents: 23
diff changeset
   294
		mCalenEditor->addDiscardAction();
hgs
parents: 23
diff changeset
   295
	}
23
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   296
}
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   297
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   298
/*!
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   299
	 Returns the mode index of the reminder item
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   300
	 \return Mode index of the reminder item
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   301
 */
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   302
QModelIndex CalenEditorReminderField::modelIndex()
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   303
{
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   304
	return mCalenEditorModel->indexFromItem(mReminderItem);
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   305
}
45
hgs
parents: 23
diff changeset
   306
hgs
parents: 23
diff changeset
   307
/*!
hgs
parents: 23
diff changeset
   308
	 Set reminder off.
hgs
parents: 23
diff changeset
   309
 */
hgs
parents: 23
diff changeset
   310
void CalenEditorReminderField::setReminderOff()
hgs
parents: 23
diff changeset
   311
{
hgs
parents: 23
diff changeset
   312
	// Create the remindar choices
hgs
parents: 23
diff changeset
   313
	QStringList reminderChoices;
hgs
parents: 23
diff changeset
   314
	reminderChoices << hbTrId("txt_calendar_setlabel_reminder_val_off");
hgs
parents: 23
diff changeset
   315
	mReminderItem->setContentWidgetData(QString("items"), reminderChoices);
hgs
parents: 23
diff changeset
   316
	mReminderItem->setEnabled(false); 
hgs
parents: 23
diff changeset
   317
}
hgs
parents: 23
diff changeset
   318
hgs
parents: 23
diff changeset
   319
/*!
hgs
parents: 23
diff changeset
   320
	 Set the default alarm for a new all day event.
hgs
parents: 23
diff changeset
   321
 */
hgs
parents: 23
diff changeset
   322
void CalenEditorReminderField::setDefaultAlarmForAllDay()
hgs
parents: 23
diff changeset
   323
{	
hgs
parents: 23
diff changeset
   324
	// Set default alarm if its a new entry.
hgs
parents: 23
diff changeset
   325
	if (mCalenEditor->isNewEntry()) {
hgs
parents: 23
diff changeset
   326
		AgendaAlarm reminder;
hgs
parents: 23
diff changeset
   327
		QDate defaultDate
hgs
parents: 23
diff changeset
   328
				(mCalenEditor->editedEntry()->startTime().date().addDays(-1));
hgs
parents: 23
diff changeset
   329
		// Set default time.
hgs
parents: 23
diff changeset
   330
		mReminderTimeForAllDay.setHMS(18, 0, 0, 0);
hgs
parents: 23
diff changeset
   331
		setDisplayTime();
hgs
parents: 23
diff changeset
   332
		QDateTime startDateTimeForAllDay(
hgs
parents: 23
diff changeset
   333
				mCalenEditor->editedEntry()->startTime().date(), QTime(0, 0));
hgs
parents: 23
diff changeset
   334
		QDateTime defaultReminderDateTimeForAllDay
hgs
parents: 23
diff changeset
   335
				(defaultDate, mReminderTimeForAllDay);
hgs
parents: 23
diff changeset
   336
		int offsetInSecs = 
hgs
parents: 23
diff changeset
   337
				defaultReminderDateTimeForAllDay.secsTo(startDateTimeForAllDay);
hgs
parents: 23
diff changeset
   338
		int offsetInMins = offsetInSecs/60;
hgs
parents: 23
diff changeset
   339
		reminder.setTimeOffset(offsetInMins);
hgs
parents: 23
diff changeset
   340
		reminder.setAlarmSoundName(QString(" "));
hgs
parents: 23
diff changeset
   341
		// Set the reminder to the entry as well as original entry.
hgs
parents: 23
diff changeset
   342
		mCalenEditor->editedEntry()->setAlarm(reminder);
hgs
parents: 23
diff changeset
   343
		mCalenEditor->originalEntry()->setAlarm(reminder);
hgs
parents: 23
diff changeset
   344
	}
hgs
parents: 23
diff changeset
   345
}
hgs
parents: 23
diff changeset
   346
hgs
parents: 23
diff changeset
   347
/*!
hgs
parents: 23
diff changeset
   348
	 Updates the reminder choices for an all day event.
hgs
parents: 23
diff changeset
   349
	 \param referenceDate to indicate past or not.
hgs
parents: 23
diff changeset
   350
 */
hgs
parents: 23
diff changeset
   351
void CalenEditorReminderField::updateReminderChoicesForAllDay(QDate referenceDate)
hgs
parents: 23
diff changeset
   352
{
hgs
parents: 23
diff changeset
   353
	if (!mReminderTimeAdded){
hgs
parents: 23
diff changeset
   354
		insertReminderTimeField();
hgs
parents: 23
diff changeset
   355
	}
hgs
parents: 23
diff changeset
   356
	QStringList reminderChoicesForAllDay;
hgs
parents: 23
diff changeset
   357
	QDate tomorrow = QDate::currentDate().addDays(1);
hgs
parents: 23
diff changeset
   358
	QDate theDayAfterTomorrow = QDate::currentDate().addDays(2);
hgs
parents: 23
diff changeset
   359
	
hgs
parents: 23
diff changeset
   360
	if (referenceDate < QDate::currentDate() || 
hgs
parents: 23
diff changeset
   361
			referenceDate == QDate::currentDate()) {
hgs
parents: 23
diff changeset
   362
		// Set reminder off for past event.
hgs
parents: 23
diff changeset
   363
		reminderChoicesForAllDay << hbTrId("txt_calendar_setlabel_reminder_val_off");
hgs
parents: 23
diff changeset
   364
		mReminderItem->setContentWidgetData(QString("items"), 
hgs
parents: 23
diff changeset
   365
													reminderChoicesForAllDay);
hgs
parents: 23
diff changeset
   366
		mReminderItem->setEnabled(false); 
hgs
parents: 23
diff changeset
   367
		removeReminderTimeField();
hgs
parents: 23
diff changeset
   368
	} else if (theDayAfterTomorrow < referenceDate || 
hgs
parents: 23
diff changeset
   369
			theDayAfterTomorrow == referenceDate) {
hgs
parents: 23
diff changeset
   370
		reminderChoicesForAllDay 
hgs
parents: 23
diff changeset
   371
				<< hbTrId("txt_calendar_setlabel_reminder_val_off")
hgs
parents: 23
diff changeset
   372
				<< hbTrId("txt_calendar_setlabel_reminder_val_on_event_day")
hgs
parents: 23
diff changeset
   373
				<< hbTrId("txt_calendar_setlabel_reminder_val_1_day_before")
hgs
parents: 23
diff changeset
   374
				<< hbTrId("txt_calendar_setlabel_reminder_val_2_days_before");
hgs
parents: 23
diff changeset
   375
		mReminderItem->setEnabled(true);
hgs
parents: 23
diff changeset
   376
		mCustomReminderTimeItem->setEnabled(true);
hgs
parents: 23
diff changeset
   377
	} else {
hgs
parents: 23
diff changeset
   378
		reminderChoicesForAllDay 
hgs
parents: 23
diff changeset
   379
					<< hbTrId("txt_calendar_setlabel_reminder_val_off")
hgs
parents: 23
diff changeset
   380
					<< hbTrId("txt_calendar_setlabel_reminder_val_on_event_day")
hgs
parents: 23
diff changeset
   381
					<< hbTrId("txt_calendar_setlabel_reminder_val_1_day_before");
hgs
parents: 23
diff changeset
   382
		mReminderItem->setEnabled(true);
hgs
parents: 23
diff changeset
   383
		mCustomReminderTimeItem->setEnabled(true);
hgs
parents: 23
diff changeset
   384
	}
hgs
parents: 23
diff changeset
   385
	if (mReminderItem->isEnabled()) {
hgs
parents: 23
diff changeset
   386
		mReminderItem->setContentWidgetData(QString("items"), 
hgs
parents: 23
diff changeset
   387
											reminderChoicesForAllDay);
hgs
parents: 23
diff changeset
   388
	}
hgs
parents: 23
diff changeset
   389
}
hgs
parents: 23
diff changeset
   390
hgs
parents: 23
diff changeset
   391
/*!
hgs
parents: 23
diff changeset
   392
	 Insert the reminder time field for an all day event.
hgs
parents: 23
diff changeset
   393
 */
hgs
parents: 23
diff changeset
   394
void CalenEditorReminderField::insertReminderTimeField()
hgs
parents: 23
diff changeset
   395
{
hgs
parents: 23
diff changeset
   396
	HbDataFormModelItem::DataItemType itemType =
hgs
parents: 23
diff changeset
   397
			static_cast<HbDataFormModelItem::DataItemType> (ReminderTimeOffset);
hgs
parents: 23
diff changeset
   398
	
hgs
parents: 23
diff changeset
   399
	// If all day item is not added then insert at one level before.
hgs
parents: 23
diff changeset
   400
	int index = CalenEditorPrivate::ReminderTimeForAllDayItem;
hgs
parents: 23
diff changeset
   401
	if(!mCalenEditor->isAllDayFieldAdded()) {
hgs
parents: 23
diff changeset
   402
		index = CalenEditorPrivate::ReminderTimeForAllDayItem - 1;
hgs
parents: 23
diff changeset
   403
	} 
hgs
parents: 23
diff changeset
   404
	mCustomReminderTimeItem = mCalenEditorModel->insertDataFormItem(
hgs
parents: 23
diff changeset
   405
							index,
hgs
parents: 23
diff changeset
   406
							itemType,
hgs
parents: 23
diff changeset
   407
							QString(hbTrId("txt_calendar_setlabel_reminder_time")),
hgs
parents: 23
diff changeset
   408
							mCalenEditorModel->invisibleRootItem());
hgs
parents: 23
diff changeset
   409
	if (currentReminderIndex() != 1){
hgs
parents: 23
diff changeset
   410
		mReminderTimeForAllDay.setHMS(18,0,0,0);
hgs
parents: 23
diff changeset
   411
	} else {
hgs
parents: 23
diff changeset
   412
		mReminderTimeForAllDay.setHMS(8,0,0,0);
hgs
parents: 23
diff changeset
   413
	}
hgs
parents: 23
diff changeset
   414
	
hgs
parents: 23
diff changeset
   415
	mEditorForm->addConnection(mCustomReminderTimeItem, SIGNAL(clicked()),
hgs
parents: 23
diff changeset
   416
	                           this, SLOT(launchReminderTimePicker()));
hgs
parents: 23
diff changeset
   417
	setDisplayTime();
hgs
parents: 23
diff changeset
   418
	mReminderTimeAdded = true;
hgs
parents: 23
diff changeset
   419
}
hgs
parents: 23
diff changeset
   420
hgs
parents: 23
diff changeset
   421
/*!
hgs
parents: 23
diff changeset
   422
	 Set the reminder time selected by the user.
hgs
parents: 23
diff changeset
   423
 */
hgs
parents: 23
diff changeset
   424
void CalenEditorReminderField::setDisplayTime()
hgs
parents: 23
diff changeset
   425
{
hgs
parents: 23
diff changeset
   426
	HbExtendedLocale locale = HbExtendedLocale::system();
hgs
parents: 23
diff changeset
   427
	QString timeString = locale.format(
hgs
parents: 23
diff changeset
   428
			mReminderTimeForAllDay,
hgs
parents: 23
diff changeset
   429
			r_qtn_time_usual_with_zero);
hgs
parents: 23
diff changeset
   430
	mCustomReminderTimeItem->setContentWidgetData("text", timeString);
hgs
parents: 23
diff changeset
   431
}
hgs
parents: 23
diff changeset
   432
hgs
parents: 23
diff changeset
   433
/*!
hgs
parents: 23
diff changeset
   434
	Remove the reminder time field if its not an all day event.
hgs
parents: 23
diff changeset
   435
 */
hgs
parents: 23
diff changeset
   436
void CalenEditorReminderField::removeReminderTimeField()
hgs
parents: 23
diff changeset
   437
{
hgs
parents: 23
diff changeset
   438
	mReminderTimeAdded = false;
hgs
parents: 23
diff changeset
   439
	if (mCustomReminderTimeItem) {
hgs
parents: 23
diff changeset
   440
		QModelIndex reminderIndex =
hgs
parents: 23
diff changeset
   441
				mCalenEditorModel->indexFromItem(mCustomReminderTimeItem);
hgs
parents: 23
diff changeset
   442
		mCalenEditorModel->removeItem(
hgs
parents: 23
diff changeset
   443
				mCalenEditorModel->index(
hgs
parents: 23
diff changeset
   444
						reminderIndex.row(), 0));
hgs
parents: 23
diff changeset
   445
		mCustomReminderTimeItem = NULL;
hgs
parents: 23
diff changeset
   446
	}
hgs
parents: 23
diff changeset
   447
}
hgs
parents: 23
diff changeset
   448
hgs
parents: 23
diff changeset
   449
/*!
hgs
parents: 23
diff changeset
   450
	 Launches time picker to select time.
hgs
parents: 23
diff changeset
   451
 */
hgs
parents: 23
diff changeset
   452
void CalenEditorReminderField::launchReminderTimePicker()
hgs
parents: 23
diff changeset
   453
{
hgs
parents: 23
diff changeset
   454
	mTimePicker = new HbDateTimePicker(mReminderTimeForAllDay);
hgs
parents: 23
diff changeset
   455
	mTimePicker->setTime(mReminderTimeForAllDay);
hgs
parents: 23
diff changeset
   456
	HbDialog *popUp = new HbDialog();
hgs
parents: 23
diff changeset
   457
	popUp->setDismissPolicy(HbDialog::NoDismiss);
hgs
parents: 23
diff changeset
   458
	popUp->setTimeout(HbDialog::NoTimeout);
hgs
parents: 23
diff changeset
   459
	popUp->setContentWidget(mTimePicker);
hgs
parents: 23
diff changeset
   460
	popUp->setHeadingWidget( new HbLabel(
hgs
parents: 23
diff changeset
   461
			hbTrId("Reminder Time")));
hgs
parents: 23
diff changeset
   462
	HbAction *okAction = new HbAction(hbTrId("txt_common_button_ok"));
hgs
parents: 23
diff changeset
   463
	popUp->addAction(okAction);
hgs
parents: 23
diff changeset
   464
	connect(okAction, SIGNAL(triggered()), this, SLOT(setReminderTimeForAllDay()));
hgs
parents: 23
diff changeset
   465
	connect(okAction, SIGNAL(triggered()), popUp, SLOT(close()));
hgs
parents: 23
diff changeset
   466
	popUp->addAction(new HbAction(hbTrId("txt_common_button_cancel"),
hgs
parents: 23
diff changeset
   467
	                                      popUp));
hgs
parents: 23
diff changeset
   468
	popUp->open();
hgs
parents: 23
diff changeset
   469
}
hgs
parents: 23
diff changeset
   470
hgs
parents: 23
diff changeset
   471
/*!
hgs
parents: 23
diff changeset
   472
	 Set the reminder time chosen.
hgs
parents: 23
diff changeset
   473
 */
hgs
parents: 23
diff changeset
   474
void CalenEditorReminderField::setReminderTimeForAllDay()
hgs
parents: 23
diff changeset
   475
{
hgs
parents: 23
diff changeset
   476
	mReminderTimeForAllDay = mTimePicker->time();
hgs
parents: 23
diff changeset
   477
	if (mReminderTimeForAllDay.isValid()) {
hgs
parents: 23
diff changeset
   478
		// Change the time displayed to that selected by the user.
hgs
parents: 23
diff changeset
   479
		setDisplayTime();
hgs
parents: 23
diff changeset
   480
		handleReminderIndexChanged(currentReminderIndex());
hgs
parents: 23
diff changeset
   481
	}	
hgs
parents: 23
diff changeset
   482
}
hgs
parents: 23
diff changeset
   483
hgs
parents: 23
diff changeset
   484
/*!
hgs
parents: 23
diff changeset
   485
	 Checks if reminder field is enabled or not.
hgs
parents: 23
diff changeset
   486
 */
hgs
parents: 23
diff changeset
   487
bool CalenEditorReminderField::isReminderFieldEnabled()
hgs
parents: 23
diff changeset
   488
{
hgs
parents: 23
diff changeset
   489
	return mReminderItem->isEnabled();
hgs
parents: 23
diff changeset
   490
}
hgs
parents: 23
diff changeset
   491
hgs
parents: 23
diff changeset
   492
/*!
hgs
parents: 23
diff changeset
   493
	 Returns the number of items present in the reminder option.
hgs
parents: 23
diff changeset
   494
 */
hgs
parents: 23
diff changeset
   495
int CalenEditorReminderField::reminderItemsCount()
hgs
parents: 23
diff changeset
   496
{
hgs
parents: 23
diff changeset
   497
	QVariant strings = mReminderItem->contentWidgetData("items");
hgs
parents: 23
diff changeset
   498
	QStringList stringList(strings.toStringList());
hgs
parents: 23
diff changeset
   499
	int count = stringList.count();
hgs
parents: 23
diff changeset
   500
	return count;
hgs
parents: 23
diff changeset
   501
}
hgs
parents: 23
diff changeset
   502
hgs
parents: 23
diff changeset
   503
/*!
hgs
parents: 23
diff changeset
   504
	 Returns the current chosen index.
hgs
parents: 23
diff changeset
   505
 */
hgs
parents: 23
diff changeset
   506
int CalenEditorReminderField::currentReminderIndex()
hgs
parents: 23
diff changeset
   507
{
hgs
parents: 23
diff changeset
   508
	QVariant countVariant = mReminderItem->contentWidgetData("currentIndex");
hgs
parents: 23
diff changeset
   509
	int index = countVariant.toInt();
hgs
parents: 23
diff changeset
   510
	return index;
hgs
parents: 23
diff changeset
   511
}
hgs
parents: 23
diff changeset
   512
hgs
parents: 23
diff changeset
   513
/*!
hgs
parents: 23
diff changeset
   514
	 Sets the chosen index as current index.
hgs
parents: 23
diff changeset
   515
	 /param index indicates the idex value to be set.
hgs
parents: 23
diff changeset
   516
 */
hgs
parents: 23
diff changeset
   517
void CalenEditorReminderField::setCurrentIndex(int index)
hgs
parents: 23
diff changeset
   518
{
hgs
parents: 23
diff changeset
   519
	mReminderItem->setContentWidgetData("currentIndex", index);
hgs
parents: 23
diff changeset
   520
}
hgs
parents: 23
diff changeset
   521
hgs
parents: 23
diff changeset
   522
/*!
hgs
parents: 23
diff changeset
   523
	 Disables the reminder time field.
hgs
parents: 23
diff changeset
   524
 */
hgs
parents: 23
diff changeset
   525
void CalenEditorReminderField::disableReminderTimeField()
hgs
parents: 23
diff changeset
   526
{
hgs
parents: 23
diff changeset
   527
	if (mReminderTimeAdded) {
hgs
parents: 23
diff changeset
   528
		mCustomReminderTimeItem->setEnabled(false);
hgs
parents: 23
diff changeset
   529
	}
hgs
parents: 23
diff changeset
   530
}
hgs
parents: 23
diff changeset
   531
hgs
parents: 23
diff changeset
   532
/*!
hgs
parents: 23
diff changeset
   533
	 Checks if reminder time field is added or not.
hgs
parents: 23
diff changeset
   534
 */
hgs
parents: 23
diff changeset
   535
bool CalenEditorReminderField::isReminderTimeForAllDayAdded()
hgs
parents: 23
diff changeset
   536
{
hgs
parents: 23
diff changeset
   537
	return mReminderTimeAdded;
hgs
parents: 23
diff changeset
   538
}
hgs
parents: 23
diff changeset
   539
23
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   540
// End of file	--Don't remove this.