imagehandlingutilities/thumbnailmanager/tmcommon/src/tmactivitymanager.cpp
branchRCL_3
changeset 7 2eb74cf6572e
parent 5 82749d516180
child 9 dea39715fc05
equal deleted inserted replaced
5:82749d516180 7:2eb74cf6572e
    22 // CTMActivityManager::NewL()
    22 // CTMActivityManager::NewL()
    23 // ---------------------------------------------------------------------------
    23 // ---------------------------------------------------------------------------
    24 //
    24 //
    25 CTMActivityManager* CTMActivityManager::NewL(MTMActivityManagerObserver* aObserver, TInt aTimeout)
    25 CTMActivityManager* CTMActivityManager::NewL(MTMActivityManagerObserver* aObserver, TInt aTimeout)
    26     {
    26     {
       
    27     TN_DEBUG1( "CTMActivityManager::NewL()");
    27     CTMActivityManager* self = new (ELeave) CTMActivityManager(aObserver, aTimeout);
    28     CTMActivityManager* self = new (ELeave) CTMActivityManager(aObserver, aTimeout);
    28     CleanupStack::PushL(self);
    29     CleanupStack::PushL(self);
    29     self->ConstructL();
    30     self->ConstructL();
    30     CleanupStack::Pop(self);
    31     CleanupStack::Pop(self);
    31     return self;
    32     return self;
    34 // ---------------------------------------------------------------------------
    35 // ---------------------------------------------------------------------------
    35 // CTMActivityManager::CTMActivityManager()
    36 // CTMActivityManager::CTMActivityManager()
    36 // ---------------------------------------------------------------------------
    37 // ---------------------------------------------------------------------------
    37 //
    38 //
    38 CTMActivityManager::CTMActivityManager(MTMActivityManagerObserver* aObserver, TInt aTimeout)
    39 CTMActivityManager::CTMActivityManager(MTMActivityManagerObserver* aObserver, TInt aTimeout)
    39 : CActive(CActive::EPriorityHigh), iObserver(aObserver), iTimeout(aTimeout)
    40 : CActive(CActive::EPriorityHigh), iObserver(aObserver), iTimeout(aTimeout), iPreviousStatus(KErrNotFound)
    40     {   
    41     {
       
    42     TN_DEBUG1( "CTMActivityManager::CTMActivityManager()");
    41     CActiveScheduler::Add(this);
    43     CActiveScheduler::Add(this);
    42     }
    44     }
    43 
    45 
    44 // ---------------------------------------------------------------------------
    46 // ---------------------------------------------------------------------------
    45 // CTMActivityManager::~CTMActivityManager()
    47 // CTMActivityManager::~CTMActivityManager()
    46 // ---------------------------------------------------------------------------
    48 // ---------------------------------------------------------------------------
    47 //
    49 //
    48 CTMActivityManager::~CTMActivityManager()
    50 CTMActivityManager::~CTMActivityManager()
    49     {
    51     {
       
    52     TN_DEBUG1( "CTMActivityManager::~CTMActivityManager()");
       
    53     delete iLight;
       
    54     iLight = NULL;
    50     Cancel();
    55     Cancel();
    51     iTimer.Close();
    56     iTimer.Close();
    52     }
    57     }
    53  
    58  
    54 // ---------------------------------------------------------------------------
    59 // ---------------------------------------------------------------------------
    55 // CTMActivityManager::ConstructL()
    60 // CTMActivityManager::ConstructL()
    56 // ---------------------------------------------------------------------------
    61 // ---------------------------------------------------------------------------
    57 //
    62 //
    58 void CTMActivityManager::ConstructL()
    63 void CTMActivityManager::ConstructL()
    59     {
    64     {
       
    65     TN_DEBUG1( "CTMActivityManager::ConstructL()");
    60     iTimer.CreateLocal();
    66     iTimer.CreateLocal();
    61     }
    67     }
    62 
    68 
    63 // ---------------------------------------------------------------------------
    69 // ---------------------------------------------------------------------------
    64 // CTMActivityManager::SetTimeout()
    70 // CTMActivityManager::SetTimeout()
    65 // ---------------------------------------------------------------------------
    71 // ---------------------------------------------------------------------------
    66 //
    72 //
    67 void CTMActivityManager::SetTimeout(TInt aTimeout)
    73 void CTMActivityManager::SetTimeout(TInt aTimeout)
    68     {
    74     {
       
    75     TN_DEBUG1( "CTMActivityManager::SetTimeout()");
    69     iTimeout = aTimeout;
    76     iTimeout = aTimeout;
    70     Reset();
    77     Reset();
    71     }
    78     }
    72 
    79 
    73 // ---------------------------------------------------------------------------
    80 // ---------------------------------------------------------------------------
    74 // CTMActivityManager::Reset()
    81 // CTMActivityManager::Reset()
    75 // ---------------------------------------------------------------------------
    82 // ---------------------------------------------------------------------------
    76 //
    83 //
    77 void CTMActivityManager::Reset()
    84 void CTMActivityManager::Reset()
    78     {
    85     {
       
    86     TN_DEBUG1( "CTMActivityManager::Reset()");
       
    87     delete iLight;
       
    88     iLight = NULL;
    79     Cancel();
    89     Cancel();
    80     Start();
    90     Start();
    81     }
    91     }
    82  
    92  
    83 // ---------------------------------------------------------------------------
    93 // ---------------------------------------------------------------------------
    84 // CTMActivityManager::DoCancel()
    94 // CTMActivityManager::DoCancel()
    85 // ---------------------------------------------------------------------------
    95 // ---------------------------------------------------------------------------
    86 void CTMActivityManager::DoCancel()
    96 void CTMActivityManager::DoCancel()
    87     {
    97     {
       
    98     TN_DEBUG1( "CTMActivityManager::DoCancel()");
    88     iTimer.Cancel();
    99     iTimer.Cancel();
    89     iWatch = ENone;
   100     iWatch = ENone;
    90     }
   101     }
    91 
   102 
    92 // ---------------------------------------------------------------------------
   103 // ---------------------------------------------------------------------------
    93 // CTMActivityManager::Start()
   104 // CTMActivityManager::Start()
    94 // ---------------------------------------------------------------------------
   105 // ---------------------------------------------------------------------------
    95 //
   106 //
    96 void CTMActivityManager::Start()
   107 void CTMActivityManager::Start()
    97     {
   108     {
    98     if (!IsActive())
   109     TN_DEBUG1( "CTMActivityManager::Start()");
    99         {
   110     
   100         iWatch = EWaitingForInactivity;
   111     iFirstRound = ETrue;
   101         iTimer.Inactivity(iStatus, iTimeout);
   112     
       
   113     if(!iLight)
       
   114         {
       
   115         TRAP_IGNORE(iLight = CHWRMLight::NewL(this));
       
   116         }
       
   117     
       
   118     if( !IsActive() )
       
   119         {
   102         SetActive();
   120         SetActive();
       
   121         TRequestStatus* statusPtr = &iStatus;
       
   122         User::RequestComplete( statusPtr, KErrNone );
   103         }
   123         }
   104     }
   124     }
   105 
   125 
   106 // ---------------------------------------------------------------------------
   126 // ---------------------------------------------------------------------------
   107 // CTMActivityManager::RunL()
   127 // CTMActivityManager::RunL()
   108 // ---------------------------------------------------------------------------
   128 // ---------------------------------------------------------------------------
   109 //
   129 //
   110 void CTMActivityManager::RunL()
   130 void CTMActivityManager::RunL()
   111     {
   131     {
       
   132     TN_DEBUG4( "CTMActivityManager::RunL(0x%08x) %d, observer = 0x%08x", this, iStatus.Int(), iObserver);
       
   133     
       
   134     if(iFirstRound)
       
   135         {
       
   136         TN_DEBUG1( "CTMActivityManager::RunL() iFirstRound");
       
   137         iFirstRound = EFalse;
       
   138         if (!IsActive())
       
   139              {
       
   140              iWatch = EWaitingForInactivity;
       
   141              iTimer.Inactivity(iStatus, iTimeout);
       
   142              SetActive();
       
   143              }
       
   144         NotifyObserver();
       
   145         return;
       
   146         }
       
   147     
   112     if (iStatus == KErrNone)
   148     if (iStatus == KErrNone)
   113         {
   149         {
   114         if (iWatch == EWaitingForInactivity)
   150         if (iWatch == EWaitingForInactivity)
   115             {
   151             {
   116             TInt inactivity = User::InactivityTime().Int();
   152             TInt inactivity = User::InactivityTime().Int();
   117             if (inactivity >= iTimeout)
   153             if (inactivity >= iTimeout)
   118                 {
   154                 {
   119                 if (iObserver)
   155                 TN_DEBUG1( "CTMActivityManager::RunL() inactive");
   120                     {
   156                 NotifyObserver();
   121                     iObserver->InactivityDetected();
   157 
   122                     }
       
   123             if (!IsActive()) //observer might have called a Reset()
   158             if (!IsActive()) //observer might have called a Reset()
   124                 {
   159                 {
   125                 iTimer.Inactivity(iStatus,0);
   160                 iTimer.Inactivity(iStatus,0);
   126                 iWatch = EWaitingForActivity;
   161                 iWatch = EWaitingForActivity;
   127                 }
   162                 }
   131                 iTimer.Inactivity(iStatus,iTimeout);
   166                 iTimer.Inactivity(iStatus,iTimeout);
   132                 }
   167                 }
   133             }
   168             }
   134         else if (iWatch == EWaitingForActivity)
   169         else if (iWatch == EWaitingForActivity)
   135             {
   170             {
   136             if (iObserver)
   171                 TN_DEBUG1( "CTMActivityManager::RunL() active");
   137                 {
   172                 NotifyObserver();
   138                 iObserver->ActivityDetected();
   173              
   139                 }
       
   140             
       
   141             if (!IsActive()) //observer might have called a Reset()
   174             if (!IsActive()) //observer might have called a Reset()
   142                 {
   175                 {
   143                 iTimer.Inactivity(iStatus,iTimeout);
   176                 iTimer.Inactivity(iStatus,iTimeout);
   144                 iWatch = EWaitingForInactivity;
   177                 iWatch = EWaitingForInactivity;
   145                 }
   178                 }
   146         }
   179             }
   147     
   180     
   148         if (!IsActive()) //observer might have called a Reset()
   181         if (!IsActive()) //observer might have called a Reset()
   149             {
   182             {
   150             SetActive();
   183             SetActive();
   151             }
   184             }
   152         }
   185         }
   153     else
   186     else
   154         {
   187         {
   155         iWatch = ENone;
   188         iWatch = ENone;
   156         }
   189         }
       
   190         TN_DEBUG1( "CTMActivityManager::RunL() end");
   157     }
   191     }
   158 
   192 
   159 // ---------------------------------------------------------------------------
   193 // ---------------------------------------------------------------------------
   160 // CTMActivityManager::RunError()
   194 // CTMActivityManager::RunError()
   161 // ---------------------------------------------------------------------------
   195 // ---------------------------------------------------------------------------
   162 //
   196 //
   163 TInt CTMActivityManager::RunError(TInt aError)
   197 TInt CTMActivityManager::RunError(TInt aError)
   164     {
   198     {
   165     TN_DEBUG1( "CTMActivityManager::RunError()");
   199     TN_DEBUG2( "CTMActivityManager::RunError() %d", aError);
   166     
   200     
   167     if (aError != KErrNone)
   201     if (aError != KErrNone)
   168         {
   202         {
   169         TN_DEBUG2( "CTMActivityManager::RunError = %d", aError );
       
   170         Reset();
   203         Reset();
   171         }
   204         }
   172     
   205     
   173     // nothing to do
   206     // nothing to do
   174     return KErrNone;
   207     return KErrNone;
   175     }
   208     }
   176 
   209 
       
   210 // -----------------------------------------------------------------------------
       
   211 // IsInactive()
       
   212 // -----------------------------------------------------------------------------
       
   213 //
       
   214 TBool CTMActivityManager::IsInactive()
       
   215     {
       
   216 #ifdef _DEBUG
       
   217 TN_DEBUG3( "CTMActivityManager::IsInactive()= %d, iLights = %d", User::InactivityTime().Int(), iLights);
       
   218 #endif
       
   219 
       
   220     //if lights are off or inactivity timer is less that target the device is not idle
       
   221     if( User::InactivityTime() >= TTimeIntervalSeconds(iTimeout) || !iLights )
       
   222       {
       
   223       TN_DEBUG1( "CTMActivityManager::IsInactive() ETrue");
       
   224       return ETrue;
       
   225       }
       
   226     TN_DEBUG1( "CTMActivityManager::IsInactive() EFalse");
       
   227     return EFalse;
       
   228     }
       
   229 
       
   230 // -----------------------------------------------------------------------------
       
   231 // LightStatusChanged()
       
   232 // -----------------------------------------------------------------------------
       
   233 //
       
   234 void CTMActivityManager::LightStatusChanged(TInt /*aTarget*/, CHWRMLight::TLightStatus aStatus)
       
   235     {
       
   236     TN_DEBUG2( "CTMActivityManager::LightStatusChanged() aStatus == %d", aStatus);
       
   237     
       
   238      if( aStatus == CHWRMLight::ELightOff)
       
   239         {
       
   240         TN_DEBUG1( "CTMActivityManager::LightStatusChanged() -- OFF");
       
   241         iLights = EFalse;
       
   242         }
       
   243     else
       
   244         {
       
   245         TN_DEBUG1( "CTMActivityManager::LightStatusChanged() -- ON");
       
   246         iLights = ETrue;
       
   247         }
       
   248      
       
   249         NotifyObserver();
       
   250     }
       
   251 
       
   252 // -----------------------------------------------------------------------------
       
   253 // NotifyObserver()
       
   254 // -----------------------------------------------------------------------------
       
   255 //
       
   256 void CTMActivityManager::NotifyObserver()
       
   257     {
       
   258     TN_DEBUG1( "void CTMAActivityManager::NotifyObserver()");
       
   259     TBool status = IsInactive();
       
   260     
       
   261     if( iPreviousStatus != status )
       
   262         {
       
   263         iPreviousStatus = status; 
       
   264         if (iObserver)
       
   265             {
       
   266             iObserver->ActivityChanged(!status);
       
   267             }
       
   268         }
       
   269     }