clock/clockui/clockviews/src/clockworldview.cpp
author hgs
Mon, 26 Jul 2010 13:54:38 +0530
changeset 55 2c54b51f39c4
parent 45 b6db4fd4947b
child 57 bb2d3e476f29
permissions -rw-r--r--
201029
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
18
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     1
/*
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     2
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     3
* All rights reserved.
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     4
* This component and the accompanying materials are made available
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     6
* which accompanies this distribution, and is available
c198609911f9 Revision: 201011
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".
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     8
*
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     9
* Initial Contributors:
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    11
*
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    12
* Contributors:
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    13
*
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    14
* Description:
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    15
* Definition file for class ClockWorldView.
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    16
*
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    17
*/
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    18
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    19
// System includes
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    20
#include <QGraphicsItem>
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    21
#include <QStandardItem>
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    22
#include <QStandardItemModel>
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    23
#include <HbInstance>
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    24
#include <HbAbstractViewItem>
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    25
#include <HbMenu>
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    26
#include <HbAction>
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    27
#include <HbStyleLoader>
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    28
#include <HbListView>
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    29
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    30
// User includes
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    31
#include "clockworldview.h"
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    32
#include "clockdocloader.h"
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    33
#include "clockappcontrollerif.h"
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    34
#include "clockcommon.h"
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    35
#include "settingsutility.h"
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    36
#include "timezoneclient.h"
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    37
#include "clockcityselectionlist.h"
45
hgs
parents: 18
diff changeset
    38
#include "clockhomecityitem.h"
18
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    39
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    40
/*!
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    41
	\class ClockWorldView
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    42
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    43
	The world clock view of the clock application.
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    44
 */
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    45
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    46
/*!
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    47
	Constructor.
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    48
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    49
	\param parent The parent of type QGraphicsWidget.
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    50
 */
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    51
ClockWorldView::ClockWorldView(QGraphicsItem *parent)
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    52
:HbView(parent),
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    53
 mSelectedItem(-1)
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    54
{
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    55
	// Timer for updating list data upon time change/update.
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    56
	mRefreshTimer = new QTimer();
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    57
	connect(
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    58
			mRefreshTimer, SIGNAL(timeout()),
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    59
			this, SLOT(refreshCityList()));
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    60
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    61
	// Create the model.
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    62
	mCityListModel = new QStandardItemModel();
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    63
}
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    64
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    65
/*!
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    66
	Destructor.
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    67
 */
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    68
ClockWorldView::~ClockWorldView()
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    69
{
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    70
	if (mDocLoader) {
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    71
		delete mDocLoader;
45
hgs
parents: 18
diff changeset
    72
		mDocLoader = 0;
18
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    73
	}
45
hgs
parents: 18
diff changeset
    74
	if(mCityListModel){
hgs
parents: 18
diff changeset
    75
		delete mCityListModel;
hgs
parents: 18
diff changeset
    76
	}
hgs
parents: 18
diff changeset
    77
	
hgs
parents: 18
diff changeset
    78
	HbStyleLoader::unregisterFilePath(":/style/hblistviewitem.css");
hgs
parents: 18
diff changeset
    79
	HbStyleLoader::unregisterFilePath(":/style/hblistviewitem.widgetml");
hgs
parents: 18
diff changeset
    80
	HbStyleLoader::unregisterFilePath(":/style/hblistviewitem_color.css");
18
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    81
}
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    82
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    83
/*!
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    84
	Called by the ClockViewManager after loading the view from the docml.
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    85
	The initializaion/setup of the view is done here.
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    86
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    87
	\param controller The ClockAppController object.
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    88
	\param docLoader Pointer to ClockDocLoader object.
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    89
 */
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    90
void ClockWorldView::setupView(
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    91
		ClockAppControllerIf &controllerIf,
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    92
		ClockDocLoader *docLoader)
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    93
{
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    94
	mDocLoader = docLoader;
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    95
	mAppControllerIf = &controllerIf;
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    96
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    97
	mTimezoneClient = controllerIf.timezoneClient();
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    98
	mSettingsUtility = controllerIf.settingsUtility();
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    99
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   100
	// Establish required connections.
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   101
	connect(
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   102
			mTimezoneClient, SIGNAL(timechanged()),
45
hgs
parents: 18
diff changeset
   103
			this, SLOT(updateAllLocationInfo()));
18
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   104
	connect(
45
hgs
parents: 18
diff changeset
   105
			mTimezoneClient, SIGNAL(autoTimeUpdateChanged(int)),
hgs
parents: 18
diff changeset
   106
			this, SLOT(updateCurrentLocationInfo(int)));
18
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   107
	connect(
45
hgs
parents: 18
diff changeset
   108
			mTimezoneClient, SIGNAL(cityUpdated()),
hgs
parents: 18
diff changeset
   109
			this, SLOT(updateAllLocationInfo()));
18
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   110
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   111
	mDisplayWorldClockView = static_cast<HbAction *> (
45
hgs
parents: 18
diff changeset
   112
			mDocLoader->findObject("worldClockAction"));
18
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   113
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   114
	mDisplayWorldClockView->setCheckable(true);
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   115
	mDisplayWorldClockView->setChecked(true);
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   116
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   117
	connect(
45
hgs
parents: 18
diff changeset
   118
			mDisplayWorldClockView, SIGNAL(changed()),
hgs
parents: 18
diff changeset
   119
			this, SLOT(refreshWorldView()));
18
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   120
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   121
	// Get the currently added locations to the list.
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   122
	mCityInfoList = mTimezoneClient->getSavedLocations();
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   123
45
hgs
parents: 18
diff changeset
   124
	// Get the homecity widget.
hgs
parents: 18
diff changeset
   125
	mHomeCityWidget = qobject_cast<ClockHomeCityItem *>(
hgs
parents: 18
diff changeset
   126
			mDocLoader->findWidget(CLOCK_WORLD_HOMECITY));
hgs
parents: 18
diff changeset
   127
	
hgs
parents: 18
diff changeset
   128
	// Get the city list item.
18
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   129
	mCityListView = qobject_cast<HbListView *> (
45
hgs
parents: 18
diff changeset
   130
			mDocLoader->findWidget(CLOCK_WORLD_CITYLIST));
hgs
parents: 18
diff changeset
   131
	HbStyleLoader::registerFilePath(":/style/hblistviewitem.css");
hgs
parents: 18
diff changeset
   132
	HbStyleLoader::registerFilePath(":/style/hblistviewitem.widgetml");
hgs
parents: 18
diff changeset
   133
	HbStyleLoader::registerFilePath(":/style/hblistviewitem_color.css");
55
hgs
parents: 45
diff changeset
   134
	mCityListView->setLayoutName("citylist");
18
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   135
	mCityListView->setModel(mCityListModel);
45
hgs
parents: 18
diff changeset
   136
	
18
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   137
	// Get the toolbar/menu actions.
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   138
	mAddCityAction = static_cast<HbAction *> (
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   139
			mDocLoader->findObject("addCityAction"));
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   140
	connect(
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   141
			mAddCityAction, SIGNAL(triggered()),
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   142
			this, SLOT(handleAddLocation()));
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   143
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   144
	mShowAlarmsViewAction = static_cast<HbAction *> (
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   145
			mDocLoader->findObject("alarmsAction"));
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   146
	connect(
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   147
			mShowAlarmsViewAction, SIGNAL(triggered()),
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   148
			this, SLOT(showAlarmsView()));
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   149
45
hgs
parents: 18
diff changeset
   150
	HbMainWindow *window = hbInstance->allMainWindows().first();
18
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   151
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   152
	connect(
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   153
			window, SIGNAL(orientationChanged(Qt::Orientation)),
45
hgs
parents: 18
diff changeset
   154
			this, SLOT(loadSection(Qt::Orientation)));
18
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   155
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   156
	if (mCityInfoList.count() > 0) {
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   157
		// There is atleast one city. Refresh needed.
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   158
		// Calculate after how much time the refresh has to happen.
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   159
		QTime currentTime = QDateTime::currentDateTime().time();
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   160
		int after = 60 - currentTime.second();
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   161
		mRefreshTimer->start(after * 1000);
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   162
	}
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   163
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   164
	connect(
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   165
			mCityListView,
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   166
			SIGNAL(longPressed(HbAbstractViewItem *, const QPointF &)),
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   167
			this,
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   168
			SLOT(handleItemLongPressed(HbAbstractViewItem *, const QPointF &)));
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   169
45
hgs
parents: 18
diff changeset
   170
	// Update current location info.
hgs
parents: 18
diff changeset
   171
	updateCurrentLocationInfo(mTimezoneClient->timeUpdateOn());
hgs
parents: 18
diff changeset
   172
18
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   173
	// Populate the list.
45
hgs
parents: 18
diff changeset
   174
	for (int index = 0; index < mCityInfoList.count(); index++) {
18
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   175
		addCityToList(mCityInfoList.at(index));
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   176
	}
45
hgs
parents: 18
diff changeset
   177
	
hgs
parents: 18
diff changeset
   178
	// Adding the "Add city" in options menu.
hgs
parents: 18
diff changeset
   179
	mAddCityMenuAction = new HbAction(
hgs
parents: 18
diff changeset
   180
			QString(hbTrId("txt_clock_opt_add_city")),this);
hgs
parents: 18
diff changeset
   181
	menu()->addAction(mAddCityMenuAction);
hgs
parents: 18
diff changeset
   182
	mAddCityMenuAction->setVisible(true);
hgs
parents: 18
diff changeset
   183
	connect(
hgs
parents: 18
diff changeset
   184
			mAddCityMenuAction, SIGNAL(triggered()),
hgs
parents: 18
diff changeset
   185
			this, SLOT(handleAddLocation()));
18
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   186
45
hgs
parents: 18
diff changeset
   187
	// Check for disabling of addCityAction in view toolbar.
hgs
parents: 18
diff changeset
   188
	if ((KMaximumCityListCount-1) == mCityInfoList.count()) {
hgs
parents: 18
diff changeset
   189
		mAddCityAction->setEnabled(false);
hgs
parents: 18
diff changeset
   190
		mAddCityMenuAction->setVisible(false);
hgs
parents: 18
diff changeset
   191
	}
18
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   192
}
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   193
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   194
/*!
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   195
	Refreshes the data in the city list.
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   196
 */
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   197
void ClockWorldView::refreshCityList()
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   198
{
45
hgs
parents: 18
diff changeset
   199
	updateCurrentLocationInfo(mTimezoneClient->timeUpdateOn());
18
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   200
	int cityInfoCount = mCityInfoList.count();
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   201
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   202
	if (cityInfoCount) {
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   203
		QStandardItem *item = 0;
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   204
		for (int infoIndex = 0; infoIndex < cityInfoCount; infoIndex++) {
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   205
			item = mCityListModel->item(infoIndex);
45
hgs
parents: 18
diff changeset
   206
			item->setData(
hgs
parents: 18
diff changeset
   207
					getCityListDisplayString(mCityInfoList.at(infoIndex)),
hgs
parents: 18
diff changeset
   208
					Qt::DisplayRole);
hgs
parents: 18
diff changeset
   209
			item->setData(
hgs
parents: 18
diff changeset
   210
					getCityListDecorationString(mCityInfoList.at(infoIndex)),
hgs
parents: 18
diff changeset
   211
					Qt::DecorationRole);
18
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   212
		}
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   213
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   214
		// Start the timer again for one minute.
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   215
		QTimer::singleShot(60 * 1000, this, SLOT(refreshCityList()));
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   216
	}
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   217
}
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   218
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   219
/*!
45
hgs
parents: 18
diff changeset
   220
	Updates the current location info.
18
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   221
 */
45
hgs
parents: 18
diff changeset
   222
void ClockWorldView::updateCurrentLocationInfo(int networkTime)
18
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   223
{
45
hgs
parents: 18
diff changeset
   224
	HbMainWindow *window = hbInstance->allMainWindows().first();
hgs
parents: 18
diff changeset
   225
	Qt::Orientation currentOrienation = window->orientation();
hgs
parents: 18
diff changeset
   226
	loadSection(currentOrienation);
hgs
parents: 18
diff changeset
   227
hgs
parents: 18
diff changeset
   228
	if (!networkTime) {
hgs
parents: 18
diff changeset
   229
		// Get the updated home city.
hgs
parents: 18
diff changeset
   230
		LocationInfo homeCity = mTimezoneClient->getCurrentZoneInfoL();
hgs
parents: 18
diff changeset
   231
hgs
parents: 18
diff changeset
   232
		QMap<QString, QVariant> itemList;
hgs
parents: 18
diff changeset
   233
		QString value;
hgs
parents: 18
diff changeset
   234
		QDateTime dateTime = QDateTime::currentDateTime();
hgs
parents: 18
diff changeset
   235
55
hgs
parents: 45
diff changeset
   236
		// Show the date.
45
hgs
parents: 18
diff changeset
   237
		QString dateInfo = dateTime.toString(
hgs
parents: 18
diff changeset
   238
				mSettingsUtility->dateFormatString());
hgs
parents: 18
diff changeset
   239
		itemList.insert(value.setNum(ClockHomeCityItem::Date), dateInfo);
hgs
parents: 18
diff changeset
   240
hgs
parents: 18
diff changeset
   241
		// Show the city and country name.
hgs
parents: 18
diff changeset
   242
		QString placeInfo =
hgs
parents: 18
diff changeset
   243
				homeCity.cityName + tr(", ") + homeCity.countryName;
hgs
parents: 18
diff changeset
   244
		itemList.insert(value.setNum(ClockHomeCityItem::City), placeInfo);
18
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   245
45
hgs
parents: 18
diff changeset
   246
		// Show the time at that location.
hgs
parents: 18
diff changeset
   247
		QString timeInfo = dateTime.toString(
hgs
parents: 18
diff changeset
   248
				mSettingsUtility->timeFormatString());
hgs
parents: 18
diff changeset
   249
		itemList.insert(value.setNum(ClockHomeCityItem::Time), timeInfo);
18
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   250
45
hgs
parents: 18
diff changeset
   251
		//Use the home city specific icons.
hgs
parents: 18
diff changeset
   252
		// Display day/night indicators.
hgs
parents: 18
diff changeset
   253
		QString dayNightIconPath = "";
hgs
parents: 18
diff changeset
   254
		if (isDay(dateTime)) {
hgs
parents: 18
diff changeset
   255
			dayNightIconPath = "qtg_large_clock_home";
hgs
parents: 18
diff changeset
   256
		} else {
hgs
parents: 18
diff changeset
   257
			dayNightIconPath = "qtg_large_clock_night_home";
hgs
parents: 18
diff changeset
   258
		}
hgs
parents: 18
diff changeset
   259
		itemList.insert(value.setNum(
hgs
parents: 18
diff changeset
   260
				ClockHomeCityItem::DayNightIndicator), dayNightIconPath);
hgs
parents: 18
diff changeset
   261
hgs
parents: 18
diff changeset
   262
		// Show dst icon when needed.
55
hgs
parents: 45
diff changeset
   263
		QString dstIconPath = " ";
45
hgs
parents: 18
diff changeset
   264
		if (homeCity.dstOn) {
55
hgs
parents: 45
diff changeset
   265
			dstIconPath = "qtg_mono_day_light_saving_time";
45
hgs
parents: 18
diff changeset
   266
		}
55
hgs
parents: 45
diff changeset
   267
		itemList.insert(value.setNum(ClockHomeCityItem::Dst), dstIconPath);
hgs
parents: 45
diff changeset
   268
		
45
hgs
parents: 18
diff changeset
   269
		mHomeCityWidget->setHomeCityItemData(itemList);
hgs
parents: 18
diff changeset
   270
	}
18
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   271
}
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   272
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   273
/*!
45
hgs
parents: 18
diff changeset
   274
	Handles the long press on each item in the citylist.
hgs
parents: 18
diff changeset
   275
	Displays a list item specific context menu.
18
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   276
45
hgs
parents: 18
diff changeset
   277
	\param item The HbAbstractViewItem that was long pressed.
hgs
parents: 18
diff changeset
   278
	\param coords The position where mouse was pressed.
hgs
parents: 18
diff changeset
   279
 */
18
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   280
void ClockWorldView::handleItemLongPressed(
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   281
		HbAbstractViewItem *item, const QPointF &coords)
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   282
{
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   283
	// Get the ndex of the selected item.
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   284
	mSelectedItem = item->modelIndex().row();
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   285
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   286
	// On long press we display item specific context menu.
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   287
	HbMenu *itemContextMenu = new HbMenu();
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   288
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   289
	// Add the actions to the context menu.
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   290
	mSetCurrentLocationAction = itemContextMenu->addAction(
45
hgs
parents: 18
diff changeset
   291
			hbTrId("txt_clk_menu_set_as_current_location"));
18
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   292
	mRemoveCityAction = itemContextMenu->addAction(
45
hgs
parents: 18
diff changeset
   293
			hbTrId("txt_clk_menu_delete"));
18
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   294
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   295
	// Show the menu.
45
hgs
parents: 18
diff changeset
   296
	itemContextMenu->open(this, SLOT(selectedMenuAction(HbAction*)));
hgs
parents: 18
diff changeset
   297
	itemContextMenu->setPreferredPos(coords);
hgs
parents: 18
diff changeset
   298
	itemContextMenu->setAttribute( Qt::WA_DeleteOnClose,true);
18
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   299
}
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   300
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   301
/*!
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   302
	This slot is called when Add location action is triggered. It is responsible
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   303
	for launching the city selection list.
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   304
 */
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   305
void ClockWorldView::handleAddLocation()
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   306
{
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   307
	// Construct the city selection list and show the same.
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   308
	mCitySelectionList = new ClockCitySelectionList(mTimezoneClient, this);
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   309
	connect(
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   310
			mCitySelectionList, SIGNAL(citySelected(LocationInfo)),
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   311
			this, SLOT(handleCitySelected(LocationInfo)));
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   312
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   313
	// Show the city list.
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   314
	mCitySelectionList->showCityList();
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   315
}
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   316
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   317
/*!
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   318
	This slot handles delete action on the city list. It removes the item from
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   319
	the view.
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   320
 */
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   321
void ClockWorldView::handleDeleteAction()
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   322
{
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   323
	if (-1 != mSelectedItem) {
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   324
		QStandardItem *item = mCityListModel->takeItem(mSelectedItem);
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   325
		mCityListModel->removeRow(mSelectedItem);
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   326
		delete item;
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   327
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   328
		mCityInfoList.removeAt(mSelectedItem);
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   329
		mSelectedItem = -1;
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   330
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   331
		// Update the data file.
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   332
		mTimezoneClient->saveLocations(mCityInfoList);
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   333
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   334
		if (mCityInfoList.count() <= 0) {
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   335
			// No need to refresh the list anymore.
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   336
			mRefreshTimer->stop();
45
hgs
parents: 18
diff changeset
   337
		} else if (mCityInfoList.count() < (KMaximumCityListCount-1) &&
hgs
parents: 18
diff changeset
   338
				!mAddCityAction->isEnabled()) {
hgs
parents: 18
diff changeset
   339
			mAddCityAction->setEnabled(true);
hgs
parents: 18
diff changeset
   340
			mAddCityMenuAction->setVisible(true);
18
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   341
		}
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   342
	}
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   343
}
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   344
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   345
/*!
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   346
	This slot sets the selected city as the current location.
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   347
 */
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   348
void ClockWorldView::handleSetAsCurrentLocationAction()
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   349
{
45
hgs
parents: 18
diff changeset
   350
	// Get the info of the selected item.
hgs
parents: 18
diff changeset
   351
	LocationInfo newHomeCity = mCityInfoList[mSelectedItem];
hgs
parents: 18
diff changeset
   352
18
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   353
	// Check if time update is set to ON.
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   354
	// If yes, reset it to OFF and change the home location.
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   355
	if (mTimezoneClient->timeUpdateOn()) {
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   356
		mTimezoneClient->setTimeUpdateOn(false);
45
hgs
parents: 18
diff changeset
   357
hgs
parents: 18
diff changeset
   358
		QStandardItem *item = mCityListModel->takeItem(mSelectedItem);
hgs
parents: 18
diff changeset
   359
		mCityListModel->removeRow(mSelectedItem);
hgs
parents: 18
diff changeset
   360
		delete item;
hgs
parents: 18
diff changeset
   361
hgs
parents: 18
diff changeset
   362
		mCityInfoList.removeAt(mSelectedItem);
18
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   363
	} else {
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   364
		// The current location and home city should be swapped.
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   365
		// Store the info of current home city.
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   366
		LocationInfo oldHomeCity = mTimezoneClient->getCurrentZoneInfoL();
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   367
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   368
		// Update the info list.
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   369
		mCityInfoList.removeAt(mSelectedItem);
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   370
		mCityInfoList.insert(mSelectedItem, oldHomeCity);
45
hgs
parents: 18
diff changeset
   371
hgs
parents: 18
diff changeset
   372
	}
hgs
parents: 18
diff changeset
   373
	// Update the home city with the timezone server.
hgs
parents: 18
diff changeset
   374
	mTimezoneClient->setAsCurrentLocationL(newHomeCity);
18
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   375
45
hgs
parents: 18
diff changeset
   376
	// Update the current location info.
hgs
parents: 18
diff changeset
   377
	updateCurrentLocationInfo(mTimezoneClient->timeUpdateOn());
18
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   378
45
hgs
parents: 18
diff changeset
   379
	// Update the offset difference in each list item.
hgs
parents: 18
diff changeset
   380
	refreshCityList();
18
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   381
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   382
	// Update the data file.
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   383
	mTimezoneClient->saveLocations(mCityInfoList);
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   384
	mSelectedItem = -1;
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   385
}
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   386
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   387
/*!
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   388
	Slot to handle the case when a city has been selected in from the city
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   389
	selection list.
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   390
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   391
	\param info of type LocationInfo which contains the city selected.
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   392
 */
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   393
void ClockWorldView::handleCitySelected(LocationInfo info)
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   394
{
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   395
	// Info is invalid if the timezoneId is set to -1. We don't do anything in
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   396
	// that case.
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   397
	if (-1 != info.timezoneId) {
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   398
		// Now we check if the city is already added in the list.
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   399
		bool proceed = true;
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   400
		for (int i = 0; i < mCityInfoList.count(); i++) {
45
hgs
parents: 18
diff changeset
   401
			if (info.timezoneId == mCityInfoList.at(i).timezoneId
hgs
parents: 18
diff changeset
   402
					&& (info.cityName == mCityInfoList.at(i).cityName)
hgs
parents: 18
diff changeset
   403
					&& (info.countryName == mCityInfoList.at(i).countryName) ) {
18
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   404
				proceed = false;
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   405
				break;
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   406
			}
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   407
		}
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   408
45
hgs
parents: 18
diff changeset
   409
		LocationInfo currentCity = mTimezoneClient->getCurrentZoneInfoL();
18
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   410
		// Check if the selected city is not the home city.
45
hgs
parents: 18
diff changeset
   411
		if (
hgs
parents: 18
diff changeset
   412
				(info.timezoneId == currentCity.timezoneId)
hgs
parents: 18
diff changeset
   413
				&& (info.cityName == currentCity.cityName)
hgs
parents: 18
diff changeset
   414
				&& (info.countryName == currentCity.countryName)) {
18
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   415
			proceed = false;
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   416
		}
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   417
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   418
		if (proceed) {
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   419
			// This is new city totally. So add it.
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   420
			// Add the city information to the list
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   421
			mCityInfoList.append(info);
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   422
			QModelIndex index = addCityToList(info);
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   423
			mCityListView->scrollTo(index);
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   424
			mTimezoneClient->saveLocations(mCityInfoList);
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   425
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   426
			// Start the refresh timer if it was stopped previously.
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   427
			if (!mRefreshTimer->isActive()) {
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   428
				// Calculate after how much time the refresh has to happen.
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   429
				QTime currentTime = QDateTime::currentDateTime().time();
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   430
				int after = 60 - currentTime.second();
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   431
				mRefreshTimer->start(after * 1000);
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   432
			}
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   433
		}
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   434
	}
45
hgs
parents: 18
diff changeset
   435
	if ((KMaximumCityListCount-1) == mCityInfoList.count() &&
hgs
parents: 18
diff changeset
   436
			mAddCityAction->isEnabled()) {
hgs
parents: 18
diff changeset
   437
		mAddCityAction->setEnabled(false);
hgs
parents: 18
diff changeset
   438
		mAddCityMenuAction->setVisible(false);
hgs
parents: 18
diff changeset
   439
	}
18
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   440
	// Cleanup.
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   441
	mCitySelectionList->deleteLater();
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   442
}
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   443
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   444
/*!
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   445
	Navigates to the clock alarms view.
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   446
 */
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   447
void ClockWorldView::showAlarmsView()
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   448
{
45
hgs
parents: 18
diff changeset
   449
	mAppControllerIf->switchToView(MainView);
hgs
parents: 18
diff changeset
   450
}
18
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   451
45
hgs
parents: 18
diff changeset
   452
/*!
hgs
parents: 18
diff changeset
   453
	Slot which gets called when `World Clock' action is triggered from the view
hgs
parents: 18
diff changeset
   454
	toolbar. This is responsible for reloading the content of worldclock view.
hgs
parents: 18
diff changeset
   455
 */
hgs
parents: 18
diff changeset
   456
void ClockWorldView::refreshWorldView()
hgs
parents: 18
diff changeset
   457
{
hgs
parents: 18
diff changeset
   458
	mDisplayWorldClockView->setChecked(true);
18
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   459
}
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   460
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   461
/*!
45
hgs
parents: 18
diff changeset
   462
	Loads the appropriate section based on window orientaion.
18
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   463
 */
45
hgs
parents: 18
diff changeset
   464
void ClockWorldView::loadSection(Qt::Orientation orientation)
18
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   465
{
45
hgs
parents: 18
diff changeset
   466
	bool networkTime = mTimezoneClient->timeUpdateOn();
hgs
parents: 18
diff changeset
   467
	bool loadSuccess;
hgs
parents: 18
diff changeset
   468
	if (Qt::Horizontal == orientation) {
hgs
parents: 18
diff changeset
   469
		if (networkTime) {
hgs
parents: 18
diff changeset
   470
			// Do not show home city.
hgs
parents: 18
diff changeset
   471
			mDocLoader->load(
hgs
parents: 18
diff changeset
   472
					CLOCK_WORLD_VIEW_DOCML,
hgs
parents: 18
diff changeset
   473
					CLOCK_WORLD_VIEW_LANDSCAPE_NOHOMECITY_SECTION,
hgs
parents: 18
diff changeset
   474
					&loadSuccess);
hgs
parents: 18
diff changeset
   475
			mHomeCityWidget->hide();
hgs
parents: 18
diff changeset
   476
		} else {
hgs
parents: 18
diff changeset
   477
			mDocLoader->load(
hgs
parents: 18
diff changeset
   478
					CLOCK_WORLD_VIEW_DOCML,
hgs
parents: 18
diff changeset
   479
					CLOCK_WORLD_VIEW_LANDSCAPE_HOMECITY_SECTION,
hgs
parents: 18
diff changeset
   480
					&loadSuccess);
hgs
parents: 18
diff changeset
   481
			mHomeCityWidget->show();
18
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   482
		}
45
hgs
parents: 18
diff changeset
   483
	} else if (Qt::Vertical == orientation) {
hgs
parents: 18
diff changeset
   484
		if (networkTime) {
hgs
parents: 18
diff changeset
   485
			// Do not show home city.
hgs
parents: 18
diff changeset
   486
			mDocLoader->load(
hgs
parents: 18
diff changeset
   487
					CLOCK_WORLD_VIEW_DOCML,
hgs
parents: 18
diff changeset
   488
					CLOCK_WORLD_VIEW_PORTRAIT_NOHOMECITY_SECTION,
hgs
parents: 18
diff changeset
   489
					&loadSuccess);
hgs
parents: 18
diff changeset
   490
			mHomeCityWidget->hide();
hgs
parents: 18
diff changeset
   491
		} else {
hgs
parents: 18
diff changeset
   492
			// Show home city.
hgs
parents: 18
diff changeset
   493
			mDocLoader->load(
hgs
parents: 18
diff changeset
   494
					CLOCK_WORLD_VIEW_DOCML,
hgs
parents: 18
diff changeset
   495
					CLOCK_WORLD_VIEW_PORTRAIT_HOMECITY_SECTION,
hgs
parents: 18
diff changeset
   496
					&loadSuccess);
hgs
parents: 18
diff changeset
   497
			mHomeCityWidget->show();
18
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   498
		}
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   499
	}
45
hgs
parents: 18
diff changeset
   500
	mCityListView->update();
18
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   501
}
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   502
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   503
/*!
45
hgs
parents: 18
diff changeset
   504
	Slot which gets called for timeChanged signal of timezone client.
hgs
parents: 18
diff changeset
   505
	Refreshes both homecity & city list.
18
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   506
 */
45
hgs
parents: 18
diff changeset
   507
void ClockWorldView::updateAllLocationInfo()
18
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   508
{
45
hgs
parents: 18
diff changeset
   509
	updateCurrentLocationInfo(mTimezoneClient->timeUpdateOn());
hgs
parents: 18
diff changeset
   510
	updateCityList();
hgs
parents: 18
diff changeset
   511
	refreshCityList();
18
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   512
}
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   513
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   514
/*!
45
hgs
parents: 18
diff changeset
   515
	Slot to handle the selected context menu actions
18
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   516
 */
45
hgs
parents: 18
diff changeset
   517
void ClockWorldView::selectedMenuAction(HbAction *action)
18
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   518
{
45
hgs
parents: 18
diff changeset
   519
	if (action == mSetCurrentLocationAction) {
hgs
parents: 18
diff changeset
   520
		handleSetAsCurrentLocationAction();
hgs
parents: 18
diff changeset
   521
	} else if (action == mRemoveCityAction) {
hgs
parents: 18
diff changeset
   522
		handleDeleteAction();
18
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   523
	}
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   524
}
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   525
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   526
/*!
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   527
	Adds the location info to the city list.
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   528
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   529
	\param locationInfo Details of the city to be added to the list.
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   530
 */
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   531
QModelIndex ClockWorldView::addCityToList(const LocationInfo& locationInfo)
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   532
{
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   533
	// Here we construct a model item and add it to the list model.
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   534
	QStandardItem *modelItem = new QStandardItem();
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   535
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   536
	// Add the item to the model.
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   537
	mCityListModel->appendRow(modelItem);
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   538
45
hgs
parents: 18
diff changeset
   539
	QModelIndex index = mCityListModel->indexFromItem(modelItem);
hgs
parents: 18
diff changeset
   540
	mCityListModel->setData(
hgs
parents: 18
diff changeset
   541
			index, getCityListDisplayString(locationInfo), Qt::DisplayRole);
hgs
parents: 18
diff changeset
   542
	mCityListModel->setData(
hgs
parents: 18
diff changeset
   543
			index, getCityListDecorationString(locationInfo),
hgs
parents: 18
diff changeset
   544
			Qt::DecorationRole);
hgs
parents: 18
diff changeset
   545
hgs
parents: 18
diff changeset
   546
	return index;
18
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   547
}
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   548
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   549
/*!
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   550
	Checks if the given time is day or night.
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   551
	6:00 AM and 6:00 PM is considered as day. Otherwise night.
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   552
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   553
	\param dateTime Time for which check has to be performed.
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   554
	\return bool True if it is day otherwise false.
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   555
 */
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   556
bool ClockWorldView::isDay(QDateTime dateTime)
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   557
{
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   558
	// It is day between 6:00 AM and 6:00 PM. Otherwise night.
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   559
	if (17 < dateTime.time().hour() || 6 > dateTime.time().hour()) {
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   560
		return false;
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   561
	}
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   562
	return true;
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   563
}
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   564
45
hgs
parents: 18
diff changeset
   565
/*!
hgs
parents: 18
diff changeset
   566
	Returns the QVariantList for citylist to be set for DisplayRole.
hgs
parents: 18
diff changeset
   567
	
hgs
parents: 18
diff changeset
   568
	/param locationInfo Details of the city to be added to the list.
hgs
parents: 18
diff changeset
   569
 */
hgs
parents: 18
diff changeset
   570
QVariantList ClockWorldView::getCityListDisplayString(
hgs
parents: 18
diff changeset
   571
		const LocationInfo& locationInfo)
hgs
parents: 18
diff changeset
   572
{
hgs
parents: 18
diff changeset
   573
	QVariantList displayString;
hgs
parents: 18
diff changeset
   574
	QDateTime dateTime = QDateTime::currentDateTime();
hgs
parents: 18
diff changeset
   575
	dateTime = dateTime.toUTC();
hgs
parents: 18
diff changeset
   576
	dateTime = dateTime.addSecs(locationInfo.zoneOffset * 60);
hgs
parents: 18
diff changeset
   577
hgs
parents: 18
diff changeset
   578
	// Show the date. If date is current date then show 'today'.
hgs
parents: 18
diff changeset
   579
	QString dateInfo = dateTime.toString(mSettingsUtility->dateFormatString());
hgs
parents: 18
diff changeset
   580
	if (dateTime.date() == QDate::currentDate()) {
hgs
parents: 18
diff changeset
   581
		dateInfo = hbTrId("txt_clock_main_view_dblist_daily_val_today");
hgs
parents: 18
diff changeset
   582
	}
hgs
parents: 18
diff changeset
   583
	displayString.append(dateInfo);
hgs
parents: 18
diff changeset
   584
hgs
parents: 18
diff changeset
   585
	// Show the city and country name.
hgs
parents: 18
diff changeset
   586
	QString placeInfo =
hgs
parents: 18
diff changeset
   587
			locationInfo.cityName + tr(", ") + locationInfo.countryName;
hgs
parents: 18
diff changeset
   588
	displayString.append(placeInfo);
hgs
parents: 18
diff changeset
   589
hgs
parents: 18
diff changeset
   590
	// Get the homecity information.
hgs
parents: 18
diff changeset
   591
	LocationInfo homeCityInfo = mTimezoneClient->getCurrentZoneInfoL();
hgs
parents: 18
diff changeset
   592
	// Find out if the city being added has an offset greater than or less than
hgs
parents: 18
diff changeset
   593
	// the homecity offset.
hgs
parents: 18
diff changeset
   594
	QString offsetDifference;
hgs
parents: 18
diff changeset
   595
	if (locationInfo.zoneOffset < homeCityInfo.zoneOffset) {
hgs
parents: 18
diff changeset
   596
		offsetDifference += "-";
hgs
parents: 18
diff changeset
   597
	} else if (locationInfo.zoneOffset > homeCityInfo.zoneOffset) {
hgs
parents: 18
diff changeset
   598
		offsetDifference += "+";
hgs
parents: 18
diff changeset
   599
	}
hgs
parents: 18
diff changeset
   600
	// Now get the hours and minutes.
hgs
parents: 18
diff changeset
   601
	int difference = qAbs(homeCityInfo.zoneOffset - locationInfo.zoneOffset);
hgs
parents: 18
diff changeset
   602
	int hours = difference / 60;
hgs
parents: 18
diff changeset
   603
	int minutes = difference % 60;
hgs
parents: 18
diff changeset
   604
	QString displayFormat("");
hgs
parents: 18
diff changeset
   605
	QString offsetString("");
hgs
parents: 18
diff changeset
   606
hgs
parents: 18
diff changeset
   607
	if ( hours && minutes ) {
hgs
parents: 18
diff changeset
   608
		if (hours == 1) {
hgs
parents: 18
diff changeset
   609
			displayFormat =
hgs
parents: 18
diff changeset
   610
					hbTrId("txt_clock_dblist_daily_val_1_hr_2_mins");
hgs
parents: 18
diff changeset
   611
			offsetString = displayFormat.arg(hours).arg(minutes);
hgs
parents: 18
diff changeset
   612
			offsetDifference += offsetString;
hgs
parents: 18
diff changeset
   613
		}
hgs
parents: 18
diff changeset
   614
		else {
hgs
parents: 18
diff changeset
   615
			displayFormat =
hgs
parents: 18
diff changeset
   616
					hbTrId("txt_clock_dblist_daily_val_1_hrs_2_mins");
hgs
parents: 18
diff changeset
   617
			offsetString = displayFormat.arg(hours).arg(minutes);
hgs
parents: 18
diff changeset
   618
			offsetDifference += offsetString;
hgs
parents: 18
diff changeset
   619
		}
hgs
parents: 18
diff changeset
   620
	}
hgs
parents: 18
diff changeset
   621
	else if ( hours ){
hgs
parents: 18
diff changeset
   622
		if(hours == 1 ) {
55
hgs
parents: 45
diff changeset
   623
			displayFormat = hbTrId("txt_clock_dblist_daily_val_ln_hr");
45
hgs
parents: 18
diff changeset
   624
			offsetString = displayFormat.arg(hours);
hgs
parents: 18
diff changeset
   625
			offsetDifference += offsetString;
hgs
parents: 18
diff changeset
   626
		}
hgs
parents: 18
diff changeset
   627
		else {
hgs
parents: 18
diff changeset
   628
			displayFormat = hbTrId("txt_clock_dblist_val_1_hrs");
hgs
parents: 18
diff changeset
   629
			offsetString = displayFormat.arg(hours);
hgs
parents: 18
diff changeset
   630
			offsetDifference += offsetString;
hgs
parents: 18
diff changeset
   631
		}
hgs
parents: 18
diff changeset
   632
	}
hgs
parents: 18
diff changeset
   633
	else if (minutes){
55
hgs
parents: 45
diff changeset
   634
		displayFormat = hbTrId("txt_clock_dblist_daily_val_ln_mins");
45
hgs
parents: 18
diff changeset
   635
		offsetString = displayFormat.arg(minutes);
hgs
parents: 18
diff changeset
   636
		offsetDifference += offsetString;
hgs
parents: 18
diff changeset
   637
	} else {
hgs
parents: 18
diff changeset
   638
		displayFormat = hbTrId("txt_clock_dblist_val_1_hrs");
hgs
parents: 18
diff changeset
   639
		offsetString = displayFormat.arg(0);
hgs
parents: 18
diff changeset
   640
		offsetDifference += offsetString;
hgs
parents: 18
diff changeset
   641
	}
hgs
parents: 18
diff changeset
   642
	displayString.append(offsetDifference);
hgs
parents: 18
diff changeset
   643
hgs
parents: 18
diff changeset
   644
	// Show the time at that location.
hgs
parents: 18
diff changeset
   645
	QString timeInfo = dateTime.toString(mSettingsUtility->timeFormatString());
hgs
parents: 18
diff changeset
   646
	displayString.append(timeInfo);
hgs
parents: 18
diff changeset
   647
hgs
parents: 18
diff changeset
   648
	return displayString;
hgs
parents: 18
diff changeset
   649
}
hgs
parents: 18
diff changeset
   650
hgs
parents: 18
diff changeset
   651
/*!
hgs
parents: 18
diff changeset
   652
	Returns the QVariantList for citylist to be set for DecorationRole.
hgs
parents: 18
diff changeset
   653
hgs
parents: 18
diff changeset
   654
	/param locationInfo Details of the city to be added to the list.
hgs
parents: 18
diff changeset
   655
 */
hgs
parents: 18
diff changeset
   656
QVariantList ClockWorldView::getCityListDecorationString(
hgs
parents: 18
diff changeset
   657
		const LocationInfo& locationInfo)
hgs
parents: 18
diff changeset
   658
{
hgs
parents: 18
diff changeset
   659
	QVariantList decorationString;
hgs
parents: 18
diff changeset
   660
	QDateTime dateTime = QDateTime::currentDateTime();
hgs
parents: 18
diff changeset
   661
	dateTime = dateTime.toUTC();
hgs
parents: 18
diff changeset
   662
	dateTime = dateTime.addSecs(locationInfo.zoneOffset * 60);
hgs
parents: 18
diff changeset
   663
hgs
parents: 18
diff changeset
   664
	// Display day/night indicators.
hgs
parents: 18
diff changeset
   665
	QString dayNightIconPath = "";
hgs
parents: 18
diff changeset
   666
	if (isDay(dateTime)) {
hgs
parents: 18
diff changeset
   667
		dayNightIconPath = "qtg_large_clock";
hgs
parents: 18
diff changeset
   668
	} else {
hgs
parents: 18
diff changeset
   669
		dayNightIconPath = "qtg_large_clock_night";
hgs
parents: 18
diff changeset
   670
	}
hgs
parents: 18
diff changeset
   671
	decorationString.append(HbIcon(dayNightIconPath));
hgs
parents: 18
diff changeset
   672
hgs
parents: 18
diff changeset
   673
	// Show dst icon when needed.
55
hgs
parents: 45
diff changeset
   674
	QString dstIconPath = "";
45
hgs
parents: 18
diff changeset
   675
	if (locationInfo.dstOn) {
55
hgs
parents: 45
diff changeset
   676
		dstIconPath = "qtg_mono_day_light_saving_time";
45
hgs
parents: 18
diff changeset
   677
	}
55
hgs
parents: 45
diff changeset
   678
	decorationString.append(HbIcon(dstIconPath));
hgs
parents: 45
diff changeset
   679
	
45
hgs
parents: 18
diff changeset
   680
	return decorationString;
hgs
parents: 18
diff changeset
   681
	
hgs
parents: 18
diff changeset
   682
}
hgs
parents: 18
diff changeset
   683
hgs
parents: 18
diff changeset
   684
/*!
hgs
parents: 18
diff changeset
   685
	Updates the city list according to the home city.
hgs
parents: 18
diff changeset
   686
 */
hgs
parents: 18
diff changeset
   687
void ClockWorldView::updateCityList()
hgs
parents: 18
diff changeset
   688
{
hgs
parents: 18
diff changeset
   689
	int cityInfoCount = mCityInfoList.count();
hgs
parents: 18
diff changeset
   690
hgs
parents: 18
diff changeset
   691
	if (cityInfoCount) {
hgs
parents: 18
diff changeset
   692
		bool deletion = false;
55
hgs
parents: 45
diff changeset
   693
		bool valueUpdated = false;
45
hgs
parents: 18
diff changeset
   694
		int index;
hgs
parents: 18
diff changeset
   695
		LocationInfo currentCity = mTimezoneClient->getCurrentZoneInfoL();
55
hgs
parents: 45
diff changeset
   696
		// Remove the new home city if it is already added to the list.
45
hgs
parents: 18
diff changeset
   697
		for (index = 0; index < cityInfoCount; index++) {
hgs
parents: 18
diff changeset
   698
			if (currentCity.timezoneId == mCityInfoList.at(index).timezoneId
hgs
parents: 18
diff changeset
   699
					&& (currentCity.cityName ==
hgs
parents: 18
diff changeset
   700
							mCityInfoList.at(index).cityName)
hgs
parents: 18
diff changeset
   701
					&& (currentCity.countryName ==
hgs
parents: 18
diff changeset
   702
							mCityInfoList.at(index).countryName) ) {
hgs
parents: 18
diff changeset
   703
				deletion = true;
hgs
parents: 18
diff changeset
   704
				break;
hgs
parents: 18
diff changeset
   705
			}
hgs
parents: 18
diff changeset
   706
		}
hgs
parents: 18
diff changeset
   707
		if (deletion) {
hgs
parents: 18
diff changeset
   708
			QStandardItem *item = mCityListModel->takeItem(index);
hgs
parents: 18
diff changeset
   709
			mCityListModel->removeRow(index);
hgs
parents: 18
diff changeset
   710
			delete item;
hgs
parents: 18
diff changeset
   711
hgs
parents: 18
diff changeset
   712
			mCityInfoList.removeAt(index);
hgs
parents: 18
diff changeset
   713
			index = -1;
hgs
parents: 18
diff changeset
   714
hgs
parents: 18
diff changeset
   715
			// Update the data file.
hgs
parents: 18
diff changeset
   716
			mTimezoneClient->saveLocations(mCityInfoList);
hgs
parents: 18
diff changeset
   717
hgs
parents: 18
diff changeset
   718
			if (mCityInfoList.count() <= 0) {
hgs
parents: 18
diff changeset
   719
				// No need to refresh the list anymore.
hgs
parents: 18
diff changeset
   720
				mRefreshTimer->stop();
hgs
parents: 18
diff changeset
   721
			} else if (mCityInfoList.count() < (KMaximumCityListCount-1) &&
hgs
parents: 18
diff changeset
   722
					!mAddCityAction->isEnabled()) {
hgs
parents: 18
diff changeset
   723
				mAddCityAction->setEnabled(true);
hgs
parents: 18
diff changeset
   724
				mAddCityMenuAction->setVisible(true);
hgs
parents: 18
diff changeset
   725
			}
hgs
parents: 18
diff changeset
   726
			
hgs
parents: 18
diff changeset
   727
		}
55
hgs
parents: 45
diff changeset
   728
		
hgs
parents: 45
diff changeset
   729
		for (int index = 0; index < cityInfoCount; ++index) {
hgs
parents: 45
diff changeset
   730
			int tzid = mCityInfoList[index].timezoneId;
hgs
parents: 45
diff changeset
   731
			bool dst = mTimezoneClient->isDSTOnL(tzid);
hgs
parents: 45
diff changeset
   732
			if (dst != mCityInfoList[index].dstOn) {
hgs
parents: 45
diff changeset
   733
				mCityInfoList[index].dstOn = dst;
hgs
parents: 45
diff changeset
   734
				valueUpdated = true;
hgs
parents: 45
diff changeset
   735
			}
hgs
parents: 45
diff changeset
   736
hgs
parents: 45
diff changeset
   737
		}
hgs
parents: 45
diff changeset
   738
		
hgs
parents: 45
diff changeset
   739
		if (valueUpdated) {
hgs
parents: 45
diff changeset
   740
			// Update the data file.
hgs
parents: 45
diff changeset
   741
			mTimezoneClient->saveLocations(mCityInfoList);
hgs
parents: 45
diff changeset
   742
        }
45
hgs
parents: 18
diff changeset
   743
	}
hgs
parents: 18
diff changeset
   744
}
hgs
parents: 18
diff changeset
   745
18
c198609911f9 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   746
// End of file-- Don't delete.