forked from recloudstream/cloudstream
		
	emulator layout statusbar fix + fixed #674
This commit is contained in:
		
							parent
							
								
									ddab37c08d
								
							
						
					
					
						commit
						59e318a742
					
				
					 5 changed files with 63 additions and 19 deletions
				
			
		|  | @ -34,6 +34,7 @@ import com.lagradost.cloudstream3.syncproviders.OAuth2API.Companion.appString | ||||||
| import com.lagradost.cloudstream3.ui.APIRepository | import com.lagradost.cloudstream3.ui.APIRepository | ||||||
| import com.lagradost.cloudstream3.ui.download.DOWNLOAD_NAVIGATE_TO | import com.lagradost.cloudstream3.ui.download.DOWNLOAD_NAVIGATE_TO | ||||||
| import com.lagradost.cloudstream3.ui.result.ResultFragment | import com.lagradost.cloudstream3.ui.result.ResultFragment | ||||||
|  | import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.isEmulatorSettings | ||||||
| import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.isTvSettings | import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.isTvSettings | ||||||
| import com.lagradost.cloudstream3.utils.AppUtils.isCastApiAvailable | import com.lagradost.cloudstream3.utils.AppUtils.isCastApiAvailable | ||||||
| import com.lagradost.cloudstream3.utils.AppUtils.loadCache | import com.lagradost.cloudstream3.utils.AppUtils.loadCache | ||||||
|  | @ -42,6 +43,7 @@ import com.lagradost.cloudstream3.utils.DataStore.getKey | ||||||
| import com.lagradost.cloudstream3.utils.DataStore.removeKey | import com.lagradost.cloudstream3.utils.DataStore.removeKey | ||||||
| import com.lagradost.cloudstream3.utils.DataStoreHelper.setViewPos | import com.lagradost.cloudstream3.utils.DataStoreHelper.setViewPos | ||||||
| import com.lagradost.cloudstream3.utils.InAppUpdater.Companion.runAutoUpdate | import com.lagradost.cloudstream3.utils.InAppUpdater.Companion.runAutoUpdate | ||||||
|  | import com.lagradost.cloudstream3.utils.UIHelper.changeStatusBarState | ||||||
| import com.lagradost.cloudstream3.utils.UIHelper.checkWrite | import com.lagradost.cloudstream3.utils.UIHelper.checkWrite | ||||||
| import com.lagradost.cloudstream3.utils.UIHelper.colorFromAttribute | import com.lagradost.cloudstream3.utils.UIHelper.colorFromAttribute | ||||||
| import com.lagradost.cloudstream3.utils.UIHelper.getResourceColor | import com.lagradost.cloudstream3.utils.UIHelper.getResourceColor | ||||||
|  | @ -293,6 +295,8 @@ class MainActivity : AppCompatActivity(), ColorPickerDialogListener { | ||||||
|             setContentView(R.layout.activity_main) |             setContentView(R.layout.activity_main) | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|  |         changeStatusBarState(isEmulatorSettings()) | ||||||
|  | 
 | ||||||
|         //  val navView: BottomNavigationView = findViewById(R.id.nav_view) |         //  val navView: BottomNavigationView = findViewById(R.id.nav_view) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -62,8 +62,6 @@ class GrdLayoutManager(val context: Context, private val spanCoun: Int) : GridLa | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     private fun calcOffsetToNextView(direction: Int): Int { |     private fun calcOffsetToNextView(direction: Int): Int { | ||||||
|         println("calc") |  | ||||||
| 
 |  | ||||||
|         val spanCount = this.spanCoun |         val spanCount = this.spanCoun | ||||||
|         val orientation = this.orientation |         val orientation = this.orientation | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -53,17 +53,49 @@ object SearchResultBuilder { | ||||||
|             cardView.setImageResource(R.drawable.default_cover) |             cardView.setImageResource(R.drawable.default_cover) | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         bg.setOnClickListener { |         fun click(view: View?) { | ||||||
|             clickCallback.invoke( |             clickCallback.invoke( | ||||||
|                 SearchClickCallback( |                 SearchClickCallback( | ||||||
|                     if (card is DataStoreHelper.ResumeWatchingResult) SEARCH_ACTION_PLAY_FILE else SEARCH_ACTION_LOAD, |                     if (card is DataStoreHelper.ResumeWatchingResult) SEARCH_ACTION_PLAY_FILE else SEARCH_ACTION_LOAD, | ||||||
|                     it, |                     view ?: return, | ||||||
|                     position, |                     position, | ||||||
|                     card |                     card | ||||||
|                 ) |                 ) | ||||||
|             ) |             ) | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|  |         fun longClick(view: View?) { | ||||||
|  |             clickCallback.invoke( | ||||||
|  |                 SearchClickCallback( | ||||||
|  |                     SEARCH_ACTION_SHOW_METADATA, | ||||||
|  |                     view ?: return, | ||||||
|  |                     position, | ||||||
|  |                     card | ||||||
|  |                 ) | ||||||
|  |             ) | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         fun focus(view: View?, focus: Boolean) { | ||||||
|  |             if (focus) { | ||||||
|  |                 clickCallback.invoke( | ||||||
|  |                     SearchClickCallback( | ||||||
|  |                         SEARCH_ACTION_FOCUSED, | ||||||
|  |                         view ?: return, | ||||||
|  |                         position, | ||||||
|  |                         card | ||||||
|  |                     ) | ||||||
|  |                 ) | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         bg.setOnClickListener { | ||||||
|  |             click(it) | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         itemView.setOnClickListener { | ||||||
|  |             click(it) | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|         if (nextFocusUp != null) { |         if (nextFocusUp != null) { | ||||||
|             bg.nextFocusUpId = nextFocusUp |             bg.nextFocusUpId = nextFocusUp | ||||||
|         } |         } | ||||||
|  | @ -90,23 +122,23 @@ object SearchResultBuilder { | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         bg.setOnLongClickListener { |         bg.setOnLongClickListener { | ||||||
|             clickCallback.invoke(SearchClickCallback(SEARCH_ACTION_SHOW_METADATA, it, position, card)) |             longClick(it) | ||||||
|             return@setOnLongClickListener true |             return@setOnLongClickListener true | ||||||
|         } |         } | ||||||
|  | 
 | ||||||
|         itemView.setOnLongClickListener { |         itemView.setOnLongClickListener { | ||||||
|             clickCallback.invoke(SearchClickCallback(SEARCH_ACTION_SHOW_METADATA, it, position, card)) |             longClick(it) | ||||||
|             return@setOnLongClickListener true |             return@setOnLongClickListener true | ||||||
|         } |         } | ||||||
|  | 
 | ||||||
|         bg.setOnFocusChangeListener { view, b -> |         bg.setOnFocusChangeListener { view, b -> | ||||||
|             if (b) { |             focus(view, b) | ||||||
|                 clickCallback.invoke(SearchClickCallback(SEARCH_ACTION_FOCUSED, view, position, card)) |  | ||||||
|             } |  | ||||||
|         } |         } | ||||||
|  | 
 | ||||||
|         itemView.setOnFocusChangeListener { view, b -> |         itemView.setOnFocusChangeListener { view, b -> | ||||||
|             if (b) { |             focus(view, b) | ||||||
|                 clickCallback.invoke(SearchClickCallback(SEARCH_ACTION_FOCUSED, view, position, card)) |  | ||||||
|             } |  | ||||||
|         } |         } | ||||||
|  | 
 | ||||||
|         when (card) { |         when (card) { | ||||||
|             is DataStoreHelper.ResumeWatchingResult -> { |             is DataStoreHelper.ResumeWatchingResult -> { | ||||||
|                 val pos = card.watchPos?.fixVisual() |                 val pos = card.watchPos?.fixVisual() | ||||||
|  | @ -119,7 +151,8 @@ object SearchResultBuilder { | ||||||
|                 playImg?.visibility = View.VISIBLE |                 playImg?.visibility = View.VISIBLE | ||||||
| 
 | 
 | ||||||
|                 if (!card.type.isMovieType()) { |                 if (!card.type.isMovieType()) { | ||||||
|                     cardText?.text = cardText?.context?.getNameFull(card.name, card.episode, card.season) |                     cardText?.text = | ||||||
|  |                         cardText?.context?.getNameFull(card.name, card.episode, card.season) | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|             is AnimeSearchResponse -> { |             is AnimeSearchResponse -> { | ||||||
|  | @ -135,7 +168,8 @@ object SearchResultBuilder { | ||||||
|                 textIsDub?.apply { |                 textIsDub?.apply { | ||||||
|                     val dubText = context.getString(R.string.app_dubbed_text) |                     val dubText = context.getString(R.string.app_dubbed_text) | ||||||
|                     text = if (card.dubEpisodes != null && card.dubEpisodes > 0) { |                     text = if (card.dubEpisodes != null && card.dubEpisodes > 0) { | ||||||
|                         context.getString(R.string.app_dub_sub_episode_text_format).format(dubText, card.dubEpisodes) |                         context.getString(R.string.app_dub_sub_episode_text_format) | ||||||
|  |                             .format(dubText, card.dubEpisodes) | ||||||
|                     } else { |                     } else { | ||||||
|                         dubText |                         dubText | ||||||
|                     } |                     } | ||||||
|  | @ -144,7 +178,8 @@ object SearchResultBuilder { | ||||||
|                 textIsSub?.apply { |                 textIsSub?.apply { | ||||||
|                     val subText = context.getString(R.string.app_subbed_text) |                     val subText = context.getString(R.string.app_subbed_text) | ||||||
|                     text = if (card.subEpisodes != null && card.subEpisodes > 0) { |                     text = if (card.subEpisodes != null && card.subEpisodes > 0) { | ||||||
|                         context.getString(R.string.app_dub_sub_episode_text_format).format(subText, card.subEpisodes) |                         context.getString(R.string.app_dub_sub_episode_text_format) | ||||||
|  |                             .format(subText, card.subEpisodes) | ||||||
|                     } else { |                     } else { | ||||||
|                         subText |                         subText | ||||||
|                     } |                     } | ||||||
|  |  | ||||||
|  | @ -74,6 +74,10 @@ class SettingsFragment : PreferenceFragmentCompat() { | ||||||
|             return getLayoutInt() == 1 |             return getLayoutInt() == 1 | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|  |         fun Context.isEmulatorSettings() : Boolean { | ||||||
|  |             return getLayoutInt() == 2 | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|         private fun Context.isAutoTv(): Boolean { |         private fun Context.isAutoTv(): Boolean { | ||||||
|             val uiModeManager = getSystemService(Context.UI_MODE_SERVICE) as UiModeManager? |             val uiModeManager = getSystemService(Context.UI_MODE_SERVICE) as UiModeManager? | ||||||
|             return uiModeManager?.currentModeType == Configuration.UI_MODE_TYPE_TELEVISION |             return uiModeManager?.currentModeType == Configuration.UI_MODE_TYPE_TELEVISION | ||||||
|  |  | ||||||
|  | @ -39,6 +39,7 @@ import com.bumptech.glide.load.model.GlideUrl | ||||||
| import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions | import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions | ||||||
| import com.lagradost.cloudstream3.R | import com.lagradost.cloudstream3.R | ||||||
| import com.lagradost.cloudstream3.mvvm.logError | import com.lagradost.cloudstream3.mvvm.logError | ||||||
|  | import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.isEmulatorSettings | ||||||
| import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.isTvSettings | import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.isTvSettings | ||||||
| import com.lagradost.cloudstream3.utils.GlideOptions.bitmapTransform | import com.lagradost.cloudstream3.utils.GlideOptions.bitmapTransform | ||||||
| import jp.wasabeef.glide.transformations.BlurTransformation | import jp.wasabeef.glide.transformations.BlurTransformation | ||||||
|  | @ -313,10 +314,12 @@ object UIHelper { | ||||||
|     // Shows the system bars by removing all the flags |     // Shows the system bars by removing all the flags | ||||||
|     // except for the ones that make the content appear under the system bars. |     // except for the ones that make the content appear under the system bars. | ||||||
|     fun Activity.showSystemUI() { |     fun Activity.showSystemUI() { | ||||||
|         window.decorView.systemUiVisibility = ( |         window.decorView.systemUiVisibility = | ||||||
|                 View.SYSTEM_UI_FLAG_LAYOUT_STABLE | 
 | ||||||
|                         or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN |                 (View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN) | ||||||
|                 ) // or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | 
 | ||||||
|  |         changeStatusBarState(isEmulatorSettings()) | ||||||
|  | 
 | ||||||
|         // window.clearFlags(View.KEEP_SCREEN_ON) |         // window.clearFlags(View.KEEP_SCREEN_ON) | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue