diff -r 000000000000 -r 15bf7259bb7c uiacceltk/hitchcock/plugins/openwfcrs/src/rsdisplaychangeao.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uiacceltk/hitchcock/plugins/openwfcrs/src/rsdisplaychangeao.cpp Tue Feb 02 07:56:43 2010 +0200 @@ -0,0 +1,135 @@ +// Copyright (c) 2008-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: +// + +#include "rsdisplaychangeao.h" +#include "displaypolicy.h" + +CRsDisplayChangeNotifier::CRsDisplayChangeNotifier(MWsDisplayControl* aNextLevelInterface, CDisplayPolicy* aDisplayPolicy) +:CActive(EPriorityHigh),iWsStatus(NULL) + { + CActiveScheduler::Add(this); + iNextLevelInterface = aNextLevelInterface; + iDisplayPolicy = aDisplayPolicy; + } + +CRsDisplayChangeNotifier* CRsDisplayChangeNotifier::NewL(MWsDisplayControl* aNextLevelInterface, CDisplayPolicy* aDisplayPolicy) + { + CRsDisplayChangeNotifier* self = new(ELeave) CRsDisplayChangeNotifier(aNextLevelInterface, aDisplayPolicy); + return self; + } + +void CRsDisplayChangeNotifier::IssueNotificationRequest() + { + iNextLevelInterface->NotifyOnDisplayChange(iStatus); + SetActive(); + } +void CRsDisplayChangeNotifier::RegisterActiveStatus(TRequestStatus &aStatus) + { + iWsStatus = &aStatus; + } + +void CRsDisplayChangeNotifier::CancelNotificationRequest() + { + Cancel(); + } + +void CRsDisplayChangeNotifier::RunL() + { + //IssueNotificationRequest will overwrite iStatus, save a copy first; + TInt result = iStatus.Int(); + IssueNotificationRequest(); + + //calculate min UI buffer size depending on physical resolutions + TInt ret = iNextLevelInterface->NumberOfResolutions(); + RArray resolutions; + CleanupClosePushL(resolutions); + if(ret > 0) + { + //just ignore the error. if there's an error, an empty resolution list is passed in, and uibuffer + //will remain the previous size + iNextLevelInterface->GetResolutions(resolutions); + } + iDisplayPolicy->CalculateMinBufferSize(resolutions, ret); + CleanupStack::PopAndDestroy(&resolutions); + + if(iWsStatus && *iWsStatus == KRequestPending) + { + User::RequestComplete(iWsStatus, result); + } + } + +void CRsDisplayChangeNotifier::DoCancel() + { + iNextLevelInterface->NotifyOnDisplayChangeCancel(); + if(iWsStatus && *iWsStatus == KRequestPending) + User::RequestComplete(iWsStatus, KErrCancel); + } + +CRsDisplayChangeNotifier::~CRsDisplayChangeNotifier() + { + Cancel(); + } + +CRsConfigChangeNotifier::CRsConfigChangeNotifier(MWsDisplayControl* aNextLevelInterface) +:CActive(EPriorityHigh), iWsStatus(NULL) + { + CActiveScheduler::Add(this); + iNextLevelInterface = aNextLevelInterface; + } + +CRsConfigChangeNotifier* CRsConfigChangeNotifier::NewL(MWsDisplayControl* aNextLevelInterface) + { + CRsConfigChangeNotifier* self = new(ELeave) CRsConfigChangeNotifier(aNextLevelInterface); + return self; + } + +void CRsConfigChangeNotifier::IssueNotificationRequest() + { + iNextLevelInterface->NotifyOnConfigChange(iStatus); + SetActive(); + } + +void CRsConfigChangeNotifier::RegisterActiveStatus(TRequestStatus &aStatus) + { + iWsStatus = &aStatus; + } + +void CRsConfigChangeNotifier::CancelNotificationRequest() + { + Cancel(); + } + +void CRsConfigChangeNotifier::RunL() + { + //IssueNotificationRequest will overwrite iStatus, save a copy first; + TInt result = iStatus.Int(); + IssueNotificationRequest(); + if(iWsStatus && *iWsStatus == KRequestPending) + { + User::RequestComplete(iWsStatus, result); + } + } + +void CRsConfigChangeNotifier::DoCancel() + { + iNextLevelInterface->NotifyOnConfigChangeCancel(); + if(iWsStatus && *iWsStatus == KRequestPending) + User::RequestComplete(iWsStatus, KErrCancel); + } + +CRsConfigChangeNotifier::~CRsConfigChangeNotifier() + { + Cancel(); + }