uifw/inc/akncompaif.inl
changeset 0 2f259fa3e83a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uifw/inc/akncompaif.inl	Tue Feb 02 01:00:49 2010 +0200
@@ -0,0 +1,77 @@
+/*
+* Copyright (c) 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:  Compa-mode interface (client) implementation
+*
+*/
+
+
+#include <e32base.h>
+#include <../ecom/ecom.h>
+#include <aknappui.h>
+#include <centralrepository.h>
+#include <AvkonInternalCRKeys.h>
+
+#include "akncompaif.h"
+
+// akncompaflags.h is not included. These are from there.
+const TInt KAknCompaFeatureEnaCompaMode = 1; // Enable compa-mode in device
+const TInt KAknCompaSettingEnaApps = 1;
+
+// --------------------------------------------------------------------------
+//
+// --------------------------------------------------------------------------
+inline CAknCompaIf::~CAknCompaIf()
+    {
+    REComSession::DestroyedImplementation(iEcomDtorId);
+    }
+
+// --------------------------------------------------------------------------
+// Create instance of compa-mode interface
+// --------------------------------------------------------------------------
+inline CAknCompaIf* CAknCompaIf::NewL()
+    {
+    const TUid KImplUid = {0x20010126}; // AKNCOMPAIF_ECOM_IMPL_UID
+    return reinterpret_cast<CAknCompaIf*>(
+        REComSession::CreateImplementationL(KImplUid,
+            _FOFF(CAknCompaIf, iEcomDtorId)));
+    }
+
+// --------------------------------------------------------------------------
+// Check if compa-mode may be needed. If this function returns false,
+// compa-mode is definetely not needed. Either application is touch
+// compatible or compa mode feature is not enabled. If it returns true,
+// compa-mode plugin should be instantiated to perform further checks.
+// --------------------------------------------------------------------------
+inline TBool CAknCompaIf::IsNeeded(TInt aAppUiFlags,
+    CRepository* aRepository)
+    {
+    TBool isNeeded = EFalse;
+    if ((aAppUiFlags & CAknAppUiBase::EAknTouchCompatible) == 0 &&
+        aRepository)
+        {
+        // Compa-mode maybe needed if compa-mode feature is enabled in device
+        TInt compaFeatures = 0;
+        aRepository->Get(KAknCompaModeFeatures, compaFeatures);
+        if (compaFeatures & KAknCompaFeatureEnaCompaMode)
+            {
+            TInt compaSettings = 0;
+            aRepository->Get(KAknCompaModeSettings, compaSettings);
+            // Compa-mode may be needed if compa-mode is enabled from settings
+            // or the application is a global UI server.
+            isNeeded = compaSettings & KAknCompaSettingEnaApps ||
+                aAppUiFlags & CEikAppUi::ENoScreenFurniture;
+            }
+        }
+    return isNeeded;
+    }