package de.theknut.xposedgelsettings.ui; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.os.Handler; 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.Common; import de.theknut.xposedgelsettings.hooks.ObfuscationHelper; import de.theknut.xposedgelsettings.ui.preferences.MyPreferenceCategory; public class FragmentAppDrawer extends FragmentBase { public FragmentAppDrawer() { } @Override public View onCreateView(final LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { super.onCreateView(inflater, container, savedInstanceState); View rootView = inflater.inflate(R.layout.options_fragment, container, false); addPreferencesFromResource(R.xml.appdrawer_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 = 3, maxValue = 15; final NumberPicker nphc = (NumberPicker) numberPickerView.findViewById(R.id.numberPickerHorizontalColumn); nphc.setMinValue(minValue); nphc.setMaxValue(maxValue); nphc.setValue(Integer.parseInt(sharedPrefs.getString("xcountallappshorizontal", "" + 6))); final NumberPicker nphr = (NumberPicker) numberPickerView.findViewById(R.id.numberPickerHorizontalRow); nphr.setMinValue(minValue); nphr.setMaxValue(maxValue); nphr.setValue(Integer.parseInt(sharedPrefs.getString("ycountallappshorizontal", "" + 4))); final NumberPicker npvc = (NumberPicker) numberPickerView.findViewById(R.id.numberPickerVerticalColumn); npvc.setMinValue(minValue); npvc.setMaxValue(maxValue); npvc.setValue(Integer.parseInt(sharedPrefs.getString("xcountallapps", "" + 4))); final NumberPicker npvr = (NumberPicker) numberPickerView.findViewById(R.id.numberPickerVerticalRow); npvr.setMinValue(minValue); npvr.setMaxValue(maxValue); npvr.setValue(Integer.parseInt(sharedPrefs.getString("ycountallapps", "" + 5))); new MaterialDialog.Builder(mActivity) .title(R.string.pref_grid_size_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... -.- sharedPrefs.edit() .putString("ycountallapps", "" + npvr.getValue()) .putString("xcountallapps", "" + npvc.getValue()) .putString("ycountallappshorizontal", "" + nphr.getValue()) .putString("xcountallappshorizontal", "" + nphc.getValue()) .apply(); materialDialog.dismiss(); } }) .build() .show(); return true; } }); findPreference("iconsizeappdrawer").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, "iconsizeappdrawer", "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("iconsizeappdrawer") .putString("iconsizeappdrawer", "" + values[numberPicker.getValue()]) .apply(); materialDialog.dismiss(); } }) .build() .show(); return true; } }); findPreference("cleartabdata").setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { new MaterialDialog.Builder(mActivity) .theme(Theme.DARK) .title(getString(R.string.alert_appdrawer_clear_tabs_title)) .content(getString(R.string.alert_appdrawer_clear_tabs_summary)) .positiveText(android.R.string.ok) .negativeText(android.R.string.cancel) .callback(new MaterialDialog.ButtonCallback() { @Override public void onPositive(MaterialDialog materialDialog) { SharedPreferences settings = mContext.getSharedPreferences(Common.PREFERENCES_NAME, 0); SharedPreferences.Editor editor = settings.edit(); editor.remove("appdrawertabdata").apply(); Toast.makeText(mContext, getString(R.string.alert_appdrawer_clear_tabs_success), Toast.LENGTH_LONG).show(); } @Override public void onNegative(MaterialDialog materialDialog) { materialDialog.dismiss(); } }).build().show(); return true; } }); findPreference("addfolder").setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { new Handler().postDelayed(new Runnable() { @Override public void run() { Intent intent = new Intent(Common.XGELS_ACTION_MODIFY_FOLDER); intent.putExtra("setup", true); mContext.sendBroadcast(intent); } }, 2000); Intent startMain = new Intent(Intent.ACTION_MAIN); startMain.addCategory(Intent.CATEGORY_HOME); startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(startMain); return true; } }); findPreference("appdrawerswipetabs").setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { if ((Boolean) newValue) { SharedPreferences.Editor editor = mContext.getSharedPreferences(Common.PREFERENCES_NAME, Context.MODE_WORLD_READABLE).edit(); editor.remove("continuousscrollwithappdrawer").apply(); } return true; } }); try { int version = CommonUI.getGNLVersion(mContext); if (version < ObfuscationHelper.GNL_5_3_23) { getPreferenceScreen().removePreference(this.findPreference("warning")); } if (version < ObfuscationHelper.GNL_4_0_26) { ((MyPreferenceCategory) this.findPreference("settings")).removePreference(this.findPreference("appdrawerfolderstylebackgroundcolor")); } else if (version >= ObfuscationHelper.GNL_5_3_23) { ((MyPreferenceCategory) this.findPreference("tabsfolders")).removePreference(this.findPreference("appdrawerswipetabs")); 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 = 3, maxValue = 15; final NumberPicker nphc = (NumberPicker) numberPickerView.findViewById(R.id.numberPickerHorizontalColumn); nphc.setMinValue(minValue); nphc.setMaxValue(maxValue); nphc.setValue(Integer.parseInt(sharedPrefs.getString("xcountallappshorizontal", "" + 6))); final NumberPicker npvc = (NumberPicker) numberPickerView.findViewById(R.id.numberPickerVerticalColumn); npvc.setMinValue(minValue); npvc.setMaxValue(maxValue); npvc.setValue(Integer.parseInt(sharedPrefs.getString("xcountallapps", "" + 4))); ViewGroup parent = (ViewGroup) numberPickerView.findViewById(R.id.horizontallayout); parent.removeView(parent.findViewById(R.id.numberPickerHorizontalRow)); parent.removeView(parent.findViewById(R.id.horizontalgridnumberpickerx)); parent = (ViewGroup) numberPickerView.findViewById(R.id.verticallayout); parent.removeView(parent.findViewById(R.id.numberPickerVerticalRow)); parent.removeView(parent.findViewById(R.id.verticalgridnumberpickerx)); new MaterialDialog.Builder(mActivity) .title(R.string.pref_grid_size_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... -.- sharedPrefs.edit() .putString("xcountallapps", "" + npvc.getValue()) .putString("xcountallappshorizontal", "" + nphc.getValue()) .apply(); materialDialog.dismiss(); } }) .build() .show(); return true; } }); } else if (version >= ObfuscationHelper.GNL_4_0_26) { findPreference("movetabhostbottom").setEnabled(false); } } catch (Exception e) { e.printStackTrace(); } if (!InAppPurchase.isPremium) { findPreference("enableappdrawertabs").setEnabled(false); findPreference("addfolder").setEnabled(false); } else { getPreferenceScreen().removePreference(this.findPreference("needsDonate")); } rootView = CommonUI.setBackground(rootView, R.id.prefbackground); return rootView; } }