本文共 4413 字,大约阅读时间需要 14 分钟。
修改实现如下: 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; } } }转载地址:http://jvgdi.baihongyu.com/