/* * Copyright 2016 Google Inc. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.google.samples.apps.iosched.myschedule; import android.app.Fragment; import android.content.Context; import android.net.Uri; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import com.google.samples.apps.iosched.R; import com.google.samples.apps.iosched.archframework.UpdatableView; import com.google.samples.apps.iosched.myschedule.MyScheduleModel.MyScheduleQueryEnum; import com.google.samples.apps.iosched.myschedule.MyScheduleModel.MyScheduleUserActionEnum; import com.google.samples.apps.iosched.util.TimeUtils; /** * This is used by the wide layout in {@link MyScheduleActivity}. It uses a {@link * MyScheduleSingleDayNoScrollView} for each day of the conference. */ public class MyScheduleAllDaysFragment extends Fragment implements UpdatableView<MyScheduleModel, MyScheduleQueryEnum, MyScheduleUserActionEnum> { private MyScheduleSingleDayNoScrollView mPreConferenceDayView; // TODO - this layout assumes the conference lasts exactly 3 days, make it more flexible in the // way it is built private MyScheduleSingleDayNoScrollView[] mMyScheduleSingleDayViews = new MyScheduleSingleDayNoScrollView[3]; private UserActionListener mListener; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View root = inflater.inflate(R.layout.my_schedule_alldays_frag, container, false); mMyScheduleSingleDayViews[0] = (MyScheduleSingleDayNoScrollView) root .findViewById(R.id.my_schedule_first_day); mMyScheduleSingleDayViews[1] = (MyScheduleSingleDayNoScrollView) root .findViewById(R.id.my_schedule_second_day); mMyScheduleSingleDayViews[2] = (MyScheduleSingleDayNoScrollView) root .findViewById(R.id.my_schedule_third_day); setRetainInstance(false); return root; } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); initViews(); } private void initViews() { TextView firstDayHeaderView = (TextView) getActivity() .findViewById(R.id.day_label_first_day); TextView secondDayHeaderView = (TextView) getActivity() .findViewById(R.id.day_label_second_day); TextView thirdDayHeaderView = (TextView) getActivity() .findViewById(R.id.day_label_third_day); if (firstDayHeaderView != null) { firstDayHeaderView.setText(TimeUtils.getDayName(getContext(), 0)); } if (secondDayHeaderView != null) { secondDayHeaderView.setText(TimeUtils.getDayName(getContext(), 1)); } if (thirdDayHeaderView != null) { thirdDayHeaderView.setText(TimeUtils.getDayName(getContext(), 2)); } mPreConferenceDayView = (MyScheduleSingleDayNoScrollView) getActivity().findViewById(R.id.my_schedule_zeroth_day); TextView zerothDayHeaderView = (TextView) getActivity() .findViewById(R.id.day_label_zeroth_day); if (MyScheduleModel.showPreConferenceData(getContext())) { mPreConferenceDayView.setVisibility(View.VISIBLE); zerothDayHeaderView.setText(TimeUtils.getDayName(getContext(), -1)); zerothDayHeaderView.setVisibility(View.VISIBLE); } else { mPreConferenceDayView.setVisibility(View.GONE); zerothDayHeaderView.setVisibility(View.GONE); } } @Override public void displayData(MyScheduleModel model, MyScheduleQueryEnum query) { switch (query) { case SCHEDULE: updateSchedule(model); break; default: break; } } @Override public void displayErrorMessage(MyScheduleQueryEnum query) { // Not showing any error } @Override public void displayUserActionResult(MyScheduleModel model , MyScheduleUserActionEnum userAction, boolean success) { switch (userAction) { case RELOAD_DATA: updateSchedule(model); break; case SESSION_SLOT: break; case FEEDBACK: break; default: break; } } private void updateSchedule(MyScheduleModel model) { if (isVisible()) { if (MyScheduleModel.showPreConferenceData(getContext())) { if (mPreConferenceDayView.getAdapter() == null) { mPreConferenceDayView.setAdapter(new MyScheduleDayAdapter(getActivity(), ((MyScheduleActivity) getActivity()).getLUtils(), mListener)); } mPreConferenceDayView.getAdapter().updateItems(model.getConferenceDataForDay( MyScheduleModel.PRE_CONFERENCE_DAY_ID)); } for (int i = 0; i < mMyScheduleSingleDayViews.length; i++) { if (mMyScheduleSingleDayViews[i].getAdapter() == null) { mMyScheduleSingleDayViews[i].setAdapter(new MyScheduleDayAdapter(getActivity(), ((MyScheduleActivity) getActivity()).getLUtils(), mListener)); } mMyScheduleSingleDayViews[i].getAdapter().updateItems(model.getConferenceDataForDay( i + 1) ); // Day 1 of conference has id 1 } } } @Override public Uri getDataUri(MyScheduleQueryEnum query) { return null; } @Override public void addListener(UserActionListener listener) { mListener = listener; } @Override public Context getContext() { return getActivity(); } }