Search in sources :

Example 1 with DialogSensorsBinding

use of org.openbot.databinding.DialogSensorsBinding in project OpenBot by isl-org.

the class SensorsDialog method onCreateView.

@SuppressLint("NotifyDataSetChanged")
@Override
public View onCreateView(@NotNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    SharedPreferencesManager preferencesManager = new SharedPreferencesManager(requireContext());
    DialogSensorsBinding binding = DialogSensorsBinding.inflate(LayoutInflater.from(getContext()));
    SensorManager sensorManager = (SensorManager) requireActivity().getSystemService(Context.SENSOR_SERVICE);
    List<Sensor> sensorList = sensorManager.getSensorList(Sensor.TYPE_ALL);
    HashMap<String, Boolean> list = new LinkedHashMap<>();
    list.put(Enums.SensorType.VEHICLE.getSensor(), preferencesManager.getSensorStatus(Enums.SensorType.VEHICLE.getSensor()));
    // Every modern phone has GPS
    list.put(Enums.SensorType.GPS.getSensor(), preferencesManager.getSensorStatus(Enums.SensorType.GPS.getSensor()));
    for (Sensor sensor : sensorList) {
        for (Enums.SensorType name : Enums.SensorType.values()) if (sensor.getStringType().toLowerCase().contains(name.getSensor().toLowerCase())) {
            list.put(name.getSensor(), preferencesManager.getSensorStatus(name.getSensor()));
            break;
        }
    }
    SensorListAdapter adapter = new SensorListAdapter(list, binding.selectAllCheck, preferencesManager);
    binding.listView.setLayoutManager(new LinearLayoutManager(requireContext()));
    binding.listView.setAdapter(adapter);
    binding.dismiss.setOnClickListener(v -> dismiss());
    int sensorStatusCount = 0;
    for (boolean b : new ArrayList<>(list.values())) if (b)
        sensorStatusCount++;
    else
        break;
    if (list.values().size() == sensorStatusCount) {
        binding.selectAllCheck.setChecked(true);
        binding.selectAllCheck.setText(getResources().getText(R.string.clearAll));
    } else {
        binding.selectAllCheck.setChecked(false);
        binding.selectAllCheck.setText(getResources().getText(R.string.selectAll));
    }
    binding.selectAllCheck.setOnClickListener(v -> {
        for (Map.Entry<String, Boolean> entry : list.entrySet()) preferencesManager.setSensorStatus(binding.selectAllCheck.isChecked(), entry.getKey());
        binding.selectAllCheck.setChecked(binding.selectAllCheck.isChecked());
        binding.selectAllCheck.setText(binding.selectAllCheck.isChecked() ? getResources().getText(R.string.clearAll) : getResources().getText(R.string.selectAll));
        adapter.updateStatusValue(binding.selectAllCheck.isChecked());
        adapter.notifyDataSetChanged();
    });
    binding.delay.setText(String.valueOf(preferencesManager.getDelay()));
    binding.delay.addTextChangedListener(new TextWatcher() {

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
        }

        @Override
        public void afterTextChanged(Editable s) {
            if (!s.toString().isEmpty())
                preferencesManager.setDelay(Integer.parseInt(s.toString()));
        }
    });
    return binding.getRoot();
}
Also used : ArrayList(java.util.ArrayList) SharedPreferencesManager(org.openbot.env.SharedPreferencesManager) DialogSensorsBinding(org.openbot.databinding.DialogSensorsBinding) LinearLayoutManager(androidx.recyclerview.widget.LinearLayoutManager) SuppressLint(android.annotation.SuppressLint) LinkedHashMap(java.util.LinkedHashMap) Enums(org.openbot.utils.Enums) SensorManager(android.hardware.SensorManager) TextWatcher(android.text.TextWatcher) Editable(android.text.Editable) HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) Map(java.util.Map) Sensor(android.hardware.Sensor) SuppressLint(android.annotation.SuppressLint)

Aggregations

SuppressLint (android.annotation.SuppressLint)1 Sensor (android.hardware.Sensor)1 SensorManager (android.hardware.SensorManager)1 Editable (android.text.Editable)1 TextWatcher (android.text.TextWatcher)1 LinearLayoutManager (androidx.recyclerview.widget.LinearLayoutManager)1 ArrayList (java.util.ArrayList)1 HashMap (java.util.HashMap)1 LinkedHashMap (java.util.LinkedHashMap)1 Map (java.util.Map)1 DialogSensorsBinding (org.openbot.databinding.DialogSensorsBinding)1 SharedPreferencesManager (org.openbot.env.SharedPreferencesManager)1 Enums (org.openbot.utils.Enums)1