package com.bdc.ociney.activity;
import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.RotateAnimation;
import android.widget.Toast;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.bdc.ociney.R;
import com.bdc.ociney.database.AccessBaseFavoris;
import com.bdc.ociney.database.BaseFavoris;
import com.bdc.ociney.fragment.TheaterMovieFragment;
import com.bdc.ociney.modele.Movie.Movie;
import com.bdc.ociney.modele.Theater.Theater;
import com.bdc.ociney.task.LoadTheaterMoviesTask;
import com.bdc.ociney.view.CellTheater;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
public class TheaterMovieActivity extends ActionBarActivity implements LoadTheaterMoviesTask.LoadTheaterMoviesTaskCallBack {
//public static Theater theaterStatic;
public static final String THEATER = "theater";
List<Movie> films = new ArrayList<Movie>();
ViewPager viewPager;
FragmentStatePagerAdapter adapter;
ViewGroup theater_view;
Menu menu;
boolean tournerRoulette;
private Theater theater;
Toolbar toolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_list_films_theater);
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayShowTitleEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
toolbar.setTitleTextColor(Color.WHITE);
getSupportActionBar().setHomeAsUpIndicator(getResources().getDrawable(R.drawable.ab_back_mtrl_am_alpha));
try {
Intent intent = getIntent();
String jsonTheater = intent.getStringExtra(THEATER);
Gson gSon = new Gson();
theater = gSon.fromJson(jsonTheater, new TypeToken<Theater>() {
}.getType());
charger();
remplir();
getSupportActionBar().setTitle(theater.getName());
tournerRoulette(true);
new LoadTheaterMoviesTask(this).execute(theater);
viewPager.setAlpha(0f);
viewPager.setPageMargin((int) getResources().getDimensionPixelSize(R.dimen.theater_viewpager_negative_margin));
viewPager.setHorizontalFadingEdgeEnabled(true);
viewPager.setFadingEdgeLength(30);
} catch (Exception e) {
e.printStackTrace();
finish();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
this.menu = menu;
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.threater_menu, menu);
chargerFavoris();
return true;
}
private void chargerFavoris() {
if (theater != null && theater.getCode() != null) {
String code = theater.getCode();
AccessBaseFavoris db = new AccessBaseFavoris(this);
db.open();
if (db.isFavoris(code + "", BaseFavoris.TYPE_FAVORIS_CINEMA)) {
menu.getItem(0).setIcon(R.drawable.ic_favoris_on);
} else {
menu.getItem(0).setIcon(R.drawable.ic_favoris_off);
}
db.close();
}
}
@Override
public boolean onOptionsItemSelected(android.view.MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
super.onBackPressed();
return true;
case R.id.menu_favoris:
AccessBaseFavoris db = new AccessBaseFavoris(this);
db.open();
if (theater != null && theater.getCode() != null) {
String code = theater.getCode();
if (db.isFavoris(code, BaseFavoris.TYPE_FAVORIS_CINEMA)) {
db.deleteFavoris(code, BaseFavoris.TYPE_FAVORIS_CINEMA);
//Toast.makeText(this,"On supprime",Toast.LENGTH_SHORT).show();
} else {
db.insertFavoris(code, BaseFavoris.TYPE_FAVORIS_CINEMA);
//Toast.makeText(this,"On insere",Toast.LENGTH_SHORT).show();
}
}
db.close();
try {
invalidateOptionsMenu();
} catch (Exception e) {
e.printStackTrace();
}
return true;
}
return false;
}
public void charger() {
this.viewPager = (ViewPager) findViewById(R.id.poster_pager);
this.theater_view = (ViewGroup) findViewById(R.id.theater_view);
}
private void remplir() {
View cellTheater = View.inflate(this, R.layout.cell_theater, null);
CellTheater cell = new CellTheater();
cell.construire(this, cellTheater);
cell.construire(theater, 0);
this.theater_view.removeAllViews();
this.theater_view.addView(cellTheater);
cell.afficherEnEntier();
adapter = new FragmentStatePagerAdapter(this.getSupportFragmentManager()) {
HashMap<Integer, Fragment> fragments = new HashMap<Integer, Fragment>();
@Override
public Fragment getItem(int position) {
if (fragments.containsKey(position))
return fragments.get(position);
else {
if (position + 1 < getCount())
getItem(position + 1);//preload
Fragment f = TheaterMovieFragment.newInstance(films.get(position), theater);
fragments.put(position, f);
return f;
}
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
//super.destroyItem(container, position, object);
}
@Override
public int getCount() {
return films.size();
}
};
this.viewPager.setAdapter(adapter);
}
@Override
public void onLoadTheaterMoviesTaskCallBack(List<Movie> movies) {
films.clear();
films.addAll(movies);
adapter.notifyDataSetChanged();
tournerRoulette(false);
AnimatorSet anim = new AnimatorSet().setDuration(500);
anim.playTogether(
ObjectAnimator.ofFloat(viewPager, "alpha", 0f, 1f),
ObjectAnimator.ofFloat(viewPager, "translationX", 500f, 0f)
);
anim.start();
}
protected void tournerRoulette(boolean tourner) {
tournerRoulette(tourner, R.id.placeholder_image_loader);
}
protected void tournerRoulette(boolean tourner, int id) {
final View roulette = findViewById(id);
if (roulette != null) {
if (tourner) {
roulette.setVisibility(View.VISIBLE);
int previousDegrees = 0;
int degrees = 360;
final RotateAnimation animation = new RotateAnimation(previousDegrees, degrees,
Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
animation.setFillEnabled(true);
animation.setFillAfter(true);
animation.setDuration(1500);//Set the duration of the animation to 1 sec.
animation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
if (tournerRoulette) {
roulette.startAnimation(animation);
} else
roulette.animate().alpha(0).start();
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
roulette.startAnimation(animation);
} else {
tournerRoulette = false;
}
}
}
@Override
public void onErreurReseau() {
Toast.makeText(getApplicationContext(), R.string.erreur_reseau, Toast.LENGTH_SHORT).show();
}
}