package com.firstbuild.androidapp.paragon.settings; import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.PackageManager; import android.net.Uri; import android.preference.EditTextPreference; import android.preference.ListPreference; import android.preference.Preference; import android.preference.PreferenceFragment; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.MenuItem; import com.afollestad.materialdialogs.MaterialDialog; import com.firstbuild.androidapp.R; import com.firstbuild.androidapp.productmanager.ProductInfo; import com.firstbuild.androidapp.productmanager.ProductManager; public class SettingsActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_settings); android.support.v7.widget.Toolbar toolbar = (android.support.v7.widget.Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); String menu = getIntent().getStringExtra("SelectedMenu"); if(menu.equals("MenuSettings")){ getFragmentManager().beginTransaction().replace(R.id.content_frame, new PreferenceSettings()).commit(); } else{ getFragmentManager().beginTransaction().replace(R.id.content_frame, new PreferenceAbout()).commit(); } } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { // Respond to the action bar's Up button case android.R.id.home: finish(); return true; } return super.onOptionsItemSelected(item); } public static class PreferenceSettings extends PreferenceFragment implements SharedPreferences.OnSharedPreferenceChangeListener { public static final String KEY_PREF_TEMP_UNIT = "pref_temp_unit"; public static final String KEY_PREF_UNIT = "pref_unit"; public static final String KEY_PREF_NAME = "pref_name"; private String TAG = PreferenceSettings.class.getSimpleName(); @Override public void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.pref_settings); ListPreference tempPreference = (ListPreference) findPreference(KEY_PREF_TEMP_UNIT); tempPreference.setSummary(tempPreference.getValue()); ListPreference unitPreference = (ListPreference) findPreference(KEY_PREF_UNIT); unitPreference.setSummary(unitPreference.getValue()); ProductInfo productInfo = ProductManager.getInstance().getCurrent(); if(productInfo != null){ EditTextPreference editTextPref = (EditTextPreference) findPreference(KEY_PREF_NAME); editTextPref.setSummary(productInfo.nickname); } } @Override public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String s) { Log.d(TAG, "onSharedPreferenceChanged " + s); // Set summary to be the user-description for the selected value Preference connectionPref = findPreference(s); String newValue = sharedPreferences.getString(s, ""); connectionPref.setSummary(newValue); if(s.equals("pref_name")){ ProductInfo productInfo = ProductManager.getInstance().getCurrent(); if(productInfo != null){ productInfo.nickname = newValue; ProductManager.getInstance().write(); } else{ Log.d(TAG, "productInfo is Null"); } } } @Override public void onResume() { super.onResume(); getPreferenceManager().getSharedPreferences().registerOnSharedPreferenceChangeListener(this); } @Override public void onPause() { getPreferenceManager().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this); super.onPause(); } } public static class PreferenceAbout extends PreferenceFragment { private String TAG = PreferenceSettings.class.getSimpleName(); public static final String KEY_PREF_VERSION = "pref_version_number"; @Override public void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.pref_about); Preference term_service = findPreference("pref_term_service"); term_service.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { Log.d(TAG, "onPreferenceClick pref_term_service"); new MaterialDialog.Builder(getActivity()) .title(R.string.term_of_service_title) .content(R.string.term_of_service_content) .positiveText(R.string.term_of_service_ok) .show(); return false; } }); Preference opensource_license = findPreference("pref_licenses"); opensource_license.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { Log.d(TAG, "onPreferenceClick pref_term_service"); new MaterialDialog.Builder(getActivity()) .title(R.string.opensource_license_title) .content(R.string.opensource_license_content) .positiveText(R.string.opensource_license_ok) .show(); return false; } }); Preference learnMore = findPreference("pref_learn_more"); learnMore.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { Log.d(TAG, "onPreferenceClick pref_learn_more"); String url = getResources().getString(R.string.url_manual); startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url))); return false; } }); String versionName = ""; try { versionName = getActivity().getPackageManager().getPackageInfo(getActivity().getPackageName(), 0).versionName; } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } Preference version = findPreference(KEY_PREF_VERSION); version.setSummary(versionName); } @Override public void onResume() { super.onResume(); } @Override public void onPause() { super.onPause(); } } }