package com.pennapps.labs.pennmobile;
import android.content.SharedPreferences;
import android.graphics.Color;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
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 com.pennapps.labs.pennmobile.api.Labs;
import com.pennapps.labs.pennmobile.classes.LaundryMachine;
import com.pennapps.labs.pennmobile.classes.LaundryRoom;
import java.util.List;
import butterknife.ButterKnife;
public class LaundryMachineFragment extends Fragment {
private Labs mLabs;
private MainActivity mActivity;
private LaundryRoom laundryRoom;
private List<LaundryMachine> machines;
private TabAdapter pageAdapter;
private ViewPager pager;
private boolean favoriteState = false;
class TabAdapter extends FragmentStatePagerAdapter {
public TabAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
Fragment myFragment = new LaundryMachineTab(); //data stored into the parent fragment with Fragment.getParent();
Bundle args = new Bundle();
args.putInt(getString(R.string.laundry_position), position);
args.putParcelable(getString(R.string.laundry), laundryRoom);
if (machines != null) {
LaundryMachine[] array = (LaundryMachine[]) machines.toArray();
args.putParcelableArray(getString(R.string.laundry_machine_intent), array);
}
myFragment.setArguments(args);
return myFragment;
}
@Override
public int getCount() {
return 2;
}
@Override
public CharSequence getPageTitle(int position) {
if (position == 0) {
return getString(R.string.laundry_washer);
}
return getString(R.string.laundry_dryer);
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mLabs = MainActivity.getLabsInstance();
mActivity = (MainActivity) getActivity();
mActivity.closeKeyboard();
Bundle args = getArguments();
laundryRoom = args.getParcelable(getString(R.string.laundry));
setHasOptionsMenu(true);
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getActivity());
favoriteState = sp.getBoolean(laundryRoom.name + "_isFavorite", false);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
mActivity.closeKeyboard();
setHasOptionsMenu(true);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_laundry_machine, container, false);
ButterKnife.bind(this, v);
pageAdapter = new TabAdapter(getActivity().getSupportFragmentManager());
pager = (ViewPager) v.findViewById(R.id.pager);
pager.setAdapter(pageAdapter);
pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
machines = ((LaundryMachineTab) ((FragmentStatePagerAdapter) pager.getAdapter()).getItem(position)).returnMachines();
}
@Override
public void onPageSelected(int position) {
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
v.setBackgroundColor(Color.WHITE);
mActivity.addTabs(pageAdapter, pager, false);
return v;
}
@Override
public void onResume() {
super.onResume();
if (laundryRoom.name != null) {
mActivity.setTitle(laundryRoom.name);
}
}
@Override
public void onDestroyView() {
mActivity.removeTabs();
mActivity.setTitle("Laundry");
super.onDestroyView();
ButterKnife.unbind(this);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.laundry_favorite, menu);
if(favoriteState){
menu.findItem(R.id.action_favorite).setIcon(R.drawable.ic_star_white_48dp);
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_favorite:
if(!favoriteState) {
item.setIcon(R.drawable.ic_star_white_48dp);
} else {
item.setIcon(R.drawable.ic_star_border_white_48dp);
}
favoriteState = !favoriteState;
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getActivity());
SharedPreferences.Editor editor = sp.edit();
editor.putBoolean(laundryRoom.name + "_isFavorite", favoriteState);
if(laundryRoom.name.contains("-")) {
editor.putBoolean(laundryRoom.name.substring(0, laundryRoom.name.indexOf("-")) + "_isFavorite", favoriteState);
}
editor.apply();
return true;
case android.R.id.home:
getActivity().getSupportFragmentManager().popBackStack();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
}