@@ -17,22 +17,21 @@ package com.arialyy.simple.core.download.group;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.os.Environment;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
import com.arialyy.annotations.DownloadGroup;
|
||||
import com.arialyy.aria.core.Aria;
|
||||
import com.arialyy.aria.core.common.AbsEntity;
|
||||
import com.arialyy.aria.core.common.HttpOption;
|
||||
import com.arialyy.aria.core.processor.IHttpFileLenAdapter;
|
||||
import com.arialyy.aria.core.download.DownloadEntity;
|
||||
import com.arialyy.aria.core.download.DownloadGroupEntity;
|
||||
import com.arialyy.aria.core.inf.IEntity;
|
||||
import com.arialyy.aria.core.processor.IHttpFileLenAdapter;
|
||||
import com.arialyy.aria.core.task.DownloadGroupTask;
|
||||
import com.arialyy.aria.util.ALog;
|
||||
import com.arialyy.frame.util.show.L;
|
||||
import com.arialyy.frame.util.show.T;
|
||||
import com.arialyy.simple.R;
|
||||
import com.arialyy.simple.base.BaseActivity;
|
||||
import com.arialyy.simple.databinding.ActivityDownloadGroupBinding;
|
||||
import com.arialyy.simple.widget.ProgressLayout;
|
||||
import com.arialyy.simple.widget.SubStateLinearLayout;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -57,26 +56,47 @@ public class DownloadGroupActivity extends BaseActivity<ActivityDownloadGroupBin
|
||||
if (entity != null) {
|
||||
mTaskId = entity.getId();
|
||||
mChildList.addData(entity.getSubEntities());
|
||||
getBinding().setStateStr(
|
||||
entity.getState() == IEntity.STATE_RUNNING ? getString(R.string.stop)
|
||||
: getString(R.string.resume));
|
||||
getBinding().setFileSize(entity.getConvertFileSize());
|
||||
if (entity.getFileSize() == 0) {
|
||||
getBinding().setProgress(0);
|
||||
} else {
|
||||
getBinding().setProgress(entity.isComplete() ? 100
|
||||
: (int) (entity.getCurrentProgress() * 100 / entity.getFileSize()));
|
||||
}
|
||||
ALog.d(TAG, "progress = " + getBinding().getProgress());
|
||||
ALog.d(TAG,
|
||||
"size = " + entity.getSubEntities().size() + "; len = " + entity.getConvertFileSize());
|
||||
}else {
|
||||
entity = new DownloadGroupEntity();
|
||||
}
|
||||
getBinding().pl.setInfo(entity);
|
||||
|
||||
mChildList.setOnItemClickListener(new SubStateLinearLayout.OnItemClickListener() {
|
||||
@Override public void onItemClick(int position, View view) {
|
||||
showPopupWindow(position);
|
||||
}
|
||||
});
|
||||
getBinding().pl.setBtListener(new ProgressLayout.OnProgressLayoutBtListener() {
|
||||
@Override public void create(View v, AbsEntity entity) {
|
||||
mTaskId = Aria.download(this)
|
||||
.loadGroup(mUrls)
|
||||
.setDirPath(
|
||||
Environment.getExternalStorageDirectory().getPath() + "/Download/group_imgs")
|
||||
//.setSubFileName(getModule(GroupModule.class).getSubName2())
|
||||
.setSubFileName(getModule(GroupModule.class).getSubName())
|
||||
.unknownSize()
|
||||
.option(getHttpOption())
|
||||
.ignoreFilePathOccupy()
|
||||
//.setFileSize(114981416)
|
||||
//.updateUrls(temp)
|
||||
.create();
|
||||
}
|
||||
|
||||
@Override public void stop(View v, AbsEntity entity) {
|
||||
Aria.download(this).loadGroup(mTaskId).stop();
|
||||
}
|
||||
|
||||
@Override public void resume(View v, AbsEntity entity) {
|
||||
Aria.download(this).loadGroup(mTaskId).resume();
|
||||
}
|
||||
|
||||
@Override public void cancel(View v, AbsEntity entity) {
|
||||
Aria.download(this).loadGroup(mTaskId).cancel(true);
|
||||
mTaskId = -1;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void showPopupWindow(int position) {
|
||||
@@ -89,111 +109,69 @@ public class DownloadGroupActivity extends BaseActivity<ActivityDownloadGroupBin
|
||||
return R.layout.activity_download_group;
|
||||
}
|
||||
|
||||
public void onClick(View view) {
|
||||
switch (view.getId()) {
|
||||
case R.id.start:
|
||||
if (mTaskId == -1) {
|
||||
mTaskId = Aria.download(this)
|
||||
.loadGroup(mUrls)
|
||||
.setDirPath(
|
||||
Environment.getExternalStorageDirectory().getPath() + "/Download/group_imgs")
|
||||
//.setSubFileName(getModule(GroupModule.class).getSubName2())
|
||||
.setSubFileName(getModule(GroupModule.class).getSubName())
|
||||
.unknownSize()
|
||||
.option(getHttpOption())
|
||||
.ignoreFilePathOccupy()
|
||||
//.setFileSize(114981416)
|
||||
//.updateUrls(temp)
|
||||
.create();
|
||||
getBinding().setStateStr(getString(R.string.stop));
|
||||
break;
|
||||
}
|
||||
if (Aria.download(this).loadGroup(mTaskId).isRunning()) {
|
||||
Aria.download(this).loadGroup(mTaskId).stop();
|
||||
getBinding().setStateStr(getString(R.string.resume));
|
||||
} else {
|
||||
Aria.download(this).loadGroup(mTaskId).resume();
|
||||
getBinding().setStateStr(getString(R.string.stop));
|
||||
}
|
||||
break;
|
||||
case R.id.cancel:
|
||||
Aria.download(this).loadGroup(mTaskId).cancel(true);
|
||||
mTaskId = -1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private HttpOption getHttpOption(){
|
||||
private HttpOption getHttpOption() {
|
||||
HttpOption option = new HttpOption();
|
||||
option.setFileLenAdapter(new HttpFileLenAdapter());
|
||||
return option;
|
||||
}
|
||||
|
||||
@DownloadGroup.onWait void taskWait(DownloadGroupTask task) {
|
||||
L.d(TAG, task.getTaskName() + "wait");
|
||||
ALog.d(TAG, task.getTaskName() + "wait");
|
||||
}
|
||||
|
||||
@DownloadGroup.onPre() protected void onPre(DownloadGroupTask task) {
|
||||
L.d(TAG, "group pre, p = " + task.getPercent());
|
||||
ALog.d(TAG, "group pre, p = " + task.getPercent());
|
||||
}
|
||||
|
||||
@DownloadGroup.onTaskPre() protected void onTaskPre(DownloadGroupTask task) {
|
||||
L.d(TAG, "group task pre, p = " + task.getPercent());
|
||||
getBinding().setFileSize(task.getConvertFileSize());
|
||||
ALog.d(TAG, "group task pre, p = " + task.getPercent());
|
||||
if (mChildList.getSubData().size() <= 0) {
|
||||
mChildList.addData(task.getEntity().getSubEntities());
|
||||
}
|
||||
getBinding().pl.setInfo(task.getEntity());
|
||||
}
|
||||
|
||||
@DownloadGroup.onTaskStart() void taskStart(DownloadGroupTask task) {
|
||||
getBinding().setFileSize(task.getConvertFileSize());
|
||||
L.d(TAG, "group task create, p = " + task.getPercent());
|
||||
ALog.d(TAG, "group task create, p = " + task.getPercent());
|
||||
getBinding().pl.setInfo(task.getEntity());
|
||||
}
|
||||
|
||||
@DownloadGroup.onTaskRunning() protected void running(DownloadGroupTask task) {
|
||||
Log.d(TAG, "group running, p = "
|
||||
ALog.d(TAG, "group running, p = "
|
||||
+ task.getPercent()
|
||||
+ ", speed = "
|
||||
+ task.getConvertSpeed()
|
||||
+ ", current_p = "
|
||||
+ task.getCurrentProgress());
|
||||
getBinding().setProgress(task.getPercent());
|
||||
getBinding().setSpeed(task.getConvertSpeed());
|
||||
getBinding().setTimeLeft(task.getConvertTimeLeft());
|
||||
getBinding().pl.setInfo(task.getEntity());
|
||||
//Log.d(TAG, "sub_len = " + task.getEntity().getSubEntities().size());
|
||||
mChildList.updateChildProgress(task.getEntity().getSubEntities());
|
||||
}
|
||||
|
||||
@DownloadGroup.onTaskResume() void taskResume(DownloadGroupTask task) {
|
||||
L.d(TAG, "group task resume, p = " + task.getPercent());
|
||||
ALog.d(TAG, "group task resume, p = " + task.getPercent());
|
||||
}
|
||||
|
||||
@DownloadGroup.onTaskStop() void taskStop(DownloadGroupTask task) {
|
||||
L.d(TAG, "group task stop");
|
||||
getBinding().setSpeed("");
|
||||
getBinding().setStateStr(getString(R.string.start));
|
||||
ALog.d(TAG, "group task stop");
|
||||
getBinding().pl.setInfo(task.getEntity());
|
||||
}
|
||||
|
||||
@DownloadGroup.onTaskCancel() void taskCancel(DownloadGroupTask task) {
|
||||
L.d(TAG, "group task cancel");
|
||||
getBinding().setSpeed("");
|
||||
getBinding().setProgress(0);
|
||||
getBinding().setStateStr(getString(R.string.start));
|
||||
ALog.d(TAG, "group task cancel");
|
||||
getBinding().pl.setInfo(task.getEntity());
|
||||
}
|
||||
|
||||
@DownloadGroup.onTaskFail() void taskFail(DownloadGroupTask task) {
|
||||
L.d(TAG, "group task fail");
|
||||
getBinding().setStateStr(getString(R.string.resume));
|
||||
getBinding().setSpeed("");
|
||||
ALog.d(TAG, "group task fail");
|
||||
getBinding().pl.setInfo(task.getEntity());
|
||||
}
|
||||
|
||||
@DownloadGroup.onTaskComplete() void taskComplete(DownloadGroupTask task) {
|
||||
getBinding().setProgress(100);
|
||||
getBinding().setSpeed("");
|
||||
mChildList.updateChildProgress(task.getEntity().getSubEntities());
|
||||
T.showShort(this, "任务组下载完成");
|
||||
L.d(TAG, "任务组下载完成");
|
||||
getBinding().setStateStr(getString(R.string.start));
|
||||
ALog.d(TAG, "任务组下载完成");
|
||||
getBinding().pl.setInfo(task.getEntity());
|
||||
}
|
||||
|
||||
@DownloadGroup.onSubTaskRunning void onSubTaskRunning(DownloadGroupTask groupTask,
|
||||
@@ -246,7 +224,7 @@ public class DownloadGroupActivity extends BaseActivity<ActivityDownloadGroupBin
|
||||
DownloadEntity subEntity) {
|
||||
}
|
||||
|
||||
static class HttpFileLenAdapter implements IHttpFileLenAdapter{
|
||||
static class HttpFileLenAdapter implements IHttpFileLenAdapter {
|
||||
@Override public long handleFileLen(Map<String, List<String>> headers) {
|
||||
|
||||
List<String> sLength = headers.get("Content-Length");
|
||||
|
||||
@@ -20,18 +20,17 @@ import android.os.Environment;
|
||||
import android.view.View;
|
||||
import com.arialyy.annotations.DownloadGroup;
|
||||
import com.arialyy.aria.core.Aria;
|
||||
import com.arialyy.aria.core.common.AbsEntity;
|
||||
import com.arialyy.aria.core.common.FtpOption;
|
||||
import com.arialyy.aria.core.download.DownloadGroupEntity;
|
||||
import com.arialyy.aria.core.inf.IEntity;
|
||||
import com.arialyy.aria.core.task.DownloadGroupTask;
|
||||
import com.arialyy.aria.util.ALog;
|
||||
import com.arialyy.frame.util.show.L;
|
||||
import com.arialyy.frame.util.show.T;
|
||||
import com.arialyy.simple.R;
|
||||
import com.arialyy.simple.base.BaseActivity;
|
||||
import com.arialyy.simple.databinding.ActivityDownloadGroupBinding;
|
||||
import com.arialyy.simple.widget.ProgressLayout;
|
||||
import com.arialyy.simple.widget.SubStateLinearLayout;
|
||||
import java.security.AlgorithmConstraints;
|
||||
|
||||
/**
|
||||
* Created by lyy on 2017/7/6.
|
||||
@@ -52,110 +51,95 @@ public class FTPDirDownloadActivity extends BaseActivity<ActivityDownloadGroupBi
|
||||
if (entity != null) {
|
||||
mTaskId = entity.getId();
|
||||
mChildList.addData(entity.getSubEntities());
|
||||
getBinding().setFileSize(entity.getConvertFileSize());
|
||||
if (entity.getState() == IEntity.STATE_RUNNING) {
|
||||
getBinding().setStateStr(getString(R.string.stop));
|
||||
} else {
|
||||
getBinding().setStateStr(getString(R.string.start));
|
||||
}
|
||||
if (entity.getFileSize() == 0) {
|
||||
getBinding().setProgress(0);
|
||||
} else {
|
||||
getBinding().setProgress(entity.isComplete() ? 100
|
||||
: (int) (entity.getCurrentProgress() * 100 / entity.getFileSize()));
|
||||
}
|
||||
getBinding().pl.setInfo(entity);
|
||||
}
|
||||
getBinding().pl.setBtListener(new ProgressLayout.OnProgressLayoutBtListener() {
|
||||
@Override public void create(View v, AbsEntity entity) {
|
||||
mTaskId = Aria.download(this)
|
||||
.loadFtpDir(dir)
|
||||
.setDirPath(
|
||||
Environment.getExternalStorageDirectory().getPath() + "/Download/ftp_dir")
|
||||
.setGroupAlias("ftp文件夹下载")
|
||||
.option(getFtpOption())
|
||||
.ignoreFilePathOccupy()
|
||||
.create();
|
||||
}
|
||||
|
||||
@Override public void stop(View v, AbsEntity entity) {
|
||||
Aria.download(this).loadFtpDir(mTaskId).stop();
|
||||
}
|
||||
|
||||
@Override public void resume(View v, AbsEntity entity) {
|
||||
Aria.download(this)
|
||||
.loadFtpDir(mTaskId)
|
||||
.option(getFtpOption())
|
||||
.resume();
|
||||
}
|
||||
|
||||
@Override public void cancel(View v, AbsEntity entity) {
|
||||
Aria.download(this).loadFtpDir(mTaskId).cancel();
|
||||
mTaskId = -1;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override protected int setLayoutId() {
|
||||
return R.layout.activity_download_group;
|
||||
}
|
||||
|
||||
public void onClick(View view) {
|
||||
switch (view.getId()) {
|
||||
case R.id.start:
|
||||
if (mTaskId == -1) {
|
||||
mTaskId = Aria.download(this)
|
||||
.loadFtpDir(dir)
|
||||
.setDirPath(
|
||||
Environment.getExternalStorageDirectory().getPath() + "/Download/ftp_dir")
|
||||
.setGroupAlias("ftp文件夹下载")
|
||||
.option(getFtpOption())
|
||||
.ignoreFilePathOccupy()
|
||||
.create();
|
||||
getBinding().setStateStr(getString(R.string.stop));
|
||||
break;
|
||||
}
|
||||
if (Aria.download(this).loadFtpDir(mTaskId).isRunning()) {
|
||||
Aria.download(this).loadFtpDir(mTaskId).stop();
|
||||
getBinding().setStateStr(getString(R.string.resume));
|
||||
} else {
|
||||
Aria.download(this)
|
||||
.loadFtpDir(mTaskId)
|
||||
.option(getFtpOption())
|
||||
.resume();
|
||||
getBinding().setStateStr(getString(R.string.stop));
|
||||
}
|
||||
break;
|
||||
case R.id.cancel:
|
||||
Aria.download(this).loadFtpDir(mTaskId).cancel();
|
||||
mTaskId = -1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private FtpOption getFtpOption() {
|
||||
FtpOption option = new FtpOption();
|
||||
option.login(user, pwd);
|
||||
return option;
|
||||
}
|
||||
|
||||
@DownloadGroup.onPre() protected void onPre(DownloadGroupTask task) {
|
||||
L.d(TAG, "group pre");
|
||||
@DownloadGroup.onPre protected void onPre(DownloadGroupTask task) {
|
||||
ALog.d(TAG, "ftp dir pre");
|
||||
getBinding().pl.setInfo(task.getEntity());
|
||||
}
|
||||
|
||||
@DownloadGroup.onTaskPre() protected void onTaskPre(DownloadGroupTask task) {
|
||||
@DownloadGroup.onTaskPre protected void onTaskPre(DownloadGroupTask task) {
|
||||
ALog.d(TAG, "ftp dir task pre");
|
||||
if (mChildList.getSubData().size() <= 0) {
|
||||
mChildList.addData(task.getEntity().getSubEntities());
|
||||
}
|
||||
getBinding().setFileSize(task.getConvertFileSize());
|
||||
getBinding().pl.setInfo(task.getEntity());
|
||||
}
|
||||
|
||||
@DownloadGroup.onTaskStart() void taskStart(DownloadGroupTask task) {
|
||||
@DownloadGroup.onTaskStart void taskStart(DownloadGroupTask task) {
|
||||
ALog.d(TAG, "ftp dir start");
|
||||
getBinding().pl.setInfo(task.getEntity());
|
||||
}
|
||||
|
||||
@DownloadGroup.onTaskRunning() protected void running(DownloadGroupTask task) {
|
||||
@DownloadGroup.onTaskRunning protected void running(DownloadGroupTask task) {
|
||||
ALog.d(TAG, "ftp dir running, p = " + task.getPercent());
|
||||
getBinding().setProgress(task.getPercent());
|
||||
getBinding().setSpeed(task.getConvertSpeed());
|
||||
getBinding().pl.setInfo(task.getEntity());
|
||||
mChildList.updateChildProgress(task.getEntity().getSubEntities());
|
||||
}
|
||||
|
||||
@DownloadGroup.onTaskResume() void taskResume(DownloadGroupTask task) {
|
||||
@DownloadGroup.onTaskResume void taskResume(DownloadGroupTask task) {
|
||||
ALog.d(TAG, "ftp dir resume");
|
||||
}
|
||||
|
||||
@DownloadGroup.onTaskStop() void taskStop(DownloadGroupTask task) {
|
||||
getBinding().setSpeed("");
|
||||
getBinding().setStateStr(getString(R.string.start));
|
||||
@DownloadGroup.onTaskStop void taskStop(DownloadGroupTask task) {
|
||||
ALog.d(TAG, "ftp dir stop");
|
||||
getBinding().pl.setInfo(task.getEntity());
|
||||
}
|
||||
|
||||
@DownloadGroup.onTaskCancel() void taskCancel(DownloadGroupTask task) {
|
||||
getBinding().setSpeed("");
|
||||
getBinding().setProgress(0);
|
||||
getBinding().setStateStr(getString(R.string.start));
|
||||
@DownloadGroup.onTaskCancel void taskCancel(DownloadGroupTask task) {
|
||||
ALog.d(TAG, "ftp dir cancel");
|
||||
getBinding().pl.setInfo(task.getEntity());
|
||||
}
|
||||
|
||||
@DownloadGroup.onTaskFail() void taskFail(DownloadGroupTask task) {
|
||||
L.d(TAG, "group task fail");
|
||||
@DownloadGroup.onTaskFail void taskFail(DownloadGroupTask task) {
|
||||
ALog.d(TAG, "group task fail");
|
||||
getBinding().pl.setInfo(task.getEntity());
|
||||
}
|
||||
|
||||
@DownloadGroup.onTaskComplete() void taskComplete(DownloadGroupTask task) {
|
||||
getBinding().setProgress(100);
|
||||
@DownloadGroup.onTaskComplete void taskComplete(DownloadGroupTask task) {
|
||||
mChildList.updateChildProgress(task.getEntity().getSubEntities());
|
||||
getBinding().setStateStr(getString(R.string.re_start));
|
||||
getBinding().setSpeed("");
|
||||
getBinding().pl.setInfo(task.getEntity());
|
||||
T.showShort(this, "任务组下载完成");
|
||||
L.d(TAG, "任务组下载完成");
|
||||
ALog.d(TAG, "任务组下载完成");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,30 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:bind="http://schemas.android.com/apk/res-auto"
|
||||
>
|
||||
<data>
|
||||
<variable
|
||||
name="fileSize"
|
||||
type="String"
|
||||
/>
|
||||
<variable
|
||||
name="speed"
|
||||
type="String"
|
||||
/>
|
||||
<variable
|
||||
name="progress"
|
||||
type="int"
|
||||
/>
|
||||
<variable
|
||||
name="stateStr"
|
||||
type="String"
|
||||
/>
|
||||
<variable
|
||||
name="timeLeft"
|
||||
type="String"
|
||||
/>
|
||||
|
||||
</data>
|
||||
<layout xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
@@ -32,26 +7,21 @@
|
||||
android:orientation="vertical"
|
||||
>
|
||||
|
||||
<include layout="@layout/layout_bar"/>
|
||||
<include layout="@layout/layout_bar" />
|
||||
|
||||
<include
|
||||
layout="@layout/layout_content_single"
|
||||
android:id="@+id/content"
|
||||
android:layout_width="wrap_content"
|
||||
<com.arialyy.simple.widget.ProgressLayout
|
||||
android:id="@+id/pl"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@+id/toolbar"
|
||||
bind:fileSize="@{fileSize}"
|
||||
bind:progress="@{progress}"
|
||||
bind:speed="@{speed}"
|
||||
bind:stateStr="@{stateStr}"
|
||||
bind:timeLeft="@{timeLeft}"
|
||||
android:layout_margin="16dp"
|
||||
/>
|
||||
|
||||
<com.arialyy.simple.widget.SubStateLinearLayout
|
||||
android:id="@+id/child_list"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_below="@+id/content"
|
||||
android:layout_below="@+id/pl"
|
||||
android:paddingLeft="16dp"
|
||||
android:paddingRight="16dp"
|
||||
/>
|
||||
|
||||
@@ -53,6 +53,7 @@
|
||||
android:layout_alignTop="@+id/speed_or_state"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_alignParentRight="true"
|
||||
android:text="-/-"
|
||||
android:textSize="@dimen/text_size_smallest"
|
||||
tools:ignore="RelativeOverlap"
|
||||
/>
|
||||
|
||||
Reference in New Issue
Block a user