iaupdate/IAD/bgcindicatorplugin/src/bgcindicator.cpp
changeset 25 98b66e4fb0be
child 29 26b6f0522fd8
--- /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 <w32std.h>
+#include <apgtask.h>
+#include <apacmdln.h>
+#include <xqservicerequest.h>
+
+// #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 &parameter)
+    {
+    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");
+    }
+