package com.truckmuncher.app.customer;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
import android.support.v4.app.LoaderManager;
import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.GridView;
import com.truckmuncher.app.R;
import com.truckmuncher.app.data.Contract;
import com.truckmuncher.app.data.PublicContract;
import java.util.ArrayList;
import butterknife.ButterKnife;
import butterknife.InjectView;
public class AllTrucksFragment extends Fragment
implements LoaderManager.LoaderCallbacks<Cursor>, GridView.OnItemClickListener {
private static final int REQUEST_TRUCK_DETAILS = 0;
@InjectView(R.id.all_trucks_grid)
GridView gridView;
private TrucksGridAdapter gridAdapter;
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_all_trucks, container, false);
ButterKnife.inject(this, view);
gridAdapter = new TrucksGridAdapter(getActivity(), R.layout.grid_item_truck, null);
gridView.setAdapter(gridAdapter);
gridView.setOnItemClickListener(this);
return view;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
getLoaderManager().initLoader(0, getArguments(), this);
}
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
return new CursorLoader(getActivity(), Contract.TRUCK_PROPERTIES_URI, TrucksGridAdapter.TruckQuery.PROJECTION,
null, new String[]{}, PublicContract.Truck.NAME);
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
gridAdapter.swapCursor(cursor);
}
@Override
public void onLoaderReset(android.support.v4.content.Loader<Cursor> loader) {
// No-op
}
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
String currentTruck = gridAdapter.getTruckId(i);
ArrayList<String> truckIds = gridAdapter.getTruckIds();
startActivityForResult(TruckDetailsActivity.newIntent(getActivity(), truckIds, currentTruck), REQUEST_TRUCK_DETAILS);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case REQUEST_TRUCK_DETAILS:
if (resultCode == Activity.RESULT_OK) {
String lastTruckId = data.getStringExtra(TruckDetailsActivity.ARG_ENDING_TRUCK);
gridView.smoothScrollToPosition(gridAdapter.getTruckPosition(lastTruckId));
}
break;
default:
super.onActivityResult(requestCode, resultCode, data);
}
}
}