package com.florianmski.tracktoid.ui.fragments; import android.database.Cursor; import android.os.Bundle; import android.support.v4.app.Fragment; import com.florianmski.tracktoid.R; import com.florianmski.tracktoid.TraktoidTheme; import com.florianmski.tracktoid.adapters.lists.RecyclerDrawerAdapter; import com.florianmski.tracktoid.data.WShow; import com.florianmski.tracktoid.data.database.ProviderSchematic; import com.florianmski.tracktoid.data.database.columns.ShowColumns; import com.florianmski.tracktoid.image.ImagesTest; import com.florianmski.tracktoid.rx.observables.CursorObservable; import com.florianmski.tracktoid.ui.fragments.base.DrawerFragment; import com.florianmski.tracktoid.ui.fragments.calendar.CalendarFragment; import com.florianmski.tracktoid.ui.fragments.library.LibrarySwitchFragment; import com.florianmski.tracktoid.ui.fragments.progress.ProgressFragment; import com.florianmski.tracktoid.ui.fragments.recommendations.RecommendationSwitchFragment; import com.florianmski.tracktoid.ui.fragments.search.SearchSwitchFragment; import com.florianmski.tracktoid.ui.fragments.trending.TrendingSwitchFragment; import com.florianmski.tracktoid.ui.widgets.Placeholder; import rx.Observable; import rx.Observer; import rx.Subscription; import rx.android.observables.AndroidObservable; import rx.schedulers.Schedulers; public class DrawerTraktFragment extends DrawerFragment implements Observer<WShow> { private Subscription subscription; public static DrawerTraktFragment newInstance() { return new DrawerTraktFragment(); } @Override protected RecyclerDrawerAdapter createAdapter(RecyclerDrawerAdapter adapter) { return adapter .addItem(R.id.drawer_library, "Library", R.drawable.ic_class_white_24dp) .addItem(R.id.drawer_progress, "Progress", R.drawable.ic_poll_white_24dp) .addItem(R.id.drawer_calendar, "Calendar", R.drawable.ic_event_white_24dp) .addItem(R.id.drawer_recommendations, "Recommendations", R.drawable.ic_thumb_up_white_24dp) .addSeparator() .addSubheader("Community") .addItem(R.id.drawer_trending, "Trending", R.drawable.ic_whatshot_white_24dp) .addItem(R.id.drawer_search, "Search", R.drawable.ic_search_white_24dp); } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); subscription = AndroidObservable.bindFragment(this, Observable.create(new CursorObservable<WShow>( getActivity(), ProviderSchematic.Shows.CONTENT_URI, ProviderSchematic.Shows.PROJECTION, null, null, ShowColumns.LAST_WATCHED_AT + " DESC LIMIT 1" ) { @Override protected WShow toObject(Cursor cursor) { return WShow.unpack(cursor); } }).subscribeOn(Schedulers.io())).subscribe(this); } @Override public void onDestroy() { super.onDestroy(); subscription.unsubscribe(); } @Override protected void changeFragment(int position) { // replace the main content by replacing fragments Fragment f; switch(getAdapter().getItem2(position).id) { case R.id.drawer_library: f = LibrarySwitchFragment.newInstance(); break; // case Profile: // f = PagerUserFragment.newInstance(TraktoidPrefs.INSTANCE.getUsername()); // break; case R.id.drawer_progress: f = ProgressFragment.newInstance(); break; // case Network: // f = NetworkFragment.newInstance(TraktoidPrefs.INSTANCE.getUsername()); // break; case R.id.drawer_calendar: f = CalendarFragment.newInstance(); break; case R.id.drawer_trending: f = TrendingSwitchFragment.newInstance(); break; case R.id.drawer_recommendations: f = RecommendationSwitchFragment.newInstance(); break; case R.id.drawer_search: f = SearchSwitchFragment.newInstance(); break; // case EraseDB: // boolean delete = deleteDatabase(DatabaseSchematic.FILE_NAME); // if(delete) // Toast.makeText(HomeActivity.this, "Database deleted!", Toast.LENGTH_SHORT).show(); // break; // case SaveDB: // Observable<Object> o = Observable.create(new Observable.OnSubscribe<Object>() // { // @Override // public void call(Subscriber<? super Object> subscriber) // { // try // { // Utils.writeDBToSD(HomeActivity.this, DatabaseSchematic.FILE_NAME); // } // catch (IOException e) // { // subscriber.onError(e); // } // // subscriber.onCompleted(); // } // }); // // AndroidObservable // .bindActivity(this, o.subscribeOn(Schedulers.io())) // .subscribe(new Observer<Object>() // { // @Override // public void onCompleted() // { // Toast.makeText(HomeActivity.this, "Database saved to sdcard!", Toast.LENGTH_SHORT).show(); // } // // @Override // public void onError(Throwable e) // { // e.printStackTrace(); // } // // @Override // public void onNext(Object o) {} // }); // break; default: f = EmptyFragment.newInstance(); break; } if(f != null) { getActivity().getSupportFragmentManager() .beginTransaction() .replace(R.id.content_frame, f) .commit(); } } @Override protected int getDefaultId() { return R.id.drawer_library; } @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(WShow wShow) { if(wShow != null) ImagesTest.load(getActivity(), tivFanart, wShow.getTraktItem().images) .placeholder(new Placeholder(getActivity(), TraktoidTheme.DEFAULT).getDrawable()) .into(tivFanart); } }