public final synchronized void updateProgress(String uid, int progress, int length) { int pro = progress >= 100 ? 100 : progress; String text = ""; final ArrayList<HolderView> views = HolderViews; for (HolderView holder : views) { Task task = holder.task; if (task != null && task.getTransferUID().equals(uid)) { task.setTaskLength(length); task.setTaskProgress(pro); task.setState(Task.STATE.RUNNING); if (pro >= 100) { text = mContext.getString(R.string.ugc_label_task_verify); } else { text = getUploadDetail(task) /*+ " " + mContext.getString(R.string.label_task_live_speed)*/ + " " + pro + "%"; } // holder.task_progress.setProgress(pro); holder.task_state_bnt.setBackgroundResource(R.drawable.ugc_ic_ioffer_upload_pause_icon); holder.task_detail.setText(text); // holder.task_progress.invalidate(); holder.task_detail.invalidate(); holder.task_state_bnt.invalidate(); break; } } }
public final void updateTaskState(UploadMessage msg) { String tuid = msg.mTuid; int state = msg.mState; final ArrayList<HolderView> views = HolderViews; for (HolderView holder : views) { Task task = holder.task; if (task != null && task.getTransferUID().equals(tuid)) { task.setState(state); task.setDetail(msg.mMessage); if (state == Task.STATE.NEW || state == Task.STATE.RUNNING) { holder.task_state_bnt.setBackgroundResource(R.drawable.ugc_ic_ioffer_upload_pause_icon); } else if (state == Task.STATE.WAIT) { holder.task_state_bnt.setBackgroundResource(R.drawable.ugc_ic_ioffer_upload_wait_icon); } else if (state == Task.STATE.STOP) { holder.task_state_bnt.setBackgroundResource(R.drawable.ugc_ic_ioffer_upload_resume_icon); holder.task_detail.setText(msg.mMessage); holder.task_detail.invalidate(); } else if (state == Task.STATE.DONE) { notifyTaskListChange(); } holder.task_state_bnt.invalidate(); break; } } }
private String getUploadDetail(Task task) { String detail = null; int total = task.getTaskLength(); int prog = task.getTaskProgress(); if (total > 0) { float p = (prog < 0) ? (0.00f) : ((float) prog / 100); detail = FLOAT_FORMAT.format((p * total) / B_LENGTH) + "MB / " + FLOAT_FORMAT.format(((float) total / B_LENGTH)) + "MB"; } return detail != null ? detail : task.getDetail(); }
public final void updateCompleteTask(boolean verify, String tuid) { final ArrayList<Task> list = mTaskList; for (Task task : list) { if (task.getTransferUID().equals(tuid)) { task.setTaskProgress(100); if (verify) task.setState(Task.STATE.DONE); else task.setState(Task.STATE.STOP); break; } } // 通知数据变化 notifyTaskListChange(); }
private void updataTaskDoneCategory(HolderView holderview, Task task) { int type = task.getType(); if (type == Task.TYPE.AUDIO) { holderview.history_category.setBackgroundResource(R.drawable.ugc_ic_ioffer_content_s_audio); } else if (type == Task.TYPE.VIDEO) { holderview.history_category.setBackgroundResource(R.drawable.ugc_ic_ioffer_content_s_video); } else if (type == Task.TYPE.IMAGE) { holderview.history_category.setBackgroundResource(R.drawable.ugc_ic_ioffer_content_s_image); } }
private final void updateTaskState(Task task) { final ITaskStateListener listener = mTaskStateListener; int state = task.getState(); if (state == Task.STATE.NEW || state == Task.STATE.RUNNING || state == Task.STATE.WAIT) { if (listener != null) listener.change(task, state, Task.STATE.STOP); task.setState(Task.STATE.STOP); } else if (state == Task.STATE.STOP) { if (listener != null) listener.change(task, state, Task.STATE.WAIT); task.setState(Task.STATE.WAIT); } notifyDataSetChanged(); }
/** 重新排序 */ private void notifyTaskListChange() { mTaskTempList.clear(); final ArrayList<Task> list = mTaskList; final ArrayList<Task> temp = mTaskTempList; // 排序 Collections.sort( list, new Comparator<Task>() { @Override public int compare(Task t1, Task t2) { if (t1.getId() < t2.getId()) { return 1; } else { return -1; } } }); // 正在上传 for (Task task : list) { if (task.getState() == Task.STATE.RUNNING) { temp.add(task); } } // 等待 for (Task task : list) { int state = task.getState(); if (!temp.contains(task) && (state == Task.STATE.WAIT || state == Task.STATE.NEW)) { temp.add(task); } } // 停止 for (Task task : list) { if (!temp.contains(task) && (task.getState() == Task.STATE.STOP)) { temp.add(task); } } // 完成 for (Task task : list) { if (!temp.contains(task) && (task.getState() == Task.STATE.DONE)) { temp.add(task); } } // notifyDataSetChanged(); }
private void updataTaskIcon(HolderView holderview, Task task) { int type = task.getType(); // if (type == Task.TYPE.AUDIO) { holderview.common_icon.setBackgroundResource( R.drawable.ugc_ic_ioffer_content_category_a_icon); } else if (type == Task.TYPE.VIDEO) { holderview.common_icon.setBackgroundResource( R.drawable.ugc_ic_ioffer_content_category_v_icon); } else if (type == Task.TYPE.IMAGE) { holderview.common_icon.setBackgroundResource( R.drawable.ugc_ic_ioffer_content_category_i_icon); } }
private final void updateHolderView(HolderView holderview, final Task task, boolean hasListener) { Metadata meta = task.getMetadata(); int state = task.getState(); switch (state) { case Task.STATE.NEW: case Task.STATE.RUNNING: holderview.history_layout.setVisibility(View.GONE); holderview.history_state_layout.setVisibility(View.GONE); holderview.remove_layout.setVisibility(View.GONE); holderview.task_content_layout.setVisibility(View.VISIBLE); holderview.taks_state_layout.setVisibility(View.VISIBLE); holderview.task_title.setText(meta != null ? meta.getTitle() : ""); holderview.task_state_bnt.setBackgroundResource(R.drawable.ugc_ic_ioffer_upload_pause_icon); holderview.task_progress.setProgress(task.getTaskProgress()); holderview.task_detail.setText(getUploadDetail(task)); if (hasListener) { holderview.task_state_bnt.setTag(task); holderview.task_state_bnt.setOnClickListener(this); } else { holderview.task_state_bnt.setTag(null); holderview.task_state_bnt.setOnClickListener(null); } break; case Task.STATE.STOP: holderview.history_layout.setVisibility(View.GONE); holderview.history_state_layout.setVisibility(View.GONE); holderview.remove_layout.setVisibility(View.GONE); holderview.task_content_layout.setVisibility(View.VISIBLE); holderview.taks_state_layout.setVisibility(View.VISIBLE); holderview.task_title.setText(meta != null ? meta.getTitle() : ""); holderview.task_state_bnt.setBackgroundResource( R.drawable.ugc_ic_ioffer_upload_resume_icon); holderview.task_progress.setProgress(task.getTaskProgress()); holderview.task_detail.setText(getUploadDetail(task)); if (hasListener) { holderview.task_state_bnt.setTag(task); holderview.task_state_bnt.setOnClickListener(this); } else { holderview.task_state_bnt.setTag(null); holderview.task_state_bnt.setOnClickListener(null); } break; case Task.STATE.WAIT: holderview.history_layout.setVisibility(View.GONE); holderview.history_state_layout.setVisibility(View.GONE); holderview.remove_layout.setVisibility(View.GONE); holderview.task_content_layout.setVisibility(View.VISIBLE); holderview.taks_state_layout.setVisibility(View.VISIBLE); holderview.task_title.setText(meta != null ? meta.getTitle() : ""); holderview.task_state_bnt.setBackgroundResource(R.drawable.ugc_ic_ioffer_upload_wait_icon); holderview.task_progress.setProgress(task.getTaskProgress()); holderview.task_detail.setText(getUploadDetail(task)); if (hasListener) { holderview.task_state_bnt.setTag(task); holderview.task_state_bnt.setOnClickListener(this); } else { holderview.task_state_bnt.setTag(null); holderview.task_state_bnt.setOnClickListener(null); } break; case Task.STATE.DONE: holderview.remove_layout.setVisibility(View.GONE); holderview.taks_state_layout.setVisibility(View.GONE); holderview.task_content_layout.setVisibility(View.GONE); holderview.history_layout.setVisibility(View.VISIBLE); holderview.history_state_layout.setVisibility(View.VISIBLE); holderview.history_title.setText(meta != null ? meta.getTitle() : ""); holderview.history_descri.setText(task.getMetadata().getCatalogName()); holderview.history_comment.setText(""); holderview.history_state.setText(R.string.ugc_label_task_complete); holderview.task_state_bnt.setBackgroundResource( R.drawable.ugc_ic_ioffer_upload_resume_icon); updataTaskIcon(holderview, task); updataTaskDoneCategory(holderview, task); break; } }