0
点赞
收藏
分享

微信扫一扫

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

A邱凌 2023-05-19 阅读 41


修改实现如下:
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;

         }

     }

 }

举报

相关推荐

0 条评论