ipsservices/ipssossettings/src/ipssetuiapprover.cpp
changeset 0 8466d47a6819
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ipsservices/ipssossettings/src/ipssetuiapprover.cpp	Thu Dec 17 08:39:21 2009 +0200
@@ -0,0 +1,329 @@
+/*
+* 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: This file implements class CIpsSetUiApprover.
+*
+*/
+
+
+
+#include "emailtrace.h"
+#include "ipssetutils.h"                // IpsSetUtils
+#include "ipssetuiitembase.h"           // CIpsSetUiItem
+#include "ipssetutils.h"
+#include "ipssetutilspageids.hrh"
+#include "ipssetutilsconsts.h"
+
+#include "ipssetuiapprover.h"
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// ----------------------------------------------------------------------------
+// CIpsSetUiApprover::CIpsSetUiApprover()
+// ----------------------------------------------------------------------------
+CIpsSetUiApprover::CIpsSetUiApprover()
+    :
+    iNoteUi( NULL )
+    {
+    FUNC_LOG;
+    }
+
+// ----------------------------------------------------------------------------
+// CIpsSetUiApprover::ConstructL()
+// ----------------------------------------------------------------------------
+//
+void CIpsSetUiApprover::ConstructL()
+    {
+    FUNC_LOG;
+    iNoteUi = CIpsSetUiNotes::NewL();
+    }
+
+// ----------------------------------------------------------------------------
+// CIpsSetUiApprover::~CIpsSetUiApprover()
+// ----------------------------------------------------------------------------
+//
+CIpsSetUiApprover::~CIpsSetUiApprover()
+    {
+    FUNC_LOG;
+    delete iNoteUi;
+    iNoteUi = NULL;
+    }
+
+// ----------------------------------------------------------------------------
+// CIpsSetUiApprover::NewL()
+// ----------------------------------------------------------------------------
+//
+CIpsSetUiApprover* CIpsSetUiApprover::NewL()
+    {
+    FUNC_LOG;
+    CIpsSetUiApprover* self = NewLC();
+    CleanupStack::Pop( self );
+
+    return self;
+    }
+
+// ----------------------------------------------------------------------------
+// CIpsSetUiApprover::NewLC()
+// ----------------------------------------------------------------------------
+//
+CIpsSetUiApprover* CIpsSetUiApprover::NewLC()
+    {
+    FUNC_LOG;
+    CIpsSetUiApprover* self = new ( ELeave ) CIpsSetUiApprover();
+    CleanupStack::PushL( self );
+    self->ConstructL();
+
+    return self;
+    }
+
+/******************************************************************************
+
+    Common item validating
+
+******************************************************************************/
+
+// ----------------------------------------------------------------------------
+// CIpsSetUiApprover::ValidateType()
+// ----------------------------------------------------------------------------
+//
+TIpsSetUiNoteErrors CIpsSetUiApprover::ValidateType(
+    const CIpsSetUiItem& aBaseItem,
+    TDes& aNewText,
+    TInt& aNewValue )
+    {
+    FUNC_LOG;
+    // Handle the item, based on the type
+    switch ( aBaseItem.Type() )
+        {
+        // Text editor
+        case EIpsSetUiItemText:
+            return ValidateText( aBaseItem, aNewText );
+
+        // Number editor
+        case EIpsSetUiCheckBoxArray:
+        case EIpsSetUiItemValue:
+            return ValidateValue( aBaseItem, aNewValue );
+
+        case EIpsSetUiRadioButtonArray:
+            return ValidateRadioButtons( aNewValue );
+
+        // Type is not recognized or not supported
+        default:
+            break;
+        }
+
+    return EIpsSetUiNoError;
+    }
+
+/******************************************************************************
+
+    Special item validating
+
+******************************************************************************/
+
+// ----------------------------------------------------------------------------
+// CIpsSetUiApprover::EvaluateServerAddress()
+// ----------------------------------------------------------------------------
+//
+TIpsSetUiNoteErrors CIpsSetUiApprover::EvaluateServerAddress(
+    const CIpsSetUiItem& aBaseItem,
+    const TDesC& aNewText )
+    {
+    FUNC_LOG;
+    TIpsSetUiNoteErrors result = ValidateText( aBaseItem, aNewText );
+
+    // Check that dot isn't in start of the server address
+    if ( result == EIpsSetUiNoError )
+        {
+        TBool ok = EFalse;
+        TRAPD( error, ok = IpsSetUtils::IsValidDomainL( aNewText ) );
+
+        result = ( error == KErrNone ) && ok ? 
+            EIpsSetUiNoError : EIpsSetUiItemInvalid;
+        }
+
+    return result;
+    }
+
+// ----------------------------------------------------------------------------
+// CIpsSetUiApprover::EvaluateEmailAddress()
+// ----------------------------------------------------------------------------
+//
+TIpsSetUiNoteErrors CIpsSetUiApprover::EvaluateEmailAddress(
+    const CIpsSetUiItem& aBaseItem,
+    const TDesC& aNewText )
+    {
+    FUNC_LOG;
+    // First make basic test
+    TIpsSetUiNoteErrors result = ValidateText( aBaseItem, aNewText );
+
+    // If text check was successful and the address is given, validate the
+    // email address
+    if ( result == EIpsSetUiNoError && aNewText.Length() )
+        {
+        // Trap any errors to prevent leaving
+        TBool ok = EFalse;
+        TRAPD( error, ok =
+            IpsSetUtils::IsValidEmailAddressL( aNewText ) );
+
+        result = ( ok && error == KErrNone ) ? 
+            EIpsSetUiNoError : EIpsSetUiItemInvalid;
+        }
+
+    return result;
+    }
+
+/******************************************************************************
+
+    Brand new validating code
+
+******************************************************************************/
+
+// ----------------------------------------------------------------------------
+// CIpsSetUiApprover::EvaluateSettingItems()
+// ----------------------------------------------------------------------------
+//
+TIpsSetUiNoteErrors CIpsSetUiApprover::EvaluateSettingItems(
+    const CIpsSetUiItem& aBaseItem,
+    TDes& aNewText,
+    TInt& aNewValue )
+    {
+    FUNC_LOG;
+    // Incoming settings
+    switch ( aBaseItem.iItemId.iUid )
+        {
+        case EIpsSetUiIncomingMailServer:
+        case EIpsSetUiOutgoingMailServer:
+            return EvaluateServerAddress( aBaseItem, aNewText );
+
+        case EIpsSetUiMailboxReplyToAddress:
+        case EIpsSetUiMailboxEmailAddress:
+            return EvaluateEmailAddress( aBaseItem, aNewText );
+
+        default:
+            break;
+        }
+
+    return ValidateType( aBaseItem, aNewText, aNewValue );
+    }
+
+// ----------------------------------------------------------------------------
+// CIpsSetUiApprover::EvaluateItem()
+// ----------------------------------------------------------------------------
+//
+TIpsSetUiEventResult CIpsSetUiApprover::EvaluateItem(
+    const CIpsSetUiItem& aBaseItem,
+    TDes& aNewText,
+    TInt& aNewValue )
+    {
+    FUNC_LOG;
+    TIpsSetUiNoteErrors error = 
+        EvaluateSettingItems( aBaseItem, aNewText, aNewValue );
+
+    return iNoteUi->ShowDialog( aBaseItem, error, aNewText );
+    }
+
+// ----------------------------------------------------------------------------
+// CIpsSetUiApprover::EvaluateText()
+// ----------------------------------------------------------------------------
+//
+TIpsSetUiEventResult CIpsSetUiApprover::EvaluateText(
+    const CIpsSetUiItem& aBaseItem,
+    TDes& aNewText )
+    {
+    FUNC_LOG;
+    TInt nothing = 0;
+    return EvaluateItem( aBaseItem, aNewText, nothing );
+    }
+
+ // ----------------------------------------------------------------------------
+// CIpsSetUiApprover::EvaluateValue()
+// ----------------------------------------------------------------------------
+//
+TIpsSetUiEventResult CIpsSetUiApprover::EvaluateValue(
+    const CIpsSetUiItem& aBaseItem,
+    TInt& aNewValue )
+    {
+    FUNC_LOG;
+    TIpsSetUtilsTextPlain nothing;
+    return EvaluateItem( aBaseItem, nothing, aNewValue );
+    }
+
+/******************************************************************************
+
+    Common code
+
+******************************************************************************/
+
+// ----------------------------------------------------------------------------
+// CIpsSetUiApprover::IsItemFilled()
+// ----------------------------------------------------------------------------
+//
+TBool CIpsSetUiApprover::IsItemFilled(
+    const CIpsSetUiItem& aBaseItem,
+    const TInt aLength )
+    {
+    FUNC_LOG;
+    // At first, check if the item can be left empty
+    TBool ok =
+        !( aBaseItem.iItemFlags.Flag( KIpsSetUiFlagMustFill ) ||
+           aBaseItem.iItemFlags.Flag( KIpsSetUiFlagForceMustFill ) );
+
+    // The text field is considered filled, when:
+    // A: Item has NO must fill -flags on
+    // B: Item has must fill -flags on and length is higher than 0
+    return ok || ( !ok && aLength > 0 );
+    }
+
+// ----------------------------------------------------------------------------
+// CIpsSetUiApprover::ValidateRadioButton()
+// ----------------------------------------------------------------------------
+//
+TIpsSetUiNoteErrors CIpsSetUiApprover::ValidateRadioButtons(
+    const TInt& aNewValue )
+    {
+    FUNC_LOG;
+    // Make sure item is checked
+    return ( aNewValue != KErrNotFound ) ? EIpsSetUiNoError : EIpsSetUiItemEmpty;
+    }
+
+// ----------------------------------------------------------------------------
+// CIpsSetUiApprover::ValidateValue()
+// ----------------------------------------------------------------------------
+//
+TIpsSetUiNoteErrors CIpsSetUiApprover::ValidateValue(
+    const CIpsSetUiItem& aBaseItem,
+    TInt& aNewValue )
+    {
+    FUNC_LOG;
+    // This check makes sure, that the provided value is larger than 0
+    return IsItemFilled( aBaseItem, aNewValue ) ?
+        EIpsSetUiNoError : EIpsSetUiItemInvalid;
+    }
+
+// ----------------------------------------------------------------------------
+// CIpsSetUiApprover::ValidateTextL()
+// ----------------------------------------------------------------------------
+//
+TIpsSetUiNoteErrors CIpsSetUiApprover::ValidateText(
+    const CIpsSetUiItem& aBaseItem,
+    const TDesC& aNewText )
+    {
+    FUNC_LOG;
+    return IsItemFilled( aBaseItem, aNewText.Length() ) ?
+        EIpsSetUiNoError : EIpsSetUiItemEmpty;
+    }
+
+//  End of File
+