package br.com.while42.rpgcs.activity; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.FragmentTransaction; import android.util.Log; import br.com.while42.rpgcs.R; import br.com.while42.rpgcs.activity.fragment.EditAbilities; import br.com.while42.rpgcs.activity.fragment.EditCharacteristics; import br.com.while42.rpgcs.activity.fragment.EditClasses; import br.com.while42.rpgcs.model.character.Abilities; import br.com.while42.rpgcs.model.character.Characteristics; import br.com.while42.rpgcs.model.character.RpgCharacter; import br.com.while42.rpgcs.model.character.RpgClass; import br.com.while42.rpgcs.model.character.Skills; import br.com.while42.rpgcs.persist.DataManager; import com.actionbarsherlock.app.SherlockFragmentActivity; import com.actionbarsherlock.view.Menu; import com.actionbarsherlock.view.MenuItem; import com.actionbarsherlock.view.MenuItem.OnMenuItemClickListener; public class EditRpgCharacter extends SherlockFragmentActivity { private RpgCharacter rpgCharacter; private EditCharacteristics editCharacteristics; private EditClasses editClasses; private EditAbilities editAbilities; private EditSkills editSkills; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_edit_character); Log.d("ACTIVITY", "EditRpgCharacter"); rpgCharacter = new RpgCharacterIntentUtils().getSerializeRpgCharacter(getIntent()); createFragments(); } @Override protected void onResume() { super.onResume(); } @Override public boolean onCreateOptionsMenu(Menu menu) { getSupportMenuInflater().inflate(R.menu.edit_options, menu); // ActionBar actionBar = getSupportActionBar(); MenuItem itemSave = menu.findItem(R.id_menu_edit.save); itemSave.setOnMenuItemClickListener(new OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { save(); Intent intent = EditRpgCharacter.this.getIntent(); new RpgCharacterIntentUtils().putSerializeRpgCharacter(intent, rpgCharacter); setResult(RESULT_OK, intent); finish(); return false; } }); return super.onCreateOptionsMenu(menu); } private void createFragments() { if (rpgCharacter != null) { // Edit character sheet editCharacteristics = new EditCharacteristics(rpgCharacter.getCharacteristics()); editClasses = new EditClasses(rpgCharacter.getRpgClasses()); editAbilities = new EditAbilities(rpgCharacter.getAbilities()); editSkills = new EditSkills(rpgCharacter.getSkills()); } else { // New character sheet editCharacteristics = new EditCharacteristics(); editClasses = new EditClasses(); editAbilities = new EditAbilities(); editSkills = new EditSkills(); } FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); transaction.replace(R.id_edit.fragment_characteristics, editCharacteristics, EditCharacteristics.class.getCanonicalName()); transaction.replace(R.id_edit.fragment_classes, editClasses, EditClasses.class.getCanonicalName()); transaction.replace(R.id_edit.fragment_abilities, editAbilities, EditAbilities.class.getCanonicalName()); transaction.replace(R.id_edit.fragment_skills, editSkills, EditSkills.class.getCanonicalName()); transaction.commit(); } private void save() { // TODO: Seria interessante q todos os fragments tivessem uma mesma // interface e que aqui so iterasse em uma list chamando o mesmo metodo // de todos os fragments. Characteristics characteristics = editCharacteristics.saveCharacteristics(); RpgClass rpgClasses = editClasses.saveClasses(); Abilities abilities = editAbilities.saveAbilities(); Skills skills = editSkills.saveSkills(); if (rpgCharacter == null) { rpgCharacter = new RpgCharacter(characteristics); } rpgCharacter.setCharacteristics(characteristics); rpgCharacter.setRpgClasses(rpgClasses); rpgCharacter.setAbilities(abilities); rpgCharacter.setSkills(skills); // Persist in database DataManager dataManager = new DataManager(this); Long id = dataManager.saveRpgCharacter(rpgCharacter); Log.d("DEBUG", "Saved Id: " + id); } }