forked from recloudstream/cloudstream
		
	trailer fixes + fullscreen
This commit is contained in:
		
							parent
							
								
									91a14dac0f
								
							
						
					
					
						commit
						62f1014e72
					
				
					 16 changed files with 281 additions and 108 deletions
				
			
		|  | @ -33,7 +33,6 @@ object CommonActivity { | |||
|     var canShowPipMode: Boolean = false | ||||
|     var isInPIPMode: Boolean = false | ||||
| 
 | ||||
|     val backEvent = Event<Boolean>() | ||||
|     val onColorSelectedEvent = Event<Pair<Int, Int>>() | ||||
|     val onDialogDismissedEvent = Event<Int>() | ||||
| 
 | ||||
|  |  | |||
|  | @ -28,7 +28,6 @@ import com.lagradost.cloudstream3.APIHolder.allProviders | |||
| import com.lagradost.cloudstream3.APIHolder.apis | ||||
| import com.lagradost.cloudstream3.APIHolder.getApiDubstatusSettings | ||||
| import com.lagradost.cloudstream3.APIHolder.initAll | ||||
| import com.lagradost.cloudstream3.CommonActivity.backEvent | ||||
| import com.lagradost.cloudstream3.CommonActivity.loadThemes | ||||
| import com.lagradost.cloudstream3.CommonActivity.onColorSelectedEvent | ||||
| import com.lagradost.cloudstream3.CommonActivity.onDialogDismissedEvent | ||||
|  | @ -60,6 +59,7 @@ import com.lagradost.cloudstream3.utils.DataStore.removeKey | |||
| import com.lagradost.cloudstream3.utils.DataStore.setKey | ||||
| import com.lagradost.cloudstream3.utils.DataStoreHelper.migrateResumeWatching | ||||
| import com.lagradost.cloudstream3.utils.DataStoreHelper.setViewPos | ||||
| import com.lagradost.cloudstream3.utils.IOnBackPressed | ||||
| import com.lagradost.cloudstream3.utils.InAppUpdater.Companion.runAutoUpdate | ||||
| import com.lagradost.cloudstream3.utils.UIHelper.changeStatusBarState | ||||
| import com.lagradost.cloudstream3.utils.UIHelper.checkWrite | ||||
|  | @ -235,15 +235,23 @@ class MainActivity : AppCompatActivity(), ColorPickerDialogListener { | |||
|         onUserLeaveHint(this) | ||||
|     } | ||||
| 
 | ||||
|     override fun onBackPressed() { | ||||
|     private fun backPressed() { | ||||
|         this.window?.navigationBarColor = | ||||
|             this.colorFromAttribute(R.attr.primaryGrayBackground) | ||||
|         this.updateLocale() | ||||
|         backEvent.invoke(true) | ||||
|         super.onBackPressed() | ||||
|         this.updateLocale() | ||||
|     } | ||||
| 
 | ||||
|     override fun onBackPressed() { | ||||
|         ((supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as? NavHostFragment?)?.childFragmentManager?.primaryNavigationFragment as? IOnBackPressed)?.onBackPressed() | ||||
|             ?.let { runNormal -> | ||||
|                 if (runNormal) backPressed() | ||||
|             } ?: run { | ||||
|             backPressed() | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { | ||||
|         if (VLC_REQUEST_CODE == requestCode) { | ||||
|             if (resultCode == RESULT_OK && data != null) { | ||||
|  | @ -363,7 +371,7 @@ class MainActivity : AppCompatActivity(), ColorPickerDialogListener { | |||
|         runBlocking { | ||||
| 
 | ||||
|             val query = """ | ||||
|             query {  | ||||
|             query { | ||||
|                 searchShows(search: "spider", limit: 10) { | ||||
|                     id | ||||
|                     name | ||||
|  |  | |||
|  | @ -62,7 +62,14 @@ import kotlinx.android.synthetic.main.player_custom_layout.player_ffwd_holder | |||
| import kotlinx.android.synthetic.main.player_custom_layout.player_holder | ||||
| import kotlinx.android.synthetic.main.player_custom_layout.player_pause_play | ||||
| import kotlinx.android.synthetic.main.player_custom_layout.player_pause_play_holder | ||||
| import kotlinx.android.synthetic.main.player_custom_layout.player_progressbar_left | ||||
| import kotlinx.android.synthetic.main.player_custom_layout.player_progressbar_left_holder | ||||
| import kotlinx.android.synthetic.main.player_custom_layout.player_progressbar_left_icon | ||||
| import kotlinx.android.synthetic.main.player_custom_layout.player_progressbar_right | ||||
| import kotlinx.android.synthetic.main.player_custom_layout.player_progressbar_right_holder | ||||
| import kotlinx.android.synthetic.main.player_custom_layout.player_progressbar_right_icon | ||||
| import kotlinx.android.synthetic.main.player_custom_layout.player_rew_holder | ||||
| import kotlinx.android.synthetic.main.player_custom_layout.player_time_text | ||||
| import kotlinx.android.synthetic.main.player_custom_layout.player_video_bar | ||||
| import kotlinx.android.synthetic.main.player_custom_layout.shadow_overlay | ||||
| import kotlinx.android.synthetic.main.trailer_custom_layout.* | ||||
|  | @ -226,7 +233,7 @@ open class FullScreenPlayer : AbstractPlayerFragment() { | |||
|             player_ffwd_holder?.alpha = 1f | ||||
|             player_rew_holder?.alpha = 1f | ||||
|             // player_pause_play_holder?.alpha = 1f | ||||
| 
 | ||||
|             shadow_overlay?.isVisible = true | ||||
|             shadow_overlay?.startAnimation(fadeAnimation) | ||||
|             player_ffwd_holder?.startAnimation(fadeAnimation) | ||||
|             player_rew_holder?.startAnimation(fadeAnimation) | ||||
|  | @ -251,7 +258,7 @@ open class FullScreenPlayer : AbstractPlayerFragment() { | |||
|         player_subtitle_offset_btt?.isGone = player.getCurrentPreferredSubtitle() == null | ||||
|     } | ||||
| 
 | ||||
|     override fun onResume() { | ||||
|     protected fun enterFullscreen() { | ||||
|         if (isFullScreenPlayer) { | ||||
|             activity?.hideSystemUI() | ||||
|             if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P && fullscreenNotch) { | ||||
|  | @ -262,15 +269,12 @@ open class FullScreenPlayer : AbstractPlayerFragment() { | |||
|         } | ||||
|         if (lockRotation) | ||||
|             activity?.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE | ||||
| 
 | ||||
| 
 | ||||
|         super.onResume() | ||||
|     } | ||||
| 
 | ||||
|     override fun onDestroy() { | ||||
|     protected fun exitFullscreen() { | ||||
|         activity?.showSystemUI() | ||||
|         if (lockRotation) | ||||
|             activity?.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_USER | ||||
|         //if (lockRotation) | ||||
|         activity?.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_USER | ||||
| 
 | ||||
|         // simply resets brightness and notch settings that might have been overridden | ||||
|         val lp = activity?.window?.attributes | ||||
|  | @ -280,6 +284,15 @@ open class FullScreenPlayer : AbstractPlayerFragment() { | |||
|                 WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT | ||||
|         } | ||||
|         activity?.window?.attributes = lp | ||||
|     } | ||||
| 
 | ||||
|     override fun onResume() { | ||||
|         enterFullscreen() | ||||
|         super.onResume() | ||||
|     } | ||||
| 
 | ||||
|     override fun onDestroy() { | ||||
|         exitFullscreen() | ||||
|         super.onDestroy() | ||||
|     } | ||||
| 
 | ||||
|  | @ -529,6 +542,7 @@ open class FullScreenPlayer : AbstractPlayerFragment() { | |||
|         player_lock_holder?.startAnimation(fadeAnimation) | ||||
|         //player_go_back_holder?.startAnimation(fadeAnimation) | ||||
| 
 | ||||
|         shadow_overlay?.isVisible = true | ||||
|         shadow_overlay?.startAnimation(fadeAnimation) | ||||
| 
 | ||||
|         updateLockUI() | ||||
|  | @ -774,14 +788,14 @@ open class FullScreenPlayer : AbstractPlayerFragment() { | |||
| 
 | ||||
|                         if (currentClickCount >= 1) { // have double clicked | ||||
|                             currentDoubleTapIndex++ | ||||
|                             if (doubleTapPauseEnabled) { // you can pause if your tap is in the middle of the screen | ||||
|                             if (doubleTapPauseEnabled && isFullScreenPlayer) { // you can pause if your tap is in the middle of the screen | ||||
|                                 when { | ||||
|                                     currentTouch.x < screenWidth / 2 - (DOUBLE_TAB_PAUSE_PERCENTAGE * screenWidth) -> { | ||||
|                                         if (doubleTapEnabled && isFullScreenPlayer) | ||||
|                                         if (doubleTapEnabled) | ||||
|                                             rewind() | ||||
|                                     } | ||||
|                                     currentTouch.x > screenWidth / 2 + (DOUBLE_TAB_PAUSE_PERCENTAGE * screenWidth) -> { | ||||
|                                         if (doubleTapEnabled && isFullScreenPlayer) | ||||
|                                         if (doubleTapEnabled) | ||||
|                                             fastForward() | ||||
|                                     } | ||||
|                                     else -> { | ||||
|  | @ -1050,6 +1064,7 @@ open class FullScreenPlayer : AbstractPlayerFragment() { | |||
|         // if nothing has loaded these buttons should not be visible | ||||
|         player_skip_episode?.isVisible = false | ||||
|         player_skip_op?.isVisible = false | ||||
|         shadow_overlay?.isVisible = false | ||||
| 
 | ||||
|         updateLockUI() | ||||
|         updateUIVisibility() | ||||
|  |  | |||
|  | @ -641,9 +641,15 @@ class ResultFragment : ResultTrailerPlayer() { | |||
|     } | ||||
| 
 | ||||
|     private fun setTrailers(trailers: List<String>?) { | ||||
|         if(context?.isTvSettings() == true) return | ||||
|         currentTrailers = trailers ?: emptyList() | ||||
|         loadTrailer() | ||||
|         context?.let { ctx -> | ||||
|             if (ctx.isTvSettings()) return | ||||
|             val settingsManager = PreferenceManager.getDefaultSharedPreferences(ctx) | ||||
|             val showTrailers = | ||||
|                 settingsManager.getBoolean(ctx.getString(R.string.show_trailers_key), true) | ||||
|             if (!showTrailers) return | ||||
|             currentTrailers = trailers ?: emptyList() | ||||
|             loadTrailer() | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     private fun setActors(actors: List<ActorData>?) { | ||||
|  |  | |||
|  | @ -2,14 +2,22 @@ package com.lagradost.cloudstream3.ui.result | |||
| 
 | ||||
| import android.content.res.Configuration | ||||
| import android.graphics.Rect | ||||
| import android.widget.LinearLayout | ||||
| import android.os.Bundle | ||||
| import android.view.View | ||||
| import android.view.ViewGroup | ||||
| import android.widget.FrameLayout | ||||
| import androidx.core.view.isVisible | ||||
| import com.discord.panels.PanelsChildGestureRegionObserver | ||||
| import com.lagradost.cloudstream3.R | ||||
| import com.lagradost.cloudstream3.ui.player.SubtitleData | ||||
| import com.lagradost.cloudstream3.utils.IOnBackPressed | ||||
| import kotlinx.android.synthetic.main.fragment_result.* | ||||
| import kotlinx.android.synthetic.main.fragment_result_swipe.* | ||||
| import kotlinx.android.synthetic.main.fragment_trailer.* | ||||
| import kotlinx.android.synthetic.main.trailer_custom_layout.* | ||||
| 
 | ||||
| open class ResultTrailerPlayer : com.lagradost.cloudstream3.ui.player.FullScreenPlayer(), | ||||
|     PanelsChildGestureRegionObserver.GestureRegionsListener { | ||||
|     PanelsChildGestureRegionObserver.GestureRegionsListener, IOnBackPressed { | ||||
| 
 | ||||
|     override var lockRotation = false | ||||
|     override var isFullScreenPlayer = false | ||||
|  | @ -37,7 +45,7 @@ open class ResultTrailerPlayer : com.lagradost.cloudstream3.ui.player.FullScreen | |||
| 
 | ||||
|     private fun fixPlayerSize() { | ||||
|         playerWidthHeight?.let { (w, h) -> | ||||
|             val orientation = this.resources.configuration?.orientation ?: return | ||||
|             val orientation = context?.resources?.configuration?.orientation ?: return | ||||
| 
 | ||||
|             val sw = if (orientation == Configuration.ORIENTATION_LANDSCAPE) { | ||||
|                 screenWidth | ||||
|  | @ -48,7 +56,10 @@ open class ResultTrailerPlayer : com.lagradost.cloudstream3.ui.player.FullScreen | |||
|             player_background?.apply { | ||||
|                 isVisible = true | ||||
|                 layoutParams = | ||||
|                     LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, sw * h / w) | ||||
|                     FrameLayout.LayoutParams( | ||||
|                         FrameLayout.LayoutParams.MATCH_PARENT, | ||||
|                         if (isFullScreenPlayer) FrameLayout.LayoutParams.MATCH_PARENT else sw * h / w | ||||
|                     ) | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | @ -65,4 +76,49 @@ open class ResultTrailerPlayer : com.lagradost.cloudstream3.ui.player.FullScreen | |||
|     override fun exitedPipMode() {} | ||||
| 
 | ||||
|     override fun onGestureRegionsUpdate(gestureRegions: List<Rect>) {} | ||||
| 
 | ||||
|     private fun updateFullscreen(fullscreen: Boolean) { | ||||
|         isFullScreenPlayer = fullscreen | ||||
|         lockRotation = fullscreen | ||||
|         player_fullscreen?.setImageResource(if (fullscreen) R.drawable.baseline_fullscreen_exit_24 else R.drawable.baseline_fullscreen_24) | ||||
|         uiReset() | ||||
|         if (fullscreen) { | ||||
|             enterFullscreen() | ||||
|             result_top_bar?.isVisible = false | ||||
|             result_fullscreen_holder?.isVisible = true | ||||
|             result_main_holder?.isVisible = false | ||||
|             player_background?.let { view -> | ||||
|                 (view.parent as ViewGroup?)?.removeView(view) | ||||
|                 result_fullscreen_holder?.addView(view) | ||||
|             } | ||||
|         } else { | ||||
|             result_top_bar?.isVisible = true | ||||
|             result_fullscreen_holder?.isVisible = false | ||||
|             result_main_holder?.isVisible = true | ||||
|             player_background?.let { view -> | ||||
|                 (view.parent as ViewGroup?)?.removeView(view) | ||||
|                 result_smallscreen_holder?.addView(view) | ||||
|             } | ||||
|             exitFullscreen() | ||||
|         } | ||||
|         fixPlayerSize() | ||||
|     } | ||||
| 
 | ||||
|     override fun onViewCreated(view: View, savedInstanceState: Bundle?) { | ||||
|         super.onViewCreated(view, savedInstanceState) | ||||
|         player_fullscreen?.setOnClickListener { | ||||
|             updateFullscreen(!isFullScreenPlayer) | ||||
|         } | ||||
|         updateFullscreen(isFullScreenPlayer) | ||||
|         uiReset() | ||||
|     } | ||||
| 
 | ||||
|     override fun onBackPressed(): Boolean { | ||||
|         return if (isFullScreenPlayer) { | ||||
|             updateFullscreen(false) | ||||
|             false | ||||
|         } else { | ||||
|             true | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | @ -0,0 +1,5 @@ | |||
| package com.lagradost.cloudstream3.utils | ||||
| 
 | ||||
| interface IOnBackPressed { | ||||
|     fun onBackPressed(): Boolean | ||||
| } | ||||
							
								
								
									
										10
									
								
								app/src/main/res/drawable/baseline_fullscreen_24.xml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								app/src/main/res/drawable/baseline_fullscreen_24.xml
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,10 @@ | |||
| <vector xmlns:android="http://schemas.android.com/apk/res/android" | ||||
|     android:width="24dp" | ||||
|     android:height="24dp" | ||||
|     android:viewportWidth="24" | ||||
|     android:viewportHeight="24" | ||||
|     android:tint="?attr/colorControlNormal"> | ||||
|   <path | ||||
|       android:fillColor="@android:color/white" | ||||
|       android:pathData="M7,14L5,14v5h5v-2L7,17v-3zM5,10h2L7,7h3L10,5L5,5v5zM17,17h-3v2h5v-5h-2v3zM14,5v2h3v3h2L19,5h-5z"/> | ||||
| </vector> | ||||
							
								
								
									
										10
									
								
								app/src/main/res/drawable/baseline_fullscreen_exit_24.xml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								app/src/main/res/drawable/baseline_fullscreen_exit_24.xml
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,10 @@ | |||
| <vector xmlns:android="http://schemas.android.com/apk/res/android" | ||||
|     android:width="24dp" | ||||
|     android:height="24dp" | ||||
|     android:viewportWidth="24" | ||||
|     android:viewportHeight="24" | ||||
|     android:tint="?attr/colorControlNormal"> | ||||
|   <path | ||||
|       android:fillColor="@android:color/white" | ||||
|       android:pathData="M5,16h3v3h2v-5L5,14v2zM8,8L5,8v2h5L10,5L8,5v3zM14,19h2v-3h3v-2h-5v5zM16,8L16,5h-2v5h5L19,8h-3z"/> | ||||
| </vector> | ||||
							
								
								
									
										10
									
								
								app/src/main/res/drawable/baseline_theaters_24.xml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								app/src/main/res/drawable/baseline_theaters_24.xml
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,10 @@ | |||
| <vector xmlns:android="http://schemas.android.com/apk/res/android" | ||||
|     android:width="24dp" | ||||
|     android:height="24dp" | ||||
|     android:viewportWidth="24" | ||||
|     android:viewportHeight="24" | ||||
|     android:tint="?attr/white"> | ||||
|   <path | ||||
|       android:fillColor="@android:color/white" | ||||
|       android:pathData="M18,3v2h-2L16,3L8,3v2L6,5L6,3L4,3v18h2v-2h2v2h8v-2h2v2h2L20,3h-2zM8,17L6,17v-2h2v2zM8,13L6,13v-2h2v2zM8,9L6,9L6,7h2v2zM18,17h-2v-2h2v2zM18,13h-2v-2h2v2zM18,9h-2L16,7h2v2z"/> | ||||
| </vector> | ||||
|  | @ -138,7 +138,13 @@ | |||
|                     android:background="?attr/primaryBlackBackground" | ||||
|                     android:orientation="vertical"> | ||||
| 
 | ||||
|                 <include layout="@layout/fragment_trailer" /> | ||||
|                 <FrameLayout | ||||
|                         android:id="@+id/result_smallscreen_holder" | ||||
|                         android:layout_width="wrap_content" | ||||
|                         android:layout_height="wrap_content"> | ||||
| 
 | ||||
|                     <include layout="@layout/fragment_trailer" /> | ||||
|                 </FrameLayout> | ||||
| 
 | ||||
|                 <!-- | ||||
|                 <FrameLayout | ||||
|  |  | |||
|  | @ -144,6 +144,15 @@ | |||
|     </FrameLayout> | ||||
| 
 | ||||
|     <FrameLayout | ||||
|             android:visibility="gone" | ||||
|             android:id="@+id/result_fullscreen_holder" | ||||
|             android:layout_width="match_parent" | ||||
|             android:layout_height="match_parent"> | ||||
| 
 | ||||
|     </FrameLayout> | ||||
| 
 | ||||
|     <FrameLayout | ||||
|             android:id="@+id/result_main_holder" | ||||
|             android:layout_width="match_parent" | ||||
|             android:layout_height="match_parent"> | ||||
| 
 | ||||
|  |  | |||
|  | @ -61,20 +61,6 @@ | |||
|             app:layout_constraintBottom_toTopOf="@+id/player_center_menu" | ||||
|             app:layout_constraintTop_toBottomOf="@+id/topMenuRight"> | ||||
| 
 | ||||
|         <TextView | ||||
|                 android:id="@+id/player_time_text_left" | ||||
|                 android:layout_width="match_parent" | ||||
|                 android:layout_height="match_parent" | ||||
|                 android:layout_marginStart="100dp" | ||||
|                 android:alpha="0" | ||||
|                 android:gravity="center|start" | ||||
|                 android:shadowColor="@android:color/black" | ||||
|                 android:shadowRadius="10.0" | ||||
|                 android:textColor="@android:color/white" | ||||
|                 android:textSize="40sp"> | ||||
| 
 | ||||
|         </TextView> | ||||
| 
 | ||||
|         <TextView | ||||
|                 android:id="@+id/player_time_text" | ||||
|                 android:layout_width="match_parent" | ||||
|  | @ -84,20 +70,7 @@ | |||
|                 android:shadowRadius="10.0" | ||||
|                 android:textColor="@android:color/white" | ||||
|                 android:textSize="30sp" | ||||
|                 tools:text="+100"> | ||||
| 
 | ||||
|         </TextView> | ||||
| 
 | ||||
|         <TextView | ||||
|                 android:id="@+id/time_text_right" | ||||
|                 android:layout_width="match_parent" | ||||
|                 android:layout_height="match_parent" | ||||
|                 android:layout_marginEnd="100dp" | ||||
|                 android:gravity="center|end" | ||||
|                 android:shadowColor="@android:color/black" | ||||
|                 android:shadowRadius="10.0" | ||||
|                 android:textColor="@android:color/white" | ||||
|                 android:textSize="40sp" /> | ||||
|                 tools:text="+100" /> | ||||
|     </RelativeLayout> | ||||
| 
 | ||||
|     <FrameLayout | ||||
|  | @ -522,7 +495,7 @@ | |||
| 
 | ||||
|                                 android:nextFocusRight="@id/player_sources_btt" | ||||
|                                 app:icon="@drawable/ic_outline_subtitles_24" | ||||
|                                 android:text="@string/subtitle_offset"/> | ||||
|                                 android:text="@string/subtitle_offset" /> | ||||
| 
 | ||||
|                         <com.google.android.material.button.MaterialButton | ||||
|                                 android:id="@+id/player_sources_btt" | ||||
|  | @ -592,15 +565,14 @@ | |||
|                     style="@android:style/Widget.Material.ProgressBar.Horizontal" | ||||
|                     android:layout_width="4dp" | ||||
|                     android:layout_height="150dp" | ||||
|                     android:layout_centerHorizontal="true" | ||||
|                     android:layout_centerVertical="true" | ||||
|                     android:layout_gravity="end|center_vertical" | ||||
|                     android:layout_marginStart="40dp" | ||||
|                     android:indeterminate="false" | ||||
|                     android:max="100" | ||||
|                     android:progress="100" | ||||
|                     android:progressDrawable="@drawable/progress_drawable_vertical" | ||||
|                     tools:progress="30" /> | ||||
|                     tools:progress="30" | ||||
|                     android:layout_centerInParent="true" /> | ||||
|         </RelativeLayout> | ||||
| 
 | ||||
|         <RelativeLayout | ||||
|  |  | |||
|  | @ -35,6 +35,17 @@ | |||
|                 android:layout_height="60dp" /> | ||||
|     </FrameLayout> | ||||
| 
 | ||||
|     <TextView | ||||
|             android:id="@+id/player_time_text" | ||||
|             android:layout_width="match_parent" | ||||
|             android:layout_height="200dp" | ||||
|             android:gravity="center" | ||||
|             android:shadowColor="@android:color/black" | ||||
|             android:shadowRadius="10.0" | ||||
|             android:textColor="@android:color/white" | ||||
|             android:textSize="30sp" | ||||
|             tools:text="+100" /> | ||||
| 
 | ||||
|     <FrameLayout | ||||
|             android:id="@+id/subtitle_holder" | ||||
|             android:layout_width="match_parent" | ||||
|  | @ -268,11 +279,12 @@ | |||
|                 android:layout_height="wrap_content" | ||||
|                 android:layout_marginBottom="10dp" | ||||
|                 android:gravity="center_vertical" | ||||
|                 android:orientation="vertical" | ||||
|                 android:orientation="horizontal" | ||||
|                 app:layout_constraintBottom_toBottomOf="parent" | ||||
|                 app:layout_constraintEnd_toEndOf="parent"> | ||||
| 
 | ||||
|             <LinearLayout | ||||
|                     android:layout_weight="1" | ||||
|                     android:id="@+id/player_video_bar" | ||||
|                     android:layout_width="match_parent" | ||||
|                     android:layout_height="wrap_content" | ||||
|  | @ -325,6 +337,104 @@ | |||
| 
 | ||||
|             </LinearLayout> | ||||
| 
 | ||||
|             <ImageView | ||||
|                     android:background="?android:attr/selectableItemBackgroundBorderless" | ||||
|                     android:id="@+id/player_fullscreen" | ||||
|                     app:tint="@color/white" | ||||
|                     android:layout_gravity="center_vertical" | ||||
|                     android:src="@drawable/baseline_fullscreen_24" | ||||
|                     android:layout_marginEnd="10dp" | ||||
|                     android:layout_width="24dp" | ||||
|                     android:layout_height="24dp" /> | ||||
|         </LinearLayout> | ||||
|     </androidx.constraintlayout.widget.ConstraintLayout> | ||||
| 
 | ||||
|     <LinearLayout | ||||
|             android:layout_width="match_parent" | ||||
|             android:layout_height="match_parent" | ||||
|             android:orientation="horizontal"> | ||||
| 
 | ||||
|         <RelativeLayout | ||||
|                 android:id="@+id/player_progressbar_left_holder" | ||||
|                 android:layout_width="100dp" | ||||
|                 android:layout_height="wrap_content" | ||||
|                 android:layout_gravity="center_vertical" | ||||
|                 android:gravity="start" | ||||
|                 android:visibility="gone" | ||||
|                 app:layout_constraintBottom_toBottomOf="parent" | ||||
|                 app:layout_constraintLeft_toLeftOf="parent" | ||||
|                 app:layout_constraintRight_toLeftOf="@+id/centerMenuView" | ||||
|                 app:layout_constraintTop_toTopOf="parent" | ||||
|                 tools:alpha="1" | ||||
|                 tools:visibility="visible"> | ||||
|             <!--VERY hacky layout --> | ||||
|             <ImageView | ||||
|                     android:id="@+id/player_progressbar_left_icon" | ||||
|                     android:layout_width="wrap_content" | ||||
|                     android:layout_height="wrap_content" | ||||
|                     android:layout_centerHorizontal="true" | ||||
|                     android:layout_marginBottom="220dp" | ||||
|                     android:src="@drawable/ic_baseline_volume_up_24" | ||||
|                     app:tint="@android:color/white" | ||||
|                     tools:ignore="ContentDescription"> | ||||
| 
 | ||||
|             </ImageView> | ||||
| 
 | ||||
|             <ProgressBar | ||||
|                     android:id="@+id/player_progressbar_left" | ||||
|                     style="@android:style/Widget.Material.ProgressBar.Horizontal" | ||||
|                     android:layout_width="4dp" | ||||
|                     android:layout_height="150dp" | ||||
|                     android:layout_gravity="end|center_vertical" | ||||
|                     android:layout_marginStart="40dp" | ||||
|                     android:indeterminate="false" | ||||
|                     android:max="100" | ||||
|                     android:progress="100" | ||||
|                     android:progressDrawable="@drawable/progress_drawable_vertical" | ||||
|                     tools:progress="30" | ||||
|                     android:layout_centerInParent="true" /> | ||||
|         </RelativeLayout> | ||||
| 
 | ||||
|         <RelativeLayout | ||||
|                 android:id="@+id/player_progressbar_right_holder" | ||||
|                 android:layout_width="match_parent" | ||||
|                 android:layout_height="wrap_content" | ||||
|                 android:layout_gravity="center_vertical" | ||||
|                 android:gravity="right" | ||||
|                 android:visibility="gone" | ||||
|                 app:layout_constraintBottom_toBottomOf="parent" | ||||
|                 app:layout_constraintLeft_toRightOf="@+id/centerMenuView" | ||||
|                 app:layout_constraintRight_toRightOf="parent" | ||||
|                 app:layout_constraintTop_toTopOf="parent" | ||||
|                 tools:alpha="1" | ||||
|                 tools:ignore="RtlHardcoded" | ||||
|                 tools:visibility="visible"> | ||||
| 
 | ||||
|             <ImageView | ||||
|                     android:id="@+id/player_progressbar_right_icon" | ||||
|                     android:layout_width="wrap_content" | ||||
|                     android:layout_height="wrap_content" | ||||
|                     android:layout_centerHorizontal="true" | ||||
|                     android:layout_marginBottom="220dp" | ||||
|                     android:src="@drawable/ic_baseline_brightness_7_24" | ||||
|                     app:tint="@android:color/white" | ||||
|                     tools:ignore="ContentDescription"> | ||||
| 
 | ||||
|             </ImageView> | ||||
| 
 | ||||
|             <ProgressBar | ||||
|                     android:id="@+id/player_progressbar_right" | ||||
|                     style="@android:style/Widget.Material.ProgressBar.Horizontal" | ||||
|                     android:layout_width="4dp" | ||||
|                     android:layout_height="150dp" | ||||
|                     android:layout_centerHorizontal="true" | ||||
|                     android:layout_centerVertical="true" | ||||
|                     android:layout_gravity="end|center_vertical" | ||||
|                     android:layout_marginEnd="40dp" | ||||
|                     android:indeterminate="false" | ||||
|                     android:max="100" | ||||
|                     android:progress="100" | ||||
|                     android:progressDrawable="@drawable/progress_drawable_vertical" /> | ||||
|         </RelativeLayout> | ||||
|     </LinearLayout> | ||||
| </FrameLayout> | ||||
|  |  | |||
|  | @ -1,55 +1,5 @@ | |||
| <!--https://newbedev.com/concatenate-multiple-strings-in-xml-->  | ||||
| <resources>  | ||||
|     <!-- KEYS DON'T TRANSLATE --> | ||||
|     <string name="search_providers_list_key" translatable="false">search_providers_list</string> | ||||
|     <string name="locale_key" translatable="false">app_locale</string> | ||||
|     <string name="search_types_list_key" translatable="false">search_type_list</string> | ||||
|     <string name="auto_update_key" translatable="false">auto_update</string> | ||||
|     <string name="skip_update_key" translatable="false">skip_update_key</string> | ||||
|     <string name="prerelease_update_key" translatable="false">prerelease_update</string> | ||||
|     <string name="manual_check_update_key" translatable="false">manual_check_update</string> | ||||
|     <string name="fast_forward_button_time_key" translatable="false">fast_forward_button_time</string> | ||||
|     <string name="benene_count" translatable="false">benene_count</string> | ||||
|     <string name="subtitle_settings_key" translatable="false">subtitle_settings_key</string> | ||||
|     <string name="subtitle_settings_chromecast_key" translatable="false">subtitle_settings_chromecast_key</string> | ||||
|     <string name="quality_pref_key" translatable="false">quality_pref_key</string> | ||||
|     <string name="prefer_limit_title_key" translatable="false">prefer_limit_title_key</string> | ||||
|     <string name="prefer_limit_title_rez_key" translatable="false">prefer_limit_title_rez_key</string> | ||||
|     <string name="video_buffer_size_key" translatable="false">video_buffer_size_key</string> | ||||
|     <string name="video_buffer_length_key" translatable="false">video_buffer_length_key</string> | ||||
|     <string name="video_buffer_clear_key" translatable="false">video_buffer_clear_key</string> | ||||
|     <string name="video_buffer_disk_key" translatable="false">video_buffer_disk_key</string> | ||||
|     <string name="prerelease_commit_hash" translatable="false">unknown_prerelease</string> | ||||
|     <string name="use_system_brightness_key" translatable="false">use_system_brightness_key</string> | ||||
|     <string name="swipe_enabled_key" translatable="false">swipe_enabled_key</string> | ||||
|     <string name="playback_speed_enabled_key" translatable="false">playback_speed_enabled_key</string> | ||||
|     <string name="player_resize_enabled_key" translatable="false">player_resize_enabled_key</string> | ||||
|     <string name="pip_enabled_key" translatable="false">pip_enabled_key</string> | ||||
|     <string name="double_tap_enabled_key" translatable="false">double_tap_enabled_key</string> | ||||
|     <string name="double_tap_pause_enabled_key" translatable="false">double_tap_pause_enabled_key</string> | ||||
|     <string name="double_tap_seek_time_key" translatable="false">double_tap_seek_time_key</string> | ||||
|     <string name="swipe_vertical_enabled_key" translatable="false">swipe_vertical_enabled_key</string> | ||||
|     <string name="display_sub_key" translatable="false">display_sub_key</string> | ||||
|     <string name="show_fillers_key" translatable="false">show_fillers_key</string> | ||||
|     <string name="random_button_key" translatable="false">random_button_key</string> | ||||
|     <string name="provider_lang_key" translatable="false">provider_lang_key</string> | ||||
|     <string name="dns_key" translatable="false">dns_key</string> | ||||
|     <string name="download_path_key" translatable="false">download_path_key</string> | ||||
|     <string name="app_name_download_path" translatable="false">Cloudstream</string> | ||||
|     <string name="app_layout_key" translatable="false">app_layout_key</string> | ||||
|     <string name="primary_color_key" translatable="false">primary_color_key</string> | ||||
|     <string name="restore_key" translatable="false">restore_key</string> | ||||
|     <string name="killswitch_key" translatable="false">killswitch_key</string> | ||||
|     <string name="backup_key" translatable="false">backup_key</string> | ||||
|     <string name="prefer_media_type_key" translatable="false">prefer_media_type_key</string> | ||||
|     <string name="app_theme_key" translatable="false">app_theme_key</string> | ||||
|     <string name="episode_sync_enabled_key" translatable="false">episode_sync_enabled_key</string> | ||||
|     <string name="log_enabled_key" translatable="false">log_enabled_key</string> | ||||
|     <string name="show_logcat_key" translatable="false">show_logcat_key</string> | ||||
|     <string name="bottom_title_key" translatable="false">bottom_title_key</string> | ||||
|     <string name="poster_ui_key" translatable="false">poster_ui_key</string> | ||||
|     <string name="subtitles_encoding_key" translatable="false">subtitles_encoding_key</string> | ||||
| 
 | ||||
| <resources> | ||||
|     <!-- FORMAT MIGHT TRANSLATE, WILL CAUSE CRASH IF APPLIED WRONG --> | ||||
|     <string name="extra_info_format" translatable="false" formatted="true">%d %s | %sMB</string> | ||||
|     <string name="storage_size_format" translatable="false" formatted="true">%s • %sGB</string> | ||||
|  |  | |||
|  | @ -31,6 +31,7 @@ | |||
|     <string name="swipe_vertical_enabled_key" translatable="false">swipe_vertical_enabled_key</string> | ||||
|     <string name="display_sub_key" translatable="false">display_sub_key</string> | ||||
|     <string name="show_fillers_key" translatable="false">show_fillers_key</string> | ||||
|     <string name="show_trailers_key" translatable="false">show_trailers_key</string> | ||||
|     <string name="random_button_key" translatable="false">random_button_key</string> | ||||
|     <string name="provider_lang_key" translatable="false">provider_lang_key</string> | ||||
|     <string name="dns_key" translatable="false">dns_key</string> | ||||
|  | @ -249,6 +250,7 @@ | |||
|     <string name="bug_report_settings_off">Only sends data on crashes</string> | ||||
|     <string name="bug_report_settings_on">Sends no data</string> | ||||
|     <string name="show_fillers_settings">Show filler episode for anime</string> | ||||
|     <string name="show_trailers_settings">Show trailers</string> | ||||
|     <string name="updates_settings">Show app updates</string> | ||||
|     <string name="updates_settings_des">Automatically search for new updates on start</string> | ||||
|     <string name="uprereleases_settings">Update to prereleases</string> | ||||
|  |  | |||
|  | @ -29,6 +29,11 @@ | |||
|             android:key="@string/bottom_title_key" | ||||
|             android:summary="@string/bottom_title_settings_des" | ||||
|             android:title="@string/bottom_title_settings" /> | ||||
|     <SwitchPreference | ||||
|             android:key="@string/show_trailers_key" | ||||
|             android:icon="@drawable/baseline_theaters_24" | ||||
|             android:title="@string/show_trailers_settings" | ||||
|             android:defaultValue="true" /> | ||||
|     <SwitchPreference | ||||
|             android:key="@string/show_fillers_key" | ||||
|             android:icon="@drawable/ic_baseline_skip_next_24" | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue