package com.spacemangames.biomatcher; import android.content.Intent; import android.view.View; import com.actionbarsherlock.app.SherlockFragment; import com.actionbarsherlock.internal.widget.IcsAdapterView; import com.actionbarsherlock.internal.widget.IcsAdapterView.OnItemSelectedListener; import com.googlecode.androidannotations.annotations.Click; import com.googlecode.androidannotations.annotations.EFragment; import com.googlecode.androidannotations.annotations.FragmentById; import com.googlecode.androidannotations.annotations.ViewById; import com.spacemangames.biomatcher.controller.ApplicationPrefs_; import com.spacemangames.biomatcher.controller.IProfileUpdateListener; import com.spacemangames.biomatcher.controller.ProfileManager; import com.spacemangames.biomatcher.data.Profile; import com.spacemangames.biomatcher.view.ProfileSpinner; @EFragment(R.layout.fragment_matcher_setup) public class MatcherSetupFragment extends SherlockFragment implements IProfileUpdateListener { @FragmentById(R.id.resultFragment) protected BioMatchResultCombinedFragment resultFragment; @ViewById(R.id.spinner1) protected ProfileSpinner spinner1; @ViewById(R.id.spinner2) protected ProfileSpinner spinner2; protected final class OnProfileSelectedListener implements OnItemSelectedListener { private final IBioMatchResultPresenter fragment; private OnProfileSelectedListener(IBioMatchResultPresenter fragment) { this.fragment = fragment; } @Override public void onItemSelected(IcsAdapterView<?> parent, View view, int position, long id) { fragment.setProfile1(spinner1.getSelectedProfile()); fragment.setProfile2(spinner2.getSelectedProfile()); } @Override public void onNothingSelected(IcsAdapterView<?> parent) { fragment.setProfile1(null); fragment.setProfile2(null); } } public static final String PROFILE_ONE = "profile_one"; public static final String PROFILE_TWO = "profile_two"; private ApplicationPrefs_ applicationPrefs; @Click(R.id.buttonGo) protected void onMatchClicked() { Intent intent = new Intent(getActivity(), BioMatcherMatchResultActivity_.class); intent.putExtra(PROFILE_ONE, spinner1.getSelectedProfile()); intent.putExtra(PROFILE_TWO, spinner2.getSelectedProfile()); startActivity(intent); } @Override public void onResume() { super.onResume(); loadPrefs(); ProfileManager.addListener(this); } @Override public void onPause() { super.onPause(); ProfileManager.removeListener(this); applicationPrefs.profile1().put(spinner1.getSelectedId()); applicationPrefs.profile2().put(spinner2.getSelectedId()); } private void loadPrefs() { applicationPrefs = new ApplicationPrefs_(getActivity()); if (applicationPrefs.profile1().exists()) { spinner1.setSelectionById(applicationPrefs.profile1().get()); } if (applicationPrefs.profile2().exists()) { spinner2.setSelectionById(applicationPrefs.profile2().get()); } if (resultFragment != null) { setResultFragment(resultFragment); resultFragment.setProfile1(spinner1.getSelectedProfile()); resultFragment.setProfile2(spinner2.getSelectedProfile()); } } @Override public void profileAdded(Profile profile) { spinner1.getProfileAdapter().add(profile); spinner2.getProfileAdapter().add(profile); } @Override public void profileRemoved(Profile profile) { spinner1.getProfileAdapter().remove(profile); spinner2.getProfileAdapter().remove(profile); } @Override public void profileEdited(Profile profile) { profileRemoved(profile); profileAdded(profile); } public void setResultFragment(final IBioMatchResultPresenter fragment) { spinner1.setOnItemSelectedListener(new OnProfileSelectedListener(fragment)); spinner2.setOnItemSelectedListener(new OnProfileSelectedListener(fragment)); } public void setVisible(boolean visible) { if (resultFragment != null) { resultFragment.setVisible(visible); } } }