SW: less aggressivity on nsclient connections
This commit is contained in:
parent
03f8a7c629
commit
e2896cbc5d
5 changed files with 49 additions and 9 deletions
|
@ -58,14 +58,11 @@ import info.nightscout.utils.SP;
|
|||
public class SWDefinition {
|
||||
private static Logger log = LoggerFactory.getLogger(SWDefinition.class);
|
||||
|
||||
private String packageName;
|
||||
|
||||
private AppCompatActivity activity;
|
||||
private List<SWScreen> screens = new ArrayList<>();
|
||||
|
||||
public void setActivity(AppCompatActivity activity) {
|
||||
this.activity = activity;
|
||||
packageName = activity.getPackageName();
|
||||
}
|
||||
|
||||
public AppCompatActivity getActivity() {
|
||||
|
@ -184,11 +181,13 @@ public class SWDefinition {
|
|||
.visibility(() -> !NSClientPlugin.getPlugin().isEnabled(PluginType.GENERAL)))
|
||||
.add(new SWEditUrl()
|
||||
.preferenceId(R.string.key_nsclientinternal_url)
|
||||
.updateDelay(5)
|
||||
.label(R.string.nsclientinternal_url_title)
|
||||
.comment(R.string.nsclientinternal_url_dialogmessage))
|
||||
.add(new SWEditString()
|
||||
.validator(text -> text.length() >= 12)
|
||||
.preferenceId(R.string.key_nsclientinternal_api_secret)
|
||||
.updateDelay(5)
|
||||
.label(R.string.nsclientinternal_secret_dialogtitle)
|
||||
.comment(R.string.nsclientinternal_secret_dialogmessage))
|
||||
.add(new SWBreak())
|
||||
|
@ -531,10 +530,12 @@ public class SWDefinition {
|
|||
.visibility(() -> !NSClientPlugin.getPlugin().isEnabled(PluginType.GENERAL)))
|
||||
.add(new SWEditUrl()
|
||||
.preferenceId(R.string.key_nsclientinternal_url)
|
||||
.updateDelay(5)
|
||||
.label(R.string.nsclientinternal_url_title)
|
||||
.comment(R.string.nsclientinternal_url_dialogmessage))
|
||||
.add(new SWEditString()
|
||||
.validator(text -> text.length() >= 12)
|
||||
.updateDelay(5)
|
||||
.preferenceId(R.string.key_nsclientinternal_api_secret)
|
||||
.label(R.string.nsclientinternal_secret_dialogtitle)
|
||||
.comment(R.string.nsclientinternal_secret_dialogmessage))
|
||||
|
|
|
@ -21,6 +21,7 @@ public class SWEditString extends SWItem {
|
|||
private static Logger log = LoggerFactory.getLogger(SWEditString.class);
|
||||
|
||||
private SWTextValidator validator = null;
|
||||
private int updateDelay = 0;
|
||||
|
||||
public SWEditString() {
|
||||
super(Type.STRING);
|
||||
|
@ -58,7 +59,7 @@ public class SWEditString extends SWItem {
|
|||
@Override
|
||||
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||
if (validator != null && validator.isValid(s.toString()))
|
||||
save(s.toString());
|
||||
save(s.toString(), updateDelay);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -76,4 +77,9 @@ public class SWEditString extends SWItem {
|
|||
this.validator = validator;
|
||||
return this;
|
||||
}
|
||||
|
||||
public SWEditString updateDelay(int updateDelay) {
|
||||
this.updateDelay = updateDelay;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,6 +22,8 @@ import info.nightscout.utils.SP;
|
|||
public class SWEditUrl extends SWItem {
|
||||
private static Logger log = LoggerFactory.getLogger(SWEditUrl.class);
|
||||
|
||||
private int updateDelay = 0;
|
||||
|
||||
public SWEditUrl() {
|
||||
super(Type.URL);
|
||||
}
|
||||
|
@ -58,7 +60,7 @@ public class SWEditUrl extends SWItem {
|
|||
@Override
|
||||
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||
if (Patterns.WEB_URL.matcher(s).matches())
|
||||
save(s.toString());
|
||||
save(s.toString(), updateDelay);
|
||||
else
|
||||
MainApp.bus().post(new EventSWLabel(MainApp.gs(R.string.error_url_not_valid)));
|
||||
}
|
||||
|
@ -74,4 +76,9 @@ public class SWEditUrl extends SWItem {
|
|||
return this;
|
||||
}
|
||||
|
||||
public SWEditUrl updateDelay(int updateDelay) {
|
||||
this.updateDelay = updateDelay;
|
||||
return this;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -6,14 +6,23 @@ import android.widget.LinearLayout;
|
|||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.ScheduledExecutorService;
|
||||
import java.util.concurrent.ScheduledFuture;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import info.nightscout.androidaps.MainApp;
|
||||
import info.nightscout.androidaps.events.EventPreferenceChange;
|
||||
import info.nightscout.androidaps.logging.L;
|
||||
import info.nightscout.androidaps.setupwizard.events.EventSWUpdate;
|
||||
import info.nightscout.utils.SP;
|
||||
|
||||
public class SWItem {
|
||||
private static Logger log = LoggerFactory.getLogger(SWItem.class);
|
||||
|
||||
private static final ScheduledExecutorService eventWorker = Executors.newSingleThreadScheduledExecutor();
|
||||
private static ScheduledFuture<?> scheduledEventPost = null;
|
||||
|
||||
public enum Type {
|
||||
NONE,
|
||||
TEXT,
|
||||
|
@ -66,10 +75,9 @@ public class SWItem {
|
|||
return this;
|
||||
}
|
||||
|
||||
public void save(String value) {
|
||||
public void save(String value, int updateDelay) {
|
||||
SP.putString(preferenceId, value);
|
||||
MainApp.bus().post(new EventPreferenceChange(preferenceId));
|
||||
MainApp.bus().post(new EventSWUpdate());
|
||||
scheduleChange(updateDelay);
|
||||
}
|
||||
|
||||
public static LinearLayout generateLayout(View view) {
|
||||
|
@ -83,4 +91,22 @@ public class SWItem {
|
|||
|
||||
public void processVisibility() {
|
||||
}
|
||||
|
||||
private void scheduleChange(int updateDelay) {
|
||||
class PostRunnable implements Runnable {
|
||||
public void run() {
|
||||
if (L.isEnabled(L.CORE))
|
||||
log.debug("Firing EventPreferenceChange");
|
||||
MainApp.bus().post(new EventPreferenceChange(preferenceId));
|
||||
MainApp.bus().post(new EventSWUpdate());
|
||||
scheduledEventPost = null;
|
||||
}
|
||||
}
|
||||
// cancel waiting task to prevent sending multiple posts
|
||||
if (scheduledEventPost != null)
|
||||
scheduledEventPost.cancel(false);
|
||||
Runnable task = new PostRunnable();
|
||||
final int sec = updateDelay;
|
||||
scheduledEventPost = eventWorker.schedule(task, sec, TimeUnit.SECONDS);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -69,7 +69,7 @@ public class SWRadioButton extends SWItem {
|
|||
|
||||
radioGroup.setOnCheckedChangeListener((group, checkedId) -> {
|
||||
int i = (int) group.findViewById(checkedId).getTag();
|
||||
save(values()[i]);
|
||||
save(values()[i], 0);
|
||||
});
|
||||
layout.addView(radioGroup);
|
||||
|
||||
|
|
Loading…
Reference in a new issue