package net.udrunk; import java.util.Observable; import net.udrunk.adapters.PlaceAdapater; import net.udrunk.domain.Place; import net.udrunk.model.Model; import android.content.Intent; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.ListView; import android.widget.ProgressBar; import com.actionbarsherlock.view.Menu; import com.actionbarsherlock.view.MenuInflater; import com.actionbarsherlock.view.MenuItem; import com.googlecode.androidannotations.annotations.AfterViews; import com.googlecode.androidannotations.annotations.Bean; import com.googlecode.androidannotations.annotations.Click; import com.googlecode.androidannotations.annotations.EFragment; import com.googlecode.androidannotations.annotations.ItemClick; import com.googlecode.androidannotations.annotations.Trace; import com.googlecode.androidannotations.annotations.UiThread; import com.googlecode.androidannotations.annotations.ViewById; @EFragment(R.layout.places) public class PlacesFragment extends CommonFragment { @ViewById ListView listView; @Bean public PlaceAdapater adapter; @ViewById public ProgressBar empty; @ViewById(R.id.bnt_getplaces) public Button getPlacesButton; @Trace @AfterViews public void afterViews() { setRetainInstance(true); setHasOptionsMenu(true); updatePlaces(); } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.places_menu, menu); super.onCreateOptionsMenu(menu, inflater); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.map_item_menu: Intent intent = new Intent(getActivity(), LocationActivity_.class); startActivity(intent); return true; } return (super.onOptionsItemSelected(item)); } @UiThread void updatePlaces() { Log.d("updateplaces", model == null ? "null":"pas null"); if (model != null) { adapter.updateItems(model.getPlaces()); listView.setAdapter(adapter); updateProgress(); } } @ItemClick public void listViewItemClicked(Place place) { if (getActivity() instanceof ShareActivity) { ((ShareActivity) getActivity()).showShareFragment(place); } else { Intent intent = new Intent(getActivity(), PlaceDetailsActivity_.class); intent.putExtra("place_extra", place); startActivity(intent); } } @Click(R.id.bnt_getplaces) protected void retryClicked() { model.retrievePlaces(); } @Trace public void updateProgress() { if (model != null) { if (model.isPlacesLoading()) { Log.d("updateprogress", "1"); getPlacesButton.setVisibility(View.GONE); empty.setVisibility(View.VISIBLE); } else if (model.getPlaces() == null || model.getPlaces().size() == 0) { Log.d("updateprogress", "2"); getPlacesButton.setVisibility(View.VISIBLE); empty.setVisibility(View.GONE); } else { Log.d("updateprogress", "3"); getPlacesButton.setVisibility(View.GONE); empty.setVisibility(View.GONE); } } } @Override public void update(Observable observable, Object data) { if (data.equals(Model.PLACES_UPDATING)) { updateProgress(); } if (data.equals(Model.PLACES_UPDATED)) { updatePlaces(); } } }