package pl.llp.aircasting.activity.extsens; import pl.llp.aircasting.R; import pl.llp.aircasting.helper.SettingsHelper; import pl.llp.aircasting.sensor.ExternalSensorDescriptor; import android.view.View; import java.util.List; import java.util.Map; class AdapterInteractor { private ExternalSensorActivity parent; private ConnectedSensorAdapter connectedSensorAdapter; private PairedSensorAdapter pairedSensorAdapter; private SettingsHelper settingsHelper; AdapterInteractor(ExternalSensorActivity parent, PairedSensorAdapter pairedSensorAdapter, ConnectedSensorAdapter connectedSensorAdapter, SettingsHelper settingsHelper) { this.parent = parent; this.pairedSensorAdapter = pairedSensorAdapter; this.connectedSensorAdapter = connectedSensorAdapter; this.settingsHelper = settingsHelper; } void updateKnownSensorListVisibility() { List<ExternalSensorDescriptor> descriptors = settingsHelper.knownSensors(); connectedSensorAdapter.updatePreviouslyConnected(descriptors); for (ExternalSensorDescriptor descriptor : descriptors) { pairedSensorAdapter.markAsConnected(descriptor); } pairedSensorAdapter.updateIfNecessary(); if(pairedSensorAdapter.getCount() > 0) { parent.findViewById(R.id.paired_sensor_list).setVisibility(View.VISIBLE); parent.findViewById(R.id.paired_sensors_label).setVisibility(View.VISIBLE); } else { parent.findViewById(R.id.paired_sensor_list).setVisibility(View.GONE); parent.findViewById(R.id.paired_sensors_label).setVisibility(View.GONE); } if (connectedSensorAdapter.getCount() > 0) { parent.findViewById(R.id.connected_sensors_label).setVisibility(View.VISIBLE); parent.findViewById(R.id.connected_sensors_list).setVisibility(View.VISIBLE); } else { parent.findViewById(R.id.connected_sensors_label).setVisibility(View.GONE); parent.findViewById(R.id.connected_sensors_list).setVisibility(View.GONE); } } public ExternalSensorDescriptor connectToActive(int position) { ExternalSensorDescriptor descriptor = pairedSensorAdapter.get(position); descriptor.setAction("disconnect"); pairedSensorAdapter.markAsConnected(position); connectedSensorAdapter.addSensor(descriptor); return descriptor; } public ExternalSensorDescriptor disconnect(int position) { Map<String, String> removed = connectedSensorAdapter.remove(position); ExternalSensorDescriptor sensor = ExternalSensorDescriptor.from(removed); pairedSensorAdapter.connectionFailedWith(sensor.getAddress()); updateKnownSensorListVisibility(); return sensor; } }