package bg.mentormate.academy.radarapp.fragments; import android.os.Bundle; import android.support.v4.app.ListFragment; import android.support.v4.widget.SwipeRefreshLayout; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import com.parse.GetCallback; import com.parse.ParseException; import com.parse.ParseObject; import bg.mentormate.academy.radarapp.R; import bg.mentormate.academy.radarapp.activities.MainActivity; import bg.mentormate.academy.radarapp.adapters.RoomQueryAdapter; import bg.mentormate.academy.radarapp.data.LocalDb; import bg.mentormate.academy.radarapp.models.Room; import bg.mentormate.academy.radarapp.models.User; import bg.mentormate.academy.radarapp.views.RoomItem; /** * Created by tl on 09.02.15. */ public class HomeFragment extends ListFragment implements SwipeRefreshLayout.OnRefreshListener{ /** * The fragment argument representing the section number for this * fragment. */ private static final String ARG_SECTION_NUMBER = "section_number"; /** * Returns a new instance of this fragment for the given section * number. */ public static HomeFragment newInstance(int sectionNumber) { HomeFragment fragment = new HomeFragment(); Bundle args = new Bundle(); args.putInt(ARG_SECTION_NUMBER, sectionNumber); fragment.setArguments(args); return fragment; } private LocalDb mLocalDb; private User mCurrentUser; private Room mMyRoom; private RoomQueryAdapter mRecentRoomQueryAdapter; private RoomItem mRiMyRoom; private TextView mTvNoRoomInfo; private View mHeaderView; private SwipeRefreshLayout mSrlRefresh; public HomeFragment() { } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_home, container, false); mHeaderView = inflater.inflate(R.layout.fragment_home_header, null); initData(); initViews(rootView); fetchDataToViews(); return rootView; } private void initData() { mLocalDb = LocalDb.getInstance(); mCurrentUser = mLocalDb.getCurrentUser(); mMyRoom = mCurrentUser.getRoom(); mRecentRoomQueryAdapter = new RoomQueryAdapter(getActivity(), null); } private void initViews(View rootView) { mRiMyRoom = (RoomItem) mHeaderView.findViewById(R.id.riMyRoom); mTvNoRoomInfo = (TextView) mHeaderView.findViewById(R.id.tvNoRoomInfo); mSrlRefresh = (SwipeRefreshLayout) rootView.findViewById(R.id.srlRefresh); mSrlRefresh.setColorSchemeColors( getResources().getColor(R.color.br_dark_background)); mSrlRefresh.setOnRefreshListener(this); } private void fetchDataToViews() { if (mMyRoom != null) { roomOwnedVisibility(); mMyRoom.fetchIfNeededInBackground(new GetCallback<ParseObject>() { @Override public void done(ParseObject room, ParseException e) { mRiMyRoom.setData(mCurrentUser, mMyRoom); } }); } else { roomNotOwnedVisibility(); } } @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); getListView().addHeaderView(mHeaderView); setListAdapter(mRecentRoomQueryAdapter); } private void roomNotOwnedVisibility() { mRiMyRoom.setVisibility(View.GONE); mTvNoRoomInfo.setVisibility(View.VISIBLE); } private void roomOwnedVisibility() { mRiMyRoom.setVisibility(View.VISIBLE); mTvNoRoomInfo.setVisibility(View.GONE); } @Override public void onResume() { super.onResume(); if (getActivity() instanceof MainActivity) { ((MainActivity) getActivity()).onSectionAttached( getArguments().getInt(ARG_SECTION_NUMBER), null); } } @Override public void onDestroyView() { super.onDestroyView(); setListAdapter(null); } @Override public void onRefresh() { fetchDataToViews(); mRecentRoomQueryAdapter = new RoomQueryAdapter(getActivity(), null); setListAdapter(mRecentRoomQueryAdapter); mSrlRefresh.setRefreshing(false); } }