/*
* Author: Miguel Angel Bravo (@MiguelAngelBrav)
* The Android Open Source Project Katbag is licensed under the General GPLv3.
*
*/
package cl.ipp.katbag.fragment;
import java.util.ArrayList;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import cl.ipp.katbag.MainActivity;
import cl.ipp.katbag.R;
import com.actionbarsherlock.app.SherlockFragment;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater;
import com.actionbarsherlock.view.MenuItem;
import com.actionbarsherlock.view.MenuItem.OnMenuItemClickListener;
import com.google.analytics.tracking.android.EasyTracker;
import com.google.analytics.tracking.android.Fields;
import com.google.analytics.tracking.android.MapBuilder;
import com.google.analytics.tracking.android.Tracker;
import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
import com.viewpagerindicator.UnderlinePageIndicator;
public class PlayerBook extends SherlockFragment {
private Tracker tracker;
static LinearLayout v = null;
public static MainActivity mainActivity;
public long id_app = -1;
public String name_app_text = "";
public String type_app = "";
public int numPages = 0;
public MenuItem menuItemPrevious, menuItemNext;
private ViewPager mPager;
private PagerAdapter mPagerAdapter;
private UnderlinePageIndicator mIndicator;
public ArrayList<String> page = new ArrayList<String>();
private MediaPlayer mPlayer;
public static final int PAGE_SOUND_ID = 1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
this.tracker = EasyTracker.getInstance(this.getActivity());
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
v = (LinearLayout) inflater.inflate(R.layout.fragment_player_book, container, false);
mainActivity = (MainActivity) super.getActivity();
// rescues parameters
Bundle bundle = getArguments();
if (bundle != null) {
id_app = bundle.getLong("id_app");
name_app_text = bundle.getString("name_app");
}
numPages = mainActivity.katbagHandler.countPagesForIdApp(id_app);
// Instantiate a ViewPager and a PagerAdapter.
mPager = (ViewPager) v.findViewById(R.id.pager);
// mPager.setPageTransformer(true, new DepthPageTransformer());
mPagerAdapter = new ScreenSlidePagerAdapter(getFragmentManager());
mPager.setAdapter(mPagerAdapter);
mIndicator = (UnderlinePageIndicator) v.findViewById(R.id.indicator);
mIndicator.setViewPager(mPager);
mIndicator.setFades(false);
setPageSound(0);
mIndicator.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
setPageSound(position);
}
});
return v;
}
public void setPageSound(int pageNumber) {
stopPlayer();
page.clear();
page = mainActivity.katbagHandler.selectOnePageForIdAndOrder(id_app, pageNumber);
if (page.size() > 0) {
if (page.get(PAGE_SOUND_ID) != null) {
playSound(page.get(PAGE_SOUND_ID));
}
}
}
public void playSound(String identifier) {
if (!identifier.contentEquals("")) {
int sound = mainActivity.getResources().getIdentifier(identifier, "raw", mainActivity.getPackageName());
stopPlayer();
mPlayer = MediaPlayer.create(mainActivity.context, sound);
mPlayer.start();
}
}
public void stopPlayer() {
if (mPlayer != null) {
mPlayer.stop();
mPlayer.release();
mPlayer = null;
}
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
menu.clear();
inflater.inflate(R.menu.player_book, menu);
menuItemPrevious = menu.findItem(R.id.player_book_previous_item);
menuItemNext = menu.findItem(R.id.player_book_next_item);
menuItemPrevious.setOnMenuItemClickListener(new OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
mPager.setCurrentItem(mPager.getCurrentItem() - 1);
return true;
}
});
menuItemNext.setOnMenuItemClickListener(new OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
mPager.setCurrentItem(mPager.getCurrentItem() + 1);
return false;
}
});
}
private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {
public ScreenSlidePagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return SlidePageBookFragment.create(id_app, position);
}
@Override
public int getCount() {
return numPages;
}
}
@Override
public void onResume() {
if (!MainActivity.TABLET)
mainActivity.slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_NONE);
mainActivity.getSupportActionBar().setTitle(name_app_text);
super.onResume();
this.tracker.set(Fields.SCREEN_NAME, getClass().getSimpleName());
this.tracker.send( MapBuilder.createAppView().build() );
}
@Override
public void onPause() {
stopPlayer();
System.gc();
super.onPause();
}
@Override
public void onStop() {
stopPlayer();
System.gc();
super.onStop();
}
}