From 65be0b20c458ad7c740cbf54ffb74b3f0c13c6c3 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Mon, 15 Oct 2012 12:33:34 +0400 Subject: fix various page index related bugs, add location dialog in compat mode --- src/org/fox/ttcomics/CbzComicArchive.java | 2 +- src/org/fox/ttcomics/ComicFragment.java | 8 +--- src/org/fox/ttcomics/ComicListFragment.java | 4 +- src/org/fox/ttcomics/ComicPager.java | 5 ++- src/org/fox/ttcomics/ViewComicActivity.java | 67 ++++++++++++++++++++++++++++- 5 files changed, 73 insertions(+), 13 deletions(-) (limited to 'src') diff --git a/src/org/fox/ttcomics/CbzComicArchive.java b/src/org/fox/ttcomics/CbzComicArchive.java index 6033f4e..ecbbd5f 100644 --- a/src/org/fox/ttcomics/CbzComicArchive.java +++ b/src/org/fox/ttcomics/CbzComicArchive.java @@ -22,7 +22,7 @@ public class CbzComicArchive extends ComicArchive { } @Override - public InputStream getItem(int index) throws IOException { + public InputStream getItem(int index) throws IOException { return m_zipFile.getInputStream(m_entries.get(index)); } diff --git a/src/org/fox/ttcomics/ComicFragment.java b/src/org/fox/ttcomics/ComicFragment.java index 668822a..fbd8639 100644 --- a/src/org/fox/ttcomics/ComicFragment.java +++ b/src/org/fox/ttcomics/ComicFragment.java @@ -40,11 +40,7 @@ public class ComicFragment extends Fragment { options.inJustDecodeBounds = true; BitmapFactory.decodeStream(archive.getItem(page), null, options); - if (CommonActivity.isCompatMode()) { - options.inSampleSize = CommonActivity.calculateInSampleSize(options, 256, 256); - } else { - options.inSampleSize = CommonActivity.calculateInSampleSize(options, 512, 512); - } + options.inSampleSize = CommonActivity.calculateInSampleSize(options, 512, 512); options.inJustDecodeBounds = false; return BitmapFactory.decodeStream(archive.getItem(page), null, options); @@ -98,7 +94,7 @@ public class ComicFragment extends Fragment { TextView page = (TextView) view.findViewById(R.id.comic_page); if (page != null) { - page.setText(String.valueOf(m_page)); + page.setText(String.valueOf(m_page+1)); } return view; diff --git a/src/org/fox/ttcomics/ComicListFragment.java b/src/org/fox/ttcomics/ComicListFragment.java index ee35059..db2ae51 100644 --- a/src/org/fox/ttcomics/ComicListFragment.java +++ b/src/org/fox/ttcomics/ComicListFragment.java @@ -103,7 +103,7 @@ public class ComicListFragment extends Fragment implements OnItemClickListener { if (progressBar != null) { if (size != -1) { - progressBar.setMax(size); + progressBar.setMax(size-1); progressBar.setProgress(lastPos); } else { progressBar.setVisibility(View.GONE); @@ -242,8 +242,6 @@ public class ComicListFragment extends Fragment implements OnItemClickListener { m_files.clear(); - File storage = Environment.getExternalStorageDirectory(); - if (dir.isDirectory()) { File archives[] = dir.listFiles(); int fileIndex = 0; diff --git a/src/org/fox/ttcomics/ComicPager.java b/src/org/fox/ttcomics/ComicPager.java index 2dd9074..0676967 100644 --- a/src/org/fox/ttcomics/ComicPager.java +++ b/src/org/fox/ttcomics/ComicPager.java @@ -28,7 +28,7 @@ public class ComicPager extends Fragment { @Override public Fragment getItem(int position) { - return new ComicFragment(position+1); + return new ComicFragment(position); } @Override @@ -102,6 +102,7 @@ public class ComicPager extends Fragment { pager.setCurrentItem(position); m_activity.onComicSelected(m_fileName, position); + m_activity.setProgress(Math.round(((float)position / (float)(m_archive.getCount()-1)) * 10000)); } catch (IOException e) { m_activity.toast(R.string.error_could_not_open_comic_archive); @@ -113,7 +114,7 @@ public class ComicPager extends Fragment { public void onPageSelected(int position) { m_activity.onComicSelected(m_fileName, position); - m_activity.setProgress(Math.round(((float)position / (float)m_archive.getCount()) * 10000)); + m_activity.setProgress(Math.round(((float)position / (float)(m_archive.getCount()-1)) * 10000)); if (!CommonActivity.isCompatMode() && m_prefs.getBoolean("dim_status_bar", false)) { view.setSystemUiVisibility(View.STATUS_BAR_HIDDEN); diff --git a/src/org/fox/ttcomics/ViewComicActivity.java b/src/org/fox/ttcomics/ViewComicActivity.java index d813b57..1bd47b5 100644 --- a/src/org/fox/ttcomics/ViewComicActivity.java +++ b/src/org/fox/ttcomics/ViewComicActivity.java @@ -23,6 +23,8 @@ import android.view.View; import android.view.Window; import android.view.WindowManager; import android.widget.NumberPicker; +import android.widget.SeekBar; +import android.widget.TextView; public class ViewComicActivity extends CommonActivity { private final String TAG = this.getClass().getSimpleName(); @@ -96,7 +98,7 @@ public class ViewComicActivity extends CommonActivity { Log.d(TAG, "FILE=" + tmpFile); - InputStream is = pager.getArchive().getItem(pager.getPosition()+1); + InputStream is = pager.getArchive().getItem(pager.getPosition()); FileOutputStream fos = new FileOutputStream(tmpFile); @@ -200,6 +202,69 @@ public class ViewComicActivity extends CommonActivity { seekDialog = seekBuilder.create(); seekDialog.show(); + } else { + LayoutInflater inflater = getLayoutInflater(); + final View contentView = inflater.inflate(R.layout.dialog_location_compat, null); + + final SeekBar seeker = (SeekBar) contentView.findViewById(R.id.number_seeker); + final TextView pageNum = (TextView) contentView.findViewById(R.id.page_number); + final int size = getSize(m_fileName); + + seeker.setMax(size-1); + seeker.setProgress(cp.getPosition()); + + pageNum.setText(getString(R.string.dialog_location_page_number, cp.getPosition()+1, size)); + + seeker.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener(){ + + @Override + public void onProgressChanged( + SeekBar seekBar, int progress, + boolean fromUser) { + + pageNum.setText(getString(R.string.dialog_location_page_number, progress+1, size)); + + } + + @Override + public void onStartTrackingTouch( + SeekBar arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void onStopTrackingTouch( + SeekBar arg0) { + // TODO Auto-generated method stub + + } + + + }); + + Dialog seekDialog = new Dialog(ViewComicActivity.this); + AlertDialog.Builder seekBuilder = new AlertDialog.Builder(ViewComicActivity.this) + .setTitle(R.string.dialog_open_location) + .setView(contentView) + .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { + + public void onClick(DialogInterface dialog, int which) { + dialog.cancel(); + } + }).setPositiveButton(R.string.dialog_open_location, new DialogInterface.OnClickListener() { + + public void onClick(DialogInterface dialog, int which) { + dialog.cancel(); + + cp.setCurrentItem(seeker.getProgress()); + + } + }); + + seekDialog = seekBuilder.create(); + seekDialog.show(); + } break; -- cgit v1.2.3