package shts.jp.android.nogifeed.fragments;
import android.os.Bundle;
import android.support.design.widget.CoordinatorLayout;
import android.support.design.widget.Snackbar;
import android.support.v4.app.Fragment;
import android.support.v4.widget.SwipeRefreshLayout;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ListView;
import com.squareup.otto.Subscribe;
import shts.jp.android.nogifeed.R;
import shts.jp.android.nogifeed.activities.NewsBrowseActivity;
import shts.jp.android.nogifeed.adapters.NewsListAdapter;
import shts.jp.android.nogifeed.api.AsyncNewsClient;
import shts.jp.android.nogifeed.entities.News;
import shts.jp.android.nogifeed.models.eventbus.BusHolder;
import shts.jp.android.nogifeed.views.dialogs.NewsTypeFilterDialog;
public class NewsListFragment extends Fragment {
private static final String TAG = NewsListFragment.class.getSimpleName();
@Override
public void onResume() {
super.onResume();
BusHolder.get().register(this);
}
@Override
public void onPause() {
super.onPause();
BusHolder.get().unregister(this);
}
private ListView listView;
private CoordinatorLayout coordinatorLayout;
private SwipeRefreshLayout swipeRefreshLayout;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_news_feed_list, null);
view.findViewById(R.id.fab).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
NewsTypeFilterDialog dialog = new NewsTypeFilterDialog();
dialog.setCallbacks(new NewsTypeFilterDialog.Callbacks() {
@Override
public void onClickPositiveButton() {
getAllNews();
}
@Override
public void onClickNegativeButton() {}
});
dialog.show(getFragmentManager(), NewsTypeFilterDialog.class.getSimpleName());
}
});
swipeRefreshLayout = (SwipeRefreshLayout) view.findViewById(R.id.refresh);
swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
getAllNews();
}
});
swipeRefreshLayout.setColorSchemeResources(
R.color.primary, R.color.primary, R.color.primary, R.color.primary);
listView = (ListView) view.findViewById(R.id.news_feed_list);
coordinatorLayout = (CoordinatorLayout) view.findViewById(R.id.coordinator);
getAllNews();
return view;
}
private void getAllNews() {
if (!AsyncNewsClient.get(getActivity())) {
Snackbar.make(coordinatorLayout, R.string.failed_to_get_news, Snackbar.LENGTH_LONG)
.show();
swipeRefreshLayout.setRefreshing(false);
}
}
@Subscribe
public void onGotNewsFeedList(AsyncNewsClient.GetNewsFeedCallback callback) {
swipeRefreshLayout.setRefreshing(false);
if (callback == null || callback.hasError()) {
Snackbar.make(coordinatorLayout, R.string.failed_to_get_news, Snackbar.LENGTH_LONG)
.show();
return;
}
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
News news = (News) listView.getItemAtPosition(position);
startActivity(NewsBrowseActivity.getStartIntent(getActivity(), news));
}
});
listView.setAdapter(new NewsListAdapter(getActivity(), callback.newsList));
}
}