/*
 * 官网地站:http://www.mob.com
 * 技术支持QQ: 4006852216
 * 官方微信:ShareSDK   (如果发布新版本的话,我们将会第一时间通过微信将版本更新内容推送给您。如果使用过程中有任何问题,也可以通过微信与我们取得联系,我们将会在24小时内给予回复)
 *
 * Copyright (c) 2013年 mob.com. All rights reserved.
 */

package cn.sharesdk.onekeyshare.themes.classic;

import android.content.Context;
import android.graphics.drawable.Drawable;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.TextView;

import com.mob.tools.utils.ResHelper;

/** 下拉刷新的头部控件  */
public class PRTHeader extends LinearLayout {
	private static final int DESIGN_SCREEN_WIDTH = 720;
	private static final int DESIGN_AVATAR_WIDTH = 64;
	private static final int DESIGN_AVATAR_PADDING = 24;

	private TextView tvHeader;
	private RotateImageView ivArrow;
	private ProgressBar pbRefreshing;

	public PRTHeader(Context context) {
		super(context);
		int[] size = ResHelper.getScreenSize(context);
		float screenWidth = size[0] < size[1] ? size[0] : size[1];
		float ratio = screenWidth / DESIGN_SCREEN_WIDTH;

		setOrientation(VERTICAL);

		LinearLayout llInner = new LinearLayout(context);
		LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
		lp.gravity = Gravity.CENTER_HORIZONTAL;
		addView(llInner, lp);

		ivArrow = new RotateImageView(context);
		int resId = ResHelper.getBitmapRes(context, "ssdk_oks_ptr_ptr");
		if (resId > 0) {
			ivArrow.setImageResource(resId);
		}
		int avatarWidth = (int) (ratio * DESIGN_AVATAR_WIDTH);
		lp = new LayoutParams(avatarWidth, avatarWidth);
		lp.gravity = Gravity.CENTER_VERTICAL;
		int avataPadding = (int) (ratio * DESIGN_AVATAR_PADDING);
		lp.topMargin = lp.bottomMargin = avataPadding;
		llInner.addView(ivArrow, lp);

		pbRefreshing = new ProgressBar(context);
		resId = ResHelper.getBitmapRes(context, "ssdk_oks_classic_progressbar");
		Drawable pbdrawable = context.getResources().getDrawable(resId);
		pbRefreshing.setIndeterminateDrawable(pbdrawable);
		llInner.addView(pbRefreshing, lp);
		pbRefreshing.setVisibility(View.GONE);

		tvHeader = new TextView(getContext());
		tvHeader.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18);
		tvHeader.setPadding(avataPadding, 0, avataPadding, 0);
		tvHeader.setTextColor(0xff09bb07);
		lp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
		lp.gravity = Gravity.CENTER_VERTICAL;
		llInner.addView(tvHeader, lp);
	}

	public void onPullDown(int percent) {
		if (percent > 100) {
			int degree = (percent - 100) * 180 / 20;
			if (degree > 180) {
				degree = 180;
			}
			if (degree < 0) {
				degree = 0;
			}
			ivArrow.setRotation(degree);
		} else {
			ivArrow.setRotation(0);
		}

		if (percent < 100) {
			int resId = ResHelper.getStringRes(getContext(), "ssdk_oks_pull_to_refresh");
			if (resId > 0) {
				tvHeader.setText(resId);
			}
		} else {
			int resId = ResHelper.getStringRes(getContext(), "ssdk_oks_release_to_refresh");
			if (resId > 0) {
				tvHeader.setText(resId);
			}
		}
	}

	public void onRequest() {
		ivArrow.setVisibility(View.GONE);
		pbRefreshing.setVisibility(View.VISIBLE);
		int resId = ResHelper.getStringRes(getContext(), "ssdk_oks_refreshing");
		if (resId > 0) {
			tvHeader.setText(resId);
		}
	}

	public void reverse() {
		pbRefreshing.setVisibility(View.GONE);
		ivArrow.setRotation(180);
		ivArrow.setVisibility(View.VISIBLE);
	}

}