email/imum/Utils/Src/IMSWTextEditorPage.cpp
changeset 0 72b543305e3a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/email/imum/Utils/Src/IMSWTextEditorPage.cpp	Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,336 @@
+/*
+* Copyright (c) 2006 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:  IMSWTextEditorPage.cpp
+*
+*/
+
+
+
+// INCLUDE FILES
+#include <aknnavide.h>                      // CAknNavigationDecorator
+#include <aknEditStateIndicator.h>
+#include <AknIndicatorContainer.h>
+#include <e32base.h>
+
+#include "IMSSettingsWizard.h"
+#include "IMSWTextEditorPage.h"
+#include "ImumUtilsLogging.h"
+
+// EXTERNAL DATA STRUCTURES
+// EXTERNAL FUNCTION PROTOTYPES
+// CONSTANTS
+const TText KIMASCharAt = '@';
+
+// MACROS
+// LOCAL CONSTANTS AND MACROS
+// MODULE DATA STRUCTURES
+// LOCAL FUNCTION PROTOTYPES
+// FORWARD DECLARATIONS
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// ----------------------------------------------------------------------------
+// CIMSSettingsWizardEditTextPage::CIMSSettingsWizardEditTextPage()
+// ----------------------------------------------------------------------------
+CIMSSettingsWizardEditTextPage::CIMSSettingsWizardEditTextPage(
+    CIMSSettingsWizard& aWizard,
+    TInt aResourceId,
+    TDes& aText,
+    TDesC& aPageText,
+    TInt aTextSettingPageFlags )
+    :
+    CAknTextSettingPage( aResourceId, aText, aTextSettingPageFlags ),
+    iWizard( aWizard ),
+    iText( aText ),
+    iPageText( aPageText )
+    {
+    IMUM_CONTEXT( CIMSSettingsWizardEditTextPage::CIMSSettingsWizardEditTextPage, 0, KLogUi );
+
+    }
+
+// ----------------------------------------------------------------------------
+// CIMSSettingsWizardEditTextPage::ConstructL()
+// ----------------------------------------------------------------------------
+//
+void CIMSSettingsWizardEditTextPage::ConstructL()
+    {
+    IMUM_CONTEXT( CIMSSettingsWizardEditTextPage::ConstructL, 0, KLogUi );
+
+    CAknTextSettingPage::ConstructL();
+    }
+
+// ----------------------------------------------------------------------------
+// CIMSSettingsWizardEditTextPage::PostDisplayCheckL()
+// ----------------------------------------------------------------------------
+//
+TBool CIMSSettingsWizardEditTextPage::PostDisplayCheckL()
+    {
+    IMUM_CONTEXT( CIMSSettingsWizardEditTextPage::PostDisplayCheckL, 0, KLogUi );
+
+    // Set the text to navipane
+    UpdateIndicatorL();
+
+    // Handle text selections
+    UpdateTextEditorL();
+
+    // Reset popup
+    iWizard.PostponePopup();
+
+    return ETrue;
+    }
+
+// ----------------------------------------------------------------------------
+// CIMSSettingsWizardEditTextPage::~CIMSSettingsWizardEditTextPage()
+// ----------------------------------------------------------------------------
+//
+CIMSSettingsWizardEditTextPage::~CIMSSettingsWizardEditTextPage()
+    {
+    IMUM_CONTEXT( CIMSSettingsWizardEditTextPage::~CIMSSettingsWizardEditTextPage, 0, KLogUi );
+
+    MAknEditingStateIndicator* ptr = iAvkonEnv->EditingStateIndicator();
+
+    if ( ptr )
+        {
+        CAknIndicatorContainer* iIndicatorContainer =
+            ptr->IndicatorContainer();
+
+        // Make sure the pointer to indicator exist
+        if ( iIndicatorContainer )
+            {
+            iIndicatorContainer->SetIndicatorState(
+                TUid::Uid( EAknNaviPaneEditorIndicatorMessageLength ),
+                EAknIndicatorStateOff );
+            }
+        }
+    }
+
+// ----------------------------------------------------------------------------
+// CIMSSettingsWizardEditTextPage::NewL()
+// ----------------------------------------------------------------------------
+//
+CIMSSettingsWizardEditTextPage* CIMSSettingsWizardEditTextPage::NewL(
+    CIMSSettingsWizard& aWizard,
+    TInt aResourceId,
+    TDes& aText,
+    TDesC& aPageText,
+    TInt aTextSettingPageFlags )
+    {
+    IMUM_STATIC_CONTEXT( CIMSSettingsWizardEditTextPage::NewL, 0, utils, KLogUi );
+
+    CIMSSettingsWizardEditTextPage* self = NewLC(
+        aWizard, aResourceId, aText, aPageText, aTextSettingPageFlags );
+    CleanupStack::Pop( self );
+
+    return self;
+    }
+
+// ----------------------------------------------------------------------------
+// CIMSSettingsWizardEditTextPage::NewLC()
+// ----------------------------------------------------------------------------
+//
+CIMSSettingsWizardEditTextPage* CIMSSettingsWizardEditTextPage::NewLC(
+    CIMSSettingsWizard& aWizard,
+    TInt aResourceId,
+    TDes& aText,
+    TDesC& aPageText,
+    TInt aTextSettingPageFlags )
+    {
+    IMUM_STATIC_CONTEXT( CIMSSettingsWizardEditTextPage::NewLC, 0, utils, KLogUi );
+
+    CIMSSettingsWizardEditTextPage* self =
+        new ( ELeave ) CIMSSettingsWizardEditTextPage(
+            aWizard, aResourceId, aText, aPageText, aTextSettingPageFlags );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+
+    return self;
+    }
+
+// ----------------------------------------------------------------------------
+// CIMSSettingsWizardEditTextPage::ProcessCommandL()
+// ----------------------------------------------------------------------------
+//
+void CIMSSettingsWizardEditTextPage::ProcessCommandL( TInt aCommandId )
+    {
+    IMUM_CONTEXT( CIMSSettingsWizardEditTextPage::ProcessCommandL, 0, KLogUi );
+
+    // Reset info popup
+    iWizard.PostponePopup();
+
+    switch( aCommandId )
+        {
+        case EAknSoftkeyCancel: // falltrough
+        case EAknCmdExit:
+            // Exit setting page (dialog)
+            AttemptExitL( EFalse );
+            // falltrough
+        case EAknSoftkeyBack: // falltrough
+        case EAknSoftkeyDone:
+            // Move to prev/next wizard page or exit app
+            iWizard.ProcessCommandL( aCommandId );
+            break;
+        default:
+            // Process edit commands (eg. number/alpha mode, spec. char table)
+            CAknTextSettingPage::ProcessCommandL( aCommandId );
+            break;
+        }
+    }
+
+// ----------------------------------------------------------------------------
+// CIMSSettingsWizardEditTextPage::KeyPressedNextL()
+// ----------------------------------------------------------------------------
+//
+void CIMSSettingsWizardEditTextPage::KeyPressedNextL()
+    {
+    IMUM_CONTEXT( CIMSSettingsWizardEditTextPage::KeyPressedNextL, 0, KLogUi );
+
+    AttemptExitL( ETrue );
+    }
+
+// ----------------------------------------------------------------------------
+// CIMSSettingsWizardEditTextPage::KeyPressedBackL()
+// ----------------------------------------------------------------------------
+//
+void CIMSSettingsWizardEditTextPage::KeyPressedBackL()
+    {
+    IMUM_CONTEXT( CIMSSettingsWizardEditTextPage::KeyPressedBackL, 0, KLogUi );
+
+    AttemptExitL( EFalse );
+    }
+
+// ----------------------------------------------------------------------------
+// CIMSSettingsWizardEditTextPage::KeyPressedSelectL()
+// ----------------------------------------------------------------------------
+//
+void CIMSSettingsWizardEditTextPage::KeyPressedSelectL()
+    {
+    IMUM_CONTEXT( CIMSSettingsWizardEditTextPage::KeyPressedSelectL, 0, KLogUi );
+
+    }
+
+// ----------------------------------------------------------------------------
+// CIMSSettingsWizardEditTextPage::UpdateIndicatorL()
+// ----------------------------------------------------------------------------
+//
+void CIMSSettingsWizardEditTextPage::UpdateIndicatorL()
+    {
+    IMUM_CONTEXT( CIMSSettingsWizardEditTextPage::UpdateIndicatorL, 0, KLogUi );
+
+    MAknEditingStateIndicator* ptr = iAvkonEnv->EditingStateIndicator();
+
+    if ( ptr )
+        {
+        CAknIndicatorContainer* iIndicatorContainer =
+            ptr->IndicatorContainer();
+
+        // Make sure the pointer to indicator exist
+        if ( iIndicatorContainer )
+            {
+            iIndicatorContainer->SetIndicatorState(
+                TUid::Uid( EAknNaviPaneEditorIndicatorMessageLength ),
+                EAknIndicatorStateOn );
+            iIndicatorContainer->SetIndicatorValueL(
+                TUid::Uid( EAknNaviPaneEditorIndicatorMessageLength ),
+                iPageText );
+            }
+        }
+    }
+
+// ----------------------------------------------------------------------------
+// CIMSSettingsWizardEditTextPage::UpdateTextEditorL()
+// ----------------------------------------------------------------------------
+//
+void CIMSSettingsWizardEditTextPage::UpdateTextEditorL()
+    {
+    IMUM_CONTEXT( CIMSSettingsWizardEditTextPage::UpdateTextEditorL, 0, KLogUi );
+
+    // Check if the text contains '@' in the first char
+    if ( iText.Size() && iText[0] == KIMASCharAt )
+        {
+        // Remove selection and move the cursor at the beginning
+        CEikEdwin* edwin = TextControl();
+        edwin->ClearSelectionL();
+        edwin->SetCursorPosL( 0, EFalse );
+        edwin = NULL;
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CIMSSettingsWizardEditTextPage::OfferKeyEventL()
+// This is needed to postpone popup time
+// when user is writing. Popup should apper
+// only when user has been "idle" for some time.
+// -----------------------------------------------------------------------------
+//
+TKeyResponse CIMSSettingsWizardEditTextPage::OfferKeyEventL(
+    const TKeyEvent& aKeyEvent,
+    TEventCode aType )
+    {
+    IMUM_CONTEXT( CIMSSettingsWizardEditTextPage::OfferKeyEventL, 0, KLogUi );
+
+    if ( aType == EEventKeyDown )
+        {
+        iWizard.PostponePopup();
+        }
+    return CAknTextSettingPage::OfferKeyEventL( aKeyEvent, aType );
+    }
+
+#ifdef RD_SCALABLE_UI_V2
+// -----------------------------------------------------------------------------
+// CIMSSettingsWizardEditTextPage::HandlePointerEventL()
+// This is needed to postpone popup time
+// when user is tapping with stylus. Popup should apper
+// only when user has been "idle" for some time.
+// -----------------------------------------------------------------------------
+//
+void CIMSSettingsWizardEditTextPage::HandlePointerEventL(
+    const TPointerEvent& aPointerEvent)
+    {
+    IMUM_CONTEXT( CIMSSettingsWizardEditTextPage::HandlePointerEventL, 0, KLogUi );
+    IMUM_IN();
+
+    if( aPointerEvent.iType == TPointerEvent::EButton1Down )
+        {
+        iWizard.PostponePopup();
+        }
+
+    CAknTextSettingPage::HandlePointerEventL( aPointerEvent );
+    IMUM_OUT();
+    }
+
+// -----------------------------------------------------------------------------
+// CIMSSettingsWizardEditTextPage::HandleControlEventL()
+// This is needed to postpone popup time
+// when user is writing with stylus. Popup should apper
+// only when user has been "idle" for some time.
+// -----------------------------------------------------------------------------
+//
+void CIMSSettingsWizardEditTextPage::HandleControlEventL(
+    CCoeControl* aControl, TCoeEvent aEventType )
+    {
+    IMUM_CONTEXT( CIMSSettingsWizardEditTextPage::HandleControlEventL, 0, KLogUi );
+    IMUM_IN();
+
+    if( aEventType == EEventStateChanged )
+        {
+        iWizard.PostponePopup();
+        }
+
+    CAknTextSettingPage::HandleControlEventL( aControl, aEventType );
+    IMUM_OUT();
+    }
+
+#endif  //RD_SCALABLE_UI_V2
+
+//  End of File