textinput/peninputvkbcn/ctrlsrc/peninputvkbImlayout.cpp
changeset 0 eb1f2e154e89
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/textinput/peninputvkbcn/ctrlsrc/peninputvkbImlayout.cpp	Tue Feb 02 01:02:04 2010 +0200
@@ -0,0 +1,208 @@
+/*
+* Copyright (c) 2002-2005 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:  image layout implementation
+*
+*/
+
+
+#include "peninputvkbImlayout.h"
+
+// CONSTANTS
+_LIT(KPipeSympol,'|');
+const TInt KBufferSize = 5;
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------
+//
+CAknFepControlInfo* CAknFepControlInfo::NewL(TResourceReader& aReader)
+    {
+    CAknFepControlInfo* self = new (ELeave) CAknFepControlInfo();
+
+    CleanupStack::PushL(self);
+    self->ConstructFromResourceL(aReader); 
+    CleanupStack::Pop();
+    
+    return self;
+    }
+
+// ---------------------------------------------------------
+// Destructor
+// ---------------------------------------------------------
+//
+CAknFepControlInfo::~CAknFepControlInfo()
+    {
+    }
+    
+// ---------------------------------------------------------
+// Construct from resource file
+// ---------------------------------------------------------
+//    
+void CAknFepControlInfo::ConstructFromResourceL(TResourceReader& aReader)
+    {
+    iControlID = aReader.ReadInt16();
+    iBeginRow = aReader.ReadInt16();
+    iBeginColumn = aReader.ReadInt16();
+    iEndRow = aReader.ReadInt16();
+    iEndColumn = aReader.ReadInt16();
+    }
+    
+// ---------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------
+//
+CAknFepVkbImLayout* CAknFepVkbImLayout::NewL(TResourceReader& aReader)
+    {
+    CAknFepVkbImLayout* self = NewLC(aReader);
+    CleanupStack::Pop(self);
+  
+    return self;
+    }
+
+// ---------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------
+//
+CAknFepVkbImLayout* CAknFepVkbImLayout::NewLC(TResourceReader& aReader)
+    {
+    CAknFepVkbImLayout* self = new (ELeave) CAknFepVkbImLayout();
+
+    CleanupStack::PushL(self);
+    self->ConstructL(aReader);
+  
+    return self;
+    }
+
+// ---------------------------------------------------------
+// Destructor
+// ---------------------------------------------------------
+//
+CAknFepVkbImLayout::~CAknFepVkbImLayout()
+    {
+    delete iPermittedLanguage;
+    iControlInfoList.ResetAndDestroy();
+    }
+
+// ---------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------
+//
+void CAknFepVkbImLayout::ConstructL(TResourceReader& aReader)
+    {
+    ConstructFromResourceL(aReader);
+    }
+
+// ---------------------------------------------------------
+// Construct from resource file
+// ---------------------------------------------------------
+//          
+void CAknFepVkbImLayout::ConstructFromResourceL(TResourceReader& aReader)
+    {
+    iLayoutID = aReader.ReadInt16();
+    iPermittedLanguage = aReader.ReadHBufCL();
+    iColumns = aReader.ReadInt16();
+    iRows = aReader.ReadInt16();
+    
+    const TInt count = aReader.ReadInt16();
+    
+    for (TInt i = 0; i < count; i++)
+        {
+        CAknFepControlInfo* controlInfo = CAknFepControlInfo::NewL(aReader);
+        AddControlInfo(controlInfo);
+        }
+    }
+
+// ---------------------------------------------------------
+// Construct from resource file
+// ---------------------------------------------------------
+// 
+TBool CAknFepVkbImLayout::IsAvailableForLang(const TInt aLangID)
+    {
+    TBuf<KBufferSize> buf;
+    buf.Append(KPipeSympol);
+    buf.AppendNum(aLangID);
+    buf.Append(KPipeSympol);
+    
+    if (iPermittedLanguage->Find(buf) != KErrNotFound)
+        {
+        return ETrue;
+        }
+
+    return EFalse;
+    }
+
+// ---------------------------------------------------------
+// Get control infor based on control id
+// ---------------------------------------------------------
+// 
+CAknFepControlInfo* CAknFepVkbImLayout::FindControlInfo(const TInt aControlID)
+    {
+    const TInt count = iControlInfoList.Count();
+    
+    for (TInt i = 0; i < count; i++)
+        {
+        if (iControlInfoList[i]->ControlID() == aControlID)
+            {
+            return iControlInfoList[i];
+            }
+        }
+
+    return NULL;
+    }
+
+// ---------------------------------------------------------
+// Add a control info to info list
+// ---------------------------------------------------------
+// 
+void CAknFepVkbImLayout::AddControlInfo(CAknFepControlInfo* aControlInfo)
+    {
+    iControlInfoList.Append(aControlInfo);
+    }
+ 
+// ---------------------------------------------------------
+// Remove a control info from info list
+// ---------------------------------------------------------
+// 
+void CAknFepVkbImLayout::RmoveControlInfo(CAknFepControlInfo* aControlInfo)
+    {
+    CAknFepControlInfo* controlInfo = FindControlInfo(aControlInfo->ControlID());
+    if (controlInfo)
+        {
+        RmoveControlInfo(controlInfo->ControlID());
+        }
+    }
+
+// ---------------------------------------------------------
+// Remove a control info from info list based on control id
+// ---------------------------------------------------------
+//
+void CAknFepVkbImLayout::RmoveControlInfo(const TInt aControlID)
+    {
+    const TInt count = iControlInfoList.Count();
+
+    for (TInt i = 0; i < count; i++)
+        {
+        if (iControlInfoList[i]->ControlID() == aControlID)
+            {
+            CAknFepControlInfo* controlInfo = iControlInfoList[i];
+            delete controlInfo;
+            iControlInfoList.Remove(i);
+            break;
+            }
+        }      
+    }
+
+//  End Of File