package ca.etsmtl.applets.etsmobile.ui.fragment;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
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.ListView;
import com.octo.android.robospice.persistence.exception.SpiceException;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.Set;
import ca.etsmtl.applets.etsmobile.http.AppletsApiNewsRequest;
import ca.etsmtl.applets.etsmobile.model.Nouvelle;
import ca.etsmtl.applets.etsmobile.model.Nouvelles;
import ca.etsmtl.applets.etsmobile.ui.activity.NewsDetailsActivity;
import ca.etsmtl.applets.etsmobile.ui.adapter.NewsAdapter;
import ca.etsmtl.applets.etsmobile2.R;
public class NewsFragment extends HttpFragment {
private static String TAG = NewsFragment.class.getName();
private final long DAY_IN_MS = 1000 * 60 * 60 * 24;
private ListView newsListView;
private NewsAdapter adapter;
private ArrayList<Nouvelle> nouvellesList;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Sélection des sources
// setHasOptionsMenu(true);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_news, container, false);
newsListView = (ListView) v.findViewById(R.id.listView_news);
Date currentDate = new Date();
Date dateStart = new Date(currentDate.getTime() - (14 * DAY_IN_MS));
String dateDebut = DateFormatUtils.format(dateStart, "yyyy-MM-dd");
String dateFin = DateFormatUtils.format(currentDate, "yyyy-MM-dd");
nouvellesList = new ArrayList<Nouvelle>();
SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
Set<String> selection = sharedPrefs.getStringSet("multi_pref", null);
String[] selectedItems = {"ets"};
if(selection != null) {
selectedItems = selection.toArray(new String[] {});
}
String sources = "";
for(int i = 0 ; i < selectedItems.length; i++) {
sources += selectedItems[i] + (i == (selectedItems.length-1)?"":",");
}
//todo dataManager.sendRequest( new AppletsApiNewsRequest(getActivity(),sources,dateDebut,dateFin), NewsFragment.this);
return v;
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
//Sélection des sources
// inflater.inflate(R.menu.menu_news, menu);
super.onCreateOptionsMenu(menu, inflater);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
//Sélection des sources
// switch (item.getItemId()) {
//
// case R.id.menu_item_sources_news:
//
// // Display the fragment as the main content.
// Intent i = new Intent(getActivity(), PrefsActivity.class);
//
// getActivity().startActivity(i);
//
// return true;
// }
return super.onOptionsItemSelected(item);
}
@Override
public void onRequestFailure(SpiceException e) {
}
@Override
public void onRequestSuccess(Object o) {
if(o instanceof Nouvelles) {
Nouvelles nouvelles = (Nouvelles)o;
Collections.sort(nouvelles, new Comparator<Nouvelle>() {
DateTimeFormatter dateTimeFormatter = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
@Override
public int compare(Nouvelle nouvelle1, Nouvelle nouvelle2) {
DateTime date1 = dateTimeFormatter.parseDateTime(nouvelle1.getUpdated_time());
DateTime date2 = dateTimeFormatter.parseDateTime(nouvelle2.getUpdated_time());
if(date1.isAfter(date2)){
return -1;
} else if (date1.isBefore(date2)) {
return 1;
} else {
return 0;
}
}
});
adapter = new NewsAdapter(getActivity(),R.layout.row_news, nouvelles,this);
newsListView.setAdapter(adapter);
adapter.notifyDataSetChanged();
newsListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Nouvelle nouvelle = (Nouvelle) parent.getItemAtPosition(position);
Intent i = new Intent(getActivity(), NewsDetailsActivity.class);
i.putExtra("from", nouvelle.getFrom());
i.putExtra("image", nouvelle.getImage());
i.putExtra("title", nouvelle.getTitle());
i.putExtra("created_time", nouvelle.getCreated_time());
i.putExtra("facebook_link", nouvelle.getFacebook_link());
i.putExtra("updated_time", nouvelle.getUpdated_time());
i.putExtra("message", nouvelle.getMessage());
i.putExtra("id", nouvelle.getId());
i.putExtra("icon_link", nouvelle.getIcon_link());
getActivity().startActivity(i);
}
});
}
}
@Override
void updateUI() {
}
}