| ID | Creation date | December 18, 2008 | |
| Platform | S60 5th Edition | Tested on devices | |
| Category | Symbian C++ | Subcategory |
| Keywords (APIs, classes, methods, functions): AknLayoutUtils::LayoutMetricsRect(), AknLayoutUtils::EApplicationWindow, AknLayoutUtils::EControlPane, AknLayoutUtils::CbaLocation(), AknLayoutUtils::TAknCbaLocation |
Devices built on S60 5th Edition Touch UI API don't have hardware CBA buttons, thus it is obvious that if we want to use full-screen mode we shouldn't hide the control pane. Otherwise the user is unable to access menu etc.
To calculate actual full-screen mode application rectangle (e.g. taking into consideration the rectangular control pane), we could utilize usage of the Avkon helper class AknLayoutUtils.
LIBRARY avkon.lib
LIBRARY eikcore.lib
CAPABILITY could be self-signed
class CAknViewClass: public CAknView ...
{
...
public:
void ConstructL();
void SetFullRect();
private:
void CalculateFullscreenRect();
private:
TRect iFullRect;
...
};
class CAknAppUiClass: public CAknAppUi
{
...
protected:
void HandleResourceChangeL( TInt aType );
private:
CAknViewClass* iViewInstance;
...
};
#include <AknUtils.h>
...
void CAknViewClass::ConstructL()
{
...
// Calculate actual full-screen mode rect
CalculateFullscreenRect();
// Set view extent
SetRect(iFullRect);
...
}
void CAknViewClass:SetFullRect()
{
SetRect(iFullRect);
}
...
void CAknViewClass::CalculateFullscreenRect()
{
// Window that fills the entire screen
TRect temp_rect;
AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EApplicationWindow, temp_rect);
iFullRect = temp_rect;
// Rect that occupied by control pane (i.e. CBA)
AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EControlPane, temp_rect);
// Calculate final rect which depends on CBA location
AknLayoutUtils::TAknCbaLocation cba_location = AknLayoutUtils::CbaLocation();
switch(cba_location) {
case AknLayoutUtils::EAknCbaLocationBottom:
iFullRect.iBr.iY -= temp_rect.Height();
break;
case AknLayoutUtils::EAknCbaLocationLeft:
iFullRect.iTl.iX += temp_rect.Width();
break;
case AknLayoutUtils::EAknCbaLocationRight:
iFullRect.iBr.iX -= temp_rect.Width();
break;
default:
break;
}
}
CAknAppUiClass::HandleResourceChangeL( TInt aType )
{
...
iViewInstance->CalculateFullscreenRect();
iViewInstance->SetFullRect();
...
}
Full-screen mode could be enabled in applications with support for touch UI.
No related wiki articles found