package com.florianmski.tracktoid.ui.fragments.traktitems; import android.database.Cursor; import android.os.Bundle; import android.view.View; import android.widget.TextView; import com.florianmski.tracktoid.R; import com.florianmski.tracktoid.TraktoidTheme; import com.florianmski.tracktoid.data.WMovie; import com.florianmski.tracktoid.data.database.ProviderSchematic; import com.florianmski.tracktoid.rx.observables.CursorObservable; import com.florianmski.tracktoid.trakt.CheckinManager; import com.florianmski.tracktoid.trakt.TraktManager; import com.florianmski.tracktoid.trakt.TraktSender; import com.florianmski.tracktoid.ui.activities.CommentsActivity; import com.florianmski.tracktoid.utils.DateHelper; import com.florianmski.tracktoid.utils.DbHelper; import com.uwetrottmann.trakt.v2.entities.Movie; import com.uwetrottmann.trakt.v2.entities.MovieCheckinResponse; import com.uwetrottmann.trakt.v2.enums.Extended; import rx.Observable; import rx.functions.Action1; import rx.functions.Func1; public class MovieFragment extends MediaBaseFragment<WMovie, MovieCheckinResponse> { private TextView tvTagline; public MovieFragment() {} public static MovieFragment newInstance(String id) { MovieFragment f = new MovieFragment(); Bundle args = getBundle(id); f.setArguments(args); return f; } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); } @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); tvTagline = (TextView) view.findViewById(R.id.textViewTagline); } @Override public void launchCommentActivity() { CommentsActivity.launchMovie(getActivity(), id); } @Override public TraktSender.Builder addItemToBuilder(TraktSender.Builder builder) { return builder.movie(item.getTraktItem()); } @Override public Observable<WMovie> getDownloadAndInsertItemObservable() { return Observable.just(item).doOnNext(new Action1<WMovie>() { @Override public void call(WMovie wMovie) { DbHelper.insertMovie(getActivity(), wMovie.getTraktItem()); } }); } @Override public Observable<MovieCheckinResponse> getCheckinObservable() { Movie movie = item.getTraktItem(); final Observable<MovieCheckinResponse> observable = CheckinManager.getInstance().checkinMovie(getActivity(), movie.ids.trakt, movie.title, movie.runtime); Observable<MovieCheckinResponse> finalObservable = observable; if(!item.isLocal()) { finalObservable = getDownloadAndInsertItemObservable().flatMap(new Func1<WMovie, Observable<MovieCheckinResponse>>() { @Override public Observable<MovieCheckinResponse> call(WMovie wMovie) { return observable; } }); } return finalObservable; } @Override public void refreshView(WMovie item) { this.item = item; final Movie movie = item.getTraktItem(); setSubtitle(String.valueOf(movie.year)); if(movie.tagline != null && !movie.tagline.isEmpty()) { tvTagline.setVisibility(View.VISIBLE); tvTagline.setText("\"" + movie.tagline + "\""); } else tvTagline.setVisibility(View.GONE); tlInfos.removeAllViews(); addInfo("Runtime", DateHelper.getRuntime(movie.runtime)); addInfo("Released", DateHelper.getDate(getActivity(), movie.released)); Double rating = item.getTraktItem().rating; if(rating != null && item.getTraktItem().votes > 0) addInfo("Ratings", String.format("%.01f/10", rating)); addInfo("Certification", movie.certification); refreshGeneralView(item.getTraktBase()); getActionBar().setTitle(movie.title); if(!CheckinManager.getInstance().checkinInProgress()) { fab.setVisibility(View.VISIBLE); fab.show(true); } } @Override public String getDateText(boolean invalidTime) { if(invalidTime) return "Unknown release date"; else return DateHelper.getDate(getActivity(), item.getTraktItem().released); } @Override public WMovie getTraktObject() { Movie movie = TraktManager.getInstance().movies().summary(id, Extended.FULLIMAGES); return new WMovie(movie); } @Override public CursorObservable<WMovie> getCursorObservable() { return new CursorObservable<WMovie>( getActivity(), ProviderSchematic.Movies.withId(id), ProviderSchematic.Movies.PROJECTION, null, null, null) { @Override protected WMovie toObject(Cursor cursor) { return WMovie.unpack(cursor); } }; } @Override public TraktoidTheme getTheme() { return TraktoidTheme.MOVIE; } }