imagehandlingutilities/thumbnailmanager/tmcommon/src/tmactivitymanager.cpp
branchRCL_3
changeset 5 82749d516180
child 9 2eb74cf6572e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/imagehandlingutilities/thumbnailmanager/tmcommon/src/tmactivitymanager.cpp	Fri Feb 19 23:07:36 2010 +0200
@@ -0,0 +1,176 @@
+/*
+* Copyright (c) 2006-2007 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:  Activity Manager 
+*
+*/
+
+#include "tmactivitymanager.h"
+#include "thumbnaillog.h"
+
+// ---------------------------------------------------------------------------
+// CTMActivityManager::NewL()
+// ---------------------------------------------------------------------------
+//
+CTMActivityManager* CTMActivityManager::NewL(MTMActivityManagerObserver* aObserver, TInt aTimeout)
+    {
+    CTMActivityManager* self = new (ELeave) CTMActivityManager(aObserver, aTimeout);
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop(self);
+    return self;
+    }
+ 
+// ---------------------------------------------------------------------------
+// CTMActivityManager::CTMActivityManager()
+// ---------------------------------------------------------------------------
+//
+CTMActivityManager::CTMActivityManager(MTMActivityManagerObserver* aObserver, TInt aTimeout)
+: CActive(CActive::EPriorityHigh), iObserver(aObserver), iTimeout(aTimeout)
+    {   
+    CActiveScheduler::Add(this);
+    }
+
+// ---------------------------------------------------------------------------
+// CTMActivityManager::~CTMActivityManager()
+// ---------------------------------------------------------------------------
+//
+CTMActivityManager::~CTMActivityManager()
+    {
+    Cancel();
+    iTimer.Close();
+    }
+ 
+// ---------------------------------------------------------------------------
+// CTMActivityManager::ConstructL()
+// ---------------------------------------------------------------------------
+//
+void CTMActivityManager::ConstructL()
+    {
+    iTimer.CreateLocal();
+    }
+
+// ---------------------------------------------------------------------------
+// CTMActivityManager::SetTimeout()
+// ---------------------------------------------------------------------------
+//
+void CTMActivityManager::SetTimeout(TInt aTimeout)
+    {
+    iTimeout = aTimeout;
+    Reset();
+    }
+
+// ---------------------------------------------------------------------------
+// CTMActivityManager::Reset()
+// ---------------------------------------------------------------------------
+//
+void CTMActivityManager::Reset()
+    {
+    Cancel();
+    Start();
+    }
+ 
+// ---------------------------------------------------------------------------
+// CTMActivityManager::DoCancel()
+// ---------------------------------------------------------------------------
+void CTMActivityManager::DoCancel()
+    {
+    iTimer.Cancel();
+    iWatch = ENone;
+    }
+
+// ---------------------------------------------------------------------------
+// CTMActivityManager::Start()
+// ---------------------------------------------------------------------------
+//
+void CTMActivityManager::Start()
+    {
+    if (!IsActive())
+        {
+        iWatch = EWaitingForInactivity;
+        iTimer.Inactivity(iStatus, iTimeout);
+        SetActive();
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CTMActivityManager::RunL()
+// ---------------------------------------------------------------------------
+//
+void CTMActivityManager::RunL()
+    {
+    if (iStatus == KErrNone)
+        {
+        if (iWatch == EWaitingForInactivity)
+            {
+            TInt inactivity = User::InactivityTime().Int();
+            if (inactivity >= iTimeout)
+                {
+                if (iObserver)
+                    {
+                    iObserver->InactivityDetected();
+                    }
+            if (!IsActive()) //observer might have called a Reset()
+                {
+                iTimer.Inactivity(iStatus,0);
+                iWatch = EWaitingForActivity;
+                }
+            }
+            else
+                {
+                iTimer.Inactivity(iStatus,iTimeout);
+                }
+            }
+        else if (iWatch == EWaitingForActivity)
+            {
+            if (iObserver)
+                {
+                iObserver->ActivityDetected();
+                }
+            
+            if (!IsActive()) //observer might have called a Reset()
+                {
+                iTimer.Inactivity(iStatus,iTimeout);
+                iWatch = EWaitingForInactivity;
+                }
+        }
+    
+        if (!IsActive()) //observer might have called a Reset()
+            {
+            SetActive();
+            }
+        }
+    else
+        {
+        iWatch = ENone;
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CTMActivityManager::RunError()
+// ---------------------------------------------------------------------------
+//
+TInt CTMActivityManager::RunError(TInt aError)
+    {
+    TN_DEBUG1( "CTMActivityManager::RunError()");
+    
+    if (aError != KErrNone)
+        {
+        TN_DEBUG2( "CTMActivityManager::RunError = %d", aError );
+        Reset();
+        }
+    
+    // nothing to do
+    return KErrNone;
+    }
+