package pontezit.android.tilos.com.fragment; import android.content.res.Configuration; import android.graphics.Typeface; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.GridView; import android.widget.ImageView; import android.widget.ListView; import android.widget.ProgressBar; import android.widget.TextView; import android.widget.Toast; import com.androidquery.AQuery; import com.androidquery.callback.AjaxCallback; import com.androidquery.callback.AjaxStatus; import com.squareup.picasso.Picasso; import java.util.ArrayList; import flexjson.JSONDeserializer; import pontezit.android.tilos.com.R; import pontezit.android.tilos.com.activity.MediaPlayerActivity; import pontezit.android.tilos.com.adapter.ContributorAdapter; import pontezit.android.tilos.com.adapter.EpisodeListAdapter; import pontezit.android.tilos.com.alarm.Alarm; import pontezit.android.tilos.com.modell.Author; import pontezit.android.tilos.com.modell.Contributor; import pontezit.android.tilos.com.modell.Episode; import pontezit.android.tilos.com.modell.Show; import pontezit.android.tilos.com.utils.Finals; import pontezit.android.tilos.com.utils.LogHelper; import pontezit.android.tilos.com.utils.PreferencesHelper; public class ShowDetailsFragment extends Fragment{ private TextView title, details; private ProgressBar progressBar; private ListView recentEpisodes; private int showId; private GridView gridView; private MenuItem favorite; private Show show; private boolean isFavorite; private PreferencesHelper preferencesHelper; private ImageView bg; public ShowDetailsFragment(){ return; } @Override public void onActivityCreated(Bundle savedInstanceState){ LogHelper.Log("ShowDetailsFragment; onActivityCreated run", 1); super.onActivityCreated(savedInstanceState); Bundle bundle = getArguments(); if(bundle != null){ showId = bundle.getInt("showId", 0); LogHelper.Log("ShowDetailsFragment; onActivityCreated; showId = " + showId, 1); } preferencesHelper = new PreferencesHelper(Finals.PREFS_FAVORITES, getActivity()); getShowDetails(); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { LogHelper.Log("MediaPlayerFragment; onCreateView running", 1); setHasOptionsMenu(true); View view = inflater.inflate(R.layout.fragment_show_details, container, false); bg = (ImageView) view.findViewById(R.id.bgDetails); if(getActivity().getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) Picasso.with(getActivity()).load("file:///android_asset/bg_show.jpg").fit().rotate(90).into(bg); else Picasso.with(getActivity()).load("file:///android_asset/bg_show.jpg").fit().into(bg); title = (TextView) view.findViewById(R.id.showDetailsTitle); Typeface typeface = Typeface.createFromAsset(getActivity().getAssets(), "title.ttf"); title.setTypeface(typeface); details = (TextView) view.findViewById(R.id.showDetailsDetails); recentEpisodes = (ListView ) view.findViewById(R.id.recentEpisodesList); gridView = (GridView) view.findViewById(R.id.contributorsGrid); progressBar = (ProgressBar) view.findViewById(R.id.showDetailsProgressBar); return view; } @Override public void onStop() { super.onStop(); bg.setImageBitmap(null); bg.destroyDrawingCache(); System.gc(); } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { super.onCreateOptionsMenu(menu, inflater); menu.clear(); inflater.inflate(R.menu.details_menu, menu); favorite = menu.findItem(R.id.menu_item_favorite); return; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch(item.getItemId()) { case android.R.id.home: getActivity().onBackPressed(); return true; case R.id.menu_item_favorite: isFavorite = !isFavorite; if(isFavorite) Toast.makeText(getActivity(), getActivity().getResources().getString(R.string.favorite_marked), Toast.LENGTH_SHORT).show(); setStar(); return true; } return false; } public void getShowDetails(){ LogHelper.Log("getShowDetails; showId = " + showId, 1); AQuery aq = new AQuery(getActivity()); String url = Finals.API_BASE_URL + "show/"+showId; aq.ajax(url, String.class, new AjaxCallback<String>(){ @Override public void callback(String url, String showDetailsString, AjaxStatus status){ if(showDetailsString != null){ show = new JSONDeserializer<Show>().use(null, Show.class) .use("values.contributors", Contributor.class) .use("values.contributors.author", Author.class) .use("values.episodes", Episode.class) .deserialize(showDetailsString); LogHelper.Log("Elmúlt adások: " + show.getEpisodes().size() + "db", 1); EpisodeListAdapter episodeListAdapter = new EpisodeListAdapter((MediaPlayerActivity) getActivity(), show.getEpisodes()); recentEpisodes.setAdapter(episodeListAdapter); progressBar.setVisibility(View.GONE); title.setText(show.getName()); title.setVisibility(View.VISIBLE); String schedulingText = ""; try{ schedulingText = " ("+show.getSchedulingText().get(0)+")"; }catch(NullPointerException e){ LogHelper.Log("schedulingText nullpointerException", 1); } details.setText(show.getDefinition() + schedulingText); details.setVisibility(View.VISIBLE); ContributorAdapter contributorAdapter = new ContributorAdapter(getActivity(), show.getContributors()); gridView.setAdapter(contributorAdapter); isFavorite = preferencesHelper.sp.getBoolean(show.getId()+"", false); setStar(); }else{ LogHelper.Log("getShowDetails error; onFailure; error:"); } } }); } private void setStar(){ if(!isFavorite) favorite.setIcon(R.drawable.star_off); else favorite.setIcon(R.drawable.star_on); if(show != null) preferencesHelper.putBoolean(show.getId()+"", isFavorite); } }