package de.theknut.xposedgelsettings.ui; import android.content.SharedPreferences; import android.os.Bundle; import android.preference.Preference; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.NumberPicker; import android.widget.Toast; import com.afollestad.materialdialogs.MaterialDialog; import com.afollestad.materialdialogs.Theme; import de.theknut.xposedgelsettings.R; import de.theknut.xposedgelsettings.hooks.ObfuscationHelper; import de.theknut.xposedgelsettings.ui.preferences.MyPreferenceCategory; import de.theknut.xposedgelsettings.ui.preferences.MyPreferenceScreen; public class FragmentHomescreen extends FragmentBase { public FragmentHomescreen() { } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { super.onCreateView(inflater, container, savedInstanceState); View rootView = inflater.inflate(R.layout.options_fragment, container, false); addPreferencesFromResource(R.xml.homescreen_fragment); findPreference("gridsize").setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { final ViewGroup numberPickerView = (ViewGroup) LayoutInflater.from(mContext).inflate(R.layout.grid_number_picker, null); int minValue = 4, maxValue = 15; final NumberPicker npvc = (NumberPicker) numberPickerView.findViewById(R.id.numberPickerVerticalColumn); npvc.setMinValue(minValue); npvc.setMaxValue(maxValue); npvc.setValue(Integer.parseInt(sharedPrefs.getString("xcounthomescreen", "" + 4))); final NumberPicker npvr = (NumberPicker) numberPickerView.findViewById(R.id.numberPickerVerticalRow); npvr.setMinValue(minValue); npvr.setMaxValue(maxValue); npvr.setValue(Integer.parseInt(sharedPrefs.getString("ycounthomescreen", "" + 4))); final MaterialDialog numberPickerDialog = new MaterialDialog.Builder(mActivity) .title(R.string.pref_grid_size_vert_summary) .customView(numberPickerView, true) .cancelable(false) .theme(Theme.DARK) .positiveText(android.R.string.ok) .callback(new MaterialDialog.ButtonCallback() { @Override public void onPositive(MaterialDialog materialDialog) { // due to legacy reasons we need to save them as strings... -.- SharedPreferences.Editor editor = sharedPrefs.edit(); editor.putString("ycounthomescreen", "" + npvr.getValue()) .putString("xcounthomescreen", "" + npvc.getValue()) .apply(); materialDialog.dismiss(); } }) .build(); numberPickerView.findViewById(R.id.horizontallayout).setVisibility(View.GONE); numberPickerDialog.show(); return true; } }); findPreference("workspacerect").setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { final String[] values = getResources().getStringArray(R.array.workspacerect); final NumberPicker numberPicker = CommonUI.getNumberPicker(mContext, sharedPrefs, values, "workspacerect", "1"); new MaterialDialog.Builder(mActivity) .title(R.string.pref_workspacerect_title) .customView(numberPicker, true) .cancelable(false) .theme(Theme.DARK) .positiveText(android.R.string.ok) .callback(new MaterialDialog.ButtonCallback() { @Override public void onPositive(MaterialDialog materialDialog) { // due to legacy reasons we need to save them as strings... -.- sharedPrefs.edit() .putString("workspacerect", "" + values[numberPicker.getValue()]) .apply(); materialDialog.dismiss(); } }) .build() .show(); return true; } }); findPreference("defaulthomescreen").setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { final NumberPicker numberPicker = new NumberPicker(mContext); numberPicker.setMinValue(1); numberPicker.setMaxValue(10); numberPicker.setValue(Integer.parseInt(sharedPrefs.getString("defaulthomescreen", "1"))); new MaterialDialog.Builder(mActivity) .title(R.string.pref_default_homescreen_title) .customView(numberPicker, true) .theme(Theme.DARK) .positiveText(android.R.string.ok) .callback(new MaterialDialog.ButtonCallback() { @Override public void onPositive(MaterialDialog materialDialog) { // due to legacy reasons we need to save them as strings... -.- sharedPrefs.edit() .putString("defaulthomescreen", "" + numberPicker.getValue()) .apply(); materialDialog.dismiss(); } }) .build() .show(); return true; } }); this.findPreference("hide_appdock").setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { if ((Boolean) newValue) { new MaterialDialog.Builder(mActivity) .theme(Theme.DARK) .cancelable(false) .title(android.R.string.dialog_alert_title) .content(R.string.alert_hidedock_summary) .positiveText(android.R.string.ok) .callback(new MaterialDialog.ButtonCallback() { @Override public void onPositive(MaterialDialog materialDialog) { if (!toastShown) { Toast.makeText(mContext, R.string.toast_reboot, Toast.LENGTH_LONG).show(); toastShown = true; } materialDialog.dismiss(); } }) .build() .show(); } return true; } }); findPreference("positionallappsbutton").setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { final String[] values = getResources().getStringArray(R.array.allappsbuttonposition_entries); final NumberPicker numberPicker = CommonUI.getNumberPicker(mContext, sharedPrefs, values, "positionallappsbutton", "0"); new MaterialDialog.Builder(mActivity) .title(R.string.pref_switch_position_all_apps_button_title) .customView(numberPicker, true) .theme(Theme.DARK) .positiveText(android.R.string.ok) .callback(new MaterialDialog.ButtonCallback() { @Override public void onPositive(MaterialDialog materialDialog) { String value = values[numberPicker.getValue()]; // due to legacy reasons we need to save them as strings... -.- sharedPrefs.edit() .remove("positionallappsbutton") .putString("positionallappsbutton", "" + (value.equals(values[0]) ? -1 : value)) .apply(); materialDialog.dismiss(); } }) .build() .show(); return true; } }); findPreference("appdockiconsize").setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { final String[] values = getResources().getStringArray(R.array.iconsize_entries); final NumberPicker numberPicker = CommonUI.getNumberPicker(mContext, sharedPrefs, values, "appdockiconsize", "100"); new MaterialDialog.Builder(mActivity) .title(R.string.pref_appdockiconsize_title) .customView(numberPicker, true) .theme(Theme.DARK) .positiveText(android.R.string.ok) .callback(new MaterialDialog.ButtonCallback() { @Override public void onPositive(MaterialDialog materialDialog) { // due to legacy reasons we need to save them as strings... -.- sharedPrefs.edit() .remove("appdockiconsize") .putString("appdockiconsize", "" + values[numberPicker.getValue()]) .apply(); materialDialog.dismiss(); } }) .build() .show(); return true; } }); findPreference("appdockcount").setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { final NumberPicker numberPicker = new NumberPicker(mContext); numberPicker.setMinValue(1); numberPicker.setMaxValue(12); numberPicker.setValue(Integer.parseInt(sharedPrefs.getString("appdockcount", "1"))); new MaterialDialog.Builder(mActivity) .title(R.string.pref_appdock_count_title) .customView(numberPicker, true) .theme(Theme.DARK) .positiveText(android.R.string.ok) .callback(new MaterialDialog.ButtonCallback() { @Override public void onPositive(MaterialDialog materialDialog) { // due to legacy reasons we need to save them as strings... -.- sharedPrefs.edit() .remove("appdockcount") .putString("appdockcount", "" + numberPicker.getValue()) .apply(); materialDialog.dismiss(); } }) .build() .show(); return true; } }); findPreference("appdockrect").setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { final String[] values = getResources().getStringArray(R.array.workspacerect); final NumberPicker numberPicker = CommonUI.getNumberPicker(mContext, sharedPrefs, values, "appdockrect", "1"); new MaterialDialog.Builder(mActivity) .title(R.string.pref_workspacerect_dialog) .customView(numberPicker, true) .theme(Theme.DARK) .positiveText(android.R.string.ok) .callback(new MaterialDialog.ButtonCallback() { @Override public void onPositive(MaterialDialog materialDialog) { // due to legacy reasons we need to save them as strings... -.- sharedPrefs.edit() .remove("appdockrect") .putString("appdockrect", "" + values[numberPicker.getValue()]) .apply(); materialDialog.dismiss(); } }) .build() .show(); return true; } }); findPreference("iconsize").setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { final String[] values = getResources().getStringArray(R.array.iconsize_entries); final NumberPicker numberPicker = CommonUI.getNumberPicker(mContext, sharedPrefs, values, "iconsize", "100"); new MaterialDialog.Builder(mActivity) .title(R.string.pref_iconsize_title) .customView(numberPicker, true) .theme(Theme.DARK) .positiveText(android.R.string.ok) .callback(new MaterialDialog.ButtonCallback() { @Override public void onPositive(MaterialDialog materialDialog) { // due to legacy reasons we need to save them as strings... -.- sharedPrefs.edit() .remove("iconsize") .putString("iconsize", "" + values[numberPicker.getValue()]) .apply(); materialDialog.dismiss(); } }) .build() .show(); return true; } }); findPreference("icontextsize").setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { final String[] values = getResources().getStringArray(R.array.iconsize_entries); final NumberPicker numberPicker = CommonUI.getNumberPicker(mContext, sharedPrefs, values, "icontextsize", "100"); new MaterialDialog.Builder(mActivity) .title(R.string.pref_icontextsize_title) .customView(numberPicker, true) .theme(Theme.DARK) .positiveText(android.R.string.ok) .callback(new MaterialDialog.ButtonCallback() { @Override public void onPositive(MaterialDialog materialDialog) { // due to legacy reasons we need to save them as strings... -.- sharedPrefs.edit() .remove("icontextsize") .putString("icontextsize", "" + values[numberPicker.getValue()]) .apply(); materialDialog.dismiss(); } }) .build() .show(); return true; } }); final MyPreferenceScreen smartFolderMode = (MyPreferenceScreen) findPreference("smartfoldermode"); final int modeIdx = Integer.parseInt(sharedPrefs.getString("smartfoldermode", "0")); smartFolderMode.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { new MaterialDialog.Builder(mActivity) .theme(Theme.DARK) .title(R.string.pref_switch_smart_folder_title) .items(getResources().getStringArray(R.array.smartfoldermode_entries)) .itemsCallbackSingleChoice(Integer.parseInt(sharedPrefs.getString("smartfoldermode", "0")), new MaterialDialog.ListCallbackSingleChoice() { @Override public boolean onSelection(MaterialDialog dialog, View view, int which, CharSequence text) { // due to legacy reasons we need to save it as string sharedPrefs.edit().putString("smartfoldermode", "" + which).apply(); smartFolderMode.setSummary(text); return true; } }) .build() .show(); return false; } }); smartFolderMode.setSummary(getResources().getStringArray(R.array.smartfoldermode_entries)[modeIdx]); try { int version = CommonUI.getGNLVersion(mContext); if (version >= ObfuscationHelper.GNL_5_3_23) { MyPreferenceCategory cat = (MyPreferenceCategory) this.findPreference("folders"); cat.removePreference(this.findPreference("unlimitedfoldersize")); } } catch (Exception e) { e.printStackTrace(); } if (!InAppPurchase.isPremium) { Preference pref = findPreference("unlimitedfoldersize"); if (pref != null) pref.setEnabled(false); } else { MyPreferenceCategory cat = (MyPreferenceCategory) this.findPreference("folders"); cat.removePreference(this.findPreference("needsDonate")); } rootView = CommonUI.setBackground(rootView, R.id.prefbackground); return rootView; } }