memspy/Engine/Source/SysMemTracker/MemSpyEngineHelperSysMemTrackerEntryWindowServer.cpp
changeset 51 98307c651589
parent 42 0ff24a8f6ca2
child 52 c2f44e33b468
equal deleted inserted replaced
42:0ff24a8f6ca2 51:98307c651589
     1 /*
       
     2 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:
       
    15 *
       
    16 */
       
    17 
       
    18 #include "MemSpyEngineHelperSysMemTrackerEntryWindowServer.h"
       
    19 
       
    20 // User includes
       
    21 #include <memspy/engine/memspyengineoutputsink.h>
       
    22 #include <memspy/engine/memspyenginehelpersysmemtrackercycle.h>
       
    23 
       
    24 
       
    25 
       
    26 
       
    27 CMemSpyEngineHelperSysMemTrackerEntryWindowServer::CMemSpyEngineHelperSysMemTrackerEntryWindowServer( CMemSpyEngineHelperSysMemTrackerImp& aTracker, const TMemSpyEngineWindowGroupDetails& aWindowGroupDetails )
       
    28 :   CMemSpyEngineHelperSysMemTrackerEntry( aTracker, EMemSpyEngineSysMemTrackerTypeFbserv ), 
       
    29     iCurrentWindowGroupDetails( aWindowGroupDetails ),
       
    30     iLastWindowGroupDetails( aWindowGroupDetails )
       
    31     {
       
    32     }
       
    33 
       
    34 
       
    35 CMemSpyEngineHelperSysMemTrackerEntryWindowServer::~CMemSpyEngineHelperSysMemTrackerEntryWindowServer()
       
    36     {
       
    37     }
       
    38 
       
    39 
       
    40 void CMemSpyEngineHelperSysMemTrackerEntryWindowServer::ConstructL()
       
    41     {
       
    42     }
       
    43 
       
    44 
       
    45 CMemSpyEngineHelperSysMemTrackerEntryWindowServer* CMemSpyEngineHelperSysMemTrackerEntryWindowServer::NewLC( CMemSpyEngineHelperSysMemTrackerImp& aTracker, const TMemSpyEngineWindowGroupDetails& aWindowGroupDetails )
       
    46     {
       
    47     CMemSpyEngineHelperSysMemTrackerEntryWindowServer* self = new(ELeave) CMemSpyEngineHelperSysMemTrackerEntryWindowServer( aTracker, aWindowGroupDetails );
       
    48     CleanupStack::PushL( self );
       
    49     self->ConstructL();
       
    50     return self;
       
    51     }
       
    52 
       
    53 
       
    54 TUint64 CMemSpyEngineHelperSysMemTrackerEntryWindowServer::Key() const
       
    55     {
       
    56     return TUint64( iCurrentWindowGroupDetails.iId );
       
    57     }
       
    58 
       
    59 
       
    60 void CMemSpyEngineHelperSysMemTrackerEntryWindowServer::UpdateFromL( const CMemSpyEngineHelperSysMemTrackerEntry& aEntry )
       
    61     {
       
    62     const CMemSpyEngineHelperSysMemTrackerEntryWindowServer& entry = static_cast< const CMemSpyEngineHelperSysMemTrackerEntryWindowServer& >( aEntry );
       
    63     iLastWindowGroupDetails = iCurrentWindowGroupDetails;
       
    64     iCurrentWindowGroupDetails = entry.iCurrentWindowGroupDetails;
       
    65     }
       
    66 
       
    67 
       
    68 TBool CMemSpyEngineHelperSysMemTrackerEntryWindowServer::HasChangedL( const TMemSpyEngineHelperSysMemTrackerConfig& /*aConfig*/ ) const
       
    69     {
       
    70     const TBool hasChanged = ( iCurrentWindowGroupDetails.iIsFocused != iLastWindowGroupDetails.iIsFocused ) ||
       
    71                              ( iCurrentWindowGroupDetails.iCaption != iLastWindowGroupDetails.iCaption )
       
    72                              ;
       
    73     return hasChanged;
       
    74     }
       
    75 
       
    76 
       
    77 void CMemSpyEngineHelperSysMemTrackerEntryWindowServer::CreateChangeDescriptorL( CMemSpyEngineHelperSysMemTrackerCycle& aCycle )
       
    78     {
       
    79     CMemSpyEngineHelperSysMemTrackerCycleChangeWindowGroup::TMemSpyWindowServerEvent event( CMemSpyEngineHelperSysMemTrackerCycleChangeWindowGroup::EMemSpyWindowServerEventNoEvent );
       
    80     if ( iCurrentWindowGroupDetails.iCaption != iLastWindowGroupDetails.iCaption )
       
    81         {
       
    82         event = CMemSpyEngineHelperSysMemTrackerCycleChangeWindowGroup::EMemSpyWindowServerEventNameChanged;
       
    83         CMemSpyEngineHelperSysMemTrackerCycleChangeWindowGroup* changeDescriptor = CMemSpyEngineHelperSysMemTrackerCycleChangeWindowGroup::NewLC( Attributes(), iCurrentWindowGroupDetails, event );
       
    84         aCycle.AddAndPopL( changeDescriptor );
       
    85         }
       
    86     if ( iCurrentWindowGroupDetails.iIsFocused && !iLastWindowGroupDetails.iIsFocused )
       
    87         {
       
    88         event = CMemSpyEngineHelperSysMemTrackerCycleChangeWindowGroup::EMemSpyWindowServerEventFocusGained;
       
    89         CMemSpyEngineHelperSysMemTrackerCycleChangeWindowGroup* changeDescriptor = CMemSpyEngineHelperSysMemTrackerCycleChangeWindowGroup::NewLC( Attributes(), iCurrentWindowGroupDetails, event );
       
    90         aCycle.AddAndPopL( changeDescriptor );
       
    91         }
       
    92     if ( !iCurrentWindowGroupDetails.iIsFocused && iLastWindowGroupDetails.iIsFocused )
       
    93         {
       
    94         event = CMemSpyEngineHelperSysMemTrackerCycleChangeWindowGroup::EMemSpyWindowServerEventFocusLost;
       
    95         CMemSpyEngineHelperSysMemTrackerCycleChangeWindowGroup* changeDescriptor = CMemSpyEngineHelperSysMemTrackerCycleChangeWindowGroup::NewLC( Attributes(), iCurrentWindowGroupDetails, event );
       
    96         aCycle.AddAndPopL( changeDescriptor );
       
    97         }
       
    98     if ( event == CMemSpyEngineHelperSysMemTrackerCycleChangeWindowGroup::EMemSpyWindowServerEventNoEvent )
       
    99         {
       
   100         // If there were no events detected, it was a creation or deletion of a window group:
       
   101         CMemSpyEngineHelperSysMemTrackerCycleChangeWindowGroup* changeDescriptor = CMemSpyEngineHelperSysMemTrackerCycleChangeWindowGroup::NewLC( Attributes(), iCurrentWindowGroupDetails );
       
   102         aCycle.AddAndPopL( changeDescriptor );        
       
   103         }
       
   104     }
       
   105 
       
   106 
       
   107 void CMemSpyEngineHelperSysMemTrackerEntryWindowServer::UpdateCycleStatistics( CMemSpyEngineHelperSysMemTrackerCycle& /*aCycle*/ )
       
   108     {
       
   109     }
       
   110 
       
   111 
       
   112 
       
   113 
       
   114 
       
   115 
       
   116 
       
   117 
       
   118 
       
   119 
       
   120 
       
   121 
       
   122 
       
   123 
       
   124 
       
   125 
       
   126 
       
   127 
       
   128 
       
   129 
       
   130 
       
   131 
       
   132 
       
   133 
       
   134 
       
   135 
       
   136 
       
   137 
       
   138 
       
   139 
       
   140 
       
   141 
       
   142 
       
   143 
       
   144 
       
   145 
       
   146 
       
   147 
       
   148 
       
   149 
       
   150 
       
   151 
       
   152 
       
   153 
       
   154 
       
   155 
       
   156 
       
   157 
       
   158 
       
   159 
       
   160 
       
   161 
       
   162 
       
   163 
       
   164 
       
   165 CMemSpyEngineHelperSysMemTrackerCycleChangeWindowGroup::CMemSpyEngineHelperSysMemTrackerCycleChangeWindowGroup( TUint8 aAttribs, const TMemSpyEngineWindowGroupDetails aCurrent, TMemSpyWindowServerEvent aEvent )
       
   166 :   CMemSpyEngineHelperSysMemTrackerCycleChange( aAttribs ),
       
   167     iCurrentWindowGroupDetails( aCurrent ),
       
   168     iEvent( aEvent )
       
   169     {
       
   170     }
       
   171 
       
   172 
       
   173 CMemSpyEngineHelperSysMemTrackerCycleChangeWindowGroup::~CMemSpyEngineHelperSysMemTrackerCycleChangeWindowGroup()
       
   174     {
       
   175     }
       
   176 
       
   177 
       
   178 void CMemSpyEngineHelperSysMemTrackerCycleChangeWindowGroup::ConstructL()
       
   179     {
       
   180     BaseConstructL();
       
   181     }
       
   182 
       
   183 
       
   184 CMemSpyEngineHelperSysMemTrackerCycleChangeWindowGroup* CMemSpyEngineHelperSysMemTrackerCycleChangeWindowGroup::NewLC( TUint8 aAttribs, const TMemSpyEngineWindowGroupDetails aCurrent, TMemSpyWindowServerEvent aEvent )
       
   185     {
       
   186     CMemSpyEngineHelperSysMemTrackerCycleChangeWindowGroup* self = new(ELeave) CMemSpyEngineHelperSysMemTrackerCycleChangeWindowGroup( aAttribs, aCurrent, aEvent );
       
   187     CleanupStack::PushL( self );
       
   188     self->ConstructL();
       
   189     return self;
       
   190     }
       
   191 
       
   192 
       
   193 TMemSpyEngineSysMemTrackerType CMemSpyEngineHelperSysMemTrackerCycleChangeWindowGroup::Type() const
       
   194     {
       
   195     return EMemSpyEngineSysMemTrackerTypeWindowServer;
       
   196     }
       
   197    
       
   198 
       
   199 void CMemSpyEngineHelperSysMemTrackerCycleChangeWindowGroup::OutputHeaderL( CMemSpyEngineOutputSink& aSink, CMemSpyEngineHelperSysMemTrackerCycle& /*aCycle*/ )
       
   200     {
       
   201     _LIT( KHeaderWindowServer, "Type, Id, Name, Order, Event, Attribs");
       
   202     aSink.OutputLineL( KHeaderWindowServer );
       
   203     }
       
   204  
       
   205 
       
   206 void CMemSpyEngineHelperSysMemTrackerCycleChangeWindowGroup::OutputContentL( CMemSpyEngineOutputSink& aSink, CMemSpyEngineHelperSysMemTrackerCycle& /*aCycle*/ )
       
   207     {
       
   208     _LIT( KFormat, "%S,%d,%S,%d,%d,%S" );
       
   209     //
       
   210     TMemSpySWMTTypeName type;;
       
   211     FormatType( type );
       
   212     //
       
   213     TBuf<20> attribs;
       
   214     FormatAttributes( attribs );
       
   215     //
       
   216     TFullName name;
       
   217     if ( iCurrentWindowGroupDetails.iCaption.Length() )
       
   218         {
       
   219         name.Copy( iCurrentWindowGroupDetails.iCaption );
       
   220         }
       
   221     else
       
   222         {
       
   223         name.Copy( iCurrentWindowGroupDetails.iFullName );
       
   224         }
       
   225 
       
   226     HBufC* buf = HBufC::NewLC( 1024 );
       
   227     TPtr pBuf(buf->Des());
       
   228     
       
   229     // Now output line
       
   230     pBuf.Format( KFormat, 
       
   231                  &type,
       
   232                  //
       
   233                  iCurrentWindowGroupDetails.iId,
       
   234                  &name,
       
   235                  iCurrentWindowGroupDetails.iOrdinalPosition, 
       
   236                  iEvent,
       
   237                  &attribs
       
   238                  );
       
   239 
       
   240     aSink.OutputLineL( pBuf );
       
   241     CleanupStack::PopAndDestroy( buf );
       
   242     }