Symbian手机程序设计大作业 - 手机输入法.docx_第1页
Symbian手机程序设计大作业 - 手机输入法.docx_第2页
Symbian手机程序设计大作业 - 手机输入法.docx_第3页
Symbian手机程序设计大作业 - 手机输入法.docx_第4页
Symbian手机程序设计大作业 - 手机输入法.docx_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Symbian手机程序设计大作业手机输入法学院(系): 专 业: 班 级: 学 号: 姓 名: 大连理工大学Dalian University of Technology1 程序功能描述1.1 功能简介这款手机输入法代码简短、精练,而且包含了输入法应该拥有的最基本输入形式的切换功能。如数字、大小字母、汉字和标点符号。1.2 支持的平台和模式在基于S60平台的Symbian手机中,都可以支持该输入法的安装。成功安装后,在所有的可编辑模式下(如写信息和记录日志),都会自动加载输入法。1.3 使用方法可以按ABC键调出主菜单,在主菜单中有各种输入类型选项,可以进行具体选择。在使用中可以按#键进行常用输入法的切换。2 程序类图FepSetup是一个拥有CFepsSetupContainer的标准输入法,CFepsSetupContainer 类是所有对象的中心类,负责FepsSetup的安装、卸载、基本设置和输入法切换。是CFepSetupApp类、CFepSetupAppDocument类、CFepSetupAppUi类的基本组成。它还继承了CCoeControl类和MCoeControlObserver类来实现基本控制。CFepSetupApp类负责启动应用程序,并创建一个CFepSetupAppDocument类对象。CFepSetupAppDocument类负责创建程序引擎和用户界面CFepSetupAppUi类对象。CFepSetupApp类和CFepSetupAppDocumentt类都没有对应任何界面元素。CFepSetupAppUi类负责管理视图部分,并且响应用户命令。CFepSetupDialog类实现最基本的文字显示功能。图1 程序类图3 程序运行截图图2至图7显示了次输入法的安装及使用界面。图2 运行程序 图3 选择安装程序 图4 安装成功图5 输入类型选择 图6 具体类型选择 图7 按#快速切换常用类型4 程序代码分析4.1 CFepSetupApp类分析#include FepSetupApp.h#include FepSetupDocument.hTUid CFepSetupApp:AppDllUid() const /返回程序的UIDreturn KUidFepSetup;CApaDocument* CFepSetupApp:CreateDocumentL() /创建文档类 return CFepSetupDocument:NewL( *this );EXPORT_C CApaApplication* NewApplication() /自我创建 return new CFepSetupApp;GLDEF_C TInt E32Dll( TDllReason ) /应用程序的入口函数 return KErrNone;4.2 CFepSetupDocument类分析/ 包含的文件#include FepSetupDocument.h#include FepSetupAppUi.h/ 构造函数CFepSetupDocument:CFepSetupDocument(CEikApplication& aApp): CAknDocument(aApp) / 析构函数CFepSetupDocument:CFepSetupDocument() / EPOC 默认的初始化构造void CFepSetupDocument:ConstructL() / Two-phased constructor.CFepSetupDocument* CFepSetupDocument:NewL( CEikApplication& aApp) / CFepSetupApp reference CFepSetupDocument* self = new (ELeave) CFepSetupDocument( aApp ); CleanupStack:PushL( self ); self-ConstructL(); CleanupStack:Pop(); return self; / 创建AppUi类CEikAppUi* CFepSetupDocument:CreateAppUiL() return new (ELeave) CFepSetupAppUi;4.3 CFepSetupAppUi类分析/ 包含文件#include FepSetupAppUi.h#include FepSetupContainer.h #include #include fepsetup.hrh#include void CFepSetupAppUi:ConstructL() BaseConstructL(); /调用基类的第二阶段构造函数 iAppContainer = new (ELeave) CFepSetupContainer; iAppContainer-SetMopParent(this); /设置父类 iAppContainer-ConstructL( ClientRect() ); AddToStackL( iAppContainer ); / 析构函数/ 释放reserved资源CFepSetupAppUi:CFepSetupAppUi() if (iAppContainer) RemoveFromStack( iAppContainer ); delete iAppContainer; / 这个函数仅在显示菜单前被 EIKON 结构调用。它的默认命令空,可以忽略不记。/应用程序可以根据应用程序数据的状态激活菜单的各个项。void CFepSetupAppUi:DynInitMenuPaneL( TInt /*aResourceId*/,CEikMenuPane* /*aMenuPane*/) / 处理按键TKeyResponse CFepSetupAppUi:HandleKeyEventL( const TKeyEvent& /*aKeyEvent*/,TEventCode /*aType*/) return EKeyWasNotConsumed; / 按键功能处理void CFepSetupAppUi:HandleCommandL(TInt aCommand) switch ( aCommand ) case EAknSoftkeyBack: /back键 case EEikCmdExit: Exit(); break; case EFepSetupCmdAppInstallFep: /安装 iAppContainer-InstallFepL(); break; case EFepSetupCmdAppUninstallFep: /卸载 iAppContainer-UnInstallFepL(); break; default: break; 4.4 CFepSetupContainer类分析/包含文件#include FepSetupContainer.h#include #include #include #include #include fepsetup.hrh#include #include _LIT(KT9FepName, T9FEP.FEP);_LIT(KFepInstalled, %S Installed!);_LIT(KFepUninstalled, %S Uninstalled!);_LIT(KFepAlreadyInstalled, %S Already Installed!);/ EPOC two phased constructorvoid CFepSetupContainer:ConstructL(const TRect& aRect) CreateWindowL(); iLabel = new (ELeave) CEikLabel; iLabel-SetContainerWindowL( *this ); iLabel-SetTextL( _L(Select Options tonInstall or UninstallnFepExample) );iFepSetting = CFepGenericGlobalSettings:NewL(*iEikonEnv, TFepOnOrOffKeyData(EKeyEnter, EModifierFunc|EModifierShift, EModifierFunc),TFepOnOrOffKeyData(EKeyEnter, EModifierFunc|EModifierShift, EModifierShift), EFalse);iFileNamesOfAvailableFeps = iEikonEnv-FileNamesOfAvailableFepsL();/ 获得系统中所有Feps可使用的号码const TInt numberOfAvailableFeps = iFileNamesOfAvailableFeps-MdcaCount(); / 获得系统中所有Feps的名字,包括路径名iNamesOfAvailableFeps = new(ELeave) CDesCArrayFlat(numberOfAvailableFeps+1);for(TInt i=0; iAppendL(TParsePtrC(iFileNamesOfAvailableFeps-MdcaPoint(i).Name(); SetRect(aRect); ActivateL(); / 析构函数CFepSetupContainer:CFepSetupContainer() delete iLabel;delete iFepSetting;delete iFileNamesOfAvailableFeps;delete iNamesOfAvailableFeps; / 改变大小void CFepSetupContainer:SizeChanged() iLabel-SetExtent( TPoint(30,50), iLabel-MinimumSize() ); TInt CFepSetupContainer:CountComponentControls() const return 1; / 返回container里控制的nbr CCoeControl* CFepSetupContainer:ComponentControl(TInt aIndex) const switch ( aIndex ) case 0: return iLabel; default: return NULL; void CFepSetupContainer:Draw(const TRect& aRect) const CWindowGc& gc = SystemGc(); gc.SetPenStyle(CGraphicsContext:ENullPen); /设置类型 gc.SetBrushColor(KRgbGray);/设置颜色 gc.SetBrushStyle(CGraphicsContext:ESolidBrush); gc.DrawRect(aRect); void CFepSetupContainer:HandleControlEventL( CCoeControl* /*aControl*/,TCoeEvent /*aEventType*/) /安装软件void CFepSetupContainer:InstallFepL()TBuf formatingBuf; TInt index(0); CAknListQueryDialog* dlg = new(ELeave) CAknListQueryDialog(&index); dlg-PrepareLC(R_FEPSETUP_LIST_QUERY); dlg-SetItemTextArray(iNamesOfAvailableFeps); dlg-SetOwnershipType(ELbmDoesNotOwnItemArray); / 执行dialogTInt answer = dlg-RunLD(); if (answer = EAknSoftkeyOk)iEikonEnv-InfoMsg(TParsePtrC(iFileNamesOfAvailableFeps-MdcaPoint(index).Name();/ 检查是否选择的软件被安装TPtrC nameOfFepToInstallPtr(TParsePtrC(iFileNamesOfAvailableFeps-MdcaPoint(index).Name(); / 根据文件名执行HBufC* nameOfInstalledFep = iCoeEnv-NameOfInstalledFepL();CleanupStack:PushL(nameOfInstalledFep);TPtrC fepFileNamePtr(TParsePtrC(nameOfInstalledFep-Des().Name(); / 根据文件名执行if( nameOfFepToInstallPtr.Compare(fepFileNamePtr) = 0) / 检查是否安装formatingBuf.Format(KFepAlreadyInstalled, &nameOfFepToInstallPtr);CAknConfirmationNote* confirmationDialog = new(ELeave)CAknConfirmationNote();confirmationDialog-ExecuteLD(formatingBuf);else/ 加载指定的FEP DLL到运行的程序中 / 如果有任何按键则停止加载iCoeEnv-InstallFepL( iFileNamesOfAvailableFeps-MdcaPoint(index); / _L(Z:SYSTEMFEPT9FEP.FEP)formatingBuf.Format(KFepInstalled, &nameOfFepToInstallPtr);CAknConfirmationNote* confirmationDialog = new(ELeave)CAknConfirmationNote();confirmationDialog-ExecuteLD(formatingBuf);CleanupStack:PopAndDestroy(); / 清空栈elseiEikonEnv-InfoMsg(_L(No Fep Selected);/卸载软件void CFepSetupContainer:UnInstallFepL()TBuf formatingBuf;HBufC* nameOfInstalledFep = iCoeEnv-NameOfInstalledFepL();CleanupStack:PushL(nameOfInstalledFep);TPtrC fepFileNamePtr(TParsePtrC(nameOfInstalledFep-Des().Name(); / 根据文件名执行iCoeEnv-InstallFepL(KT9FepName); / 安装默认的T9版本formatingBuf.Format(KFepUninstalled, &fepFileNamePtr);CAknConfirmationNote* dialog = new(ELeave)CAknConfirmationNote();dialog-ExecuteLD(formatingBuf);CleanupStack:PopAndDestroy(); / 清空栈4.5 CFepSetupDialog类分析/包含的文件#include FepSetupDialog.h#include #include #include #include #include #include fepsetup.hrh#include _LIT(KMySelect, Selected %d);/ 析构函数CFepSetupDialog:CFepSetupDialog() delete iFepSetting;delete iFileNamesOfAvailableFeps;delete iNamesOfAvailableFeps; / 按下OK按钮时被调用TBool CFepSetupDialog:OkToExitL(TInt aButtonId) /将按下的按钮翻译成命令给Appui类和当前视图处理 if ( aButtonId = EAknSoftkeyOptions ) iAvkonAppUi-ProcessCommandL( EAknSoftkeyOptions ); else if ( aButtonId = EAknSoftkeyBack ) iAvkonAppUi-ProcessCommandL( EEikCmdExit ); return EFalse;/当dialog显示前被调用void CFepSetupDialog:PreLayoutDynInitL() iFepSetting=CFepGenericGlobalSettings:NewL(*iEikonEnv, TFepOnOrOffKeyData(EKeyEnter, EModifierFunc|EModifierShift, EModifierFunc),TFepOnOrOffKeyData(EKeyEnter, EModifierFunc|EModifierShift, EModifierShift), EFalse);iFileNamesOfAvailableFeps =

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论