1
0
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:
NekoInverter 2020-05-07 09:38:55 +08:00
parent 366512df1c
commit 071a3175d1
No known key found for this signature in database
GPG Key ID: 280D6CCCF95715F9
3 changed files with 61 additions and 51 deletions

View File

@ -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());
}
});
}

View File

@ -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);
}
}

View File

@ -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;