parent
							
								
									019964387a
								
							
						
					
					
						commit
						6d0bde716e
					
				| @ -27,7 +27,6 @@ import android.bluetooth.BluetoothAdapter; | ||||
| import android.bluetooth.BluetoothManager; | ||||
| import android.content.Context; | ||||
| import android.content.Intent; | ||||
| import android.content.SharedPreferences; | ||||
| import android.content.pm.ApplicationInfo; | ||||
| import android.content.pm.PackageManager; | ||||
| import android.content.pm.ResolveInfo; | ||||
| @ -36,16 +35,15 @@ import android.net.Uri; | ||||
| import android.os.Build; | ||||
| import android.os.Environment; | ||||
| import android.os.StrictMode; | ||||
| import android.preference.PreferenceManager; | ||||
| import android.text.TextUtils; | ||||
| import android.util.Log; | ||||
| import android.widget.Toast; | ||||
| 
 | ||||
| import com.nostra13.universalimageloader.cache.disc.impl.LimitedAgeDiskCache; | ||||
| import com.nostra13.universalimageloader.cache.disc.naming.FileNameGenerator; | ||||
| import com.nostra13.universalimageloader.core.ImageLoader; | ||||
| import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; | ||||
| 
 | ||||
| import info.guardianproject.netcipher.NetCipher; | ||||
| import info.guardianproject.netcipher.proxy.OrbotHelper; | ||||
| import org.acra.ACRA; | ||||
| import org.acra.ReportingInteractionMode; | ||||
| import org.acra.annotation.ReportsCrashes; | ||||
| @ -59,17 +57,13 @@ import org.fdroid.fdroid.data.Repo; | ||||
| import org.fdroid.fdroid.installer.InstallHistoryService; | ||||
| import org.fdroid.fdroid.net.ImageLoaderForUIL; | ||||
| import org.fdroid.fdroid.net.WifiStateChangeService; | ||||
| import sun.net.www.protocol.bluetooth.Handler; | ||||
| 
 | ||||
| import java.net.URL; | ||||
| import java.net.URLStreamHandler; | ||||
| import java.net.URLStreamHandlerFactory; | ||||
| import java.security.Security; | ||||
| import java.util.List; | ||||
| import java.util.Locale; | ||||
| 
 | ||||
| import info.guardianproject.netcipher.NetCipher; | ||||
| import info.guardianproject.netcipher.proxy.OrbotHelper; | ||||
| import sun.net.www.protocol.bluetooth.Handler; | ||||
| 
 | ||||
| @ReportsCrashes(mailTo = "reports@f-droid.org", | ||||
|         mode = ReportingInteractionMode.DIALOG, | ||||
| @ -82,8 +76,6 @@ public class FDroidApp extends Application { | ||||
| 
 | ||||
|     public static final String SYSTEM_DIR_NAME = Environment.getRootDirectory().getAbsolutePath(); | ||||
| 
 | ||||
|     private static Locale locale; | ||||
| 
 | ||||
|     // for the local repo on this device, all static since there is only one | ||||
|     public static volatile int port; | ||||
|     public static volatile String ipAddressString; | ||||
| @ -181,25 +173,10 @@ public class FDroidApp extends Application { | ||||
|         repo = new Repo(); | ||||
|     } | ||||
| 
 | ||||
|     public void updateLanguage() { | ||||
|         Context ctx = getBaseContext(); | ||||
|         SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(ctx); | ||||
|         String lang = prefs.getString(Preferences.PREF_LANGUAGE, ""); | ||||
|         locale = Utils.getLocaleFromAndroidLangTag(lang); | ||||
|         applyLanguage(); | ||||
|     } | ||||
| 
 | ||||
|     private void applyLanguage() { | ||||
|         Context ctx = getBaseContext(); | ||||
|         Configuration cfg = new Configuration(); | ||||
|         cfg.locale = locale == null ? Locale.getDefault() : locale; | ||||
|         ctx.getResources().updateConfiguration(cfg, null); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public void onConfigurationChanged(Configuration newConfig) { | ||||
|         super.onConfigurationChanged(newConfig); | ||||
|         applyLanguage(); | ||||
|         Languages.setLanguage(this, Preferences.get().getLangauge(), false); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
| @ -215,7 +192,9 @@ public class FDroidApp extends Application { | ||||
|                     .penaltyLog() | ||||
|                     .build()); | ||||
|         } | ||||
|         updateLanguage(); | ||||
|         Preferences.setup(this); | ||||
|         Languages.setup(getClass(), R.string.pref_language_default); | ||||
|         Languages.setLanguage(this, Preferences.get().getLangauge(), false); | ||||
| 
 | ||||
|         ACRA.init(this); | ||||
|         if (isAcraProcess()) { | ||||
| @ -224,10 +203,8 @@ public class FDroidApp extends Application { | ||||
| 
 | ||||
|         PRNGFixes.apply(); | ||||
| 
 | ||||
|         Preferences.setup(this); | ||||
|         curTheme = Preferences.get().getTheme(); | ||||
|         Preferences.get().configureProxy(); | ||||
|         Languages.setup(getClass(), R.string.pref_language_default); | ||||
| 
 | ||||
|         InstalledAppProviderService.compareToPackageManager(this); | ||||
|         AppUpdateStatusService.scanDownloadedApks(this); | ||||
| @ -326,13 +303,13 @@ public class FDroidApp extends Application { | ||||
| 
 | ||||
|     /** | ||||
|      * Asks if the current process is "org.fdroid.fdroid:acra". | ||||
|      * | ||||
|      * <p> | ||||
|      * This is helpful for bailing out of the {@link FDroidApp#onCreate} method early, preventing | ||||
|      * problems that arise from executing the code twice. This happens due to the `android:process` | ||||
|      * statement in AndroidManifest.xml causes another process to be created to run | ||||
|      * {@link org.fdroid.fdroid.acra.CrashReportActivity}. This was causing lots of things to be | ||||
|      * started/run twice including {@link CleanCacheService} and {@link WifiStateChangeService}. | ||||
|      * | ||||
|      * <p> | ||||
|      * Note that it is not perfect, because some devices seem to not provide a list of running app | ||||
|      * processes when asked. In such situations, F-Droid may regress to the behaviour where some | ||||
|      * services may run twice and thus cause weirdness or slowness. However that is probably better | ||||
|  | ||||
| @ -25,6 +25,7 @@ public final class Languages { | ||||
| 
 | ||||
|     private static final Locale DEFAULT_LOCALE; | ||||
|     private static final Locale TIBETAN = new Locale("bo"); | ||||
|     private static final Locale CHINESE_HONG_KONG = new Locale("zh", "HK"); | ||||
|     private static final String DEFAULT_STRING = "System Default"; | ||||
| 
 | ||||
|     private static Locale locale; | ||||
| @ -62,8 +63,10 @@ public final class Languages { | ||||
|                 tmpMap.put(Locale.SIMPLIFIED_CHINESE.toString(), "中文 (中国)"); // Chinese (China) | ||||
|             } else if (locale.equals(Locale.TRADITIONAL_CHINESE)) { | ||||
|                 tmpMap.put(Locale.TRADITIONAL_CHINESE.toString(), "中文 (台灣)"); // Chinese (Taiwan) | ||||
|             } else if (locale.equals(CHINESE_HONG_KONG)) { | ||||
|                 tmpMap.put(CHINESE_HONG_KONG.toString(), "中文 (香港)"); // Chinese (Hong Kong) | ||||
|             } else { | ||||
|                 tmpMap.put(locale.getLanguage(), locale.getDisplayLanguage(locale)); | ||||
|                 tmpMap.put(locale.getLanguage(), capitalize(locale.getDisplayLanguage(locale))); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
| @ -196,6 +199,10 @@ public final class Languages { | ||||
|         return keys.toArray(new String[keys.size()]); | ||||
|     } | ||||
| 
 | ||||
|     private String capitalize(final String line) { | ||||
|         return Character.toUpperCase(line.charAt(0)) + line.substring(1); | ||||
|     } | ||||
| 
 | ||||
|     private static final Locale[] LOCALES_TO_TEST = { | ||||
|             Locale.ENGLISH, | ||||
|             Locale.FRENCH, | ||||
| @ -205,6 +212,7 @@ public final class Languages { | ||||
|             Locale.KOREAN, | ||||
|             Locale.SIMPLIFIED_CHINESE, | ||||
|             Locale.TRADITIONAL_CHINESE, | ||||
|             CHINESE_HONG_KONG, | ||||
|             TIBETAN, | ||||
|             new Locale("af"), | ||||
|             new Locale("am"), | ||||
|  | ||||
| @ -229,6 +229,10 @@ public final class Preferences implements SharedPreferences.OnSharedPreferenceCh | ||||
|                 .replaceAll(" ", "-"); | ||||
|     } | ||||
| 
 | ||||
|     public String getLangauge() { | ||||
|         return preferences.getString(Preferences.PREF_LANGUAGE, ""); | ||||
|     } | ||||
| 
 | ||||
|     public String getLocalRepoName() { | ||||
|         return preferences.getString(PREF_LOCAL_REPO_NAME, getDefaultLocalRepoName()); | ||||
|     } | ||||
|  | ||||
| @ -17,7 +17,6 @@ import info.guardianproject.netcipher.NetCipher; | ||||
| import info.guardianproject.netcipher.proxy.OrbotHelper; | ||||
| import org.fdroid.fdroid.AppDetails2; | ||||
| import org.fdroid.fdroid.CleanCacheService; | ||||
| import org.fdroid.fdroid.FDroidApp; | ||||
| import org.fdroid.fdroid.Languages; | ||||
| import org.fdroid.fdroid.Preferences; | ||||
| import org.fdroid.fdroid.R; | ||||
| @ -142,8 +141,9 @@ public class PreferencesFragment extends PreferenceFragment | ||||
|             case Preferences.PREF_LANGUAGE: | ||||
|                 entrySummary(key); | ||||
|                 if (changing) { | ||||
|                     // TODO: Ask MainActivity to restart itself. | ||||
|                     ((FDroidApp) getActivity().getApplication()).updateLanguage(); | ||||
|                     Activity activity = getActivity(); | ||||
|                     Languages.setLanguage(activity, Preferences.get().getLangauge(), false); | ||||
|                     Languages.forceChangeLanguage(activity); | ||||
|                 } | ||||
|                 break; | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Hans-Christoph Steiner
						Hans-Christoph Steiner