package com.openxc.enabler; import java.util.TimerTask; import android.app.Activity; import android.preference.PreferenceManager; import android.view.View; import com.openxc.VehicleManager; import com.openxc.interfaces.VehicleInterfaceDescriptor; import com.openxc.interfaces.bluetooth.BluetoothVehicleInterface; import com.openxc.interfaces.network.NetworkVehicleInterface; import com.openxc.interfaces.usb.UsbVehicleInterface; import com.openxc.sources.VehicleDataSource; import com.openxcplatform.enabler.R; public class PipelineStatusUpdateTask extends TimerTask { private VehicleManager mVehicleManager; private Activity mActivity; private View mNetworkConnView; private View mBluetoothConnView; private View mUsbConnView; private View mFileConnView; private View mNoneConnView; public PipelineStatusUpdateTask(VehicleManager vehicleService, Activity activity, View fileConnView, View networkConnView, View bluetoothConnView, View usbConnView, View noneConnView) { mVehicleManager = vehicleService; mActivity = activity; mFileConnView = fileConnView; mNetworkConnView = networkConnView; mBluetoothConnView = bluetoothConnView; mUsbConnView = usbConnView; mNoneConnView = noneConnView; } private void setVisibility( Class<? extends VehicleDataSource> vehicleInterface, final View view, VehicleInterfaceDescriptor viDescriptor) { setVisibility(view, viDescriptor != null && viDescriptor.getInterfaceClass() == vehicleInterface); } private void setVisibility(final View view, boolean visible) { if(mActivity == null) { return; } if(visible && view.getVisibility() != View.VISIBLE) { mActivity.runOnUiThread(new Runnable() { @Override public void run() { view.setVisibility(View.VISIBLE); } }); } else if(!visible && view.getVisibility() != View.GONE) { mActivity.runOnUiThread(new Runnable() { @Override public void run() { view.setVisibility(View.GONE); } }); } } public void run() { if(mVehicleManager != null) { final VehicleInterfaceDescriptor viDescriptor = mVehicleManager.getActiveVehicleInterface(); setVisibility(BluetoothVehicleInterface.class, mBluetoothConnView, viDescriptor); setVisibility(NetworkVehicleInterface.class, mNetworkConnView, viDescriptor); setVisibility(UsbVehicleInterface.class, mUsbConnView, viDescriptor); setVisibility(mNoneConnView, !traceEnabled() && viDescriptor == null); setVisibility(mFileConnView, traceEnabled()); } } private boolean traceEnabled() { return mActivity != null && PreferenceManager.getDefaultSharedPreferences(mActivity).getString( mActivity.getString(R.string.vehicle_interface_key), "").equals( mActivity.getString(R.string.trace_interface_option_value)); } }