harvester/harvesterserver/src/cpixstateobserver.cpp
author hgs
Fri, 15 Oct 2010 12:09:28 +0530
changeset 24 65456528cac2
permissions -rw-r--r--
201041
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
24
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description: 
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
#include "cpixstateobserver.h"
hgs
parents:
diff changeset
    19
#include <mpxcollectionutility.h>
hgs
parents:
diff changeset
    20
#include <mpxmessagegeneraldefs.h>
hgs
parents:
diff changeset
    21
#include <mpxcollectionmessage.h>
hgs
parents:
diff changeset
    22
#include "OstTraceDefinitions.h"
hgs
parents:
diff changeset
    23
#ifdef OST_TRACE_COMPILER_IN_USE
hgs
parents:
diff changeset
    24
#include "cpixstateobserverTraces.h"
hgs
parents:
diff changeset
    25
#endif
hgs
parents:
diff changeset
    26
hgs
parents:
diff changeset
    27
hgs
parents:
diff changeset
    28
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    29
// CPiXStateObserver::NewL()
hgs
parents:
diff changeset
    30
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    31
//
hgs
parents:
diff changeset
    32
CPiXStateObserver* CPiXStateObserver::NewL( MCPiXStateObserver* aObserver, RFs* aFsSession )
hgs
parents:
diff changeset
    33
    {        
hgs
parents:
diff changeset
    34
    CPiXStateObserver* self = new ( ELeave ) CPiXStateObserver(aObserver);
hgs
parents:
diff changeset
    35
    CleanupStack::PushL( self );
hgs
parents:
diff changeset
    36
    self->ConstructL( aFsSession );
hgs
parents:
diff changeset
    37
    CleanupStack::Pop(self);
hgs
parents:
diff changeset
    38
    return self;
hgs
parents:
diff changeset
    39
    }
hgs
parents:
diff changeset
    40
hgs
parents:
diff changeset
    41
hgs
parents:
diff changeset
    42
CPiXStateObserver::CPiXStateObserver(MCPiXStateObserver* aObserver)
hgs
parents:
diff changeset
    43
            : iObserver(aObserver)                                
hgs
parents:
diff changeset
    44
                    
hgs
parents:
diff changeset
    45
    {
hgs
parents:
diff changeset
    46
    iPreviousState = KErrNotFound;
hgs
parents:
diff changeset
    47
    iMMCHarvesting = KErrNotFound;
hgs
parents:
diff changeset
    48
    iMPXHarvesting = KErrNotFound;    
hgs
parents:
diff changeset
    49
    }
hgs
parents:
diff changeset
    50
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    51
// CPiXStateObserver::~CPiXStateObserver()
hgs
parents:
diff changeset
    52
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    53
//
hgs
parents:
diff changeset
    54
CPiXStateObserver::~CPiXStateObserver()
hgs
parents:
diff changeset
    55
   {
hgs
parents:
diff changeset
    56
   iHarvesterClient.RemoveHarvesterEventObserver(*this);
hgs
parents:
diff changeset
    57
   iHarvesterClient.Close();
hgs
parents:
diff changeset
    58
   }
hgs
parents:
diff changeset
    59
hgs
parents:
diff changeset
    60
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    61
// CPiXStateObserver::ConstructL()
hgs
parents:
diff changeset
    62
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    63
//
hgs
parents:
diff changeset
    64
void CPiXStateObserver::ConstructL( RFs* aFsSession )
hgs
parents:
diff changeset
    65
    {    
hgs
parents:
diff changeset
    66
    iFsSession = aFsSession;
hgs
parents:
diff changeset
    67
    }
hgs
parents:
diff changeset
    68
hgs
parents:
diff changeset
    69
void CPiXStateObserver::StartMonitoringL()
hgs
parents:
diff changeset
    70
    {
hgs
parents:
diff changeset
    71
    TInt err(KErrNone);
hgs
parents:
diff changeset
    72
    err = iHarvesterClient.Connect();    
hgs
parents:
diff changeset
    73
    
hgs
parents:
diff changeset
    74
    if(err == KErrNone)
hgs
parents:
diff changeset
    75
        {
hgs
parents:
diff changeset
    76
        err = iHarvesterClient.AddHarvesterEventObserver( *this, EHEObserverTypeMMC, 1000 );        
hgs
parents:
diff changeset
    77
        }
hgs
parents:
diff changeset
    78
    iCollectionUtility = MMPXCollectionUtility::NewL( this );
hgs
parents:
diff changeset
    79
hgs
parents:
diff changeset
    80
    }
hgs
parents:
diff changeset
    81
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    82
// CPiXStateObserver::HarvestingUpdated()
hgs
parents:
diff changeset
    83
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    84
//
hgs
parents:
diff changeset
    85
void CPiXStateObserver::HarvestingUpdated( HarvesterEventObserverType aHEObserverType, 
hgs
parents:
diff changeset
    86
             HarvesterEventState aHarvesterEventState, TInt aItemsLeft  )
hgs
parents:
diff changeset
    87
    {    
hgs
parents:
diff changeset
    88
    if(aHEObserverType == EHEObserverTypeMMC)
hgs
parents:
diff changeset
    89
        {
hgs
parents:
diff changeset
    90
        switch(aHarvesterEventState)
hgs
parents:
diff changeset
    91
            {
hgs
parents:
diff changeset
    92
            case EHEStateStarted:
hgs
parents:
diff changeset
    93
            case EHEStateHarvesting:            
hgs
parents:
diff changeset
    94
                {
hgs
parents:
diff changeset
    95
                iMMCHarvesting = ETrue;                
hgs
parents:
diff changeset
    96
                break;
hgs
parents:
diff changeset
    97
                }
hgs
parents:
diff changeset
    98
            case EHEStateFinished:
hgs
parents:
diff changeset
    99
            case EHEStateUninitialized:
hgs
parents:
diff changeset
   100
                {
hgs
parents:
diff changeset
   101
                iMMCHarvesting = EFalse;                
hgs
parents:
diff changeset
   102
                break;
hgs
parents:
diff changeset
   103
                }
hgs
parents:
diff changeset
   104
            default:
hgs
parents:
diff changeset
   105
                break;
hgs
parents:
diff changeset
   106
            }
hgs
parents:
diff changeset
   107
        OstTrace0( TRACE_FLOW, CPIXSTATEOBSERVER_HARVESTINGUPDATED, "CPiXStateObserver::HarvestingUpdated MMC Event" );        
hgs
parents:
diff changeset
   108
        NotifyObserverL();
hgs
parents:
diff changeset
   109
        }    
hgs
parents:
diff changeset
   110
    }
hgs
parents:
diff changeset
   111
hgs
parents:
diff changeset
   112
void CPiXStateObserver::HandleCollectionMessage( CMPXMessage* aMessage, TInt aError )
hgs
parents:
diff changeset
   113
    {
hgs
parents:
diff changeset
   114
    if ( aError != KErrNone )
hgs
parents:
diff changeset
   115
        {
hgs
parents:
diff changeset
   116
        return;
hgs
parents:
diff changeset
   117
        }
hgs
parents:
diff changeset
   118
    
hgs
parents:
diff changeset
   119
    TMPXMessageId generalId( *aMessage->Value<TMPXMessageId>( KMPXMessageGeneralId ) );
hgs
parents:
diff changeset
   120
    
hgs
parents:
diff changeset
   121
    //we are interestead of only general system events
hgs
parents:
diff changeset
   122
    if ( generalId == KMPXMessageGeneral )
hgs
parents:
diff changeset
   123
        {
hgs
parents:
diff changeset
   124
        TInt event( *aMessage->Value<TInt>( KMPXMessageGeneralEvent ) );
hgs
parents:
diff changeset
   125
        TInt op( *aMessage->Value<TInt>( KMPXMessageGeneralType ) );
hgs
parents:
diff changeset
   126
        
hgs
parents:
diff changeset
   127
        if ( event == TMPXCollectionMessage::EBroadcastEvent )
hgs
parents:
diff changeset
   128
            {
hgs
parents:
diff changeset
   129
            switch( op )
hgs
parents:
diff changeset
   130
                {
hgs
parents:
diff changeset
   131
                //when MTP sync or music collection is started then pause processing
hgs
parents:
diff changeset
   132
                case EMcMsgRefreshStart:
hgs
parents:
diff changeset
   133
                case EMcMsgUSBMTPStart:
hgs
parents:
diff changeset
   134
                    {
hgs
parents:
diff changeset
   135
                    iMPXHarvesting = ETrue;
hgs
parents:
diff changeset
   136
                    break;
hgs
parents:
diff changeset
   137
                    }
hgs
parents:
diff changeset
   138
                //when MTP sync or music collection refresh is complete then resume processing
hgs
parents:
diff changeset
   139
                case EMcMsgRefreshEnd:
hgs
parents:
diff changeset
   140
                case EMcMsgUSBMTPEnd:
hgs
parents:
diff changeset
   141
                case EMcMsgUSBMTPNotActive:
hgs
parents:
diff changeset
   142
                    {
hgs
parents:
diff changeset
   143
                    iMPXHarvesting = EFalse;
hgs
parents:
diff changeset
   144
                    break;
hgs
parents:
diff changeset
   145
                    }
hgs
parents:
diff changeset
   146
                default:
hgs
parents:
diff changeset
   147
                    break;
hgs
parents:
diff changeset
   148
                }
hgs
parents:
diff changeset
   149
            OstTrace0( TRACE_FLOW, CPIXSTATEOBSERVER_HANDLECOLLECTIONMESSAGE, "CPiXStateObserver::HandleCollectionMessage MPX Event" );            
hgs
parents:
diff changeset
   150
            NotifyObserverL();
hgs
parents:
diff changeset
   151
            }        
hgs
parents:
diff changeset
   152
        }
hgs
parents:
diff changeset
   153
    }
hgs
parents:
diff changeset
   154
hgs
parents:
diff changeset
   155
void CPiXStateObserver::HandleOpenL( const CMPXMedia& /*aEntries*/, TInt /*aIndex*/,
hgs
parents:
diff changeset
   156
                                               TBool /*aComplete*/, TInt /*aError*/ )
hgs
parents:
diff changeset
   157
     {
hgs
parents:
diff changeset
   158
     // not needed here
hgs
parents:
diff changeset
   159
     }
hgs
parents:
diff changeset
   160
hgs
parents:
diff changeset
   161
void CPiXStateObserver::HandleOpenL( const CMPXCollectionPlaylist& /*aPlaylist*/, TInt /*aError*/ )
hgs
parents:
diff changeset
   162
   {
hgs
parents:
diff changeset
   163
   // not needed here
hgs
parents:
diff changeset
   164
   }
hgs
parents:
diff changeset
   165
hgs
parents:
diff changeset
   166
void CPiXStateObserver::HandleCollectionMediaL( const CMPXMedia& /*aMedia*/,
hgs
parents:
diff changeset
   167
                                                       TInt /*aError*/ )
hgs
parents:
diff changeset
   168
    {
hgs
parents:
diff changeset
   169
    // not needed here
hgs
parents:
diff changeset
   170
    }
hgs
parents:
diff changeset
   171
hgs
parents:
diff changeset
   172
TBool CPiXStateObserver::GetStatus()
hgs
parents:
diff changeset
   173
    {
hgs
parents:
diff changeset
   174
    TBool ret = EFalse;
hgs
parents:
diff changeset
   175
    if( iMMCHarvesting || iMPXHarvesting )
hgs
parents:
diff changeset
   176
        ret = ETrue;
hgs
parents:
diff changeset
   177
    return ret;        
hgs
parents:
diff changeset
   178
    }
hgs
parents:
diff changeset
   179
hgs
parents:
diff changeset
   180
void CPiXStateObserver::NotifyObserverL()
hgs
parents:
diff changeset
   181
    {
hgs
parents:
diff changeset
   182
    TBool status = GetStatus();
hgs
parents:
diff changeset
   183
    if( iPreviousState != status )
hgs
parents:
diff changeset
   184
            {
hgs
parents:
diff changeset
   185
            iPreviousState = status; 
hgs
parents:
diff changeset
   186
            if (iObserver)
hgs
parents:
diff changeset
   187
                {
hgs
parents:
diff changeset
   188
                iObserver->HandleStateObserverChangeL(status);
hgs
parents:
diff changeset
   189
                OstTrace1( TRACE_FLOW, CPIXSTATEOBSERVER_NOTIFYOBSERVERL, "CPiXStateObserver::NotifyObserverL status=%d", status );
hgs
parents:
diff changeset
   190
                
hgs
parents:
diff changeset
   191
                }
hgs
parents:
diff changeset
   192
            }    
hgs
parents:
diff changeset
   193
    }