package com.dsht.settings;
import java.io.File;
import it.gmariotti.android.example.colorpicker.calendarstock.ColorPickerPreference;
import com.dsht.kerneltweaker.Helpers;
import com.dsht.kerneltweaker.MainActivity;
import com.dsht.kerneltweaker.R;
import com.dsht.kerneltweaker.Startup;
import android.app.AlertDialog;
import android.app.Fragment;
import android.app.AlertDialog.Builder;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Environment;
import android.preference.CheckBoxPreference;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceChangeListener;
import android.preference.Preference.OnPreferenceClickListener;
import android.preference.PreferenceCategory;
import android.preference.PreferenceFragment;
import android.preference.PreferenceManager;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
public class SettingsFragment extends PreferenceFragment implements OnPreferenceChangeListener, OnPreferenceClickListener {
public static final String KEY_ENABLE_GLOBAL = "key_enable_global";
public static final String KEY_ENABLE_PERSONAL = "key_enable_personal";
public static final String KEY_GLOBAL_COLOR = "key_global_color";
public static final String KEY_THEME = "key_theme";
public static final String KEY_STAT = "key_color_stats";
public static final String KEY_INFO = "key_color_info";
public static final String KEY_CPU = "key_color_cpu";
public static final String KEY_GPU = "key_color_gpu";
public static final String KEY_UV = "key_color_uv";
public static final String KEY_KERNEL = "key_color_kernel";
public static final String KEY_LMK = "key_color_lmk";
public static final String KEY_VM = "key_color_vm";
public static final String KEY_REVIEW = "key_color_review";
public static final String KEY_FILE = "key_color_file";
public static final String KEY_BAK = "key_color_backup";
public static final String KEY_RECOVERY = "key_color_recovery";
public static final String KEY_PERSONAL_CAT = "key_personal_category";
public static final String KEY_PROP = "key_color_prop";
public static final String KEY_INIT = "key_color_init";
public static final String KEY_BLUR = "key_color_blur";
public static final String KEY_DEBUG = "key_debug";
public static final String KEY_SLOG = "key_slog";
public static final String LOG_FILE = Environment.getExternalStorageDirectory().getAbsolutePath()+"/KernelTweaker_log.txt";
public static final String KEY_RUNLOG = "key_runlog";
private CheckBoxPreference mEnable;
private CheckBoxPreference mPersonal;
private ColorPickerPreference mColor;
private ColorPickerPreference mStats;
private ColorPickerPreference mInfo;
private ColorPickerPreference mCpu;
private ColorPickerPreference mGpu;
private ColorPickerPreference mUv;
private ColorPickerPreference mKernel;
private ColorPickerPreference mLmk;
private ColorPickerPreference mVm;
private ColorPickerPreference mReview;
private ColorPickerPreference mFile;
private ColorPickerPreference mBak;
private ColorPickerPreference mRecovery;
private ColorPickerPreference mProp;
private ColorPickerPreference mInit;
private ColorPickerPreference mBlur;
private CheckBoxPreference mTheme;
private SharedPreferences mPrefs;
private PreferenceCategory mPersonalCat;
private Preference mLog;
private Preference mRunLog;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.pref_settings);
mPrefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
mEnable = (CheckBoxPreference) findPreference(KEY_ENABLE_GLOBAL);
mPersonal = (CheckBoxPreference) findPreference(KEY_ENABLE_PERSONAL);
mTheme = (CheckBoxPreference) findPreference(KEY_THEME);
mColor = (ColorPickerPreference) findPreference(KEY_GLOBAL_COLOR);
mStats = (ColorPickerPreference) findPreference(KEY_STAT);
mInfo = (ColorPickerPreference) findPreference(KEY_INFO);
mCpu = (ColorPickerPreference) findPreference(KEY_CPU);
mGpu = (ColorPickerPreference) findPreference(KEY_GPU);
mUv = (ColorPickerPreference) findPreference(KEY_UV);
mKernel = (ColorPickerPreference) findPreference(KEY_KERNEL);
mLmk = (ColorPickerPreference) findPreference(KEY_LMK);
mVm = (ColorPickerPreference) findPreference(KEY_VM);
mReview = (ColorPickerPreference) findPreference(KEY_REVIEW);
mFile = (ColorPickerPreference) findPreference(KEY_FILE);
mBak = (ColorPickerPreference) findPreference(KEY_BAK);
mRecovery = (ColorPickerPreference) findPreference(KEY_RECOVERY);
mProp = (ColorPickerPreference) findPreference(KEY_PROP);
mInit = (ColorPickerPreference) findPreference(KEY_INIT);
mBlur = (ColorPickerPreference) findPreference(KEY_BLUR);
mPersonalCat = (PreferenceCategory) findPreference(KEY_PERSONAL_CAT);
mLog = (Preference) findPreference(KEY_SLOG);
mRunLog = (Preference) findPreference(KEY_RUNLOG);
boolean enabled = mPrefs.getBoolean(KEY_ENABLE_GLOBAL, false);
mColor.setEnabled(enabled);
mEnable.setOnPreferenceChangeListener(this);
mTheme.setOnPreferenceChangeListener(this);
mColor.setOnPreferenceChangeListener(this);
mPersonal.setOnPreferenceChangeListener(this);
mStats.setOnPreferenceChangeListener(this);;
mInfo.setOnPreferenceChangeListener(this);
mCpu.setOnPreferenceChangeListener(this);
mGpu.setOnPreferenceChangeListener(this);
mUv.setOnPreferenceChangeListener(this);
mKernel.setOnPreferenceChangeListener(this);
mLmk.setOnPreferenceChangeListener(this);
mVm.setOnPreferenceChangeListener(this);
mReview.setOnPreferenceChangeListener(this);
mFile.setOnPreferenceChangeListener(this);
mBak.setOnPreferenceChangeListener(this);
mRecovery.setOnPreferenceChangeListener(this);
mProp.setOnPreferenceChangeListener(this);
mInit.setOnPreferenceChangeListener(this);
mBlur.setOnPreferenceChangeListener(this);
mLog.setOnPreferenceClickListener(this);
mRunLog.setOnPreferenceClickListener(this);
if(MainActivity.menu.isMenuShowing()) {
MainActivity.menu.toggle(true);
}
if(!mPrefs.getBoolean(KEY_ENABLE_PERSONAL, false)) {
this.getPreferenceScreen().removePreference(mPersonalCat);
}
}
@Override
public boolean onPreferenceChange(Preference pref, Object newValue) {
// TODO Auto-generated method stub
SharedPreferences.Editor editor = mPrefs.edit();
if(pref == mEnable) {
editor.putBoolean(KEY_ENABLE_GLOBAL, (Boolean)newValue);
mColor.setEnabled((Boolean)newValue);
MainActivity.mAdapter.notifyDataSetChanged();
if(mPersonal.isChecked()) {
mPersonal.setChecked(false);
}
return true;
}
if(pref == mPersonal) {
editor.putBoolean(KEY_ENABLE_PERSONAL, (Boolean)newValue);
MainActivity.mAdapter.notifyDataSetChanged();
if(mEnable.isChecked()) {
mEnable.setChecked(false);
}
if(!(Boolean)newValue) {
this.getPreferenceScreen().removePreference(mPersonalCat);
}else {
this.getPreferenceScreen().addPreference(mPersonalCat);
}
return true;
}
if(pref == mColor) {
MainActivity.mAdapter.notifyDataSetChanged();
return true;
}
if(pref == mTheme) {
editor.putBoolean(KEY_THEME, (Boolean)newValue);
MainActivity.setAppTheme();
Helpers.restartPC(getActivity());
return true;
}
if(pref == mStats) {
MainActivity.mAdapter.notifyDataSetChanged();
return true;
}
if(pref == mInfo) {
MainActivity.mAdapter.notifyDataSetChanged();
return true;
}
if(pref == mCpu) {
MainActivity.mAdapter.notifyDataSetChanged();
return true;
}
if(pref == mGpu) {
MainActivity.mAdapter.notifyDataSetChanged();
return true;
}
if(pref == mUv) {
MainActivity.mAdapter.notifyDataSetChanged();
return true;
}
if(pref == mKernel) {
MainActivity.mAdapter.notifyDataSetChanged();
return true;
}
if(pref == mLmk) {
MainActivity.mAdapter.notifyDataSetChanged();
return true;
}
if(pref == mVm) {
MainActivity.mAdapter.notifyDataSetChanged();
return true;
}
if(pref == mReview) {
MainActivity.mAdapter.notifyDataSetChanged();
return true;
}
if(pref == mFile) {
MainActivity.mAdapter.notifyDataSetChanged();
return true;
}
if(pref == mBak) {
MainActivity.mAdapter.notifyDataSetChanged();
return true;
}
if(pref == mRecovery) {
MainActivity.mAdapter.notifyDataSetChanged();
return true;
}
if(pref == mProp) {
MainActivity.mAdapter.notifyDataSetChanged();
return true;
}
if(pref == mInit) {
MainActivity.mAdapter.notifyDataSetChanged();
return true;
}
if(pref == mBlur) {
MainActivity.mAdapter.notifyDataSetChanged();
return true;
}
editor.commit();
return false;
}
private void showDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle("Info");
builder.setMessage("KernelTweaker needs to be restarted to apply changes.\nRestart now?");
builder.setPositiveButton("Restart", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Helpers.restartPC(getActivity());
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
dialog.cancel();
}
});
builder.create().show();
}
@Override
public boolean onPreferenceClick(Preference pref) {
// TODO Auto-generated method stub
if(pref == mLog) {
if(new File(LOG_FILE).exists()) {
String fcontent = Helpers.readFileViaShell(LOG_FILE, false);
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = inflater.inflate(R.layout.log_dialog, null, false);
TextView textLog = (TextView)v.findViewById(R.id.text);
textLog.setText(fcontent);
builder.setTitle("Log content");
builder.setView(v);
builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
dialog.cancel();
}
});
builder.setNegativeButton("Delete Log", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
new File(LOG_FILE).delete();
dialog.cancel();
}
});
builder.create().show();
} else {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle(null);
builder.setMessage("Log File not found!\nPlease enable debugging and reboot your phone!");
builder.create().show();
}
}
if(pref == mRunLog) {
Startup.applyValuesAsync(getActivity(), MainActivity.db, MainActivity.vddDb,true);
}
return false;
}
}