package com.jasonchen.microlang.fragments;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.app.Fragment;
import android.content.DialogInterface;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.GridView;
import com.jasonchen.microlang.R;
import com.jasonchen.microlang.activitys.AbstractAppActivity;
import com.jasonchen.microlang.settings.SettingUtility;
import com.jasonchen.microlang.utils.ThemeUtility;
import com.jasonchen.microlang.view.CircleImageView;
import java.util.HashMap;
import java.util.Map;
/**
* jasonchen
* 2015/05/27
*
*/
public class MDColorsDialogFragment extends DialogFragment implements OnItemClickListener{
public static void launch(Activity context) {
Fragment fragment = context.getFragmentManager().findFragmentByTag("MDColorsDialogFragment");
if (fragment != null) {
context.getFragmentManager().beginTransaction().remove(fragment).commit();
}
MDColorsDialogFragment dialogFragment = new MDColorsDialogFragment();
dialogFragment.show(context.getFragmentManager(), "MDColorsDialogFragment");
}
private Map<String, ColorDrawable> colorMap = new HashMap<String, ColorDrawable>();
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
setCancelable(true);
View view = View.inflate(getActivity(), R.layout.dialog_themepicker, null);
GridView gridView = (GridView) view.findViewById(R.id.grid);
gridView.setAdapter(new MDColorsAdapter());
gridView.setOnItemClickListener(this);
return new AlertDialog.Builder(getActivity()).setView(view).setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dismiss();
}
}).create();
}
class MDColorsAdapter extends BaseAdapter {
@Override
public int getCount() {
return ThemeUtility.themeColorArr.length;
}
@Override
public Object getItem(int position) {
return ThemeUtility.themeColorArr[position];
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null)
convertView = View.inflate(getActivity(), R.layout.item_themepicker, null);
if (!colorMap.containsKey(String.valueOf(position)))
colorMap.put(String.valueOf(position), new ColorDrawable(getResources().getColor(ThemeUtility.themeColorArr[position])));
CircleImageView imgColor = (CircleImageView) convertView.findViewById(R.id.imgColor);
ColorDrawable colorDrawable = colorMap.get(String.valueOf(position));
imgColor.setImageDrawable(colorDrawable);
View imgSelected = convertView.findViewById(R.id.imgSelected);
imgSelected.setVisibility(SettingUtility.getThemeIndex() == position ? View.VISIBLE : View.GONE);
return convertView;
}
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if (position == SettingUtility.getThemeIndex()) {
dismiss();
return;
}
SettingUtility.setTheme(position);
dismiss();
if (getActivity() instanceof AbstractAppActivity)
((AbstractAppActivity) getActivity()).reload();
}
}