/*
* Copyright (C) 2014 Michell Bak
*
* 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 com.miz.mizuu;
import android.content.Context;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.widget.ProgressBar;
import android.widget.Toast;
import com.astuetz.PagerSlidingTabStrip;
import com.miz.base.MizActivity;
import com.miz.functions.IntentKeys;
import com.miz.functions.MizLib;
import com.miz.mizuu.fragments.CollectionCoverSearchFragment;
import com.miz.mizuu.fragments.CoverSearchFragment;
import com.miz.mizuu.fragments.FanartSearchFragment;
import com.miz.utils.ViewUtils;
public class MovieCoverFanartBrowser extends MizActivity {
private String mTmdbId, mCollectionId, mBaseUrl = "", mJson = "", mCollection = "", mTmdbApiKey;
private ViewPager mViewPager;
private ProgressBar mProgressBar;
private PagerSlidingTabStrip mTabs;
private int mToolbarColor;
@Override
protected int getLayoutResource() {
return R.layout.viewpager_with_toolbar_and_tabs;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MizuuApplication.setupTheme(this);
if (MizLib.hasLollipop())
getSupportActionBar().setElevation(0);
mTmdbId = getIntent().getExtras().getString("tmdbId");
mCollectionId = getIntent().getExtras().getString("collectionId");
mToolbarColor = getIntent().getExtras().getInt(IntentKeys.TOOLBAR_COLOR);
mTmdbApiKey = MizLib.getTmdbApiKey(this);
mProgressBar = (ProgressBar) findViewById(R.id.progressbar);
mProgressBar.setVisibility(View.VISIBLE);
mViewPager = (ViewPager) findViewById(R.id.awesomepager);
mViewPager.setOffscreenPageLimit(2);
mViewPager.setPageMargin(MizLib.convertDpToPixels(this, 16));
mTabs = (PagerSlidingTabStrip) findViewById(R.id.tabs);
mTabs.setVisibility(View.GONE);
if (savedInstanceState != null) {
mJson = savedInstanceState.getString("json", "");
mBaseUrl = savedInstanceState.getString("baseUrl");
mCollection = savedInstanceState.getString("collection");
setupActionBarStuff();
mViewPager.setCurrentItem(savedInstanceState.getInt("tab", 0));
} else {
new MovieLoader(getApplicationContext()).execute(mTmdbId, mCollectionId);
}
}
@Override
public void onStart() {
super.onStart();
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
ViewUtils.setToolbarAndStatusBarColor(getSupportActionBar(), getWindow(), mToolbarColor);
mTabs.setBackgroundColor(mToolbarColor);
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("tab", mViewPager.getCurrentItem());
outState.putString("json", mJson);
outState.putString("baseUrl", mBaseUrl);
outState.putString("collection", mCollection);
}
private class PagerAdapter extends FragmentPagerAdapter {
private final String[] TITLES = {getString(R.string.coverart), getString(R.string.backdrop), getString(R.string.collectionart)};
public PagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public CharSequence getPageTitle(int position) {
return TITLES[position];
}
@Override
public Fragment getItem(int index) {
switch (index) {
case 0:
return CoverSearchFragment.newInstance(mTmdbId, mJson, mBaseUrl);
case 1:
return FanartSearchFragment.newInstance(mTmdbId, mJson, mBaseUrl);
default:
return CollectionCoverSearchFragment.newInstance(mCollectionId, mCollection, mBaseUrl);
}
}
@Override
public int getCount() {
if (!MizLib.isValidTmdbId(mCollectionId))
return 2;
return 3;
}
}
private class MovieLoader extends AsyncTask<Object, Object, String> {
private Context mContext;
public MovieLoader(Context context) {
mContext = context;
}
@Override
protected String doInBackground(Object... params) {
try {
mBaseUrl = MizLib.getTmdbImageBaseUrl(mContext);
mJson = MizLib.getJSONObject(mContext, "https://api.themoviedb.org/3/movie/" + params[0] + "/images?api_key=" + mTmdbApiKey).toString();
if (MizLib.isValidTmdbId(mCollectionId)) {
mCollection = MizLib.getJSONObject(mContext, "https://api.themoviedb.org/3/collection/" + params[1] + "/images?api_key=" + mTmdbApiKey).toString();
}
return mJson;
} catch (Exception e) {} // If the fragment is no longer attached to the Activity
return null;
}
@Override
protected void onPostExecute(String result) {
if (result != null) {
setupActionBarStuff();
} else {
Toast.makeText(getApplicationContext(), R.string.errorSomethingWentWrong, Toast.LENGTH_SHORT).show();
}
}
}
private void setupActionBarStuff() {
if (!MizLib.isPortrait(getApplicationContext()))
findViewById(R.id.layout).setBackgroundResource(0);
mProgressBar.setVisibility(View.GONE);
mViewPager.setAdapter(new PagerAdapter(getSupportFragmentManager()));
mTabs.setViewPager(mViewPager);
mTabs.setVisibility(View.VISIBLE);
}
}