From 82b25df7ad37463f4937f0fe78cc7469ffb35158 Mon Sep 17 00:00:00 2001 From: m2049r Date: Sat, 21 Nov 2020 21:54:21 +0100 Subject: [PATCH] better node selection (#701) --- .../com/m2049r/xmrwallet/NodeFragment.java | 13 +++++-- .../com/m2049r/xmrwallet/data/NodeInfo.java | 35 ++++++------------- .../xmrwallet/layout/NodeInfoAdapter.java | 8 ++++- app/src/main/res/layout/item_node.xml | 33 +++++++++++------ 4 files changed, 51 insertions(+), 38 deletions(-) diff --git a/app/src/main/java/com/m2049r/xmrwallet/NodeFragment.java b/app/src/main/java/com/m2049r/xmrwallet/NodeFragment.java index 74c7dac..f5eda55 100644 --- a/app/src/main/java/com/m2049r/xmrwallet/NodeFragment.java +++ b/app/src/main/java/com/m2049r/xmrwallet/NodeFragment.java @@ -59,6 +59,7 @@ import java.text.NumberFormat; import java.util.Collection; import java.util.HashSet; import java.util.Iterator; +import java.util.Objects; import java.util.Set; import timber.log.Timber; @@ -214,9 +215,15 @@ public class NodeFragment extends Fragment nodeItem.setFavourite(true); activityCallback.setFavouriteNodes(nodeList); } - nodeItem.setSelected(true); - activityCallback.setNode(nodeItem); // this marks it as selected & saves it as well - nodesAdapter.dataSetChanged(); // to refresh test results + AsyncTask.execute(() -> { + activityCallback.setNode(nodeItem); // this marks it as selected & saves it as well + nodeItem.setSelecting(false); + try { + Objects.requireNonNull(getActivity()).runOnUiThread(() -> nodesAdapter.allowClick(true)); + } catch (NullPointerException ex) { + // it's ok + } + }); } // open up edit dialog diff --git a/app/src/main/java/com/m2049r/xmrwallet/data/NodeInfo.java b/app/src/main/java/com/m2049r/xmrwallet/data/NodeInfo.java index 7531973..b4d8d7a 100644 --- a/app/src/main/java/com/m2049r/xmrwallet/data/NodeInfo.java +++ b/app/src/main/java/com/m2049r/xmrwallet/data/NodeInfo.java @@ -36,6 +36,8 @@ import java.util.Comparator; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; +import lombok.Getter; +import lombok.Setter; import okhttp3.HttpUrl; import okhttp3.MediaType; import okhttp3.OkHttpClient; @@ -49,12 +51,21 @@ public class NodeInfo extends Node { final static public int MIN_MAJOR_VERSION = 14; final static public String RPC_VERSION = "2.0"; + @Getter private long height = 0; + @Getter private long timestamp = 0; + @Getter private int majorVersion = 0; + @Getter private double responseTime = Double.MAX_VALUE; + @Getter private int responseCode = 0; + @Getter private boolean tested = false; + @Getter + @Setter + private boolean selecting = false; public void clear() { height = 0; @@ -65,10 +76,6 @@ public class NodeInfo extends Node { tested = false; } - public boolean isTested() { - return tested; - } - static public NodeInfo fromString(String nodeString) { try { return new NodeInfo(nodeString); @@ -118,26 +125,6 @@ public class NodeInfo extends Node { super(); } - public long getHeight() { - return height; - } - - public long getTimestamp() { - return timestamp; - } - - public int getMajorVersion() { - return majorVersion; - } - - public double getResponseTime() { - return responseTime; - } - - public int getResponseCode() { - return responseCode; - } - public boolean isSuccessful() { return (responseCode >= 200) && (responseCode < 300); } diff --git a/app/src/main/java/com/m2049r/xmrwallet/layout/NodeInfoAdapter.java b/app/src/main/java/com/m2049r/xmrwallet/layout/NodeInfoAdapter.java index b1643b3..c3eb244 100644 --- a/app/src/main/java/com/m2049r/xmrwallet/layout/NodeInfoAdapter.java +++ b/app/src/main/java/com/m2049r/xmrwallet/layout/NodeInfoAdapter.java @@ -112,6 +112,7 @@ public class NodeInfoAdapter extends RecyclerView.Adapter - + android:layout_centerInParent="true"> + + + + + +