diff options
Diffstat (limited to 'org.fox.ttcomics/src/main/java/org/fox/ttcomics2/ComicPager.java')
-rw-r--r-- | org.fox.ttcomics/src/main/java/org/fox/ttcomics2/ComicPager.java | 198 |
1 files changed, 198 insertions, 0 deletions
diff --git a/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/ComicPager.java b/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/ComicPager.java new file mode 100644 index 0000000..8df3cf0 --- /dev/null +++ b/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/ComicPager.java @@ -0,0 +1,198 @@ +package org.fox.ttcomics2; + +import android.annotation.SuppressLint; +import android.app.Activity; +import android.content.SharedPreferences; +import android.os.Bundle; +import android.preference.PreferenceManager; +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentManager; +import android.support.v4.app.FragmentStatePagerAdapter; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.SeekBar; +import android.widget.TextView; + +import java.io.IOException; + +public class ComicPager extends Fragment { + private String m_fileName; + private SharedPreferences m_prefs; + private final String TAG = this.getClass().getSimpleName(); + private ComicArchive m_archive; + private CommonActivity m_activity; + private SeekBar m_seekBar; + private TextView m_pageView; + + public void hideSeekBar(boolean hide) { + m_seekBar.setVisibility(hide ? View.GONE : View.VISIBLE); + m_pageView.setVisibility(hide ? View.GONE : View.VISIBLE); + } + + private class PagerAdapter extends FragmentStatePagerAdapter { + public PagerAdapter(FragmentManager fm) { + super(fm); + } + + @Override + public Fragment getItem(int position) { + ComicFragment cf = new ComicFragment(); + cf.initialize(m_archive, position); + + return cf; + } + + @Override + public int getCount() { + return m_archive.getCount(); + } + } + + private PagerAdapter m_adapter; + + public ComicPager() { + super(); + } + + public ComicArchive getArchive() { + return m_archive; + } + + public int getCount() { + return m_adapter.getCount(); + } + + public int getPosition() { + ViewPager pager = (ViewPager) getView().findViewById(R.id.comics_pager); + + if (pager != null) { + return pager.getCurrentItem(); + } + + return 0; + } + + public String getFileName() { + return m_fileName; + } + + public void setCurrentItem(int item) { + ViewPager pager = (ViewPager) getView().findViewById(R.id.comics_pager); + + if (pager != null) { + try { + pager.setCurrentItem(item); + m_pageView.setText(String.valueOf(item+1)); + } catch (IndexOutOfBoundsException e) { + e.printStackTrace(); + } + } + + } + + public void setFileName(String fileName) { + m_fileName = fileName; + } + + @SuppressLint("NewApi") + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + + final View view = inflater.inflate(R.layout.fragment_comics_pager, container, false); + + m_adapter = new PagerAdapter(getActivity().getSupportFragmentManager()); + + final ViewPager pager = (ViewPager) view.findViewById(R.id.comics_pager); + + if (savedInstanceState != null) { + m_fileName = savedInstanceState.getString("fileName"); + } + + try { + if (m_fileName.toLowerCase().matches(".*\\.(cbz|zip)")) { + m_archive = new CbzComicArchive(m_fileName); + } + + final int position = m_activity.getLastPosition(m_fileName); + + m_pageView = (TextView) view.findViewById(R.id.comics_page); + m_pageView.setText(String.valueOf(position+1)); + + m_seekBar = (SeekBar) view.findViewById(R.id.comics_seek_bar); + m_seekBar.setMax(m_archive.getCount()-1); + m_seekBar.setProgress(position); + m_seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { + @Override + public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { + if (fromUser) { + setCurrentItem(progress); + } + } + + @Override + public void onStartTrackingTouch(SeekBar seekBar) { + + } + + @Override + public void onStopTrackingTouch(SeekBar seekBar) { + + } + }); + + pager.setAdapter(m_adapter); + pager.setCurrentItem(position); + + m_activity.onComicSelected(m_fileName, position); + + if (m_prefs.getBoolean("use_full_screen", false)) { + m_activity.hideSystemUI(true); + hideSeekBar(true); + } + + } catch (IOException e) { + m_activity.toast(R.string.error_could_not_open_comic_archive); + e.printStackTrace(); + } + + pager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { + public void onPageSelected(int position) { + + m_activity.onComicSelected(m_fileName, position); + m_seekBar.setProgress(position); + + if (m_prefs.getBoolean("use_full_screen", false)) { + m_activity.hideSystemUI(true); + } + } + + public void onPageScrolled(int arg0, float arg1, int arg2) { + // TODO Auto-generated method stub + } + + public void onPageScrollStateChanged(int arg0) { + // TODO Auto-generated method stub + } + }); + + return view; + } + + @Override + public void onAttach(Activity activity) { + super.onAttach(activity); + + m_activity = (CommonActivity) activity; + + m_prefs = PreferenceManager.getDefaultSharedPreferences(activity.getApplicationContext()); + } + + @Override + public void onSaveInstanceState(Bundle out) { + super.onSaveInstanceState(out); + + out.putString("fileName", m_fileName); + } + +} |