package com.alorma.github.ui.fragment.preference;
import android.content.ComponentName;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.Preference;
import android.preference.PreferenceFragment;
import android.preference.PreferenceManager;
import android.widget.Toast;
import com.afollestad.materialdialogs.prefs.MaterialListPreference;
import com.alorma.github.GitskariosSettings;
import com.alorma.github.IntentsManager;
import com.alorma.github.Interceptor;
import com.alorma.github.R;
import com.alorma.github.ui.activity.MainActivity;
import com.crashlytics.android.answers.Answers;
import com.crashlytics.android.answers.CustomEvent;
import io.fabric.sdk.android.Fabric;
public class GitskariosPreferenceFragment extends PreferenceFragment
implements Preference.OnPreferenceChangeListener, Preference.OnPreferenceClickListener {
public static final String REPOS_SORT = "repos_sort";
public static final String REPOS_FILE_TYPE = "repos_download_type";
public static final String GITSKARIOS = "gitskarios";
public static final String CHANGELOG = "changelog";
public static final String PREF_THEME = "pref_theme";
private static final String PREF_INTERCEPT = "pref_intercept";
private static final String PREF_MARK_AS_READ = "pref_mark_as_read";
private static final String REPOSITORY_FULL_README = "repository_full_readme";
private static final String REPOSITORY_DEFAULT_TAB = "repository_default_tab";
private MaterialListPreference repositoryDefaultTab;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.main_prefs);
GitskariosSettings settings = new GitskariosSettings(getActivity());
CheckBoxPreference intercetor = (CheckBoxPreference) findPreference(PREF_INTERCEPT);
ComponentName componentName = new ComponentName(getActivity(), Interceptor.class);
int componentEnabledSetting = getActivity().getPackageManager().getComponentEnabledSetting(componentName);
intercetor.setChecked(componentEnabledSetting == PackageManager.COMPONENT_ENABLED_STATE_ENABLED);
intercetor.setOnPreferenceChangeListener(this);
findPreference(REPOS_SORT).setOnPreferenceChangeListener(this);
findPreference(REPOS_FILE_TYPE).setOnPreferenceChangeListener(this);
CheckBoxPreference pref_mark_as_read = (CheckBoxPreference) findPreference(PREF_MARK_AS_READ);
pref_mark_as_read.setChecked(settings.markAsRead());
pref_mark_as_read.setOnPreferenceChangeListener(this);
Preference gitskarios = findPreference(GITSKARIOS);
gitskarios.setOnPreferenceClickListener(this);
Preference changelog = findPreference(CHANGELOG);
changelog.setOnPreferenceClickListener(this);
Preference theme = findPreference("pref_theme");
theme.setOnPreferenceChangeListener(this);
CheckBoxPreference fullReadme = (CheckBoxPreference) findPreference(REPOSITORY_FULL_README);
fullReadme.setOnPreferenceChangeListener(this);
repositoryDefaultTab = (MaterialListPreference) findPreference(REPOSITORY_DEFAULT_TAB);
repositoryDefaultTab.setOnPreferenceChangeListener(this);
repositoryDefaultTab.setSummary(settings.getRepoDefaulTab());
}
@Override
public boolean onPreferenceClick(Preference preference) {
if (preference.getKey().equals(GITSKARIOS)) {
startActivity(new IntentsManager(getActivity()).manageRepos(Uri.parse("https://github.com/gitskarios/Gitskarios")));
} else if (preference.getKey().equals(CHANGELOG)) {
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://gitskarios.github.io")));
}
return true;
}
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
if (preference.getKey().equals(PREF_INTERCEPT)) {
Boolean value = (Boolean) newValue;
int flag = value ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED : PackageManager.COMPONENT_ENABLED_STATE_DISABLED;
ComponentName componentName = new ComponentName(getActivity(), Interceptor.class);
getActivity().getPackageManager().setComponentEnabledSetting(componentName, flag, PackageManager.DONT_KILL_APP);
} else if (preference.getKey().equals(REPOS_SORT)) {
GitskariosSettings settings = new GitskariosSettings(getActivity());
settings.saveRepoSort(String.valueOf(newValue));
} else if (preference.getKey().equals(REPOS_FILE_TYPE)) {
GitskariosSettings settings = new GitskariosSettings(getActivity());
settings.saveDownloadFileType(String.valueOf(newValue));
} else if (preference.getKey().equals(PREF_MARK_AS_READ)) {
GitskariosSettings settings = new GitskariosSettings(getActivity());
Boolean value = (Boolean) newValue;
settings.saveMarkAsRead(value);
} else if (preference.getKey().equals(PREF_THEME)) {
SharedPreferences defaultSharedPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity().getApplicationContext());
defaultSharedPreferences.edit().putString(PREF_THEME, String.valueOf(newValue)).apply();
preference.getEditor().putString(PREF_THEME, String.valueOf(newValue)).apply();
Intent intent = new Intent(getActivity(), MainActivity.class);
intent.putExtra("rebirth", true);
Toast.makeText(getActivity(), R.string.restart_app_apply_theme, Toast.LENGTH_SHORT).show();
} else if (preference.getKey().equals(REPOSITORY_FULL_README)) {
GitskariosSettings settings = new GitskariosSettings(getActivity());
Boolean value = (Boolean) newValue;
settings.saveFullReadme(value);
if (Fabric.isInitialized()) {
Answers.getInstance().logCustom(new CustomEvent("App settings").putCustomAttribute("FULL_README", String.valueOf(newValue)));
}
} else if (preference.getKey().equals(REPOSITORY_DEFAULT_TAB)) {
GitskariosSettings settings = new GitskariosSettings(getActivity());
settings.saveRepoDefaultTab(String.valueOf(newValue));
repositoryDefaultTab.setSummary(String.valueOf(newValue));
if (Fabric.isInitialized()) {
Answers.getInstance().logCustom(new CustomEvent("App settings").putCustomAttribute("REPO_TAB", String.valueOf(newValue)));
}
}
return true;
}
}