⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 svexunknownappappui.cpp

📁 演示如何使用的symbian v9服务器应用框架
💻 CPP
字号:
// Copyright (c) 2006 Murray Read, All rights reserved

#include <avkon.hrh>
#include <aknnotewrappers.h> 

#include "SvexUnknownApp.pan"
#include "SvexUnknownAppAppUi.h"
#include "SvexUnknownAppAppView.h"
#include "SvexUnknownApp.hrh"
#include "SvexUnknownAppServer.h"
#include <SvexInfo.h>
#include <SvexUtil.h>

const TInt KMaxTextLen = 64;

// ConstructL is called by the application framework
void CSvexUnknownAppAppUi::ConstructL()
    {
    BaseConstructL();

	iInfo = CSvexInfoBase::NewL();
	
	// no view is created on app launch, the client will tell
	// it what to show.
	// nb, this app can't be launched directly, it has the
	// "hidden" flag set in the reg resource file.
    }

CSvexUnknownAppAppUi::CSvexUnknownAppAppUi()                              
    {
	// no implementation required
    }

CSvexUnknownAppAppUi::~CSvexUnknownAppAppUi()
    {
	delete iCallBack;
    delete iDialog;
    RemoveView();
    delete iInfo;
    }

// handle any menu commands
void CSvexUnknownAppAppUi::HandleCommandL(TInt aCommand)
    {
    switch(aCommand)
        {
        case EEikCmdExit:
        case EAknSoftkeyExit:
            Exit();
            break;

        case ESvexUnknownAppOpen:
        	if (iAppView)
        		iAppView->OpenL();
        	break;

        default:
            Panic(ESvexUnknownAppBasicUi);
            break;
        }
    }

void CSvexUnknownAppAppUi::ShowAllL(TUid aServiceUid)
	{
	// Create the app view to show all apps for the requested service UID
    CSvexUnknownAppAppView* appView = CSvexUnknownAppAppView::NewLC(this, aServiceUid, *iInfo);
    AddToStackL(appView);
    RemoveView();
    iAppView = appView;
    CleanupStack::Pop(appView);
    
    TBuf<KMaxTextLen> b;
    _LIT(KTitle, "Apps implementing 0x%08x");
    b.Format(KTitle, aServiceUid);
    SetTitlePaneL(b);
	}

void CSvexUnknownAppAppUi::ShowAppL(TUid aServiceUid, TUid aAppUid)
	{
	// We would like to launch a dialog here, however since we
	// must never block a server request, and the author hasn't
	// written a non-blocking version of the dialog, launch it on
	// and callback.
	iServiceUid = aServiceUid;
	iAppUid = aAppUid;
	iCallBack = new(ELeave) CAsyncCallBack(TCallBack(ShowAppCallBackL, this), CActive::EPriorityStandard);
	iCallBack->CallBack();
	}

void CSvexUnknownAppAppUi::RemoveView()
	{
    if (iAppView)
        {
        RemoveFromStack(iAppView);
        delete iAppView;
        iAppView = NULL;
        }
	}

void CSvexUnknownAppAppUi::ShowAppNowL(TUid aServiceUid, TUid aAppUid)
	{
	// get info about the service
	CSvexServiceInfo* serviceInfo = iInfo->DirectServiceInfoLC(aServiceUid);
	// find the app in question
	TInt count = serviceInfo->MsasiCount();
	for (TInt ii=0; ii<count; ii++)
		{
		TSvexAppServiceInfo reg = serviceInfo->MsasiAt(ii);
		if (aAppUid == reg.iAppUid)
			{
			// launch a dialog for it
			iDialog = CAppServiceInfoDialog::NewL(reg, *iInfo);
			iDialog->ExecuteLD();
			iDialog = 0;
			if (!iAppView)
				{
				// since an app view has not been created, this app only exists
				// to show the dialog, so shutdown
				iEikonEnv->AppServer()->NotifyServerExit(EEikCmdExit);
				RunAppShutter();
				}
			else
				break;
			}
		}
	CleanupStack::PopAndDestroy(serviceInfo);
	}

TInt CSvexUnknownAppAppUi::ShowAppCallBackL(TAny* aThis)
	{
	CSvexUnknownAppAppUi* self = ((CSvexUnknownAppAppUi*)aThis);
	self->ShowAppNowL(self->iServiceUid, self->iAppUid);
	delete self->iCallBack;
	self->iCallBack = 0;
	return 0;
	}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -