diff --git a/app/build.gradle b/app/build.gradle index 4b011468..280b9a8d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -6,12 +6,8 @@ android { buildToolsVersion "24.0.3" defaultConfig { - applicationId "com.github.dfa.diaspora_android" minSdkVersion 17 targetSdkVersion 24 - versionCode 13 - versionName "0.2.3" - setProperty("archivesBaseName", "dandelion__${versionName}__") vectorDrawables.useSupportLibrary = true } @@ -26,6 +22,9 @@ android { flavorDandelion { applicationId "com.github.dfa.diaspora_android" manifestPlaceholders = [appName: "dandelion*"] + versionCode 13 + versionName "0.2.3" + setProperty("archivesBaseName", "dandelion__${versionName}__") } flavorSecondlion { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 1f8bbb27..9f7ad6bf 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -28,20 +28,21 @@ @@ -69,6 +70,10 @@ + + + + diff --git a/app/src/main/java/com/github/dfa/diaspora_android/activity/SettingsActivity.java b/app/src/main/java/com/github/dfa/diaspora_android/activity/SettingsActivity.java index a819fc70..97219e56 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/activity/SettingsActivity.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/activity/SettingsActivity.java @@ -152,8 +152,8 @@ public class SettingsActivity extends ThemedActivity implements SharedPreference } @Override - public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String s) { - if (s.equals(getString(R.string.pref_key__screen_rotation))) { + public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { + if (key.equals(getString(R.string.pref_key__screen_rotation))) { this.updateScreenRotation(); } } diff --git a/app/src/main/java/com/github/dfa/diaspora_android/ui/theme/ThemedActivity.java b/app/src/main/java/com/github/dfa/diaspora_android/ui/theme/ThemedActivity.java index 88bc2766..cd3416d0 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/ui/theme/ThemedActivity.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/ui/theme/ThemedActivity.java @@ -21,6 +21,7 @@ package com.github.dfa.diaspora_android.ui.theme; import android.annotation.TargetApi; import android.app.ActivityManager; import android.content.pm.ActivityInfo; +import android.content.res.Configuration; import android.graphics.drawable.BitmapDrawable; import android.os.Build; import android.support.v7.app.AppCompatActivity; @@ -28,6 +29,9 @@ import android.support.v7.app.AppCompatActivity; import com.github.dfa.diaspora_android.App; import com.github.dfa.diaspora_android.R; import com.github.dfa.diaspora_android.util.AppSettings; +import com.github.dfa.diaspora_android.util.Helpers; + +import java.util.Locale; /** * Activity that supports color schemes @@ -44,6 +48,7 @@ public abstract class ThemedActivity extends AppCompatActivity { protected void onResume() { super.onResume(); ThemeHelper.getInstance(getAppSettings()); + updateLanguage(); updateStatusBarColor(); updateRecentAppColor(); applyColorToViews(); @@ -91,4 +96,12 @@ public abstract class ThemedActivity extends AppCompatActivity { } setRequestedOrientation(rotation); } + + public void updateLanguage() { + AppSettings appSettings = getAppSettings(); + Locale locale = Helpers.getLocaleByAndroidCode(appSettings.getLanguage()); + Configuration config = appSettings.getApplicationContext().getResources().getConfiguration(); + config.locale = locale != null ? locale : Locale.getDefault(); + appSettings.getApplicationContext().getResources().updateConfiguration(config, null); + } } diff --git a/app/src/main/java/com/github/dfa/diaspora_android/util/AppSettings.java b/app/src/main/java/com/github/dfa/diaspora_android/util/AppSettings.java index 82f430a2..db494ca6 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/util/AppSettings.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/util/AppSettings.java @@ -430,6 +430,14 @@ public class AppSettings { setLong(prefPod, R.string.pref_key__podprofile_last_stream_position, timestamp); } + public void setLanguage(String value){ + setString(prefApp, R.string.pref_key__language, value); + } + + public String getLanguage(){ + return getString(prefApp, R.string.pref_key__language, ""); + } + public void setPrimaryColorSettings(int base, int shade) { setInt(prefApp, R.string.pref_key__primary_color_base, base); setInt(prefApp, R.string.pref_key__primary_color_shade, shade); diff --git a/app/src/main/java/com/github/dfa/diaspora_android/util/Helpers.java b/app/src/main/java/com/github/dfa/diaspora_android/util/Helpers.java index 7167ca6e..3d5097b6 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/util/Helpers.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/util/Helpers.java @@ -27,8 +27,10 @@ import android.os.Build; import android.os.Bundle; import android.os.Environment; import android.support.design.widget.Snackbar; +import android.text.TextUtils; import android.view.View; +import com.github.dfa.diaspora_android.App; import com.github.dfa.diaspora_android.R; import com.github.dfa.diaspora_android.web.WebHelper; @@ -84,6 +86,16 @@ public class Helpers { ); } + public static Locale getLocaleByAndroidCode(String code) { + if (!TextUtils.isEmpty(code)) { + return code.contains("-r") + ? new Locale(code.substring(0, 2), code.substring(4, 6)) // de-rAT + : new Locale(code); // de + } + return Locale.getDefault(); + } + + public static String readTextfileFromRawRessource(Context context, int rawRessourceId, String linePrefix, String linePostfix) { StringBuilder sb = new StringBuilder(); String line; diff --git a/app/src/main/java/com/github/dfa/diaspora_android/web/CustomWebViewClient.java b/app/src/main/java/com/github/dfa/diaspora_android/web/CustomWebViewClient.java index eb15a83e..2541ec32 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/web/CustomWebViewClient.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/web/CustomWebViewClient.java @@ -26,10 +26,11 @@ import android.webkit.WebViewClient; import com.github.dfa.diaspora_android.App; import com.github.dfa.diaspora_android.activity.MainActivity; +import com.github.dfa.diaspora_android.data.DiasporaPodList; public class CustomWebViewClient extends WebViewClient { private final App app; - private String lastLoadUrl =""; + private String lastLoadUrl = ""; public CustomWebViewClient(App app, WebView webView) { this.app = app; @@ -37,13 +38,18 @@ public class CustomWebViewClient extends WebViewClient { //Open non-diaspora links in customtab/external browser public boolean shouldOverrideUrlLoading(WebView view, String url) { - if (!url.contains(app.getSettings().getPod().getPodUrl().getHost())) { + String host = app.getSettings().getPod().getPodUrl().getHost(); + + if (url.startsWith("https://" + host) + || url.startsWith("http://" + host) + || url.startsWith("https://dia.so/")) { + return false; + } else { Intent i = new Intent(MainActivity.ACTION_OPEN_EXTERNAL_URL); i.putExtra(MainActivity.EXTRA_URL, url); LocalBroadcastManager.getInstance(app.getApplicationContext()).sendBroadcast(i); return true; } - return false; } public void onPageFinished(WebView view, String url) { @@ -51,14 +57,17 @@ public class CustomWebViewClient extends WebViewClient { final CookieManager cookieManager = app.getCookieManager(); String cookies = cookieManager.getCookie(url); - //Log.d(this, "All the cookies in a string:" + cookies); + DiasporaPodList.DiasporaPod pod = app.getSettings().getPod(); if (cookies != null) { cookieManager.setCookie(url, cookies); - cookieManager.setCookie(app.getSettings().getPod().getPodUrl().getBaseUrl(), cookies); - //for (String c : cookies.split(";")) { - //AppLog.d(this, "Cookie: " + c.split("=")[0] + " Value:" + c.split("=")[1]); - //} + if (pod != null && pod.getPodUrl() != null) { + cookieManager.setCookie(pod.getPodUrl().getBaseUrl(), cookies); + cookieManager.setCookie(".dia.so", "pod=" + pod.getPodUrl().getHost()); + } + for (String c : cookies.split(";")) { + //AppLog.d(this, "Cookie: " + c.split("=")[0] + " Value:" + c.split("=")[1]); + } //new ProfileFetchTask(app).execute(); } } diff --git a/app/src/main/res/drawable/ic_language_black_48px.xml b/app/src/main/res/drawable/ic_language_black_48px.xml new file mode 100644 index 00000000..29536847 --- /dev/null +++ b/app/src/main/res/drawable/ic_language_black_48px.xml @@ -0,0 +1,4 @@ + + + diff --git a/app/src/main/res/values-da/strings-about.xml b/app/src/main/res/values-da/strings-about.xml new file mode 100644 index 00000000..1cc85051 --- /dev/null +++ b/app/src/main/res/values-da/strings-about.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/app/src/main/res/values-da/strings-preferences.xml b/app/src/main/res/values-da/strings-preferences.xml new file mode 100644 index 00000000..fd7f2a36 --- /dev/null +++ b/app/src/main/res/values-da/strings-preferences.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml new file mode 100644 index 00000000..69332975 --- /dev/null +++ b/app/src/main/res/values-da/strings.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/app/src/main/res/values-de/strings-preferences.xml b/app/src/main/res/values-de/strings-preferences.xml index 829f666b..7d238a07 100644 --- a/app/src/main/res/values-de/strings-preferences.xml +++ b/app/src/main/res/values-de/strings-preferences.xml @@ -18,8 +18,8 @@ Navigations Slider Konfiguration der Sichtbarkeit von Einträgen im Navigation-Slider - Nutzer - Generelles + Benutzer + Allgemeines Administrator Farbschema diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 36292c3d..abccffe4 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -42,7 +42,7 @@ Bildschirmfoto speichern Speichere Bild als Bildschirmfoto wird gespeichert unter: - Linkadresse kopiert … + Link-Adresse kopiert … Neuer Beitrag Nach oben scrollen Suche nach Tags oder Personen… @@ -52,12 +52,12 @@ nach Tags nach Personen Füge einen Namen ein. - Linkadresse teilen + Link-Adresse teilen Bild speichern Bild teilen In externem Browser öffnen… - Linkadresse kopieren - Bildadresse in die Zwischenablage kopieren + Link-Adresse kopieren + Bild-Adresse kopieren Konnte Bild nicht laden… diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index 0d2c4cc4..3fdaac6a 100644 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -1,4 +1,34 @@ + + + en + de + es + fr + ru + it + ja + pl + nl + hu + cs + sv + + + @string/language_system + English + German (Deutsch) + Spanish (Español) + French (Français) + Russian (Русский) + Italian (Italiano) + Japanese (Nihongo) + Polish (Polski) + Dutch (Nederlands) + Hungarian (Magyar) + Czech (Čeština) + Swedish (Svenska) + \ No newline at end of file diff --git a/app/src/main/res/values/strings-preferences.xml b/app/src/main/res/values/strings-preferences.xml index 7a01fa06..d1337fd2 100644 --- a/app/src/main/res/values/strings-preferences.xml +++ b/app/src/main/res/values/strings-preferences.xml @@ -3,6 +3,7 @@ pref_key__current_pod_0 pref_key_font_size + pref_key__language pref_key_intellihide_toolbars pref_key_personal_settings pref_key_manage_tags @@ -93,7 +94,12 @@ Extended Notifications Extend the notifications bell with a dropdown menu that shows notification categories + Change language of this app. Restart app for changes to take affect + Language + System language + + Control text size of the WebView Font size @string/font_size_normal @@ -179,7 +185,7 @@ Intellihide Toolbars Append shared-by-notice - Append a reference to this app ("shared by…") to shared texts + Append a reference to this app to shared texts: [via #dandelion] @string/about_activity__title_debug_info diff --git a/app/src/main/res/xml/preferences__master.xml b/app/src/main/res/xml/preferences__master.xml index a1d8ce27..2feb957f 100644 --- a/app/src/main/res/xml/preferences__master.xml +++ b/app/src/main/res/xml/preferences__master.xml @@ -6,32 +6,35 @@ android:title="@string/pref_cat__visuals"> + android:title="@string/pref_title__themes"/> + android:title="@string/pref_title__sub_nav_slider"/> + + + - - + android:summary="@string/pref_desc__font_size" + android:title="@string/pref_title__font_size"/> @@ -39,42 +42,49 @@ + + + android:title="@string/pref_title__extended_notifications"/> + android:title="@string/pref_title__append_shared_via_app"/> + android:title="@string/pref_title__chrome_custom_tabs_enabled"/> + android:title="@string/pref_title__topbar_stream_shortcut"/> + android:icon="@drawable/ic_screen_rotation_black_24px" + android:key="@string/pref_key__screen_rotation" + android:summary="@string/pref_desc__screen_rotation" + android:title="@string/pref_title__screen_rotation"/> @@ -83,28 +93,28 @@ android:key="@string/pref_key__title__pod_settings" android:title="@string/pref_cat__pod_settings"> + android:title="@string/pref_title__personal_settings"/> - - + android:title="@string/pref_title__manage_contacts"/> + + + android:title="@string/pref_title__change_account"/> @@ -113,22 +123,22 @@ android:title="@string/pref_cat__network"> + android:title="@string/pref_title__load_images"/> + android:title="@string/pref_title__clear_cache"/> + android:title="@string/pref_title__sub_proxy"/> @@ -138,10 +148,10 @@ android:title="@string/pref_cat__more"> + android:title="@string/pref_title__sub_logging"/> \ No newline at end of file diff --git a/crowdin.yaml b/crowdin.yaml index 76a71fd2..cfacc777 100644 --- a/crowdin.yaml +++ b/crowdin.yaml @@ -13,6 +13,7 @@ files: ja: ja # Japanese it: it # Italian fr: fr # French + da: da # Danish kn: kn # Kannada (Asian) nl: nl # Dutch hu: hu # Hungarian