mmappcomponents/mmmtpdataprovider/src/cmmmtpdpaccesssingleton.cpp
changeset 32 edd273b3192a
parent 25 d881023c13eb
equal deleted inserted replaced
27:cbb1bfb7ebfb 32:edd273b3192a
    19 #include <e32base.h>    // CObject
    19 #include <e32base.h>    // CObject
    20 
    20 
    21 #include "cmmmtpdpaccesssingleton.h"
    21 #include "cmmmtpdpaccesssingleton.h"
    22 #include "cmmmtpdpmetadataaccesswrapper.h"
    22 #include "cmmmtpdpmetadataaccesswrapper.h"
    23 #include "mmmtpdplogger.h"
    23 #include "mmmtpdplogger.h"
       
    24 #include "mmmtpdputility.h"
    24 
    25 
    25 // -----------------------------------------------------------------------------
    26 // -----------------------------------------------------------------------------
    26 // CMmMtpDpAccessSingleton::~CMmMtpDpAccessSingleton
    27 // CMmMtpDpAccessSingleton::~CMmMtpDpAccessSingleton
    27 // destructor
    28 // destructor
    28 // -----------------------------------------------------------------------------
    29 // -----------------------------------------------------------------------------
    29 //
    30 //
    30 CMmMtpDpAccessSingleton::~CMmMtpDpAccessSingleton()
    31 CMmMtpDpAccessSingleton::~CMmMtpDpAccessSingleton()
    31     {
    32     {
    32     delete iWrapper;
    33     delete iWrapper;
       
    34     
       
    35     if (iDelayStatusChanger)
       
    36         {
       
    37         iDelayStatusChanger->Cancel();
       
    38         delete iDelayStatusChanger;
       
    39         }
    33     }
    40     }
    34 
    41 
    35 // -----------------------------------------------------------------------------
    42 // -----------------------------------------------------------------------------
    36 // CMmMtpDpAccessSingleton::GetAccessWrapperL
    43 // CMmMtpDpAccessSingleton::GetAccessWrapperL
    37 // get wrapper instance
    44 // get wrapper instance
   149 // -----------------------------------------------------------------------------
   156 // -----------------------------------------------------------------------------
   150 //
   157 //
   151 void CMmMtpDpAccessSingleton::ConstructL( MMTPDataProviderFramework& aFramework )
   158 void CMmMtpDpAccessSingleton::ConstructL( MMTPDataProviderFramework& aFramework )
   152     {
   159     {
   153     iWrapper = CMmMtpDpMetadataAccessWrapper::NewL( aFramework );
   160     iWrapper = CMmMtpDpMetadataAccessWrapper::NewL( aFramework );
   154     }
   161     iDelayStatusChanger = CIdle::NewL(CActive::EPriorityIdle);
   155 
   162     }
       
   163 
       
   164 // -----------------------------------------------------------------------------
       
   165 // CMmMtpDpAccessSingleton::ActiveToIdleStatusChange
       
   166 // Issue ActiveToIdle Status Change (ActiveObject)
       
   167 // -----------------------------------------------------------------------------
       
   168 //
       
   169 EXPORT_C void CMmMtpDpAccessSingleton::ActiveToIdleStatusChange()
       
   170     {
       
   171     PRINT( _L( "CMmMtpDpAccessSingleton::ActiveToIdleStatusChange" ) );
       
   172     CMmMtpDpAccessSingleton* self = CMmMtpDpAccessSingleton::Instance();
       
   173     
       
   174     if (self != NULL)
       
   175         {
       
   176         CMmMtpDpAccessSingleton::CancelActiveToIdleStatusChange();
       
   177     
       
   178         if (self->DelayStatusChanger() != NULL)
       
   179             self->DelayStatusChanger()->Start(TCallBack(DoActiveToIdleStatusChange, self));
       
   180         }
       
   181     }
       
   182 
       
   183 // -----------------------------------------------------------------------------
       
   184 // CMmMtpDpAccessSingleton::CancelActiveToIdleChange
       
   185 // Cancel Outstanding ActiveToIdle Status Change
       
   186 // -----------------------------------------------------------------------------
       
   187 //
       
   188 EXPORT_C void CMmMtpDpAccessSingleton::CancelActiveToIdleStatusChange()
       
   189     {
       
   190     CMmMtpDpAccessSingleton* self = CMmMtpDpAccessSingleton::Instance();
       
   191     
       
   192     if ((self != NULL) && (self->DelayStatusChanger() != NULL))
       
   193         {
       
   194         if (self->DelayStatusChanger()->IsActive())
       
   195             {
       
   196             PRINT( _L( "CMmMtpDpAccessSingleton::CancelActiveToIdleStatusChange, cancel outstanding request" ) );
       
   197             self->DelayStatusChanger()->Cancel();
       
   198             }
       
   199         }
       
   200     }
       
   201     
       
   202 // -----------------------------------------------------------------------------
       
   203 // CMmMtpDpAccessSingleton::DelayStatusChanger
       
   204 // get DelayStatusChanger instance, internal use only
       
   205 // -----------------------------------------------------------------------------
       
   206 //
       
   207 CIdle* CMmMtpDpAccessSingleton::DelayStatusChanger()
       
   208     {
       
   209     CIdle* delayStatusChanger = NULL;
       
   210     CMmMtpDpAccessSingleton* self = CMmMtpDpAccessSingleton::Instance();
       
   211     
       
   212     if (self != NULL)
       
   213         delayStatusChanger = self->iDelayStatusChanger;
       
   214     
       
   215     return delayStatusChanger;
       
   216     }
       
   217 
       
   218 // -----------------------------------------------------------------------------
       
   219 // CMmMtpDpAccessSingleton::DoActiveToIdleChange
       
   220 // Perform actural ActiveToIdle Status Change after active object callback
       
   221 // -----------------------------------------------------------------------------
       
   222 //
       
   223 TInt CMmMtpDpAccessSingleton::DoActiveToIdleStatusChange(TAny* /*Any*/)
       
   224     {
       
   225     PRINT( _L( "CMmMtpDpAccessSingleton::DoActiveToIdleStatusChange ") );
       
   226     MmMtpDpUtility::DoSetPSStatus(EMtpPSStatusReadyToSync);
       
   227     return KErrNone;
       
   228     }
   156 
   229 
   157 // end of file
   230 // end of file