summaryrefslogtreecommitdiff
path: root/android
diff options
context:
space:
mode:
authorMert Tumer <merttumer@outlook.com>2018-09-18 23:29:57 +0300
committerTomaž Vajngerl <quikee@gmail.com>2018-10-18 12:32:15 +0200
commitf2e35a695671028b32139df1824ff536e7610d35 (patch)
tree0f9e7f4858943b11ab34451f9d9075422b293234 /android
parent81974604d859da8365146ce126f3584d902224b8 (diff)
Added language support on Android Viewer
Change-Id: I05a189dcee9cf4415ce59771da03c08cf0fef6c4 Signed-off-by: Mert Tumer <merttumer@outlook.com> Reviewed-on: https://gerrit.libreoffice.org/60727 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
Diffstat (limited to 'android')
-rw-r--r--android/source/res/values/arrays.xml6
-rw-r--r--android/source/res/xml/libreoffice_preferences.xml9
-rw-r--r--android/source/src/java/org/libreoffice/LibreOfficeApplication.java6
-rw-r--r--android/source/src/java/org/libreoffice/LocaleHelper.java56
-rw-r--r--android/source/src/java/org/libreoffice/SettingsActivity.java3
-rw-r--r--android/source/src/java/org/libreoffice/ui/LibreOfficeUIActivity.java13
6 files changed, 92 insertions, 1 deletions
diff --git a/android/source/res/values/arrays.xml b/android/source/res/values/arrays.xml
index f2326764aa76..f331e672c35e 100644
--- a/android/source/res/values/arrays.xml
+++ b/android/source/res/values/arrays.xml
@@ -12,6 +12,9 @@
<item >1</item>
<item >2</item>
</string-array>
+ <string-array name="SupportedLanguagesValues">
+ <item >en</item>
+ </string-array>
<string-array name="SortModeStringValues">
<item >0</item>
<item >1</item>
@@ -36,6 +39,9 @@
<item>@string/filter_presentations</item>
<item>@string/filter_drawings</item>
</string-array>
+ <string-array name="SupportedLanguages">
+ <item>English</item>
+ </string-array>
<string-array name="SortModeNames">
<item >@string/sort_az</item>
<item >@string/sort_za</item>
diff --git a/android/source/res/xml/libreoffice_preferences.xml b/android/source/res/xml/libreoffice_preferences.xml
index 3bc04d769278..86ad3af81971 100644
--- a/android/source/res/xml/libreoffice_preferences.xml
+++ b/android/source/res/xml/libreoffice_preferences.xml
@@ -22,6 +22,15 @@
android:title="@string/pref_file_explorer_title"
android:key="EXPLORER_VIEW_TYPE"
android:summary="@string/pref_viewmode_summary" />
+
+ <ListPreference
+ android:title="Display Language"
+ android:summary="Set the default display language"
+ android:entries="@array/SupportedLanguages"
+ android:entryValues="@array/SupportedLanguagesValues"
+ android:key="DISPLAY_LANGUAGE"
+ />
+
<CheckBoxPreference
android:title="@string/pref_show_hidden_files"
android:key="ENABLE_SHOW_HIDDEN_FILES"
diff --git a/android/source/src/java/org/libreoffice/LibreOfficeApplication.java b/android/source/src/java/org/libreoffice/LibreOfficeApplication.java
index 67655c7689cd..07c14663860e 100644
--- a/android/source/src/java/org/libreoffice/LibreOfficeApplication.java
+++ b/android/source/src/java/org/libreoffice/LibreOfficeApplication.java
@@ -11,6 +11,7 @@
package org.libreoffice;
import android.app.Application;
+import android.content.Context;
import android.os.Handler;
public class LibreOfficeApplication extends Application {
@@ -24,4 +25,9 @@ public class LibreOfficeApplication extends Application {
public static Handler getMainHandler() {
return mainHandler;
}
+
+ @Override
+ protected void attachBaseContext(Context base) {
+ super.attachBaseContext(LocaleHelper.onAttach(base, "en"));
+ }
}
diff --git a/android/source/src/java/org/libreoffice/LocaleHelper.java b/android/source/src/java/org/libreoffice/LocaleHelper.java
new file mode 100644
index 000000000000..26a31e431397
--- /dev/null
+++ b/android/source/src/java/org/libreoffice/LocaleHelper.java
@@ -0,0 +1,56 @@
+package org.libreoffice;
+
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.content.res.Configuration;
+import android.content.res.Resources;
+import android.os.Build;
+import android.preference.PreferenceManager;
+
+import java.util.Locale;
+
+public class LocaleHelper {
+
+ private static final String SELECTED_LANG = "org.libreoffice.selected.lang";
+
+ public static Context onAttach(Context context){
+ String lang = getPersistedData(context, Locale.getDefault().getLanguage());
+ return setLocale(context, lang);
+ }
+
+ public static Context onAttach(Context context, String defLang){
+ String lang = getPersistedData(context, defLang);
+ return setLocale(context, lang);
+ }
+
+ public static Context setLocale(Context context, String lang) {
+ persist(context, lang);
+ return updateResources(context, lang);
+ }
+
+ @SuppressWarnings("deprecation")
+ private static Context updateResources(Context context, String lang) {
+ Locale locale = new Locale(lang);
+ Locale.setDefault(locale);
+
+ Resources res = context.getResources();
+ Configuration cfg = res.getConfiguration();
+ cfg.locale = locale;
+ if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1)
+ cfg.setLayoutDirection(locale);
+
+ res.updateConfiguration(cfg, res.getDisplayMetrics());
+ return context;
+ }
+
+ private static void persist(Context context, String lang) {
+ SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
+ preferences.edit().putString(SELECTED_LANG, lang);
+ preferences.edit().apply();
+ }
+
+ private static String getPersistedData(Context context, String lang) {
+ SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
+ return preferences.getString(SELECTED_LANG, lang);
+ }
+}
diff --git a/android/source/src/java/org/libreoffice/SettingsActivity.java b/android/source/src/java/org/libreoffice/SettingsActivity.java
index 4ef7277d7d53..de5f388c7c25 100644
--- a/android/source/src/java/org/libreoffice/SettingsActivity.java
+++ b/android/source/src/java/org/libreoffice/SettingsActivity.java
@@ -48,6 +48,9 @@ public class SettingsActivity extends Activity {
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
SettingsListenerModel.getInstance().changePreferenceState(sharedPreferences, key);
+ if(key.equals("DISPLAY_LANGUAGE")){
+ getActivity().recreate();
+ }
}
}
}
diff --git a/android/source/src/java/org/libreoffice/ui/LibreOfficeUIActivity.java b/android/source/src/java/org/libreoffice/ui/LibreOfficeUIActivity.java
index fd1e2a217b14..d6501f08bd85 100644
--- a/android/source/src/java/org/libreoffice/ui/LibreOfficeUIActivity.java
+++ b/android/source/src/java/org/libreoffice/ui/LibreOfficeUIActivity.java
@@ -67,6 +67,7 @@ import android.widget.Toast;
import org.libreoffice.AboutDialogFragment;
import org.libreoffice.LOKitShell;
import org.libreoffice.LibreOfficeMainActivity;
+import org.libreoffice.LocaleHelper;
import org.libreoffice.R;
import org.libreoffice.SettingsActivity;
import org.libreoffice.SettingsListenerModel;
@@ -95,6 +96,8 @@ public class LibreOfficeUIActivity extends AppCompatActivity implements Settings
private int viewMode;
private int sortMode;
private boolean showHiddenFiles;
+ private String displayLanguage;
+
// dynamic permissions IDs
private static final int PERMISSION_READ_EXTERNAL_STORAGE = 0;
@@ -115,6 +118,7 @@ public class LibreOfficeUIActivity extends AppCompatActivity implements Settings
public static final String SORT_MODE_KEY = "SORT_MODE";
private static final String RECENT_DOCUMENTS_KEY = "RECENT_DOCUMENTS";
private static final String ENABLE_SHOW_HIDDEN_FILES_KEY = "ENABLE_SHOW_HIDDEN_FILES";
+ private static final String DISPLAY_LANGUAGE = "DISPLAY_LANGUAGE";
public static final String NEW_FILE_PATH_KEY = "NEW_FILE_PATH_KEY";
public static final String NEW_DOC_TYPE_KEY = "NEW_DOC_TYPE_KEY";
@@ -148,7 +152,6 @@ public class LibreOfficeUIActivity extends AppCompatActivity implements Settings
private LinearLayout impressLayout;
private LinearLayout calcLayout;
-
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -173,6 +176,11 @@ public class LibreOfficeUIActivity extends AppCompatActivity implements Settings
fabCloseAnimation = AnimationUtils.loadAnimation(this, R.anim.fab_close);
}
+ @Override
+ protected void attachBaseContext(Context newBase) {
+ super.attachBaseContext(LocaleHelper.onAttach(newBase,"en"));
+ }
+
public void createUI() {
setContentView(R.layout.activity_document_browser);
@@ -834,6 +842,7 @@ public class LibreOfficeUIActivity extends AppCompatActivity implements Settings
viewMode = Integer.valueOf(defaultPrefs.getString(EXPLORER_VIEW_TYPE_KEY, ""+ GRID_VIEW));
filterMode = Integer.valueOf(defaultPrefs.getString(FILTER_MODE_KEY , "-1"));
showHiddenFiles = defaultPrefs.getBoolean(ENABLE_SHOW_HIDDEN_FILES_KEY, false);
+ displayLanguage = defaultPrefs.getString(DISPLAY_LANGUAGE, "en");
Intent i = this.getIntent();
if (i.hasExtra(CURRENT_DIRECTORY_KEY)) {
@@ -855,6 +864,8 @@ public class LibreOfficeUIActivity extends AppCompatActivity implements Settings
viewMode = i.getIntExtra( EXPLORER_VIEW_TYPE_KEY, GRID_VIEW);
Log.d(LOGTAG, EXPLORER_VIEW_TYPE_KEY);
}
+
+ LocaleHelper.setLocale(this, displayLanguage);
}
@Override