summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas <tschneider.ac@gmail.com>2022-12-27 17:43:00 +0100
committerThomas <tschneider.ac@gmail.com>2022-12-27 17:43:00 +0100
commit7dfedbdaa4da1bdb6ba53ee59a565c5b60aaa12f (patch)
treecd036cc3fb6e0e7c5896bf520e15a1a8cffa31c6
parent089d6b9ba81a22cd1ce10b9da081145a1ee918c5 (diff)
parenteb78c809251ed3829bfb3e03563d3f058ae28085 (diff)
Merge branch 'develop'
-rw-r--r--app/build.gradle4
-rw-r--r--app/src/main/assets/release_notes/notes.json5
-rw-r--r--app/src/main/java/app/fedilab/android/activities/MediaActivity.java94
-rw-r--r--app/src/main/java/app/fedilab/android/helper/Helper.java6
-rw-r--r--app/src/main/java/app/fedilab/android/helper/TranslateHelper.java91
-rw-r--r--app/src/main/java/app/fedilab/android/ui/drawer/ComposeAdapter.java7
-rw-r--r--app/src/main/java/app/fedilab/android/ui/drawer/ReleaseNoteAdapter.java46
-rw-r--r--app/src/main/java/app/fedilab/android/ui/drawer/StatusAdapter.java45
-rw-r--r--app/src/main/java/app/fedilab/android/ui/drawer/SuggestionAdapter.java1
-rw-r--r--app/src/main/java/app/fedilab/android/ui/fragment/settings/FragmentTimelinesSettings.java27
-rw-r--r--app/src/main/res/layout/drawer_suggestion.xml4
-rw-r--r--app/src/main/res/values-cs/strings.xml4
-rw-r--r--app/src/main/res/values-gl/strings.xml2
-rw-r--r--app/src/main/res/values-ja/strings.xml70
-rw-r--r--app/src/main/res/values-tr/strings.xml2
-rw-r--r--app/src/main/res/values/strings.xml31
-rw-r--r--app/src/main/res/xml/pref_timelines.xml26
-rw-r--r--mytransl/src/main/java/com/github/stom79/mytransl/translate/Helper.java10
-rw-r--r--mytransl/src/main/java/com/github/stom79/mytransl/translate/Params.java10
-rw-r--r--src/fdroid/fastlane/metadata/android/en/changelogs/455.txt9
20 files changed, 334 insertions, 160 deletions
diff --git a/app/build.gradle b/app/build.gradle
index ccc80bdbc..566df8e74 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -13,8 +13,8 @@ android {
defaultConfig {
minSdk 21
targetSdk 33
- versionCode 454
- versionName "3.13.0"
+ versionCode 455
+ versionName "3.13.1"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
flavorDimensions "default"
diff --git a/app/src/main/assets/release_notes/notes.json b/app/src/main/assets/release_notes/notes.json
index c44d304a9..2d2d1bbad 100644
--- a/app/src/main/assets/release_notes/notes.json
+++ b/app/src/main/assets/release_notes/notes.json
@@ -1,5 +1,10 @@
[
{
+ "version": "3.13.1",
+ "code": "455",
+ "note": "Added:\n- DeepL translation support free/pro keys\n\nChanged:\n- Hide buttons for media when editing\n\nFixed:\n- GIF loaded as static images\n- Suggested accounts cannot be followed"
+ },
+ {
"version": "3.13.0",
"code": "454",
"note": "Added:\n- Post random quotes\n- Group reblogs in home timeline\n- Rename Nitter timelines\n- Android 13 support\n- Pagination with search / trending\n- Allow to remove left margin in messages (default: disabled)\n\nChanged:\n- Display translate button only when language is different\n- Respect blank spaces between words in messages\n- Focus button more accessible when editing media\n- Visual feedback for block on account list\n- Visual changes with compose / top bar\n- Use custom Nitter timeline name in manage timelines\n\nFixed:\n- Behavior with cw toggle\n- Truncated gimini links\n- Nav buttons not visible with media (Light theme)\n- Status bar with Android 5\n- Fix links not clickable\n- Fix deep links\n- Fix remote threads not fetched for some instances\n- Adding description to shared media\n- Open with another accounts\n- Chars size not respected for Android 5-6\n- Wrong instance fetched for instances.social\n- Bouncing Timeline on refresh\n- Links to mentions, tags, urls, not visible.\n- Custom channel sounds not applied\n- users with short username are not linked\n- Fix crashes"
diff --git a/app/src/main/java/app/fedilab/android/activities/MediaActivity.java b/app/src/main/java/app/fedilab/android/activities/MediaActivity.java
index 608f6f359..a93697f68 100644
--- a/app/src/main/java/app/fedilab/android/activities/MediaActivity.java
+++ b/app/src/main/java/app/fedilab/android/activities/MediaActivity.java
@@ -21,14 +21,12 @@ import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
-import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.graphics.Point;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
-import android.text.Html;
import android.view.Display;
import android.view.Menu;
import android.view.MenuItem;
@@ -44,15 +42,8 @@ import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentStatePagerAdapter;
-import androidx.preference.PreferenceManager;
import androidx.viewpager.widget.ViewPager;
-import com.github.stom79.mytransl.MyTransL;
-import com.github.stom79.mytransl.client.HttpsConnectionException;
-import com.github.stom79.mytransl.client.Results;
-import com.github.stom79.mytransl.translate.Params;
-import com.github.stom79.mytransl.translate.Translate;
-
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
@@ -63,6 +54,7 @@ import app.fedilab.android.client.entities.api.Status;
import app.fedilab.android.databinding.ActivityMediaPagerBinding;
import app.fedilab.android.helper.Helper;
import app.fedilab.android.helper.MediaHelper;
+import app.fedilab.android.helper.TranslateHelper;
import app.fedilab.android.interfaces.OnDownloadInterface;
import app.fedilab.android.ui.fragment.media.FragmentMedia;
import es.dmoral.toasty.Toasty;
@@ -157,40 +149,14 @@ public class MediaActivity extends BaseTransparentActivity implements OnDownload
binding.mediaDescription.setText(description);
binding.translate.setOnClickListener(v -> {
String descriptionToTranslate = attachments.get(mediaPosition - 1).description;
- MyTransL.translatorEngine et = MyTransL.translatorEngine.LIBRETRANSLATE;
- final MyTransL myTransL = MyTransL.getInstance(et);
- myTransL.setObfuscation(true);
- Params params = new Params();
- params.setSplit_sentences(false);
- params.setFormat(Params.fType.TEXT);
- params.setSource_lang("auto");
- myTransL.setLibretranslateDomain("translate.fedilab.app");
- String statusToTranslate;
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
- statusToTranslate = Html.fromHtml(descriptionToTranslate, Html.FROM_HTML_MODE_LEGACY).toString();
- else
- statusToTranslate = Html.fromHtml(descriptionToTranslate).toString();
- SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(MediaActivity.this);
- String translate = sharedpreferences.getString(getString(R.string.SET_LIVE_TRANSLATE), MyTransL.getLocale());
- if (translate != null && translate.equalsIgnoreCase("default")) {
- translate = MyTransL.getLocale();
- }
- myTransL.translate(statusToTranslate, translate, params, new Results() {
- @Override
- public void onSuccess(Translate translate) {
- if (translate.getTranslatedContent() != null) {
- attachments.get(mediaPosition - 1).translation = translate.getTranslatedContent();
- binding.mediaDescriptionTranslated.setText(translate.getTranslatedContent());
- binding.mediaDescriptionTranslated.setVisibility(View.VISIBLE);
- binding.mediaDescription.setVisibility(View.GONE);
- } else {
- Toasty.error(MediaActivity.this, getString(R.string.toast_error_translate), Toast.LENGTH_LONG).show();
- }
- }
-
- @Override
- public void onFail(HttpsConnectionException httpsConnectionException) {
-
+ TranslateHelper.translate(MediaActivity.this, descriptionToTranslate, translated -> {
+ if (translated != null) {
+ attachments.get(mediaPosition - 1).translation = translated;
+ binding.mediaDescriptionTranslated.setText(translated);
+ binding.mediaDescriptionTranslated.setVisibility(View.VISIBLE);
+ binding.mediaDescription.setVisibility(View.GONE);
+ } else {
+ Toasty.error(MediaActivity.this, getString(R.string.toast_error_translate), Toast.LENGTH_LONG).show();
}
});
});
@@ -222,40 +188,14 @@ public class MediaActivity extends BaseTransparentActivity implements OnDownload
}
binding.translate.setOnClickListener(v -> {
String descriptionToTranslate = attachments.get(position).description;
- MyTransL.translatorEngine et = MyTransL.translatorEngine.LIBRETRANSLATE;
- final MyTransL myTransL = MyTransL.getInstance(et);
- myTransL.setObfuscation(true);
- Params params = new Params();
- params.setSplit_sentences(false);
- params.setFormat(Params.fType.TEXT);
- params.setSource_lang("auto");
- myTransL.setLibretranslateDomain("translate.fedilab.app");
- String statusToTranslate;
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
- statusToTranslate = Html.fromHtml(descriptionToTranslate, Html.FROM_HTML_MODE_LEGACY).toString();
- else
- statusToTranslate = Html.fromHtml(descriptionToTranslate).toString();
- SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(MediaActivity.this);
- String translate = sharedpreferences.getString(getString(R.string.SET_LIVE_TRANSLATE), MyTransL.getLocale());
- if (translate != null && translate.equalsIgnoreCase("default")) {
- translate = MyTransL.getLocale();
- }
- myTransL.translate(statusToTranslate, translate, params, new Results() {
- @Override
- public void onSuccess(Translate translate) {
- if (translate.getTranslatedContent() != null) {
- attachments.get(position).translation = translate.getTranslatedContent();
- binding.mediaDescriptionTranslated.setText(translate.getTranslatedContent());
- binding.mediaDescriptionTranslated.setVisibility(View.VISIBLE);
- binding.mediaDescription.setVisibility(View.GONE);
- } else {
- Toasty.error(MediaActivity.this, getString(R.string.toast_error_translate), Toast.LENGTH_LONG).show();
- }
- }
-
- @Override
- public void onFail(HttpsConnectionException httpsConnectionException) {
-
+ TranslateHelper.translate(MediaActivity.this, descriptionToTranslate, translated -> {
+ if (translated != null) {
+ attachments.get(position).translation = translated;
+ binding.mediaDescriptionTranslated.setText(translated);
+ binding.mediaDescriptionTranslated.setVisibility(View.VISIBLE);
+ binding.mediaDescription.setVisibility(View.GONE);
+ } else {
+ Toasty.error(MediaActivity.this, getString(R.string.toast_error_translate), Toast.LENGTH_LONG).show();
}
});
});
diff --git a/app/src/main/java/app/fedilab/android/helper/Helper.java b/app/src/main/java/app/fedilab/android/helper/Helper.java
index 75ea76260..dc415779c 100644
--- a/app/src/main/java/app/fedilab/android/helper/Helper.java
+++ b/app/src/main/java/app/fedilab/android/helper/Helper.java
@@ -124,14 +124,17 @@ import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collections;
import java.util.Date;
+import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Objects;
import java.util.Random;
+import java.util.Set;
import java.util.TimeZone;
import java.util.UUID;
import java.util.regex.Matcher;
@@ -1236,7 +1239,8 @@ public class Helper {
counter++;
Date now = new Date();
attachment.filename = formatter.format(now) + "." + extension;
- if (attachment.mimeType.startsWith("image")) {
+ Set<String> imageType = new HashSet<>(Arrays.asList("image/png", "image/jpeg", "image/jpg"));
+ if (imageType.contains(attachment.mimeType)) {
final File certCacheDir = new File(context.getCacheDir(), TEMP_MEDIA_DIRECTORY);
boolean isCertCacheDirExists = certCacheDir.exists();
if (!isCertCacheDirExists) {
diff --git a/app/src/main/java/app/fedilab/android/helper/TranslateHelper.java b/app/src/main/java/app/fedilab/android/helper/TranslateHelper.java
new file mode 100644
index 000000000..2edbb8aca
--- /dev/null
+++ b/app/src/main/java/app/fedilab/android/helper/TranslateHelper.java
@@ -0,0 +1,91 @@
+package app.fedilab.android.helper;
+/* Copyright 2022 Thomas Schneider
+ *
+ * This file is a part of Fedilab
+ *
+ * This program is free software; you can redistribute it and/or modify it under the terms of the
+ * GNU General Public License as published by the Free Software Foundation; either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * Fedilab is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+ * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
+ * Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along with Fedilab; if not,
+ * see <http://www.gnu.org/licenses>. */
+
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.os.Build;
+import android.text.Html;
+import android.widget.Toast;
+
+import androidx.preference.PreferenceManager;
+
+import com.github.stom79.mytransl.MyTransL;
+import com.github.stom79.mytransl.client.HttpsConnectionException;
+import com.github.stom79.mytransl.client.Results;
+import com.github.stom79.mytransl.translate.Params;
+
+import app.fedilab.android.R;
+import es.dmoral.toasty.Toasty;
+
+public class TranslateHelper {
+
+ public static void translate(Context context, String toTranslate, Translate callback) {
+ String statusToTranslate;
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
+ statusToTranslate = Html.fromHtml(toTranslate, Html.FROM_HTML_MODE_LEGACY).toString();
+ else
+ statusToTranslate = Html.fromHtml(toTranslate).toString();
+ SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(context);
+ String translator = sharedpreferences.getString(context.getString(R.string.SET_TRANSLATOR), "FEDILAB");
+ MyTransL.translatorEngine et;
+ if (translator.compareToIgnoreCase("FEDILAB") == 0) {
+ et = MyTransL.translatorEngine.LIBRETRANSLATE;
+ } else {
+ et = MyTransL.translatorEngine.DEEPL;
+ }
+ final MyTransL myTransL = MyTransL.getInstance(et);
+ myTransL.setObfuscation(true);
+ Params params = new Params();
+ params.setSplit_sentences(false);
+ params.setFormat(Params.fType.TEXT);
+ params.setSource_lang("auto");
+ if (translator.compareToIgnoreCase("FEDILAB") == 0) {
+ myTransL.setLibretranslateDomain("translate.fedilab.app");
+ } else {
+ String translatorVersion = sharedpreferences.getString(context.getString(R.string.SET_TRANSLATOR_VERSION), "PRO");
+ params.setPro(translatorVersion.equals("PRO"));
+ String apikey = sharedpreferences.getString(context.getString(R.string.SET_TRANSLATOR_API_KEY), null);
+ myTransL.setDeeplAPIKey(apikey.trim());
+ }
+
+ String translate = sharedpreferences.getString(context.getString(R.string.SET_LIVE_TRANSLATE), MyTransL.getLocale());
+ if (translate.equalsIgnoreCase("default")) {
+ translate = MyTransL.getLocale();
+ }
+
+ myTransL.translate(statusToTranslate, translate, params, new Results() {
+ @Override
+ public void onSuccess(com.github.stom79.mytransl.translate.Translate translate) {
+ if (translate.getTranslatedContent() != null) {
+ callback.onTranslate(translate.getTranslatedContent());
+ } else {
+ callback.onTranslate("");
+ Toasty.error(context, context.getString(R.string.toast_error_translate), Toast.LENGTH_LONG).show();
+ }
+ }
+
+ @Override
+ public void onFail(HttpsConnectionException httpsConnectionException) {
+ callback.onTranslate("");
+ Toasty.error(context, context.getString(R.string.toast_error_translate), Toast.LENGTH_LONG).show();
+ }
+ });
+ }
+
+ public interface Translate {
+ void onTranslate(String translated);
+ }
+}
diff --git a/app/src/main/java/app/fedilab/android/ui/drawer/ComposeAdapter.java b/app/src/main/java/app/fedilab/android/ui/drawer/ComposeAdapter.java
index ea5311c4e..75f794be8 100644
--- a/app/src/main/java/app/fedilab/android/ui/drawer/ComposeAdapter.java
+++ b/app/src/main/java/app/fedilab/android/ui/drawer/ComposeAdapter.java
@@ -1021,6 +1021,13 @@ public class ComposeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder
for (Attachment attachment : attachmentList) {
ComposeAttachmentItemBinding composeAttachmentItemBinding = ComposeAttachmentItemBinding.inflate(LayoutInflater.from(context), holder.binding.attachmentsList, false);
composeAttachmentItemBinding.buttonPlay.setVisibility(View.GONE);
+ if (editMessageId != null) {
+ composeAttachmentItemBinding.editPreview.setVisibility(View.INVISIBLE);
+ composeAttachmentItemBinding.buttonDescription.setVisibility(View.INVISIBLE);
+ composeAttachmentItemBinding.buttonOrderDown.setVisibility(View.INVISIBLE);
+ composeAttachmentItemBinding.buttonOrderUp.setVisibility(View.INVISIBLE);
+ composeAttachmentItemBinding.buttonRemove.setVisibility(View.INVISIBLE);
+ }
String attachmentPath = attachment.local_path != null && !attachment.local_path.trim().isEmpty() ? attachment.local_path : attachment.preview_url;
if (attachment.type != null || attachment.mimeType != null) {
if ((attachment.type != null && attachment.type.toLowerCase().startsWith("image")) || (attachment.mimeType != null && attachment.mimeType.toLowerCase().startsWith("image"))) {
diff --git a/app/src/main/java/app/fedilab/android/ui/drawer/ReleaseNoteAdapter.java b/app/src/main/java/app/fedilab/android/ui/drawer/ReleaseNoteAdapter.java
index 6e4309ca2..65353d334 100644
--- a/app/src/main/java/app/fedilab/android/ui/drawer/ReleaseNoteAdapter.java
+++ b/app/src/main/java/app/fedilab/android/ui/drawer/ReleaseNoteAdapter.java
@@ -16,28 +16,21 @@ package app.fedilab.android.ui.drawer;
import android.content.Context;
-import android.content.SharedPreferences;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
import androidx.annotation.NonNull;
-import androidx.preference.PreferenceManager;
import androidx.recyclerview.widget.RecyclerView;
-import com.github.stom79.mytransl.MyTransL;
-import com.github.stom79.mytransl.client.HttpsConnectionException;
-import com.github.stom79.mytransl.client.Results;
-import com.github.stom79.mytransl.translate.Params;
-import com.github.stom79.mytransl.translate.Translate;
-
import java.util.List;
import java.util.Locale;
import app.fedilab.android.R;
import app.fedilab.android.client.entities.app.ReleaseNote;
import app.fedilab.android.databinding.DrawerReleaseNoteBinding;
+import app.fedilab.android.helper.TranslateHelper;
import es.dmoral.toasty.Toasty;
@@ -81,37 +74,14 @@ public class ReleaseNoteAdapter extends RecyclerView.Adapter<ReleaseNoteAdapter.
holder.binding.containerTrans.setVisibility(View.GONE);
holder.binding.translate.setVisibility(View.VISIBLE);
}
- holder.binding.translate.setOnClickListener(v -> {
- MyTransL.translatorEngine et = MyTransL.translatorEngine.LIBRETRANSLATE;
- final MyTransL myTransL = MyTransL.getInstance(et);
- myTransL.setObfuscation(true);
- Params params = new Params();
- params.setSplit_sentences(false);
- params.setFormat(Params.fType.TEXT);
- params.setSource_lang("auto");
- myTransL.setLibretranslateDomain("translate.fedilab.app");
- SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(context);
- String translate = sharedpreferences.getString(context.getString(R.string.SET_LIVE_TRANSLATE), MyTransL.getLocale());
- if (translate != null && translate.equalsIgnoreCase("default")) {
- translate = MyTransL.getLocale();
+ holder.binding.translate.setOnClickListener(v -> TranslateHelper.translate(context, note.note, translated -> {
+ if (translated != null) {
+ note.noteTranslated = translated;
+ notifyItemChanged(holder.getBindingAdapterPosition());
+ } else {
+ Toasty.error(context, context.getString(R.string.toast_error_translate), Toast.LENGTH_LONG).show();
}
- myTransL.translate(note.note, translate, params, new Results() {
- @Override
- public void onSuccess(Translate translate) {
- if (translate.getTranslatedContent() != null) {
- note.noteTranslated = translate.getTranslatedContent();
- notifyItemChanged(holder.getBindingAdapterPosition());
- } else {
- Toasty.error(context, context.getString(R.string.toast_error_translate), Toast.LENGTH_LONG).show();
- }
- }
-
- @Override
- public void onFail(HttpsConnectionException httpsConnectionException) {
- Toasty.error(context, context.getString(R.string.toast_error_translate), Toast.LENGTH_LONG).show();
- }
- });
- });
+ }));
}
diff --git a/app/src/main/java/app/fedilab/android/ui/drawer/StatusAdapter.java b/app/src/main/java/app/fedilab/android/ui/drawer/StatusAdapter.java
index a2f6013f2..f0be81cc0 100644
--- a/app/src/main/java/app/fedilab/android/ui/drawer/StatusAdapter.java
+++ b/app/src/main/java/app/fedilab/android/ui/drawer/StatusAdapter.java
@@ -87,10 +87,6 @@ import com.bumptech.glide.RequestBuilder;
import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
import com.bumptech.glide.request.RequestOptions;
import com.github.stom79.mytransl.MyTransL;
-import com.github.stom79.mytransl.client.HttpsConnectionException;
-import com.github.stom79.mytransl.client.Results;
-import com.github.stom79.mytransl.translate.Params;
-import com.github.stom79.mytransl.translate.Translate;
import com.vanniktech.emoji.EmojiManager;
import com.vanniktech.emoji.EmojiPopup;
import com.vanniktech.emoji.one.EmojiOneProvider;
@@ -145,6 +141,7 @@ import app.fedilab.android.helper.MediaHelper;
import app.fedilab.android.helper.SpannableHelper;
import app.fedilab.android.helper.ThemeHelper;
import app.fedilab.android.helper.TimelineHelper;
+import app.fedilab.android.helper.TranslateHelper;
import app.fedilab.android.ui.fragment.timeline.FragmentMastodonContext;
import app.fedilab.android.viewmodel.mastodon.AccountsVM;
import app.fedilab.android.viewmodel.mastodon.SearchVM;
@@ -1982,6 +1979,7 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
}
+
private static void translate(Context context, Status statusToDeal,
StatusViewHolder holder,
RecyclerView.Adapter<RecyclerView.ViewHolder> adapter) {
@@ -1990,40 +1988,15 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
statusToTranslate = Html.fromHtml(statusToDeal.content, Html.FROM_HTML_MODE_LEGACY).toString();
else
statusToTranslate = Html.fromHtml(statusToDeal.content).toString();
-
int countMorseChar = ComposeAdapter.countMorseChar(statusToTranslate);
if (countMorseChar < 4) {
- MyTransL.translatorEngine et = MyTransL.translatorEngine.LIBRETRANSLATE;
- final MyTransL myTransL = MyTransL.getInstance(et);
- myTransL.setObfuscation(true);
- Params params = new Params();
- params.setSplit_sentences(false);
- params.setFormat(Params.fType.TEXT);
- params.setSource_lang("auto");
- myTransL.setLibretranslateDomain("translate.fedilab.app");
-
- SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(context);
- String translate = sharedpreferences.getString(context.getString(R.string.SET_LIVE_TRANSLATE), MyTransL.getLocale());
- if (translate != null && translate.equalsIgnoreCase("default")) {
- translate = MyTransL.getLocale();
- }
-
-
- myTransL.translate(statusToTranslate, translate, params, new Results() {
- @Override
- public void onSuccess(Translate translate) {
- if (translate.getTranslatedContent() != null) {
- statusToDeal.translationShown = true;
- statusToDeal.translationContent = translate.getTranslatedContent();
- adapter.notifyItemChanged(holder.getBindingAdapterPosition());
- } else {
- Toasty.error(context, context.getString(R.string.toast_error_translate), Toast.LENGTH_LONG).show();
- }
- }
-
- @Override
- public void onFail(HttpsConnectionException httpsConnectionException) {
-
+ TranslateHelper.translate(context, statusToDeal.content, translated -> {
+ if (translated != null) {
+ statusToDeal.translationShown = true;
+ statusToDeal.translationContent = translated;
+ adapter.notifyItemChanged(holder.getBindingAdapterPosition());
+ } else {
+ Toasty.error(context, context.getString(R.string.toast_error_translate), Toast.LENGTH_LONG).show();
}
});
} else {
diff --git a/app/src/main/java/app/fedilab/android/ui/drawer/SuggestionAdapter.java b/app/src/main/java/app/fedilab/android/ui/drawer/SuggestionAdapter.java
index 1637004cb..58eb17123 100644
--- a/app/src/main/java/app/fedilab/android/ui/drawer/SuggestionAdapter.java
+++ b/app/src/main/java/app/fedilab/android/ui/drawer/SuggestionAdapter.java
@@ -109,7 +109,6 @@ public class SuggestionAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
new WeakReference<>(holder.binding.bio)),
TextView.BufferType.SPANNABLE);
- holder.binding.followAction.setEnabled(false);
holder.binding.followAction.setOnClickListener(v -> {
suggestionList.remove(position);
notifyItemRemoved(position);
diff --git a/app/src/main/java/app/fedilab/android/ui/fragment/settings/FragmentTimelinesSettings.java b/app/src/main/java/app/fedilab/android/ui/fragment/settings/FragmentTimelinesSettings.java
index a8f2a5ee4..04fd9e9f8 100644
--- a/app/src/main/java/app/fedilab/android/ui/fragment/settings/FragmentTimelinesSettings.java
+++ b/app/src/main/java/app/fedilab/android/ui/fragment/settings/FragmentTimelinesSettings.java
@@ -17,9 +17,11 @@ package app.fedilab.android.ui.fragment.settings;
import android.content.SharedPreferences;
import android.os.Bundle;
+import androidx.preference.EditTextPreference;
import androidx.preference.ListPreference;
import androidx.preference.PreferenceFragmentCompat;
import androidx.preference.PreferenceManager;
+import androidx.preference.PreferenceScreen;
import app.fedilab.android.R;
import app.fedilab.android.helper.Helper;
@@ -33,10 +35,31 @@ public class FragmentTimelinesSettings extends PreferenceFragmentCompat implemen
}
private void createPref() {
+
+ getPreferenceScreen().removeAll();
+ addPreferencesFromResource(R.xml.pref_timelines);
+ PreferenceScreen preferenceScreen = getPreferenceScreen();
ListPreference SET_LOAD_MEDIA_TYPE = findPreference(getString(R.string.SET_LOAD_MEDIA_TYPE));
if (SET_LOAD_MEDIA_TYPE != null) {
SET_LOAD_MEDIA_TYPE.getContext().setTheme(Helper.dialogStyle());
}
+ ListPreference SET_TRANSLATOR = findPreference(getString(R.string.SET_TRANSLATOR));
+ if (SET_TRANSLATOR != null) {
+ SET_TRANSLATOR.getContext().setTheme(Helper.dialogStyle());
+ }
+ ListPreference SET_TRANSLATOR_VERSION = findPreference(getString(R.string.SET_TRANSLATOR_VERSION));
+ if (SET_TRANSLATOR_VERSION != null) {
+ SET_TRANSLATOR_VERSION.getContext().setTheme(Helper.dialogStyle());
+ }
+ EditTextPreference SET_TRANSLATOR_API_KEY = findPreference(getString(R.string.SET_TRANSLATOR_API_KEY));
+ if (SET_TRANSLATOR != null && SET_TRANSLATOR.getValue().equals("FEDILAB")) {
+ if (SET_TRANSLATOR_API_KEY != null) {
+ preferenceScreen.removePreferenceRecursively("SET_TRANSLATOR_API_KEY");
+ }
+ if (SET_TRANSLATOR_VERSION != null) {
+ preferenceScreen.removePreferenceRecursively("SET_TRANSLATOR_VERSION");
+ }
+ }
}
@Override
@@ -44,8 +67,10 @@ public class FragmentTimelinesSettings extends PreferenceFragmentCompat implemen
if (getActivity() != null) {
SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(requireActivity());
SharedPreferences.Editor editor = sharedpreferences.edit();
-
editor.apply();
+ if (key.compareToIgnoreCase(getString(R.string.SET_TRANSLATOR)) == 0) {
+ createPref();
+ }
}
}
diff --git a/app/src/main/res/layout/drawer_suggestion.xml b/app/src/main/res/layout/drawer_suggestion.xml
index a8eba685e..de4ccbadc 100644
--- a/app/src/main/res/layout/drawer_suggestion.xml
+++ b/app/src/main/res/layout/drawer_suggestion.xml
@@ -106,7 +106,9 @@
android:layout_marginTop="6dp"
android:insetTop="0dp"
android:insetBottom="0dp"
- android:padding="6dp"
+ android:padding="0dp"
+ app:iconGravity="textStart"
+ app:iconPadding="0dp"
app:icon="@drawable/ic_baseline_person_add_24"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/bio" />
diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml
index f15e3f931..6929f0aff 100644
--- a/app/src/main/res/values-cs/strings.xml
+++ b/app/src/main/res/values-cs/strings.xml
@@ -942,4 +942,8 @@
<string name="add_all_users_home_muted">Přidat všechny uživatele pro ztlumený domov</string>
<string name="display">Zobrazit</string>
<string name="group_reblogs">Seskupovat reblogy v domovské časové ose</string>
+ <string name="manage_accounts">Spravovat účty</string>
+ <string name="report_all_more">Vyberte vše, co vyhovuje</string>
+ <string name="set_remove_left_margin_title">Odstranit levý okraj</string>
+ <string name="set_remove_left_margin">Odstranit v časových osách levý okraj, aby se zprávy zobrazovaly kompaktněji</string>
</resources> \ No newline at end of file
diff --git a/app/src/main/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml
index 9d8a91816..1cc6350d9 100644
--- a/app/src/main/res/values-gl/strings.xml
+++ b/app/src/main/res/values-gl/strings.xml
@@ -931,4 +931,6 @@
<string name="muted_menu_home">Usuarias acalas en Inicio</string>
<string name="group_reblogs">Comparticións para o grupo no Inicio</string>
<string name="manage_accounts">Xestionar contas</string>
+ <string name="set_remove_left_margin_title">Eliminar marxe esquerda</string>
+ <string name="set_remove_left_margin">Eliminar a marxe esquerda nas cronoloxías para compactar máis as mensaxes</string>
</resources> \ No newline at end of file
diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml
index 77b64af8e..