Skip to content
This repository was archived by the owner on May 6, 2024. It is now read-only.

Commit 3012ae5

Browse files
authored
chore: Update ChromeCast for AppNav (#1839)
Fixes: LEARNER-9687
1 parent 268074a commit 3012ae5

File tree

5 files changed

+37
-1
lines changed

5 files changed

+37
-1
lines changed

Diff for: OpenEdXMobile/res/layout/course_dashboard_toolbar.xml

+8
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,14 @@
121121
android:textAppearance="@style/CourseDashboardCollapsedToolbarTitle"
122122
tools:text="The Science of Happiness " />
123123

124+
<androidx.mediarouter.app.MediaRouteButton
125+
android:id="@+id/media_route_button"
126+
android:layout_width="wrap_content"
127+
android:layout_height="wrap_content"
128+
android:mediaRouteTypes="user"
129+
android:visibility="gone"
130+
app:mediaRouteButtonTint="@color/neutralWhiteT" />
131+
124132
<androidx.appcompat.widget.AppCompatImageView
125133
android:id="@+id/collapsed_toolbar_dismiss"
126134
android:layout_width="@dimen/widget_margin_double"

Diff for: OpenEdXMobile/res/layout/player_controller.xml

+6
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,12 @@
6464
android:textStyle="bold"
6565
tools:text="02:05" />
6666

67+
<androidx.mediarouter.app.MediaRouteButton
68+
android:id="@+id/media_route_button"
69+
style="@style/video_player_bottom_control"
70+
android:mediaRouteTypes="user"
71+
app:mediaRouteButtonTint="@color/white" />
72+
6773
<androidx.appcompat.widget.AppCompatImageButton
6874
android:id="@+id/settings"
6975
style="@style/video_player_bottom_control"

Diff for: OpenEdXMobile/src/main/java/org/edx/mobile/player/PlayerController.java

+8
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@
4040

4141
import androidx.appcompat.widget.AppCompatImageButton;
4242
import androidx.core.content.ContextCompat;
43+
import androidx.mediarouter.app.MediaRouteButton;
44+
45+
import com.google.android.gms.cast.framework.CastButtonFactory;
4346

4447
import org.edx.mobile.R;
4548
import org.edx.mobile.logger.Logger;
@@ -108,6 +111,7 @@ public class PlayerController extends FrameLayout {
108111
private AppCompatImageButton mForwardButton;
109112
private AppCompatImageButton mFullscreenButton;
110113
private AppCompatImageButton mSettingsButton;
114+
private MediaRouteButton mMediaRouteButton;
111115
private Handler mHandler = new MessageHandler(this);
112116
private String mTitle;
113117
private TextView mTitleTextView;
@@ -243,6 +247,10 @@ private void initControllerView(View v) {
243247
mSettingsButton.setOnClickListener(mSettingsListener);
244248
}
245249

250+
mMediaRouteButton = v.findViewById(R.id.media_route_button);
251+
mMediaRouteButton.setVisibility(VISIBLE);
252+
CastButtonFactory.setUpMediaRouteButton(getContext().getApplicationContext(), mMediaRouteButton);
253+
246254
mEndTime = (TextView) v.findViewById(R.id.time);
247255
mCurrentTime = (TextView) v.findViewById(R.id.time_current);
248256
mFormatBuilder = new StringBuilder();

Diff for: OpenEdXMobile/src/main/java/org/edx/mobile/util/Config.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -632,7 +632,7 @@ public boolean isAnnouncementEnabled() {
632632

633633
// locally defined flag to disable the chromecast
634634
public boolean isChromeCastEnabled() {
635-
return getBoolean(CHROMECAST_ENABLED, false);
635+
return getBoolean(CHROMECAST_ENABLED, true);
636636
}
637637

638638
public boolean isDownloadToSDCardEnabled() {

Diff for: OpenEdXMobile/src/main/java/org/edx/mobile/view/CourseTabsDashboardFragment.kt

+14
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ import androidx.fragment.app.viewModels
1414
import androidx.viewpager2.widget.ViewPager2.OnPageChangeCallback
1515
import com.android.billingclient.api.ProductDetails
1616
import com.facebook.shimmer.ShimmerFrameLayout
17+
import com.google.android.gms.cast.framework.CastButtonFactory
18+
import com.google.android.gms.cast.framework.CastState
1719
import com.google.android.material.tabs.TabLayout
1820
import com.google.android.material.tabs.TabLayout.OnTabSelectedListener
1921
import com.google.android.material.tabs.TabLayoutMediator
@@ -37,6 +39,7 @@ import org.edx.mobile.extenstion.serializable
3739
import org.edx.mobile.extenstion.serializableOrThrow
3840
import org.edx.mobile.extenstion.setTitleStateListener
3941
import org.edx.mobile.extenstion.setVisibility
42+
import org.edx.mobile.googlecast.GoogleCastDelegate
4043
import org.edx.mobile.http.HttpStatus
4144
import org.edx.mobile.http.HttpStatusException
4245
import org.edx.mobile.http.notifications.SnackbarErrorNotification
@@ -109,6 +112,7 @@ class CourseTabsDashboardFragment : BaseFragment() {
109112

110113
private lateinit var binding: FragmentCourseTabsDashboardBinding
111114
private lateinit var courseData: EnrolledCoursesResponse
115+
private lateinit var googleCastDelegate: GoogleCastDelegate
112116

113117
private val iapViewModel: InAppPurchasesViewModel by viewModels()
114118
private val courseDateViewModel: CourseDateViewModel by viewModels()
@@ -529,6 +533,16 @@ class CourseTabsDashboardFragment : BaseFragment() {
529533
courseTitle.text = courseData.course.name
530534
tabs.setVisibility(hasAccess)
531535

536+
if (environment.config.isChromeCastEnabled) {
537+
googleCastDelegate = GoogleCastDelegate.getInstance(analyticsRegistry)
538+
mediaRouteButton.setVisibility(googleCastDelegate.isConnected)
539+
540+
CastButtonFactory.setUpMediaRouteButton(requireContext(), mediaRouteButton)
541+
googleCastDelegate.addCastStateListener { state ->
542+
mediaRouteButton.setVisibility(state == CastState.CONNECTED)
543+
}
544+
}
545+
532546
val expiryDate = CourseCardUtils.getFormattedDate(requireContext(), courseData)
533547
if (!expiryDate.isNullOrEmpty()) {
534548
courseExpiryDate.apply {

0 commit comments

Comments
 (0)