memana/analyzetoolclient/configurationappgui/src/atconfigurationappguiprocessview.cpp
changeset 2 6a82cd05fb1e
parent 1 3ff3fecb12fe
equal deleted inserted replaced
1:3ff3fecb12fe 2:6a82cd05fb1e
     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 <aknviewappui.h>
       
    19 #include <eikmenub.h>
       
    20 #include <avkon.hrh>
       
    21 #include <barsread.h>
       
    22 #include <stringloader.h>
       
    23 #include <aknlists.h>
       
    24 #include <eikenv.h>
       
    25 #include <akniconarray.h>
       
    26 #include <eikclbd.h>
       
    27 #include <akncontext.h>
       
    28 #include <akntitle.h>
       
    29 #include <aknnavide.h>
       
    30 #include <aknnavi.h>
       
    31 #include <eikbtgpc.h>
       
    32 #include <aknlistquerydialog.h>
       
    33 #include <atconfigurationappgui.rsg>
       
    34 
       
    35 #include "atconfigurationappgui.hrh"
       
    36 #include "atconfigurationappguiprocessview.h"
       
    37 #include "atconfigurationappguiprocesscontainer.hrh"
       
    38 #include "atconfigurationappguilistbox.hrh"
       
    39 #include "atconfigurationappguiprocesscontainer.h"
       
    40 #include "atconfigurationappguiappui.h"
       
    41 #include "atlog.h"
       
    42 
       
    43 // -----------------------------------------------------------------------------
       
    44 // CATConfigurationAppGuiProcessView::CATConfigurationAppGuiProcessView()
       
    45 // First phase of Symbian two-phase construction.
       
    46 // -----------------------------------------------------------------------------
       
    47 //
       
    48 CATConfigurationAppGuiProcessView::CATConfigurationAppGuiProcessView() :
       
    49     iLogOption( EATUseDefault )
       
    50     {
       
    51     LOGSTR1( "ATCU CATConfigurationAppGuiProcessView::CATConfigurationAppGuiProcessView()" );
       
    52     
       
    53     iNaviDecorator_ = NULL;
       
    54     iProcessContainer = NULL;
       
    55     }
       
    56 
       
    57 // -----------------------------------------------------------------------------
       
    58 // CATConfigurationAppGuiProcessView::~CATConfigurationAppGuiProcessView()
       
    59 // Destructor.
       
    60 // -----------------------------------------------------------------------------
       
    61 //
       
    62 CATConfigurationAppGuiProcessView::~CATConfigurationAppGuiProcessView()
       
    63     {
       
    64     LOGSTR1( "ATCU CATConfigurationAppGuiProcessView::~CATConfigurationAppGuiProcessView()" );
       
    65     
       
    66     if ( iNaviDecorator_ != NULL )
       
    67         {
       
    68         delete iNaviDecorator_;
       
    69         iNaviDecorator_ = NULL;
       
    70         }
       
    71     delete iProcessContainer;
       
    72     iProcessContainer = NULL;
       
    73     
       
    74     // Closes the array and frees all memory allocated to the array.
       
    75     iLibraries.Close();
       
    76     }
       
    77 
       
    78 // -----------------------------------------------------------------------------
       
    79 // CATConfigurationAppGuiProcessView::NewL()
       
    80 // Symbian two-phase constructor.
       
    81 // -----------------------------------------------------------------------------
       
    82 //
       
    83 CATConfigurationAppGuiProcessView* CATConfigurationAppGuiProcessView::NewL()
       
    84     {
       
    85     LOGSTR1( "ATCU CATConfigurationAppGuiProcessView::NewL()" );
       
    86     
       
    87     CATConfigurationAppGuiProcessView* self = CATConfigurationAppGuiProcessView::NewLC();
       
    88     CleanupStack::Pop( self );
       
    89     return self;
       
    90     }
       
    91 
       
    92 // -----------------------------------------------------------------------------
       
    93 // CATConfigurationAppGuiProcessView::NewLC()
       
    94 // Symbian two-phase constructor.
       
    95 // -----------------------------------------------------------------------------
       
    96 //
       
    97 CATConfigurationAppGuiProcessView* CATConfigurationAppGuiProcessView::NewLC()
       
    98     {
       
    99     LOGSTR1( "ATCU CATConfigurationAppGuiProcessView::NewLC()" );
       
   100     
       
   101     CATConfigurationAppGuiProcessView* self = new ( ELeave ) CATConfigurationAppGuiProcessView();
       
   102     CleanupStack::PushL( self );
       
   103     self->ConstructL();
       
   104     return self;
       
   105     }
       
   106 
       
   107 // -----------------------------------------------------------------------------
       
   108 // CATConfigurationAppGuiProcessView::ConstructL()
       
   109 // Second-phase constructor for view.
       
   110 // -----------------------------------------------------------------------------
       
   111 //
       
   112 void CATConfigurationAppGuiProcessView::ConstructL()
       
   113     {
       
   114     LOGSTR1( "ATCU CATConfigurationAppGuiProcessView::ConstructL()" );
       
   115     
       
   116     BaseConstructL( R_ATCONFIGURATION_APP_GUI_PROCESSCONTAINER_VIEW );
       
   117     }
       
   118 
       
   119 // -----------------------------------------------------------------------------
       
   120 // CATConfigurationAppGuiProcessView::Id()
       
   121 // Returns the UID for this view.
       
   122 // -----------------------------------------------------------------------------
       
   123 //
       
   124 TUid CATConfigurationAppGuiProcessView::Id() const
       
   125     {
       
   126     LOGSTR1( "ATCU CATConfigurationAppGuiProcessView::Id()" );
       
   127     
       
   128     return TUid::Uid( EATConfigurationAppGuiProcessViewId );
       
   129     }
       
   130 
       
   131 // -----------------------------------------------------------------------------
       
   132 // CATConfigurationAppGuiProcessView::HandleCommandL()
       
   133 // Handle a command for this view.
       
   134 // -----------------------------------------------------------------------------
       
   135 //
       
   136 void CATConfigurationAppGuiProcessView::HandleCommandL( TInt aCommand )
       
   137     {
       
   138     LOGSTR1( "ATCU CATConfigurationAppGuiProcessView::HandleCommandL()" );
       
   139     
       
   140     // [[[ begin generated region: do not modify [Generated Code]
       
   141     TBool commandHandled = EFalse;
       
   142     switch ( aCommand )
       
   143         { // Code to dispatch to the AknView's menu and CBA commands is generated here
       
   144         case EATConfigurationAppGuiProcessView_librariesMenuItemCommand:
       
   145         	RunListQueryL();
       
   146             commandHandled = ETrue;
       
   147             break;
       
   148         case EAknSoftkeyBack:
       
   149             {
       
   150             AppUi()->ActivateLocalViewL( TUid::Uid( EATConfigurationAppGuiListBoxViewId ) );
       
   151             commandHandled = ETrue;
       
   152             break;
       
   153             }
       
   154         case EATConfigurationAppGuiProcessViewSettingsMenuItemCommand:
       
   155             {
       
   156             AppUi()->ActivateLocalViewL( TUid::Uid( EATConfigurationAppGuiSettingItemListViewId ),
       
   157                     TUid::Uid( EATConfigurationAppGuiProcessViewId ), KNullDesC8 );
       
   158             commandHandled = ETrue;
       
   159             break;
       
   160             }
       
   161         case EATConfigurationAppGuiProcessViewEXTILogOption:
       
   162             {
       
   163             iLogOption = EATLogToXti;
       
   164             commandHandled = ETrue;
       
   165             break;
       
   166             }
       
   167         case EATConfigurationAppGuiProcessViewES60LogOption:
       
   168             {
       
   169             iLogOption = EATLogToFile;
       
   170             commandHandled = ETrue;
       
   171             break;
       
   172             }
       
   173         case EATConfigurationAppGuiProcessViewENoneLogOption:
       
   174             {
       
   175             iLogOption = EATLoggingOff;
       
   176             commandHandled = ETrue;
       
   177             break;
       
   178             }
       
   179         case EATConfigurationAppGuiProcessViewStart_subtestMenuItemCommand:
       
   180             {
       
   181             CATConfigurationAppGuiAppUi* appUi = ( CATConfigurationAppGuiAppUi* )iEikonEnv->AppUi();
       
   182             appUi->SetProcessSubTestStartL( iProcessId );
       
   183             SetupStatusPaneL();
       
   184             if ( iProcessContainer )
       
   185                 {
       
   186                 iProcessContainer->UpdateViewL();
       
   187                 }
       
   188             break;
       
   189             }
       
   190         case EATConfigurationAppGuiProcessViewStop_subtestMenuItemCommand:
       
   191             {
       
   192             CATConfigurationAppGuiAppUi* appUi = ( CATConfigurationAppGuiAppUi* )iEikonEnv->AppUi();
       
   193             appUi->SetProcessSubTestStopL( iProcessId );
       
   194             SetupStatusPaneL();
       
   195             if ( iProcessContainer )
       
   196                 {
       
   197                 iProcessContainer->UpdateViewL();
       
   198                 }
       
   199             break;
       
   200             }
       
   201         default:
       
   202             break;
       
   203         }
       
   204         
       
   205     if ( !commandHandled ) 
       
   206         {
       
   207 
       
   208         if ( aCommand == EAknSoftkeyBack || 
       
   209              aCommand == EATConfigurationAppGuiProcessViewExitMenuItemCommand )
       
   210             {
       
   211             AppUi()->HandleCommandL( EEikCmdExit );
       
   212             }
       
   213         }
       
   214     }
       
   215 
       
   216 // -----------------------------------------------------------------------------
       
   217 // CATConfigurationAppGuiProcessView::DynInitMenuPaneL()
       
   218 // Handles dynamically dimming the menu items.
       
   219 // -----------------------------------------------------------------------------
       
   220 //
       
   221 void CATConfigurationAppGuiProcessView::DynInitMenuPaneL( TInt aResourceId, 
       
   222 	CEikMenuPane* aMenuPane )
       
   223     {
       
   224     LOGSTR1( "ATCU CATConfigurationAppGuiProcessView::DynInitMenuPaneL()" );
       
   225     
       
   226     if ( aResourceId == R_ATCONFIGURATION_APP_GUI_PROCESS_MENU_PANE )
       
   227         {
       
   228         if( iProcessContainer->GetCurrentItemIndex() < 0 ) 
       
   229             {
       
   230             aMenuPane->SetItemDimmed( EATConfigurationAppGuiProcessViewStart_subtestMenuItemCommand, ETrue );
       
   231             aMenuPane->SetItemDimmed( EATConfigurationAppGuiProcessViewStop_subtestMenuItemCommand, ETrue );
       
   232             aMenuPane->SetItemDimmed( EATConfigurationAppGuiProcessView_librariesMenuItemCommand, ETrue );
       
   233             aMenuPane->SetItemDimmed( EATConfigurationAppGuiProcessViewSet_logging_modeMenuItemCommand, ETrue );
       
   234             } 
       
   235         else {
       
   236             CATConfigurationAppGuiAppUi* appUi = ( CATConfigurationAppGuiAppUi* )iEikonEnv->AppUi();
       
   237             TInt subTest = appUi->IsSubTestRunning( iProcessId );
       
   238             if ( subTest > KErrNotFound )
       
   239                 {
       
   240                 aMenuPane->SetItemDimmed( EATConfigurationAppGuiProcessViewStart_subtestMenuItemCommand, ETrue );
       
   241                 aMenuPane->SetItemDimmed( EATConfigurationAppGuiProcessViewStop_subtestMenuItemCommand, EFalse );
       
   242                 }
       
   243             else
       
   244                 {
       
   245                 aMenuPane->SetItemDimmed( EATConfigurationAppGuiProcessViewStart_subtestMenuItemCommand, EFalse );
       
   246                 aMenuPane->SetItemDimmed( EATConfigurationAppGuiProcessViewStop_subtestMenuItemCommand, ETrue );
       
   247                 }
       
   248 
       
   249             aMenuPane->SetItemDimmed( EATConfigurationAppGuiProcessView_librariesMenuItemCommand, EFalse );
       
   250             aMenuPane->SetItemDimmed( EATConfigurationAppGuiProcessViewSet_logging_modeMenuItemCommand, ETrue );
       
   251             aMenuPane->SetItemDimmed( EATConfigurationAppGuiProcessViewHelpMenuItemCommand, ETrue );
       
   252             aMenuPane->SetItemDimmed( EATConfigurationAppGuiProcessViewSettingsMenuItemCommand, ETrue );
       
   253             }
       
   254         }
       
   255         
       
   256     if ( aResourceId == R_ATCONFIGURATION_APP_GUI_RADIOBUTTON_MENUPANE )
       
   257         {
       
   258         if ( iLogOption == EATUseDefault )
       
   259             aMenuPane->SetItemButtonState( EATConfigurationAppGuiProcessViewEXTILogOption, 
       
   260                                            EEikMenuItemSymbolOn );
       
   261         else if ( iLogOption == EATLogToFile )
       
   262             aMenuPane->SetItemButtonState( EATConfigurationAppGuiProcessViewES60LogOption, 
       
   263                                            EEikMenuItemSymbolOn );
       
   264         else if ( iLogOption == EATLogToXti )
       
   265             aMenuPane->SetItemButtonState( EATConfigurationAppGuiProcessViewEXTILogOption, 
       
   266                                            EEikMenuItemSymbolOn );
       
   267         else if ( iLogOption == EATLoggingOff )
       
   268             aMenuPane->SetItemButtonState( EATConfigurationAppGuiProcessViewENoneLogOption, 
       
   269                                            EEikMenuItemSymbolOn );
       
   270         }
       
   271     }
       
   272 
       
   273 // -----------------------------------------------------------------------------
       
   274 // CATConfigurationAppGuiProcessView::DoActivateL()
       
   275 // Handles user actions during activation of the view.
       
   276 // -----------------------------------------------------------------------------
       
   277 //
       
   278 void CATConfigurationAppGuiProcessView::DoActivateL( 
       
   279     const TVwsViewId& /*aPrevViewId*/, TUid /*aCustomMessageId*/,
       
   280     const TDesC8& /*aCustomMessage*/ )
       
   281     {
       
   282     LOGSTR1( "ATCU CATConfigurationAppGuiProcessView::DoActivateL()" );
       
   283     
       
   284     CATConfigurationAppGuiAppUi* appUi = ( CATConfigurationAppGuiAppUi* )AppUi();
       
   285     iProcessId = appUi->GetCurrentProcessId();
       
   286     iProcessStartTime = appUi->GetCurrentProcessStartTime();
       
   287 
       
   288     SetupStatusPaneL();
       
   289 
       
   290     if ( iProcessContainer == NULL )
       
   291         {
       
   292         iProcessContainer = CreateContainerL();
       
   293         iProcessContainer->SetMopParent( this );
       
   294         AppUi()->AddToStackL( *this, iProcessContainer );
       
   295         // For supporting MSK context menu
       
   296         MenuBar()->SetContextMenuTitleResourceId( R_ATCONFIGURATION_PROCESS_OPTIONS_MENU );
       
   297         } 
       
   298     }
       
   299 
       
   300 // -----------------------------------------------------------------------------
       
   301 // CATConfigurationAppGuiProcessView::DoDeactivate()
       
   302 // Handles user actions during deactivation of the view.
       
   303 // -----------------------------------------------------------------------------
       
   304 //
       
   305 void CATConfigurationAppGuiProcessView::DoDeactivate()
       
   306     {
       
   307     LOGSTR1( "ATCU CATConfigurationAppGuiProcessView::DoDeactivate()" );
       
   308     
       
   309     TRAP_IGNORE( CleanupStatusPaneL() );
       
   310 
       
   311     if ( iProcessContainer != NULL )
       
   312         {
       
   313         AppUi()->RemoveFromViewStack( *this, iProcessContainer );
       
   314         delete iProcessContainer;
       
   315         iProcessContainer = NULL;
       
   316         }
       
   317     }
       
   318 
       
   319 // -----------------------------------------------------------------------------
       
   320 // CATConfigurationAppGuiProcessView::HandleStatusPaneSizeChange()
       
   321 // Handle status pane size change for this view.
       
   322 // -----------------------------------------------------------------------------
       
   323 //
       
   324 void CATConfigurationAppGuiProcessView::HandleStatusPaneSizeChange()
       
   325     {
       
   326     LOGSTR1( "ATCU CATConfigurationAppGuiProcessView::HandleStatusPaneSizeChange()" );
       
   327     
       
   328     CAknView::HandleStatusPaneSizeChange();
       
   329 
       
   330     // This may fail, but we're not able to propagate exceptions here
       
   331     TInt result;
       
   332     TRAP( result, SetupStatusPaneL() ); 
       
   333     }
       
   334 
       
   335 // -----------------------------------------------------------------------------
       
   336 // CATConfigurationAppGuiProcessView::SetupStatusPaneL()
       
   337 // -----------------------------------------------------------------------------
       
   338 //
       
   339 void CATConfigurationAppGuiProcessView::SetupStatusPaneL()
       
   340     {
       
   341     LOGSTR1( "ATCU CATConfigurationAppGuiProcessView::SetupStatusPaneL()" );
       
   342     
       
   343     // Reset the context pane
       
   344     TUid contextPaneUid = TUid::Uid( EEikStatusPaneUidContext );
       
   345     CEikStatusPaneBase::TPaneCapabilities subPaneContext = 
       
   346         StatusPane()->PaneCapabilities( contextPaneUid );
       
   347     if ( subPaneContext.IsPresent() && subPaneContext.IsAppOwned() )
       
   348         {
       
   349         CAknContextPane* context = static_cast< CAknContextPane* > ( 
       
   350             StatusPane()->ControlL( contextPaneUid ) );
       
   351         context->SetPictureToDefaultL();
       
   352         }
       
   353 
       
   354     // Setup the title pane
       
   355     TUid titlePaneUid = TUid::Uid( EEikStatusPaneUidTitle );
       
   356     CEikStatusPaneBase::TPaneCapabilities subPaneTitle = 
       
   357         StatusPane()->PaneCapabilities( titlePaneUid );
       
   358     if ( subPaneTitle.IsPresent() && subPaneTitle.IsAppOwned() )
       
   359         {
       
   360         CAknTitlePane* title = static_cast< CAknTitlePane* >( 
       
   361             StatusPane()->ControlL( titlePaneUid ) );
       
   362         //TResourceReader reader;
       
   363         //iEikonEnv->CreateResourceReaderLC( reader, R_ATCONFIGURATION_APP_GUI_TITLE_RESOURCE );
       
   364         //title->SetFromResourceL( reader );
       
   365         //CleanupStack::PopAndDestroy(); // reader internal state
       
   366         
       
   367         // Get process's name
       
   368         RArray<TATProcessInfo> processes;
       
   369         CATConfigurationAppGuiAppUi* appUi = ( CATConfigurationAppGuiAppUi* )iEikonEnv->AppUi();
       
   370         appUi->StorageServer().GetProcessesL( processes );
       
   371 
       
   372         for ( TInt find = 0 ; find < processes.Count() ; find++ )
       
   373             {
       
   374             TATProcessInfo processInfo = processes[ find ];
       
   375             if ( processInfo.iProcessId == iProcessId )
       
   376                 {
       
   377                 HBufC* name = HBufC::NewLC( processInfo.iProcessName.Length() );
       
   378                 name->Des().Copy( processInfo.iProcessName );
       
   379                 title->SetTextL( name->Des(), ETrue );
       
   380                 CleanupStack::PopAndDestroy( name );
       
   381                 break;
       
   382                 }
       
   383             }
       
   384 		// Closes the array and frees all memory allocated to the array.
       
   385         processes.Close();
       
   386         }
       
   387         
       
   388     // Set the navi pane content
       
   389     TUid naviPaneUid = TUid::Uid( EEikStatusPaneUidNavi );
       
   390     CEikStatusPaneBase::TPaneCapabilities subPaneNavi = 
       
   391         StatusPane()->PaneCapabilities( naviPaneUid );
       
   392     if ( subPaneNavi.IsPresent() && subPaneNavi.IsAppOwned() )
       
   393         {
       
   394         CAknNavigationControlContainer* naviPane = 
       
   395             static_cast< CAknNavigationControlContainer* >( 
       
   396                 StatusPane()->ControlL( naviPaneUid ) );
       
   397         if ( iNaviDecorator_ != NULL )
       
   398             {
       
   399             delete iNaviDecorator_;
       
   400             iNaviDecorator_ = NULL;
       
   401             }
       
   402         // Check if subtest is running
       
   403         CATConfigurationAppGuiAppUi* appUi = ( CATConfigurationAppGuiAppUi* )iEikonEnv->AppUi();
       
   404         TInt subTest = appUi->IsSubTestRunning( iProcessId );
       
   405         if ( subTest > KErrNotFound )
       
   406             {
       
   407             HBufC* labelText = StringLoader::LoadLC( R_ATCONFIGURATION_APP_GUI_NAVI_TEXT1 );
       
   408             iNaviDecorator_ = naviPane->CreateNavigationLabelL( labelText->Des() );  
       
   409             CleanupStack::PopAndDestroy( labelText );
       
   410             }
       
   411         else
       
   412             {
       
   413             iNaviDecorator_ = naviPane->CreateNavigationLabelL( KNullDesC ); 
       
   414             }
       
   415         naviPane->PushL( *iNaviDecorator_ );
       
   416         }
       
   417     }
       
   418 
       
   419 // -----------------------------------------------------------------------------
       
   420 // CATConfigurationAppGuiProcessView::CleanupStatusPaneL()
       
   421 // -----------------------------------------------------------------------------
       
   422 //
       
   423 void CATConfigurationAppGuiProcessView::CleanupStatusPaneL()
       
   424     {
       
   425     LOGSTR1( "ATCU CATConfigurationAppGuiProcessView::CleanupStatusPaneL()" );
       
   426     
       
   427     // Reset the navi pane 
       
   428     TUid naviPaneUid = TUid::Uid( EEikStatusPaneUidNavi );
       
   429     CEikStatusPaneBase::TPaneCapabilities subPaneNavi = 
       
   430         StatusPane()->PaneCapabilities( naviPaneUid );
       
   431     if ( subPaneNavi.IsPresent() && subPaneNavi.IsAppOwned() )
       
   432         {
       
   433         CAknNavigationControlContainer* naviPane = 
       
   434             static_cast< CAknNavigationControlContainer* >( 
       
   435                 StatusPane()->ControlL( naviPaneUid ) );
       
   436         if ( iNaviDecorator_ != NULL )
       
   437             {
       
   438             naviPane->Pop( iNaviDecorator_ );
       
   439             delete iNaviDecorator_;
       
   440             iNaviDecorator_ = NULL;
       
   441             }
       
   442         }
       
   443     }
       
   444 
       
   445 // -----------------------------------------------------------------------------
       
   446 // CATConfigurationAppGuiProcessView::CreateContainerL()
       
   447 // Creates the top-level container for the view.
       
   448 // -----------------------------------------------------------------------------
       
   449 //
       
   450 CATConfigurationAppGuiProcessContainer* CATConfigurationAppGuiProcessView::CreateContainerL()
       
   451     {
       
   452     LOGSTR1( "ATCU CATConfigurationAppGuiProcessView::CreateContainerL()" );
       
   453     
       
   454     return CATConfigurationAppGuiProcessContainer::NewL( 
       
   455     		ClientRect(), this, this, iProcessId, iProcessStartTime );
       
   456     }
       
   457 
       
   458 // -----------------------------------------------------------------------------
       
   459 // CATConfigurationAppGuiProcessView::CreateListQuery1ItemL()
       
   460 // Create a list box item with the given column values.
       
   461 // -----------------------------------------------------------------------------
       
   462 //
       
   463 void CATConfigurationAppGuiProcessView::CreateListQuery1ItemL( 
       
   464     TDes& aBuffer, const TDesC& aMainText )
       
   465     {
       
   466     LOGSTR1( "ATCU CATConfigurationAppGuiProcessView::CreateListQuery1ItemL()" );
       
   467     
       
   468     _LIT ( KStringHeader, "%S" );
       
   469 
       
   470     aBuffer.Format( KStringHeader(), &aMainText );
       
   471     }
       
   472 
       
   473 // -----------------------------------------------------------------------------
       
   474 // CATConfigurationAppGuiProcessView::CreateListQuery1ResourceArrayItemL()
       
   475 // Add an item to the list by reading the text items from resource.
       
   476 // -----------------------------------------------------------------------------
       
   477 //
       
   478 void CATConfigurationAppGuiProcessView::CreateListQuery1ResourceArrayItemL( 
       
   479         TDes& aBuffer, 
       
   480         TInt aResourceId )
       
   481     {
       
   482     LOGSTR1( "ATCU CATConfigurationAppGuiProcessView::CreateListQuery1ResourceArrayItemL()" );
       
   483     
       
   484     CDesCArray* array = CCoeEnv::Static()->ReadDesCArrayResourceL( aResourceId );
       
   485     CleanupStack::PushL( array );
       
   486     CreateListQuery1ItemL( aBuffer, ( *array ) [ 0 ] );
       
   487     CleanupStack::PopAndDestroy( array );
       
   488     }
       
   489 
       
   490 // -----------------------------------------------------------------------------
       
   491 // CATConfigurationAppGuiProcessView::InitializeListQuery1LC()
       
   492 // Initialize contents of the popup item list.
       
   493 // -----------------------------------------------------------------------------
       
   494 //
       
   495 CDesCArray* CATConfigurationAppGuiProcessView::InitializeListQuery1LC()
       
   496     {
       
   497     LOGSTR1( "ATCU CATConfigurationAppGuiProcessView::InitializeListQuery1LC()" );
       
   498     
       
   499     ( ( CATConfigurationAppGuiAppUi* )AppUi() )->StorageServer().GetLoadedDllsL( iProcessId, iLibraries );
       
   500     const int KNumItems = iLibraries.Count();
       
   501     CDesCArray* itemArray = new ( ELeave ) CDesCArrayFlat( KNumItems ? KNumItems : 1 );
       
   502     CleanupStack::PushL( itemArray );
       
   503     // This is intended to be large enough, but if you get 
       
   504     // a USER 11 panic, consider reducing string sizes.
       
   505 
       
   506     for ( TInt count = 0 ; count < KNumItems ; count++ )
       
   507         {
       
   508         TBuf<512> des;
       
   509         TBuf<KMaxLibraryName> library;
       
   510         library.Copy( iLibraries[ count ] );
       
   511         CreateListQuery1ItemL( des, library );
       
   512         itemArray->AppendL( des );
       
   513         }
       
   514     
       
   515     // Empties the array, so that it is ready to be reused.
       
   516     iLibraries.Reset();
       
   517     return itemArray;
       
   518     }
       
   519 
       
   520 // -----------------------------------------------------------------------------
       
   521 // CATConfigurationAppGuiProcessView::SetupListQuery1IconsLC()
       
   522 // Set up the list query's icon array.
       
   523 // -----------------------------------------------------------------------------
       
   524 //
       
   525 CArrayPtr< CGulIcon >* CATConfigurationAppGuiProcessView::SetupListQuery1IconsLC()
       
   526     {
       
   527     LOGSTR1( "ATCU CATConfigurationAppGuiProcessView::SetupListQuery1IconsLC()" );
       
   528     
       
   529     CArrayPtr< CGulIcon >* icons = NULL;
       
   530     return icons;
       
   531     }
       
   532 
       
   533 // -----------------------------------------------------------------------------
       
   534 // CATConfigurationAppGuiProcessView::RunListQueryL()
       
   535 // Show the popup list query dialog for listQuery.
       
   536 // -----------------------------------------------------------------------------
       
   537 //
       
   538 TInt CATConfigurationAppGuiProcessView::RunListQueryL( 
       
   539     const TDesC* aOverrideText, CDesCArray* aOverrideItemArray,
       
   540     CArrayPtr< CGulIcon >* aOverrideIconArray )
       
   541     {
       
   542     LOGSTR1( "ATCU CATConfigurationAppGuiProcessView::RunListQueryL()" );
       
   543     
       
   544     TInt index = 0;
       
   545     CAknListQueryDialog* queryDialog = NULL;
       
   546     queryDialog = new ( ELeave ) CAknListQueryDialog( &index );
       
   547     CleanupStack::PushL( queryDialog );
       
   548 
       
   549     queryDialog->PrepareLC( R_ATCONFIGURATION_APP_GUI_LIST_QUERY1 );
       
   550     if ( aOverrideText != NULL )
       
   551         {
       
   552         queryDialog->SetHeaderTextL( *aOverrideText );
       
   553         }
       
   554         
       
   555     // Initialize list items
       
   556     CDesCArray* itemArray = NULL;
       
   557 
       
   558     if ( aOverrideItemArray != NULL ) 
       
   559         {
       
   560         CleanupStack::PushL( aOverrideItemArray );
       
   561         itemArray = aOverrideItemArray;
       
   562         }
       
   563     else
       
   564         {
       
   565         itemArray = InitializeListQuery1LC();
       
   566         }
       
   567         
       
   568     queryDialog->SetItemTextArray( itemArray );
       
   569     queryDialog->SetOwnershipType( ELbmOwnsItemArray );
       
   570     CleanupStack::Pop( itemArray );
       
   571 
       
   572     // Initialize list icons
       
   573     CArrayPtr< CGulIcon >* iconArray = NULL;
       
   574 
       
   575     if ( aOverrideIconArray != NULL )
       
   576         {
       
   577         CleanupStack::PushL( aOverrideIconArray );
       
   578         iconArray = aOverrideIconArray;
       
   579         }
       
   580     else
       
   581         {
       
   582         iconArray = SetupListQuery1IconsLC();
       
   583         }
       
   584         
       
   585     if ( iconArray != NULL ) 
       
   586         {
       
   587         queryDialog->SetIconArrayL( iconArray ); // Passes ownership
       
   588         CleanupStack::Pop( iconArray );
       
   589         }
       
   590     // Enable text scrolling
       
   591     queryDialog->ListControl()->Listbox()->ItemDrawer()->ColumnData()->EnableMarqueeL( ETrue );
       
   592     // Run dialog
       
   593     TInt result = queryDialog->RunLD();
       
   594 
       
   595     // Clean up
       
   596     CleanupStack::Pop( queryDialog );
       
   597 
       
   598     return result == 0 ? -1 : index;
       
   599     }
       
   600 
       
   601 // End of File