123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- package de.tudarmstadt.informatik.hostage.ui2.fragment;
- import android.app.ActionBar;
- import android.content.Context;
- import android.content.Intent;
- import android.content.SharedPreferences;
- import android.os.Bundle;
- import android.preference.EditTextPreference;
- import android.preference.Preference;
- import android.preference.PreferenceFragment;
- import android.preference.PreferenceManager;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.widget.LinearLayout;
- import de.tudarmstadt.informatik.hostage.R;
- import de.tudarmstadt.informatik.hostage.dao.ProfileManager;
- import de.tudarmstadt.informatik.hostage.model.Profile;
- /**
- * @author Alexander Brakowski
- * @created 08.02.14 23:39
- */
- public class ProfileEditFragment extends PreferenceFragment implements
- SharedPreferences.OnSharedPreferenceChangeListener {
- private LayoutInflater mInflater;
- @Override
- public void onCreate(Bundle savedInstanceState){
- getActivity().getActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
- super.onCreate(savedInstanceState);
- mInflater = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- View actionBarButtons = mInflater.inflate(R.layout.actionbar_donebar, new LinearLayout(getActivity()), false);
- getActivity().getActionBar().setCustomView(actionBarButtons);
- View doneButton = actionBarButtons.findViewById(R.id.action_done);
- View cancelButton = actionBarButtons.findViewById(R.id.action_cancel);
- doneButton.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
- ProfileManager pmanager = ProfileManager.getInstance();
- Profile profile = getProfile();
- boolean createNew = false;
- if(!profile.isEditable()){
- profile = profile.cloneProfile();
- profile.editable = true;
- createNew = true;
- }
- profile.text = prefs.getString("pref_profile_general_name", profile.text);
- if(createNew){
- profile.id = -1;
- pmanager.addProfile(profile);
- }
- getActivity().finish();
- }
- });
- cancelButton.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- getActivity().finish();
- }
- });
- Profile profile = getProfile();
- SharedPreferences.Editor prefs = PreferenceManager.getDefaultSharedPreferences(getActivity()).edit();
- if(profile != null){
- prefs.putString("pref_profile_general_name", profile.text);
- prefs.commit();
- }
- addPreferencesFromResource(R.xml.profile_preferences);
- findPreference("pref_profile_general_name").setSummary(profile.text);
- }
- public Profile getProfile(){
- ProfileManager pmanager = ProfileManager.getInstance();
- Intent intent = getActivity().getIntent();
- int profile_id = intent.getIntExtra("profile_id", -1);
- if(profile_id != -1){
- return pmanager.getProfile(profile_id);
- }
- return null;
- }
- @Override
- public void onResume() {
- super.onResume();
- getPreferenceManager().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
- }
- @Override
- public void onPause() {
- getPreferenceManager().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
- super.onPause();
- }
- /**
- * Called when a shared preference is changed, added, or removed. This
- * may be called even if a preference is set to its existing value.
- *
- * <p>This callback will be run on your main thread.
- *
- * @param sharedPreferences The {@link android.content.SharedPreferences} that received
- * the change.
- * @param key The key of the preference that was changed, added, or
- */
- @Override
- public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
- Preference p = findPreference(key);
- if(p instanceof EditTextPreference){
- p.setSummary(sharedPreferences.getString(key, ""));
- }
- }
- }
|