blob: 10209811e4802e6e067678bd449ec435e3d56f5c [file] [log] [blame]
package org.codeaurora.gallery3d.video;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import org.codeaurora.gallery.R;
import org.codeaurora.gallery3d.ext.IMovieItem;
import org.codeaurora.gallery3d.ext.IMovieList;
import org.codeaurora.gallery3d.ext.IMovieListLoader;
import org.codeaurora.gallery3d.ext.IMovieListLoader.LoaderListener;
import org.codeaurora.gallery3d.ext.MovieListLoader;
public class MovieListHooker extends MovieHooker implements LoaderListener {
private static final String TAG = "MovieListHooker";
private static final boolean LOG = false;
private static final int MENU_NEXT = 1;
private static final int MENU_PREVIOUS = 2;
private MenuItem mMenuNext;
private MenuItem mMenuPrevious;
private IMovieListLoader mMovieLoader;
private IMovieList mMovieList;
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mMovieLoader = new MovieListLoader();
mMovieLoader.fillVideoList(getContext(), getIntent(), this, getMovieItem());
}
@Override
public void onDestroy() {
super.onDestroy();
mMovieLoader.cancelList();
}
@Override
public boolean onCreateOptionsMenu(final Menu menu) {
super.onCreateOptionsMenu(menu);
if (mMovieList != null) { //list should be filled
if (mMovieLoader != null && mMovieLoader.isEnabledVideoList(getIntent())) {
mMenuPrevious = menu.add(0, getMenuActivityId(MENU_PREVIOUS), 0, R.string.previous);
mMenuNext = menu.add(0, getMenuActivityId(MENU_NEXT), 0, R.string.next);
}
}
return true;
}
@Override
public boolean onPrepareOptionsMenu(final Menu menu) {
super.onPrepareOptionsMenu(menu);
updatePrevNext();
return true;
}
@Override
public boolean onOptionsItemSelected(final MenuItem item) {
super.onOptionsItemSelected(item);
switch(getMenuOriginalId(item.getItemId())) {
case MENU_PREVIOUS:
if (mMovieList == null) {
return false;
}
getPlayer().startNextVideo(mMovieList.getPrevious(getMovieItem()));
return true;
case MENU_NEXT:
if (mMovieList == null) {
return false;
}
getPlayer().startNextVideo(mMovieList.getNext(getMovieItem()));
return true;
default:
return false;
}
}
@Override
public void onMovieItemChanged(final IMovieItem item) {
super.onMovieItemChanged(item);
updatePrevNext();
}
private void updatePrevNext() {
if (LOG) {
Log.v(TAG, "updatePrevNext()");
}
if (mMovieList != null && mMenuPrevious != null && mMenuNext != null) {
if (mMovieList.isFirst(getMovieItem()) && mMovieList.isLast(getMovieItem())) { //only one movie
mMenuNext.setVisible(false);
mMenuPrevious.setVisible(false);
} else {
mMenuNext.setVisible(true);
mMenuPrevious.setVisible(true);
}
if (mMovieList.isFirst(getMovieItem())) {
mMenuPrevious.setEnabled(false);
} else {
mMenuPrevious.setEnabled(true);
}
if (mMovieList.isLast(getMovieItem())) {
mMenuNext.setEnabled(false);
} else {
mMenuNext.setEnabled(true);
}
}
}
@Override
public void onListLoaded(final IMovieList movieList) {
mMovieList = movieList;
getContext().invalidateOptionsMenu();
if (LOG) {
Log.v(TAG, "onListLoaded() " + (mMovieList != null ? mMovieList.size() : "null"));
}
}
}