mirror of
				https://github.com/recloudstream/cloudstream.git
				synced 2024-08-15 01:53:11 +00:00 
			
		
		
		
	switch lang
This commit is contained in:
		
							parent
							
								
									57811c0bf5
								
							
						
					
					
						commit
						532a845c95
					
				
					 5 changed files with 70 additions and 15 deletions
				
			
		|  | @ -6,6 +6,7 @@ import android.content.ComponentName | |||
| import android.content.Intent | ||||
| import android.content.pm.PackageManager | ||||
| import android.content.res.ColorStateList | ||||
| import android.content.res.Configuration | ||||
| import android.os.Build | ||||
| import android.os.Bundle | ||||
| import android.view.* | ||||
|  | @ -42,6 +43,7 @@ import com.lagradost.cloudstream3.utils.UIHelper.shouldShowPIPMode | |||
| import com.lagradost.cloudstream3.utils.UIHelper.toPx | ||||
| import kotlinx.android.synthetic.main.activity_main.* | ||||
| import kotlinx.android.synthetic.main.fragment_result.* | ||||
| import java.util.* | ||||
| import kotlin.concurrent.thread | ||||
| 
 | ||||
| 
 | ||||
|  | @ -111,6 +113,16 @@ class MainActivity : AppCompatActivity(), ColorPickerDialogListener { | |||
| 
 | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         fun setLocale(activity: Activity?, languageCode: String?) { | ||||
|             if (activity == null || languageCode == null) return | ||||
|             val locale = Locale(languageCode) | ||||
|             Locale.setDefault(locale) | ||||
|             val resources = activity.resources | ||||
|             val config: Configuration = resources.configuration | ||||
|             config.setLocale(locale) | ||||
|             resources.updateConfiguration(config, resources.displayMetrics) | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     private fun enterPIPMode() { | ||||
|  | @ -227,6 +239,10 @@ class MainActivity : AppCompatActivity(), ColorPickerDialogListener { | |||
|             true | ||||
|         ) // THEME IS SET BEFORE VIEW IS CREATED TO APPLY THE THEME TO THE MAIN VIEW | ||||
| 
 | ||||
|         val settingsManager = PreferenceManager.getDefaultSharedPreferences(this) | ||||
|         val localeCode = settingsManager.getString(getString(R.string.locale_key), null) | ||||
|         setLocale(this, localeCode) | ||||
| 
 | ||||
|         super.onCreate(savedInstanceState) | ||||
| 
 | ||||
|         window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN) | ||||
|  | @ -359,7 +375,7 @@ class MainActivity : AppCompatActivity(), ColorPickerDialogListener { | |||
|             val count = settingsManager.getInt(getString(R.string.benene_count), 0) | ||||
|             if (count > 30) | ||||
|                 apis.addAll(restrictedApis) | ||||
|         } catch (e : Exception) { | ||||
|         } catch (e: Exception) { | ||||
|             e.printStackTrace() | ||||
|         } | ||||
| 
 | ||||
|  |  | |||
|  | @ -5,39 +5,37 @@ import android.widget.Toast | |||
| import androidx.preference.Preference | ||||
| import androidx.preference.PreferenceFragmentCompat | ||||
| import androidx.preference.PreferenceManager | ||||
| import com.lagradost.cloudstream3.MainActivity.Companion.setLocale | ||||
| import com.lagradost.cloudstream3.MainActivity.Companion.showToast | ||||
| import com.lagradost.cloudstream3.R | ||||
| import com.lagradost.cloudstream3.mvvm.normalSafeApiCall | ||||
| import com.lagradost.cloudstream3.mvvm.logError | ||||
| import com.lagradost.cloudstream3.ui.subtitles.SubtitlesFragment | ||||
| import com.lagradost.cloudstream3.utils.Coroutines.main | ||||
| import com.lagradost.cloudstream3.utils.InAppUpdater.Companion.runAutoUpdate | ||||
| import com.lagradost.cloudstream3.utils.SingleSelectionHelper.showDialog | ||||
| import com.lagradost.cloudstream3.utils.UIHelper.hideKeyboard | ||||
| import kotlinx.coroutines.Job | ||||
| import kotlinx.coroutines.delay | ||||
| import java.util.* | ||||
| import kotlin.Exception | ||||
| import kotlin.concurrent.thread | ||||
| 
 | ||||
| 
 | ||||
| class SettingsFragment : PreferenceFragmentCompat() { | ||||
|     var count = 0 | ||||
| 
 | ||||
|     override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { | ||||
|         hideKeyboard() | ||||
|         setPreferencesFromResource(R.xml.settings, rootKey) | ||||
|         val updatePrefrence = findPreference<Preference>(getString(R.string.manual_check_update_key))!! | ||||
| 
 | ||||
|         val benenePref = findPreference<Preference>(getString(R.string.benene_count))!! | ||||
|         val updatePreference = findPreference<Preference>(getString(R.string.manual_check_update_key))!! | ||||
|         val localePreference = findPreference<Preference>(getString(R.string.locale_key))!! | ||||
|         val benenePreference = findPreference<Preference>(getString(R.string.benene_count))!! | ||||
| 
 | ||||
|         try { | ||||
|             val settingsManager = PreferenceManager.getDefaultSharedPreferences(context) | ||||
| 
 | ||||
|             count = settingsManager.getInt(getString(R.string.benene_count), 0) | ||||
| 
 | ||||
|             benenePref.summary = | ||||
|             benenePreference.summary = | ||||
|                 if (count <= 0) getString(R.string.benene_count_text_none) else getString(R.string.benene_count_text).format( | ||||
|                     count | ||||
|                 ) | ||||
|             benenePref.setOnPreferenceClickListener { | ||||
|             benenePreference.setOnPreferenceClickListener { | ||||
|                 try { | ||||
|                     count++ | ||||
|                     settingsManager.edit().putInt(getString(R.string.benene_count), count).apply() | ||||
|  | @ -52,16 +50,50 @@ class SettingsFragment : PreferenceFragmentCompat() { | |||
|             e.printStackTrace() | ||||
|         } | ||||
| 
 | ||||
|         updatePrefrence.setOnPreferenceClickListener { | ||||
|         updatePreference.setOnPreferenceClickListener { | ||||
|             thread { | ||||
|                 if (!requireActivity().runAutoUpdate(false)) { | ||||
|                     activity?.runOnUiThread { | ||||
|                         showToast(activity, "No Update Found", Toast.LENGTH_SHORT) | ||||
|                         showToast(activity, R.string.no_update_found, Toast.LENGTH_SHORT) | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|             return@setOnPreferenceClickListener true | ||||
|         } | ||||
| 
 | ||||
|         localePreference.setOnPreferenceClickListener { pref -> | ||||
|             val languages = listOf( | ||||
|                 Triple("\uD83C\uDDEC\uD83C\uDDE7", "English", "en"), | ||||
|                 Triple("\uD83C\uDDF3\uD83C\uDDF1", "Dutch", "nl"), | ||||
|                 Triple("\uD83C\uDDEC\uD83C\uDDF7", "Greek", "gr"), | ||||
|             ) // idk, if you find a way of automating this it would be great | ||||
|             val current = getCurrentLocale() | ||||
|             val languageCodes = languages.map { it.third } | ||||
|             val languageNames = languages.map { "${it.first}  ${it.second}" } | ||||
|             val index = languageCodes.indexOf(current) | ||||
|             pref?.context?.showDialog( | ||||
|                 languageNames, index, getString(R.string.app_language), true, { } | ||||
|             ) { languageIndex -> | ||||
|                 try { | ||||
|                     val code = languageCodes[languageIndex] | ||||
|                     setLocale(activity, code) | ||||
|                     val settingsManager = PreferenceManager.getDefaultSharedPreferences(pref.context) | ||||
|                     settingsManager.edit().putString(getString(R.string.locale_key), code).apply() | ||||
|                     activity?.recreate() | ||||
|                 } catch (e: Exception) { | ||||
|                     logError(e) | ||||
|                 } | ||||
|             } | ||||
|             return@setOnPreferenceClickListener true | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     private fun getCurrentLocale(): String { | ||||
|         val res = context!!.resources | ||||
| // Change locale settings in the app. | ||||
|         // val dm = res.displayMetrics | ||||
|         val conf = res.configuration | ||||
|         return conf?.locale?.language ?: "en" | ||||
|     } | ||||
| 
 | ||||
|     override fun onPreferenceTreeClick(preference: Preference?): Boolean { | ||||
|  |  | |||
							
								
								
									
										5
									
								
								app/src/main/res/drawable/ic_baseline_language_24.xml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								app/src/main/res/drawable/ic_baseline_language_24.xml
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,5 @@ | |||
| <vector android:height="24dp" android:tint="#FFFFFF" | ||||
|     android:viewportHeight="24" android:viewportWidth="24" | ||||
|     android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> | ||||
|     <path android:fillColor="@android:color/white" android:pathData="M11.99,2C6.47,2 2,6.48 2,12s4.47,10 9.99,10C17.52,22 22,17.52 22,12S17.52,2 11.99,2zM18.92,8h-2.95c-0.32,-1.25 -0.78,-2.45 -1.38,-3.56 1.84,0.63 3.37,1.91 4.33,3.56zM12,4.04c0.83,1.2 1.48,2.53 1.91,3.96h-3.82c0.43,-1.43 1.08,-2.76 1.91,-3.96zM4.26,14C4.1,13.36 4,12.69 4,12s0.1,-1.36 0.26,-2h3.38c-0.08,0.66 -0.14,1.32 -0.14,2 0,0.68 0.06,1.34 0.14,2L4.26,14zM5.08,16h2.95c0.32,1.25 0.78,2.45 1.38,3.56 -1.84,-0.63 -3.37,-1.9 -4.33,-3.56zM8.03,8L5.08,8c0.96,-1.66 2.49,-2.93 4.33,-3.56C8.81,5.55 8.35,6.75 8.03,8zM12,19.96c-0.83,-1.2 -1.48,-2.53 -1.91,-3.96h3.82c-0.43,1.43 -1.08,2.76 -1.91,3.96zM14.34,14L9.66,14c-0.09,-0.66 -0.16,-1.32 -0.16,-2 0,-0.68 0.07,-1.35 0.16,-2h4.68c0.09,0.65 0.16,1.32 0.16,2 0,0.68 -0.07,1.34 -0.16,2zM14.59,19.56c0.6,-1.11 1.06,-2.31 1.38,-3.56h2.95c-0.96,1.65 -2.49,2.93 -4.33,3.56zM16.36,14c0.08,-0.66 0.14,-1.32 0.14,-2 0,-0.68 -0.06,-1.34 -0.14,-2h3.38c0.16,0.64 0.26,1.31 0.26,2s-0.1,1.36 -0.26,2h-3.38z"/> | ||||
| </vector> | ||||
|  | @ -212,4 +212,6 @@ | |||
|     <string name="episode_action_auto_download">Auto Download</string> | ||||
|     <string name="episode_action_download_mirror">Download Mirror</string> | ||||
|     <string name="episode_action_reload_links">Reload Links</string> | ||||
| 
 | ||||
|     <string name="no_update_found">"No Update Found"</string> | ||||
| </resources> | ||||
|  |  | |||
|  | @ -80,7 +80,7 @@ | |||
|         <Preference | ||||
|                 android:key="@string/locale_key" | ||||
|                 android:title="@string/app_language" | ||||
|                 android:icon="@drawable/ic_outline_subtitles_24"> | ||||
|                 android:icon="@drawable/ic_baseline_language_24"> | ||||
|         </Preference> | ||||
|         <SwitchPreference | ||||
|                 android:key="acra.disable" | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue