Philipp Schaefer 56863aebac * moved advanced settings to own preference screen
* added setting to fake user agent (see https://plus.google.com/u/0/104992284359985480029/posts/9mPFLPKjgvL)
* bumped version number
2013-10-13 11:10:17 +02:00

123 lines
5.0 KiB
Java

package com.cradle.iitc_mobile.fragments;
import android.app.Dialog;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.os.Bundle;
import android.preference.EditTextPreference;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceChangeListener;
import android.preference.PreferenceFragment;
import android.preference.PreferenceScreen;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewParent;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
import com.cradle.iitc_mobile.R;
public class MainSettings extends PreferenceFragment {
private String mIitcVersion;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mIitcVersion = getArguments().getString("iitc_version");
addPreferencesFromResource(R.xml.preferences);
// set build version
ListPreference pref_build_version = (ListPreference) findPreference("pref_build_version");
PackageManager pm = getActivity().getPackageManager();
String version = "unknown";
try {
PackageInfo info = pm.getPackageInfo(
getActivity().getPackageName(), 0);
version = info.versionName;
} catch (NameNotFoundException e) {
e.printStackTrace();
}
pref_build_version.setSummary(version);
// set iitc version
ListPreference pref_iitc_version = (ListPreference) findPreference("pref_iitc_version");
pref_iitc_version.setSummary(mIitcVersion);
// set iitc source
EditTextPreference pref_iitc_source = (EditTextPreference) findPreference("pref_iitc_source");
pref_iitc_source
.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference,
Object newValue) {
preference.setSummary(getString(R.string.pref_select_iitc_sum) +
" " + newValue);
// TODO: update mIitcVersion when iitc source has
// changed
return true;
}
});
// first init of summary
String pref_iitc_source_sum = getString(R.string.pref_select_iitc_sum)
+ " " + pref_iitc_source.getText();
pref_iitc_source.setSummary(pref_iitc_source_sum);
}
// we want a home button + HomeAsUpEnabled in nested preferences
// for some odd reasons android is not able to do this by default
// so we need some additional hacks...
// thx to http://stackoverflow.com/a/16800527/2638486 !!
@Override
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
if (preference.getTitle().toString().equals(getString(R.string.pref_advanced_options)))
initializeActionBar((PreferenceScreen) preference);
return super.onPreferenceTreeClick(preferenceScreen, preference);
}
// Apply custom home button area click listener to close the PreferenceScreen
// because PreferenceScreens are dialogs which swallow
// events instead of passing to the activity
// Related Issue: https://code.google.com/p/android/issues/detail?id=4611
public static void initializeActionBar(PreferenceScreen preferenceScreen) {
final Dialog dialog = preferenceScreen.getDialog();
if (dialog != null) {
dialog.getActionBar().setDisplayHomeAsUpEnabled(true);
View homeBtn = dialog.findViewById(android.R.id.home);
if (homeBtn != null) {
View.OnClickListener dismissDialogClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
};
ViewParent homeBtnContainer = homeBtn.getParent();
// The home button is an ImageView inside a FrameLayout
if (homeBtnContainer instanceof FrameLayout) {
ViewGroup containerParent = (ViewGroup) homeBtnContainer.getParent();
if (containerParent instanceof LinearLayout) {
// This view also contains the title text, set the whole view as clickable
((LinearLayout) containerParent).setOnClickListener(dismissDialogClickListener);
} else {
// Just set it on the home button
((FrameLayout) homeBtnContainer).setOnClickListener(dismissDialogClickListener);
}
} else {
homeBtn.setOnClickListener(dismissDialogClickListener);
}
}
}
}
}