/* * Copyright (C) 2016 Simon Vig Therkildsen * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.simonvt.cathode.ui.person; import android.app.Activity; import android.os.Bundle; import android.support.v4.app.LoaderManager; import android.support.v4.content.Loader; import java.util.List; import net.simonvt.cathode.R; import net.simonvt.cathode.api.enumeration.Department; import net.simonvt.cathode.ui.LibraryType; import net.simonvt.cathode.ui.NavigationListener; import net.simonvt.cathode.ui.fragment.ToolbarGridFragment; import net.simonvt.cathode.util.Ids; public class PersonCreditsFragment extends ToolbarGridFragment<PersonCreditsAdapter.ViewHolder> implements PersonCreditsAdapter.OnCreditClickListener { private static final String TAG = "net.simonvt.cathode.ui.person.CreditsFragment"; private static final String ARG_PERSON_ID = "net.simonvt.cathode.ui.person.CreditsFragment.personId"; private static final String ARG_DEPARTMENT = "net.simonvt.cathode.ui.person.CreditsFragment.department"; private static final int LOADER_PERSON = 1; long personId; private Department department; private PersonCreditsAdapter adapter; private NavigationListener navigationListener; public static String getTag(long personId) { return TAG + "/" + personId + "/" + Ids.newId(); } public static Bundle getArgs(long personId, Department department) { Bundle args = new Bundle(); args.putLong(ARG_PERSON_ID, personId); args.putSerializable(ARG_DEPARTMENT, department); return args; } @Override public void onAttach(Activity activity) { super.onAttach(activity); navigationListener = (NavigationListener) activity; } @Override public void onCreate(Bundle inState) { super.onCreate(inState); Bundle args = getArguments(); personId = args.getLong(ARG_PERSON_ID); department = (Department) args.getSerializable(ARG_DEPARTMENT); switch (department) { case CAST: setTitle(R.string.person_department_cast); break; case PRODUCTION: setTitle(R.string.person_department_production); break; case ART: setTitle(R.string.person_department_art); break; case CREW: setTitle(R.string.person_department_crew); break; case COSTUME_AND_MAKEUP: setTitle(R.string.person_department_costume_makeup); break; case DIRECTING: setTitle(R.string.person_department_directing); break; case WRITING: setTitle(R.string.person_department_writing); break; case SOUND: setTitle(R.string.person_department_sound); break; case CAMERA: setTitle(R.string.person_department_camera); break; } getLoaderManager().initLoader(LOADER_PERSON, null, personLoader); } @Override protected int getColumnCount() { return getResources().getInteger(R.integer.personCreditColumns); } @Override public void onShowClicked(long showId, String title, String overview) { navigationListener.onDisplayShow(showId, title, overview, LibraryType.WATCHED); } @Override public void onMovieClicked(long movieId, String title, String overview) { navigationListener.onDisplayMovie(movieId, title, overview); } private void setCredits(List<PersonCredit> credits) { if (adapter == null) { adapter = new PersonCreditsAdapter(credits, this); setAdapter(adapter); } else { adapter.setCredits(credits); } } private LoaderManager.LoaderCallbacks<Person> personLoader = new LoaderManager.LoaderCallbacks<Person>() { @Override public Loader<Person> onCreateLoader(int id, Bundle args) { return new PersonLoader(getContext(), personId); } @Override public void onLoadFinished(Loader<Person> loader, Person data) { switch (department) { case CAST: setCredits(data.getCredits().getCast()); break; case PRODUCTION: setCredits(data.getCredits().getProduction()); break; case ART: setCredits(data.getCredits().getArt()); break; case CREW: setCredits(data.getCredits().getCrew()); break; case COSTUME_AND_MAKEUP: setCredits(data.getCredits().getCostumeAndMakeUp()); break; case DIRECTING: setCredits(data.getCredits().getDirecting()); break; case WRITING: setCredits(data.getCredits().getWriting()); break; case SOUND: setCredits(data.getCredits().getSound()); break; case CAMERA: setCredits(data.getCredits().getCamera()); break; } } @Override public void onLoaderReset(Loader<Person> loader) { } }; }