private void updateTimeBasedUi(SessionDetailModel data) { // Show "Live streamed" for all live-streamed sessions that aren't currently going on. mLiveStreamVideocamIconAndText.setVisibility( data.hasLiveStream() && !data.isSessionOngoing() ? View.VISIBLE : View.GONE); if (data.hasLiveStream() && data.hasSessionStarted()) { // Show the play button and text only once the session starts. mLiveStreamVideocamIconAndText.setVisibility(View.VISIBLE); if (data.isSessionOngoing()) { mLiveStreamPlayIconAndText.setText(getString(R.string.session_watch_live)); } else { mLiveStreamPlayIconAndText.setText(getString(R.string.session_watch)); // TODO: implement Replay. } } else { mLiveStreamPlayIconAndText.setVisibility(View.GONE); } // If the session is done, hide the FAB, and show the "Give feedback" card. if (data.isSessionReadyForFeedback()) { mAddScheduleButton.setVisibility(View.INVISIBLE); if (!data.hasFeedback() && data.isInScheduleWhenSessionFirstLoaded() && !sDismissedFeedbackCard.contains(data.getSessionId())) { showGiveFeedbackCard(data); } } String timeHint = ""; if (TimeUtils.hasConferenceEnded(getContext())) { // No time hint to display. timeHint = ""; } else if (data.hasSessionEnded()) { timeHint = getString(R.string.time_hint_session_ended); } else if (data.isSessionOngoing()) { long minutesAgo = data.minutesSinceSessionStarted(); if (minutesAgo > 1) { timeHint = getString(R.string.time_hint_started_min, minutesAgo); } else { timeHint = getString(R.string.time_hint_started_just); } } else { long minutesUntilStart = data.minutesUntilSessionStarts(); if (minutesUntilStart > 0 && minutesUntilStart <= SessionDetailConstants.HINT_TIME_BEFORE_SESSION_MIN) { if (minutesUntilStart > 1) { timeHint = getString(R.string.time_hint_about_to_start_min, minutesUntilStart); } else { timeHint = getString(R.string.time_hint_about_to_start_shortly, minutesUntilStart); } } } final TextView timeHintView = (TextView) getActivity().findViewById(R.id.time_hint); if (!TextUtils.isEmpty(timeHint)) { timeHintView.setVisibility(View.VISIBLE); timeHintView.setText(timeHint); } else { timeHintView.setVisibility(View.GONE); } }