package tof.cv.mpp; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.preference.PreferenceManager; import android.support.v4.app.ListFragment; import android.support.v4.widget.SwipeRefreshLayout; import android.util.Log; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.Button; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; import com.google.gson.reflect.TypeToken; import com.koushikdutta.async.future.FutureCallback; import com.koushikdutta.ion.Ion; import com.squareup.picasso.Picasso; import com.squareup.picasso.Target; import java.util.Date; import tof.cv.mpp.Utils.Utils; import tof.cv.mpp.adapter.StationInfoAdapter; import tof.cv.mpp.bo.Station; public class InfoStationFragment extends ListFragment { protected static final String TAG = "InfoStationFragment"; private Station currentStation; private TextView mTitleText; private long timestamp; private String stationString; private String id; private SwipeRefreshLayout swipeContainer; private Target t = new Target() { public void onBitmapLoaded(Bitmap bitmapPic, Picasso.LoadedFrom from) { try { ((ImageView) getView().findViewById(R.id.image_header)).setImageBitmap(bitmapPic); } catch (Exception e) { e.printStackTrace(); } } public void onBitmapFailed(Drawable errorDrawable) { try {//Strange bugs in console To investigate getView().findViewById(R.id.Button_pic).setVisibility(View.VISIBLE); getView().findViewById(R.id.image_header).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { ((InfoStationActivity) getActivity()).pic(null); } }); } catch (Exception e) { e.printStackTrace(); } } public void onPrepareLoad(Drawable placeHolderDrawable) { } }; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_info_station, null); } /** * Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); mTitleText = (TextView) getView().findViewById(R.id.title); //registerForContextMenu(getListView()); final ImageButton prevButton = (ImageButton) getActivity() .findViewById(R.id.Button_prev); final ImageButton nextButton = (ImageButton) getActivity() .findViewById(R.id.Button_next); nextButton.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { // pd = ProgressDialog.show(getActivity(), "", // getString(R.string.txt_patient), true); timestamp += (60 * 60 * 1000); searchThread(); } }); prevButton.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { // pd = ProgressDialog.show(getActivity(), "", // getString(R.string.txt_patient), true); timestamp -= (60 * 60 * 1000); searchThread(); } }); setHasOptionsMenu(true); swipeContainer = (SwipeRefreshLayout) getView().findViewById(R.id.swipeContainer); if(swipeContainer!=null){ swipeContainer.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { @Override public void onRefresh() { searchThread(); } }); swipeContainer.setColorSchemeResources( R.color.primarycolor); } } @Override public void onListItemClick(ListView parent, View view, int position, long id) { Station.StationDeparture stop = (Station.StationDeparture) getListAdapter() .getItem(position); Intent i = new Intent(getActivity(), InfoTrainActivity.class); i.putExtra("Name", stop.getVehicle()); i.putExtra("timestamp", stop.getTime()); startActivity(i); } public void displayInfo(String station, long timestamp, String id) { if (timestamp != 0) this.timestamp = timestamp; else this.timestamp = System.currentTimeMillis(); this.stationString = station; this.id = id; searchThread(); } private void searchThread() { getView().findViewById(R.id.progress).setVisibility(View.VISIBLE); String langue = getString(R.string.url_lang); if (PreferenceManager.getDefaultSharedPreferences(this.getActivity()).getBoolean( "prefnl", false)) langue = "nl"; String dateTime = ""; if (timestamp != 0) { String formattedDate = tof.cv.mpp.Utils.Utils.formatDate(new Date(timestamp), "ddMMyy"); String formattedTime = tof.cv.mpp.Utils.Utils .formatDate(new Date(timestamp), "HHmm"); dateTime = "&date=" + formattedDate + "&time=" + formattedTime; } String url = ""; if (id != null && id.length() > 0) url = "http://api.irail.be/liveboard.php/?id=" + id + dateTime + "&format=JSON&fast=true" + "&lang=" + langue+"&alerts=true"; else url = "http://api.irail.be/liveboard.php/?station=" + stationString.replace(" ", "%20") + dateTime + "&format=JSON&fast=true" + "&lang=" + langue+"&alerts=true"; Log.e("CVE","Show station from: " + url); Ion.with(this).load(url).userAgent("WazaBe: BeTrains "+BuildConfig.VERSION_NAME+" for Android").as(new TypeToken<Station>(){}).setCallback(new FutureCallback<Station>() { @Override public void onCompleted(Exception e, Station result) { currentStation = result; getView().findViewById(R.id.progress).setVisibility(View.GONE); // if (pd != null) // pd.dismiss(); if (swipeContainer != null) swipeContainer.setRefreshing(false); if (currentStation != null) if (currentStation.getStationDepartures() != null) { if (id != null) //Picasso.with(InfoStationFragment.this.getActivity()).load("http://wazabe.byethost8.com/" + currentStation.getStationStationinfo().getId().replace("BE.NMBS.", "") + ".jpg").error(R.drawable.gare).placeholder(R.drawable.gare).into(t); Picasso.with(InfoStationFragment.this.getActivity()).load("http://res.cloudinary.com/dywgd02hq/image/upload/" + currentStation.getStationinfo().getId().replace("BE.NMBS.", "") + ".jpg").error(R.drawable.gare).placeholder(R.drawable.gare).into(t); stationString = currentStation.getStation(); StationInfoAdapter stationInfoAdapter = new StationInfoAdapter( getActivity(), R.layout.row_info_station, currentStation.getStationDepartures() .getStationDeparture() ); setListAdapter(stationInfoAdapter); setTitle(Utils.formatDate(new Date(timestamp), "dd MMM HH:mm")); } else { Toast.makeText(getActivity(), R.string.search_no_result, Toast.LENGTH_LONG).show(); setTitle(Utils.formatDate(new Date(timestamp), "dd MMM HH:mm")); } else { Toast.makeText(getActivity(), R.string.check_connection, Toast.LENGTH_LONG).show(); getActivity().finish(); } } }); } public void setTitle(String txt) { getActivity().setTitle(stationString); mTitleText.setText(txt); } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { menu.add(Menu.NONE, 0, Menu.NONE, R.string.action_add_to_favorites) .setIcon(R.drawable.ic_menu_star) .setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER); //menu.add(Menu.NONE, 1, Menu.NONE, "Map") // .setIcon(android.R.drawable.ic_menu_mapmode) // .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case 0: if (currentStation != null) { Utils.addAsStarred(currentStation.getStation(), currentStation.getStationinfo().getId(), 1, getActivity()); startActivity(new Intent(getActivity(), StarredActivity.class)); } return true; case 1: /*if (currentStation != null) { Intent i = new Intent(getActivity(), MapStationActivity.class); i.putExtra("Name", currentStation.getStation()); i.putExtra("lat", currentStation.getStationStationinfo() .getLocationY()); i.putExtra("lon", currentStation.getStationStationinfo() .getLocationX()); startActivity(i); }*/ return true; default: return super.onOptionsItemSelected(item); } } public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo; Station.StationDeparture clicked = (Station.StationDeparture) getListAdapter().getItem( (int) info.id); menu.add(0, 0, 0, clicked.getVehicle()); } @Override public boolean onContextItemSelected(android.view.MenuItem item) { switch (item.getItemId()) { case 0: AdapterView.AdapterContextMenuInfo menuInfo = (AdapterView.AdapterContextMenuInfo) item .getMenuInfo(); Station.StationDeparture stop = (Station.StationDeparture) getListAdapter() .getItem((int) menuInfo.id); Intent i = new Intent(getActivity(), InfoTrainActivity.class); i.putExtra("Name", stop.getVehicle()); i.putExtra("timestamp", stop.getTime()); startActivity(i); return true; default: return super.onContextItemSelected(item); } } }