mirror of
https://github.com/MGislv/NekoX.git
synced 2024-07-04 11:13:36 +00:00
Switch translation provider while error/unsupported
This commit is contained in:
parent
366512df1c
commit
071a3175d1
|
@ -206,6 +206,7 @@ import org.telegram.ui.Components.voip.VoIPHelper;
|
|||
import tw.nekomimi.nekogram.MessageDetailsActivity;
|
||||
import tw.nekomimi.nekogram.MessageHelper;
|
||||
import tw.nekomimi.nekogram.NekoConfig;
|
||||
import tw.nekomimi.nekogram.NekoSettingsActivity;
|
||||
import tw.nekomimi.nekogram.translator.Translator;
|
||||
import tw.nekomimi.nekogram.translator.TranslateBottomSheet;
|
||||
|
||||
|
@ -15327,20 +15328,20 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
|
|||
|
||||
@Override
|
||||
public void onError() {
|
||||
try {
|
||||
Toast.makeText(getParentActivity(), LocaleController.getString("TranslateFailed", R.string.TranslateFailed), Toast.LENGTH_SHORT).show();
|
||||
} catch (Exception e) {
|
||||
FileLog.e(e);
|
||||
}
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
|
||||
builder.setMessage(LocaleController.getString("TranslateFailed", R.string.TranslateFailed));
|
||||
builder.setNeutralButton(LocaleController.getString("TranslationProvider", R.string.TranslationProvider), (dialog, which) -> showDialog(NekoSettingsActivity.getTranslationProviderAlert(getParentActivity())));
|
||||
builder.setPositiveButton(LocaleController.getString("OK", R.string.OK), null);
|
||||
builder.show();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUnsupported() {
|
||||
try {
|
||||
Toast.makeText(getParentActivity(), LocaleController.getString("TranslateApiUnsupported", R.string.TranslateApiUnsupported), Toast.LENGTH_SHORT).show();
|
||||
} catch (Exception e) {
|
||||
FileLog.e(e);
|
||||
}
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
|
||||
builder.setMessage(LocaleController.getString("TranslateApiUnsupported", R.string.TranslateApiUnsupported));
|
||||
builder.setNeutralButton(LocaleController.getString("TranslationProvider", R.string.TranslationProvider), (dialog, which) -> showDialog(NekoSettingsActivity.getTranslationProviderAlert(getParentActivity())));
|
||||
builder.setPositiveButton(LocaleController.getString("OK", R.string.OK), null);
|
||||
showDialog(builder.create());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package tw.nekomimi.nekogram;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.Context;
|
||||
|
||||
import org.telegram.messenger.AndroidUtilities;
|
||||
|
@ -21,6 +22,7 @@ import tw.nekomimi.nekogram.translator.Translator;
|
|||
public class MessageHelper extends BaseController {
|
||||
|
||||
private static volatile MessageHelper[] Instance = new MessageHelper[UserConfig.MAX_ACCOUNT_COUNT];
|
||||
@SuppressLint("StaticFieldLeak")
|
||||
private static AlertDialog progressDialog;
|
||||
private int lastReqId;
|
||||
|
||||
|
@ -48,6 +50,8 @@ public class MessageHelper extends BaseController {
|
|||
if (progressDialog != null) {
|
||||
progressDialog.dismiss();
|
||||
}
|
||||
progressDialog = new AlertDialog(context, 3);
|
||||
progressDialog.showDelayed(400);
|
||||
Translator.translate(query, new Translator.TranslateCallBack() {
|
||||
@Override
|
||||
public void onSuccess(String translation) {
|
||||
|
@ -68,6 +72,7 @@ public class MessageHelper extends BaseController {
|
|||
}
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(context);
|
||||
builder.setMessage(LocaleController.getString("TranslateFailed", R.string.TranslateFailed));
|
||||
builder.setNeutralButton(LocaleController.getString("TranslationProvider", R.string.TranslationProvider), (dialog, which) -> NekoSettingsActivity.getTranslationProviderAlert(context).show());
|
||||
builder.setPositiveButton(LocaleController.getString("OK", R.string.OK), null);
|
||||
builder.show();
|
||||
}
|
||||
|
@ -79,12 +84,11 @@ public class MessageHelper extends BaseController {
|
|||
}
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(context);
|
||||
builder.setMessage(LocaleController.getString("TranslateApiUnsupported", R.string.TranslateApiUnsupported));
|
||||
builder.setNeutralButton(LocaleController.getString("TranslationProvider", R.string.TranslationProvider), (dialog, which) -> NekoSettingsActivity.getTranslationProviderAlert(context).show());
|
||||
builder.setPositiveButton(LocaleController.getString("OK", R.string.OK), null);
|
||||
builder.show();
|
||||
}
|
||||
});
|
||||
progressDialog = new AlertDialog(context, 3);
|
||||
progressDialog.showDelayed(400);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -438,45 +438,9 @@ public class NekoSettingsActivity extends BaseFragment {
|
|||
button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2));
|
||||
}
|
||||
} else if (position == translationProviderRow) {
|
||||
ArrayList<String> arrayList = new ArrayList<>();
|
||||
ArrayList<Integer> types = new ArrayList<>();
|
||||
arrayList.add(LocaleController.getString("ProviderGoogleTranslate", R.string.ProviderGoogleTranslate));
|
||||
types.add(Translator.PROVIDER_GOOGLE);
|
||||
arrayList.add(LocaleController.getString("ProviderGoogleTranslateCN", R.string.ProviderGoogleTranslateCN));
|
||||
types.add(Translator.PROVIDER_GOOGLE_CN);
|
||||
arrayList.add(LocaleController.getString("ProviderLingocloud", R.string.ProviderLingocloud));
|
||||
types.add(Translator.PROVIDER_LINGO);
|
||||
arrayList.add(LocaleController.getString("ProviderGoogleTranslateWeb", R.string.ProviderGoogleTranslateWeb));
|
||||
types.add(Translator.PROVIDER_GOOGLE_WEB);
|
||||
arrayList.add(LocaleController.getString("ProviderGoogleTranslateCNWeb", R.string.ProviderGoogleTranslateCNWeb));
|
||||
types.add(Translator.PROVIDER_GOOGLE_CN_WEB);
|
||||
arrayList.add(LocaleController.getString("ProviderBaiduFanyiWeb", R.string.ProviderBaiduFanyiWeb));
|
||||
types.add(Translator.PROVIDER_BAIDU_WEB);
|
||||
arrayList.add(LocaleController.getString("ProviderDeepLWeb", R.string.ProviderDeepLWeb));
|
||||
types.add(Translator.PROVIDER_DEEPL_WEB);
|
||||
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(context);
|
||||
builder.setTitle(LocaleController.getString("TranslationProvider", R.string.TranslationProvider));
|
||||
final LinearLayout linearLayout = new LinearLayout(context);
|
||||
linearLayout.setOrientation(LinearLayout.VERTICAL);
|
||||
builder.setView(linearLayout);
|
||||
|
||||
for (int a = 0; a < arrayList.size(); a++) {
|
||||
RadioColorCell cell = new RadioColorCell(context);
|
||||
cell.setPadding(AndroidUtilities.dp(4), 0, AndroidUtilities.dp(4), 0);
|
||||
cell.setTag(a);
|
||||
cell.setCheckColor(Theme.getColor(Theme.key_radioBackground), Theme.getColor(Theme.key_dialogRadioBackgroundChecked));
|
||||
cell.setTextAndValue(arrayList.get(a), NekoConfig.translationProvider == types.get(a));
|
||||
linearLayout.addView(cell);
|
||||
cell.setOnClickListener(v -> {
|
||||
Integer which = (Integer) v.getTag();
|
||||
NekoConfig.setTranslationProvider(types.get(which));
|
||||
listAdapter.notifyItemChanged(translationProviderRow);
|
||||
builder.getDismissRunnable().run();
|
||||
});
|
||||
}
|
||||
builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null);
|
||||
showDialog(builder.create());
|
||||
AlertDialog dialog = getTranslationProviderAlert(context);
|
||||
dialog.setOnDismissListener(dialog1 -> listAdapter.notifyItemChanged(translationProviderRow));
|
||||
showDialog(dialog);
|
||||
} else if (position == pauseMusicOnRecordRow) {
|
||||
SharedConfig.togglePauseMusicOnRecord();
|
||||
if (view instanceof TextCheckCell) {
|
||||
|
@ -724,6 +688,47 @@ public class NekoSettingsActivity extends BaseFragment {
|
|||
}));
|
||||
}
|
||||
|
||||
static public AlertDialog getTranslationProviderAlert(Context context) {
|
||||
ArrayList<String> arrayList = new ArrayList<>();
|
||||
ArrayList<Integer> types = new ArrayList<>();
|
||||
arrayList.add(LocaleController.getString("ProviderGoogleTranslate", R.string.ProviderGoogleTranslate));
|
||||
types.add(Translator.PROVIDER_GOOGLE);
|
||||
arrayList.add(LocaleController.getString("ProviderGoogleTranslateCN", R.string.ProviderGoogleTranslateCN));
|
||||
types.add(Translator.PROVIDER_GOOGLE_CN);
|
||||
arrayList.add(LocaleController.getString("ProviderLingocloud", R.string.ProviderLingocloud));
|
||||
types.add(Translator.PROVIDER_LINGO);
|
||||
arrayList.add(LocaleController.getString("ProviderGoogleTranslateWeb", R.string.ProviderGoogleTranslateWeb));
|
||||
types.add(Translator.PROVIDER_GOOGLE_WEB);
|
||||
arrayList.add(LocaleController.getString("ProviderGoogleTranslateCNWeb", R.string.ProviderGoogleTranslateCNWeb));
|
||||
types.add(Translator.PROVIDER_GOOGLE_CN_WEB);
|
||||
arrayList.add(LocaleController.getString("ProviderBaiduFanyiWeb", R.string.ProviderBaiduFanyiWeb));
|
||||
types.add(Translator.PROVIDER_BAIDU_WEB);
|
||||
arrayList.add(LocaleController.getString("ProviderDeepLWeb", R.string.ProviderDeepLWeb));
|
||||
types.add(Translator.PROVIDER_DEEPL_WEB);
|
||||
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(context);
|
||||
builder.setTitle(LocaleController.getString("TranslationProvider", R.string.TranslationProvider));
|
||||
final LinearLayout linearLayout = new LinearLayout(context);
|
||||
linearLayout.setOrientation(LinearLayout.VERTICAL);
|
||||
builder.setView(linearLayout);
|
||||
|
||||
for (int a = 0; a < arrayList.size(); a++) {
|
||||
RadioColorCell cell = new RadioColorCell(context);
|
||||
cell.setPadding(AndroidUtilities.dp(4), 0, AndroidUtilities.dp(4), 0);
|
||||
cell.setTag(a);
|
||||
cell.setCheckColor(Theme.getColor(Theme.key_radioBackground), Theme.getColor(Theme.key_dialogRadioBackgroundChecked));
|
||||
cell.setTextAndValue(arrayList.get(a), NekoConfig.translationProvider == types.get(a));
|
||||
linearLayout.addView(cell);
|
||||
cell.setOnClickListener(v -> {
|
||||
Integer which = (Integer) v.getTag();
|
||||
NekoConfig.setTranslationProvider(types.get(which));
|
||||
builder.getDismissRunnable().run();
|
||||
});
|
||||
}
|
||||
builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null);
|
||||
return builder.create();
|
||||
}
|
||||
|
||||
private void showMessageMenuAlert() {
|
||||
if (getParentActivity() == null) {
|
||||
return;
|
||||
|
|
Loading…
Reference in New Issue
Block a user