package com.fancl.iloyalty.activity.magazine;
import java.util.ArrayList;
import java.util.List;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.os.Bundle;
import android.os.Handler;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import com.fancl.iloyalty.ApiConstant;
import com.fancl.iloyalty.Constants;
import com.fancl.iloyalty.R;
import com.fancl.iloyalty.activity.MainNoTabActivity;
import com.fancl.iloyalty.adapter.MagazineViewFlowAdapter;
import com.fancl.iloyalty.exception.FanclException;
import com.fancl.iloyalty.factory.CustomServiceFactory;
import com.fancl.iloyalty.factory.GeneralServiceFactory;
import com.fancl.iloyalty.graphics.FastBitmapDrawable;
import com.fancl.iloyalty.item.AsyncImageView;
import com.fancl.iloyalty.item.CustomMagazineViewPager;
import com.fancl.iloyalty.item.CustomMagazineViewPager.OnPageSelectedListener;
import com.fancl.iloyalty.item.ImageViewTouch;
import com.fancl.iloyalty.pojo.MagazineImage;
import com.fancl.iloyalty.service.LocaleService;
import com.fancl.iloyalty.util.DataUtil;
import com.fancl.iloyalty.util.LogController;
public class MagazineFullPageActivity extends MainNoTabActivity {
private View magazineLayout;
private View espoirLayoutButton;
private View fhLayoutButton;
private List<MagazineImage> magazineImageList;
private CustomMagazineViewPager magazineViewFlow;
private MagazineViewFlowAdapter magazineViewFlowAdapter;
private LinearLayout magazineIndexLayout;
private List<AsyncImageView> magazineThumbnailsList;
private boolean isEspoirSelected = true;
private ImageViewTouch imageViewTouch;
private LocaleService localeService;
private LinearLayout.LayoutParams smallLayoutParams;
private LinearLayout.LayoutParams bigLayoutParams;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
smallLayoutParams = new LinearLayout.LayoutParams(DataUtil.dip2integerPx(this, 24), DataUtil.dip2integerPx(this, 25));
smallLayoutParams.setMargins(DataUtil.dip2integerPx(this, 5), DataUtil.dip2integerPx(this, 5), DataUtil.dip2integerPx(this, 5), DataUtil.dip2integerPx(this, 5));
smallLayoutParams.gravity = Gravity.CENTER;
bigLayoutParams = new LinearLayout.LayoutParams(DataUtil.dip2integerPx(this, 34), DataUtil.dip2integerPx(this, 35));
bigLayoutParams.setMargins(DataUtil.dip2integerPx(this, 5), DataUtil.dip2integerPx(this, 5), DataUtil.dip2integerPx(this, 5), DataUtil.dip2integerPx(this, 5));
bigLayoutParams.gravity = Gravity.CENTER;
localeService = GeneralServiceFactory.getLocaleService();
headerTitleTextView.setText(this.getResources().getString(R.string.menu_fancl_magazine_btn_title));
this.setupSpaceLayout();
setupViewFlowEvent();
setupMagazineThumbnails();
onPageSelectedListener.onPageSelected(0);
navigationBarLeftBtn.setVisibility(View.VISIBLE);
navigationBarListBtn.setVisibility(View.VISIBLE);
navigationBarListBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(MagazineFullPageActivity.this, MagazineHomeActivity.class);
startActivity(intent);
finish();
}
});
}
private void setupSpaceLayout() {
// TODO Auto-generated method stub
// Space Layout
magazineLayout = (LinearLayout) this.getLayoutInflater().inflate(
R.layout.magazine_full_page, null);
spaceLayout.addView(magazineLayout, new LayoutParams(
LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
espoirLayoutButton = (RelativeLayout) findViewById(R.id.espoir_layout);
espoirLayoutButton.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
LogController.log("espoirLayout");
if (isEspoirSelected) {
return;
}
isEspoirSelected = true;
espoirLayoutButton.setBackgroundResource(R.drawable.btn_magazine_cat_lft_on);
fhLayoutButton.setBackgroundResource(R.drawable.btn_magazine_cat_rgt_off);
if(imageViewTouch != null)
{
if(imageViewTouch.getFastBitmapDrawable() != null)
{
FastBitmapDrawable fastBitmapDrawable = imageViewTouch.getFastBitmapDrawable();
imageViewTouch.setImageBitmap(null);
Bitmap bitmapInFast = fastBitmapDrawable.getBitmap();
if(bitmapInFast != null)
{
fastBitmapDrawable.setBitmap(null);
if(!bitmapInFast.isRecycled())
{
bitmapInFast.recycle();
}
}
}
}
magazineViewFlowAdapter = null;
getMagazineImageListWithType("skincare");
setupMagazineThumbnails();
onPageSelectedListener.onPageSelected(0);
}
});
fhLayoutButton = (RelativeLayout) findViewById(R.id.fh_layout);
fhLayoutButton.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
LogController.log("fhLayout");
if (!isEspoirSelected) {
return;
}
isEspoirSelected = false;
espoirLayoutButton.setBackgroundResource(R.drawable.btn_magazine_cat_lft_off);
fhLayoutButton.setBackgroundResource(R.drawable.btn_magazine_cat_rgt_on);
if(imageViewTouch != null)
{
if(imageViewTouch.getFastBitmapDrawable() != null)
{
FastBitmapDrawable fastBitmapDrawable = imageViewTouch.getFastBitmapDrawable();
imageViewTouch.setImageBitmap(null);
Bitmap bitmapInFast = fastBitmapDrawable.getBitmap();
if(bitmapInFast != null)
{
fastBitmapDrawable.setBitmap(null);
if(!bitmapInFast.isRecycled())
{
bitmapInFast.recycle();
}
}
}
}
magazineViewFlowAdapter = null;
getMagazineImageListWithType("intake");
setupMagazineThumbnails();
onPageSelectedListener.onPageSelected(0);
}
});
magazineViewFlow = (CustomMagazineViewPager) findViewById(R.id.magazine_view_flow);
magazineIndexLayout = (LinearLayout) findViewById(R.id.magazine_index_layout);
getMagazineImageListWithType("skincare");
}
private void getMagazineImageListWithType(String type) {
try {
magazineImageList = CustomServiceFactory.getPromotionService().getMagazineImageWithMagazineType(type);
if (magazineViewFlowAdapter == null) {
magazineViewFlowAdapter = new MagazineViewFlowAdapter(new Handler(), this, magazineImageList);
magazineViewFlow.setAdapter(magazineViewFlowAdapter);
}
else {
magazineViewFlowAdapter.resetMagazineItemList(magazineImageList);
magazineViewFlowAdapter.notifyDataSetChanged();
}
} catch (FanclException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private OnPageSelectedListener onPageSelectedListener;
private void setupViewFlowEvent() {
onPageSelectedListener = new OnPageSelectedListener() {
@Override
public void onPageSelected(int position) {
// TODO Auto-generated method stub
LogController.log("onSwitched");
magazineViewFlow.setPagingEnabled(false);
handler.postDelayed(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
magazineViewFlow.setPagingEnabled(true);
}
}, 500);
setThumbnailSize(position);
if(imageViewTouch != null)
{
if(imageViewTouch.getFastBitmapDrawable() != null)
{
FastBitmapDrawable fastBitmapDrawable = imageViewTouch.getFastBitmapDrawable();
imageViewTouch.setImageBitmap(null);
Bitmap bitmapInFast = fastBitmapDrawable.getBitmap();
if(bitmapInFast != null)
{
fastBitmapDrawable.setBitmap(null);
if(!bitmapInFast.isRecycled())
{
bitmapInFast.recycle();
}
}
}
}
if(magazineViewFlowAdapter != null)
{
ImageViewTouch newImageViewTouch = magazineViewFlowAdapter.getImageViewTouchByPosition(position);
imageViewTouch = newImageViewTouch;
MagazineImage magazineImage = magazineImageList.get(position);
String image = localeService.textByLangaugeChooser(MagazineFullPageActivity.this, magazineImage.getImageEn(), magazineImage.getImageZh(), magazineImage.getImageSc());
newImageViewTouch.setRequestingUrl(handler, ApiConstant.getAPI(ApiConstant.ICHANNEL_IMAGE_PATH) + image, Constants.IMAGE_FOLDER);
// newImageViewTouch.setRequestingUrl(handler, "http://download.gtomato.com/FANCL_iLoyalty_Android/test_2050.png", Constants.IMAGE_FOLDER);
}
}
};
magazineViewFlow.setOnPageSelectedListener(onPageSelectedListener);
}
private void setupMagazineThumbnails() {
magazineThumbnailsList = new ArrayList<AsyncImageView>();
if (magazineIndexLayout.getChildCount() > 0) {
magazineIndexLayout.removeAllViews();
}
for (int i = 0; i < magazineImageList.size(); i++) {
MagazineImage magazineImage = magazineImageList.get(i);
String thumbnail = localeService.textByLangaugeChooser(this, magazineImage.getThumbnail_En(), magazineImage.getThumbnail_Zh(), magazineImage.getThumbnail_Sc());
AsyncImageView thumbnailImageView = new AsyncImageView(this);
thumbnailImageView.setId(i);
thumbnailImageView.setRequestingUrl(handler, ApiConstant.getAPI(ApiConstant.ICHANNEL_IMAGE_PATH) + thumbnail, Constants.IMAGE_FOLDER);
thumbnailImageView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
setThumbnailSize(v.getId());
magazineViewFlow.setCurrentItem(v.getId());
}
});
if (i == 0) {
magazineIndexLayout.addView(thumbnailImageView, bigLayoutParams);
}
else {
magazineIndexLayout.addView(thumbnailImageView, smallLayoutParams);
}
magazineThumbnailsList.add(thumbnailImageView);
}
}
private void setThumbnailSize(int index) {
for (int i = 0; i < magazineThumbnailsList.size(); i++) {
AsyncImageView image = magazineThumbnailsList.get(i);
if (i == index) {
image.setLayoutParams(bigLayoutParams);
}
else {
image.setLayoutParams(smallLayoutParams);
}
}
}
}