diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java b/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java index e7d921edc6..3682168396 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java @@ -23,6 +23,7 @@ import android.app.ActivityManager; import android.app.NotificationManager; import android.content.ComponentName; import android.content.Context; +import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.PackageManager; @@ -41,6 +42,7 @@ import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.appcompat.app.AlertDialog; import androidx.appcompat.widget.SwitchCompat; import androidx.constraintlayout.widget.Group; import androidx.lifecycle.Lifecycle; @@ -48,6 +50,9 @@ import androidx.lifecycle.Observer; import androidx.localbroadcastmanager.content.LocalBroadcastManager; import androidx.preference.PreferenceManager; +import java.nio.charset.Charset; +import java.util.SortedMap; + import io.requery.android.database.sqlite.SQLiteDatabase; public class FragmentOptionsMisc extends FragmentBase implements SharedPreferences.OnSharedPreferenceChangeListener { @@ -74,6 +79,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc private TextView tvMemoryClass; private TextView tvStorageSpace; private TextView tvFingerprint; + private Button btnCharsets; private Group grpDebug; @@ -123,6 +129,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc tvMemoryClass = view.findViewById(R.id.tvMemoryClass); tvStorageSpace = view.findViewById(R.id.tvStorageSpace); tvFingerprint = view.findViewById(R.id.tvFingerprint); + btnCharsets = view.findViewById(R.id.btnCharsets); grpDebug = view.findViewById(R.id.grpDebug); @@ -278,6 +285,40 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc } }); + btnCharsets.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + new SimpleTask>() { + @Override + protected SortedMap onExecute(Context context, Bundle args) { + return Charset.availableCharsets(); + } + + @Override + protected void onExecuted(Bundle args, SortedMap charsets) { + StringBuilder sb = new StringBuilder(); + for (String key : charsets.keySet()) + sb.append(charsets.get(key).displayName()).append("\r\n"); + new AlertDialog.Builder(getContext()) + .setTitle(R.string.title_advanced_charsets) + .setMessage(sb.toString()) + .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + // Do nothing + } + }) + .show(); + } + + @Override + protected void onException(Bundle args, Throwable ex) { + Log.unexpectedError(getParentFragmentManager(), ex); + } + }.execute(FragmentOptionsMisc.this, new Bundle(), "setup:charsets"); + } + }); + tvFtsIndexed.setText(null); DB db = DB.getInstance(getContext()); diff --git a/app/src/main/res/layout/fragment_options_misc.xml b/app/src/main/res/layout/fragment_options_misc.xml index d82ee791a6..c263fe8f5a 100644 --- a/app/src/main/res/layout/fragment_options_misc.xml +++ b/app/src/main/res/layout/fragment_options_misc.xml @@ -352,10 +352,20 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/tvStorageSpace" /> +