idlehomescreen/xmluicontroller/src/emptycontenttransactionelement.cpp
changeset 0 f72a12da539e
child 34 d05a55b217df
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/xmluicontroller/src/emptycontenttransactionelement.cpp	Thu Dec 17 08:40:49 2009 +0200
@@ -0,0 +1,119 @@
+/*
+* Copyright (c) 2005-2007 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:  Transaction element for publishing empty content
+*
+*/
+
+
+#include "xntype.h"
+#include "xnnewsticker.h"
+#include "xnbitmap.h"
+#include "xntext.h"
+#include "emptycontenttransactionelement.h"
+#include "aixmluiconstants.h"
+#include "aixmluiutils.h"
+
+using namespace AiXmlUiController;
+using namespace XnImageInterface;
+using namespace XnTextInterface;
+using namespace AiUiDef::xml;
+
+const TInt KControlIndexOffset = 1;
+
+// ======== MEMBER FUNCTIONS ========
+
+CEmptyContentTransactionElement::CEmptyContentTransactionElement(
+                                AiUtility::CContentPriorityMap& aContentPriorityMap)
+    : CTransactionElement( aContentPriorityMap ),
+      iIndex( KErrNotFound )
+    {
+    }
+
+CEmptyContentTransactionElement* CEmptyContentTransactionElement::NewL(
+                                AiUtility::CContentPriorityMap& aContentPriorityMap)
+    {
+    CEmptyContentTransactionElement* self =
+            new( ELeave ) CEmptyContentTransactionElement( aContentPriorityMap );
+    return self;
+    }
+
+CEmptyContentTransactionElement::~CEmptyContentTransactionElement()
+    {
+    }
+
+void CEmptyContentTransactionElement::InitializeL( CXnNodeAppIf& aTarget, TInt aIndex )
+    {
+    SetTarget( aTarget );
+    
+    // Indexes in XML theme run 1...n, but in control interface 0...n-1
+    iIndex = aIndex - KControlIndexOffset;
+    }
+
+void CEmptyContentTransactionElement::Reset()
+    {
+    CTransactionElement::Reset();
+    iIndex = KErrNotFound;
+    }
+
+void CEmptyContentTransactionElement::UpdateDataL()
+    {
+    CXnType* type = Target().Type();
+
+    if ( type->Type() == XnImageInterface::MXnImageInterface::Type() )
+        {
+        MXnImageInterface* imageIntr = NULL;
+        if ( !XnComponentInterface::MakeInterfaceL( imageIntr, Target() ) )
+            {
+            User::Leave( KErrNotSupported );
+            }
+        // Clears the bitmaps from component
+        imageIntr->SetContentBitmaps( NULL, NULL );
+        }
+    else if ( type->Type() == XnTextInterface::MXnTextInterface::Type() ) // text element
+            {
+            // Get control interface
+            XnTextInterface::MXnTextInterface* textControl = NULL;
+            XnComponentInterface::MakeInterfaceL( textControl, Target() );
+            LeaveIfNull( textControl, KErrNotSupported );
+            
+            // Clears the text from component
+            textControl->SetTextL( KNullDesC );
+            }
+    else
+        {
+        CXnNodeAppIf* parent = Target().ParentL();
+        LeaveIfNull( parent, KErrNotSupported );
+        const TDesC8& type = LeaveIfNull( parent->Type(), KErrNotSupported )->Type();
+            
+        if ( type == XnNewstickerInterface::MXnNewstickerInterface::Type() )
+            {
+            XnNewstickerInterface::MXnNewstickerInterface* newsticker = NULL;
+            XnComponentInterface::MakeInterfaceL( newsticker, *parent );
+            LeaveIfNull( newsticker, KErrGeneral );
+            TInt titleIndexVal = -1;
+            CXnProperty* titleIndex = Target().GetPropertyL( XnPropertyNames::title::KTitleIndex );
+            if ( titleIndex )
+                {
+                TLex8 lex( titleIndex->StringValue() );
+                TInt err = lex.Val( titleIndexVal );
+                if ( err == KErrNone && titleIndexVal > -1 )
+                    {
+                    newsticker->DeleteTitle( titleIndexVal );
+                    }
+                }
+            }
+        }
+    // Clear current content priority
+    ClearContentPriorityL();
+    }