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 --- .../java/org/fox/ttcomics2/ComicListFragment.java | 2 +- .../org/fox/ttcomics2/archive/CbzComicArchive.java | 35 +++++++++++++++------- 2 files changed, 25 insertions(+), 12 deletions(-) (limited to 'org.fox.ttcomics/src') 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