package de.theknut.xposedgelsettings.ui;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.preference.Preference;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
import com.afollestad.materialdialogs.MaterialDialog;
import com.afollestad.materialdialogs.Theme;
import java.util.Arrays;
import java.util.List;
import de.theknut.xposedgelsettings.R;
import de.theknut.xposedgelsettings.hooks.Common;
import de.theknut.xposedgelsettings.hooks.ObfuscationHelper;
import de.theknut.xposedgelsettings.ui.preferences.MyPreferenceScreen;
import de.theknut.xposedgelsettings.ui.preferences.SwitchCompatPreference;
public class FragmentGeneral extends FragmentBase {
public FragmentGeneral() { }
@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.general_fragment);
findPreference("enablellauncher").setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
if (!(Boolean) newValue) return true;
try {
PackageManager pkgMgr = mContext.getPackageManager();
PackageInfo packageInfo = pkgMgr.getPackageInfo(Common.GEL_PACKAGE, 0);
if ((Integer.parseInt(packageInfo.versionName.split("\\.")[0]) >= 3)
&& (Integer.parseInt(packageInfo.versionName.split("\\.")[1]) < 5)) {
Toast.makeText(
mContext,
"Your Google Search version is outdated (" + packageInfo.versionName + ")\n" + "Google Search 3.5 and up is required!\nThis tweak will have no effect!",
Toast.LENGTH_LONG
).show();
}
} catch (Exception e) {
// shouldn't be here but lets prevent this from crashing...
}
return true;
}
});
findPreference("enablerotation").setOnPreferenceChangeListener(onChangeListenerFullReboot);
final SwitchCompatPreference resizeallwidgets = (SwitchCompatPreference) findPreference("resizeallwidgets");
final SwitchCompatPreference overlappingWidgets = (SwitchCompatPreference) findPreference("overlappingwidgets");
resizeallwidgets.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
if(!(Boolean) newValue) {
overlappingWidgets.setChecked(false);
}
return true;
}
});
overlappingWidgets.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
if((Boolean) newValue) {
resizeallwidgets.setChecked(true);
}
return true;
}
});
final MyPreferenceScreen contextmenuMode = (MyPreferenceScreen) findPreference("contextmenumode");
final int modeIdx = Integer.parseInt(sharedPrefs.getString("contextmenumode", "3"));
contextmenuMode.setSummary(getResources().getStringArray(R.array.contextmenu_mode_entries)[modeIdx]);
contextmenuMode.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
new MaterialDialog.Builder(mActivity)
.theme(Theme.DARK)
.title(R.string.pref_contextmenu_mode_title)
.items(getResources().getStringArray(R.array.contextmenu_mode_entries))
.itemsCallbackSingleChoice(Integer.parseInt(sharedPrefs.getString("contextmenumode", "3")), 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("contextmenumode", "" + which).apply();
contextmenuMode.setSummary(text);
return true;
}
})
.build()
.show();
return false;
}
});
final MyPreferenceScreen pageIndicatorMode = (MyPreferenceScreen) findPreference("pageindicatormode");
final int pageIndicatorModeIdx = sharedPrefs.getInt("pageindicatormode", 0);
pageIndicatorMode.setSummary(getResources().getStringArray(R.array.pageindicator_mode_entries)[pageIndicatorModeIdx]);
pageIndicatorMode.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
new MaterialDialog.Builder(mActivity)
.theme(Theme.DARK)
.title(R.string.pref_pageindicator_title)
.items(getResources().getStringArray(R.array.pageindicator_mode_entries))
.itemsCallbackSingleChoice(sharedPrefs.getInt("pageindicatormode", 0), new MaterialDialog.ListCallbackSingleChoice() {
@Override
public boolean onSelection(MaterialDialog dialog, View view, int which, CharSequence text) {
sharedPrefs.edit().putInt("pageindicatormode", which).apply();
pageIndicatorMode.setSummary(text);
dialog.dismiss();
return true;
}
})
.build()
.show();
return false;
}
});
final MyPreferenceScreen scrollSpeed = (MyPreferenceScreen) findPreference("scrolldevider");
final List<String> values = Arrays.asList(getResources().getStringArray(R.array.general_scroll_devider_values));
final int currSelection = Integer.parseInt(sharedPrefs.getString("scrolldevider", "10"));
final int speedIdx = values.indexOf("" + currSelection);
scrollSpeed.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
new MaterialDialog.Builder(mActivity)
.theme(Theme.DARK)
.title(R.string.pref_general_scroll_devider_title)
.items(getResources().getStringArray(R.array.general_scroll_devider_entries))
.itemsCallbackSingleChoice(values.indexOf("" + Integer.parseInt(sharedPrefs.getString("scrolldevider", "10"))), 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("scrolldevider", getResources().getStringArray(R.array.general_scroll_devider_values)[which]).apply();
scrollSpeed.setSummary(text);
return true;
}
})
.build()
.show();
return false;
}
});
scrollSpeed.setSummary(getResources().getStringArray(R.array.general_scroll_devider_entries)[speedIdx]);
findPreference("continuousscrollwithappdrawer").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("appdrawerswipetabs").apply();
}
return true;
}
});
if (!InAppPurchase.isPremium) {
findPreference("overlappingwidgets").setEnabled(false);
} else {
getPreferenceScreen().removePreference(this.findPreference("needsDonate"));
}
findPreference("hidewidgets").setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
getActivity().startActivity(new Intent(getActivity(), AllWidgetsList.class));
return true;
}
});
findPreference("appnames").setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
Intent intent = new Intent(getActivity(), ChooseAppList.class);
intent.putExtra("mode", ChooseAppList.MODE_APP_RENAME);
getActivity().startActivity(intent);
return true;
}
});
try {
int version = CommonUI.getGNLVersion(mContext);
if (version >= ObfuscationHelper.GNL_4_1_21) {
getPreferenceScreen().removePreference(this.findPreference("enablellauncher"));
getPreferenceScreen().removePreference(this.findPreference("glowcolor"));
} else if (version >= ObfuscationHelper.GNL_4_0_26) {
getPreferenceScreen().removePreference(this.findPreference("enablellauncher"));
}
} catch (Exception e) {
e.printStackTrace();
}
rootView = CommonUI.setBackground(rootView, R.id.prefbackground);
return rootView;
}
}