diff --git a/src/main/java/org/thoughtcrime/securesms/TransportListActivity.java b/src/main/java/org/thoughtcrime/securesms/TransportListActivity.java index 895336155..4968dc0eb 100644 --- a/src/main/java/org/thoughtcrime/securesms/TransportListActivity.java +++ b/src/main/java/org/thoughtcrime/securesms/TransportListActivity.java @@ -30,6 +30,7 @@ public class TransportListActivity extends BaseActionBarActivity private FloatingActionButton fabAdd; private Rpc rpc; private int accId; + private String mainTransportAddr; @Override protected void onCreate(Bundle savedInstanceState) { @@ -67,9 +68,11 @@ public class TransportListActivity extends BaseActionBarActivity Util.runOnBackground(() -> { try { List transports = rpc.listTransports(accId); - Util.runOnMain(() -> adapter.setTransports(transports)); + mainTransportAddr = DcHelper.get(this, DcHelper.CONFIG_CONFIGURED_ADDRESS); + Util.runOnMain(() -> adapter.setTransports(transports, mainTransportAddr)); } catch (RpcException e) { - Util.runOnMain(() -> adapter.setTransports(null)); + mainTransportAddr = DcHelper.get(this, DcHelper.CONFIG_CONFIGURED_ADDRESS); + Util.runOnMain(() -> adapter.setTransports(null, mainTransportAddr)); } }); } @@ -81,6 +84,17 @@ public class TransportListActivity extends BaseActionBarActivity @Override public void onTransportClick(EnteredLoginParam transport) { + // Clicking on a transport makes it the main transport + if (transport.addr != null && !transport.addr.equals(mainTransportAddr)) { + Util.runOnBackground(() -> { + DcHelper.getContext(this).setConfig(DcHelper.CONFIG_CONFIGURED_ADDRESS, transport.addr); + Util.runOnMain(this::loadTransports); + }); + } + } + + @Override + public void onTransportEdit(EnteredLoginParam transport) { Intent intent = new Intent(this, EditTransportActivity.class); intent.putExtra(EXTRA_TRANSPORT_ADDR, transport.addr); startActivity(intent); diff --git a/src/main/java/org/thoughtcrime/securesms/TransportListAdapter.java b/src/main/java/org/thoughtcrime/securesms/TransportListAdapter.java index eb5dc6bd8..7c9a43651 100644 --- a/src/main/java/org/thoughtcrime/securesms/TransportListAdapter.java +++ b/src/main/java/org/thoughtcrime/securesms/TransportListAdapter.java @@ -18,9 +18,11 @@ public class TransportListAdapter extends RecyclerView.Adapter transports = new ArrayList<>(); private final OnTransportClickListener listener; + private String mainTransportAddr; public interface OnTransportClickListener { void onTransportClick(EnteredLoginParam transport); + void onTransportEdit(EnteredLoginParam transport); void onTransportDelete(EnteredLoginParam transport); } @@ -28,8 +30,9 @@ public class TransportListAdapter extends RecyclerView.Adapter transports) { + public void setTransports(List transports, String mainTransportAddr) { this.transports = transports != null ? transports : new ArrayList<>(); + this.mainTransportAddr = mainTransportAddr; notifyDataSetChanged(); } @@ -44,7 +47,8 @@ public class TransportListAdapter extends RecyclerView.Adapter { if (listener != null) { listener.onTransportClick(transport); } }); + editButton.setOnClickListener(v -> { + if (listener != null) { + listener.onTransportEdit(transport); + } + }); + deleteButton.setOnClickListener(v -> { if (listener != null) { listener.onTransportDelete(transport); diff --git a/src/main/res/layout/activity_transport_list.xml b/src/main/res/layout/activity_transport_list.xml index 13ae32841..5c0cbc362 100644 --- a/src/main/res/layout/activity_transport_list.xml +++ b/src/main/res/layout/activity_transport_list.xml @@ -4,6 +4,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" + android:fitsSystemWindows="true" android:background="?android:attr/windowBackground"> - + android:orientation="horizontal" + android:gravity="center_vertical"> + + + + + + + + Add Transport Remove Transport Edit Transport + Main Add this transport? The scanned QR code does not contain a valid transport.