修改实现如下:
1,只要是创建新的联系人,就需要先提示选择存储位置;其他编辑情况不需要;
2,提示界面的效果是 pop 框;
如果从联系人中创建新的联系人不需要先提示选择存储位置,可以将 VappPhbEditorScr::on1stReady 中的修改去掉;
请注意下面的修改都使用 #ifdef MMI_PHB_SELECT_STORAGE_BEFORE_CREATE 控制;
1.
在 vapp_phb_editor.h 中,增加3项:
#ifdef MMI_PHB_SELECT_STORAGE_BEFORE_CREATE
void onSelectStorage(VfxObject* obj, VfxId id); //add
void selectNewContactStorage(); //add
#endif
#ifdef MMI_PHB_SELECT_STORAGE_BEFORE_CREATE
phb_storage_enum m_newContactStorage; //add
#endif
具体如下:
/*****************************************************************************
* Class VappPhbEditorScr
*****************************************************************************/
class VappPhbEditorScr : public VfxMainScr
{
VFX_DECLARE_CLASS(VappPhbEditorScr);
public:
VappPhbEditorScr(){}
VappPhbEditorScr(VappPhbSaveContactCui* cui);
protected:
virtual void onInit();
virtual void onDeinit();
virtual void on1stReady();
virtual void processEnter(VfxBool isBackward);
virtual VfxScrRotateTypeEnum onQueryRotate(const VfxScreenRotateParam ?m);
void onButtonClick(VfxObject* obj, VfxId id);
virtual mmi_ret onProc(mmi_event_struct *evt);
void onContactUpdated(ContactTask* task, mmi_event_struct* evt);
#ifdef MMI_PHB_SELECT_STORAGE_BEFORE_CREATE
void onSelectStorage(VfxObject* obj, VfxId id); //add
void selectNewContactStorage(); //add
#endif
private:
void saveContact();
void createNewContact();
void editContact();
void replaceContact();
void setData(VappContactFieldObjList *list);
private:
Contact *m_contact;
#ifdef MMI_PHB_SELECT_STORAGE_BEFORE_CREATE
phb_storage_enum m_newContactStorage; //add
#endif
public:
static MMI_BOOL onNmgrNotified(mmi_scenario_id scenarioId, void *userData);
static VfxWString m_text;
static mmi_id m_errorPopupId;
};
在 vapp_phb_editor.cpp 中:
1,在 void VappPhbEditorScr::onInit() 最后添加
。。。。。。
// only support replace one field
if (field->getCount() > 1)
{
cui->setType(VAPP_PHB_SAVE_CONTACT_NEW);
}
#ifdef MMI_PHB_SELECT_STORAGE_BEFORE_CREATE
m_newContactStorage = PHB_STORAGE_NONE;
#endif
}
2, 在 void VappPhbEditorScr::on1stReady() 中:
case VAPP_PHB_SAVE_CONTACT_NEW:
{
#ifndef MMI_PHB_SELECT_STORAGE_BEFORE_CREATE
createNewContact();
#else
selectNewContactStorage();
#endif
break;
}
3,增加如下两段代码:
#ifdef MMI_PHB_SELECT_STORAGE_BEFORE_CREATE
void VappPhbEditorScr::selectNewContactStorage()
{
VcpCommandPopup *option;
VFX_OBJ_CREATE(option, VcpCommandPopup, this);
option->setText(VFX_WSTR_RES(STR_ID_VAPP_PHB_SELECT_STORAGE));
for (VfxU32 index = 0; index < ContactStorage::getSimCount(); index++)
{
phb_storage_enum sim = ContactStorage::getSimId(index);
option->addItem(sim, ContactStorage::getStorageStr(sim), VCP_POPUP_BUTTON_TYPE_NORMAL);
if (!srv_sim_ctrl_is_inserted(vapp_phb_get_sim_type(sim)))
{
option->disableItem(sim);
}
}
option->addItem(PHB_STORAGE_NVRAM, ContactStorage::getStorageStr(PHB_STORAGE_NVRAM), VCP_POPUP_BUTTON_TYPE_NORMAL);
option->m_signalButtonClicked.connect(this, &VappPhbEditorScr::onSelectStorage);
option->show(VFX_TRUE);
}
void VappPhbEditorScr::onSelectStorage(VfxObject* obj, VfxId id)
{
setBgColor(VFX_COLOR_WHITE);
switch (id)
{
case PHB_STORAGE_NVRAM:
case PHB_STORAGE_SIM:
case PHB_STORAGE_SIM2:
{
m_newContactStorage = (phb_storage_enum)id;
createNewContact();
break;
}
default:
{
exit();
break;
}
}
}
#endif
4,
void VappPhbEditorScr::createNewContact()
{
。。。。。。
// create contact instance
// always add to phone storage
VFX_OBJ_CREATE(m_contact, Contact, this);
#ifdef MMI_PHB_SELECT_STORAGE_BEFORE_CREATE
if(m_newContactStorage != PHB_STORAGE_NONE)
{
m_contact->setStorage(m_newContactStorage);//add
}
#endif
// set input data
setData(cui->getFieldList());
VappPhbEditorPage *page;
VFX_OBJ_CREATE_EX(page, VappPhbEditorPage, this, (m_contact));
pushPage(VFX_ID_NULL, page);
}
5,
void VappPhbEditorScr::onButtonClick(VfxObject* obj, VfxId id)
{
#ifndef MMI_PHB_SELECT_STORAGE_BEFORE_CREATE
setBgColor(VFX_COLOR_WHITE);
#endif
switch (id)
{
case VAPP_PHB_SAVE_CONTACT_NEW:
{
#ifdef MMI_PHB_SELECT_STORAGE_BEFORE_CREATE
selectNewContactStorage();
#else
createNewContact();
#endif
break;
}
case VAPP_PHB_SAVE_CONTACT_REPLACE:
{
#ifdef MMI_PHB_SELECT_STORAGE_BEFORE_CREATE
setBgColor(VFX_COLOR_WHITE);
#endif
replaceContact();
break;
}
default:
{
#ifdef MMI_PHB_SELECT_STORAGE_BEFORE_CREATE
setBgColor(VFX_COLOR_WHITE);
#endif
VappPhbSaveContactCui *cui = VFX_OBJ_DYNAMIC_CAST(getApp(), VappPhbSaveContactCui);
cui->onSavedDone(cui->m_id, VFX_FALSE);
exit();
break;
}
}
}
分享到:
相关推荐
VIVE_Cosmos_用户使用指南(中文)
vive cosmos使用时需要在电脑上安装一系列的软件才可使用,而vive cosmos是台湾制造的,所以软件在下载安装时会出现网络卡顿现象,导致安装需要很长时间而且需要大量网络流量,而使用这个离线安装包可以让你即使你在...
Cosmos-OpenSSD-plus Cosmos OpenSSD + 软硬件源码分发
cosmos
COSMOS 2007 SP0 lic 1.将COSMOS 2007 SP0 lic.dat复制到X:\Program Files\SolidWorks\COSMOS\License 2.运行LicenseAdmin.exe,点nfigure License,在select cosmos License File-browse-COSMOS 2007 SP0 lic.dat-OK...
cosmos ERP.rar
c# vb.net .net 操作系统 cosmos c# vb.net .net 操作系统 cosmos c# vb.net .net 操作系统 cosmos
该文档是在实际编译cosmos-sdk时的一篇总结,不需要即可编译通过。
COSMOS高级教程--COSMOSMotion(附光盘2007版SolidWorks公司原版系列培训教程CSWP全球专业认证考试培训教程)光盘文件COSMOS高级教程--COSMOSMotion(附光盘2007版SolidWorks公司原版系列培训教程CSWP全球专业认证考试...
开源项目-cosmos72-gomacro.zip,cosmos72/gomacro: Interactive Go interpreter and debugger with REPL, Eval, generics and Lisp-like macros
Cosmos API是用于与基于Cosmos SDK构建的应用程序进行交互的库。 安装 yarn add @lunie/cosmos-js 用 如何发送令牌的简单示例。 import Cosmos from "@lunie/cosmos-js" const STARGATE_URL = ...
该文档非常详细的比较了微软Azure Cosmos数据库与微软MySQL数据库,各自的优缺点及适用的业务场景。
完完全全.NET开发操作系统,你可以选择不用...使用时请先安装VS2008以上版本,可使用C#和VB.NET开发x86、x64、ia64、ARM架构的操作系统,其他的CPU架构未来将会发布。关注更新请在plexcode中查找COSMOS。感谢大家支持!
cosmos是一种独立平行的区块链网络,通过全新区块链间通信协议来链接其他众多区块链。
著名科学家兼科普作家B.Greene的新作。一本介绍基础物理前沿研究的面向大众的科普书。
哈希COSMOS-25浊度悬浮物分析仪样本pdf,COSMOS-25浊度悬浮物分析仪应用、技术参数、特点、选型。
SW的安装教程SW2006 7 COSMOS部分安装步骤如下列图.doc
包含下面四个文件 MT6236 Application Note for WVGA support - Final.pdf Multiple+Bin+Architecture+(MBA)+Standard+Operating+Procedure.zip Venus_Home_Screen_How_to_add_new_widgets.zip ...