blob: b2de3a25a89e758047693bce2058e87a16851f31 [file] [log] [blame]
/*
* Copyright (C) 2019 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.car.settings.units;
import android.car.Car;
import android.car.VehiclePropertyIds;
import android.car.VehicleUnit;
import android.car.hardware.property.CarPropertyManager;
import android.content.Context;
import android.provider.SearchIndexableResource;
import androidx.annotation.LayoutRes;
import com.android.car.settings.R;
import com.android.car.settings.common.CarSettingActivities;
import com.android.car.settings.common.SettingsFragment;
import com.android.car.settings.search.CarBaseSearchIndexProvider;
import com.android.settingslib.search.SearchIndexable;
import com.android.settingslib.search.SearchIndexableRaw;
import java.util.ArrayList;
import java.util.List;
/** Fragment to host Units-related preferences. */
@SearchIndexable
public class UnitsSettingsFragment extends SettingsFragment {
@Override
@LayoutRes
protected int getPreferenceScreenResId() {
return R.xml.units_fragment;
}
public static final CarBaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
new CarBaseSearchIndexProvider(R.xml.units_fragment,
CarSettingActivities.UnitsSettingsActivity.class) {
private CarPropertyManager mCarPropertyManager;
@Override
public List<SearchIndexableResource> getXmlResourcesToIndex(Context context,
boolean enabled) {
return null;
}
@Override
public List<SearchIndexableRaw> getRawDataToIndex(Context context,
boolean enabled) {
List<SearchIndexableRaw> rawData = new ArrayList<>();
Car car = Car.createCar(context);
mCarPropertyManager = (CarPropertyManager) car.getCarManager(
Car.PROPERTY_SERVICE);
if (mCarPropertyManager != null) {
boolean hasUnits = false;
if (isValidVehicleProperty(
VehiclePropertyIds.VEHICLE_SPEED_DISPLAY_UNITS)) {
hasUnits = true;
rawData.add(createRawDataEntry(context,
context.getString(R.string.pk_units_speed),
context.getString(R.string.units_speed_title),
context.getString(R.string.units_settings)));
}
if (isValidVehicleProperty(VehiclePropertyIds.DISTANCE_DISPLAY_UNITS)) {
hasUnits = true;
rawData.add(createRawDataEntry(context,
context.getString(R.string.pk_units_distance),
context.getString(R.string.units_distance_title),
context.getString(R.string.units_settings)));
}
if (isValidVehicleProperty(VehiclePropertyIds.FUEL_VOLUME_DISPLAY_UNITS)) {
hasUnits = true;
rawData.add(createRawDataEntry(context,
context.getString(R.string.pk_units_fuel_consumption),
context.getString(R.string.units_fuel_consumption_title),
context.getString(R.string.units_settings)));
rawData.add(createRawDataEntry(context,
context.getString(R.string.pk_units_volume),
context.getString(R.string.units_volume_title),
context.getString(R.string.units_settings)));
}
if (isValidVehicleProperty(VehiclePropertyIds.EV_BATTERY_DISPLAY_UNITS)) {
hasUnits = true;
rawData.add(createRawDataEntry(context,
context.getString(R.string.pk_units_energy_consumption),
context.getString(R.string.units_energy_consumption_title),
context.getString(R.string.units_settings)));
}
if (isValidVehicleProperty(
VehiclePropertyIds.HVAC_TEMPERATURE_DISPLAY_UNITS)) {
hasUnits = true;
rawData.add(createRawDataEntry(context,
context.getString(R.string.pk_units_temperature),
context.getString(R.string.units_temperature_title),
context.getString(R.string.units_settings)));
}
if (isValidVehicleProperty(
VehiclePropertyIds.TIRE_PRESSURE_DISPLAY_UNITS)) {
hasUnits = true;
rawData.add(createRawDataEntry(context,
context.getString(R.string.pk_units_pressure),
context.getString(R.string.units_pressure_title),
context.getString(R.string.units_settings)));
}
if (hasUnits) {
rawData.add(createRawDataEntry(context,
context.getString(R.string.psk_units),
context.getString(R.string.units_settings),
context.getString(R.string.units_settings)));
}
}
car.disconnect();
return rawData;
}
private boolean isValidVehicleProperty(int propertyId) {
return mCarPropertyManager.getIntProperty(propertyId, /* area= */ 0)
!= VehicleUnit.SHOULD_NOT_USE;
}
};
}