package com.adamnickle.deck;
import android.os.Bundle;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.PreferenceFragment;
import android.preference.PreferenceManager;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import com.adamnickle.deck.Game.DeckSettings;
public class DeckSettingsActivity extends ActionBarActivity
{
@Override
protected void onCreate( Bundle savedInstanceState )
{
super.onCreate( savedInstanceState );
setContentView( R.layout.content );
getSupportActionBar().setDisplayHomeAsUpEnabled( true );
getFragmentManager()
.beginTransaction()
.replace( R.id.content, new DeckPreferenceFragment() )
.commit();
}
public static class DeckPreferenceFragment extends PreferenceFragment implements Preference.OnPreferenceChangeListener
{
@Override
public void onCreate( Bundle savedInstanceState )
{
super.onCreate( savedInstanceState );
addPreferencesFromResource( R.xml.deck_settings_preferences );
setHasOptionsMenu( true );
setRetainInstance( true );
bindPreferenceSummaryToValue( findPreference( DeckSettings.PLAYER_NAME ) );
bindPreferenceSummaryToValue( findPreference( DeckSettings.CARD_BACK ) );
}
private void bindPreferenceSummaryToValue( Preference preference )
{
preference.setOnPreferenceChangeListener( this );
this.onPreferenceChange( preference,
PreferenceManager
.getDefaultSharedPreferences( preference.getContext() )
.getString( preference.getKey(), "" ) );
}
@Override
public boolean onPreferenceChange( Preference preference, Object value )
{
String stringValue = value.toString();
if( preference instanceof ListPreference )
{
ListPreference listPreference = (ListPreference) preference;
int index = listPreference.findIndexOfValue( stringValue );
preference.setSummary( index >= 0 ? listPreference.getEntries()[ index ].toString() : null );
}
else
{
preference.setSummary( stringValue );
}
return true;
}
@Override
public void onCreateOptionsMenu( Menu menu, MenuInflater inflater )
{
inflater.inflate( R.menu.deck_settings, menu );
menu.findItem( R.id.done ).setIcon( Icons.getDoneActionIcon( getActivity() ) );
}
@Override
public boolean onOptionsItemSelected( MenuItem item )
{
switch( item.getItemId() )
{
case R.id.done:
getActivity().finish();
return true;
default:
return super.onOptionsItemSelected( item );
}
}
}
}