diff options
Diffstat (limited to 'src/org')
-rw-r--r-- | src/org/fox/ttcomics/CbzComicArchive.java | 4 | ||||
-rw-r--r-- | src/org/fox/ttcomics/ComicArchive.java | 9 | ||||
-rw-r--r-- | src/org/fox/ttcomics/ComicListFragment.java | 49 | ||||
-rw-r--r-- | src/org/fox/ttcomics/CommonActivity.java | 17 | ||||
-rw-r--r-- | src/org/fox/ttcomics/MainActivity.java | 95 |
5 files changed, 128 insertions, 46 deletions
diff --git a/src/org/fox/ttcomics/CbzComicArchive.java b/src/org/fox/ttcomics/CbzComicArchive.java index ab53b85..753321a 100644 --- a/src/org/fox/ttcomics/CbzComicArchive.java +++ b/src/org/fox/ttcomics/CbzComicArchive.java @@ -11,17 +11,19 @@ import java.util.zip.ZipFile; import android.util.Log;
-public class CbzComicArchive {
+public class CbzComicArchive extends ComicArchive {
private final String TAG = this.getClass().getSimpleName();
private ZipFile m_zipFile;
private int m_count;
private ArrayList<ZipEntry> m_entries = new ArrayList<ZipEntry>();
+ @Override
public int getCount() {
return m_count;
}
+ @Override
public InputStream getItem(int index) throws IOException {
return m_zipFile.getInputStream(m_entries.get(index));
}
diff --git a/src/org/fox/ttcomics/ComicArchive.java b/src/org/fox/ttcomics/ComicArchive.java new file mode 100644 index 0000000..1dedda6 --- /dev/null +++ b/src/org/fox/ttcomics/ComicArchive.java @@ -0,0 +1,9 @@ +package org.fox.ttcomics;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+public abstract class ComicArchive {
+ public abstract int getCount();
+ public abstract InputStream getItem(int index) throws IOException;
+}
diff --git a/src/org/fox/ttcomics/ComicListFragment.java b/src/org/fox/ttcomics/ComicListFragment.java index 3330ba8..e1acec6 100644 --- a/src/org/fox/ttcomics/ComicListFragment.java +++ b/src/org/fox/ttcomics/ComicListFragment.java @@ -42,11 +42,16 @@ public class ComicListFragment extends Fragment implements OnItemClickListener { private ComicsListAdapter m_adapter;
private ArrayList<String> m_files = new ArrayList<String>();
private int m_mode = 0;
+ private String m_baseDirectory = "";
public ComicListFragment() {
super();
}
+ public void setBaseDirectory(String baseDirectory) {
+ m_baseDirectory = baseDirectory;
+ }
+
public ComicListFragment(int mode) {
super();
@@ -89,7 +94,6 @@ public class ComicListFragment extends Fragment implements OnItemClickListener { if (info != null) {
if (size != -1) {
info.setText(getString(R.string.file_progress_info, lastPos+1, size));
- info.setVisibility(View.VISIBLE);
} else {
info.setVisibility(View.GONE);
}
@@ -98,25 +102,30 @@ public class ComicListFragment extends Fragment implements OnItemClickListener { ProgressBar progressBar = (ProgressBar) v.findViewById(R.id.file_progress_bar);
if (progressBar != null) {
- progressBar.setMax(size);
- progressBar.setProgress(lastPos);
+ if (size != -1) {
+ progressBar.setMax(size);
+ progressBar.setProgress(lastPos);
+ } else {
+ progressBar.setVisibility(View.GONE);
+ }
}
File thumbnailFile = new File(Environment.getExternalStorageDirectory() + "/" + m_activity.THUMBNAIL_PATH + "/" + fileName);
+
+ ImageView thumbnail = (ImageView) v.findViewById(R.id.thumbnail);
- if (thumbnailFile.exists()) {
- ImageView thumbnail = (ImageView) v.findViewById(R.id.thumbnail);
-
- if (thumbnail != null) {
+ if (thumbnail != null) {
+ if (thumbnailFile.exists()) {
Bitmap bmp = BitmapFactory.decodeFile(thumbnailFile.getAbsolutePath());
if (bmp != null) {
thumbnail.setImageBitmap(bmp);
}
+ } else {
+ thumbnail.setImageResource(R.drawable.ic_launcher);
}
-
- }
-
+ }
+
return v;
}
}
@@ -220,7 +229,7 @@ public class ComicListFragment extends Fragment implements OnItemClickListener { protected Integer doInBackground(String... params) {
String comicsDir = params[0];
- File dir = new File(comicsDir);
+ File dir = new File(comicsDir + "/" + m_baseDirectory);
m_files.clear();
@@ -235,9 +244,12 @@ public class ComicListFragment extends Fragment implements OnItemClickListener { for (File archive : archives) {
String fileName = archive.getName();
- if (fileName.toLowerCase().matches(".*\\.(cbz|zip)") && isAdded() && m_activity != null) {
+ if (archive.isDirectory() && m_mode == 0) {
+ m_files.add(archive.getName());
+
+ } else if (fileName.toLowerCase().matches(".*\\.(cbz|zip)") && isAdded() && m_activity != null) {
try {
- CbzComicArchive cba = new CbzComicArchive(comicsDir + "/" + fileName);
+ CbzComicArchive cba = new CbzComicArchive(archive.getAbsolutePath());
if (cba.getCount() > 0) {
// Get cover
@@ -267,17 +279,24 @@ public class ComicListFragment extends Fragment implements OnItemClickListener { e.printStackTrace();
}
+ int lastPos = m_activity.getLastPosition(fileName);
+
switch (m_mode) {
case 0:
m_files.add(fileName);
break;
case 1:
- if (m_activity.getLastPosition(fileName) != cba.getCount()-1) {
+ if (lastPos == 0) {
m_files.add(fileName);
}
break;
case 2:
- if (m_activity.getLastPosition(fileName) == cba.getCount()-1) {
+ if (lastPos > 0 && lastPos != cba.getCount()-1) {
+ m_files.add(fileName);
+ }
+ break;
+ case 3:
+ if (lastPos == cba.getCount()-1) {
m_files.add(fileName);
}
break;
diff --git a/src/org/fox/ttcomics/CommonActivity.java b/src/org/fox/ttcomics/CommonActivity.java index 8dee569..c768f70 100644 --- a/src/org/fox/ttcomics/CommonActivity.java +++ b/src/org/fox/ttcomics/CommonActivity.java @@ -1,5 +1,7 @@ package org.fox.ttcomics;
+import java.io.File;
+
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
@@ -40,20 +42,7 @@ public class CommonActivity extends FragmentActivity { public void onComicArchiveSelected(String fileName) {
-
- Intent intent = new Intent(CommonActivity.this,
- ViewComicActivity.class);
-
- intent.putExtra("fileName", fileName);
-
- startActivityForResult(intent, 0);
-
- /* FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
-
- ft.replace(R.id.comics_list, new ComicPager(fileName), FRAG_COMICS_LIST);
- ft.addToBackStack(null);
-
- ft.commit(); */
+ //
}
public void setSize(String fileName, int size) {
diff --git a/src/org/fox/ttcomics/MainActivity.java b/src/org/fox/ttcomics/MainActivity.java index a14d5bf..452cda3 100644 --- a/src/org/fox/ttcomics/MainActivity.java +++ b/src/org/fox/ttcomics/MainActivity.java @@ -1,5 +1,7 @@ package org.fox.ttcomics; +import java.io.File; + import android.animation.LayoutTransition; import android.app.ActionBar; import android.app.ActionBar.Tab; @@ -20,6 +22,7 @@ public class MainActivity extends CommonActivity { private TabListener m_tabListener = new TabListener(); private int m_selectedTab; + private String m_baseDirectory = ""; private class TabListener implements ActionBar.TabListener { @@ -31,17 +34,12 @@ public class MainActivity extends CommonActivity { FragmentTransaction sft = getSupportFragmentManager().beginTransaction(); if (m_selectedTab != tab.getPosition() && m_selectedTab != -1) { - switch (tab.getPosition()) { - case 0: - sft.replace(R.id.comics_list, new ComicListFragment(), FRAG_COMICS_LIST); - break; - case 1: - sft.replace(R.id.comics_list, new ComicListFragment(1), FRAG_COMICS_LIST); - break; - case 2: - sft.replace(R.id.comics_list, new ComicListFragment(2), FRAG_COMICS_LIST); - break; - } + + ComicListFragment frag = new ComicListFragment(tab.getPosition()); + + frag.setBaseDirectory(m_baseDirectory); + + sft.replace(R.id.comics_list, frag, FRAG_COMICS_LIST); } m_selectedTab = tab.getPosition(); @@ -69,13 +67,27 @@ public class MainActivity extends CommonActivity { setSmallScreen(findViewById(R.id.tablet_layout_hack) == null); if (savedInstanceState == null) { + m_selectedTab = getIntent().getIntExtra("selectedTab", 0); + + Log.d(TAG, "selTab=" + m_selectedTab); + + ComicListFragment frag = new ComicListFragment(m_selectedTab); + + if (getIntent().getStringExtra("baseDir") != null) { + m_baseDirectory = getIntent().getStringExtra("baseDir"); + frag.setBaseDirectory(m_baseDirectory); + } + FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); - ft.replace(R.id.comics_list, new ComicListFragment(), FRAG_COMICS_LIST); - ft.commit(); + ft.replace(R.id.comics_list, frag, FRAG_COMICS_LIST); + ft.commit(); + + m_selectedTab = -1; } else { m_selectedTab = -1; + m_baseDirectory = savedInstanceState.getString("baseDir"); } - + ActionBar actionBar = getActionBar(); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); @@ -87,13 +99,19 @@ public class MainActivity extends CommonActivity { actionBar.addTab(getActionBar().newTab() .setText(R.string.tab_unread) .setTabListener(m_tabListener)); - + actionBar.addTab(getActionBar().newTab() - .setText(R.string.tab_finished) + .setText(R.string.tab_unfinished) + .setTabListener(m_tabListener)); + + actionBar.addTab(getActionBar().newTab() + .setText(R.string.tab_read) .setTabListener(m_tabListener)); if (savedInstanceState != null) { m_selectedTab = savedInstanceState.getInt("selectedTab"); + } else { + m_selectedTab = getIntent().getIntExtra("selectedTab", 0); } actionBar.selectTab(actionBar.getTabAt(m_selectedTab)); @@ -120,6 +138,8 @@ public class MainActivity extends CommonActivity { alert.show(); } + actionBar.setDisplayHomeAsUpEnabled(m_baseDirectory.length() > 0); + ((ViewGroup)findViewById(R.id.comics_list)).setLayoutTransition(new LayoutTransition()); } @@ -134,6 +154,49 @@ public class MainActivity extends CommonActivity { super.onSaveInstanceState(out); out.putInt("selectedTab", m_selectedTab); + out.putString("baseDir", m_baseDirectory); + } + + public boolean onOptionsItemSelected(MenuItem item) { + switch (item.getItemId()) { + case android.R.id.home: + if (m_baseDirectory.length() > 0) { + finish(); + } + return true; + default: + Log.d(TAG, + "onOptionsItemSelected, unhandled id=" + item.getItemId()); + return super.onOptionsItemSelected(item); + } } + + @Override + public void onComicArchiveSelected(String fileName) { + super.onComicArchiveSelected(fileName); + + File file = new File(m_prefs.getString("comics_directory", "") + "/" + fileName); + + if (file.isDirectory()) { + Intent intent = new Intent(MainActivity.this, + MainActivity.class); + + intent.putExtra("baseDir", fileName); + intent.putExtra("selectedTab", m_selectedTab); + + startActivityForResult(intent, 0); + + + + } else if (file.canRead()) { + Intent intent = new Intent(MainActivity.this, + ViewComicActivity.class); + + intent.putExtra("fileName", fileName); + + startActivityForResult(intent, 0); + } + } + } |