src/screensaverview.cpp
branchRCL_3
changeset 22 aaeeca1f15af
parent 21 724d4ec22f0d
child 23 e8d784ac1a4b
equal deleted inserted replaced
21:724d4ec22f0d 22:aaeeca1f15af
     1 /*
       
     2 * Copyright (c) 2004 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:   Screensaver view class implementation.
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 
       
    20 #include <power_save_display_mode.h>
       
    21 #include <screensaver.rsg>
       
    22 
       
    23 #include "ScreensaverUtils.h"
       
    24 #include "screensaverview.h"
       
    25 #include "screensaverappui.h"
       
    26 #include "screensaverplugin.h"
       
    27 #include "screensaverutility.h"
       
    28 #include "screensaverctrlmovingtext.h"
       
    29 #include "screensaverctrlnone.h"
       
    30 #include "screensaverctrlplugin.h"
       
    31 #include "screensaverengine.h"
       
    32 #include "screensavershareddatai.h"
       
    33 
       
    34 const TUid KBigClockScreensaverPluginImplUid = { 0x2002E6DE };
       
    35 
       
    36 // -----------------------------------------------------------------------------
       
    37 // CScreensaverView::NewLC
       
    38 // add this NewLC code called by UI
       
    39 // -----------------------------------------------------------------------------
       
    40 // 
       
    41 CScreensaverView* CScreensaverView::NewL()
       
    42     {
       
    43     CScreensaverView* self = new( ELeave ) CScreensaverView();
       
    44     CleanupStack::PushL( self );
       
    45     self->ConstructL();
       
    46     CleanupStack::Pop();
       
    47     return self;
       
    48     }
       
    49 
       
    50 // -----------------------------------------------------------------------------
       
    51 // CScreensaverView::CScreensaverView
       
    52 // -----------------------------------------------------------------------------
       
    53 //
       
    54 CScreensaverView::CScreensaverView()
       
    55     {
       
    56     }
       
    57 
       
    58 
       
    59 // -----------------------------------------------------------------------------
       
    60 // CScreensaverView::~CScreensaverView
       
    61 // -----------------------------------------------------------------------------
       
    62 //
       
    63 CScreensaverView::~CScreensaverView( )
       
    64     {
       
    65     DestroyDisplayObject();
       
    66     }
       
    67 
       
    68 
       
    69 // -----------------------------------------------------------------------------
       
    70 // CScreensaverView::ConstructL
       
    71 // -----------------------------------------------------------------------------
       
    72 //
       
    73 void CScreensaverView::ConstructL( )
       
    74     {
       
    75     // Let CAknView do its stuff
       
    76     BaseConstructL();
       
    77     
       
    78     SetDisplayObject( PslnSettingScreensaverType() );
       
    79     }
       
    80 
       
    81 
       
    82 // -----------------------------------------------------------------------------
       
    83 // CScreensaverView::CreateDisplayObjectL
       
    84 // -----------------------------------------------------------------------------
       
    85 //
       
    86 void CScreensaverView::CreateDisplayObjectL( TDisplayObjectType aType )
       
    87     {
       
    88     SCRLOGGER_WRITEF(_L("SCR: CScreensaverView::CreateDisplayObjectL "),aType);
       
    89     
       
    90     DestroyDisplayObject();
       
    91     
       
    92     switch( aType )
       
    93         {
       
    94         case EDisplayPlugin:
       
    95             {
       
    96             iControl = CScreensaverCtrlPlugin::NewL();
       
    97             CScreensaverCtrlPlugin* pluginCtrl = 
       
    98                 STATIC_CAST( CScreensaverCtrlPlugin*, iControl );
       
    99             if ( pluginCtrl->PluginImplementationUid() ==
       
   100                  KBigClockScreensaverPluginImplUid )
       
   101                 {
       
   102                 iIsContentless = ETrue;
       
   103                 }
       
   104             break;
       
   105             }
       
   106         case EDisplayTime:
       
   107         case EDisplayText:
       
   108 #ifdef USE_DATE_AND_TEXT   
       
   109             {
       
   110             iControl = CScreensaverCtrlMovingText::NewL( aType );
       
   111             break;
       
   112             }
       
   113 #endif
       
   114         case EDisplayNone:
       
   115             {
       
   116             iControl = CScreensaverCtrlNone::NewL();
       
   117           //  iIsContentless = ETrue;
       
   118             break;
       
   119             }
       
   120             
       
   121         default:
       
   122             {
       
   123             break;
       
   124             }
       
   125         }
       
   126     
       
   127     iCurrentControlType = aType;
       
   128     }
       
   129 
       
   130 // -----------------------------------------------------------------------------
       
   131 // CScreensaverView::SetDisplayObject
       
   132 // -----------------------------------------------------------------------------
       
   133 //
       
   134 void CScreensaverView::SetDisplayObject( TDisplayObjectType aType )
       
   135     {
       
   136     SCRLOGGER_WRITEF(_L("SCR: CScreensaverView::SetDisplayObject "));
       
   137     
       
   138     TRAPD( error, CreateDisplayObjectL( aType ) );
       
   139 
       
   140     if(error == KErrNone)
       
   141         return;
       
   142 
       
   143     SCRLOGGER_WRITE("ResetDisplayObject() setting default screensaver");
       
   144 
       
   145     TRAP_IGNORE( CreateDisplayObjectL( DefaultScreensaverType() ) );
       
   146     }
       
   147 
       
   148 // -----------------------------------------------------------------------------
       
   149 // CScreensaverView::CreatePreviewDisplayObjectL
       
   150 // -----------------------------------------------------------------------------
       
   151 //
       
   152 void CScreensaverView::CreatePreviewDisplayObjectL()
       
   153     {
       
   154     SCRLOGGER_WRITEF(_L("SCR: CScreensaverView::CreatePreviewDisplayObjectL "));
       
   155     TRAPD( error, CreateDisplayObjectL( PslnSettingScreensaverType() ) );
       
   156 
       
   157     if(error == KErrNone)
       
   158         {
       
   159         Model().SharedDataInterface()->SetScreensaverPreviewState(
       
   160             EScreenSaverPreviewLoaded );
       
   161         return;
       
   162         }
       
   163     
       
   164     Model().SharedDataInterface()->SetScreensaverPreviewState(
       
   165         EScreenSaverPreviewError );
       
   166     }
       
   167 
       
   168 // ---------------------------------------------------------------------------
       
   169 // CScreensaverView::IsContentlessScreensaver
       
   170 // ---------------------------------------------------------------------------
       
   171 //
       
   172 TBool CScreensaverView::IsContentlessScreensaver() const
       
   173     {
       
   174     return iIsContentless;
       
   175     }
       
   176 
       
   177 // -----------------------------------------------------------------------------
       
   178 // CScreensaverView::Id
       
   179 // -----------------------------------------------------------------------------
       
   180 //
       
   181 TUid CScreensaverView::Id( ) const
       
   182     {
       
   183     return KUidScreensaverView;
       
   184     }
       
   185 
       
   186 
       
   187 // -----------------------------------------------------------------------------
       
   188 // CScreensaverView::DoActivateL
       
   189 // -----------------------------------------------------------------------------
       
   190 //
       
   191 void CScreensaverView::DoActivateL( const TVwsViewId& /*aPrevViewId*/,
       
   192     TUid /*aCustomMessageId*/, const TDesC8& /*aCustomMessage*/)
       
   193     {
       
   194     }
       
   195 
       
   196 
       
   197 // -----------------------------------------------------------------------------
       
   198 // CScreensaverView::DoDeactivate
       
   199 // -----------------------------------------------------------------------------
       
   200 //
       
   201 void CScreensaverView::DoDeactivate( )
       
   202     {
       
   203     }
       
   204 
       
   205 // -----------------------------------------------------------------------------
       
   206 // CScreensaverView::ShowDisplayObject
       
   207 // -----------------------------------------------------------------------------
       
   208 //
       
   209 void CScreensaverView::ShowDisplayObject()
       
   210     {
       
   211     SCRLOGGER_WRITEF(_L("SCR: CScreensaverView::ShowDisplayObject "));
       
   212     
       
   213     iControl->StartDrawObject();
       
   214     }
       
   215 
       
   216 // -----------------------------------------------------------------------------
       
   217 // CScreensaverView::HideDisplayObject
       
   218 // -----------------------------------------------------------------------------
       
   219 //
       
   220 void CScreensaverView::HideDisplayObject()
       
   221     {
       
   222     SCRLOGGER_WRITEF(_L("SCR: CScreensaverView::HideDisplayObject "));
       
   223     iControl->StopDrawObject();
       
   224 
       
   225     if ( !IsContentlessScreensaver() )
       
   226         {
       
   227         ScreensaverUtility::SendToBackground();
       
   228         }
       
   229     }
       
   230 
       
   231 // -----------------------------------------------------------------------------
       
   232 // CScreensaverView::UpdateAndRefresh
       
   233 // Updates indicators and refreshes the display
       
   234 // -----------------------------------------------------------------------------
       
   235 //
       
   236 void CScreensaverView::UpdateAndRefresh( )
       
   237     {
       
   238     SCRLOGGER_WRITEF(_L("SCR: CScreensaverView::UpdateAndRefresh "));
       
   239     iControl->Refresh();
       
   240     }
       
   241 
       
   242 // -----------------------------------------------------------------------------
       
   243 // CScreensaverView::DefaultScreensaverType
       
   244 // -----------------------------------------------------------------------------
       
   245 //
       
   246 TDisplayObjectType CScreensaverView::DefaultScreensaverType()
       
   247     {
       
   248     return Model().SharedDataInterface()->DefaultScreensaverType();
       
   249     }
       
   250 
       
   251 // -----------------------------------------------------------------------------
       
   252 // CScreensaverView::PslnSettingScreensaverType
       
   253 // -----------------------------------------------------------------------------
       
   254 //
       
   255 TDisplayObjectType CScreensaverView::PslnSettingScreensaverType()
       
   256     {
       
   257     return Model().SharedDataInterface()->DisplayObjectType();
       
   258     }
       
   259 
       
   260 // -----------------------------------------------------------------------------
       
   261 // CScreensaverView::Model
       
   262 // -----------------------------------------------------------------------------
       
   263 //
       
   264 CScreensaverEngine& CScreensaverView::Model() const
       
   265     {
       
   266     return STATIC_CAST( CScreensaverAppUi*, CCoeEnv::Static()->AppUi() )->Model(); 
       
   267     }
       
   268 
       
   269 // -----------------------------------------------------------------------------
       
   270 // CScreensaverView::DestroyDisplayObject
       
   271 // -----------------------------------------------------------------------------
       
   272 //
       
   273 void CScreensaverView::DestroyDisplayObject()
       
   274     {
       
   275     SCRLOGGER_WRITEF(_L("SCR: CScreensaverView::DestroyDisplayObject "));
       
   276     if( iControl )
       
   277         {
       
   278         delete iControl;
       
   279         iControl = NULL;
       
   280         }
       
   281     iIsContentless = EFalse;
       
   282     }
       
   283 // End of file