package com.arcao.trackables.ui.fragment.detail; import android.os.Bundle; import android.view.View; import android.widget.ImageView; import android.widget.TextView; import com.arcao.geocaching.api.data.Trackable; import com.arcao.trackables.R; import com.arcao.trackables.data.service.DataSource; import com.arcao.trackables.data.service.TrackableService; import com.arcao.trackables.exception.ExceptionHandler; import com.arcao.trackables.internal.rx.AndroidSchedulerTransformer; import com.squareup.picasso.Picasso; import javax.inject.Inject; import butterknife.ButterKnife; import butterknife.InjectView; import rx.android.app.AppObservable; import timber.log.Timber; public class TrackableDetailFragment extends AbstractTrackableFragment { @Inject protected TrackableService trackableService; @Inject protected ExceptionHandler exceptionHandler; @Inject protected Picasso picasso; @InjectView(R.id.image) protected ImageView imageView; @InjectView(R.id.title) protected TextView titleView; @InjectView(R.id.tracking_code) protected TextView trackingCodeView; @InjectView(R.id.description) protected TextView descriptionView; @InjectView(R.id.goal) protected TextView goalView; public static TrackableDetailFragment newInstance(String trackableCode) { TrackableDetailFragment fragment = new TrackableDetailFragment(); fragment.setTrackableCode(trackableCode); return fragment; } @Override protected int getLayout() { return R.layout.fragment_trackable_detail; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); component().inject(this); } @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); ButterKnife.inject(this, view); AppObservable.bindFragment(this, trackableService.getTrackable(getTrackableCode(), DataSource.REMOTE_IF_NECESSARY)) .compose(AndroidSchedulerTransformer.get()) .subscribe(this::showTrackableDetail, throwable -> { startActivity(exceptionHandler.handle(throwable)); getActivity().finish(); }); } public void showTrackableDetail(Trackable trackable) { getActivity().setTitle(trackable.getName()); titleView.setText(trackable.getName()); trackingCodeView.setText(trackable.getTrackingNumber()); descriptionView.setText(trackable.getDescription()); goalView.setText(trackable.getGoal()); if (trackable.getImages().size() > 0) { Timber.d("Loading image: %s", trackable.getImages().get(0).getMobileUrl()); picasso.load(trackable.getImages().get(0).getMobileUrl()).into(imageView); } else { imageView.setVisibility(View.GONE); } } }