diff -r 000000000000 -r 2f259fa3e83a uifw/inc/akncompaif.inl --- /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 +#include <../ecom/ecom.h> +#include +#include +#include + +#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( + 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; + }