clock/clockmw/clocktimezone/src/environmentchangenotifier.cpp
author hgs
Mon, 09 Aug 2010 18:30:52 +0530
changeset 57 bb2d3e476f29
permissions -rw-r--r--
201031
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
57
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:
hgs
parents:
diff changeset
    15
* Definition file for the EnvironmentChangeNotifier class.
hgs
parents:
diff changeset
    16
*
hgs
parents:
diff changeset
    17
*/
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
// System includes
hgs
parents:
diff changeset
    20
#include <bacntf.h>
hgs
parents:
diff changeset
    21
hgs
parents:
diff changeset
    22
// User includes
hgs
parents:
diff changeset
    23
#include "environmentchangenotifier.h"
hgs
parents:
diff changeset
    24
#include "timezoneclient.h"
hgs
parents:
diff changeset
    25
#include "OstTraceDefinitions.h"
hgs
parents:
diff changeset
    26
#ifdef OST_TRACE_COMPILER_IN_USE
hgs
parents:
diff changeset
    27
#include "environmentchangenotifierTraces.h"
hgs
parents:
diff changeset
    28
#endif
hgs
parents:
diff changeset
    29
hgs
parents:
diff changeset
    30
hgs
parents:
diff changeset
    31
/*!
hgs
parents:
diff changeset
    32
	\class EnvironmentChangeNotifier
hgs
parents:
diff changeset
    33
hgs
parents:
diff changeset
    34
	This class listens to the enviroment changes and notifies the client.
hgs
parents:
diff changeset
    35
 */
hgs
parents:
diff changeset
    36
hgs
parents:
diff changeset
    37
/*!
hgs
parents:
diff changeset
    38
	The constructor.
hgs
parents:
diff changeset
    39
 */
hgs
parents:
diff changeset
    40
EnvironmentChangeNotifier::EnvironmentChangeNotifier(TimezoneClient *client)
hgs
parents:
diff changeset
    41
{
hgs
parents:
diff changeset
    42
	OstTraceFunctionEntry0( ENVIRONMENTCHANGENOTIFIER_ENVIRONMENTCHANGENOTIFIER_ENTRY );
hgs
parents:
diff changeset
    43
	mTzClient = client;
hgs
parents:
diff changeset
    44
	
hgs
parents:
diff changeset
    45
	TCallBack callback(environmentCallback, this);
hgs
parents:
diff changeset
    46
hgs
parents:
diff changeset
    47
	mNotifier = CEnvironmentChangeNotifier::NewL(
hgs
parents:
diff changeset
    48
			CActive::EPriorityStandard, callback);
hgs
parents:
diff changeset
    49
	mNotifier->Start();
hgs
parents:
diff changeset
    50
hgs
parents:
diff changeset
    51
	OstTraceFunctionExit0( ENVIRONMENTCHANGENOTIFIER_ENVIRONMENTCHANGENOTIFIER_EXIT );
hgs
parents:
diff changeset
    52
}
hgs
parents:
diff changeset
    53
hgs
parents:
diff changeset
    54
EnvironmentChangeNotifier::~EnvironmentChangeNotifier()
hgs
parents:
diff changeset
    55
{
hgs
parents:
diff changeset
    56
	OstTraceFunctionEntry0( DUP1_ENVIRONMENTCHANGENOTIFIER_ENVIRONMENTCHANGENOTIFIER_ENTRY );
hgs
parents:
diff changeset
    57
	if (mNotifier) {
hgs
parents:
diff changeset
    58
		mNotifier->Cancel();
hgs
parents:
diff changeset
    59
		delete mNotifier;
hgs
parents:
diff changeset
    60
		mNotifier = 0;
hgs
parents:
diff changeset
    61
	}
hgs
parents:
diff changeset
    62
	OstTraceFunctionExit0( DUP1_ENVIRONMENTCHANGENOTIFIER_ENVIRONMENTCHANGENOTIFIER_EXIT );
hgs
parents:
diff changeset
    63
}
hgs
parents:
diff changeset
    64
hgs
parents:
diff changeset
    65
int EnvironmentChangeNotifier::environmentCallback(TAny* obj)
hgs
parents:
diff changeset
    66
{
hgs
parents:
diff changeset
    67
	OstTraceFunctionEntry0( ENVIRONMENTCHANGENOTIFIER_ENVIRONMENTCALLBACK_ENTRY );
hgs
parents:
diff changeset
    68
	EnvironmentChangeNotifier* self =
hgs
parents:
diff changeset
    69
			static_cast<EnvironmentChangeNotifier *> (obj);
hgs
parents:
diff changeset
    70
hgs
parents:
diff changeset
    71
	int changes = KInitialEvent;
hgs
parents:
diff changeset
    72
	if (self->mNotifier) {
hgs
parents:
diff changeset
    73
		changes = self->mNotifier->Change();
hgs
parents:
diff changeset
    74
	}
hgs
parents:
diff changeset
    75
hgs
parents:
diff changeset
    76
	if (KInitialEvent <= changes) {
hgs
parents:
diff changeset
    77
		// We're not concerned about handling environment changes in that range.
hgs
parents:
diff changeset
    78
		OstTraceFunctionExit0( ENVIRONMENTCHANGENOTIFIER_ENVIRONMENTCALLBACK_EXIT );
hgs
parents:
diff changeset
    79
		return 0;
hgs
parents:
diff changeset
    80
	}
hgs
parents:
diff changeset
    81
hgs
parents:
diff changeset
    82
	if (changes & (EChangesMidnightCrossover |
hgs
parents:
diff changeset
    83
			EChangesLocale |
hgs
parents:
diff changeset
    84
			EChangesSystemTime)) {
hgs
parents:
diff changeset
    85
//		emit self->timechanged(); TODO: notify timezone client.
hgs
parents:
diff changeset
    86
//		
hgs
parents:
diff changeset
    87
		self->notifyEnvChange();
hgs
parents:
diff changeset
    88
	} else {
hgs
parents:
diff changeset
    89
		// Nothing to do.
hgs
parents:
diff changeset
    90
	}
hgs
parents:
diff changeset
    91
	OstTraceFunctionExit0( DUP1_ENVIRONMENTCHANGENOTIFIER_ENVIRONMENTCALLBACK_EXIT );
hgs
parents:
diff changeset
    92
	return 0;
hgs
parents:
diff changeset
    93
}
hgs
parents:
diff changeset
    94
hgs
parents:
diff changeset
    95
void EnvironmentChangeNotifier::notifyEnvChange()
hgs
parents:
diff changeset
    96
{
hgs
parents:
diff changeset
    97
	OstTraceFunctionEntry0( ENVIRONMENTCHANGENOTIFIER_NOTIFYENVCHANGE_ENTRY );
hgs
parents:
diff changeset
    98
	mTzClient->notifyTimeChange();
hgs
parents:
diff changeset
    99
	OstTraceFunctionExit0( ENVIRONMENTCHANGENOTIFIER_NOTIFYENVCHANGE_EXIT );
hgs
parents:
diff changeset
   100
}
hgs
parents:
diff changeset
   101
hgs
parents:
diff changeset
   102
// End of file -- Do not remove this.