package uk.co.traintrackapp.traintrack;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
import com.astuetz.PagerSlidingTabStrip;
import java.util.ArrayList;
import uk.co.traintrackapp.traintrack.fragment.StationArrivalsFragment;
import uk.co.traintrackapp.traintrack.fragment.StationDeparturesFragment;
import uk.co.traintrackapp.traintrack.fragment.StationDetailsFragment;
import uk.co.traintrackapp.traintrack.fragment.StationUndergroundFragment;
import uk.co.traintrackapp.traintrack.model.Station;
import uk.co.traintrackapp.traintrack.model.StationBoard;
import uk.co.traintrackapp.traintrack.model.User;
import uk.co.traintrackapp.traintrack.utils.Utils;
public class StationActivity extends AppCompatActivity {
private Station station;
private StationBoard departuresBoard;
private StationBoard arrivalsBoard;
private StationBoard undergroundBoard;
public Station getStation() {
return station;
}
public StationBoard getDeparturesBoard() {
return departuresBoard;
}
public void setDeparturesBoard(StationBoard departuresBoard) {
this.departuresBoard = departuresBoard;
}
public StationBoard getArrivalsBoard() {
return arrivalsBoard;
}
public void setArrivalsBoard(StationBoard arrivalsBoard) {
this.arrivalsBoard = arrivalsBoard;
}
public StationBoard getUndergroundBoard() {
return undergroundBoard;
}
public void setUndergroundBoard(StationBoard undergroundBoard) {
this.undergroundBoard = undergroundBoard;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_station);
final Intent intent = getIntent();
station = (Station) intent.getExtras().getSerializable(Utils.ARGS_STATION);
if (station == null) {
finish();
return;
}
TrainTrack app = (TrainTrack) getApplication();
User user = app.getUser();
user.addRecentStation(station);
user.save(this);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setTitle(station.getName());
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager);
viewPager.setAdapter(new PagerAdapter(getSupportFragmentManager()));
PagerSlidingTabStrip tabsStrip = (PagerSlidingTabStrip) findViewById(R.id.tabs);
tabsStrip.setViewPager(viewPager);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
finish();
default:
return super.onOptionsItemSelected(item);
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == Activity.RESULT_OK) {
if (getParent() == null) {
setResult(Activity.RESULT_OK);
} else {
getParent().setResult(Activity.RESULT_OK);
}
finish();
}
}
private class PagerAdapter extends FragmentPagerAdapter {
private ArrayList<Fragment> fragments;
private PagerAdapter(FragmentManager fm) {
super(fm);
fragments = new ArrayList<>();
fragments.add(StationDetailsFragment.newInstance());
if (station.isNationalRail()) {
fragments.add(StationDeparturesFragment.newInstance());
fragments.add(StationArrivalsFragment.newInstance());
}
if (station.isUnderground()) {
fragments.add(StationUndergroundFragment.newInstance());
}
}
@Override
public int getCount() {
return fragments.size();
}
@Override
public Fragment getItem(int position) {
return fragments.get(position);
}
@Override
public CharSequence getPageTitle(int position) {
return fragments.get(position).getArguments().getString(Utils.ARGS_PAGE_TITLE);
}
}
}