idlehomescreen/xmluirendering/uiengine/src/xnwallpaperview.cpp
changeset 5 c743ef5928ba
parent 2 08c6ee43b396
child 16 9674c1a575e9
equal deleted inserted replaced
4:4d54b72983ae 5:c743ef5928ba
    18 
    18 
    19 // INCLUDE FILES
    19 // INCLUDE FILES
    20 #include "xnwallpaperview.h"
    20 #include "xnwallpaperview.h"
    21 #include "xnwallpapercontainer.h"
    21 #include "xnwallpapercontainer.h"
    22 #include "xnuiengine.h"
    22 #include "xnuiengine.h"
    23 #include "xneditor.h"
    23 #include "xnappuiadapter.h"
       
    24 #include "xnviewadapter.h"
    24 #include "xnbackgroundmanager.h"
    25 #include "xnbackgroundmanager.h"
       
    26 #include <xnuiengine.rsg>
    25 
    27 
    26 // SYSTEM INCLUDE FILES
    28 // SYSTEM INCLUDE FILES
    27 #include <aknappui.h>
    29 #include <aknappui.h>
    28 #include <eikbtgpc.h>
    30 #include <eikbtgpc.h>
    29 #include <avkon.rsg>
    31 #include <avkon.rsg>
    30 #include <AknsWallpaperUtils.h>
    32 #include <AknsWallpaperUtils.h>
    31 #include <MGFetch.h>
    33 #include <MGFetch.h>
       
    34 #include <aknnotewrappers.h>
       
    35 #include <StringLoader.h> 
       
    36 #include <caf/caf.h>
    32 
    37 
    33 _LIT8( KMulti, "multi" );
    38 _LIT8( KMulti, "multi" );
    34 const TInt KFileArrayGranularity = 6;
    39 const TInt KFileArrayGranularity = 6;
    35 
    40 
    36 // ============================ MEMBER FUNCTIONS ===============================
    41 // ============================ MEMBER FUNCTIONS ===============================
    49 // -----------------------------------------------------------------------------
    54 // -----------------------------------------------------------------------------
    50 //
    55 //
    51 void CXnWallpaperView::ConstructL()
    56 void CXnWallpaperView::ConstructL()
    52     {
    57     {
    53     BaseConstructL();
    58     BaseConstructL();
       
    59     iTimer = CPeriodic::NewL( CActive::EPriorityIdle );
    54     }
    60     }
    55 
    61 
    56 // -----------------------------------------------------------------------------
    62 // -----------------------------------------------------------------------------
    57 // Two-phased constructor.
    63 // Two-phased constructor.
    58 // -----------------------------------------------------------------------------
    64 // -----------------------------------------------------------------------------
    75     if ( iContainer )
    81     if ( iContainer )
    76         {
    82         {
    77         delete iContainer;
    83         delete iContainer;
    78         iContainer = NULL;
    84         iContainer = NULL;
    79         }
    85         }
       
    86     delete iTimer;
    80     }
    87     }
    81 
    88 
    82 // -----------------------------------------------------------------------------
    89 // -----------------------------------------------------------------------------
    83 // CXnWallpaperView::Id
    90 // CXnWallpaperView::Id
    84 // -----------------------------------------------------------------------------
    91 // -----------------------------------------------------------------------------
    95 void CXnWallpaperView::DoActivateL(
   102 void CXnWallpaperView::DoActivateL(
    96             const TVwsViewId& aPrevViewId,
   103             const TVwsViewId& aPrevViewId,
    97             TUid /*aCustomMessageId*/,
   104             TUid /*aCustomMessageId*/,
    98             const TDesC8& aCustomMessage )
   105             const TDesC8& aCustomMessage )
    99     {
   106     {
   100     iAvkonAppUi->StatusPane()->SwitchLayoutL( R_AVKON_STATUS_PANE_LAYOUT_USUAL );
   107     iAvkonAppUi->StatusPane()->SwitchLayoutL(
       
   108             R_AVKON_STATUS_PANE_LAYOUT_USUAL_FLAT );
   101     iAvkonAppUi->StatusPane()->DrawNow();
   109     iAvkonAppUi->StatusPane()->DrawNow();
   102     if ( !iContainer )
   110     if ( !iContainer )
   103         {
   111         {
   104         iContainer = CXnWallpaperContainer::NewL();
   112         iContainer = CXnWallpaperContainer::NewL();
   105         iAvkonAppUi->AddToStackL( *this,  iContainer );
   113         iAvkonAppUi->AddToStackL( *this,  iContainer );
   106         iContainer->ActivateL();
   114         iContainer->ActivateL();
   107         iContainer->DrawNow();
   115         iContainer->DrawNow();
   108         }
   116         }
   109     
   117     
       
   118     iData.iAppUid = aPrevViewId.iAppUid;
       
   119     iData.iViewUid = aPrevViewId.iViewUid; 
       
   120     iData.iMultiple = EFalse;
       
   121     iData.iTimer = iTimer;
       
   122     
       
   123     if( aCustomMessage == KMulti )
       
   124         {
       
   125         iData.iMultiple = ETrue;
       
   126         }
       
   127 
       
   128     // Run image selection dialog asynchronously
       
   129     if ( iTimer->IsActive() )
       
   130         {
       
   131         iTimer->Cancel();
       
   132         }
       
   133     iTimer->Start( 0, 1000, TCallBack( TimerCallbackL, &iData ) );
       
   134     }
       
   135 
       
   136 // -----------------------------------------------------------------------------
       
   137 // CXnWallpaperView::DoActivateL
       
   138 // -----------------------------------------------------------------------------
       
   139 //
       
   140 void CXnWallpaperView::DoDeactivate()
       
   141     {
       
   142     if ( iContainer )
       
   143         {
       
   144         iAvkonAppUi->RemoveFromStack( iContainer );
       
   145         delete iContainer;
       
   146         iContainer = NULL;
       
   147         }
       
   148     }
       
   149 
       
   150 // -----------------------------------------------------------------------------
       
   151 // CXnWallpaperView::TimerCallback
       
   152 // -----------------------------------------------------------------------------
       
   153 //
       
   154 TInt CXnWallpaperView::TimerCallbackL(TAny *aPtr)
       
   155     {
       
   156     TInt errAddWallpaper = KErrNone;
       
   157     
       
   158     TXnWallpaperViewData* data = reinterpret_cast<TXnWallpaperViewData*>( aPtr );
       
   159     data->iTimer->Cancel();
       
   160     
   110     CDesCArrayFlat* files = 
   161     CDesCArrayFlat* files = 
   111         new (ELeave) CDesCArrayFlat( KFileArrayGranularity );
   162         new (ELeave) CDesCArrayFlat( KFileArrayGranularity );
   112     CleanupStack::PushL( files );
   163     CleanupStack::PushL( files );
   113     TBool selected = EFalse;
   164     TBool selected = EFalse;
   114     
   165 
   115     TBool multiple=EFalse;
   166     TRAPD( err, selected = MGFetch::RunL( *files, EImageFile, data->iMultiple ) );
   116     if( aCustomMessage == KMulti )
       
   117         {
       
   118         multiple = ETrue;
       
   119         }
       
   120     TRAPD( err, selected = MGFetch::RunL( *files, EImageFile, multiple ) );
       
   121     if ( err == KErrNone &&
   167     if ( err == KErrNone &&
   122          selected &&
   168          selected &&
   123          files->MdcaCount() > 0 )
   169          files->MdcaCount() > 0 )
   124         {
   170         {
   125         // set wallpaper.
   171         // set wallpaper.
   126         if( files->MdcaCount() == 1 )
   172         if( files->MdcaCount() == 1 )
   127             {
   173             {
   128             iEngine.Editor()->BgManager().AddWallpaperL( files->MdcaPoint( 0 ) );
   174             CXnAppUiAdapter* appui = static_cast< CXnAppUiAdapter* >( iAvkonAppUi );
       
   175             CXnBackgroundManager& bgManager = appui->ViewAdapter().BgManager();
       
   176             errAddWallpaper = bgManager.AddWallpaperL( files->MdcaPoint( 0 ) );
   129             }
   177             }
   130         }
   178         }
   131     CleanupStack::PopAndDestroy( files );
   179     CleanupStack::PopAndDestroy( files );
   132     
   180 
   133     iAvkonAppUi->ActivateViewL( aPrevViewId );
   181     if( errAddWallpaper == KErrCACorruptContent )
   134     
   182         {
   135     }
   183         //load message text
   136 
   184         HBufC* msg = StringLoader::LoadLC( R_QTN_HS_CORRUPTED_IMAGE_NOTE );
   137 // -----------------------------------------------------------------------------
   185         //ensure that dialog will not disappear immediatelly - by const. param
   138 // CXnWallpaperView::DoActivateL
   186         CAknErrorNote* dialog = new (ELeave) CAknErrorNote( true );
   139 // -----------------------------------------------------------------------------
   187         CleanupStack::PushL( dialog );
   140 //
   188         //show dialog to user and destroy it
   141 void CXnWallpaperView::DoDeactivate()
   189         dialog->ExecuteLD( *msg );
   142     {
   190         CleanupStack::Pop( dialog );
   143     if ( iContainer )
   191         CleanupStack::PopAndDestroy( msg );
   144         {
   192         }
   145         iAvkonAppUi->RemoveFromStack( iContainer );
   193     
   146         delete iContainer;
   194     iAvkonAppUi->ActivateViewL( TVwsViewId( data->iAppUid, data->iViewUid ) );
   147         iContainer = NULL;
   195 
   148         }
   196     return EFalse;
   149     }
   197     }
       
   198 
   150 
   199 
   151 //  End of File
   200 //  End of File