startupservices/Startup/src/StartupUserWelcomeNote.cpp
changeset 0 2e3d3ce01487
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/startupservices/Startup/src/StartupUserWelcomeNote.cpp	Tue Feb 02 10:12:00 2010 +0200
@@ -0,0 +1,587 @@
+/*
+* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*     This class is the container class of the CStartupUerWelcomeNote.
+*     Is user for showing user selected picture, text or predefined animation.
+*
+*/
+
+
+
+// INCLUDE FILES
+#include <aknappui.h>
+#include <coemain.h>
+#include <aknnotewrappers.h>
+#include <AknGlobalNote.h>
+#include <barsread.h> //use of TResourceReader
+#ifdef RD_STARTUP_ANIMATION_CUSTOMIZATION
+#include "startupview.h"
+#else // RD_STARTUP_ANIMATION_CUSTOMIZATION
+#include <StarterClient.h>     //used for RemoveSplashScreen
+#include <startup.mbg>
+#endif // RD_STARTUP_ANIMATION_CUSTOMIZATION
+#include <e32const.h>
+#include "StartupUserWelcomeNote.h"
+#include <startup.rsg>
+#include <centralrepository.h>
+#include <startupdomaincrkeys.h>
+#include "StartupDefines.h"
+#include "startup.hrh"
+#include "StartupAppUi.h"
+#include "aknSDData.h"
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------------------------
+// CStartupUseWelcomeNote::ConstructL
+//
+// ---------------------------------------------------------------------------
+void CStartupUserWelcomeNote::ConstructL( const TRect& /*aRect*/ )
+    {
+    TRACES("CStartupUserWelcomeNote::ConstructL()");
+
+    iAvkonAppUi->StatusPane()->MakeVisible( EFalse );
+
+#ifdef RD_STARTUP_ANIMATION_CUSTOMIZATION
+
+    SetContainerWindowL( iView );
+    iView.SetComponent( *this );
+
+#else // RD_STARTUP_ANIMATION_CUSTOMIZATION
+
+    CreateWindowL();
+    iNoteCancelTimer = CPeriodic::NewL( EPriorityNormal );
+
+#endif // RD_STARTUP_ANIMATION_CUSTOMIZATION
+
+    iBitmap = new(ELeave) CFbsBitmap();
+
+    //get user selected userwelcomenotetype from Central Repository
+    TInt err = GetUserWelcomeNoteTypeInfo();
+
+    if( err != KErrNone )
+        {
+        TRACES("CStartupUserWelcomeNote::ConstructL(): Show default note");
+        //in error case default uwn (no note) is shown
+        iNoteType = EDefaultWelcomeNote;
+        iNoteDefaultVariationType = EStartupUWNDefaultNoNote;
+        }
+    //Do some preparations for showing user welcome note later
+    //This makes the starting to show much more quicker
+    switch ( iNoteType )
+        {
+        case ETextWelcomeNote:
+            {
+            TRACES("CStartupUserWelcomeNote::ConstructL(): iNoteType == ETextWelcomeNote");
+            }
+            break;
+        case EImageWelcomeNote:
+            {
+            TRACES("CStartupUserWelcomeNote::ConstructL(): iNoteType == EImageWelcomeNote");
+            TInt errorCode = iBitmap->Load( TPtrC(iNotePath.Ptr()) );
+            TRACES1("CStartupUserWelcomeNote::ConstructL(): Load returned %d", errorCode);
+            if(iStartupAppUi.CoverUISupported())
+                {
+                SecondaryDisplay::TWelcomeImage data(TPtrC(iNotePath.Ptr()));
+                SecondaryDisplay::TWelcomeImagePckg Pckg( data );
+                iStartupAppUi.RaiseCoverUIEvent( SecondaryDisplay::KCatStartup,
+                                                 SecondaryDisplay::EMsgWelcomeImageEvent,
+                                                 Pckg);
+                }
+            }
+            break;
+        default:
+            {
+            TRACES("CStartupUserWelcomeNote::ConstructL(): iNoteType == EDefaultWelcomeNote");
+            switch ( iNoteDefaultVariationType )
+                {
+                case EStartupUWNDefaultOperatorGraphic:
+                    {
+                    TRACES("CStartupUserWelcomeNote::ConstructL(): iNoteDefaultVariationType == EStartupUWNDefaultOperatorGraphic");
+                    iBitmap->Load( TPtrC(iNoteOperPath.Ptr()) );
+                    if(iStartupAppUi.CoverUISupported())
+                        {
+                        SecondaryDisplay::TWelcomeImage data(TPtrC(iNoteOperPath.Ptr()));
+                        SecondaryDisplay::TWelcomeImagePckg Pckg( data );
+                        iStartupAppUi.RaiseCoverUIEvent( SecondaryDisplay::KCatStartup,
+                                                         SecondaryDisplay::EMsgWelcomeImageEvent,
+                                                         Pckg);
+                        }
+                    }
+                    break;
+                case EStartupUWNDefaultOperatorText:
+                case EStartupUWNDefaultNoNote:
+                default:
+                    {
+                    //nothing preparation
+                    TRACES("CStartupUserWelcomeNote::ConstructL(): iNoteDefaultVariationType == EStartupUWNDefaultOperatorText or EStartupUWNDefaultNoNote");
+                    }
+                    break;
+                }
+            }
+            break;
+        }
+#ifndef RD_STARTUP_ANIMATION_CUSTOMIZATION
+    //get information for draw-function
+    iWelcomeNoteType = NoteTypeInformation();
+#endif // RD_STARTUP_ANIMATION_CUSTOMIZATION
+
+    SetRect(iAvkonAppUi->ApplicationRect());
+    ActivateL();
+    TRACES("CStartupUserWelcomeNote::ConstructL(): End");
+    }
+
+// -----------------------------------------------------------------------------
+// CStartupUserWelcomeNote::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CStartupUserWelcomeNote* CStartupUserWelcomeNote::NewL(
+    CStartupAppUi& aStartupAppUi,
+    const TRect& aRect
+#ifdef RD_STARTUP_ANIMATION_CUSTOMIZATION
+  , CStartupView& aView
+#endif // RD_STARTUP_ANIMATION_CUSTOMIZATION
+    )
+    {
+    TRACES("CStartupUserWelcomeNote::NewL()");
+#ifdef RD_STARTUP_ANIMATION_CUSTOMIZATION
+    CStartupUserWelcomeNote* self = new (ELeave) CStartupUserWelcomeNote( aStartupAppUi, aView );
+#else // RD_STARTUP_ANIMATION_CUSTOMIZATION
+    CStartupUserWelcomeNote* self = new (ELeave) CStartupUserWelcomeNote( aStartupAppUi );
+#endif // RD_STARTUP_ANIMATION_CUSTOMIZATION
+    CleanupStack::PushL(self);
+    self->ConstructL(aRect);
+    CleanupStack::Pop();
+    TRACES("CStartupUserWelcomeNote::NewL(): End");
+    return self;
+    }
+
+// ---------------------------------------------------------
+// CStartupUserWelcomeNote::CStartupUserWelcomeNote()
+// ---------------------------------------------------------
+CStartupUserWelcomeNote::CStartupUserWelcomeNote( CStartupAppUi& aStartupAppUi
+#ifdef RD_STARTUP_ANIMATION_CUSTOMIZATION
+  , CStartupView& aView
+#endif // RD_STARTUP_ANIMATION_CUSTOMIZATION
+ ) :
+#ifdef RD_STARTUP_ANIMATION_CUSTOMIZATION
+    iView( aView ),
+#else // RD_STARTUP_ANIMATION_CUSTOMIZATION
+    iSplashScreenRemoved( EFalse ),
+#endif // RD_STARTUP_ANIMATION_CUSTOMIZATION
+    iStartupAppUi( aStartupAppUi )
+#ifndef RD_STARTUP_ANIMATION_CUSTOMIZATION
+  , iUserWelcomeNoteShowing( EFalse ),
+    iUserWelcomeNoteCancelled( EFalse)
+#endif // RD_STARTUP_ANIMATION_CUSTOMIZATION
+    {
+    TRACES("CStartupUserWelcomeNote::CStartupUserWelcomeNote()");
+    }
+
+// ---------------------------------------------------------------------------
+// CStartupUseWelcomeNote::StartL()
+// ---------------------------------------------------------------------------
+void CStartupUserWelcomeNote::StartL()
+    {
+    TRACES("CStartupUserWelcomeNote::StartL()");
+    switch ( iNoteType )
+        {
+        case ETextWelcomeNote:
+            {
+            TRACES("CStartupUserWelcomeNote::StartL(): ETextWelcomeNote");
+            ShowInformationNoteWrapperL();
+            }
+            break;
+        case EImageWelcomeNote:
+            {
+            TRACES("CStartupUserWelcomeNote::StartL(): EImageWelcomeNote");
+            DrawImageWelcomeNote();
+            }
+            break;
+        default:
+            {
+            TRACES("CStartupUserWelcomeNote::StartL(): default");
+            switch ( iNoteDefaultVariationType )
+                {
+                case EStartupUWNDefaultOperatorGraphic:
+                    {
+                    TRACES("CStartupUserWelcomeNote::StartL(): EStartupUWNDefaultOperatorGraphic");
+                    DrawImageWelcomeNote();
+                    }
+                    break;
+                case EStartupUWNDefaultOperatorText:
+                    {
+                    TRACES("CStartupUserWelcomeNote::StartL(): EStartupUWNDefaultOperatorText");
+                    ShowInformationNoteWrapperL();
+                    }
+                    break;
+                case EStartupUWNDefaultNoNote:
+                default:
+                    TRACES("CStartupUserWelcomeNote::StartL(): EStartupUWNDefaultNoNote");
+                    break;
+                }
+            }
+            break;
+        }
+    ControlEnv()->WsSession().Flush(); // force draw of the context
+    TRACES("CStartupUserWelcomeNote::StartL(): End");
+    }
+
+// ---------------------------------------------------------
+// CStartupUserWelcomeNote::NoteTypeInformation()
+// ---------------------------------------------------------
+TStartupNoteTypeInformation CStartupUserWelcomeNote::NoteTypeInformation()
+    {
+    TRACES("CStartupUserWelcomeNote::NoteTypeInformation()");
+    if( iNoteType == EDefaultWelcomeNote && iNoteDefaultVariationType == EStartupUWNDefaultNoNote )
+        {
+        TRACES("CStartupUserWelcomeNote::NoteTypeInformation(): End, return EStartupNoNote");
+        return EStartupNoNote;
+        }
+    else if( ( iNoteType == ETextWelcomeNote ) ||
+             ( iNoteType == EDefaultWelcomeNote &&
+               iNoteDefaultVariationType == EStartupUWNDefaultOperatorText ) )
+        {
+        TRACES("CStartupUserWelcomeNote::NoteTypeInformation(): End, return EStartupText");
+        return EStartupText;
+        }
+    else if( ( iNoteType == EImageWelcomeNote ) ||
+                ( iNoteType == EDefaultWelcomeNote &&
+                  iNoteDefaultVariationType == EStartupUWNDefaultOperatorGraphic ) )
+        {
+        TRACES("CStartupUserWelcomeNote::NoteTypeInformation(): End, return EStartupImage");
+        return EStartupImage;
+        }
+    else
+        {
+        __ASSERT_DEBUG( EFalse, PANIC( EStartupNeverShouldBeHere ) );
+        return EStartupNoNote;
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CStartupUseWelcomeNote::DrawImageWelcomeNote
+// ---------------------------------------------------------------------------
+void CStartupUserWelcomeNote::DrawImageWelcomeNote()
+    {
+    TRACES("CStartupUserWelcomeNote::DrawImageWelcomeNote()");
+
+    CWindowGc& gc = SystemGc();
+    TInt xDelta=0; // for x coordinates
+    TInt yDelta=0; // for y coordinates
+    TSize bmpSizeInPixels = iBitmap->SizeInPixels();
+    //center image to the center of the screen
+    TRect rect = Rect();
+    xDelta=( rect.Width() - bmpSizeInPixels.iWidth ) / 2;
+    yDelta=( rect.Height() - bmpSizeInPixels.iHeight ) / 2;
+    TPoint pos = TPoint( xDelta , yDelta ); // displacement vector
+    ActivateGc();
+    Window().Invalidate( rect );
+    Window().BeginRedraw( rect );
+    gc.BitBlt( pos, iBitmap ); // CWindowGc member function
+    DrawUtils::ClearBetweenRects(gc, Rect(), TRect(pos,bmpSizeInPixels));
+    Window().EndRedraw();
+    DeactivateGc();
+    TRACES("CStartupUserWelcomeNote::DrawImageWelcomeNote(): End");
+    }
+
+// ---------------------------------------------------------------------------
+// CStartupUseWelcomeNote::~CStartupUserWelcomeNote()
+// ---------------------------------------------------------------------------
+CStartupUserWelcomeNote::~CStartupUserWelcomeNote()
+    {
+    TRACES("CStartupUserWelcomeNote::~CStartupUserWelcomeNote()");
+
+    delete iBitmap;
+
+#ifdef RD_STARTUP_ANIMATION_CUSTOMIZATION
+    iView.RemoveComponent();
+#else // RD_STARTUP_ANIMATION_CUSTOMIZATION
+    if( iNoteCancelTimer )
+        {
+        iNoteCancelTimer->Cancel();
+        }
+    delete iNoteCancelTimer;
+#endif // RD_STARTUP_ANIMATION_CUSTOMIZATION
+
+    TRACES("CStartupUserWelcomeNote::~CStartupUserWelcomeNote(): End");
+    }
+
+// ---------------------------------------------------------------------------
+// CStartupUserWelcomeNote::ComponentControl(TInt aIndex)
+// ---------------------------------------------------------------------------
+CCoeControl* CStartupUserWelcomeNote::ComponentControl(TInt /*aIndex*/) const
+    {
+    return NULL;
+    }
+
+#ifndef RD_STARTUP_ANIMATION_CUSTOMIZATION
+// ---------------------------------------------------------------------------
+// CStartupUserWelcomeNote::DrawBlankScreen() const
+// ---------------------------------------------------------------------------
+void CStartupUserWelcomeNote::DrawBlankScreen() const
+    {
+    TRACES("CStartupUserWelcomeNote::DrawBlankScreen()");
+    CWindowGc& gc = SystemGc();
+    TRect rect = Rect();
+    gc.SetPenStyle(CGraphicsContext::ENullPen);
+    gc.SetBrushColor(KRgbWhite);
+    gc.SetBrushStyle(CGraphicsContext::ESolidBrush);
+    gc.DrawRect(rect);
+    ControlEnv()->WsSession().Flush(); // force draw of the context
+    TRACES("CStartupUserWelcomeNote::DrawBlankScreen(): End");
+    }
+
+// ---------------------------------------------------------------------------
+// CStartupUserWelcomeNote::HandleControlEventL(...)
+// ---------------------------------------------------------------------------
+void CStartupUserWelcomeNote::HandleControlEventL(
+        CCoeControl* /*aControl*/,
+        TCoeEvent /*aEventType*/)
+    {
+    //pure virtual from MCoeControlObserver
+    TRACES("CStartupUserWelcomeNote::HandleControlEventL()");
+    }
+#endif // RD_STARTUP_ANIMATION_CUSTOMIZATION
+
+// ---------------------------------------------------------------------------
+// CStartupUserWelcomeNote::UserWelcomeNoteType()
+// ---------------------------------------------------------------------------
+TStartupWelcomeNoteType CStartupUserWelcomeNote::UserWelcomeNoteType()
+    {
+    return ( iNoteType );
+    }
+
+#ifndef RD_STARTUP_ANIMATION_CUSTOMIZATION
+// ---------------------------------------------------------------------------
+// CStartupUserWelcomeNote::OfferKeyEventL(...)
+// ---------------------------------------------------------------------------
+TKeyResponse CStartupUserWelcomeNote::OfferKeyEventL(const TKeyEvent& /*aKeyEvent*/, TEventCode /*aType*/)
+    {
+    TRACES("CStartupUserWelcomeNote::OfferKeyEventL()");
+    if( iUserWelcomeNoteShowing && !iStartupAppUi.HiddenReset() && !iUserWelcomeNoteCancelled )
+        {
+        // Cancel UWN
+        TRACES("CStartupUserWelcomeNote::OfferKeyEventL(): Timer activated - before");
+        iNoteCancelTimer->Start( 10000, 10000,
+                           TCallBack( iStartupAppUi.DoStopTimingL, &iStartupAppUi ) );
+        iUserWelcomeNoteCancelled = ETrue;
+        TRACES("CStartupUserWelcomeNote::OfferKeyEventL(): Timer activated - after");
+        }
+    TRACES("CStartupUserWelcomeNote::OfferKeyEventL(): End");
+    return EKeyWasConsumed;
+    }
+
+// ---------------------------------------------------------------------------
+// CStartupUserWelcomeNote::CancelNoteCancelTimer()
+// ---------------------------------------------------------------------------
+void CStartupUserWelcomeNote::CancelNoteCancelTimer()
+    {
+    TRACES("CStartupUserWelcomeNote::CancelNoteCancelTimer()");
+    iNoteCancelTimer->Cancel();
+    TRACES("CStartupUserWelcomeNote::CancelNoteCancelTimer(): End");
+    }
+#endif // RD_STARTUP_ANIMATION_CUSTOMIZATION
+
+// ---------------------------------------------------------------------------
+// CStartupUserWelcomeNote::GetUserWelcomeNoteTypeInfo()
+// ---------------------------------------------------------------------------
+TInt CStartupUserWelcomeNote::GetUserWelcomeNoteTypeInfo()
+    {
+    TRACES("CStartupUserWelcomeNote::GetUserWelcomeNoteTypeInfo()");
+    TInt err( KErrGeneral );
+
+    CRepository* repository(NULL);
+
+    TRAP( err, repository = CRepository::NewL( KCRUidStartupConf ) );
+    if ( err == KErrNone )
+        {
+        TInt type;
+        TBuf<KStartupTBufMaxLength> atext;
+        TBuf<KStartupTBufMaxLength> apath;
+        TBuf<KStartupTBufMaxLength> aoperatortext;
+        TBuf<KStartupTBufMaxLength> aoperatorpath;
+
+        err = repository->Get( KStartupWelcomeNoteType, type );
+        TRACES2("CStartupUserWelcomeNote::GetUserWelcomeNoteTypeInfo(): Welcome note type = %d, err = %d", type, err );
+
+        err = repository->Get( KStartupWelcomeNoteText, atext );
+        TRACES2("CStartupUserWelcomeNote::GetUserWelcomeNoteTypeInfo(): Welcome note text = '%S', err = %d", &atext, err );
+
+        err = repository->Get( KStartupWelcomeNoteImage, apath );
+        TRACES2("CStartupUserWelcomeNote::GetUserWelcomeNoteTypeInfo(): Welcome note image path = '%S', err = %d", &apath, err);
+
+        switch (type)
+            {
+            case EDefaultWelcomeNote:
+                {
+                TRACES("CStartupUserWelcomeNote::GetUserWelcomeNoteTypeInfo(): EDefaultWelcomeNote");
+                iNoteType = EDefaultWelcomeNote;
+
+                repository->Get( KStartupOperatorNoteImage, aoperatorpath );
+                TRACES1("CStartupUserWelcomeNote::GetUserWelcomeNoteTypeInfo(): Operator image path: '%S'", &aoperatorpath);
+                TInt opImageStatus = CheckImage(aoperatorpath);
+                TRACES1("CStartupUserWelcomeNote::GetUserWelcomeNoteTypeInfo(): Operator image status: %d", opImageStatus);
+
+                repository->Get( KStartupOperatorNoteText, aoperatortext );
+                TRACES1("CStartupUserWelcomeNote::GetUserWelcomeNoteTypeInfo(): Operator text: '%S'", &aoperatortext);
+
+                if ( opImageStatus == KErrNone )
+                    {
+                    TRACES("CStartupUserWelcomeNote::GetUserWelcomeNoteTypeInfo(): Default note type is EStartupUWNDefaultOperatorGraphic");
+                    iNoteDefaultVariationType = EStartupUWNDefaultOperatorGraphic;
+                    }
+                else if ( aoperatortext.Length() > 0 )
+                    {
+                    TRACES("CStartupUserWelcomeNote::GetUserWelcomeNoteTypeInfo(): Default note type is EStartupUWNDefaultOperatorText");
+                    iNoteDefaultVariationType = EStartupUWNDefaultOperatorText;
+                    }
+                else
+                    {
+                    TRACES("CStartupUserWelcomeNote::GetUserWelcomeNoteTypeInfo(): Default note type is EStartupUWNDefaultNoNote");
+                    iNoteDefaultVariationType = EStartupUWNDefaultNoNote;
+                    }
+                }
+                break;
+            case ETextWelcomeNote:
+                {
+                TRACES("CStartupUserWelcomeNote::GetUserWelcomeNoteTypeInfo(): ETextWelcomeNote");
+                iNoteType = ETextWelcomeNote;
+                }
+                break;
+            case EImageWelcomeNote:
+                {
+                TRACES("CStartupUserWelcomeNote::GetUserWelcomeNoteTypeInfo(): EImageWelcomeNote");
+                if (CheckImage(apath) != KErrNone)
+                    {
+                    //in error case default uwn (no note) is shown
+                    iNoteType = EDefaultWelcomeNote;
+                    iNoteDefaultVariationType = EStartupUWNDefaultNoNote;
+                    }
+                else
+                    {
+                    iNoteType = EImageWelcomeNote;
+                    }
+                }
+                break;
+            default:
+                {
+                TRACES("CStartupUserWelcomeNote::GetUserWelcomeNoteTypeInfo(): default");
+                delete repository;
+                TRACES("CStartupUserWelcomeNote::GetUserWelcomeNoteTypeInfo(): End, return KErrNotFound");
+                return KErrNotFound;
+                }
+            }
+        iNoteText = atext;
+        iNotePath = apath;
+        iNoteOperText = aoperatortext;
+        iNoteOperPath = aoperatorpath;
+        }
+
+    delete repository;
+    TRACES("CStartupUserWelcomeNote::GetUserWelcomeNoteTypeInfo(): End, return KErrNone");
+    return KErrNone;
+    }
+
+// ---------------------------------------------------------------------------
+// CStartupUserWelcomeNote::ShowInformationNoteWrapperL()
+// ---------------------------------------------------------------------------
+void CStartupUserWelcomeNote::ShowInformationNoteWrapperL()
+    {
+    TRACES("CStartupUserWelcomeNote::ShowInformationNoteWrapperL()");
+    TRACES1("CStartupUserWelcomeNote::ShowInformationNoteWrapperL(): Note type = %d", iNoteDefaultVariationType);
+
+    TRequestStatus status;
+    CAknGlobalNote* note = CAknGlobalNote::NewLC();
+    if ( iNoteDefaultVariationType == EStartupUWNDefaultOperatorText)
+        {
+        // Set secondary display data if necessary
+        if ( iStartupAppUi.CoverUISupported() )
+            {
+            SecondaryDisplay::TWelcomeNotePckg pckg(TPtrC(iNoteOperText.Ptr()));
+            CAknSDData* sd = CAknSDData::NewL(SecondaryDisplay::KCatStartup, SecondaryDisplay::ECmdShowWelcomeNote, pckg);
+            note->SetSecondaryDisplayData(sd); // ownership to notifier client
+            }
+        TRACES1("CStartupUserWelcomeNote::ShowInformationNoteWrapperL(): Operator text is '%S'", &iNoteOperText);
+        note->ShowNoteL( status, EAknGlobalTextNote, TPtrC(iNoteOperText.Ptr()) );
+        }
+    else
+        {
+        // Set secondary display data if necessary
+        if ( iStartupAppUi.CoverUISupported() )
+            {
+            SecondaryDisplay::TWelcomeNotePckg pckg(TPtrC(iNoteText.Ptr()));
+            CAknSDData* sd = CAknSDData::NewL(SecondaryDisplay::KCatStartup, SecondaryDisplay::ECmdShowWelcomeNote, pckg);
+            note->SetSecondaryDisplayData(sd); // ownership to notifier client
+            }
+        TRACES1("CStartupUserWelcomeNote::ShowInformationNoteWrapperL(): Welcome text is '%S'", &iNoteText);
+        note->ShowNoteL( status, EAknGlobalTextNote, TPtrC(iNoteText.Ptr()) );
+        }
+    User::WaitForRequest( status );
+    CleanupStack::PopAndDestroy(); // note
+    TRACES("CStartupUserWelcomeNote::ShowInformationNoteWrapperL(): End");
+    }
+
+#ifndef RD_STARTUP_ANIMATION_CUSTOMIZATION
+// ---------------------------------------------------------------------------
+// CStartupUserWelcomeNote::SetUserWelcomeNoteShowing(...)
+// ---------------------------------------------------------------------------
+void CStartupUserWelcomeNote::SetUserWelcomeNoteShowing(TBool aValue)
+    {
+    TRACES1("CStartupUserWelcomeNote::SetUserWelcomeNoteShowing(): aValue = %d", aValue);
+    iUserWelcomeNoteShowing = aValue;
+    }
+#endif // RD_STARTUP_ANIMATION_CUSTOMIZATION
+
+// ---------------------------------------------------------------------------
+// CStartupUserWelcomeNote::SetUserWelcomeNoteShowing(...)
+// ---------------------------------------------------------------------------
+TInt CStartupUserWelcomeNote::CheckImage( const TDesC& aPath)
+    {
+    TRACES("CStartupUserWelcomeNote::CheckImage()");
+    // Check if given welcome image is available
+    RFile welcomeimage;
+    TInt err( KErrNone );
+    RFs fs;
+
+    // Connect to file server
+    err = fs.Connect();
+    if (err != KErrNone)
+        {
+        TRACES("CStartupUserWelcomeNote::CheckImage(): Unable to connect to file server. Do not show welcome image.");
+        fs.Close();
+        TRACES1("CStartupUserWelcomeNote::CheckImage(): End, return %d", err);
+        return err;
+        }
+
+    // Open welcome image
+    err = welcomeimage.Open(fs, aPath, EFileRead);
+    if (err != KErrNone)
+        {
+        TRACES("CStartupUserWelcomeNote::CheckImage(): Welcome image does not exists. Do not try to show it.");
+        welcomeimage.Close();
+        fs.Close();
+        TRACES1("CStartupUserWelcomeNote::CheckImage(): End, return %d", err);
+        return err;
+        }
+
+    welcomeimage.Close();
+    fs.Close();
+    TRACES1("CStartupUserWelcomeNote::CheckImage(): End, return %d", err);
+    return err;
+    }
+
+//  End of File
+