bigbaicai

芯方式是以开云棋牌官网在线客服人、电子工程师等电子行业相关领域从业人员为核心的知识经验学习、分享、交流社群。 凭借开放、合作、共赢的运营理念,聚集了来自国内外知名院校和顶尖科技公司的开云棋牌官网在线客服人、电子工程师。 我们致力于营造专业、认真、有温度的分享交流环境,将高质量的内容和方案成规模地生产和分享,帮助个人和团队在芯方式找到有价值的Key。 http://www.icfans.com/

如果下载列表中已经有4个下载任务,点击一个新的下载链接时无法创建新的下载?

0
阅读(682)

[DESCRIPTION]
对Pluto版本,如果下载列表中已经有4个下载任务,点击一个新的下载链接:
原始设计:
不论这四个下载任务状态如何,都会直接弹出一个POPUP,提示用户“exceed max task”,然后直接进入下载列表

需求:
根据任务的不同状态,有不同的提示,并且让用户可以创建新的下载下载任务。
版本信息:
这一方案适用于11B12.12MP及其之前的Pluto版本,11B12.16MP及其之后的版本,或者是COSMOS版本,DL Agent
APP与Service进行了分离,这一方案对他们并不完全适用。但是如有需要,可以参考类似的思路实现。
[SOLUTION]icfans
方案思路:
如果4个任务都是出于正在下载状态,即检测到exceed max DL时,可以不做任何修改。或者修改POPUP的提示字串
STR_ID_DA_PROMPT_EXCEED_MAX_DL为“exceed max download, please wait”,请用户稍后再操作。
如果4个任务中有已完成任务,即检测到 exceed max job时,将原本的POPUP提示改为confirm的提示,提示
STR_ID_DA_PROMPT_EXCEED_MAX_JOB的内容变为:“exceed max download task , remove completed task 。用户可以
选择操作,如果用户点击Yes,则删除下载列表中的已完成任务,并返回当前界面,用户可以再次点击该链接执行下载
操作;如果点No,则直接进入下载完成列表或者什么也不做。
方案实现:
1. file: DLAgentSrc.c
1.1 添加头文件:
#include “AlertScreen.h”
#include “CommonScreenResDef.h”
1.2 在文件开头声明如下两个函数:
static mmi_ret mmi_da_remove_completed_confirm_cb(mmi_alert_result_evt_struct *evt);
static mmi_U32 mmi_da_remove_all_completed(void);
1.3 定义如下两个函数并实现:
void mmi_da_remove_completed_confirm(void)
{
mmi_confirm_property_struct atg;
mmi_comfirm_property_init(&arg ,CNFM_TYPE_YESNO);
arg.callback = (mmi_proc_func)mmi_da_remove_completed_confirm_cb;
arg.parent_id = GRP_ID_ROOT;
mmi_confirm_display(get_string(STR_ID_DA_PROMPT_EXCEED_MAX_DL) ,MMI_EVENT_QUERY ,&arg);
}
static mmi_ret mmi_da_remove_completed_confirm_cb(mmi_alert_result_evt_struct *evt)
{
if(evt->evt_id == EVT_ID_ALERT_QUIT)
{
swtich(evt->result)
{
case MMI_ALERT_CNFM_YES:
if(mmi_da_remove_all_completed() >0)
{
mmi_da_popup(STR_GLOBAL_DONE ,MMI_DA_POPUP_TYPE_DONE);
mmi_da_send_download_info_ind();
}
break;
case MMI_ALERT_CNFM_NO:
mmi_frm_scrn_close_active_id();
mmi_da_display_job_list(NULL ,MMI_FALSE);
break;
}
}
return MMI_RET_OK;
}
2. File :DLAgentHttp.c
2.1 声明外部函数:
extern void mmi_da_remove_completed_confirm(void);
2.2 找到函数mmi_da_recv_wap_file_dl_ind()
按照如下修改代码:
swtich(mmi_da_get_last_error())
{
case MMI_DA_IERROR_EXCEED_MAX_JOB:
#if 1
mmi_da_remove_completed_confirm();
#else
mmi_pupop_property_init(&popup_arg);
popup_arg.callback = mmi_da_http_display_job_list_callback;
mmi_popup_display(
get_string(STR_ID_DA_PROMPT_EXCEED_MAX_JOB),
MMI_EVENT_FAILUE,
&popup_arg);
#endif
break;
}

来自开云棋牌官网在线客服社区

Baidu
map