summaryrefslogtreecommitdiffstats
path: root/app/src/main/java/app/fedilab/android/ui/drawer/ReleaseNoteAdapter.java
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/app/fedilab/android/ui/drawer/ReleaseNoteAdapter.java')
-rw-r--r--app/src/main/java/app/fedilab/android/ui/drawer/ReleaseNoteAdapter.java119
1 files changed, 119 insertions, 0 deletions
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
new file mode 100644
index 000000000..7d32d3cb5
--- /dev/null
+++ b/app/src/main/java/app/fedilab/android/ui/drawer/ReleaseNoteAdapter.java
@@ -0,0 +1,119 @@
+package app.fedilab.android.ui.drawer;
+/* 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.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Toast;
+
+import androidx.annotation.NonNull;
+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 es.dmoral.toasty.Toasty;
+
+
+public class ReleaseNoteAdapter extends RecyclerView.Adapter<ReleaseNoteAdapter.ReleaseNoteViewHolder> {
+
+ private final List<ReleaseNote.Note> notes;
+ private Context context;
+
+ public ReleaseNoteAdapter(List<ReleaseNote.Note> notes) {
+ this.notes = notes;
+ }
+
+ @Override
+ public long getItemId(int position) {
+ return position;
+ }
+
+ @Override
+ public int getItemCount() {
+ return notes.size();
+ }
+
+ @NonNull
+ @Override
+ public ReleaseNoteViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+ context = parent.getContext();
+ DrawerReleaseNoteBinding itemBinding = DrawerReleaseNoteBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false);
+ return new ReleaseNoteViewHolder(itemBinding);
+ }
+
+ @Override
+ public void onBindViewHolder(@NonNull ReleaseNoteViewHolder holder, int position) {
+ ReleaseNote.Note note = notes.get(position);
+ holder.binding.note.setText(note.note);
+ holder.binding.version.setText(String.format(Locale.getDefault(), "%s (%s)", note.version, note.code));
+ if (note.noteTranslated != null) {
+ holder.binding.noteTranslated.setText(note.noteTranslated);
+ holder.binding.containerTrans.setVisibility(View.VISIBLE);
+ holder.binding.translate.setVisibility(View.GONE);
+ } else {
+ 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");
+ myTransL.translate(note.note, MyTransL.getLocale(), 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();
+ }
+ });
+ });
+ }
+
+
+ public static class ReleaseNoteViewHolder extends RecyclerView.ViewHolder {
+ DrawerReleaseNoteBinding binding;
+
+ ReleaseNoteViewHolder(DrawerReleaseNoteBinding itemView) {
+ super(itemView.getRoot());
+ binding = itemView;
+ }
+ }
+} \ No newline at end of file