`

Cosmos 拨号界面保存号码时先提示选择存储位置

 
阅读更多
修改实现如下:
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;
}
}
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics