package com.sabdroidex.activity; import android.os.Build; import android.os.Bundle; import android.os.Message; import android.util.Log; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.GridView; import android.widget.Toast; import com.android.actionbarcompat.ActionBarActivity; import com.sabdroidex.R; import com.sabdroidex.adapters.ReleaseAdapter; import com.sabdroidex.controllers.couchpotato.CouchPotatoController; import com.sabdroidex.data.couchpotato.Movie; import com.sabdroidex.data.couchpotato.MovieReleases; import com.sabdroidex.fragments.dialogs.couchpotato.MovieReleaseDialog; import com.sabdroidex.utils.SABHandler; /** * Created by Marc on 2/06/13. */ public class ReleaseActivity extends ActionBarActivity { private static final String TAG = ReleaseActivity.class.getCanonicalName(); private ReleaseAdapter releaseAdapter; private Movie movie; private MovieReleases movieReleases; // Instantiating the Handler associated with the main thread. private final SABHandler messageHandler = new SABHandler() { @Override public void handleMessage(Message msg) { if (msg.what == CouchPotatoController.MESSAGE.RELEASE_FOR_MOVIE.hashCode()) { try { if (msg.obj instanceof MovieReleases) { ReleaseActivity.this.movieReleases = (MovieReleases) msg.obj; ReleaseActivity.this.updateReleases(); } } catch (Exception e) { Log.e(TAG, e.getLocalizedMessage() == null ? " " : e.getLocalizedMessage()); } } if (msg.what == CouchPotatoController.MESSAGE.RELEASE_DOWNLOAD.hashCode()) { try { if (msg.obj instanceof Boolean) { String text = new StringBuilder().append(getResources().getString(R.string.movie_release_download_status)).append((Boolean) msg.obj ? getResources().getString(R.string.success) : getResources().getString(R.string.failed)).toString(); Toast.makeText(getApplicationContext(), text, Toast.LENGTH_LONG).show(); } } catch (Exception e) { Log.e(TAG, e.getLocalizedMessage() == null ? " " : e.getLocalizedMessage()); } } if (msg.what == CouchPotatoController.MESSAGE.UPDATE.hashCode()) { try { if (msg.obj instanceof String && !"".equals(msg.obj)) { Toast.makeText(getApplicationContext(), (String) msg.obj, Toast.LENGTH_LONG).show(); } } catch (Exception e) { Log.e(TAG, e.getLocalizedMessage() == null ? " " : e.getLocalizedMessage()); } } } }; private void updateReleases() { if (releaseAdapter != null || movieReleases != null) { releaseAdapter.setItems(movieReleases.getReleases()); releaseAdapter.notifyDataSetChanged(); } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { getActionBar().setDisplayHomeAsUpEnabled(true); } setContentView(R.layout.list_releases); movie = (Movie) getIntent().getExtras().get("movie"); setTitle(movie.getTitle()); GridView gridView = (GridView) findViewById(R.id.elementGrid); movieReleases = new MovieReleases(); releaseAdapter = new ReleaseAdapter(getApplicationContext(), movieReleases.getReleases()); gridView.setAdapter(releaseAdapter); gridView.setOnItemClickListener(new MovieReleaseClickListener()); refresh(); } /** * This method calls the Controller to retrieve the releases */ private void refresh() { CouchPotatoController.getReleasesForMovie(messageHandler, movie.getMovieID()); } /** * Handles item selections in the Menu */ @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.menu_refresh: refresh(); break; case android.R.id.home: onBackPressed(); break; } return super.onOptionsItemSelected(item); } private class MovieReleaseClickListener implements AdapterView.OnItemClickListener { /** * Callback method to be invoked when an item in this AdapterView has * been clicked. * <p/> * Implementers can call getItemAtPosition(position) if they need * to access the data associated with the selected item. * * @param parent The AdapterView where the click happened. * @param view The view within the AdapterView that was clicked (this * will be a view provided by the adapter) * @param position The position of the view in the adapter. * @param id The row id of the item that was clicked. */ @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { try { MovieReleaseDialog movieReleaseDialog = new MovieReleaseDialog(); MovieReleaseDialog.setMovieRelease(movieReleases.getReleases().get(position)); MovieReleaseDialog.setMessageHandler(messageHandler); movieReleaseDialog.show(getSupportFragmentManager(),"releaseSelection"); } catch (Exception e) { Log.e(TAG, e.getLocalizedMessage()); } } } }