From 65f8261592b1039c4743f77907b251012fbfecc7 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Sun, 24 Feb 2019 10:30:15 +0300 Subject: use zip4j instead of android stock ziplib because its broken garbage --- org.fox.ttcomics/build.gradle | 5 +-- org.fox.ttcomics/org.fox.ttcomics.iml | 42 ++++++++++++---------- .../java/org/fox/ttcomics2/ComicListFragment.java | 2 +- .../org/fox/ttcomics2/archive/CbzComicArchive.java | 35 ++++++++++++------ 4 files changed, 52 insertions(+), 32 deletions(-) (limited to 'org.fox.ttcomics') diff --git a/org.fox.ttcomics/build.gradle b/org.fox.ttcomics/build.gradle index 8a78e42..e5ec55f 100755 --- a/org.fox.ttcomics/build.gradle +++ b/org.fox.ttcomics/build.gradle @@ -48,8 +48,8 @@ android { dependencies { implementation 'androidx.legacy:legacy-support-v4:1.0.0' - implementation 'androidx.appcompat:appcompat:1.1.0-alpha01' - implementation 'com.google.android.material:material:1.1.0-alpha03' + implementation 'androidx.appcompat:appcompat:1.0.2' + implementation 'com.google.android.material:material:1.0.0' implementation 'com.shamanland:fab:0.0.8' implementation 'jp.co.recruit_mp:android-HeaderFooterGridView:0.2.4' implementation 'com.github.bumptech.glide:glide:3.8.0' @@ -64,4 +64,5 @@ dependencies { implementation files('libs/nineoldandroids-2.4.0.jar') implementation 'com.gu:option:1.3' implementation 'net.rdrei.android.dirchooser:library:3.2@aar' + implementation 'com.github.joielechong:zip4jandroid:1.0.1' } diff --git a/org.fox.ttcomics/org.fox.ttcomics.iml b/org.fox.ttcomics/org.fox.ttcomics.iml index 191dff8..e01f64f 100755 --- a/org.fox.ttcomics/org.fox.ttcomics.iml +++ b/org.fox.ttcomics/org.fox.ttcomics.iml @@ -28,15 +28,15 @@ - + - + - + - + @@ -89,16 +89,22 @@ + + + + + + @@ -108,6 +114,7 @@ + @@ -116,6 +123,7 @@ + @@ -127,69 +135,67 @@ + + - + + + - - - - + + - - - - - - + - + + - - + + \ No newline at end of file diff --git a/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/ComicListFragment.java b/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/ComicListFragment.java index f94b14a..0751644 100755 --- a/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/ComicListFragment.java +++ b/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/ComicListFragment.java @@ -212,7 +212,7 @@ public class ComicListFragment extends StateSavedFragment implements OnItemClick if (holder.thumbnail != null && thumbnailFile.exists()) { - Glide.with(ComicListFragment.this) + Glide.with(m_activity) .load(thumbnailFile) .diskCacheStrategy(DiskCacheStrategy.NONE) .skipMemoryCache(false) diff --git a/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/archive/CbzComicArchive.java b/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/archive/CbzComicArchive.java index 8757353..c3dae4c 100755 --- a/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/archive/CbzComicArchive.java +++ b/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/archive/CbzComicArchive.java @@ -3,22 +3,24 @@ package org.fox.ttcomics2.archive; import android.os.Parcel; import android.os.Parcelable; +import net.lingala.zip4j.core.ZipFile; +import net.lingala.zip4j.exception.ZipException; +import net.lingala.zip4j.model.FileHeader; + import org.fox.ttcomics2.utils.NaturalOrderComparator; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.Collections; -import java.util.Enumeration; -import java.util.zip.ZipEntry; -import java.util.zip.ZipFile; +import java.util.List; public class CbzComicArchive extends ComicArchive { private final String TAG = this.getClass().getSimpleName(); private String m_fileName; private ZipFile m_zipFile; - private ArrayList m_entries = new ArrayList(); + private ArrayList m_entries = new ArrayList<>(); @Override public int getCount() { @@ -27,19 +29,30 @@ public class CbzComicArchive extends ComicArchive { @Override public InputStream getItem(int index) throws IOException { - return m_zipFile.getInputStream(m_entries.get(index)); + try { + return m_zipFile.getInputStream(m_entries.get(index)); + } catch (ZipException e) { + throw new IOException(e.getMessage()); + } } private void initialize() throws IOException { - m_zipFile = new ZipFile(m_fileName); + try { + m_zipFile = new ZipFile(m_fileName); - Enumeration e = m_zipFile.entries(); + List fileHeaders = m_zipFile.getFileHeaders(); - while (e.hasMoreElements()) { - ZipEntry ze = e.nextElement(); - if (!ze.isDirectory() && isValidComic(ze.getName())) { - m_entries.add(ze); + for (int i = 0; i < fileHeaders.size(); i++) { + FileHeader fh = fileHeaders.get(i); + + if (fh != null) { + if (!fh.isDirectory() && isValidComic(fh.getFileName())) { + m_entries.add(fh); + } + } } + } catch (ZipException e) { + throw new IOException(e.getMessage()); } Collections.sort(m_entries, new NaturalOrderComparator()); -- cgit v1.2.3