/* * This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of * the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. * * Copyright (c) 2014 Digi International Inc., All Rights Reserved. */ package com.digi.android.wva.fragments; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageButton; import android.widget.ScrollView; import android.widget.TextView; import android.widget.Toast; import com.actionbarsherlock.app.SherlockFragment; import com.digi.android.wva.R; import com.digi.android.wva.WvaApplication; import com.digi.wva.async.FaultCodeResponse; import com.digi.wva.async.WvaCallback; import com.digi.wva.async.FaultCodeCommon; import com.digi.wva.WVA; import org.joda.time.format.DateTimeFormatter; import org.joda.time.format.ISODateTimeFormat; public class FaultCodeDetailsFragment extends SherlockFragment { private static final DateTimeFormatter format = ISODateTimeFormat.dateTimeNoMillis(); private FaultCodeCommon.Bus bus; private String ecuName; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.fault_code_details, null); Bundle arguments = getArguments(); FaultCodeCommon.Bus bus = FaultCodeCommon.Bus.valueOf(arguments.getString("bus")); this.bus = bus; String ecuName = arguments.getString("ecu"); this.ecuName = ecuName; TextView b = (TextView) v.findViewById(R.id.faultCodeDetail_bus); b.setText(bus.toString().toUpperCase()); TextView ecu = (TextView) v.findViewById(R.id.faultCodeDetail_ecuName); ecu.setText(ecuName); TextView activeUri = (TextView) v.findViewById(R.id.active_uri); activeUri.setText(String.format("ws/vehicle/dtc/%s_active/%s", bus.toString(), ecuName)); TextView inactiveUri = (TextView) v.findViewById(R.id.inactive_uri); inactiveUri.setText(String.format("ws/vehicle/dtc/%s_inactive/%s", bus.toString(), ecuName)); return v; } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); final WVA device = ((WvaApplication) getActivity().getApplication()).getDevice(); final TextView logs = (TextView) getView().findViewById(R.id.faultCodeLogs); final ScrollView scroll = (ScrollView) getView().findViewById(R.id.faultCodeScroller); ImageButton fetchActive = (ImageButton) getView().findViewById(R.id.fetchActive); ImageButton fetchInactive = (ImageButton) getView().findViewById(R.id.fetchInactive); final FaultCodeCommon.Bus bus = this.bus; final String ecuName = this.ecuName; fetchActive.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Toast.makeText(getActivity(), "Fetching active fault code...", Toast.LENGTH_SHORT).show(); device.fetchFaultCode(bus, FaultCodeCommon.FaultCodeType.ACTIVE, ecuName, new WvaCallback<FaultCodeResponse>() { @Override public void onResponse(Throwable error, FaultCodeResponse response) { if (error != null) { error.printStackTrace(); Toast.makeText(getActivity(), "Error fetching active fault code: " + error.getMessage(), Toast.LENGTH_SHORT).show(); } else if (response == null) { logs.append("No active fault codes have been reported.\n"); scroll.fullScroll(View.FOCUS_DOWN); } else { logs.append(String.format("Active: %s at %s%n", response.getValue(), format.print(response.getTime()))); scroll.fullScroll(View.FOCUS_DOWN); } } }); } }); fetchInactive.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Toast.makeText(getActivity(), "Fetching inactive fault code...", Toast.LENGTH_SHORT).show(); device.fetchFaultCode(bus, FaultCodeCommon.FaultCodeType.INACTIVE, ecuName, new WvaCallback<FaultCodeResponse>() { @Override public void onResponse(Throwable error, FaultCodeResponse response) { if (error != null) { error.printStackTrace(); Toast.makeText(getActivity(), "Error fetching inactive fault code: " + error.getMessage(), Toast.LENGTH_SHORT).show(); } else if (response == null) { logs.append("No inactive fault codes have been reported.\n"); scroll.fullScroll(View.FOCUS_DOWN); } else { logs.append(String.format("Inactive: %s at %s%n", response.getValue(), format.print(response.getTime()))); scroll.fullScroll(View.FOCUS_DOWN); } } }); } }); } }