package com.xiaomi.xms.sales.ui;
import android.graphics.Paint;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.app.LoaderManager.LoaderCallbacks;
import android.support.v4.content.Loader;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.animation.AnimationUtils;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.AdapterView;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.AdapterView.OnItemClickListener;
import com.xiaomi.xms.sales.R;
import com.xiaomi.xms.sales.ShopApp;
import com.xiaomi.xms.sales.activity.MainActivity;
import com.xiaomi.xms.sales.adapter.HomeAdapter;
import com.xiaomi.xms.sales.loader.HomeLoader;
import com.xiaomi.xms.sales.loader.ImageLoader;
import com.xiaomi.xms.sales.loader.HomeLoader.Result;
import com.xiaomi.xms.sales.model.HomeInfo;
import com.xiaomi.xms.sales.widget.BaseListView;
import com.xiaomi.xms.sales.widget.EmptyLoadingView;
import com.xiaomi.xms.sales.widget.PageScrollListener;
import java.util.ArrayList;
public class HomeFragment extends BaseFragment implements LoaderCallbacks<HomeLoader.Result> {
private static final int PHOTO_BOX_HEIGHT;
private static final int PHOTO_BIG_BOX_HEIGHT;
static {
PHOTO_BOX_HEIGHT = (int) ShopApp.getContext().getResources()
.getDimension(R.dimen.home_photo_box_height);
PHOTO_BIG_BOX_HEIGHT = (int) ShopApp.getContext().getResources()
.getDimension(R.dimen.home_big_photo_box_height);
}
private static final String TAG = "HomeFragment";
private static final int HOME_LOADER = 0;
private BaseListView mListView;
private HomeAdapter mHomeAdapter;
private HomeInfo mFirstHomeInfo;
private EmptyLoadingView mLoadingView;
private View mFooterView;
private View mHeaderBigImageView;
private ImageView mBigImageView;
private View mUpIconView;
private FrameLayout mBigImageFrameLayout;
private ImageView mActivityTypePhoto;
private TextView mFullPrice;
private TextView mProductPrice;
private TextView mProductDetail;
private TextView mProductName;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.home_fragment, container, false);
mListView = (BaseListView) view.findViewById(android.R.id.list);
View headerView = inflater.inflate(R.layout.main_tab_header_view, null);
mHeaderBigImageView = inflater.inflate(R.layout.home_big_item, null);
inflaterBigImageView(mHeaderBigImageView);
mListView.addHeaderView(headerView, null, false);
mListView.addHeaderView(mHeaderBigImageView);
mHomeAdapter = new HomeAdapter(getActivity());
mListView.setAdapter(mHomeAdapter);
mListView.setOnScrollListener(new PageScrollListener(null));
mListView.setOnItemClickListener(mItemClickListner);
mLoadingView = (EmptyLoadingView) view.findViewById(R.id.loading);
mFooterView = inflater.inflate(R.layout.home_view_footer, null);
mListView.addFooterView(mFooterView);
mHeaderBigImageView.setVisibility(View.GONE);
mFooterView.setVisibility(View.GONE);
mListView.setOnScrollListener(new OnScrollListener() {
int firstVisible = 0;
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
if (scrollState == OnScrollListener.SCROLL_STATE_IDLE) {
if (firstVisible >= 2) {
switcherImage();
}
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount,
int totalItemCount) {
firstVisible = firstVisibleItem;
}
});
mHeaderBigImageView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
HomeBaseListItem.viewProductDetail(getActivity(), mFirstHomeInfo, false);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
switcherImage();
}
}, 1000);
}
});
return view;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
getLoaderManager().initLoader(HOME_LOADER, null, this);
mFooterView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
MainActivity.launchMain(getActivity(), MainActivity.FRAGMENT_TAG_CATEGORY);
}
});
}
@Override
public Loader onCreateLoader(int id, Bundle bundle) {
if (id == HOME_LOADER) {
mLoader = new HomeLoader(getActivity());
mLoader.setProgressNotifiable(mLoadingView);
return mLoader;
}
return null;
}
private void inflaterBigImageView(View view) {
mBigImageFrameLayout = (FrameLayout) view.findViewById(R.id.item_photo_layout);
mBigImageView = (ImageView) view.findViewById(R.id.home_big_photo);
mActivityTypePhoto = (ImageView) view.findViewById(R.id.activity_type_photo);
mProductName = (TextView) view.findViewById(R.id.product_name);
mProductDetail = (TextView) view.findViewById(R.id.product_detial);
mProductPrice = (TextView) view.findViewById(R.id.product_price);
mFullPrice = (TextView) view.findViewById(R.id.full_price);
mFullPrice.getPaint().setFlags(Paint.ANTI_ALIAS_FLAG | Paint.STRIKE_THRU_TEXT_FLAG);
mUpIconView = view.findViewById(R.id.up_icon_layout);
mUpIconView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mListView.setOnScrollListener(null);
mListView.smoothScrollBy(PHOTO_BIG_BOX_HEIGHT -PHOTO_BOX_HEIGHT, 300);
mUpIconView.startAnimation(AnimationUtils.loadAnimation(getActivity(),
R.anim.disappear));
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
mUpIconView.setVisibility(View.GONE);
mBigImageFrameLayout.setMinimumHeight(PHOTO_BOX_HEIGHT);
ImageLoader.getInstance().loadImage(mBigImageView, mFirstHomeInfo.getHomePhoto(),
R.drawable.default_pic_small_inverse);
mListView.smoothScrollBy(PHOTO_BOX_HEIGHT-PHOTO_BIG_BOX_HEIGHT, 0);
}
}, 300);
}
});
}
public int getCurrentPosition() {
return mListView == null ? 0 : mListView.getFirstVisiblePosition();
}
@Override
public void onLoadFinished(Loader<Result> loader, Result data) {
ArrayList<HomeInfo> homeInfo = new ArrayList<HomeInfo>();
if (data.mHomeInfos != null && data.mHomeInfos.size() > 0) {
mHeaderBigImageView.setVisibility(View.VISIBLE);
mFooterView.setVisibility(View.VISIBLE);
mFirstHomeInfo = data.mHomeInfos.get(0);
homeInfo.addAll(data.mHomeInfos);
}
if (data.mHomeInfos != null && data.mHomeInfos.size() > 1) {
homeInfo.remove(0);
} else {
homeInfo = data.mHomeInfos;
}
setFirstViewData();
mHomeAdapter.updateData(homeInfo);
}
@Override
public void onLoaderReset(Loader<Result> arg0) {
}
private OnItemClickListener mItemClickListner = new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
HomeBaseListItem.viewProductDetail(getActivity(), (HomeInfo) view.getTag(), false);
}
};
private void setFirstViewData() {
if (mFirstHomeInfo != null) {
mProductName.setText(mFirstHomeInfo.getProductName());
mProductDetail.setText(mFirstHomeInfo.getProductDetail());
mProductPrice.setText(getString(R.string.home_product_price_format,
mFirstHomeInfo.getProductPrice()));
mFullPrice.setText(getString(R.string.home_product_price_format,
mFirstHomeInfo.getFullPrice()));
if (null == mFirstHomeInfo.getActivityIcon()) {
mActivityTypePhoto.setImageResource(0);
mActivityTypePhoto.setVisibility(View.GONE);
} else {
mActivityTypePhoto.setVisibility(View.VISIBLE);
ImageLoader.getInstance().loadImage(mActivityTypePhoto,
mFirstHomeInfo.getActivityIcon(), 0);
}
if (TextUtils.isEmpty(mFirstHomeInfo.getProductPrice())) {
mProductPrice.setVisibility(View.GONE);
} else {
mProductPrice.setVisibility(View.VISIBLE);
}
if (TextUtils.isEmpty(mFirstHomeInfo.getFullPrice())
|| TextUtils.equals(mFirstHomeInfo.getFullPrice(),
mFirstHomeInfo.getProductPrice())) {
mFullPrice.setVisibility(View.GONE);
} else {
mFullPrice.setVisibility(View.VISIBLE);
}
if (mFirstHomeInfo.getHomeBigPhoto() != null) {
ImageLoader.getInstance().loadImage(mBigImageView, mFirstHomeInfo.getHomeBigPhoto(),
R.drawable.default_pic_small_inverse);
mBigImageFrameLayout.setMinimumHeight(PHOTO_BIG_BOX_HEIGHT);
ImageLoader.getInstance().syncLoadLocalImage(mFirstHomeInfo.getHomePhoto(), false);
mUpIconView.setVisibility(View.VISIBLE);
} else {
mBigImageFrameLayout.setMinimumHeight(PHOTO_BOX_HEIGHT);
ImageLoader.getInstance().loadImage(mBigImageView, mFirstHomeInfo.getHomePhoto(),
R.drawable.default_pic_small_inverse);
mUpIconView.setVisibility(View.GONE);
}
mFirstHomeInfo.mHomeBigPhoto = null;
}
}
public void switcherImage() {
if (mUpIconView != null) {
mUpIconView.setVisibility(View.GONE);
}
if (mBigImageFrameLayout != null) {
mBigImageFrameLayout.setMinimumHeight(PHOTO_BOX_HEIGHT);
}
if (mFirstHomeInfo != null) {
ImageLoader.getInstance().loadImage(mBigImageView, mFirstHomeInfo.getHomePhoto(),
R.drawable.default_pic_small_inverse);
}
mListView.setOnScrollListener(null);
}
}