package com.andexp.skinmixer.displaygroup;
import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import com.actionbarsherlock.app.SherlockFragment;
import com.andexp.skinmixer.OnPreviewCompleteListener;
import com.andexp.skinmixer.R;
import com.andexp.skinmixer.drawablecreation.PreviewManager;
import com.andexp.skinmixer.drawablecreation.PreviewManager.ImagePreviewProcessListener;
import com.andexp.skinmixer.skin.SkinGroupType;
import com.andexp.skinmixer.utils.StripeHack;
public class FragmentPreviewDisplay extends SherlockFragment {
PreviewManager mPreviewManager;
private View mRootView;
private ImageView ivBackground;
private ImageView ivForeground;
private ImageView ivNumberHoursTens;
private ImageView ivNumberHoursUnits;
private ImageView ivNumberMinutesTens;
private ImageView ivNumberMinutesUnits;
private ImageView ivDots;
private ImageView ivAM;
String[] mGroupPartPaths;
private OnPreviewCompleteListener mPreviewCompleteListener;
private int mMissingGroupNumber;
public FragmentPreviewDisplay() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
mRootView = inflater.inflate(R.layout.fragment_skinpreview, null);
mPreviewManager = new PreviewManager(mRootView.getContext(), new ImagePreview());
mGroupPartPaths = new String[SkinGroupType.values().length];
initializeViews(mRootView);
StripeHack.apply(mRootView);
return mRootView;
}
private void initializeViews(View root) {
ivBackground = (ImageView) root.findViewById(R.id.skinpreview_background);
ivForeground = (ImageView) root.findViewById(R.id.skinpreview_foreground);
ivNumberHoursTens = (ImageView) root.findViewById(R.id.skinpreview_hours_tens);
ivNumberHoursUnits = (ImageView) root.findViewById(R.id.skinpreview_hours_units);
ivNumberMinutesTens = (ImageView) root.findViewById(R.id.skinpreview_minutes_tens);
ivNumberMinutesUnits = (ImageView) root.findViewById(R.id.skinpreview_minutes_units);
ivDots = (ImageView) root.findViewById(R.id.skinpreview_dots);
ivAM = (ImageView) root.findViewById(R.id.skinpreview_am);
}
public void setPreviewCompleteListener(OnPreviewCompleteListener previewCompleteListener) {
this.mPreviewCompleteListener = previewCompleteListener;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public void onDestroy() {
super.onDestroy();
}
public void setImageGroupType(String path, SkinGroupType skinGroupType) {
applyImageType(path, skinGroupType);
saveGroupePath(path, skinGroupType);
if(isComplete())
mPreviewCompleteListener.OnPreviewComplete(mGroupPartPaths);
else
mPreviewCompleteListener.OnPreviewUncomplete(getMissingGroups());
}
private SkinGroupType[] getMissingGroups() {
SkinGroupType[] missingGroupType= new SkinGroupType[mMissingGroupNumber];
int index=0;
for(int i = 0; i < SkinGroupType.values().length; i++){
if(TextUtils.isEmpty(mGroupPartPaths[i])){
missingGroupType[index]= SkinGroupType.getSkinGroupType(i);
++index;
}
}
return missingGroupType;
}
private void saveGroupePath(String path, SkinGroupType skinGroupType) {
mGroupPartPaths[skinGroupType.getValue()] = path;
}
private void applyImageType(String path, SkinGroupType skinGroupType) {
SkinPartType[] partType = skinGroupType.getContainedSkinPartType();
switch (skinGroupType) {
case BACKGROUND:
case FOREGROUND:
if (mPreviewManager != null)
mPreviewManager.launchSkinPartPreviewCreation(path, skinGroupType);
break;
case DOTS:
ivDots.setImageDrawable(Drawable.createFromPath(path + partType[0].getFileName()));
break;
case NUMBERS:
ivNumberHoursTens.setImageDrawable(Drawable.createFromPath(path
+ partType[1].getFileName()));
ivNumberHoursUnits.setImageDrawable(Drawable.createFromPath(path
+ partType[3].getFileName()));
ivNumberMinutesTens.setImageDrawable(Drawable.createFromPath(path
+ partType[3].getFileName()));
ivNumberMinutesUnits.setImageDrawable(Drawable.createFromPath(path
+ partType[7].getFileName()));
break;
case AMPM:
ivAM.setImageDrawable(Drawable.createFromPath(path + partType[0].getFileName()));
default:
break;
}
}
public boolean isComplete() {
boolean isComplete = true;
mMissingGroupNumber = 0;
for (String path : mGroupPartPaths) {
if(TextUtils.isEmpty(path)){
isComplete = false;
++mMissingGroupNumber;
}
}
return isComplete;
}
class ImagePreview implements ImagePreviewProcessListener {
public ImagePreview() {
}
@Override
public void onSkinPartPreviewBeginned() {
// TODO spinner
}
@Override
public void onSkinPartPreviewFinished(Bitmap previewBitmap, SkinGroupType skinPart) {
setImageBitmap(previewBitmap, skinPart);
}
}
private void setImageBitmap(Bitmap bitmap, SkinGroupType skinGroupType) {
switch (skinGroupType) {
case BACKGROUND:
setBackgroundBitmap(bitmap);
break;
case FOREGROUND:
setForegroundBitmap(bitmap);
default:
break;
}
}
private void setBackgroundBitmap(Bitmap bitmap) {
ivBackground.setImageBitmap(bitmap);
}
private void setForegroundBitmap(Bitmap bitmap) {
ivForeground.setImageBitmap(bitmap);
}
public String[] getGroupPaths() {
return mGroupPartPaths;
}
}