/* * Copyright (C) 2016 The Android Open Source Project * * 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.android.talkbacktests.testsession; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.TextView; import android.text.Html; import android.text.method.LinkMovementMethod; import com.android.talkbacktests.NavigationCallback; import com.android.talkbacktests.R; import com.android.talkbacktests.TestController; /** * A {@link Fragment} to display test session. */ public class TestSessionFragment extends Fragment implements View.OnClickListener { private int mSessionId; private int mContentIndex; // Callback when navigation button is clicked. private NavigationCallback mCallback; public void setSession(int sessionId, int contentIndex) { mSessionId = sessionId; mContentIndex = contentIndex; } public void setNavigationCallback(NavigationCallback callback) { mCallback = callback; } @Override public void onResume() { super.onResume(); final AppCompatActivity activity = (AppCompatActivity) getActivity(); final String title = TestController.getInstance().getSessionById(mSessionId).getTitle(); if (activity != null) { final ActionBar toolbar = activity.getSupportActionBar(); if (toolbar != null) { toolbar.setDisplayHomeAsUpEnabled(true); toolbar.setDisplayShowHomeEnabled(true); toolbar.setDisplayShowCustomEnabled(false); toolbar.setTitle(title); } activity.setTitle(title); } } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedState) { final View view = inflater.inflate(R.layout.fragment_test_content, container, false); final BaseTestContent content = TestController.getInstance().getSessionById(mSessionId) .getTestContent(mContentIndex); final TextView description = (TextView) (view.findViewById(R.id.contentContainer).findViewById(R.id.description)); description.setText(Html.fromHtml(content.getDescription())); description.setMovementMethod(LinkMovementMethod.getInstance()); final TextView subtitle = (TextView) (view.findViewById(R.id.contentContainer).findViewById(R.id.title)); subtitle.setText(content.getSubtitle()); final Button previous = (Button) view.findViewById(R.id.previous); previous.setOnClickListener(this); final Button next = (Button) view.findViewById(R.id.next); next.setOnClickListener(this); assignButtonText(previous, next); final ViewGroup contentArea = (ViewGroup) view.findViewById(R.id.content_area); contentArea.addView(content.getView(inflater, contentArea, getContext())); return view; } @Override public void onClick(View v) { if (mCallback == null) { return; } switch (v.getId()) { case R.id.next: mCallback.onNextContentClicked(mSessionId, mContentIndex); break; case R.id.previous: mCallback.onPreviousContentClicked(mSessionId, mContentIndex); break; } } private void assignButtonText(Button previousButton, Button nextButton) { final TestController controller = TestController.getInstance(); if (mContentIndex > 0) { previousButton.setText(R.string.button_previous_page); } else if (controller.getPreviousSessionById(mSessionId) != null) { previousButton.setText(R.string.button_previous_category); } else { previousButton.setText(R.string.button_home); } final TestSession session = controller.getSessionById(mSessionId); if (mContentIndex < session.getContentCount() - 1) { nextButton.setText(R.string.button_next_page); } else if (controller.getNextSessionById(mSessionId) != null) { nextButton.setText(R.string.button_next_category); } else { nextButton.setText(R.string.button_home); } } }