forked from recloudstream/cloudstream
		
	[Feature] Add setting to Truncate Video title on Player (#918)
* [Feature] Add setting to Truncate Video title on Player * add missing icons * Revert "add missing icons" This reverts commit 51c8a85ed18b5664fde21262f5b8ee3ae3a894fb. * applied PR suggestions * edit color
This commit is contained in:
		
							parent
							
								
									970a68f47b
								
							
						
					
					
						commit
						d6d4bfaa0e
					
				
					 6 changed files with 66 additions and 4 deletions
				
			
		|  | @ -545,10 +545,14 @@ class GeneratorPlayer : FullScreenPlayer() { | ||||||
|                 tvType = meta.tvType |                 tvType = meta.tvType | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
| 
 |         //Get limit of characters on Video Title | ||||||
|         player_episode_filler_holder?.isVisible = isFiller ?: false |         var limitTitle = 0 | ||||||
| 
 |         context?.let { | ||||||
|         player_video_title?.text = if (headerName != null) { |             val settingsManager = PreferenceManager.getDefaultSharedPreferences(it) | ||||||
|  |             limitTitle = settingsManager.getInt(getString(R.string.prefer_limit_title_key), 0) | ||||||
|  |         } | ||||||
|  |         //Generate video title | ||||||
|  |         var playerVideoTitle = if (headerName != null) { | ||||||
|             (headerName + |             (headerName + | ||||||
|                     if (tvType.isEpisodeBased() && episode != null) |                     if (tvType.isEpisodeBased() && episode != null) | ||||||
|                         if (season == null) |                         if (season == null) | ||||||
|  | @ -559,6 +563,15 @@ class GeneratorPlayer : FullScreenPlayer() { | ||||||
|         } else { |         } else { | ||||||
|             "" |             "" | ||||||
|         } |         } | ||||||
|  |         //Truncate video title if it exceeds limit | ||||||
|  |         val differenceInLength = playerVideoTitle.length - limitTitle | ||||||
|  |         val margin = 3 //If the difference is smaller than or equal to this value, ignore it | ||||||
|  |         if (limitTitle > 0 && differenceInLength > margin) { | ||||||
|  |             playerVideoTitle = playerVideoTitle.substring(0, limitTitle-1) + "..." | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         player_episode_filler_holder?.isVisible = isFiller ?: false | ||||||
|  |         player_video_title?.text = playerVideoTitle | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     @SuppressLint("SetTextI18n") |     @SuppressLint("SetTextI18n") | ||||||
|  |  | ||||||
|  | @ -705,6 +705,24 @@ class SettingsFragment : PreferenceFragmentCompat() { | ||||||
|             return@setOnPreferenceClickListener true |             return@setOnPreferenceClickListener true | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|  |         getPref(R.string.prefer_limit_title_key)?.setOnPreferenceClickListener { | ||||||
|  |             val prefNames = resources.getStringArray(R.array.limit_title_pref_names) | ||||||
|  |             val prefValues = resources.getIntArray(R.array.limit_title_pref_values) | ||||||
|  |             val current = settingsManager.getInt(getString(R.string.prefer_limit_title_key), 0) | ||||||
|  | 
 | ||||||
|  |             activity?.showBottomDialog( | ||||||
|  |                 prefNames.toList(), | ||||||
|  |                 prefValues.indexOf(current), | ||||||
|  |                 getString(R.string.limit_title), | ||||||
|  |                 true, | ||||||
|  |                 {}) { | ||||||
|  |                 settingsManager.edit() | ||||||
|  |                     .putInt(getString(R.string.prefer_limit_title_key), prefValues[it]) | ||||||
|  |                     .apply() | ||||||
|  |             } | ||||||
|  |             return@setOnPreferenceClickListener true | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|         getPref(R.string.dns_key)?.setOnPreferenceClickListener { |         getPref(R.string.dns_key)?.setOnPreferenceClickListener { | ||||||
|             val prefNames = resources.getStringArray(R.array.dns_pref) |             val prefNames = resources.getStringArray(R.array.dns_pref) | ||||||
|             val prefValues = resources.getIntArray(R.array.dns_pref_values) |             val prefValues = resources.getIntArray(R.array.dns_pref_values) | ||||||
|  |  | ||||||
							
								
								
									
										10
									
								
								app/src/main/res/drawable/ic_baseline_text_format_24.xml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								app/src/main/res/drawable/ic_baseline_text_format_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="M5,17v2h14v-2L5,17zM9.5,12.8h5l0.9,2.2h2.1L12.75,4h-1.5L6.5,15h2.1l0.9,-2.2zM12,5.98L13.87,11h-3.74L12,5.98z"/> | ||||||
|  | </vector> | ||||||
|  | @ -59,6 +59,21 @@ | ||||||
|         <item>3</item> |         <item>3</item> | ||||||
|     </array> |     </array> | ||||||
| 
 | 
 | ||||||
|  |     <array name="limit_title_pref_names"> | ||||||
|  |         <item>@string/none</item> | ||||||
|  |         <item>16 characters</item> | ||||||
|  |         <item>32 characters</item> | ||||||
|  |         <item>64 characters</item> | ||||||
|  |         <item>128 characters</item> | ||||||
|  |     </array> | ||||||
|  |     <array name="limit_title_pref_values"> | ||||||
|  |         <item>0</item> | ||||||
|  |         <item>16</item> | ||||||
|  |         <item>32</item> | ||||||
|  |         <item>64</item> | ||||||
|  |         <item>128</item> | ||||||
|  |     </array> | ||||||
|  | 
 | ||||||
|     <array name="video_buffer_length_names"> |     <array name="video_buffer_length_names"> | ||||||
|         <item>@string/automatic</item> |         <item>@string/automatic</item> | ||||||
|         <item>1min</item> |         <item>1min</item> | ||||||
|  |  | ||||||
|  | @ -13,6 +13,7 @@ | ||||||
|     <string name="subtitle_settings_key" translatable="false">subtitle_settings_key</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="subtitle_settings_chromecast_key" translatable="false">subtitle_settings_chromecast_key</string> | ||||||
|     <string name="quality_pref_key" translatable="false">quality_pref_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="video_buffer_size_key" translatable="false">video_buffer_size_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_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_clear_key" translatable="false">video_buffer_clear_key</string> | ||||||
|  | @ -348,6 +349,7 @@ | ||||||
|     <string name="dont_show_again">Don\'t show again</string> |     <string name="dont_show_again">Don\'t show again</string> | ||||||
|     <string name="update">Update</string> |     <string name="update">Update</string> | ||||||
|     <string name="watch_quality_pref">Preferred watch quality</string> |     <string name="watch_quality_pref">Preferred watch quality</string> | ||||||
|  |     <string name="limit_title">Limit title characters on player</string> | ||||||
|     <string name="video_buffer_size_settings">Video buffer size</string> |     <string name="video_buffer_size_settings">Video buffer size</string> | ||||||
|     <string name="video_buffer_length_settings">Video buffer length</string> |     <string name="video_buffer_length_settings">Video buffer length</string> | ||||||
|     <string name="video_buffer_disk_settings">Video cache on disk</string> |     <string name="video_buffer_disk_settings">Video cache on disk</string> | ||||||
|  |  | ||||||
|  | @ -20,6 +20,10 @@ | ||||||
|                 android:key="@string/quality_pref_key" |                 android:key="@string/quality_pref_key" | ||||||
|                 android:title="@string/watch_quality_pref" |                 android:title="@string/watch_quality_pref" | ||||||
|                 android:icon="@drawable/ic_baseline_hd_24" /> |                 android:icon="@drawable/ic_baseline_hd_24" /> | ||||||
|  |         <Preference | ||||||
|  |             android:key="@string/prefer_limit_title_key" | ||||||
|  |             android:title="@string/limit_title" | ||||||
|  |             android:icon="@drawable/ic_baseline_text_format_24" /> | ||||||
| 
 | 
 | ||||||
|         <SwitchPreference |         <SwitchPreference | ||||||
|                 android:icon="@drawable/ic_baseline_picture_in_picture_alt_24" |                 android:icon="@drawable/ic_baseline_picture_in_picture_alt_24" | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue