diff -r 000000000000 -r 2f259fa3e83a uifw/AvKon/src/AknStatuspaneUtils.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uifw/AvKon/src/AknStatuspaneUtils.cpp Tue Feb 02 01:00:49 2010 +0200 @@ -0,0 +1,285 @@ +/* +* Copyright (c) 2004-2009 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: Statuspane related utilities. +* +*/ + + +#include +#include +#include +#include +#include +#include +#include + +#include "AknStatuspaneUtils.h" +#include "aknenv.h" + +EXPORT_C TBool AknStatuspaneUtils::IdleLayoutActive() + { + TBool retVal = EFalse; + + TInt currentStatusPaneLayoutResId = CurrentStatusPaneLayoutResId(); + + retVal = ( currentStatusPaneLayoutResId == R_AVKON_STATUS_PANE_LAYOUT_IDLE || + currentStatusPaneLayoutResId == R_AVKON_STATUS_PANE_LAYOUT_IDLE_EXT || + currentStatusPaneLayoutResId == R_AVKON_STATUS_PANE_LAYOUT_IDLE_FLAT || + currentStatusPaneLayoutResId == R_AVKON_STATUS_PANE_LAYOUT_IDLE_MIRRORED || + currentStatusPaneLayoutResId == R_AVKON_STATUS_PANE_LAYOUT_VT || + currentStatusPaneLayoutResId == R_AVKON_STATUS_PANE_LAYOUT_VT_MIRRORED || + currentStatusPaneLayoutResId == R_AVKON_STACON_PANE_LAYOUT_IDLE_SOFTKEYS_RIGHT || + currentStatusPaneLayoutResId == R_AVKON_STACON_PANE_LAYOUT_IDLE_SOFTKEYS_LEFT || + currentStatusPaneLayoutResId == R_AVKON_WIDESCREEN_PANE_LAYOUT_IDLE || + currentStatusPaneLayoutResId == R_AVKON_WIDESCREEN_PANE_LAYOUT_IDLE_FLAT || + currentStatusPaneLayoutResId == R_AVKON_WIDESCREEN_PANE_LAYOUT_IDLE_FLAT_NO_SOFTKEYS ); + + return retVal; + } + +EXPORT_C TBool AknStatuspaneUtils::UsualLayoutActive() + { + TBool retVal = EFalse; + + TInt currentStatusPaneLayoutResId = CurrentStatusPaneLayoutResId(); + + retVal = ( currentStatusPaneLayoutResId == R_AVKON_STATUS_PANE_LAYOUT_USUAL || + currentStatusPaneLayoutResId == R_AVKON_STATUS_PANE_LAYOUT_USUAL_EXT || + currentStatusPaneLayoutResId == R_AVKON_STATUS_PANE_LAYOUT_USUAL_FLAT || + currentStatusPaneLayoutResId == R_AVKON_STATUS_PANE_LAYOUT_USUAL_MIRRORED || + currentStatusPaneLayoutResId == R_AVKON_STACON_PANE_LAYOUT_USUAL_SOFTKEYS_RIGHT || + currentStatusPaneLayoutResId == R_AVKON_STACON_PANE_LAYOUT_USUAL_SOFTKEYS_LEFT || + currentStatusPaneLayoutResId == R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL || + currentStatusPaneLayoutResId == R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL_FLAT || + currentStatusPaneLayoutResId == R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL_FLAT_NO_SOFTKEYS ); + + return retVal; + } + + +EXPORT_C TBool AknStatuspaneUtils::SmallLayoutActive() + { + TBool retVal = EFalse; + + TInt currentStatusPaneLayoutResId = CurrentStatusPaneLayoutResId(); + + retVal = ( currentStatusPaneLayoutResId == R_AVKON_STATUS_PANE_LAYOUT_SMALL_WITH_SIGNAL_PANE || + currentStatusPaneLayoutResId == R_AVKON_STATUS_PANE_LAYOUT_SMALL_WITH_SIGNAL_PANE_MIRRORED || + currentStatusPaneLayoutResId == R_AVKON_STATUS_PANE_LAYOUT_SMALL ); + + return retVal; + } + +EXPORT_C TBool AknStatuspaneUtils::StaconPaneActive() + { + TBool retVal = EFalse; + + TInt currentStatusPaneLayoutResId = CurrentStatusPaneLayoutResId(); + + retVal = ( currentStatusPaneLayoutResId == R_AVKON_STACON_PANE_LAYOUT_USUAL_SOFTKEYS_RIGHT || + currentStatusPaneLayoutResId == R_AVKON_STACON_PANE_LAYOUT_USUAL_SOFTKEYS_LEFT || + currentStatusPaneLayoutResId == R_AVKON_STACON_PANE_LAYOUT_EMPTY_SOFTKEYS_RIGHT || + currentStatusPaneLayoutResId == R_AVKON_STACON_PANE_LAYOUT_EMPTY_SOFTKEYS_LEFT || + currentStatusPaneLayoutResId == R_AVKON_STACON_PANE_LAYOUT_IDLE_SOFTKEYS_RIGHT || + currentStatusPaneLayoutResId == R_AVKON_STACON_PANE_LAYOUT_IDLE_SOFTKEYS_LEFT ); + + return retVal; + } + + +EXPORT_C TBool AknStatuspaneUtils::StaconSoftKeysLeft() + { + TBool retVal = EFalse; + + TInt currentStatusPaneLayoutResId = CurrentStatusPaneLayoutResId(); + + retVal = ( currentStatusPaneLayoutResId == R_AVKON_STACON_PANE_LAYOUT_USUAL_SOFTKEYS_LEFT || + currentStatusPaneLayoutResId == R_AVKON_STACON_PANE_LAYOUT_EMPTY_SOFTKEYS_LEFT || + currentStatusPaneLayoutResId == R_AVKON_STACON_PANE_LAYOUT_IDLE_SOFTKEYS_LEFT ); + + return retVal; + } + +EXPORT_C TBool AknStatuspaneUtils::StaconSoftKeysRight() + { + TBool retVal = EFalse; + + TInt currentStatusPaneLayoutResId = CurrentStatusPaneLayoutResId(); + + retVal = ( currentStatusPaneLayoutResId == R_AVKON_STACON_PANE_LAYOUT_USUAL_SOFTKEYS_RIGHT || + currentStatusPaneLayoutResId == R_AVKON_STACON_PANE_LAYOUT_EMPTY_SOFTKEYS_RIGHT || + currentStatusPaneLayoutResId == R_AVKON_STACON_PANE_LAYOUT_IDLE_SOFTKEYS_RIGHT ) || + ( HDLayoutActive() && currentStatusPaneLayoutResId != R_AVKON_WIDESCREEN_PANE_LAYOUT_IDLE_FLAT_NO_SOFTKEYS ); + + return retVal; + } + +EXPORT_C TBool AknStatuspaneUtils::FlatLayoutActive() + { + TBool retVal = EFalse; + + TInt currentStatusPaneLayoutResId = CurrentStatusPaneLayoutResId(); + + retVal = ( currentStatusPaneLayoutResId == R_AVKON_STATUS_PANE_LAYOUT_USUAL_FLAT || + currentStatusPaneLayoutResId == R_AVKON_STATUS_PANE_LAYOUT_IDLE_FLAT || + currentStatusPaneLayoutResId == R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL_FLAT || + currentStatusPaneLayoutResId == R_AVKON_WIDESCREEN_PANE_LAYOUT_IDLE_FLAT || + currentStatusPaneLayoutResId == R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL_FLAT_NO_SOFTKEYS || + currentStatusPaneLayoutResId == R_AVKON_WIDESCREEN_PANE_LAYOUT_IDLE_FLAT_NO_SOFTKEYS ); + + return retVal; + } + +EXPORT_C TBool AknStatuspaneUtils::TouchPaneCompatibleLayoutActive() + { + TBool retVal = EFalse; + + TInt currentStatusPaneLayoutResId = CurrentStatusPaneLayoutResId(); + + retVal = ( currentStatusPaneLayoutResId != R_AVKON_STATUS_PANE_LAYOUT_EMPTY && + currentStatusPaneLayoutResId != R_AVKON_STATUS_PANE_LAYOUT_POWER_OFF_RECHARGE && + currentStatusPaneLayoutResId != R_AVKON_STACON_PANE_LAYOUT_EMPTY_SOFTKEYS_LEFT && + currentStatusPaneLayoutResId != R_AVKON_STACON_PANE_LAYOUT_EMPTY_SOFTKEYS_RIGHT ); + + return retVal; + } + +EXPORT_C TBool AknStatuspaneUtils::ExtendedLayoutActive() + { + TBool retVal = EFalse; + + TInt currentStatusPaneLayoutResId = CurrentStatusPaneLayoutResId(); + + retVal = ( currentStatusPaneLayoutResId == R_AVKON_STATUS_PANE_LAYOUT_USUAL_EXT || + currentStatusPaneLayoutResId == R_AVKON_STATUS_PANE_LAYOUT_IDLE_EXT || + currentStatusPaneLayoutResId == R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL || + currentStatusPaneLayoutResId == R_AVKON_WIDESCREEN_PANE_LAYOUT_IDLE ); + + return retVal; + + } + + +TBool AknStatuspaneUtils::HDLayoutActive() + { + TBool retVal = EFalse; + + if ( Layout_Meta_Data::IsLandscapeOrientation() ) + { + // Can be widescreen only in landscape orientation. + TInt currentStatusPaneLayoutResId = CurrentStatusPaneLayoutResId(); + + retVal = ( currentStatusPaneLayoutResId == R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL || + currentStatusPaneLayoutResId == R_AVKON_WIDESCREEN_PANE_LAYOUT_IDLE || + currentStatusPaneLayoutResId == R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL_FLAT || + currentStatusPaneLayoutResId == R_AVKON_WIDESCREEN_PANE_LAYOUT_IDLE_FLAT || + currentStatusPaneLayoutResId == R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL_FLAT_NO_SOFTKEYS || + currentStatusPaneLayoutResId == R_AVKON_WIDESCREEN_PANE_LAYOUT_IDLE_FLAT_NO_SOFTKEYS ); + } + + return retVal; + } + + +EXPORT_C TBool AknStatuspaneUtils::ExtendedStaconPaneActive() + { + if ( AknStatuspaneUtils::StaconPaneActive() ) + { + TBool smallDigitalClockShownInStacon = ETrue; + + // Check for small digital clock if app has no status pane. Status pane clock + // is shown only in resolutions having aspect ratio equal or wider than qvga + // because otherwise there is no space for it. + TAknWindowLineLayout screenLayout = + AknLayout::screen(); + TRect screenRect = screenLayout.Rect(); + + TReal aspectRatio = TReal(screenRect.Width()) / TReal(screenRect.Height()); + if ( aspectRatio <= 1.33 ) + { + smallDigitalClockShownInStacon = EFalse; + } + + return smallDigitalClockShownInStacon; + } + else + { + return EFalse; + } + } + +EXPORT_C TBool AknStatuspaneUtils::ExtendedFlatLayoutActive() + { + if ( FlatLayoutActive() && + Layout_Meta_Data::IsLandscapeOrientation() && + !HDLayoutActive() ) + { + TBool smallDigitalClockShown = EFalse; + + CEikStatusPaneBase* statusPane = CEikStatusPaneBase::Current(); + + if (statusPane && statusPane->PaneCapabilities(TUid::Uid(EEikStatusPaneUidDigitalClock)).IsInCurrentLayout()) + { + // Final check for small digital clock, shown only in resolutions having aspect + // ratio equal or wider than qvga because otherwise there is no space for it. + TAknWindowLineLayout screenLayout = + AknLayout::screen(); + TRect screenRect = screenLayout.Rect(); + + TReal aspectRatio = TReal(screenRect.Width()) / TReal(screenRect.Height()); + if ( aspectRatio > 1.33 ) + { + smallDigitalClockShown = ETrue; + } + } + return smallDigitalClockShown; + } + else + { + return EFalse; + } + } + +EXPORT_C TInt AknStatuspaneUtils::CurrentStatusPaneLayoutResId() + { + TInt resourceId = 0; + CEikStatusPaneBase* statusPane = CEikStatusPaneBase::Current(); + + if ( statusPane ) // Return the resource ID of app statuspane if it exists. + { + resourceId = statusPane->CurrentLayoutResId(); + } + else // If this app does not have statuspane, then we ask the layout from AknCapServer. + { + resourceId = CAknSgcClient::CurrentStatuspaneResource(); + } + + return resourceId; + } + +TBool AknStatuspaneUtils::IsActiveIdle() + { + TBool isAcIdle = EFalse; + + const TUid KActiveIdle2Uid = {0x102750F0}; + CEikApplication* app = CEikonEnv::Static()->EikAppUi()->Application(); + + if ( app && app->AppDllUid() == KActiveIdle2Uid ) + { + isAcIdle = ETrue; + } + + return isAcIdle; + } +