idlehomescreen/widgetmanager/src/wmplugin.cpp
changeset 4 4d54b72983ae
parent 2 08c6ee43b396
child 5 c743ef5928ba
equal deleted inserted replaced
3:fb3763350a08 4:4d54b72983ae
    18 
    18 
    19 // INCLUDE FILES
    19 // INCLUDE FILES
    20 #include <bautils.h>
    20 #include <bautils.h>
    21 #include <coemain.h>
    21 #include <coemain.h>
    22 #include <aknViewAppUi.h>
    22 #include <aknViewAppUi.h>
       
    23 #include <eikappui.h>
       
    24 #include <eikapp.h>
    23 #include <e32property.h>
    25 #include <e32property.h>
    24 #include <activeidle2domainpskeys.h>
    26 #include <activeidle2domainpskeys.h>
    25 
    27 
    26 #include "wmcommon.h"
    28 #include "wmcommon.h"
    27 #include "widgetmanager.hrh"
    29 #include "widgetmanager.hrh"
    50 // ---------------------------------------------------------
    52 // ---------------------------------------------------------
    51 //
    53 //
    52 CWmPlugin::~CWmPlugin()
    54 CWmPlugin::~CWmPlugin()
    53     {
    55     {
    54     iPostponedCommand = ENone;
    56     iPostponedCommand = ENone;
       
    57 
       
    58     // delete WM UI resources
    55     if ( iViewAppUi )
    59     if ( iViewAppUi )
    56         {
    60         {
    57         if ( iWmMainContainer && IsActive() )
    61         if ( iWmMainContainer && IsActive() )
    58             {
    62             {
       
    63             // WM is showing. Hide first!
    59             iWmMainContainer->SetClosingDown( ETrue );
    64             iWmMainContainer->SetClosingDown( ETrue );
    60             TRAPD( err, iViewAppUi->ActivateLocalViewL(
    65             TRAPD( err, iViewAppUi->ActivateLocalViewL(
    61                             iPreviousViewUid.iViewUid ); );
    66                             iPreviousViewUid.iViewUid ); );
    62             if ( KErrNone == err )
    67             if ( KErrNone == err )
    63                 {
    68                 {
       
    69                 // wait until previous view is switched on top
       
    70                 // then continue destruction.
    64                 iWait->Start();
    71                 iWait->Start();
    65                 // remove view from appui
       
    66                 iViewAppUi->RemoveView( 
       
    67                         TUid::Uid( EWmMainContainerViewId ) );
       
    68                 }
    72                 }
    69             else
    73             else
    70                 {
    74                 {
    71                 TRAP_IGNORE( iViewAppUi->DeactivateActiveViewL(); );
    75                 // try to activate default view
    72                 iViewAppUi->RemoveFromViewStack( 
    76                 TVwsViewId viewId;
    73                         *iWmMainView, iWmMainContainer );
    77                 if ( iViewAppUi->GetDefaultViewId( viewId ) != KErrNone )
    74                 delete iWmMainContainer;
    78                     {
    75                 iWmMainContainer = NULL;
    79                     viewId.iAppUid = iViewAppUi->Application()->AppDllUid();
       
    80                     viewId.iViewUid = TUid::Uid( 1 );
       
    81                     }
       
    82                 
       
    83                 TRAPD( err, iViewAppUi->ActivateLocalViewL( viewId.iViewUid ); );
       
    84                 if ( KErrNone == err )
       
    85                     {
       
    86                     // wait until previous view is switched on top
       
    87                     // then continue destruction.
       
    88                     iWait->Start();
       
    89                     }
    76                 }
    90                 }
    77             }
    91             }
    78         }    
    92         // remove view from appui (also deletes it)
       
    93         iViewAppUi->RemoveView( 
       
    94                 TUid::Uid( EWmMainContainerViewId ) );
       
    95         }
       
    96 
       
    97     // delete other members
    79     delete iResourceLoader;
    98     delete iResourceLoader;
    80     delete iEffectManager;
    99     delete iEffectManager;
    81     delete iPostponedContent;
   100     delete iPostponedContent;
    82     delete iWait;
   101     delete iWait;
    83     }
   102     }
    96 // ---------------------------------------------------------
   115 // ---------------------------------------------------------
    97 //
   116 //
    98 void CWmPlugin::ConstructL()
   117 void CWmPlugin::ConstructL()
    99     {
   118     {
   100     iWmMainContainer = NULL;
   119     iWmMainContainer = NULL;
   101     iWmMainView = NULL;
       
   102 
   120 
   103     // store static view app ui
   121     // store static view app ui
   104     CEikonEnv* eikonEnv = CEikonEnv::Static();
   122     CEikonEnv* eikonEnv = CEikonEnv::Static();
   105     if ( !eikonEnv ) User::Leave( KErrUnknown );
   123     if ( !eikonEnv ) User::Leave( KErrUnknown );
   106     iViewAppUi = (CAknViewAppUi*)eikonEnv->EikAppUi();
   124     iViewAppUi = (CAknViewAppUi*)eikonEnv->EikAppUi();
   118     CWmMainContainerView* mainView =
   136     CWmMainContainerView* mainView =
   119             CWmMainContainerView::NewL( *this );
   137             CWmMainContainerView::NewL( *this );
   120     CleanupStack::PushL( mainView );
   138     CleanupStack::PushL( mainView );
   121 	iViewAppUi->AddViewL( mainView );	
   139 	iViewAppUi->AddViewL( mainView );	
   122 	CleanupStack::Pop( mainView );
   140 	CleanupStack::Pop( mainView );
   123 	iWmMainView = mainView;
       
   124     }
   141     }
   125 
   142 
   126 // ---------------------------------------------------------
   143 // ---------------------------------------------------------
   127 // CWmPlugin::Activate
   144 // CWmPlugin::Activate
   128 // ---------------------------------------------------------
   145 // ---------------------------------------------------------