package hello.dcsms.omzen.Panel;
import hello.dcsms.omzen.R;
import hello.dcsms.omzen.Util.ZipUtils;
import hello.dcsms.omzen.coverflu.CoverFluGL;
import hello.dcsms.omzen.coverflu.CoverFluGL.CoverFluListener;
import hello.dcsms.omzen.theme.ThemeData;
import hello.dcsms.omzen.theme.ThemeInfo;
import hello.dcsms.omzen.theme.ThemeInfoData;
import hello.dcsms.omzen.theme.ThemeKontsran;
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.app.Dialog;
import android.app.FragmentTransaction;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.DialogInterface.OnMultiChoiceClickListener;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Environment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.FrameLayout;
import android.widget.FrameLayout.LayoutParams;
import android.widget.CheckBox;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
public class ThemeFragment extends BaseFragmen {
private int mThemeFrag = -1;
private TextView txt_info;
private FrameLayout parentLayout;
private CoverFluGL mCoverFlu;
List<String> themefile = new ArrayList<String>();
ArrayList<HashMap<String, String>> themeinfo = new ArrayList<HashMap<String, String>>();
List<Bitmap> themepreview = new ArrayList<Bitmap>();
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
if (savedInstanceState != null) {
mThemeFrag = savedInstanceState.getInt("mThemeFrag");
}
File f = new File(ThemeKontsran.OMZENTHEMEDIR);
if (!f.exists()) {
f.mkdirs();
}
parentLayout = new FrameLayout(getActivity());
parentLayout.setLayoutParams(new LayoutParams(
android.view.ViewGroup.LayoutParams.MATCH_PARENT,
android.view.ViewGroup.LayoutParams.MATCH_PARENT));
txt_info = new TextView(getActivity());
txt_info.setTextColor(Color.WHITE);
txt_info.setTextSize(12f);
txt_info.setPadding(20, 0, 0, 0);
new getThemeData(new ThemeListener()).execute();
return parentLayout;
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("mThemeFrag", mThemeFrag);
}
private static interface ProcessingListener {
public void onComplete();
}
private class ThemeListener implements ProcessingListener {
@Override
public void onComplete() {
mCoverFlu = new CoverFluGL(getActivity());
mCoverFlu.setBackgroundTexture(R.drawable.default_wallpaper);
parentLayout.addView(mCoverFlu, new LayoutParams(
android.view.ViewGroup.LayoutParams.WRAP_CONTENT,
android.view.ViewGroup.LayoutParams.WRAP_CONTENT));
LayoutParams params = new LayoutParams(
android.view.ViewGroup.LayoutParams.WRAP_CONTENT,
android.view.ViewGroup.LayoutParams.WRAP_CONTENT);
params.setMargins(0, 20, 0, 0);
parentLayout.addView(txt_info, params);
mCoverFlu.setCoverFluListener(new ThemeGLCoverGluListener());
mCoverFlu.setSelection(0);
mCoverFlu.setSensitivity(3.0f);
// setContentView(parentLayout);
}
}
private String[][] ICONARRAY = new String[][] { ThemeKontsran.BATRAI_ICON,
ThemeKontsran.SINYAL_ICON, ThemeKontsran.INOUT_ICON,
ThemeKontsran.TOGGLE_ICON, ThemeKontsran.TOOGLEBG,
ThemeKontsran.NOTIFIMAGE, ThemeKontsran.STATUSBAR_BG,
ThemeKontsran.STATUSBAR_ICON };
private String[] ItemTema = new String[] { "Baterai Icons", "Sinyal Icons",
"InOut Icons", "Toggles Icons", "Toggles Backgrounds",
"Notification Background", "Statusbar Background",
"Statusbar Icons Lain-lain" };
private boolean[] itemstat = new boolean[] { true, true, true, true, true,
true, true, true };
private class ThemeGLCoverGluListener implements CoverFluListener {
@Override
public int getCount(CoverFluGL view) {
return themepreview.size();
}
@Override
public Bitmap getImage(CoverFluGL anotherCoverFlow, int position) {
return themepreview.get(position);
}
@Override
public void tileOnTop(CoverFluGL view, final int position) {
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
txt_info.setText(themeinfo.get(position).get("info"));
}
});
}
@Override
public void topTileClicked(final CoverFluGL view, int position) {
AlertDialog.Builder b = new AlertDialog.Builder(view.getContext());
final String namafile = themeinfo.get(position).get("file");
View v = LayoutInflater.from(view.getContext()).inflate(
R.layout.mixtheme, null);
b.setView(v);
final LinearLayout lpar = (LinearLayout) v
.findViewById(R.id.cekparent);
// b.setMultiChoiceItems(ItemTema, itemstat,
// new OnMultiChoiceClickListener() {
//
// @Override
// public void onClick(DialogInterface arg0, int pos,
// boolean bool) {
//
// itemstat[pos] = bool;
//
// }
// });
b.setTitle("OMZ Mix Theme");
b.setPositiveButton("Hapus Tema",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface d, int arg1) {
AlertDialog.Builder b = new AlertDialog.Builder(
view.getContext());
b.setIcon(android.R.drawable.ic_dialog_alert);
b.setTitle("Hapus " + namafile);
b.setMessage("Apus nih?");
b.setNeutralButton("Yap", new OnClickListener() {
@Override
public void onClick(DialogInterface arg0,
int arg1) {
File f = new File(
ThemeKontsran.OMZENTHEMEDIR + "/"
+ namafile);
if (f.exists()) {
f.delete();
FragmentTransaction t = getFragmentManager()
.beginTransaction();
ThemeFragment tf = new ThemeFragment();
t.replace(R.id.fragroot, tf);
t.commit();
Toast.makeText(view.getContext(),
"Berhasil Dihapus",
Toast.LENGTH_SHORT).show();
}
}
});
b.show();
}
});
b.setNeutralButton("Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface paramDialogInterface,
int paramInt) {
for (int i = 0; i < lpar.getChildCount(); i++) {
CheckBox cb = (CheckBox) lpar.getChildAt(i);
itemstat[i] = cb.isChecked();
}
new UNZIPFILE(itemstat).execute(namafile);
}
});
b.setNegativeButton("Batal", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface paramDialogInterface,
int paramInt) {
}
});
b.show();
}
}
private class UNZIPFILE extends AsyncTask<String, Void, Boolean> {
ProgressDialog pd;
private boolean[] iconstate;
public UNZIPFILE(boolean[] itemstat) {
iconstate = itemstat;
}
@Override
protected void onPostExecute(Boolean result) {
super.onPostExecute(result);
Toast.makeText(
getActivity(),
result ? "menginstall sukses, silahkan reboot utk merasakan khasiatnya"
: "menginstall gagal", Toast.LENGTH_SHORT).show();
pd.dismiss();
}
@Override
protected void onPreExecute() {
super.onPreExecute();
pd = new ProgressDialog(getActivity());
pd.setTitle("Menginstall Tema");
pd.setMessage("Silahkan tunggu sejenak");
pd.setCancelable(false);
pd.show();
}
@Override
protected Boolean doInBackground(String... str) {
List<String> all = new ArrayList<String>();
for (int i = 0; i < iconstate.length; i++) {
if (iconstate[i])
all.addAll(Arrays.asList(ICONARRAY[i]));
}
String[] boo = all.toArray(new String[all.size()]);
if (boo != null)
return ZipUtils.unzip(boo, ThemeKontsran.OMZENTHEMEDIR + "/"
+ str[0], Environment.getExternalStorageDirectory()
.getAbsolutePath());
else
return false;
}
}
private class getThemeData extends AsyncTask<Void, Void, Void> {
private ProcessingListener listener;
public getThemeData(ThemeListener themeListener) {
this.listener = themeListener;
}
@Override
protected Void doInBackground(Void... arg0) {
File files = new File(ThemeKontsran.OMZENTHEMEDIR);
if (files.isDirectory()) {
File[] filesx = files.listFiles();
for (File file : filesx) {
if (file.getName().endsWith("omztheme")) {
themefile.add(file.getName());
}
}
}
for (String theme : themefile) {
ThemeInfoData tid = ThemeInfo.getData(theme);
ThemeData t = tid.gettDATA();
String info = "nama \t\t\t: " + t.get_NAMATEMA()
+ "\npengrajin \t\t: " + t.get_PENGRAJIN()
+ "\nversi \t\t\t: " + t.get_VERSI()
+ "\nkontak \t\t\t: " + t.get_KONTAK()
+ "\nketerangan \t: " + t.get_KETERANGAN();
HashMap<String, String> ti = new HashMap<String, String>();
if (tid.getTdSS() != null) {
for (Bitmap bmp : tid.getTdSS()) {
themepreview.add(bmp);
ti.put("info", info);
ti.put("file", theme);
themeinfo.add(ti);
}
} else {
themepreview.add(BitmapFactory.decodeResource(
getResources(), R.drawable.ic_launcher));
ti.put("info", info);
ti.put("file", theme);
themeinfo.add(ti);
}
}
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
listener.onComplete();
}
}
}