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