From ed400e39cec77f220d33caae94a7902070145e31 Mon Sep 17 00:00:00 2001 From: Peter Osterlund Date: Sun, 15 Mar 2020 08:15:14 +0100 Subject: [PATCH] Remove progress dialog when parsing EPD file Current devices are so fast that it is hard to see this dialog even if the file contains 100000 positions. --- .../petero/droidfish/activities/FENFile.java | 20 +----- .../petero/droidfish/activities/LoadFEN.java | 67 +------------------ 2 files changed, 4 insertions(+), 83 deletions(-) diff --git a/DroidFishApp/src/main/java/org/petero/droidfish/activities/FENFile.java b/DroidFishApp/src/main/java/org/petero/droidfish/activities/FENFile.java index 64db37b..96c8220 100644 --- a/DroidFishApp/src/main/java/org/petero/droidfish/activities/FENFile.java +++ b/DroidFishApp/src/main/java/org/petero/droidfish/activities/FENFile.java @@ -23,7 +23,6 @@ import java.io.IOException; import java.util.ArrayList; import android.app.Activity; -import android.app.ProgressDialog; import android.util.Pair; public class FENFile { @@ -55,24 +54,18 @@ public class FENFile { } } - public static enum FenInfoResult { + public enum FenInfoResult { OK, - CANCEL, OUT_OF_MEMORY; } /** Read all FEN strings (one per line) in a file. */ - public final Pair> getFenInfo(Activity activity, - final ProgressDialog progress) { + public final Pair> getFenInfo() { ArrayList fensInFile = new ArrayList<>(); try (BufferedRandomAccessFileReader f = new BufferedRandomAccessFileReader(fileName.getAbsolutePath())) { - int percent = -1; - long fileLen = f.length(); - long filePos = 0; int fenNo = 1; while (true) { - filePos = f.getFilePointer(); String line = f.readLine(); if (line == null) break; // EOF @@ -80,15 +73,6 @@ public class FENFile { continue; FenInfo fi = new FenInfo(fenNo++, line.trim()); fensInFile.add(fi); - final int newPercent = fileLen == 0 ? 0 : (int)(filePos * 100 / fileLen); - if (newPercent > percent) { - percent = newPercent; - if (progress != null) { - activity.runOnUiThread(() -> progress.setProgress(newPercent)); - } - } - if (Thread.currentThread().isInterrupted()) - return new Pair<>(FenInfoResult.CANCEL, null); } } catch (IOException ignore) { } catch (OutOfMemoryError e) { diff --git a/DroidFishApp/src/main/java/org/petero/droidfish/activities/LoadFEN.java b/DroidFishApp/src/main/java/org/petero/droidfish/activities/LoadFEN.java index 7557ede..5821533 100644 --- a/DroidFishApp/src/main/java/org/petero/droidfish/activities/LoadFEN.java +++ b/DroidFishApp/src/main/java/org/petero/droidfish/activities/LoadFEN.java @@ -18,14 +18,8 @@ package org.petero.droidfish.activities; -import android.app.Activity; -import android.app.Dialog; -import android.app.DialogFragment; -import android.app.Fragment; import android.app.ListActivity; -import android.app.ProgressDialog; import android.content.Context; -import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; @@ -55,13 +49,11 @@ import org.petero.droidfish.gamelogic.TextIO; import java.io.File; import java.util.ArrayList; -import java.util.concurrent.CountDownLatch; public class LoadFEN extends ListActivity { private static ArrayList fensInFile = new ArrayList<>(); private static boolean cacheValid = false; private FENFile fenFile; - private ProgressDialog progress; private FenInfo selectedFi = null; private ArrayAdapter aa = null; @@ -71,8 +63,6 @@ public class LoadFEN extends ListActivity { private long lastModTime = -1; private Thread workThread = null; - private CountDownLatch progressLatch = null; - private boolean canceled = false; LoadFenBinding binding; @@ -99,26 +89,12 @@ public class LoadFEN extends ListActivity { String fileName = i.getStringExtra("org.petero.droidfish.pathname"); if ("org.petero.droidfish.loadFen".equals(action)) { fenFile = new FENFile(fileName); - progressLatch = new CountDownLatch(1); - showProgressDialog(); final LoadFEN lfen = this; workThread = new Thread(() -> { - try { - progressLatch.await(); - } catch (InterruptedException e) { - setResult(RESULT_CANCELED); - finish(); - return; - } if (!readFile()) return; runOnUiThread(() -> { - if (canceled) { - setResult(RESULT_CANCELED); - finish(); - } else { - lfen.showList(); - } + lfen.showList(); }); }); workThread.start(); @@ -191,8 +167,6 @@ public class LoadFEN extends ListActivity { } private void showList() { - progress = null; - removeProgressDialog(); setContentView(R.layout.load_fen); binding = DataBindingUtil.setContentView(this, R.layout.load_fen); binding.loadfenOk.setEnabled(false); @@ -266,43 +240,6 @@ public class LoadFEN extends ListActivity { } } - public static class ProgressFragment extends DialogFragment { - @Override - public Dialog onCreateDialog(Bundle savedInstanceState) { - LoadFEN a = (LoadFEN) getActivity(); - ProgressDialog progress = new ProgressDialog(a); - progress.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); - progress.setTitle(R.string.reading_fen_file); - a.progress = progress; - a.progressLatch.countDown(); - return progress; - } - - @Override - public void onCancel(DialogInterface dialog) { - super.onCancel(dialog); - Activity a = getActivity(); - if (a instanceof LoadFEN) { - LoadFEN lf = (LoadFEN) a; - lf.canceled = true; - Thread thr = lf.workThread; - if (thr != null) - thr.interrupt(); - } - } - } - - private void showProgressDialog() { - ProgressFragment f = new ProgressFragment(); - f.show(getFragmentManager(), "progress"); - } - - private void removeProgressDialog() { - Fragment f = getFragmentManager().findFragmentByTag("progress"); - if (f instanceof DialogFragment) - ((DialogFragment) f).dismiss(); - } - private boolean readFile() { String fileName = fenFile.getName(); if (!fileName.equals(lastFileName)) @@ -311,7 +248,7 @@ public class LoadFEN extends ListActivity { if (cacheValid && (modTime == lastModTime) && fileName.equals(lastFileName)) return true; fenFile = new FENFile(fileName); - Pair> p = fenFile.getFenInfo(this, progress); + Pair> p = fenFile.getFenInfo(); if (p.first != FenInfoResult.OK) { fensInFile = new ArrayList<>(); if (p.first == FenInfoResult.OUT_OF_MEMORY) {