Only show plugin status when it's relevant.

This commit is contained in:
akwizgran
2020-04-28 15:27:10 +01:00
parent 57b0641e5f
commit b189a38f62
2 changed files with 42 additions and 22 deletions

View File

@@ -41,6 +41,8 @@ import androidx.core.content.ContextCompat;
import androidx.lifecycle.ViewModelProvider; import androidx.lifecycle.ViewModelProvider;
import androidx.lifecycle.ViewModelProviders; import androidx.lifecycle.ViewModelProviders;
import static android.view.View.GONE;
import static android.view.View.VISIBLE;
import static org.briarproject.bramble.api.plugin.Plugin.State.ACTIVE; import static org.briarproject.bramble.api.plugin.Plugin.State.ACTIVE;
import static org.briarproject.bramble.api.plugin.Plugin.State.DISABLED; import static org.briarproject.bramble.api.plugin.Plugin.State.DISABLED;
import static org.briarproject.bramble.api.plugin.Plugin.State.ENABLING; import static org.briarproject.bramble.api.plugin.Plugin.State.ENABLING;
@@ -155,8 +157,9 @@ public class TransportsActivity extends BriarActivity {
TextView deviceStatus = view.findViewById(R.id.deviceStatus); TextView deviceStatus = view.findViewById(R.id.deviceStatus);
deviceStatus.setText(getBulletString(t.deviceStatus)); deviceStatus.setText(getBulletString(t.deviceStatus));
TextView appStatus = view.findViewById(R.id.appStatus); TextView pluginStatus = view.findViewById(R.id.appStatus);
appStatus.setText(getBulletString(t.pluginStatus)); pluginStatus.setText(getBulletString(t.pluginStatus));
pluginStatus.setVisibility(t.showPluginStatus ? VISIBLE : GONE);
return view; return view;
} }
@@ -181,13 +184,13 @@ public class TransportsActivity extends BriarActivity {
transports.add(bt); transports.add(bt);
viewModel.getNetworkStatus().observe(this, status -> { viewModel.getNetworkStatus().observe(this, status -> {
tor.deviceStatus = getTorDeviceStatus(status); updateTorResources(tor, status);
wifi.deviceStatus = getWifiDeviceStatus(status); updateWifiResources(wifi, status);
transportsAdapter.notifyDataSetChanged(); transportsAdapter.notifyDataSetChanged();
}); });
viewModel.getBluetoothTurnedOn().observe(this, on -> { viewModel.getBluetoothTurnedOn().observe(this, on -> {
bt.deviceStatus = getBtDeviceStatus(on); updateBtResources(bt, on);
transportsAdapter.notifyDataSetChanged(); transportsAdapter.notifyDataSetChanged();
}); });
} }
@@ -203,23 +206,38 @@ public class TransportsActivity extends BriarActivity {
else return android.R.color.tertiary_text_light; else return android.R.color.tertiary_text_light;
} }
@StringRes private void updateTorResources(Transport tor, NetworkStatus status) {
private int getTorDeviceStatus(NetworkStatus status) { if (status.isConnected()) {
if (!status.isConnected()) return R.string.tor_device_status_offline; if (status.isWifi()) {
if (status.isWifi()) return R.string.tor_device_status_online_wifi; tor.deviceStatus = R.string.tor_device_status_online_wifi;
else return R.string.tor_device_status_online_mobile_data; } else {
tor.deviceStatus = R.string.tor_device_status_online_mobile;
}
tor.showPluginStatus = true;
} else {
tor.deviceStatus = R.string.tor_device_status_offline;
tor.showPluginStatus = false;
}
} }
@StringRes private void updateWifiResources(Transport wifi, NetworkStatus status) {
private int getWifiDeviceStatus(NetworkStatus status) { if (status.isWifi()) {
if (status.isWifi()) return R.string.lan_device_status_on; wifi.deviceStatus = R.string.lan_device_status_on;
else return R.string.lan_device_status_off; wifi.showPluginStatus = true;
} else {
wifi.deviceStatus = R.string.lan_device_status_off;
wifi.showPluginStatus = false;
}
} }
@StringRes private void updateBtResources(Transport bt, boolean on) {
private int getBtDeviceStatus(boolean on) { if (on) {
if (on) return R.string.bt_device_status_on; bt.deviceStatus = R.string.bt_device_status_on;
else return R.string.bt_device_status_off; bt.showPluginStatus = true;
} else {
bt.deviceStatus = R.string.bt_device_status_off;
bt.showPluginStatus = false;
}
} }
@StringRes @StringRes
@@ -263,7 +281,7 @@ public class TransportsActivity extends BriarActivity {
@StringRes int pluginStatus) { @StringRes int pluginStatus) {
int iconColor = getIconColor(STARTING_STOPPING); int iconColor = getIconColor(STARTING_STOPPING);
Transport transport = new Transport(id, iconDrawable, iconColor, title, Transport transport = new Transport(id, iconDrawable, iconColor, title,
switchLabel, false, deviceStatus, pluginStatus); switchLabel, false, deviceStatus, pluginStatus, false);
viewModel.getPluginState(id).observe(this, state -> { viewModel.getPluginState(id).observe(this, state -> {
transport.iconColor = getIconColor(state); transport.iconColor = getIconColor(state);
transport.pluginStatus = getPluginStatus(transport.id, state); transport.pluginStatus = getPluginStatus(transport.id, state);
@@ -289,12 +307,13 @@ public class TransportsActivity extends BriarActivity {
private int iconColor; private int iconColor;
@StringRes @StringRes
private int deviceStatus, pluginStatus; private int deviceStatus, pluginStatus;
private boolean isSwitchChecked; private boolean isSwitchChecked, showPluginStatus;
private Transport(TransportId id, @DrawableRes int iconDrawable, private Transport(TransportId id, @DrawableRes int iconDrawable,
@ColorRes int iconColor, @StringRes int title, @ColorRes int iconColor, @StringRes int title,
@StringRes int switchLabel, boolean isSwitchChecked, @StringRes int switchLabel, boolean isSwitchChecked,
@StringRes int deviceStatus, @StringRes int pluginStatus) { @StringRes int deviceStatus, @StringRes int pluginStatus,
boolean showPluginStatus) {
this.id = id; this.id = id;
this.iconDrawable = iconDrawable; this.iconDrawable = iconDrawable;
this.iconColor = iconColor; this.iconColor = iconColor;
@@ -303,6 +322,7 @@ public class TransportsActivity extends BriarActivity {
this.isSwitchChecked = isSwitchChecked; this.isSwitchChecked = isSwitchChecked;
this.deviceStatus = deviceStatus; this.deviceStatus = deviceStatus;
this.pluginStatus = pluginStatus; this.pluginStatus = pluginStatus;
this.showPluginStatus = showPluginStatus;
} }
} }
} }

View File

@@ -73,7 +73,7 @@
<string name="transport_tor">Internet</string> <string name="transport_tor">Internet</string>
<string name="tor_status">Internet status:</string> <string name="tor_status">Internet status:</string>
<string name="tor_device_status_online_wifi">Your phone has Internet access via Wi-Fi</string> <string name="tor_device_status_online_wifi">Your phone has Internet access via Wi-Fi</string>
<string name="tor_device_status_online_mobile_data">Your phone has Internet access via mobile data</string> <string name="tor_device_status_online_mobile">Your phone has Internet access via mobile data</string>
<string name="tor_device_status_offline">Your phone does not have Internet access</string> <string name="tor_device_status_offline">Your phone does not have Internet access</string>
<string name="tor_plugin_status_enabling">Briar is connecting to the Internet</string> <string name="tor_plugin_status_enabling">Briar is connecting to the Internet</string>
<string name="tor_plugin_status_active">Briar is connected to the Internet</string> <string name="tor_plugin_status_active">Briar is connected to the Internet</string>