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