package com.example.android.boardingpass;
/*
* Copyright (C) 2016 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.
*/
import android.databinding.DataBindingUtil;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import com.example.android.boardingpass.databinding.ActivityMainBinding;
import com.example.android.boardingpass.utilities.FakeDataUtils;
import java.text.SimpleDateFormat;
import java.util.Locale;
import java.util.concurrent.TimeUnit;
public class MainActivity extends AppCompatActivity {
//COMPLETED (3) Create a data binding instance called mBinding of type ActivityMainBinding
ActivityMainBinding mBinding;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// COMPLETED (4) Set the Content View using DataBindingUtil to the activity_main layout
/*
* DataBindUtil.setContentView replaces our normal call of setContent view.
* DataBindingUtil also created our ActivityMainBinding that we will eventually use to
* display all of our data.
*/
mBinding = DataBindingUtil.setContentView(this, R.layout.activity_main);
// COMPLETED (5) Load a BoardingPassInfo object with fake data using FakeDataUtils
BoardingPassInfo fakeBoardingInfo = FakeDataUtils.generateFakeBoardingPassInfo();
// COMPLETED (9) Call displayBoardingPassInfo and pass the fake BoardingInfo instance
displayBoardingPassInfo(fakeBoardingInfo);
}
private void displayBoardingPassInfo(BoardingPassInfo info) {
// COMPLETED (6) Use mBinding to set the Text in all the textViews using the data in info
mBinding.textViewPassengerName.setText(info.passengerName);
mBinding.textViewOriginAirport.setText(info.originCode);
mBinding.textViewFlightCode.setText(info.flightCode);
mBinding.textViewDestinationAirport.setText(info.destCode);
// COMPLETED (7) Use a SimpleDateFormat formatter to set the formatted value in time text views
SimpleDateFormat formatter = new SimpleDateFormat(getString(R.string.timeFormat), Locale.getDefault());
String boardingTime = formatter.format(info.boardingTime);
String departureTime = formatter.format(info.departureTime);
String arrivalTime = formatter.format(info.arrivalTime);
mBinding.textViewBoardingTime.setText(boardingTime);
mBinding.textViewDepartureTime.setText(departureTime);
mBinding.textViewArrivalTime.setText(arrivalTime);
// COMPLETED (8) Use TimeUnit methods to format the total minutes until boarding
long totalMinutesUntilBoarding = info.getMinutesUntilBoarding();
long hoursUntilBoarding = TimeUnit.MINUTES.toHours(totalMinutesUntilBoarding);
long minutesLessHoursUntilBoarding =
totalMinutesUntilBoarding - TimeUnit.HOURS.toMinutes(hoursUntilBoarding);
String hoursAndMinutesUntilBoarding = getString(R.string.countDownFormat,
hoursUntilBoarding,
minutesLessHoursUntilBoarding);
mBinding.textViewBoardingInCountdown.setText(hoursAndMinutesUntilBoarding);
mBinding.textViewTerminal.setText(info.departureTerminal);
mBinding.textViewGate.setText(info.departureGate);
mBinding.textViewSeat.setText(info.seatNumber);
}
}