package what.whatandroid.notifications;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
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.Toast;
import api.notifications.Notifications;
import api.soup.MySoup;
import what.whatandroid.R;
import what.whatandroid.callbacks.OnLoggedInCallback;
/**
* Fragment containing the swipe view of notification pages
*/
public class NotificationsFragment extends Fragment implements OnLoggedInCallback {
private NotificationsPagerAdapter pagerAdapter;
private ViewPager viewPager;
private int pages;
public NotificationsFragment(){
//Required empty ctor
}
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
pages = 1;
if (savedInstanceState != null){
pages = savedInstanceState.getInt("PAGES");
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
View view = inflater.inflate(R.layout.fragment_view_pager_strip, container, false);
viewPager = (ViewPager)view.findViewById(R.id.pager);
pagerAdapter = new NotificationsPagerAdapter(getChildFragmentManager(), pages);
viewPager.setAdapter(pagerAdapter);
if (MySoup.isLoggedIn()){
onLoggedIn();
}
return view;
}
@Override
public void onSaveInstanceState(Bundle outState){
super.onSaveInstanceState(outState);
outState.putInt("PAGES", pagerAdapter.getCount());
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater){
inflater.inflate(R.menu.notifications, menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item){
if (item.getItemId() == R.id.clear){
viewPager.setCurrentItem(0);
pagerAdapter.clearNotifications();
new ClearNotificationsTask().execute();
return true;
}
return false;
}
@Override
public void onLoggedIn(){
pagerAdapter.onLoggedIn();
}
private class ClearNotificationsTask extends AsyncTask<Void, Void, Boolean> {
@Override
protected Boolean doInBackground(Void... params){
return Notifications.clearNotifications();
}
@Override
protected void onPreExecute(){
getActivity().setProgressBarIndeterminate(true);
getActivity().setProgressBarIndeterminateVisibility(true);
}
@Override
protected void onPostExecute(Boolean status){
if (isAdded()){
getActivity().setProgressBarIndeterminateVisibility(false);
if (!status){
Toast.makeText(getActivity(), "Could not clear notifications", Toast.LENGTH_LONG).show();
}
}
}
}
}