wlanutilities/wlansniffer/mainapplication/src/wsfmainviewcontainer.cpp
branchRCL_3
changeset 24 63be7eb3fc78
parent 23 b852595f5cbe
child 25 f28ada11abbf
equal deleted inserted replaced
23:b852595f5cbe 24:63be7eb3fc78
     1 /*
       
     2 * Copyright (c) 2007-2008 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:  Implementation of CWsfMainViewContainer.
       
    15 *
       
    16 */
       
    17 
       
    18 //  EXTERNAL INCLUDES
       
    19 #include <AknUtils.h>
       
    20 #include <aknlists.h>
       
    21 #include <badesca.h>
       
    22 #include <wlansniffer.rsg>
       
    23 #include <wsficons.mbg>
       
    24 #include <AknIconUtils.h>
       
    25 #include <AknsUtils.h>
       
    26 #include <gulicon.h> 
       
    27 #include <eikclbd.h> 
       
    28 #include <aknnavi.h>
       
    29 #include <aknnavide.h>
       
    30 #include <StringLoader.h>
       
    31 #include <eikenv.h> 
       
    32 #include <csxhelp/sniffer.hlp.hrh>
       
    33 
       
    34 
       
    35 //  INTERNAL INCLUDES
       
    36 #include "wsfmainviewcontainer.h"
       
    37 #include "wsfmainviewinternals.h"
       
    38 #include "wsfmainviewcontrollerpartner.h"
       
    39 #include "wsfdocument.h"
       
    40 #include "wsfwlaninfoarrayvisitor.h"
       
    41 #include "wsfappui.h"
       
    42 #include "wsfmainview.h"
       
    43 #include <wlansniffer.rsg>
       
    44 
       
    45 #include "wsflogger.h"
       
    46 
       
    47 
       
    48 
       
    49 //  LOCAL DEFINITIONS
       
    50 const TUint KIconListGranularity = 12; // Default size of the icons list
       
    51 // path of the app's iconfile
       
    52 _LIT( KIconFileName, "\\resource\\apps\\wsficons.mif" ); 
       
    53 
       
    54 const TInt KConnectingStepTime = 200 * 1000;
       
    55 
       
    56 _LIT( KFormat1Icon, "%d" );
       
    57 
       
    58 
       
    59 //  CONSTRUCTION AND DESTRUCTION
       
    60 // ---------------------------------------------------------
       
    61 // CWsfMainViewContainer::NewL
       
    62 // ---------------------------------------------------------
       
    63 //
       
    64 CWsfMainViewContainer* CWsfMainViewContainer::NewL( const TRect& aRect,
       
    65         CWsfMainView* aParentView )
       
    66     {
       
    67     LOG_ENTERFN( "CWsfMainViewContainer::NewL" );
       
    68     CWsfMainViewContainer* self =
       
    69             CWsfMainViewContainer::NewLC( aRect, aParentView );
       
    70     CleanupStack::Pop( self );
       
    71     return self;
       
    72     }
       
    73 
       
    74 // ---------------------------------------------------------
       
    75 // CWsfMainViewContainer::NewLC
       
    76 // ---------------------------------------------------------
       
    77 //
       
    78 CWsfMainViewContainer* CWsfMainViewContainer::NewLC( const TRect& aRect,
       
    79         CWsfMainView* aParentView )
       
    80     {
       
    81     LOG_ENTERFN( "CWsfMainViewContainer::NewLC" );
       
    82     CWsfMainViewContainer* self = new( ELeave ) CWsfMainViewContainer;
       
    83     CleanupStack::PushL( self );
       
    84     self->ConstructL( aRect, aParentView );
       
    85     return self;
       
    86     }
       
    87 
       
    88 // ---------------------------------------------------------
       
    89 // CWsfMainViewContainer::~CWsfMainViewContainer
       
    90 // ---------------------------------------------------------
       
    91 //
       
    92 CWsfMainViewContainer::~CWsfMainViewContainer()
       
    93     {
       
    94     LOG_ENTERFN( "CWsfMainViewContainer::~CWsfMainViewContainer" );
       
    95     
       
    96     StopConnectingAnimation();
       
    97     
       
    98     PopNaviPane();
       
    99     
       
   100     if ( iStatusConnecting )
       
   101         {
       
   102         delete iStatusConnecting;
       
   103         }
       
   104     
       
   105     delete iListBox;
       
   106     delete iNaviDecorator;
       
   107     }
       
   108 
       
   109 // ---------------------------------------------------------
       
   110 // CWsfMainViewContainer::CWsfMainViewContainer
       
   111 // ---------------------------------------------------------
       
   112 //
       
   113 CWsfMainViewContainer::CWsfMainViewContainer()
       
   114     {
       
   115     }
       
   116 
       
   117 // ---------------------------------------------------------
       
   118 // CWsfMainViewContainer::ConstructL
       
   119 // ---------------------------------------------------------
       
   120 //
       
   121 void CWsfMainViewContainer::ConstructL( const TRect& aRect,
       
   122         CWsfMainView* aParentView )
       
   123     {
       
   124     LOG_ENTERFN( "CWsfMainViewContainer::ConstructL" );
       
   125     CreateWindowL();
       
   126     
       
   127     iParentView = aParentView;
       
   128    
       
   129     iListBox = new( ELeave ) CAknDoubleGraphicStyleListBox();
       
   130     TInt flags( EAknGenericListBoxFlags );
       
   131     iListBox->SetMopParent(this); // 
       
   132     iListBox->ConstructL( this, flags );    
       
   133     iListBox->SetContainerWindowL(*this); 
       
   134 
       
   135     iListBox->SetFocus(ETrue);
       
   136         
       
   137     iListBox->CreateScrollBarFrameL( ETrue );
       
   138     iListBox->ScrollBarFrame()->SetScrollBarVisibilityL(
       
   139                                                CEikScrollBarFrame::EOff,
       
   140                                                CEikScrollBarFrame::EAuto );
       
   141 
       
   142     SetListboxIconsL();
       
   143     
       
   144     iConnectingIcons[0] = KWlanOnIcon_0;
       
   145     iConnectingIcons[1] = KWlanOnIcon_1;
       
   146     iConnectingIcons[2] = KWlanOnIcon;
       
   147     iConnectingIcons[3] = KWlanOnIcon_1;
       
   148 
       
   149     SetRect( aRect );
       
   150     iListBox->SetRect( Rect() );
       
   151     ActivateL();    
       
   152     }
       
   153 
       
   154 // ---------------------------------------------------------
       
   155 // CWsfMainViewContainer::SizeChanged
       
   156 // ---------------------------------------------------------
       
   157 //
       
   158 void CWsfMainViewContainer::SizeChanged()
       
   159     {
       
   160     iListBox->SetRect( Rect() );
       
   161     }
       
   162 
       
   163 // ---------------------------------------------------------
       
   164 // CWsfMainViewContainer::CountComponentControls
       
   165 // ---------------------------------------------------------
       
   166 //
       
   167 TInt CWsfMainViewContainer::CountComponentControls() const
       
   168     {
       
   169     return 1;// return number of controls inside this container
       
   170     }
       
   171 
       
   172 // ---------------------------------------------------------
       
   173 // CWsfMainViewContainer::ComponentControl
       
   174 // ---------------------------------------------------------
       
   175 //
       
   176 CCoeControl* CWsfMainViewContainer::ComponentControl(TInt aIndex) const
       
   177     {
       
   178     CCoeControl* object = NULL;
       
   179     switch ( aIndex )
       
   180         {
       
   181         case 0:
       
   182             object = iListBox;
       
   183             break; 
       
   184         default:
       
   185             object = NULL;
       
   186         }
       
   187     return object;
       
   188     }
       
   189 
       
   190 // ---------------------------------------------------------
       
   191 // CWsfMainViewContainer::OfferKeyEventL
       
   192 // ---------------------------------------------------------
       
   193 //
       
   194 TKeyResponse CWsfMainViewContainer::OfferKeyEventL( 
       
   195                                                 const TKeyEvent& aKeyEvent,
       
   196                                                 TEventCode aType )
       
   197     {
       
   198     LOG_ENTERFN( "CWsfMainViewContainer::OfferKeyEventL" );
       
   199     CWsfAppUi* appui = static_cast<CWsfAppUi*>( iEikonEnv->AppUi() );
       
   200     
       
   201     if ( appui->SuppressingKeyEvents() )
       
   202         {
       
   203         return EKeyWasConsumed;
       
   204         }
       
   205     
       
   206     TKeyResponse result( EKeyWasNotConsumed );
       
   207     if ( aType == EEventKey || aType == EEventKeyDown )
       
   208         {
       
   209         TInt index = iListBox->CurrentItemIndex();        
       
   210         if( ( aKeyEvent.iCode == EKeyBackspace ) && ( index != -1 ) )
       
   211             {
       
   212             result =  EKeyWasConsumed;
       
   213             }
       
   214         else
       
   215             {
       
   216             result = iListBox->OfferKeyEventL( aKeyEvent, aType );
       
   217 
       
   218             if( aKeyEvent.iCode == EKeyUpArrow )
       
   219                 {
       
   220                 if( iPartner )
       
   221                     {
       
   222                     iPartner->HandleUpKeyPressedL();
       
   223                     }
       
   224                 }   
       
   225             else if( aKeyEvent.iCode == EKeyDownArrow )
       
   226                 {
       
   227                 if( iPartner )
       
   228                     {
       
   229                     iPartner->HandleDownKeyPressedL();
       
   230                     }
       
   231                 }
       
   232            else if( aKeyEvent.iCode == EKeyOK )
       
   233                 {
       
   234                 if( iPartner )
       
   235                     {
       
   236                     iPartner->HandleSelectionKeyPressedL();
       
   237                     }
       
   238                 }
       
   239             }
       
   240         }
       
   241     return result;
       
   242     }
       
   243 
       
   244 // ---------------------------------------------------------
       
   245 // CWsfMainViewContainer::LoadGraphicsL
       
   246 // ---------------------------------------------------------
       
   247 //
       
   248 CAknIconArray* CWsfMainViewContainer::LoadGraphicsL()
       
   249     {
       
   250     LOG_ENTERFN( "CWsfMainViewContainer::LoadGraphicsL" );   
       
   251     CAknIconArray* icons = new(ELeave) CAknIconArray( KIconListGranularity );
       
   252     CleanupStack::PushL( TCleanupItem( CleanUpResetAndDestroy,icons) );
       
   253     
       
   254     
       
   255     //KWlanOnIcon
       
   256     icons->InsertL( KWlanOnIcon, 
       
   257             LoadSkinnableIconLC( KAknsIIDQgnIndiWlanSnifferPluginOn, 
       
   258                     EMbmWsficonsQgn_indi_wlan_sniffer_plugin_on) );
       
   259     CleanupStack::Pop(); /*icon*/
       
   260     
       
   261     //KWlanOnIcon_0
       
   262     icons->InsertL( KWlanOnIcon_0, 
       
   263             LoadSkinnableIconLC( KAknsIIDQgnIndiWlanSnifferPluginOn0, 
       
   264                     EMbmWsficonsQgn_indi_wlan_sniffer_plugin_on_0) );
       
   265     CleanupStack::Pop(); /*icon*/
       
   266     
       
   267     //KWlanOnIcon_0
       
   268     icons->InsertL( KWlanOnIcon_1, 
       
   269             LoadSkinnableIconLC( KAknsIIDQgnIndiWlanSnifferPluginOn1, 
       
   270                     EMbmWsficonsQgn_indi_wlan_sniffer_plugin_on_1) );
       
   271     CleanupStack::Pop(); /*icon*/
       
   272     
       
   273     //ESecureNetworkIcon
       
   274     icons->InsertL( KSecureNetworkIcon, LoadSkinnableBlackIconLC( 
       
   275             KAknsIIDQgnIndiWlanSecureNetworkAdd, 
       
   276             EMbmWsficonsQgn_indi_wlan_secure_network_add) );
       
   277     
       
   278     CleanupStack::Pop(); /*icon*/
       
   279 
       
   280     //ENoSignalIcon
       
   281     icons->InsertL( KNoSignalIcon, LoadIconLC( 
       
   282             EMbmWsficonsEmpty13x13) );
       
   283     CleanupStack::Pop(); /*icon*/
       
   284 
       
   285     //EPoorSignal
       
   286     icons->InsertL( KPoorSignal, LoadSkinnableBlackIconLC( 
       
   287             KAknsIIDQgnIndiWlanSignalLowAdd, 
       
   288             EMbmWsficonsQgn_indi_wlan_signal_low_add) );
       
   289     
       
   290     CleanupStack::Pop(); /*icon*/
       
   291 
       
   292     //EAverageSignal
       
   293     icons->InsertL( KAverageSignal, LoadSkinnableBlackIconLC( 
       
   294             KAknsIIDQgnIndiWlanSignalMedAdd, 
       
   295             EMbmWsficonsQgn_indi_wlan_signal_med_add) );
       
   296     CleanupStack::Pop(); /*icon*/
       
   297 
       
   298     //EExcelentSignal
       
   299     icons->InsertL( KExcelentSignal, LoadSkinnableBlackIconLC( 
       
   300             KAknsIIDQgnIndiWlanSignalGoodAdd , 
       
   301             EMbmWsficonsQgn_indi_wlan_signal_good_add) );
       
   302     CleanupStack::Pop(); /*icon*/
       
   303 
       
   304     //EConnectedNWIcon
       
   305     icons->InsertL( KConnectedNWIcon, 
       
   306             LoadSkinnableIconLC( KAknsIIDQgnPropCmonWlanConn, 
       
   307                     EMbmWsficonsQgn_prop_cmon_wlan_conn) );
       
   308     
       
   309     CleanupStack::Pop(); /*icon*/
       
   310 
       
   311     //EKnownNWIcon
       
   312     icons->InsertL( KKnownNWIcon, LoadSkinnableIconLC( 
       
   313             KAknsIIDQgnPropWlanBearer, 
       
   314             EMbmWsficonsQgn_prop_wlan_bearer) );
       
   315     CleanupStack::Pop(); /*icon*/
       
   316 
       
   317     //ETransparentIcon
       
   318     icons->InsertL( KTransparentIcon, LoadIconLC( 
       
   319             EMbmWsficonsQgn_prop_empty) );
       
   320     CleanupStack::Pop(); /*icon*/
       
   321      
       
   322     CleanupStack::Pop( icons );    
       
   323     return icons;   
       
   324     }
       
   325 
       
   326 
       
   327 
       
   328 // ---------------------------------------------------------
       
   329 // CWsfMainViewContainer::CleanUpResetAndDestroy
       
   330 // ---------------------------------------------------------
       
   331 //
       
   332 void CWsfMainViewContainer::CleanUpResetAndDestroy( TAny* aArray )
       
   333     {
       
   334     if ( aArray )
       
   335         {
       
   336         CArrayPtrFlat<CBase>* array = static_cast<CArrayPtrFlat<CBase>*>( 
       
   337                                                                     aArray );
       
   338         array->ResetAndDestroy();
       
   339         delete array; 
       
   340         }
       
   341     }
       
   342 
       
   343 
       
   344 // ---------------------------------------------------------
       
   345 // CWsfMainViewContainer::LoadIconLC
       
   346 // ---------------------------------------------------------
       
   347 //
       
   348 CGulIcon* CWsfMainViewContainer::LoadIconLC( TInt aIconId)
       
   349     {
       
   350     LOG_ENTERFN( "CWsfMainViewContainer::LoadIconLC" );   
       
   351     CGulIcon* icon = CGulIcon::NewLC();
       
   352     CFbsBitmap* bitmap;   
       
   353     CFbsBitmap* mask;   
       
   354    
       
   355     // Creates bitmap an icon.
       
   356     AknIconUtils::CreateIconL( bitmap, 
       
   357                                mask,
       
   358                                KIconFileName,
       
   359                                aIconId,
       
   360                                aIconId + 1 );
       
   361 
       
   362     icon->SetBitmap( bitmap );   
       
   363     icon->SetMask( mask ); 
       
   364     return icon;    
       
   365     }
       
   366 
       
   367 // ---------------------------------------------------------
       
   368 // CWsfMainViewContainer::LoadBlackIconLC
       
   369 // ---------------------------------------------------------
       
   370 //
       
   371 CGulIcon* CWsfMainViewContainer::LoadBlackIconLC( TInt aIconId )
       
   372     {
       
   373     LOG_ENTERFN( "CWsfMainViewContainer::LoadBlackIconLC" );   
       
   374     CGulIcon* icon = CGulIcon::NewLC();
       
   375     CFbsBitmap* bitmap;   
       
   376     CFbsBitmap* mask;   
       
   377    
       
   378     // Creates bitmap an icon.
       
   379 
       
   380      AknsUtils::CreateColorIconL( AknsUtils::SkinInstance(), 
       
   381                              KAknsIIDNone, 
       
   382                              KAknsIIDQsnIconColors, EAknsCIQsnIconColorsCG13, 
       
   383                              bitmap, 
       
   384                              mask, 
       
   385                              KIconFileName,
       
   386                              aIconId, 
       
   387                              aIconId+1,
       
   388                              KRgbBlack );
       
   389 
       
   390 
       
   391 
       
   392     icon->SetBitmap( bitmap );   
       
   393     icon->SetMask( mask ); 
       
   394     return icon;            
       
   395     }
       
   396 
       
   397 // ---------------------------------------------------------
       
   398 // CWsfMainViewContainer::LoadSkinnableIconLC
       
   399 // ---------------------------------------------------------
       
   400 //
       
   401 CGulIcon* CWsfMainViewContainer::LoadSkinnableIconLC( 
       
   402                                     const TAknsItemID aAknItemId, 
       
   403                                     const TInt aIconId )
       
   404     {
       
   405     CGulIcon* icon = CGulIcon::NewLC();
       
   406     CFbsBitmap* bitmap;
       
   407     CFbsBitmap* mask;
       
   408 
       
   409     // Creates bitmap an icon.
       
   410     
       
   411     AknsUtils::CreateIconL( AknsUtils::SkinInstance(),
       
   412                             aAknItemId,
       
   413                             bitmap,
       
   414                             mask,
       
   415                             KIconFileName,
       
   416                             aIconId,
       
   417                             aIconId+1 );
       
   418 
       
   419     icon->SetBitmap( bitmap );
       
   420     icon->SetMask( mask );
       
   421     return icon;
       
   422     }
       
   423 
       
   424 // ---------------------------------------------------------
       
   425 // CWsfMainViewContainer::LoadSkinnableBlackIconLC
       
   426 // ---------------------------------------------------------
       
   427 //
       
   428 CGulIcon* CWsfMainViewContainer::LoadSkinnableBlackIconLC( 
       
   429                                     const TAknsItemID aAknItemId, 
       
   430                                     const TInt aIconId )
       
   431     {
       
   432     CGulIcon* icon = CGulIcon::NewLC();
       
   433     CFbsBitmap* bitmap;
       
   434     CFbsBitmap* mask;
       
   435 
       
   436     // Creates bitmap an icon.
       
   437     
       
   438     AknsUtils::CreateColorIconL( AknsUtils::SkinInstance(), 
       
   439                             aAknItemId, 
       
   440                             KAknsIIDQsnIconColors, EAknsCIQsnIconColorsCG13, 
       
   441                             bitmap, 
       
   442                             mask, 
       
   443                             KIconFileName,
       
   444                             aIconId, 
       
   445                             aIconId+1,
       
   446                             KRgbBlack );
       
   447 
       
   448     icon->SetBitmap( bitmap );
       
   449     icon->SetMask( mask );
       
   450     return icon;
       
   451     }
       
   452 
       
   453 
       
   454 
       
   455 // ---------------------------------------------------------
       
   456 // CWsfMainViewContainer::UpdateHotSpotsL
       
   457 // ---------------------------------------------------------
       
   458 //
       
   459 void CWsfMainViewContainer::UpdateHotSpotsL( MDesCArray* aItemTextArray,
       
   460                                              TInt aCurrentItem )
       
   461     {
       
   462     LOG_ENTERFN( "CWsfMainViewContainer::UpdateHotSpotsL" );  
       
   463     StopConnectingAnimation();
       
   464     iListBox->Reset();
       
   465     iListBox->Model()->SetItemTextArray( aItemTextArray );
       
   466     iListBox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
       
   467     iListBox->HandleItemAdditionL(); 
       
   468     
       
   469     if ( aItemTextArray->MdcaCount() )
       
   470         {
       
   471         TInt lastIndex = aItemTextArray->MdcaCount() -1;
       
   472         if ( aCurrentItem <= lastIndex )
       
   473             {
       
   474             iListBox->SetCurrentItemIndex( aCurrentItem );            
       
   475             }
       
   476         else //( aCurrentItem > lastIndex ) 
       
   477             {        
       
   478             iListBox->SetCurrentItemIndex( lastIndex );
       
   479             }
       
   480         TPtrC itemtext = iListBox->Model()->ItemText(0);
       
   481         HBufC* text = itemtext.AllocLC();
       
   482         TPtr buffer = text->Des();
       
   483         if ( ParseStringForAnimationL( buffer ) )
       
   484             {
       
   485             //Get the list box items model.        
       
   486             MDesCArray* listArray = iListBox->Model()->ItemTextArray();        
       
   487             CDesCArray* itemArray = static_cast<CDesCArray*>(listArray);         
       
   488             itemArray->Delete(0,1); 
       
   489             itemArray->InsertL(0,buffer);
       
   490             LOG_WRITE("Connecting status found");
       
   491             StartConnectingAnimationL();
       
   492             }
       
   493         CleanupStack::PopAndDestroy(text);
       
   494         }
       
   495     
       
   496     iParentView->UpdateBrowserUsageInfoL();
       
   497     
       
   498     iListBox->DrawDeferred(); 
       
   499     }
       
   500 
       
   501 
       
   502 // --------------------------------------------------------------------------
       
   503 // CWsfAiView::ParseStringForAnimationL()
       
   504 // --------------------------------------------------------------------------
       
   505 //
       
   506 TBool CWsfMainViewContainer::ParseStringForAnimationL( TDes& aString )
       
   507     {
       
   508     LOG_ENTERFN( "CWsfMainViewContainer::ParseStringForAnimationL" );
       
   509     TBool found = EFalse;
       
   510     // start looking for '\t' digits and parse 
       
   511     // the icon identifiers and label text
       
   512     
       
   513     // L"\tOther (hidden netw.)"
       
   514     // L"6\tAd-hoc WPA\tConnecting\t4\t0" - this we are trying to find
       
   515 
       
   516     TChar delimiter('\t');
       
   517     TInt firstTabPos = aString.Locate( delimiter );
       
   518     TInt secondTabPos = aString.Mid( 
       
   519                                 firstTabPos +1 ).Locate( 
       
   520                                         delimiter ) + firstTabPos + 1;
       
   521     TInt thirdTabPos = aString.Mid( 
       
   522                                 secondTabPos +1 ).Locate( 
       
   523                                         delimiter ) + secondTabPos + 1;
       
   524 
       
   525     // ok we have the tab positions read the values...
       
   526     TInt firstIcon;
       
   527     if ( firstTabPos )
       
   528         {
       
   529         TLex( aString.Mid( 0, firstTabPos )).Val( (TInt&)firstIcon );
       
   530         LOG_WRITEF( "First Icon %d", firstIcon );
       
   531         }
       
   532     
       
   533     if ( secondTabPos && thirdTabPos )
       
   534         {
       
   535         HBufC * foundString = aString.Mid( secondTabPos+1, 
       
   536                                        thirdTabPos-secondTabPos-1 ).AllocLC();
       
   537         
       
   538         if ( !iStatusConnecting )
       
   539             {
       
   540             iStatusConnecting = StringLoader::LoadL(
       
   541                     R_QTN_SNIFFER_CONNECTING );
       
   542             }
       
   543         
       
   544         if ( !foundString->Compare( iStatusConnecting->Des() ) )
       
   545             {
       
   546             HBufC* item = HBufC::NewLC( KFormat1Icon().Length() );
       
   547             item->Des().Format( KFormat1Icon, iConnectingIcons[iConnectingIndex] );
       
   548             LOG_WRITEF( "Replace Icon %d", iConnectingIcons[iConnectingIndex] );
       
   549             
       
   550             aString.Replace(0, firstTabPos, item->Des() );
       
   551             found = ETrue;
       
   552             CleanupStack::PopAndDestroy( item );
       
   553             }
       
   554         CleanupStack::PopAndDestroy( foundString );
       
   555         }
       
   556 
       
   557     return found;
       
   558     }
       
   559 
       
   560 
       
   561 // --------------------------------------------------------------------------
       
   562 // CWsfMainViewContainer::StartConnectingAnimationL
       
   563 // --------------------------------------------------------------------------
       
   564 //
       
   565 void CWsfMainViewContainer::StartConnectingAnimationL()
       
   566     {
       
   567     LOG_ENTERFN( "CWsfMainViewContainer::StartConnectingAnimationL" );
       
   568     
       
   569     if ( iAnimationPeriodic )
       
   570         {
       
   571         iAnimationPeriodic->Cancel();
       
   572         delete iAnimationPeriodic;
       
   573         iAnimationPeriodic = NULL;
       
   574         }
       
   575 
       
   576     InitializeConnectingAnimation();
       
   577     iAnimationPeriodic = CPeriodic::NewL(
       
   578                               CActive::EPriorityLow );
       
   579                 
       
   580     iAnimationPeriodic->Start(
       
   581             TTimeIntervalMicroSeconds32( KConnectingStepTime ),
       
   582             TTimeIntervalMicroSeconds32( KConnectingStepTime ),
       
   583             TCallBack( 
       
   584                     CWsfMainViewContainer::DoConnectingAnimationStepL,
       
   585                     this
       
   586                     ) );
       
   587     }
       
   588 
       
   589 
       
   590 // --------------------------------------------------------------------------
       
   591 // CWsfMainViewContainer::StopConnectingAnimation
       
   592 // --------------------------------------------------------------------------
       
   593 //
       
   594 void CWsfMainViewContainer::StopConnectingAnimation()
       
   595     {
       
   596     LOG_ENTERFN( "CWsfMainViewContainer::StopConnectingAnimation" );
       
   597     
       
   598     if ( iAnimationPeriodic )
       
   599         {
       
   600         iAnimationPeriodic->Cancel();
       
   601         delete iAnimationPeriodic;
       
   602         iAnimationPeriodic = NULL;
       
   603         }
       
   604     }
       
   605 
       
   606 
       
   607 // ---------------------------------------------------------------------------
       
   608 // CWsfAiPlugin::DoConnectingAnimationStepL
       
   609 // ---------------------------------------------------------------------------
       
   610 //
       
   611 TInt CWsfMainViewContainer::DoConnectingAnimationStepL( TAny* ptr )
       
   612     {
       
   613     LOG_ENTERFN( "CWsfMainViewContainer::DoConnectingAnimationStepL" );
       
   614     static_cast<CWsfMainViewContainer*>( ptr )->DoConnectingAnimationStepL();
       
   615         return ETrue;
       
   616     }
       
   617 
       
   618 // ---------------------------------------------------------------------------
       
   619 // CWsfAiPlugin::DoConnectingAnimationStepL
       
   620 // ---------------------------------------------------------------------------
       
   621 //
       
   622 void CWsfMainViewContainer::DoConnectingAnimationStepL()
       
   623     {
       
   624     LOG_ENTERFN( "CWsfMainViewContainer::DoConnectingAnimationStepL" );
       
   625     AnimateConnecting();
       
   626     if ( iListBox->Model()->ItemTextArray()->MdcaCount() )
       
   627         {
       
   628         TPtrC itemtext = iListBox->Model()->ItemText(0);
       
   629         HBufC* text = itemtext.AllocLC();
       
   630         TPtr buffer = text->Des();
       
   631         if ( ParseStringForAnimationL( buffer ))
       
   632             {
       
   633             //Get the list box items model.        
       
   634             MDesCArray* listArray = iListBox->Model()->ItemTextArray();        
       
   635             CDesCArray* itemArray = static_cast<CDesCArray*>(listArray);         
       
   636             itemArray->Delete(0,1); 
       
   637             itemArray->InsertL(0,buffer);
       
   638             iListBox->HandleItemAdditionL(); 
       
   639             iListBox->DrawDeferred(); 
       
   640             LOG_WRITE("Connecting status found");
       
   641             }
       
   642         else
       
   643             {
       
   644             StopConnectingAnimation();
       
   645             }
       
   646         CleanupStack::PopAndDestroy( text );
       
   647         }
       
   648     }
       
   649 
       
   650 
       
   651 // --------------------------------------------------------------------------
       
   652 // CWsfAiModel::InitializeRefreshAnimation
       
   653 // --------------------------------------------------------------------------
       
   654 //
       
   655 void CWsfMainViewContainer::InitializeConnectingAnimation()
       
   656     {
       
   657     LOG_ENTERFN( "CWsfMainViewContainer::InitializeConnectingAnimation" );
       
   658     iConnectingIndex = 0;
       
   659     }
       
   660 
       
   661 
       
   662 // --------------------------------------------------------------------------
       
   663 // CWsfAiModel::AnimateConnecting
       
   664 // --------------------------------------------------------------------------
       
   665 //
       
   666 void CWsfMainViewContainer::AnimateConnecting()
       
   667     {
       
   668     LOG_ENTERFN( "CWsfMainViewContainer::AnimateConnecting" );
       
   669     ++iConnectingIndex %= iConnectingIcons.Count();
       
   670     }
       
   671 
       
   672 
       
   673 // ---------------------------------------------------------
       
   674 // CWsfMainViewContainer::SelectedItem
       
   675 // ---------------------------------------------------------
       
   676 //
       
   677 TInt CWsfMainViewContainer::SelectedItem()
       
   678     {
       
   679     return iListBox->CurrentItemIndex();
       
   680     }
       
   681 
       
   682 // ---------------------------------------------------------
       
   683 // CWsfMainViewContainer::HandleResourceChange
       
   684 // ---------------------------------------------------------
       
   685 //
       
   686 void CWsfMainViewContainer::HandleResourceChange( TInt aType )
       
   687     {
       
   688     LOG_ENTERFN( "CWsfMainViewContainer::HandleResourceChange" );   
       
   689     CCoeControl::HandleResourceChange( aType );
       
   690     
       
   691     if ( aType == KAknsMessageSkinChange )
       
   692         {
       
   693         TRAP_IGNORE( SetListboxIconsL() );
       
   694         SizeChanged();
       
   695         }
       
   696         
       
   697     if( aType == KEikDynamicLayoutVariantSwitch )
       
   698         {
       
   699         TRect mainPaneRect;
       
   700         AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, 
       
   701                                            mainPaneRect );        
       
   702         SetRect( mainPaneRect );                
       
   703         DrawNow();                
       
   704         }        
       
   705     }
       
   706 
       
   707 // ---------------------------------------------------------
       
   708 // CWsfMainViewContainer::SetPartner
       
   709 // ---------------------------------------------------------
       
   710 //    
       
   711 void CWsfMainViewContainer::SetPartner( 
       
   712                                     MWsfMainViewControllerPartner& aPartner )
       
   713     {
       
   714     iPartner = &aPartner;
       
   715     }
       
   716     
       
   717 // ---------------------------------------------------------
       
   718 // CWsfMainViewContainer::UpdateNaviPaneL
       
   719 // ---------------------------------------------------------
       
   720 //
       
   721 void CWsfMainViewContainer::UpdateNaviPaneL( const TDesC& aPaneText )
       
   722     {
       
   723     LOG_ENTERFN( "CWsfMainViewContainer::UpdateNaviPaneL" );   
       
   724     if ( !( ( CWsfAppUi *)( iEikonEnv->AppUi() ) )->Foreground() )
       
   725         {
       
   726         return;
       
   727         }
       
   728         
       
   729     GetPanesL();
       
   730     
       
   731     if ( iNaviDecorator )
       
   732         {
       
   733         PopNaviPane();
       
   734         }
       
   735         
       
   736     iNaviDecorator = iNaviPane->CreateNavigationLabelL( aPaneText );
       
   737     iNaviDecorator->MakeScrollButtonVisible( ETrue );
       
   738     iNaviPane->PushL( *iNaviDecorator );    
       
   739     }
       
   740 
       
   741 // ---------------------------------------------------------
       
   742 // CWsfMainViewContainer::ListBox
       
   743 // ---------------------------------------------------------
       
   744 //
       
   745 CAknDoubleGraphicStyleListBox* CWsfMainViewContainer::ListBox() const
       
   746     {
       
   747     return iListBox;
       
   748     }    
       
   749 
       
   750 // ---------------------------------------------------------
       
   751 // CWsfMainViewContainer::PopNaviPane
       
   752 // ---------------------------------------------------------
       
   753 //
       
   754 void CWsfMainViewContainer::PopNaviPane()
       
   755     {
       
   756     LOG_ENTERFN( "CWsfMainViewContainer::PopNaviPane" );   
       
   757     if ( iNaviPane && iNaviDecorator )
       
   758         {        
       
   759         iNaviPane->Pop( iNaviDecorator );
       
   760         delete iNaviDecorator;
       
   761         iNaviDecorator = NULL;
       
   762         }
       
   763     }
       
   764 
       
   765 // ---------------------------------------------------------
       
   766 // CWsfMainViewContainer::GetPanesL
       
   767 // ---------------------------------------------------------
       
   768 //
       
   769 void CWsfMainViewContainer::GetPanesL()
       
   770     {
       
   771     LOG_ENTERFN( "CWsfMainViewContainer::GetPanesL" );   
       
   772     if( !iNaviPane )
       
   773         {
       
   774         CEikStatusPane* statusPane = iEikonEnv->AppUiFactory()->StatusPane();
       
   775 
       
   776         iNaviPane =  static_cast<CAknNavigationControlContainer*>(
       
   777                         statusPane->ControlL( 
       
   778                                 TUid::Uid(EEikStatusPaneUidNavi ) ) );
       
   779         }
       
   780     }
       
   781 
       
   782 // ---------------------------------------------------------
       
   783 // CWsfMainViewContainer::SetListboxIconsL
       
   784 // ---------------------------------------------------------
       
   785 //
       
   786 void CWsfMainViewContainer::SetListboxIconsL()
       
   787     {
       
   788     LOG_ENTERFN( "CWsfMainViewContainer::SetListboxIconsL" );   
       
   789     CAknIconArray* icons = LoadGraphicsL();
       
   790 
       
   791     CWsfDocument* doc = static_cast<CWsfDocument*>
       
   792             ( iEikonEnv->EikAppUi()->Document() );
       
   793 
       
   794     doc->WlanInfoBranding().AppendBrandingIconsL( *icons );
       
   795     
       
   796     iListBox->ItemDrawer()->ColumnData()->SetIconArray( icons );
       
   797     
       
   798     }
       
   799 
       
   800 // ---------------------------------------------------------
       
   801 // CWsfMainViewContainer::GetHelpContext
       
   802 // ---------------------------------------------------------
       
   803 //
       
   804 void CWsfMainViewContainer::GetHelpContext( TCoeHelpContext& aContext) const
       
   805     {
       
   806     aContext.iMajor = TUid::Uid( 0x10281CAA );
       
   807     aContext.iContext = KSNIFFER_HLP_MAIN;
       
   808     }
       
   809 
       
   810     
       
   811 // End of file