📄 svexunknownappappui.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 + -