diff -r 000000000000 -r 254040eb3b7d defaultapplicationsettings/server/src/das_appui.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/defaultapplicationsettings/server/src/das_appui.cpp Thu Dec 17 08:46:07 2009 +0200 @@ -0,0 +1,204 @@ +/* +* Copyright (c) 2005-2006 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: This is the app ui implementation of default application server. +* +*/ + + +#include +#include +#include +#include +#include +#include +#include +#include "das_appui.h" +#include "das_view.h" +#include "das_srvmime_dlg.h" +#include "das_servmimeapps.h" +#include "das.hrh" + +// ======== MEMBER FUNCTIONS ======== + +// --------------------------------------------------------------------------- +// Destructor +// --------------------------------------------------------------------------- +// +CDefaultAppAppUi::~CDefaultAppAppUi() + { + if(iView) + delete iView; + if(iServMimeApps) + delete iServMimeApps; + } + +// --------------------------------------------------------------------------- +// Default constructor +// --------------------------------------------------------------------------- +// +CDefaultAppAppUi::CDefaultAppAppUi() : iView(NULL), iDlg(NULL), iExitBack(EFalse) + { + // No implementation required + } + +// --------------------------------------------------------------------------- +// Symbian constructor +// --------------------------------------------------------------------------- +// +void CDefaultAppAppUi::ConstructL() +{ + BaseConstructL(EAknEnableSkin|EAknEnableMSK|EAknSingleClickCompatible); + // Create view object + iView = CDefaultAppView::NewL( ClientRect() ); +} + +// --------------------------------------------------------------------------- +// Continues the construction, after the client connects to the server and some data is known +// (client UID and service flags) +// --------------------------------------------------------------------------- +// +void CDefaultAppAppUi::ConstructSrvMimeDlgL(TUid aClientUid, TInt aServiceFlags) +{ + SetClientIconL(aClientUid); + iClientUid = aClientUid; + iSelectedItemSimple=-1; + iSelectedItemAdvanced=-1; + iReloadDlgAdvanced=(aClientUid==KUidGS?EFalse:ETrue); + iReloadDlg=ETrue; + do + { + if(!iServMimeApps) + iServMimeApps=CDefaultAppServMimeApps::NewL(aClientUid, aServiceFlags); + + if(iReloadDlgAdvanced) + { + //some settings for the advanced view + iServMimeApps->iSimplifiedView=EFalse; + } + else + { + //some settings for the simple view + iServMimeApps->iSimplifiedView=ETrue; + }; + iServMimeApps->GetServicesAndMimesListL(iServMimeApps->iList); + + iDlg=CDefaultAppSrvMimeDlg::NewL(this); + SetDialogExist( ETrue ); + iDlg->SetMopParent(this); + iDlg->ExecuteLD(R_DAS_DLG); + iDlg=NULL; + } + while(iReloadDlg); + + + //exit the server + if(iExitBack) + { + //if we exit by "Back" button, notify the client app, so that it does not exit. + CEikAppServer* server = iEikonEnv->AppServer(); //if we do not do this, the client exits when backkey is pressed + if ( server ) + { + server->NotifyServerExit( EAknSoftkeyBack ); + } + }; + //exit this application + RunAppShutter(); +} + +// --------------------------------------------------------------------------- +// From class CAknAppUi. +// handle menu command +// --------------------------------------------------------------------------- +// +void CDefaultAppAppUi::HandleCommandL(TInt aCommand) + { + switch (aCommand) + { + case EAknSoftkeyExit: + __ASSERT_ALWAYS(0,User::Leave(KErrGeneral)); + break; + case EEikCmdExit: + + Exit(); + break; + //no need for default. We may also have other commands that we do not handle here. + } + } + + +// --------------------------------------------------------------------------- +// imports and displays the icon of the client application. +// --------------------------------------------------------------------------- +// +void CDefaultAppAppUi::SetClientIconL(TUid aClietAppUid) + { + CEikStatusPane *statusPane=StatusPane(); + TUid contextPaneUid=TUid::Uid(EEikStatusPaneUidContext); + if(statusPane && statusPane->PaneCapabilities(contextPaneUid).IsPresent()) + { + CAknContextPane *contextPane=(CAknContextPane*)(statusPane->ControlL(contextPaneUid)); //we don't get the ownership + MAknsSkinInstance* skinInstance = AknsUtils::SkinInstance(); //we don't get the ownership + + CFbsBitmap* iconBmp = NULL; + CFbsBitmap* iconBmpMask = NULL; + + AknsUtils::CreateAppIconLC(skinInstance,aClietAppUid,EAknsAppIconTypeContext, + iconBmp,iconBmpMask); + CleanupStack::Pop(2);//the 2 icons + + contextPane->SetPicture(iconBmp,iconBmpMask);// ownership transfer for the 2 pictures + } + } + +// --------------------------------------------------------------------------- +// Handles layout changes (e.g. from portrait to landscape) +// --------------------------------------------------------------------------- +// +void CDefaultAppAppUi::HandleResourceChangeL(TInt aType) + { + CAknAppUi::HandleResourceChangeL( aType ); + + if(iView) + iView->HandleResourceChange(aType); + if( iDlg && iDialogExist ) + iDlg->HandleResourceChange(aType); + + if ( aType == KEikDynamicLayoutVariantSwitch ) + { + if( iView ) + iView->SetRect(ClientRect()); + if( iDlg && iDialogExist ) + iDlg->SetRect(ClientRect()); + } + } + +// --------------------------------------------------------------------------- +// Handles Window Server events (we are interested in catching the end key event +// and exiting the application +// --------------------------------------------------------------------------- +// +void CDefaultAppAppUi::HandleWsEventL(const TWsEvent & aEvent, CCoeControl * aDestination) + { + CAknAppUi::HandleWsEventL(aEvent,aDestination); + } + +// --------------------------------------------------------------------------- +// This functino is used to record the exist of the dialog; +// and exiting the application +// --------------------------------------------------------------------------- +// +void CDefaultAppAppUi::SetDialogExist( TBool aExist ) + { + iDialogExist = aExist; + }