Skip to content

Commit

Permalink
Using the programming speaking text type for narrating progress
Browse files Browse the repository at this point in the history
  • Loading branch information
marigostra committed May 11, 2020
1 parent 18f850b commit a7b109e
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 37 deletions.
25 changes: 19 additions & 6 deletions src/main/java/org/luwrain/app/notepad/App.java
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ void activateMode(Mode mode)
boolean narrating(String[] text)
{
NullCheck.notNullItems(text, "text");
if (this.narratingTask != null && !this.narratingTask.isDone())
if (isBusy())
return false;
final NarratingText narratingText = new NarratingText();
narratingText.split(text);
Expand Down Expand Up @@ -191,11 +191,21 @@ boolean narrating(String[] text)

private void cancelNarrating()
{
if (narratingTask == null || narratingTask.isDone())
if (isBusy() && narrating != null)
{
narrating.interrupting = true;
return;
}
this.narrating = null;
this.narratingTask = null;
getLayout().setBasicLayout(mainLayout.getLayout());
getLuwrain().announceActiveArea();
}
}

void finishedNarrating()
{
narrating = null;
narratingTask = null;
}

String[] read() throws IOException
Expand All @@ -213,8 +223,6 @@ void save(String[] lines) throws IOException
boolean onInputEvent(Area area, KeyboardEvent event, Runnable closing)
{
NullCheck.notNull(area, "area");
if (super.onInputEvent(area, event))
return true;
if (event.isSpecial())
switch(event.getSpecial())
{
Expand All @@ -224,7 +232,7 @@ boolean onInputEvent(Area area, KeyboardEvent event, Runnable closing)
closeApp();
return true;
}
return false;
return super.onInputEvent(area, event);
}

@Override public boolean onInputEvent(Area area, KeyboardEvent event)
Expand All @@ -249,6 +257,11 @@ Settings getSett()
return this.sett;
}

@Override public boolean isBusy()
{
return narratingTask != null && !narratingTask.isDone();
}

@Override public AreaLayout getDefaultAreaLayout()
{
return mainLayout.getLayout();
Expand Down
70 changes: 39 additions & 31 deletions src/main/java/org/luwrain/app/notepad/NarratingLayout.java
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ final class NarratingLayout extends LayoutBase implements Narrating.Listener
NullCheck.notNull(event, "event");
if (app.onInputEvent(this, event, closing))
return true;
return super.onInputEvent(event);
return super.onInputEvent(event);
}
@Override public boolean onSystemEvent(EnvironmentEvent event)
{
Expand All @@ -57,46 +57,54 @@ final class NarratingLayout extends LayoutBase implements Narrating.Listener
return true;
return super.onAreaQuery(query);
}
@Override public void announceLine(int index, String line)
{
NullCheck.notNull(line, "line");
app.getLuwrain().setEventResponse(DefaultEventResponse.text(app.getLuwrain().getSpeakableText(line, Luwrain.SpeakableTextType.PROGRAMMING)));
}
};
narratingArea.addLine(app.getStrings().narratingProgress("0.0%"));
narratingArea.addLine("");
narratingArea.addLine("");
}

@Override public void writeMessage(String text)
{
NullCheck.notNull(text, "text");
app.getLuwrain().runUiSafely(()->{
narratingArea.insertLine(narratingArea.getLineCount() - 2, text);
});
}
@Override public void writeMessage(String text)
{
NullCheck.notNull(text, "text");
app.getLuwrain().runUiSafely(()->{
narratingArea.insertLine(narratingArea.getLineCount() - 2, text);
});
}

@Override public void progressUpdate(int sentsProcessed, int sentsTotal)
{
final float value = ((float)sentsProcessed * 100) / sentsTotal;
app.getLuwrain().runUiSafely(()->{
narratingArea.setLine(narratingArea.getLineCount() - 2, app.getStrings().narratingProgress(String.format("%.1f", value)) + "%");
});
}
@Override public void progressUpdate(int sentsProcessed, int sentsTotal)
{
final float value = ((float)sentsProcessed * 100) / sentsTotal;
app.getLuwrain().runUiSafely(()->{
narratingArea.setLine(narratingArea.getLineCount() - 2, app.getStrings().narratingProgress(String.format("%.1f", value)) + "%");
});
}

@Override public void done()
{
app.getLuwrain().runUiSafely(()->{
narratingArea.setLine(narratingArea.getLineCount() - 2, app.getStrings().narratingDone());
app.getLuwrain().message(app.getStrings().narratingDone(), Luwrain.MessageType.DONE);
});
}
@Override public void done()
{
app.getLuwrain().runUiSafely(()->{
app.finishedNarrating();
app.getLuwrain().onAreaNewBackgroundSound(narratingArea);
narratingArea.setLine(narratingArea.getLineCount() - 2, app.getStrings().narratingDone());
app.getLuwrain().message(app.getStrings().narratingDone(), Luwrain.MessageType.DONE);
});
}

@Override public void cancelled()
{
app.getLuwrain().runUiSafely(()->{
narratingArea.setLine(narratingArea.getLineCount() - 2, app.getStrings().narratingCancelled());
app.getLuwrain().message(app.getStrings().narratingCancelled(), Luwrain.MessageType.DONE);
});
}
@Override public void cancelled()
{
app.getLuwrain().runUiSafely(()->{
app.finishedNarrating();
app.getLuwrain().onAreaNewBackgroundSound(narratingArea);
narratingArea.setLine(narratingArea.getLineCount() - 2, app.getStrings().narratingCancelled());
app.getLuwrain().message(app.getStrings().narratingCancelled(), Luwrain.MessageType.DONE);
});
}

AreaLayout getLayout()
{
return new AreaLayout(narratingArea);
}
}

0 comments on commit a7b109e

Please sign in to comment.