diff -r 84a16765cd86 -r 98b66e4fb0be iaupdate/IAD/bgcindicatorplugin/src/bgcindicator.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/iaupdate/IAD/bgcindicatorplugin/src/bgcindicator.cpp Fri Apr 16 15:05:20 2010 +0300 @@ -0,0 +1,170 @@ +/* + * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). + * All rights reserved. + * This component and the accompanying materials are made available + * under the terms of "Eclipse Public License v1.0" + * which accompanies this distribution, and is available + * at the URL "http://www.eclipse.org/legal/epl-v10.html". + * + * Initial Contributors: + * Nokia Corporation - initial contribution. + * + * Contributors: + * + * Description: + * + */ + +#include +#include +#include +#include + +// #include "debugtraces.h" +#include "bgcindicator.h" + +//---------------------------------------------------------------------- + + +// ---------------------------------------------------------------------------- +// BgcIndicator::BgcIndicator +// @see bgcindicator.h +// ---------------------------------------------------------------------------- +BgcIndicator::BgcIndicator(const QString &indicatorType) : +HbIndicatorInterface(indicatorType, + HbIndicatorInterface::GroupPriorityHigh, + InteractionActivated), + mNrOfUpdates(0) + { + } + +// ---------------------------------------------------------------------------- +// BgcIndicator::~BgcIndicator +// @see bgcindicator.h +// ---------------------------------------------------------------------------- +BgcIndicator::~BgcIndicator() + { + } + +// ---------------------------------------------------------------------------- +// BgcIndicator::handleInteraction +// @see bgcindicator.h +// ---------------------------------------------------------------------------- +bool BgcIndicator::handleInteraction(InteractionType type) + { + bool handled = false; + + if (type == InteractionActivated) + { + StartIaupdateL(); + handled = true; + + emit deactivate(); + } + return handled; + } + +// ---------------------------------------------------------------------------- +// BgcIndicator::indicatorData +// @see bgcindicator.h +// ---------------------------------------------------------------------------- +QVariant BgcIndicator::indicatorData(int role) const +{ + +switch(role) + { + case TextRole: + { + QString text(""); + if ( mNrOfUpdates == 1 ) + text.append(QString("Updates available")); + else + text.append(QString("Check for updates?")); + return text; + } + case SecondaryTextRole: + { + QString text("Tap to view"); + return text; + } + case IconNameRole: + { + // QString iconName("z:/resource/messaging/message.svg"); + QString iconName("c:/qgn_note_swupdate_notification.svg"); + return iconName; + } + default: + return QVariant(); + } +} + +// ---------------------------------------------------------------------------- +// BgcIndicator::prepareDisplayName +// @see bgcindicator.h +// ---------------------------------------------------------------------------- +bool BgcIndicator::handleClientRequest( RequestType type, + const QVariant ¶meter) + { + bool handled(false); + switch (type) { + case RequestActivate: + { + mNrOfUpdates = parameter.toInt(); + handled = true; + } + break; + case RequestDeactivate: + { + emit deactivate(); + } + break; + default: + break; + } + + return handled; + } + +// ---------------------------------------------------------- +// CIAUpdateBGTimer::StartIaupdateL() +// ---------------------------------------------------------- +void BgcIndicator::StartIaupdateL() const + { + + const TUint KIADUpdateLauncherUid( 0x2001FE2F ); + _LIT(KIAUpdateLauncherExe, "iaupdatelauncher.exe" ); + _LIT8( KRefreshFromNetworkDenied, "1" ); + + //FLOG("[bgchecker] StartIaupdateL() begin"); + RWsSession ws; + User::LeaveIfError( ws.Connect() == KErrNone ); + TApaTaskList tasklist(ws); + TApaTask task = tasklist.FindApp( TUid::Uid( KIADUpdateLauncherUid ) ); + if ( task.Exists() ) + { + //FLOG("[bgchecker] StartIaupdateL() IAD launcher process found"); + task.BringToForeground(); + //FLOG("[bgchecker] StartIaupdateL() after task.BringToForeground()"); + ws.Close(); + } + else + { + ws.Close(); + RProcess process; + CleanupClosePushL( process ); + User::LeaveIfError( + process.Create( KIAUpdateLauncherExe, KNullDesC ) ); + + CApaCommandLine* commandLine = CApaCommandLine::NewLC(); + commandLine->SetDocumentNameL( KNullDesC ); + commandLine->SetExecutableNameL( _L("iaupdatelauncher.exe") ); + commandLine->SetTailEndL( KRefreshFromNetworkDenied ); + commandLine->SetProcessEnvironmentL( process ); + CleanupStack::PopAndDestroy( commandLine ); + + process.Resume(); + CleanupStack::PopAndDestroy( &process ); + } + //FLOG("[bgchecker] StartIaupdateL() end"); + } +