calendarui/caleneditor/src/caleneditorreminderfield.cpp
author hgs
Mon, 20 Sep 2010 12:44:39 +0530
changeset 75 7ac58b2aae6f
parent 70 a5ed90760192
permissions -rw-r--r--
201037
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
57
hgs
parents: 55
diff changeset
    34
#include "calenagendautils.h"
23
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    35
#include "caleneditorreminderfield.h"
51
hgs
parents: 45
diff changeset
    36
#include "OstTraceDefinitions.h"
hgs
parents: 45
diff changeset
    37
#ifdef OST_TRACE_COMPILER_IN_USE
hgs
parents: 45
diff changeset
    38
#include "caleneditorreminderfieldTraces.h"
hgs
parents: 45
diff changeset
    39
#endif
hgs
parents: 45
diff changeset
    40
23
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    41
45
hgs
parents: 23
diff changeset
    42
#define numberOfMinutesInADay 1440
23
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    43
/*!
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    44
	\class CalenEditorReminderField
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
/*!
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    47
	Constructor.
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    48
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    49
	\param parent QObject pointer
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
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    52
CalenEditorReminderField::CalenEditorReminderField(
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    53
										CalenEditorPrivate* calenEditor,
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    54
										HbDataForm* form, 
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    55
										HbDataFormModel* model,
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
	:QObject(parent),
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    58
	 mCalenEditor(calenEditor), 
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    59
	 mEditorForm(form), 
45
hgs
parents: 23
diff changeset
    60
	 mCalenEditorModel(model),
55
hgs
parents: 51
diff changeset
    61
	 mCustomReminderTimeItem(0),
75
hgs
parents: 70
diff changeset
    62
	 mTimePicker(0),
45
hgs
parents: 23
diff changeset
    63
	 mReminderTimeAdded(false)
23
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    64
{
51
hgs
parents: 45
diff changeset
    65
	OstTraceFunctionEntry0( CALENEDITORREMINDERFIELD_CALENEDITORREMINDERFIELD_ENTRY );
23
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    66
	mReminderItem = new HbDataFormModelItem();
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    67
	mReminderItem->setType(HbDataFormModelItem::ComboBoxItem);
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    68
	mReminderItem->setData(HbDataFormModelItem::LabelRole,
45
hgs
parents: 23
diff changeset
    69
						   hbTrId("txt_calendar_setlabel_reminder"));	
23
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    70
	// Add it to the model
45
hgs
parents: 23
diff changeset
    71
	mCalenEditorModel->appendDataFormItem(mReminderItem,
23
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    72
										mCalenEditorModel->invisibleRootItem());
51
hgs
parents: 45
diff changeset
    73
	OstTraceFunctionExit0( CALENEDITORREMINDERFIELD_CALENEDITORREMINDERFIELD_EXIT );
23
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
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
	 Destructor
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    78
 */
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    79
CalenEditorReminderField::~CalenEditorReminderField()
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    80
{
51
hgs
parents: 45
diff changeset
    81
	OstTraceFunctionEntry0( DUP1_CALENEDITORREMINDERFIELD_CALENEDITORREMINDERFIELD_ENTRY );
45
hgs
parents: 23
diff changeset
    82
	if(mReminderHash.count()) {
hgs
parents: 23
diff changeset
    83
		mReminderHash.clear();
hgs
parents: 23
diff changeset
    84
	}
51
hgs
parents: 45
diff changeset
    85
	OstTraceFunctionExit0( DUP1_CALENEDITORREMINDERFIELD_CALENEDITORREMINDERFIELD_EXIT );
45
hgs
parents: 23
diff changeset
    86
}
hgs
parents: 23
diff changeset
    87
hgs
parents: 23
diff changeset
    88
/*!
hgs
parents: 23
diff changeset
    89
	 Set the reminder choices.
hgs
parents: 23
diff changeset
    90
 */
hgs
parents: 23
diff changeset
    91
void CalenEditorReminderField::setReminderChoices()
hgs
parents: 23
diff changeset
    92
{
51
hgs
parents: 45
diff changeset
    93
	OstTraceFunctionEntry0( CALENEDITORREMINDERFIELD_SETREMINDERCHOICES_ENTRY );
64
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
    94
	
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
    95
	// Disconnect the slot and connect it back again at end to avoid unnecessary
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
    96
	// calls to handleReminderIndexChanged slot. Or else the slot gets called 
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
    97
	// when we add all of items to the repeat combobox.
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
    98
	mEditorForm->removeConnection(mReminderItem,
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
    99
							SIGNAL(currentIndexChanged(int)), this,
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   100
							SLOT(handleReminderIndexChanged(int)));
45
hgs
parents: 23
diff changeset
   101
	// Create the reminder choices
hgs
parents: 23
diff changeset
   102
	QStringList reminderChoices;
hgs
parents: 23
diff changeset
   103
	reminderChoices << hbTrId("txt_calendar_setlabel_reminder_val_off")
hgs
parents: 23
diff changeset
   104
				<< hbTrId("txt_calendar_setlabel_reminder_val_at_the_start")
hgs
parents: 23
diff changeset
   105
				<< hbTrId("txt_calendar_setlabel_reminder_val_15_minutes_befo")
hgs
parents: 23
diff changeset
   106
				<< hbTrId("txt_calendar_setlabel_reminder_val_30_minutes_befo")
hgs
parents: 23
diff changeset
   107
				<< hbTrId("txt_calendar_setlabel_reminder_val_1_hour_before");
hgs
parents: 23
diff changeset
   108
51
hgs
parents: 45
diff changeset
   109
	mReminderItem->setContentWidgetData("items", reminderChoices);
45
hgs
parents: 23
diff changeset
   110
	mReminderItem->setEnabled(true);
64
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   111
	
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   112
	mEditorForm->addConnection(mReminderItem,
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   113
							SIGNAL(currentIndexChanged(int)), this,
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   114
							SLOT(handleReminderIndexChanged(int)));
51
hgs
parents: 45
diff changeset
   115
	OstTraceFunctionExit0( CALENEDITORREMINDERFIELD_SETREMINDERCHOICES_EXIT );
23
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   116
}
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
	 Adds reminder item to the model
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   120
 */
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   121
void CalenEditorReminderField::addItemToModel()
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   122
{	
51
hgs
parents: 45
diff changeset
   123
	OstTraceFunctionEntry0( CALENEDITORREMINDERFIELD_ADDITEMTOMODEL_ENTRY );
23
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   124
	// Add reminder to the model
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   125
	mCalenEditorModel->appendDataFormItem( mReminderItem,
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   126
				   mCalenEditorModel->invisibleRootItem());
51
hgs
parents: 45
diff changeset
   127
	OstTraceFunctionExit0( CALENEDITORREMINDERFIELD_ADDITEMTOMODEL_EXIT );
23
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   128
}
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   129
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   130
/*!
45
hgs
parents: 23
diff changeset
   131
	 Removes reminder item from the model
23
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   132
 */
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   133
void CalenEditorReminderField::removeItemFromModel()
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   134
{
51
hgs
parents: 45
diff changeset
   135
	OstTraceFunctionEntry0( CALENEDITORREMINDERFIELD_REMOVEITEMFROMMODEL_ENTRY );
23
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   136
	mCalenEditorModel->removeItem(modelIndex());
51
hgs
parents: 45
diff changeset
   137
	OstTraceFunctionExit0( CALENEDITORREMINDERFIELD_REMOVEITEMFROMMODEL_EXIT );
23
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
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   140
/*!
64
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   141
	 Set the current reminder index with the value which was saved 
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   142
	 before, if it is valid or else default the value to 15MinsBefore
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   143
	 or AtTheStart whichever is appropriate
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   144
 */
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   145
void CalenEditorReminderField::setSavedMeetingReminderIndex()
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   146
{
70
hgs
parents: 64
diff changeset
   147
	OstTraceFunctionEntry0( CALENEDITORREMINDERFIELD_SETSAVEDMEETINGREMINDERINDEX_ENTRY );
64
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   148
	// Get the reminder offset value.
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   149
	int reminderOffset =
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   150
	mCalenEditor->editedEntry()->alarm().timeOffset();
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   151
	// Get the index value for the reminder combo box from the hash 
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   152
	// table. 2nd argument is defaultKey if the hash contains no item mapped to value
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   153
	//TODO: Need to confirm the default reminder to set if none of the choices are met like in case of synch from outlook.
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   154
	int index = mReminderHash.key(reminderOffset, Reminder15MinsBefore); 
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   155
	
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   156
	if (index < reminderItemsCount())
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   157
		setCurrentIndex(index);
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   158
	else if (reminderItemsCount() == (ReminderAtStart + 1)) //+1 because enum starts from 0.
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   159
		setCurrentIndex(ReminderAtStart); 
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   160
	else
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   161
		setCurrentIndex(Reminder15MinsBefore);
70
hgs
parents: 64
diff changeset
   162
	OstTraceFunctionExit0( CALENEDITORREMINDERFIELD_SETSAVEDMEETINGREMINDERINDEX_EXIT );
64
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   163
}
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   164
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   165
/*!
23
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   166
	 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
   167
	 \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
   168
 */
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   169
void CalenEditorReminderField::populateReminderItem(bool newEntry)
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   170
{
51
hgs
parents: 45
diff changeset
   171
	OstTraceFunctionEntry0( CALENEDITORREMINDERFIELD_POPULATEREMINDERITEM_ENTRY );
45
hgs
parents: 23
diff changeset
   172
	AgendaAlarm reminder;
hgs
parents: 23
diff changeset
   173
	bool pastEvent =  false;
64
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   174
	bool repeatingEntry = false;
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   175
	bool sameDay = false;
45
hgs
parents: 23
diff changeset
   176
	
64
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   177
	mReminderItem->setContentWidgetData("objectName", "remainderItem");
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   178
	// Build the hash map for the reminder.
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   179
	mReminderHash[ReminderOff] = -1; // OFF.
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   180
	mReminderHash[ReminderAtStart] = 0;
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   181
	mReminderHash[Reminder15MinsBefore] = 15;
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   182
	mReminderHash[Reminder30MinsBefore] = 30;
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   183
	mReminderHash[Reminder1HourBefore] = 60;
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   184
	    
45
hgs
parents: 23
diff changeset
   185
	// Set reference date to start date or repeat until date accordingly to 
hgs
parents: 23
diff changeset
   186
	// decide whether its a past event or not.
hgs
parents: 23
diff changeset
   187
	QDate referenceDate;
hgs
parents: 23
diff changeset
   188
	if (!mCalenEditor->editedEntry()->isRepeating() || 
hgs
parents: 23
diff changeset
   189
					(mCalenEditor->isEditRangeThisOnly())) {
hgs
parents: 23
diff changeset
   190
		referenceDate = mCalenEditor->editedEntry()->startTime().date();
hgs
parents: 23
diff changeset
   191
	} else {
hgs
parents: 23
diff changeset
   192
		referenceDate = mCalenEditor->editedEntry()->repeatRule().until().date();
64
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   193
		repeatingEntry = true;
45
hgs
parents: 23
diff changeset
   194
	}
hgs
parents: 23
diff changeset
   195
	
hgs
parents: 23
diff changeset
   196
	if ((referenceDate < QDate::currentDate()) || 
hgs
parents: 23
diff changeset
   197
					(referenceDate == QDate::currentDate()
hgs
parents: 23
diff changeset
   198
					&& (mCalenEditor->editedEntry()->startTime().time() < 
hgs
parents: 23
diff changeset
   199
					QTime::currentTime()))) {
hgs
parents: 23
diff changeset
   200
		pastEvent = true;
hgs
parents: 23
diff changeset
   201
	}
hgs
parents: 23
diff changeset
   202
	
hgs
parents: 23
diff changeset
   203
	if (mCalenEditor->isAllDayEvent()) {
hgs
parents: 23
diff changeset
   204
		updateReminderChoicesForAllDay(referenceDate);
hgs
parents: 23
diff changeset
   205
	} else {
64
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   206
		if((referenceDate == QDate::currentDate())
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   207
					&& !pastEvent) {
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   208
			UpdateReminderChoicesForSameDay(mCalenEditor->editedEntry()->startTime().time());
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   209
			sameDay = true;
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   210
		}
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   211
		else {
45
hgs
parents: 23
diff changeset
   212
		setReminderChoices();
64
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   213
		}
45
hgs
parents: 23
diff changeset
   214
	}
23
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   215
	// Set the default reminder value to 15 minutes 
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   216
	if (newEntry) {
45
hgs
parents: 23
diff changeset
   217
		if (!pastEvent) {
64
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   218
			int defaultIndex = Reminder15MinsBefore;
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   219
			if (reminderItemsCount() == (ReminderAtStart + 1))  //If 15MinsBefore option is not available
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   220
				defaultIndex = ReminderAtStart;
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   221
		
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   222
			setCurrentIndex(defaultIndex);
45
hgs
parents: 23
diff changeset
   223
			// Save the reminder alarm for the entry
64
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   224
			reminder.setTimeOffset(mReminderHash.value(defaultIndex));
45
hgs
parents: 23
diff changeset
   225
			reminder.setAlarmSoundName(QString(" "));
hgs
parents: 23
diff changeset
   226
			// Set the reminder to the entry as well as original entry.
hgs
parents: 23
diff changeset
   227
			mCalenEditor->editedEntry()->setAlarm(reminder);
hgs
parents: 23
diff changeset
   228
			mCalenEditor->originalEntry()->setAlarm(reminder);
hgs
parents: 23
diff changeset
   229
		} else {
64
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   230
			setReminderOff();
45
hgs
parents: 23
diff changeset
   231
		}
23
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   232
	} else {
64
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   233
        int offsetInMins = mCalenEditor->editedEntry()->alarm().timeOffset();
45
hgs
parents: 23
diff changeset
   234
		// If the alarm is not null,
hgs
parents: 23
diff changeset
   235
		// 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
   236
		if (mCalenEditor->editedEntry()->alarm().isNull()) {
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   237
			// Alarm is set off
64
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   238
			setCurrentIndex(ReminderOff);
45
hgs
parents: 23
diff changeset
   239
			if(mReminderTimeAdded) {
hgs
parents: 23
diff changeset
   240
				removeReminderTimeField();
hgs
parents: 23
diff changeset
   241
			}
57
hgs
parents: 55
diff changeset
   242
		} else if (!mCalenEditor->isAllDayEvent()) {
64
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   243
			QTime currentTime = QTime::currentTime();
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   244
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   245
			//TODO: Still need confirmation for proper behaviour when entry is edited after alarm has expired.
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   246
			if (!repeatingEntry && sameDay && (currentTime.addSecs(offsetInMins * 60) >= mCalenEditor->editedEntry()->startTime().time())) {
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   247
				setCurrentIndex(ReminderOff); //Alarm has expired already, so making it off.
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   248
				//The slot for index 0 is not called, since after UpdateReminderChoicesForSameDay()
75
hgs
parents: 70
diff changeset
   249
				//index is 0 itself and there is no change. So explicitly setting the reminder here.
hgs
parents: 70
diff changeset
   250
				reminder.setTimeOffset(mReminderHash.value(ReminderOff));
hgs
parents: 70
diff changeset
   251
				reminder.setAlarmSoundName(QString(" "));
hgs
parents: 70
diff changeset
   252
				mCalenEditor->editedEntry()->setAlarm(reminder);
64
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   253
			}
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   254
			else {
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   255
				setSavedMeetingReminderIndex();
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   256
			}
45
hgs
parents: 23
diff changeset
   257
		} else {
hgs
parents: 23
diff changeset
   258
			// Insert reminder time field and display entry's reminder time.
hgs
parents: 23
diff changeset
   259
			// If past then disable the field.
hgs
parents: 23
diff changeset
   260
			if (!mReminderTimeAdded) {
hgs
parents: 23
diff changeset
   261
				insertReminderTimeField();
57
hgs
parents: 55
diff changeset
   262
			}
hgs
parents: 55
diff changeset
   263
			if (pastEvent && mReminderTimeAdded) {
hgs
parents: 55
diff changeset
   264
				mCustomReminderTimeItem->setEnabled(false);
45
hgs
parents: 23
diff changeset
   265
			}
64
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   266
			// Get the appropriate reminder index depending on the value of time offset.
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   267
			int index = getReminderIndexBasedOnEntryAlarm();
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   268
			mReminderItem->setContentWidgetData("currentIndex", index);
45
hgs
parents: 23
diff changeset
   269
			setDisplayTime();
hgs
parents: 23
diff changeset
   270
		}
hgs
parents: 23
diff changeset
   271
		if (pastEvent) {
hgs
parents: 23
diff changeset
   272
			mReminderItem->setEnabled(false);
23
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   273
		}
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   274
	}
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   275
	mEditorForm->addConnection(mReminderItem,
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   276
							SIGNAL(currentIndexChanged(int)), this,
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   277
							SLOT(handleReminderIndexChanged(int)));
51
hgs
parents: 45
diff changeset
   278
	OstTraceFunctionExit0( CALENEDITORREMINDERFIELD_POPULATEREMINDERITEM_EXIT );
23
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   279
}
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   280
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   281
/*!
64
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   282
	Triggered from tapping on reminder item.
23
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   283
	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
   284
	\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
   285
 */
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   286
void CalenEditorReminderField::handleReminderIndexChanged(int index)
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   287
{
51
hgs
parents: 45
diff changeset
   288
	OstTraceFunctionEntry0( CALENEDITORREMINDERFIELD_HANDLEREMINDERINDEXCHANGED_ENTRY );
23
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   289
	AgendaAlarm reminder;
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   290
	if (!mCalenEditor->editedEntry()->alarm().isNull()) {
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   291
		reminder = mCalenEditor->editedEntry()->alarm();
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   292
	}
45
hgs
parents: 23
diff changeset
   293
	// Check whether all day event or not and store appropriately.
hgs
parents: 23
diff changeset
   294
	if (!mCalenEditor->isAllDayEvent()) {
hgs
parents: 23
diff changeset
   295
		// If value for the index in hash table is -1 i.e reminder is "OFF",
hgs
parents: 23
diff changeset
   296
		// then set the default constructed reminder to
hgs
parents: 23
diff changeset
   297
		// the entry which is Null.
hgs
parents: 23
diff changeset
   298
		if (mReminderHash.value(index) < 0) {
hgs
parents: 23
diff changeset
   299
			// Construct the default alarm which is NULL
hgs
parents: 23
diff changeset
   300
			reminder = AgendaAlarm();
hgs
parents: 23
diff changeset
   301
		} else {
hgs
parents: 23
diff changeset
   302
			// If not zero then set the reminder offset
hgs
parents: 23
diff changeset
   303
			// value to the entry.
hgs
parents: 23
diff changeset
   304
			reminder.setTimeOffset(mReminderHash.value(index));
hgs
parents: 23
diff changeset
   305
			reminder.setAlarmSoundName(QString(" "));
hgs
parents: 23
diff changeset
   306
		}
23
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   307
	} else {
64
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   308
		QDateTime reminderDateTimeForAllDay;
45
hgs
parents: 23
diff changeset
   309
		QDateTime
hgs
parents: 23
diff changeset
   310
		        startDateTimeForAllDay(
hgs
parents: 23
diff changeset
   311
		                               mCalenEditor->editedEntry()->startTime().date(),
hgs
parents: 23
diff changeset
   312
		                               QTime(0, 0, 0));
57
hgs
parents: 55
diff changeset
   313
		if (mReminderItem->contentWidgetData("currentIndex") == ReminderOff) {
45
hgs
parents: 23
diff changeset
   314
			reminder = AgendaAlarm();
57
hgs
parents: 55
diff changeset
   315
			removeReminderTimeField();
45
hgs
parents: 23
diff changeset
   316
		} else {
hgs
parents: 23
diff changeset
   317
			int offset = 0;
57
hgs
parents: 55
diff changeset
   318
			if (mReminderItem->contentWidgetData("currentIndex") == ReminderOneDayBefore) {
45
hgs
parents: 23
diff changeset
   319
				offset = 1;
57
hgs
parents: 55
diff changeset
   320
			} else if (mReminderItem->contentWidgetData("currentIndex") == ReminderTwoDaysBefore) {
45
hgs
parents: 23
diff changeset
   321
				offset = 2;
hgs
parents: 23
diff changeset
   322
			}
hgs
parents: 23
diff changeset
   323
			if(!mReminderTimeAdded) {
64
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   324
				insertReminderTimeField();
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   325
			}
45
hgs
parents: 23
diff changeset
   326
			// If on same day as that of the event then check if time has been 
hgs
parents: 23
diff changeset
   327
			// changed , if changed retain that else set default time.
hgs
parents: 23
diff changeset
   328
			if (offset == 0) {
hgs
parents: 23
diff changeset
   329
				if(mReminderTimeForAllDay == QTime(18, 0, 0, 0)) {
hgs
parents: 23
diff changeset
   330
					mReminderTimeForAllDay.setHMS(8, 0, 0);
hgs
parents: 23
diff changeset
   331
				}
64
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   332
			}else {
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   333
				// For the reminder options other than ReminderOnEventDay
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   334
				// reset the default values since the time set for one option 
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   335
				// may not be valid for the other option
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   336
				mReminderTimeForAllDay.setHMS(18, 0, 0, 0);
45
hgs
parents: 23
diff changeset
   337
			}
64
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   338
			setDisplayTime();
45
hgs
parents: 23
diff changeset
   339
			reminderDateTimeForAllDay.setDate(
hgs
parents: 23
diff changeset
   340
					mCalenEditor->editedEntry()->startTime().date().addDays(
hgs
parents: 23
diff changeset
   341
																	-offset));
hgs
parents: 23
diff changeset
   342
			reminderDateTimeForAllDay.setTime(mReminderTimeForAllDay);
hgs
parents: 23
diff changeset
   343
			int seconds =
hgs
parents: 23
diff changeset
   344
					reminderDateTimeForAllDay.secsTo(startDateTimeForAllDay);
57
hgs
parents: 55
diff changeset
   345
			int timeOffset = seconds / 60;
45
hgs
parents: 23
diff changeset
   346
			mCustomReminderTimeItem->setEnabled(true);
57
hgs
parents: 55
diff changeset
   347
			reminder.setTimeOffset(timeOffset);
45
hgs
parents: 23
diff changeset
   348
			reminder.setAlarmSoundName(QString(" "));
hgs
parents: 23
diff changeset
   349
		}
23
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   350
	}
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   351
	// Set the reminder to the entry.
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   352
	mCalenEditor->editedEntry()->setAlarm(reminder);
45
hgs
parents: 23
diff changeset
   353
	if(!mCalenEditor->isNewEntry()) {
51
hgs
parents: 45
diff changeset
   354
	mCalenEditor->addDiscardAction();
45
hgs
parents: 23
diff changeset
   355
	}
51
hgs
parents: 45
diff changeset
   356
	OstTraceFunctionExit0( CALENEDITORREMINDERFIELD_HANDLEREMINDERINDEXCHANGED_EXIT );
23
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   357
}
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   358
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   359
/*!
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   360
	 Returns the mode index of the reminder item
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   361
	 \return Mode index of the reminder item
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   362
 */
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   363
QModelIndex CalenEditorReminderField::modelIndex()
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   364
{
51
hgs
parents: 45
diff changeset
   365
	OstTraceFunctionEntry0( CALENEDITORREMINDERFIELD_MODELINDEX_ENTRY );
23
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   366
	return mCalenEditorModel->indexFromItem(mReminderItem);
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   367
}
45
hgs
parents: 23
diff changeset
   368
hgs
parents: 23
diff changeset
   369
/*!
hgs
parents: 23
diff changeset
   370
	 Set reminder off.
hgs
parents: 23
diff changeset
   371
 */
hgs
parents: 23
diff changeset
   372
void CalenEditorReminderField::setReminderOff()
hgs
parents: 23
diff changeset
   373
{
51
hgs
parents: 45
diff changeset
   374
	OstTraceFunctionEntry0( CALENEDITORREMINDERFIELD_SETREMINDEROFF_ENTRY );
45
hgs
parents: 23
diff changeset
   375
	// Create the remindar choices
hgs
parents: 23
diff changeset
   376
	QStringList reminderChoices;
hgs
parents: 23
diff changeset
   377
	reminderChoices << hbTrId("txt_calendar_setlabel_reminder_val_off");
hgs
parents: 23
diff changeset
   378
	mReminderItem->setContentWidgetData(QString("items"), reminderChoices);
hgs
parents: 23
diff changeset
   379
	mReminderItem->setEnabled(false); 
51
hgs
parents: 45
diff changeset
   380
	OstTraceFunctionExit0( CALENEDITORREMINDERFIELD_SETREMINDEROFF_EXIT );
45
hgs
parents: 23
diff changeset
   381
}
hgs
parents: 23
diff changeset
   382
hgs
parents: 23
diff changeset
   383
/*!
hgs
parents: 23
diff changeset
   384
	 Set the default alarm for a new all day event.
hgs
parents: 23
diff changeset
   385
 */
hgs
parents: 23
diff changeset
   386
void CalenEditorReminderField::setDefaultAlarmForAllDay()
hgs
parents: 23
diff changeset
   387
{	
51
hgs
parents: 45
diff changeset
   388
	OstTraceFunctionEntry0( CALENEDITORREMINDERFIELD_SETDEFAULTALARMFORALLDAY_ENTRY );
45
hgs
parents: 23
diff changeset
   389
	// Set default alarm if its a new entry.
hgs
parents: 23
diff changeset
   390
	if (mCalenEditor->isNewEntry()) {
hgs
parents: 23
diff changeset
   391
		AgendaAlarm reminder;
hgs
parents: 23
diff changeset
   392
		QDate defaultDate
hgs
parents: 23
diff changeset
   393
				(mCalenEditor->editedEntry()->startTime().date().addDays(-1));
55
hgs
parents: 51
diff changeset
   394
		// Set default time as 6pm of the previous day.
45
hgs
parents: 23
diff changeset
   395
		mReminderTimeForAllDay.setHMS(18, 0, 0, 0);
hgs
parents: 23
diff changeset
   396
		setDisplayTime();
hgs
parents: 23
diff changeset
   397
		QDateTime startDateTimeForAllDay(
hgs
parents: 23
diff changeset
   398
				mCalenEditor->editedEntry()->startTime().date(), QTime(0, 0));
hgs
parents: 23
diff changeset
   399
		QDateTime defaultReminderDateTimeForAllDay
hgs
parents: 23
diff changeset
   400
				(defaultDate, mReminderTimeForAllDay);
hgs
parents: 23
diff changeset
   401
		int offsetInSecs = 
hgs
parents: 23
diff changeset
   402
				defaultReminderDateTimeForAllDay.secsTo(startDateTimeForAllDay);
hgs
parents: 23
diff changeset
   403
		int offsetInMins = offsetInSecs/60;
hgs
parents: 23
diff changeset
   404
		reminder.setTimeOffset(offsetInMins);
hgs
parents: 23
diff changeset
   405
		reminder.setAlarmSoundName(QString(" "));
hgs
parents: 23
diff changeset
   406
		// Set the reminder to the entry as well as original entry.
hgs
parents: 23
diff changeset
   407
		mCalenEditor->editedEntry()->setAlarm(reminder);
hgs
parents: 23
diff changeset
   408
		mCalenEditor->originalEntry()->setAlarm(reminder);
hgs
parents: 23
diff changeset
   409
	}
51
hgs
parents: 45
diff changeset
   410
	OstTraceFunctionExit0( CALENEDITORREMINDERFIELD_SETDEFAULTALARMFORALLDAY_EXIT );
45
hgs
parents: 23
diff changeset
   411
}
hgs
parents: 23
diff changeset
   412
hgs
parents: 23
diff changeset
   413
/*!
64
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   414
	 Update the reminder choices when the meeting is on same day, 
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   415
	 based on the time available from current time to start time of the event.
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   416
 */
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   417
void CalenEditorReminderField::UpdateReminderChoicesForSameDay(QTime startTime)
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   418
{
70
hgs
parents: 64
diff changeset
   419
	OstTraceFunctionEntry0( CALENEDITORREMINDERFIELD_UPDATEREMINDERCHOICESFORSAMEDAY_ENTRY );
64
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   420
	QTime currentTime = QTime::currentTime();
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   421
	int offset = currentTime.secsTo(startTime);
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   422
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   423
	// Disconnect the slot and connect it back again at end to avoid unnecessary
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   424
	// calls to handleReminderIndexChanged slot. Or else the slot gets called 
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   425
	// when we add all of items to the repeat combobox.
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   426
	mEditorForm->removeConnection(mReminderItem,
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   427
							SIGNAL(currentIndexChanged(int)), this,
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   428
							SLOT(handleReminderIndexChanged(int)));
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   429
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   430
	//The event start time is within 15mins from current time of today,
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   431
	//then we cannot have alarms "15 mins before", "30mins before" and "1 hour before"
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   432
	if (offset <= SecsIn15Mins)
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   433
	{
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   434
		QStringList reminderChoices;
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   435
		//First to clear all items, we just set items with empty list.
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   436
		mReminderItem->setContentWidgetData("items", reminderChoices); 
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   437
		reminderChoices << hbTrId("txt_calendar_setlabel_reminder_val_off")
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   438
				<< hbTrId("txt_calendar_setlabel_reminder_val_at_the_start");
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   439
		mReminderItem->setContentWidgetData("items", reminderChoices);
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   440
	}
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   441
	//The event start time is within half and hour from current time of today
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   442
	//then we cannot have alarms "30mins before" and "1 hour before"
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   443
	else if (offset <= SecsIn30Mins)
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   444
	{
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   445
		QStringList reminderChoices;
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   446
		//First to clear all items, we just set items with empty list.
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   447
		mReminderItem->setContentWidgetData("items", reminderChoices);
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   448
		reminderChoices << hbTrId("txt_calendar_setlabel_reminder_val_off")
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   449
				<< hbTrId("txt_calendar_setlabel_reminder_val_at_the_start")
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   450
				<< hbTrId("txt_calendar_setlabel_reminder_val_15_minutes_befo");
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   451
		mReminderItem->setContentWidgetData("items", reminderChoices);
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   452
	}
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   453
	//The event start time is within an hour of the current time of today,
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   454
	//then cannot have alarm "1 hour before".
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   455
	else if (offset <= SecsInOneHour)
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   456
	{
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   457
		QStringList reminderChoices;
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   458
		//First to clear all items, we just set items with empty list.
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   459
		mReminderItem->setContentWidgetData("items", reminderChoices);
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   460
		reminderChoices << hbTrId("txt_calendar_setlabel_reminder_val_off")
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   461
				<< hbTrId("txt_calendar_setlabel_reminder_val_at_the_start")
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   462
				<< hbTrId("txt_calendar_setlabel_reminder_val_15_minutes_befo")
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   463
				<< hbTrId("txt_calendar_setlabel_reminder_val_30_minutes_befo");
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   464
		mReminderItem->setContentWidgetData("items", reminderChoices);
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   465
	}
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   466
	// The event start time is more than one hour from current time 
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   467
	// then we can have all choices for alarm.
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   468
	else
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   469
	{
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   470
		QStringList reminderChoices;
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   471
		//First to clear all items, we just set items with empty list.
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   472
		mReminderItem->setContentWidgetData("items", reminderChoices);
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   473
		reminderChoices << hbTrId("txt_calendar_setlabel_reminder_val_off")
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   474
				<< hbTrId("txt_calendar_setlabel_reminder_val_at_the_start")
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   475
				<< hbTrId("txt_calendar_setlabel_reminder_val_15_minutes_befo")
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   476
				<< hbTrId("txt_calendar_setlabel_reminder_val_30_minutes_befo")
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   477
				<< hbTrId("txt_calendar_setlabel_reminder_val_1_hour_before");
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   478
		mReminderItem->setContentWidgetData("items", reminderChoices);
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   479
	}
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   480
	mReminderItem->setEnabled(true);
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   481
	mEditorForm->addConnection(mReminderItem,
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   482
							SIGNAL(currentIndexChanged(int)), this,
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   483
							SLOT(handleReminderIndexChanged(int)));
70
hgs
parents: 64
diff changeset
   484
	OstTraceFunctionExit0( CALENEDITORREMINDERFIELD_UPDATEREMINDERCHOICESFORSAMEDAY_EXIT );
64
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   485
}
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   486
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   487
/*!
45
hgs
parents: 23
diff changeset
   488
	 Updates the reminder choices for an all day event.
hgs
parents: 23
diff changeset
   489
	 \param referenceDate to indicate past or not.
hgs
parents: 23
diff changeset
   490
 */
hgs
parents: 23
diff changeset
   491
void CalenEditorReminderField::updateReminderChoicesForAllDay(QDate referenceDate)
hgs
parents: 23
diff changeset
   492
{
51
hgs
parents: 45
diff changeset
   493
	OstTraceFunctionEntry0( CALENEDITORREMINDERFIELD_UPDATEREMINDERCHOICESFORALLDAY_ENTRY );
45
hgs
parents: 23
diff changeset
   494
	if (!mReminderTimeAdded){
hgs
parents: 23
diff changeset
   495
		insertReminderTimeField();
hgs
parents: 23
diff changeset
   496
	}
64
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   497
	// This functions rearranges the reminder options based on the date and time
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   498
	// To avoid the unecessary call to handleReminderIndexChanged 
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   499
	// the connection is removed.
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   500
	mEditorForm->removeConnection(mReminderItem,
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   501
								SIGNAL(currentIndexChanged(int)), this,
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   502
								SLOT(handleReminderIndexChanged(int)));
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   503
	
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   504
	// Since the combox box is not updated as per the current datetime
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   505
	// there can be a conflict between the previousIndex set on the combobox
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   506
	// and the actual index. This comes while populating an existing entry.
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   507
	// So the index has to be taken from the entry alarm 
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   508
	
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   509
	AgendaAlarm actualAlarm = mCalenEditor->editedEntry()->alarm();
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   510
	// Get the actual alarm index from the entry alarm which is been set
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   511
	int actualIndex = getReminderIndexBasedOnEntryAlarm();
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   512
	int offsetInMins = actualAlarm.timeOffset();
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   513
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   514
	// Calculate the alarm time
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   515
	QDateTime alarmDateTime;
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   516
	alarmDateTime.setDate(referenceDate);
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   517
	alarmDateTime.setTime(mCalenEditor->editedEntry()->startTime().time());
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   518
	QTime checkTime = alarmDateTime.time().addSecs(-(offsetInMins * 60));
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   519
	alarmDateTime.setTime(checkTime);
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   520
	
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   521
	// The combox is updated based on the reference date which is beed passed.
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   522
	// And the reminder time has to be set acoordingly
45
hgs
parents: 23
diff changeset
   523
	QStringList reminderChoicesForAllDay;
hgs
parents: 23
diff changeset
   524
	QDate tomorrow = QDate::currentDate().addDays(1);
hgs
parents: 23
diff changeset
   525
	QDate theDayAfterTomorrow = QDate::currentDate().addDays(2);
64
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   526
57
hgs
parents: 55
diff changeset
   527
	// If the event is on a past date the default alarm will be off.
45
hgs
parents: 23
diff changeset
   528
	if (referenceDate < QDate::currentDate() || 
hgs
parents: 23
diff changeset
   529
			referenceDate == QDate::currentDate()) {
hgs
parents: 23
diff changeset
   530
		// Set reminder off for past event.
hgs
parents: 23
diff changeset
   531
		reminderChoicesForAllDay << hbTrId("txt_calendar_setlabel_reminder_val_off");
hgs
parents: 23
diff changeset
   532
		mReminderItem->setContentWidgetData(QString("items"), 
64
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   533
		                                    reminderChoicesForAllDay);
57
hgs
parents: 55
diff changeset
   534
		mReminderItem->setEnabled(false);		
hgs
parents: 55
diff changeset
   535
		// Remove the reminder field if it was added
hgs
parents: 55
diff changeset
   536
		if(mReminderTimeAdded) {
hgs
parents: 55
diff changeset
   537
			removeReminderTimeField();
hgs
parents: 55
diff changeset
   538
		}
64
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   539
	} else if (theDayAfterTomorrow < referenceDate) {
57
hgs
parents: 55
diff changeset
   540
		// If the event is on a future date which is two days after the current date
hgs
parents: 55
diff changeset
   541
		// The options are off, on event day, 1 day before and 2 days before
45
hgs
parents: 23
diff changeset
   542
		reminderChoicesForAllDay 
64
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   543
			<< hbTrId("txt_calendar_setlabel_reminder_val_off")
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   544
			<< hbTrId("txt_calendar_setlabel_reminder_val_on_event_day")
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   545
			<< hbTrId("txt_calendar_setlabel_reminder_val_1_day_before")
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   546
			<< hbTrId("txt_calendar_setlabel_reminder_val_2_days_before");
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   547
		mReminderItem->setEnabled(true);
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   548
		mCustomReminderTimeItem->setEnabled(true);
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   549
		mReminderItem->setContentWidgetData(QString("items"), 
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   550
		                                    reminderChoicesForAllDay);
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   551
	} else if (theDayAfterTomorrow == referenceDate) {
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   552
		// If the event is on a future date which is two days after the current date
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   553
		// If the current time is before 6.00 pm (default for 2 days before)
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   554
		// The options are off, on event day, 1 day before and 2 days before
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   555
		if (QTime::currentTime() < QTime(18, 0, 0, 0)) {
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   556
			reminderChoicesForAllDay 
45
hgs
parents: 23
diff changeset
   557
				<< hbTrId("txt_calendar_setlabel_reminder_val_off")
hgs
parents: 23
diff changeset
   558
				<< hbTrId("txt_calendar_setlabel_reminder_val_on_event_day")
hgs
parents: 23
diff changeset
   559
				<< hbTrId("txt_calendar_setlabel_reminder_val_1_day_before")
hgs
parents: 23
diff changeset
   560
				<< hbTrId("txt_calendar_setlabel_reminder_val_2_days_before");
64
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   561
		}else {
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   562
			// If the event is on a future date which is two days after the current date
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   563
			// the current time is after 6.00 pm (default for 2 days before)
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   564
			// If its after the default time don't show the 2 days before option
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   565
			reminderChoicesForAllDay 
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   566
				<< hbTrId("txt_calendar_setlabel_reminder_val_off")
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   567
				<< hbTrId("txt_calendar_setlabel_reminder_val_on_event_day")
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   568
				<< hbTrId("txt_calendar_setlabel_reminder_val_1_day_before");
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   569
		}
45
hgs
parents: 23
diff changeset
   570
		mReminderItem->setEnabled(true);
hgs
parents: 23
diff changeset
   571
		mCustomReminderTimeItem->setEnabled(true);
57
hgs
parents: 55
diff changeset
   572
		mReminderItem->setContentWidgetData(QString("items"), 
64
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   573
		                                    reminderChoicesForAllDay);
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   574
	}else if (QTime::currentTime() < QTime(18, 0, 0, 0)) {
57
hgs
parents: 55
diff changeset
   575
		// If the event is on a future date which is one day after the current date
hgs
parents: 55
diff changeset
   576
		// and current time is before 6.00 pm.
hgs
parents: 55
diff changeset
   577
		// The options are off, on event day and 1 day before
45
hgs
parents: 23
diff changeset
   578
		reminderChoicesForAllDay 
64
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   579
			<< hbTrId("txt_calendar_setlabel_reminder_val_off")
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   580
			<< hbTrId("txt_calendar_setlabel_reminder_val_on_event_day")
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   581
			<< hbTrId("txt_calendar_setlabel_reminder_val_1_day_before");
57
hgs
parents: 55
diff changeset
   582
		mReminderItem->setEnabled(true);
hgs
parents: 55
diff changeset
   583
		mCustomReminderTimeItem->setEnabled(true);
hgs
parents: 55
diff changeset
   584
		mReminderItem->setContentWidgetData(QString("items"), 
hgs
parents: 55
diff changeset
   585
		                                    reminderChoicesForAllDay);
hgs
parents: 55
diff changeset
   586
	}else {
hgs
parents: 55
diff changeset
   587
		// If the event is on a future date which is one day after the current date
hgs
parents: 55
diff changeset
   588
		// and current time is after 6.00 pm.
hgs
parents: 55
diff changeset
   589
		// The options are off and on event day
hgs
parents: 55
diff changeset
   590
		reminderChoicesForAllDay 
64
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   591
			<< hbTrId("txt_calendar_setlabel_reminder_val_off")
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   592
			<< hbTrId("txt_calendar_setlabel_reminder_val_on_event_day");
45
hgs
parents: 23
diff changeset
   593
		mReminderItem->setEnabled(true);
hgs
parents: 23
diff changeset
   594
		mCustomReminderTimeItem->setEnabled(true);
57
hgs
parents: 55
diff changeset
   595
		mReminderItem->setContentWidgetData(QString("items"), 
hgs
parents: 55
diff changeset
   596
		                                    reminderChoicesForAllDay);
45
hgs
parents: 23
diff changeset
   597
	}
64
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   598
	// Get the count of the reminder options after the rearrangement 
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   599
	// based on the date and time 
57
hgs
parents: 55
diff changeset
   600
	int count = reminderItemsCount();
64
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   601
	// Set the reminder index
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   602
	
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   603
	if (count <= actualIndex || 
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   604
			alarmDateTime < QDateTime::currentDateTime() || 
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   605
			actualIndex == ReminderOff) {
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   606
		// This will be executed when the actual index is not 
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   607
		// available in the combobox or the alarm time is already passed
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   608
		// or the actual alarm is off
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   609
		// So set it as off
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   610
		mReminderItem->setContentWidgetData("currentIndex", ReminderOff);
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   611
		actualAlarm = AgendaAlarm();
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   612
		mCalenEditor->editedEntry()->setAlarm(actualAlarm);
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   613
		removeReminderTimeField();
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   614
	}else {
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   615
		// Set the actual reminder index
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   616
		mReminderItem->setContentWidgetData("currentIndex", actualIndex);
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   617
		if( actualIndex != ReminderOff) {
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   618
			if(!mReminderTimeAdded) {
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   619
				insertReminderTimeField();
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   620
			}
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   621
			mCalenEditor->editedEntry()->setAlarm(actualAlarm);
57
hgs
parents: 55
diff changeset
   622
			// Get the alarm time from the offset
64
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   623
			QTime alarmTime = alarmDateTime.time();
57
hgs
parents: 55
diff changeset
   624
			// Set the alarm time and display it on the button
hgs
parents: 55
diff changeset
   625
			mReminderTimeForAllDay.setHMS(
hgs
parents: 55
diff changeset
   626
					alarmTime.hour(),alarmTime.minute(),alarmTime.second());
hgs
parents: 55
diff changeset
   627
			setDisplayTime();
64
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   628
		}else {
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   629
			actualAlarm = AgendaAlarm();
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   630
			removeReminderTimeField();
57
hgs
parents: 55
diff changeset
   631
		}
45
hgs
parents: 23
diff changeset
   632
	}
64
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   633
	// Connect the slot for the index change
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   634
	mEditorForm->addConnection(mReminderItem,
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   635
								SIGNAL(currentIndexChanged(int)), this,
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   636
								SLOT(handleReminderIndexChanged(int)));
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   637
51
hgs
parents: 45
diff changeset
   638
	OstTraceFunctionExit0( CALENEDITORREMINDERFIELD_UPDATEREMINDERCHOICESFORALLDAY_EXIT );
45
hgs
parents: 23
diff changeset
   639
}
hgs
parents: 23
diff changeset
   640
hgs
parents: 23
diff changeset
   641
/*!
64
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   642
	 Gets the reminder index for all day events based on the alarm
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   643
	 which is saved for the entry
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   644
 */
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   645
int CalenEditorReminderField::getReminderIndexBasedOnEntryAlarm()
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   646
{
70
hgs
parents: 64
diff changeset
   647
	OstTraceFunctionEntry0( CALENEDITORREMINDERFIELD_GETREMINDERINDEXBASEDONENTRYALARM_ENTRY );
64
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   648
	// Get the appropriate reminder index depending on the value of time offset.
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   649
	AgendaAlarm actualAlarm = mCalenEditor->editedEntry()->alarm();
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   650
	QTime referenceTime(0, 0, 0);
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   651
	int index = ReminderOff;
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   652
	int offsetInMins = actualAlarm.timeOffset();
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   653
	if(offsetInMins == -1) {
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   654
		index = ReminderOff;
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   655
	}else if (offsetInMins < 0 || offsetInMins == 0) {
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   656
		index = ReminderOnEventDay;
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   657
		mReminderTimeForAllDay = referenceTime.addSecs(-(offsetInMins
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   658
				* 60));
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   659
	} else if (offsetInMins <= numberOfMinutesInADay) {
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   660
		index = ReminderOneDayBefore;
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   661
		mReminderTimeForAllDay = referenceTime.addSecs(-(offsetInMins
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   662
				* 60));
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   663
	} else {
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   664
		index = ReminderTwoDaysBefore;
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   665
		offsetInMins %= (24 * 60);
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   666
		mReminderTimeForAllDay = referenceTime.addSecs(-(offsetInMins
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   667
				* 60));
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   668
	}
70
hgs
parents: 64
diff changeset
   669
	OstTraceFunctionExit0( CALENEDITORREMINDERFIELD_GETREMINDERINDEXBASEDONENTRYALARM_EXIT );
64
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   670
	return index;
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   671
}
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   672
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   673
/*!
45
hgs
parents: 23
diff changeset
   674
	 Insert the reminder time field for an all day event.
hgs
parents: 23
diff changeset
   675
 */
hgs
parents: 23
diff changeset
   676
void CalenEditorReminderField::insertReminderTimeField()
hgs
parents: 23
diff changeset
   677
{
51
hgs
parents: 45
diff changeset
   678
	OstTraceFunctionEntry0( CALENEDITORREMINDERFIELD_INSERTREMINDERTIMEFIELD_ENTRY );
45
hgs
parents: 23
diff changeset
   679
	HbDataFormModelItem::DataItemType itemType =
hgs
parents: 23
diff changeset
   680
			static_cast<HbDataFormModelItem::DataItemType> (ReminderTimeOffset);
hgs
parents: 23
diff changeset
   681
	
hgs
parents: 23
diff changeset
   682
	// If all day item is not added then insert at one level before.
hgs
parents: 23
diff changeset
   683
	int index = CalenEditorPrivate::ReminderTimeForAllDayItem;
hgs
parents: 23
diff changeset
   684
	if(!mCalenEditor->isAllDayFieldAdded()) {
hgs
parents: 23
diff changeset
   685
		index = CalenEditorPrivate::ReminderTimeForAllDayItem - 1;
hgs
parents: 23
diff changeset
   686
	} 
hgs
parents: 23
diff changeset
   687
	mCustomReminderTimeItem = mCalenEditorModel->insertDataFormItem(
hgs
parents: 23
diff changeset
   688
							index,
hgs
parents: 23
diff changeset
   689
							itemType,
hgs
parents: 23
diff changeset
   690
							QString(hbTrId("txt_calendar_setlabel_reminder_time")),
hgs
parents: 23
diff changeset
   691
							mCalenEditorModel->invisibleRootItem());
hgs
parents: 23
diff changeset
   692
	if (currentReminderIndex() != 1){
hgs
parents: 23
diff changeset
   693
		mReminderTimeForAllDay.setHMS(18,0,0,0);
hgs
parents: 23
diff changeset
   694
	} else {
hgs
parents: 23
diff changeset
   695
		mReminderTimeForAllDay.setHMS(8,0,0,0);
hgs
parents: 23
diff changeset
   696
	}
hgs
parents: 23
diff changeset
   697
	
hgs
parents: 23
diff changeset
   698
	mEditorForm->addConnection(mCustomReminderTimeItem, SIGNAL(clicked()),
hgs
parents: 23
diff changeset
   699
	                           this, SLOT(launchReminderTimePicker()));
hgs
parents: 23
diff changeset
   700
	setDisplayTime();
hgs
parents: 23
diff changeset
   701
	mReminderTimeAdded = true;
51
hgs
parents: 45
diff changeset
   702
	OstTraceFunctionExit0( CALENEDITORREMINDERFIELD_INSERTREMINDERTIMEFIELD_EXIT );
45
hgs
parents: 23
diff changeset
   703
}
hgs
parents: 23
diff changeset
   704
hgs
parents: 23
diff changeset
   705
/*!
hgs
parents: 23
diff changeset
   706
	 Set the reminder time selected by the user.
hgs
parents: 23
diff changeset
   707
 */
hgs
parents: 23
diff changeset
   708
void CalenEditorReminderField::setDisplayTime()
hgs
parents: 23
diff changeset
   709
{
51
hgs
parents: 45
diff changeset
   710
	OstTraceFunctionEntry0( CALENEDITORREMINDERFIELD_SETDISPLAYTIME_ENTRY );
45
hgs
parents: 23
diff changeset
   711
	HbExtendedLocale locale = HbExtendedLocale::system();
hgs
parents: 23
diff changeset
   712
	QString timeString = locale.format(
hgs
parents: 23
diff changeset
   713
			mReminderTimeForAllDay,
hgs
parents: 23
diff changeset
   714
			r_qtn_time_usual_with_zero);
hgs
parents: 23
diff changeset
   715
	mCustomReminderTimeItem->setContentWidgetData("text", timeString);
75
hgs
parents: 70
diff changeset
   716
	
hgs
parents: 70
diff changeset
   717
	// If the reminder time picker is open and locale changes happen,
hgs
parents: 70
diff changeset
   718
	// we need to refresh them dynamically with proper time formats
hgs
parents: 70
diff changeset
   719
	if(!(mTimePicker.isNull())) {
hgs
parents: 70
diff changeset
   720
		if(locale.timeStyle() == HbExtendedLocale::Time12) {
hgs
parents: 70
diff changeset
   721
			mTimePicker->setDisplayFormat("hh:mm ap");	
hgs
parents: 70
diff changeset
   722
		}else {
hgs
parents: 70
diff changeset
   723
			mTimePicker->setDisplayFormat("hh:mm");
hgs
parents: 70
diff changeset
   724
		}
hgs
parents: 70
diff changeset
   725
		mTimePicker->setTime(mReminderTimeForAllDay);
hgs
parents: 70
diff changeset
   726
	}
51
hgs
parents: 45
diff changeset
   727
	OstTraceFunctionExit0( CALENEDITORREMINDERFIELD_SETDISPLAYTIME_EXIT );
45
hgs
parents: 23
diff changeset
   728
}
hgs
parents: 23
diff changeset
   729
hgs
parents: 23
diff changeset
   730
/*!
hgs
parents: 23
diff changeset
   731
	Remove the reminder time field if its not an all day event.
hgs
parents: 23
diff changeset
   732
 */
hgs
parents: 23
diff changeset
   733
void CalenEditorReminderField::removeReminderTimeField()
hgs
parents: 23
diff changeset
   734
{
51
hgs
parents: 45
diff changeset
   735
	OstTraceFunctionEntry0( CALENEDITORREMINDERFIELD_REMOVEREMINDERTIMEFIELD_ENTRY );
45
hgs
parents: 23
diff changeset
   736
	mReminderTimeAdded = false;
63
hgs
parents: 57
diff changeset
   737
	mEditorForm->removeConnection(mCustomReminderTimeItem, SIGNAL(clicked()),
hgs
parents: 57
diff changeset
   738
		                           this, SLOT(launchReminderTimePicker()));
45
hgs
parents: 23
diff changeset
   739
	if (mCustomReminderTimeItem) {
hgs
parents: 23
diff changeset
   740
		QModelIndex reminderIndex =
hgs
parents: 23
diff changeset
   741
				mCalenEditorModel->indexFromItem(mCustomReminderTimeItem);
hgs
parents: 23
diff changeset
   742
		mCalenEditorModel->removeItem(
hgs
parents: 23
diff changeset
   743
				mCalenEditorModel->index(
hgs
parents: 23
diff changeset
   744
						reminderIndex.row(), 0));
55
hgs
parents: 51
diff changeset
   745
		mCustomReminderTimeItem = 0;
45
hgs
parents: 23
diff changeset
   746
	}
51
hgs
parents: 45
diff changeset
   747
	OstTraceFunctionExit0( CALENEDITORREMINDERFIELD_REMOVEREMINDERTIMEFIELD_EXIT );
45
hgs
parents: 23
diff changeset
   748
}
hgs
parents: 23
diff changeset
   749
hgs
parents: 23
diff changeset
   750
/*!
hgs
parents: 23
diff changeset
   751
	 Launches time picker to select time.
hgs
parents: 23
diff changeset
   752
 */
hgs
parents: 23
diff changeset
   753
void CalenEditorReminderField::launchReminderTimePicker()
hgs
parents: 23
diff changeset
   754
{
51
hgs
parents: 45
diff changeset
   755
	OstTraceFunctionEntry0( CALENEDITORREMINDERFIELD_LAUNCHREMINDERTIMEPICKER_ENTRY );
57
hgs
parents: 55
diff changeset
   756
	
45
hgs
parents: 23
diff changeset
   757
	HbDialog *popUp = new HbDialog();
70
hgs
parents: 64
diff changeset
   758
	// Set the parent for the dialog
hgs
parents: 64
diff changeset
   759
	// Once the parent object is deleted the dialog will also be deleted
hgs
parents: 64
diff changeset
   760
	popUp->setParent(this);
45
hgs
parents: 23
diff changeset
   761
	popUp->setDismissPolicy(HbDialog::NoDismiss);
hgs
parents: 23
diff changeset
   762
	popUp->setTimeout(HbDialog::NoTimeout);
57
hgs
parents: 55
diff changeset
   763
	popUp->setAttribute( Qt::WA_DeleteOnClose, true );
45
hgs
parents: 23
diff changeset
   764
	popUp->setHeadingWidget( new HbLabel(
57
hgs
parents: 55
diff changeset
   765
				hbTrId("Reminder Time")));
hgs
parents: 55
diff changeset
   766
	
hgs
parents: 55
diff changeset
   767
	HbExtendedLocale locale = HbExtendedLocale::system();
hgs
parents: 55
diff changeset
   768
	mTimePicker = new HbDateTimePicker(mReminderTimeForAllDay);
64
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   769
	// Set the display format
57
hgs
parents: 55
diff changeset
   770
	if(locale.timeStyle() == HbExtendedLocale::Time12) {
hgs
parents: 55
diff changeset
   771
		mTimePicker->setDisplayFormat("hh:mm ap");	
hgs
parents: 55
diff changeset
   772
	}else {
hgs
parents: 55
diff changeset
   773
		mTimePicker->setDisplayFormat("hh:mm");
hgs
parents: 55
diff changeset
   774
	}
64
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   775
	
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   776
	// Check if the entry is repeating based on the repeatuntil item
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   777
	if(!mCalenEditor->isRepeatUntilItemAdded()) {
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   778
		int index = currentReminderIndex();
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   779
		QDate checkDate = mCalenEditor->editedEntry()->startTime().date();
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   780
		// Restrict the time picker to show the valid time 
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   781
		// depending on the reminder options
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   782
		// Take an offset of 5 mins
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   783
		QTime minTime = QTime::currentTime().addSecs(5 * 60);
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   784
		if(index == ReminderTwoDaysBefore &&  checkDate.addDays(-2) == QDate::currentDate()) {
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   785
				mTimePicker->setMinimumTime(minTime);
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   786
		}else if(index == ReminderOneDayBefore && checkDate.addDays(-1) == QDate::currentDate()) {
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   787
				mTimePicker->setMinimumTime(minTime);
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   788
		}else if(index == ReminderOnEventDay && checkDate == QDate::currentDate()) {
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   789
				mTimePicker->setMinimumTime(minTime);
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   790
		}
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   791
	}
57
hgs
parents: 55
diff changeset
   792
	mTimePicker->setTime(mReminderTimeForAllDay);
hgs
parents: 55
diff changeset
   793
	popUp->setContentWidget(mTimePicker);
hgs
parents: 55
diff changeset
   794
	
hgs
parents: 55
diff changeset
   795
	HbAction *okAction = new HbAction(hbTrId("txt_common_button_ok"), popUp);
45
hgs
parents: 23
diff changeset
   796
	popUp->addAction(okAction);
hgs
parents: 23
diff changeset
   797
	connect(okAction, SIGNAL(triggered()), this, SLOT(setReminderTimeForAllDay()));
hgs
parents: 23
diff changeset
   798
	popUp->addAction(new HbAction(hbTrId("txt_common_button_cancel"),
hgs
parents: 23
diff changeset
   799
	                                      popUp));
hgs
parents: 23
diff changeset
   800
	popUp->open();
51
hgs
parents: 45
diff changeset
   801
	OstTraceFunctionExit0( CALENEDITORREMINDERFIELD_LAUNCHREMINDERTIMEPICKER_EXIT );
45
hgs
parents: 23
diff changeset
   802
}
hgs
parents: 23
diff changeset
   803
hgs
parents: 23
diff changeset
   804
/*!
hgs
parents: 23
diff changeset
   805
	 Set the reminder time chosen.
hgs
parents: 23
diff changeset
   806
 */
hgs
parents: 23
diff changeset
   807
void CalenEditorReminderField::setReminderTimeForAllDay()
hgs
parents: 23
diff changeset
   808
{
51
hgs
parents: 45
diff changeset
   809
	OstTraceFunctionEntry0( CALENEDITORREMINDERFIELD_SETREMINDERTIMEFORALLDAY_ENTRY );
45
hgs
parents: 23
diff changeset
   810
	mReminderTimeForAllDay = mTimePicker->time();
hgs
parents: 23
diff changeset
   811
	if (mReminderTimeForAllDay.isValid()) {
hgs
parents: 23
diff changeset
   812
		// Change the time displayed to that selected by the user.
hgs
parents: 23
diff changeset
   813
		setDisplayTime();
64
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   814
		int offset = 0;
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   815
		if (currentReminderIndex() == ReminderOneDayBefore) {
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   816
			offset = 1;
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   817
		} else if (currentReminderIndex() == ReminderTwoDaysBefore) {
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   818
			offset = 2;
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   819
		}
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   820
		QDateTime startDateTimeForAllDay(
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   821
			mCalenEditor->editedEntry()->startTime().date(), QTime(0, 0, 0));
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   822
		QDateTime reminderDateTimeForAllDay; 
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   823
		reminderDateTimeForAllDay.setDate(
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   824
				mCalenEditor->editedEntry()->startTime().date().addDays(
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   825
						-offset));
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   826
		reminderDateTimeForAllDay.setTime(mReminderTimeForAllDay);
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   827
		int seconds =
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   828
				reminderDateTimeForAllDay.secsTo(startDateTimeForAllDay);
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   829
		int timeOffset = seconds / 60;
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   830
		mCustomReminderTimeItem->setEnabled(true);
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   831
		AgendaAlarm reminder;
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   832
		reminder.setTimeOffset(timeOffset);
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   833
		reminder.setAlarmSoundName(QString(" "));
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   834
		// Set the reminder to the entry.
1881ad52dc45 201033_03
hgs
parents: 63
diff changeset
   835
		mCalenEditor->editedEntry()->setAlarm(reminder);
45
hgs
parents: 23
diff changeset
   836
	}	
51
hgs
parents: 45
diff changeset
   837
	OstTraceFunctionExit0( CALENEDITORREMINDERFIELD_SETREMINDERTIMEFORALLDAY_EXIT );
45
hgs
parents: 23
diff changeset
   838
}
hgs
parents: 23
diff changeset
   839
hgs
parents: 23
diff changeset
   840
/*!
hgs
parents: 23
diff changeset
   841
	 Checks if reminder field is enabled or not.
hgs
parents: 23
diff changeset
   842
 */
hgs
parents: 23
diff changeset
   843
bool CalenEditorReminderField::isReminderFieldEnabled()
hgs
parents: 23
diff changeset
   844
{
51
hgs
parents: 45
diff changeset
   845
	OstTraceFunctionEntry0( CALENEDITORREMINDERFIELD_ISREMINDERFIELDENABLED_ENTRY );
45
hgs
parents: 23
diff changeset
   846
	return mReminderItem->isEnabled();
hgs
parents: 23
diff changeset
   847
}
hgs
parents: 23
diff changeset
   848
hgs
parents: 23
diff changeset
   849
/*!
hgs
parents: 23
diff changeset
   850
	 Returns the number of items present in the reminder option.
hgs
parents: 23
diff changeset
   851
 */
hgs
parents: 23
diff changeset
   852
int CalenEditorReminderField::reminderItemsCount()
hgs
parents: 23
diff changeset
   853
{
51
hgs
parents: 45
diff changeset
   854
	OstTraceFunctionEntry0( CALENEDITORREMINDERFIELD_REMINDERITEMSCOUNT_ENTRY );
45
hgs
parents: 23
diff changeset
   855
	QVariant strings = mReminderItem->contentWidgetData("items");
hgs
parents: 23
diff changeset
   856
	QStringList stringList(strings.toStringList());
hgs
parents: 23
diff changeset
   857
	int count = stringList.count();
51
hgs
parents: 45
diff changeset
   858
	OstTraceFunctionExit0( CALENEDITORREMINDERFIELD_REMINDERITEMSCOUNT_EXIT );
45
hgs
parents: 23
diff changeset
   859
	return count;
hgs
parents: 23
diff changeset
   860
}
hgs
parents: 23
diff changeset
   861
hgs
parents: 23
diff changeset
   862
/*!
hgs
parents: 23
diff changeset
   863
	 Returns the current chosen index.
hgs
parents: 23
diff changeset
   864
 */
hgs
parents: 23
diff changeset
   865
int CalenEditorReminderField::currentReminderIndex()
hgs
parents: 23
diff changeset
   866
{
51
hgs
parents: 45
diff changeset
   867
	OstTraceFunctionEntry0( CALENEDITORREMINDERFIELD_CURRENTREMINDERINDEX_ENTRY );
45
hgs
parents: 23
diff changeset
   868
	QVariant countVariant = mReminderItem->contentWidgetData("currentIndex");
hgs
parents: 23
diff changeset
   869
	int index = countVariant.toInt();
51
hgs
parents: 45
diff changeset
   870
	OstTraceFunctionExit0( CALENEDITORREMINDERFIELD_CURRENTREMINDERINDEX_EXIT );
45
hgs
parents: 23
diff changeset
   871
	return index;
hgs
parents: 23
diff changeset
   872
}
hgs
parents: 23
diff changeset
   873
hgs
parents: 23
diff changeset
   874
/*!
hgs
parents: 23
diff changeset
   875
	 Sets the chosen index as current index.
hgs
parents: 23
diff changeset
   876
	 /param index indicates the idex value to be set.
hgs
parents: 23
diff changeset
   877
 */
hgs
parents: 23
diff changeset
   878
void CalenEditorReminderField::setCurrentIndex(int index)
hgs
parents: 23
diff changeset
   879
{
51
hgs
parents: 45
diff changeset
   880
	OstTraceFunctionEntry0( CALENEDITORREMINDERFIELD_SETCURRENTINDEX_ENTRY );
45
hgs
parents: 23
diff changeset
   881
	mReminderItem->setContentWidgetData("currentIndex", index);
51
hgs
parents: 45
diff changeset
   882
	OstTraceFunctionExit0( CALENEDITORREMINDERFIELD_SETCURRENTINDEX_EXIT );
45
hgs
parents: 23
diff changeset
   883
}
hgs
parents: 23
diff changeset
   884
hgs
parents: 23
diff changeset
   885
/*!
hgs
parents: 23
diff changeset
   886
	 Disables the reminder time field.
hgs
parents: 23
diff changeset
   887
 */
hgs
parents: 23
diff changeset
   888
void CalenEditorReminderField::disableReminderTimeField()
hgs
parents: 23
diff changeset
   889
{
51
hgs
parents: 45
diff changeset
   890
	OstTraceFunctionEntry0( CALENEDITORREMINDERFIELD_DISABLEREMINDERTIMEFIELD_ENTRY );
45
hgs
parents: 23
diff changeset
   891
	if (mReminderTimeAdded) {
hgs
parents: 23
diff changeset
   892
		mCustomReminderTimeItem->setEnabled(false);
hgs
parents: 23
diff changeset
   893
	}
51
hgs
parents: 45
diff changeset
   894
	OstTraceFunctionExit0( CALENEDITORREMINDERFIELD_DISABLEREMINDERTIMEFIELD_EXIT );
45
hgs
parents: 23
diff changeset
   895
}
hgs
parents: 23
diff changeset
   896
hgs
parents: 23
diff changeset
   897
/*!
hgs
parents: 23
diff changeset
   898
	 Checks if reminder time field is added or not.
hgs
parents: 23
diff changeset
   899
 */
hgs
parents: 23
diff changeset
   900
bool CalenEditorReminderField::isReminderTimeForAllDayAdded()
hgs
parents: 23
diff changeset
   901
{
51
hgs
parents: 45
diff changeset
   902
	OstTraceFunctionEntry0( CALENEDITORREMINDERFIELD_ISREMINDERTIMEFORALLDAYADDED_ENTRY );
hgs
parents: 45
diff changeset
   903
	OstTraceFunctionExit0( CALENEDITORREMINDERFIELD_ISREMINDERTIMEFORALLDAYADDED_EXIT );
45
hgs
parents: 23
diff changeset
   904
	return mReminderTimeAdded;
hgs
parents: 23
diff changeset
   905
}
hgs
parents: 23
diff changeset
   906
23
fd30d51f876b Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   907
// End of file	--Don't remove this.