package com.android.caij.xutilsdemo.fragment;

import java.io.File;

import android.os.Bundle;
import android.os.Environment;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.Toast;

import com.android.caij.xutilsdemo.R;
import com.lidroid.xutils.HttpUtils;
import com.lidroid.xutils.ViewUtils;
import com.lidroid.xutils.exception.HttpException;
import com.lidroid.xutils.http.HttpHandler;
import com.lidroid.xutils.http.ResponseInfo;
import com.lidroid.xutils.http.callback.RequestCallBack;
import com.lidroid.xutils.view.annotation.ViewInject;
import com.lidroid.xutils.view.annotation.event.OnClick;

public class DownFragment extends Fragment {

	@ViewInject(R.id.start)
	private Button start;
	@ViewInject(R.id.pb_seek)
	private ProgressBar progressBar;
	private HttpUtils http;
	private static final String URL = "http://apps.lidroid.com/apiv2/dl/0000000/com.lidroid.fileexplorer";
	private HttpHandler<File> handler;

	@Override
	public View onCreateView(LayoutInflater inflater,
			@Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
		View view = inflater.inflate(R.layout.down_fragment_view, container,
				false);
		ViewUtils.inject(this, view);
		http = new HttpUtils();
		return view;
	}

	@OnClick(R.id.start)
	public void start(View view) {
		if (handler == null || handler.isCancelled()) {
			handler = http.download(URL, 
					Environment.getExternalStorageDirectory().getAbsolutePath() + "/test.apk", 
					true,  // 如果目标文件存在,接着未完成的部分继续下载。服务器不支持RANGE时将从新下载。
					false, // 如果从请求返回信息中获取到文件名,下载完成后自动重命名。
					new RequestCallBack<File>() {
	
						@Override
						public void onLoading(long total, long current,
								boolean isUploading) {
							super.onLoading(total, current, isUploading);
							progressBar.setMax((int) total);
							progressBar.setProgress((int) current);
						}
	
						@Override
						public void onSuccess(ResponseInfo<File> responseInfo) {
							Toast.makeText(getActivity(), "下载成功", Toast.LENGTH_SHORT).show();
							progressBar.setProgress(0);
							start.setText("开始");
						}
	
						@Override
						public void onFailure(HttpException error, String msg) {
							Toast.makeText(getActivity(), "下载失败" + msg, Toast.LENGTH_SHORT).show();
							start.setText("开始");
						}
					});
			start.setText("暂停");
		}
		else {
			handler.cancel();
			start.setText("开始");
		}
	}

}