From 754a5bc205f6a50f3fe3fe7c2dfb09d8a8dd09bb Mon Sep 17 00:00:00 2001 From: Niki Roo Date: Sun, 5 Mar 2017 19:50:21 +0100 Subject: [PATCH] UI: progress bars fixes, update nikiroo-utils - UI: progress bar now working correctly - nikiroo-utils update to show all steps in the progress bars --- ...es.jar => nikiroo-utils-1.3.5-sources.jar} | Bin 49880 -> 51298 bytes src/be/nikiroo/fanfix/reader/LocalReader.java | 4 +- .../fanfix/reader/LocalReaderFrame.java | 108 ++++++++++-------- .../fanfix/supported/BasicSupport.java | 2 + 4 files changed, 67 insertions(+), 47 deletions(-) rename libs/{nikiroo-utils-1.3.4-sources.jar => nikiroo-utils-1.3.5-sources.jar} (84%) diff --git a/libs/nikiroo-utils-1.3.4-sources.jar b/libs/nikiroo-utils-1.3.5-sources.jar similarity index 84% rename from libs/nikiroo-utils-1.3.4-sources.jar rename to libs/nikiroo-utils-1.3.5-sources.jar index f4b5883d12bbb6a81149ad8861d192e62f89412d..e2af882d63fa5ceadf162f6e4537b392700342be 100644 GIT binary patch delta 4235 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 D_Vcuv delta 2831 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 diff --git a/src/be/nikiroo/fanfix/reader/LocalReader.java b/src/be/nikiroo/fanfix/reader/LocalReader.java index b031de8..29a840f 100644 --- a/src/be/nikiroo/fanfix/reader/LocalReader.java +++ b/src/be/nikiroo/fanfix/reader/LocalReader.java @@ -211,8 +211,8 @@ class LocalReader extends BasicReader { }); } - // refresh = delete from LocalReader cache (TODO: rename?) - void refresh(String luid) { + // delete from local reader library + void clearLocalReaderCache(String luid) { lib.delete(luid); } diff --git a/src/be/nikiroo/fanfix/reader/LocalReaderFrame.java b/src/be/nikiroo/fanfix/reader/LocalReaderFrame.java index a90360e..1dc63e7 100644 --- a/src/be/nikiroo/fanfix/reader/LocalReaderFrame.java +++ b/src/be/nikiroo/fanfix/reader/LocalReaderFrame.java @@ -97,6 +97,22 @@ class LocalReaderFrame extends JFrame { pgBar = new ProgressBar(); add(pgBar, BorderLayout.SOUTH); + pgBar.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + invalidate(); + pgBar.setProgress(null); + validate(); + setEnabled(true); + } + }); + + pgBar.addUpdateListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + revalidate(); + repaint(); + } + }); + setJMenuBar(createMenu()); booksByType = new HashMap(); @@ -185,8 +201,6 @@ class LocalReaderFrame extends JFrame { /** * Refresh the list of {@link LocalReaderBook}s from disk. * - * @param type - * the type of {@link Story} to load, or NULL for all types */ private void refreshBooks() { for (LocalReaderGroup group : booksByType.keySet()) { @@ -427,7 +441,8 @@ class LocalReaderFrame extends JFrame { if (selectedBook != null) { outOfUi(null, new Runnable() { public void run() { - reader.refresh(selectedBook.getMeta().getLuid()); + reader.clearLocalReaderCache(selectedBook.getMeta() + .getLuid()); selectedBook.setCached(false); SwingUtilities.invokeLater(new Runnable() { public void run() { @@ -453,12 +468,13 @@ class LocalReaderFrame extends JFrame { refresh.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (selectedBook != null) { - imprt(selectedBook.getMeta().getUrl(), new Runnable() { + final MetaData meta = selectedBook.getMeta(); + imprt(meta.getUrl(), new Runnable() { public void run() { - reader.delete(selectedBook.getMeta().getLuid()); - selectedBook = null; + reader.delete(meta.getLuid()); + LocalReaderFrame.this.selectedBook = null; } - }); + }, "Removing old copy"); } } }); @@ -480,11 +496,6 @@ class LocalReaderFrame extends JFrame { public void run() { reader.delete(selectedBook.getMeta().getLuid()); selectedBook = null; - SwingUtilities.invokeLater(new Runnable() { - public void run() { - refreshBooks(); - } - }); } }); } @@ -549,31 +560,32 @@ class LocalReaderFrame extends JFrame { * @param run * the action to run */ - private void outOfUi(final Progress pg, final Runnable run) { - pgBar.setProgress(pg); + private void outOfUi(Progress progress, final Runnable run) { + final Progress pg = new Progress(); + final Progress reload = new Progress("Reload local caches"); + if (progress == null) { + progress = new Progress(); + } + pg.addProgress(progress, 90); + pg.addProgress(reload, 10); + + invalidate(); + pgBar.setProgress(pg); + validate(); setEnabled(false); - pgBar.addActioListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - pgBar.setProgress(null); - setEnabled(true); - } - }); new Thread(new Runnable() { public void run() { run.run(); - if (pg == null) { - SwingUtilities.invokeLater(new Runnable() { - public void run() { - setEnabled(true); - } - }); - } else if (!pg.isDone()) { + refreshBooks(); + reload.setProgress(100); + if (!pg.isDone()) { + // will trigger pgBar ActionListener: pg.setProgress(pg.getMax()); } } - }).start(); + }, "outOfUi thread").start(); } /** @@ -612,7 +624,7 @@ class LocalReaderFrame extends JFrame { } if (url != null && !url.toString().isEmpty()) { - imprt(url.toString(), null); + imprt(url.toString(), null, null); } } @@ -626,13 +638,20 @@ class LocalReaderFrame extends JFrame { * @param onSuccess * Action to execute on success */ - private void imprt(final String url, final Runnable onSuccess) { - final Progress pg = new Progress("Importing " + url); + private void imprt(final String url, final Runnable onSuccess, + String onSuccessPgName) { + final Progress pg = new Progress(); + final Progress pgImprt = new Progress(); + final Progress pgOnSuccess = new Progress(onSuccessPgName); + pg.addProgress(pgImprt, 95); + pg.addProgress(pgOnSuccess, 5); + outOfUi(pg, new Runnable() { public void run() { Exception ex = null; try { - Instance.getLibrary().imprt(BasicReader.getUrl(url), pg); + Instance.getLibrary().imprt(BasicReader.getUrl(url), + pgImprt); } catch (IOException e) { ex = e; } @@ -640,25 +659,24 @@ class LocalReaderFrame extends JFrame { final Exception e = ex; final boolean ok = (e == null); - SwingUtilities.invokeLater(new Runnable() { - public void run() { - if (!ok) { - Instance.syserr(e); + + pgOnSuccess.setProgress(0); + if (!ok) { + Instance.syserr(e); + SwingUtilities.invokeLater(new Runnable() { + public void run() { JOptionPane.showMessageDialog( LocalReaderFrame.this, "Cannot import: " + url, e.getMessage(), JOptionPane.ERROR_MESSAGE); - - setEnabled(true); - } else { - refreshBooks(); - if (onSuccess != null) { - onSuccess.run(); - refreshBooks(); - } } + }); + } else { + if (onSuccess != null) { + onSuccess.run(); } - }); + } + pgOnSuccess.setProgress(100); } }); } diff --git a/src/be/nikiroo/fanfix/supported/BasicSupport.java b/src/be/nikiroo/fanfix/supported/BasicSupport.java index f255d5e..e3b6fab 100644 --- a/src/be/nikiroo/fanfix/supported/BasicSupport.java +++ b/src/be/nikiroo/fanfix/supported/BasicSupport.java @@ -401,6 +401,8 @@ public abstract class BasicSupport { return null; } + pg.setName("Retrieving " + story.getMeta().getTitle()); + setCurrentReferer(url); story.setChapters(new ArrayList()); -- 2.27.0