package uk.co.traintrackapp.traintrack.fragment; import android.content.Intent; import android.graphics.Color; import android.os.AsyncTask; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v7.widget.CardView; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.FrameLayout; import android.widget.LinearLayout; import android.widget.TableLayout; import android.widget.TextView; import android.widget.Toast; import java.util.ArrayList; import uk.co.traintrackapp.traintrack.MainActivity; import uk.co.traintrackapp.traintrack.R; import uk.co.traintrackapp.traintrack.StationActivity; import uk.co.traintrackapp.traintrack.TrainTrack; import uk.co.traintrackapp.traintrack.model.TubeLine; import uk.co.traintrackapp.traintrack.model.User; import uk.co.traintrackapp.traintrack.utils.Utils; import static uk.co.traintrackapp.traintrack.R.id.home_station_name; import static uk.co.traintrackapp.traintrack.R.id.work_station_name; public class DashboardFragment extends Fragment { private LinearLayout tubeLinesView; public static DashboardFragment newInstance() { return new DashboardFragment(); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.fragment_dashboard, container, false); TrainTrack app = (TrainTrack) getActivity().getApplication(); final User user = app.getUser(); CardView newJourney = (CardView) v.findViewById(R.id.new_journey); newJourney.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(getActivity(), "Choose a departing station", Toast.LENGTH_LONG).show(); ((MainActivity) getActivity()).updateFragment(MainActivity.STATIONS_FRAGMENT); } }); CardView workStation = (CardView) v.findViewById(R.id.work_station); if (user.getWorkStation().getId() != 0) { TextView workStationName = (TextView) v.findViewById(work_station_name); workStationName.setText(user.getWorkStation().toString()); workStation.setVisibility(View.VISIBLE); workStation.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent().setClass(v.getContext(), StationActivity.class); intent.putExtra("station_uuid", user.getWorkStation().getUuid()); v.getContext().startActivity(intent); } }); } else { workStation.setVisibility(View.GONE); } CardView homeStation = (CardView) v.findViewById(R.id.home_station); if (user.getHomeStation().getId() != 0) { TextView homeStationName = (TextView) v.findViewById(home_station_name); homeStationName.setText(user.getHomeStation().toString()); homeStation.setVisibility(View.VISIBLE); homeStation.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent().setClass(v.getContext(), StationActivity.class); intent.putExtra("station_uuid", user.getHomeStation().getUuid()); v.getContext().startActivity(intent); } }); } else { homeStation.setVisibility(View.GONE); } tubeLinesView = (LinearLayout) v.findViewById(R.id.tube_lines); new GetTubeStatusRequest().execute(); return v; } class GetTubeStatusRequest extends AsyncTask<String, String, ArrayList<TubeLine>> { @Override protected ArrayList<TubeLine> doInBackground(String... bob) { Utils.log("Getting tube status..."); return TubeLine.getStatuses(); } @Override protected void onPostExecute(ArrayList<TubeLine> tubeLines) { super.onPostExecute(tubeLines); Utils.log("Got tube status."); FrameLayout.LayoutParams linearLayoutParams = new FrameLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); linearLayoutParams.setMargins(12, 0, 12, 0); TableLayout.LayoutParams textViewParams = new TableLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT, 1f); TableLayout.LayoutParams statusTextParams = new TableLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT, 1f); for (TubeLine tubeLine : tubeLines) { LinearLayout linearLayout = new LinearLayout(getActivity()); linearLayout.setLayoutParams(linearLayoutParams); linearLayout.setOrientation(LinearLayout.HORIZONTAL); int backgroundColour = Color.WHITE; try { Color.parseColor("#" + tubeLine.getBackgroundColour()); } catch (IllegalArgumentException ex) { Utils.log(tubeLine.getBackgroundColour() + " is not a colour."); } linearLayout.setBackgroundColor(backgroundColour); linearLayout.setPadding(12, 12, 12, 12); TextView name = new TextView(getActivity()); name.setLayoutParams(textViewParams); name.setText(tubeLine.getName()); name.setTextSize(18); int textColour = Color.BLACK; try { Color.parseColor("#" + tubeLine.getTextColour()); } catch (IllegalArgumentException ex) { Utils.log(tubeLine.getTextColour() + " is not a colour."); } name.setTextColor(textColour); linearLayout.addView(name); TextView status = new TextView(getActivity()); status.setLayoutParams(statusTextParams); status.setText(tubeLine.getStatus()); status.setTextSize(18); status.setTextColor(textColour); status.setGravity(Gravity.END); linearLayout.addView(status); tubeLinesView.addView(linearLayout); } } } }