diff --git a/EngineDriver/src/main/AndroidManifest.xml b/EngineDriver/src/main/AndroidManifest.xml index 77e7eb65c..38e60e492 100644 --- a/EngineDriver/src/main/AndroidManifest.xml +++ b/EngineDriver/src/main/AndroidManifest.xml @@ -2,8 +2,8 @@ + android:versionCode="67" + android:versionName="2.22.67" android:installLocation="auto"> @@ -18,9 +18,10 @@ android:smallScreens="true" /> - + diff --git a/EngineDriver/src/main/assets/about_page.html b/EngineDriver/src/main/assets/about_page.html index 867a827e1..bef534656 100644 --- a/EngineDriver/src/main/assets/about_page.html +++ b/EngineDriver/src/main/assets/about_page.html @@ -23,7 +23,6 @@

Engine Driver Throttle for Android

  • update project to Gradle build tools
  • bump MinSDKVersion to 15 (from 7)
  • replace JmDNS source with jar file.
  • -
  • Move to Gradle
  • Spanish and Catalan translations by Luis Zamora.
  • rns = mainapp.roster_entries.keySet(); //copy to prevent concurrentmodification + ArrayList rns = new ArrayList<>(mainapp.roster_entries.keySet()); //copy to prevent concurrentmodification for (String rostername : rns) { if ((prefRosterFilter.length() == 0) || (rostername.toUpperCase().contains(prefRosterFilter.toUpperCase()))) { // put key and values into temp hashmap diff --git a/EngineDriver/src/main/java/jmri/enginedriver/threaded_application.java b/EngineDriver/src/main/java/jmri/enginedriver/threaded_application.java index 2c903a905..fbb57f925 100644 --- a/EngineDriver/src/main/java/jmri/enginedriver/threaded_application.java +++ b/EngineDriver/src/main/java/jmri/enginedriver/threaded_application.java @@ -1861,11 +1861,13 @@ public void set_default_function_labels(boolean getAll) { while (settings_reader.ready()) { String line = settings_reader.readLine(); String temp[] = line.split(":"); - if (i <= numberOfDefaultFunctionLabels) { - function_labels_default.put(Integer.parseInt(temp[1]), temp[0]); //put funcs and labels into global default - } - if (i <= numberOfDefaultFunctionLabelsForRoster) { - function_labels_default_for_roster.put(Integer.parseInt(temp[1]), temp[0]); //put funcs and labels into global default + if (temp.length == 2) { + if (i <= numberOfDefaultFunctionLabels) { + function_labels_default.put(Integer.parseInt(temp[1]), temp[0]); //put funcs and labels into global default + } + if (i <= numberOfDefaultFunctionLabelsForRoster) { + function_labels_default_for_roster.put(Integer.parseInt(temp[1]), temp[0]); //put funcs and labels into global default + } } i++; } diff --git a/EngineDriver/src/main/java/jmri/enginedriver/throttle.java b/EngineDriver/src/main/java/jmri/enginedriver/throttle.java index b4cbed92c..cd9e72840 100644 --- a/EngineDriver/src/main/java/jmri/enginedriver/throttle.java +++ b/EngineDriver/src/main/java/jmri/enginedriver/throttle.java @@ -4118,7 +4118,7 @@ void set_function_labels_and_listeners_for_view(int whichThrottle) { && mainapp.function_labels[whichThrottle].size() > 0) { function_labels_temp = new LinkedHashMap<>(mainapp.function_labels[whichThrottle]); } else { - if (!mainapp.consists[whichThrottle].isLeadFromRoster()) { + if (mainapp.consists[whichThrottle]!=null && !mainapp.consists[whichThrottle].isLeadFromRoster()) { function_labels_temp = mainapp.function_labels_default; } else { function_labels_temp = mainapp.function_labels_default_for_roster; diff --git a/changelog-and-todo-list.txt b/changelog-and-todo-list.txt index b51ce9f59..2bea239ec 100644 --- a/changelog-and-todo-list.txt +++ b/changelog-and-todo-list.txt @@ -1,10 +1,12 @@ **Version 2.22 * New 'Big Button' throttle screen option. (Only one throttle with no slider.) - * Option to always treat F1 & F2 as sound for the Selective Lead Sounds option - * prevent crash reported to Play Store - * update project to Gradle build tools - * bump MinSDKVersion to 14 (from 7) - * replace JmDNS source with jar file + * New Colourful/Colorful theme + * Option to always treat F1 & F2 as sound for the Selective Lead Sounds option + * update project to Gradle build tools + * bump MinSDKVersion to 14 (from 7) + * replace JmDNS source with jar file + * prevent crashes reported to Play Store + * Spanish and Catalan translations by Luis Zamora **Version 2.21 * remove turnout hardware list, WiThrottle Server changed to also handle numeric-only * changes to EngineDriver icon @@ -422,7 +424,6 @@ * TODO: if user enters ":" into address input, jump to port input * TODO: allow user to delete individual recents (long-press?) * threaded_application - * TODO: limit/throttle message traffic via queue to avoid overloading hardware, esp. after acquire/release * TODO: remember consist details * TODO: when MT+ received, if the loco is in a consist, request the consist address also * TODO: rewrite readTimer logic, to start back up rather than creating a new one @@ -440,7 +441,6 @@ * TODO: add more info to Exit dialog, e.g. "2 locos will be stopped and released" * TODO: advise user if layout power is off (need to check behavior to see if this should be warning or error) * TODO: add preference to disable other hardware buttons in throttle screen - * TODO: add graphics (slider, stop, directions, functions?) add colors * TODO: unset all states when loco not selected * select_loco: * TODO: disconnect connections made by roster stuff @@ -448,9 +448,8 @@ * TODO: simplify select_loco by removing handler * TODO: for "auto" handle the Digitrax numbering, i.e. 1-128 is short * TODO: allow user to delete individual recents (long-press?) - * preferences: - * TODO: Reset should restart - * TODO: show error if invalid entry + * log_viewer: + * TODO: option to save as file * * These require changes to WiThrottle * resend turnout and routes when items are added or removed, by adding listeners to WiT