From 2bd65baab634e3fe65bd7acdb1e51f7e9faf1804 Mon Sep 17 00:00:00 2001 From: stom79 Date: Tue, 14 Aug 2018 16:20:53 +0200 Subject: [PATCH] Deepl integration + set API KEY --- app/build.gradle | 2 +- .../mastodon/drawers/StatusListAdapter.java | 27 ++++++++- .../mastodon/fragments/SettingsFragment.java | 58 ++++++++++++++++++- .../gouv/etalab/mastodon/helper/Helper.java | 3 + .../res/layout-sw600dp/fragment_settings.xml | 44 ++++++++------ app/src/main/res/layout/fragment_settings.xml | 39 ++++++++----- app/src/main/res/values/strings.xml | 3 + 7 files changed, 140 insertions(+), 36 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index b5699c4a6..7209d4eb2 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -65,7 +65,7 @@ dependencies { implementation "com.gongwen:swipeback:$swipebackLibraryVersion" implementation 'com.github.stom79:country-picker-android:1.2.0' - implementation 'com.github.stom79:mytransl:1.4' + implementation 'com.github.stom79:mytransl:1.5' playstoreImplementation "io.github.kobakei:ratethisapp:$ratethisappLibraryVersion" diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/drawers/StatusListAdapter.java b/app/src/main/java/fr/gouv/etalab/mastodon/drawers/StatusListAdapter.java index 53d048fff..e08d45ca9 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/drawers/StatusListAdapter.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/drawers/StatusListAdapter.java @@ -571,7 +571,7 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct holder.yandex_translate.setVisibility(View.VISIBLE); break; default: - holder.yandex_translate.setVisibility(View.VISIBLE); + holder.yandex_translate.setVisibility(View.GONE); } //Manages theme for icon colors @@ -1988,9 +1988,29 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct private void translateToot(Status status){ //Manages translations - final MyTransL myTransL = MyTransL.getInstance(MyTransL.translatorEngine.YANDEX); + SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE); + int trans = sharedpreferences.getInt(Helper.SET_TRANSLATOR, Helper.TRANS_YANDEX); + MyTransL.translatorEngine et = MyTransL.translatorEngine.YANDEX; + String api_key = null; + + + + if( trans == Helper.TRANS_YANDEX) { + et = MyTransL.translatorEngine.YANDEX; + }else if( trans == Helper.TRANS_DEEPL) { + et = MyTransL.translatorEngine.DEEPL; + } + final MyTransL myTransL = MyTransL.getInstance(et); myTransL.setObfuscation(true); - myTransL.setYandexAPIKey(Helper.YANDEX_KEY); + if( trans == Helper.TRANS_YANDEX) { + api_key = sharedpreferences.getString(Helper.SET_YANDEX_API_KEY, Helper.YANDEX_KEY); + myTransL.setYandexAPIKey(api_key); + }else if( trans == Helper.TRANS_DEEPL) { + api_key = sharedpreferences.getString(Helper.SET_DEEPL_API_KEY, ""); + myTransL.setDeeplAPIKey(api_key); + } + + if( !status.isTranslated() ){ String statusToTranslate; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) @@ -2015,6 +2035,7 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct } @Override public void onFail(HttpsConnectionException e) { + e.printStackTrace(); Toast.makeText(context, R.string.toast_error_translate, Toast.LENGTH_LONG).show(); } }); diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/fragments/SettingsFragment.java b/app/src/main/java/fr/gouv/etalab/mastodon/fragments/SettingsFragment.java index 579ffc0c3..0d7c269f6 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/fragments/SettingsFragment.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/fragments/SettingsFragment.java @@ -33,6 +33,8 @@ import android.provider.DocumentsContract; import android.provider.MediaStore; import android.support.v4.app.Fragment; import android.support.v7.widget.SwitchCompat; +import android.text.Editable; +import android.text.TextWatcher; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -40,6 +42,7 @@ import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.CheckBox; import android.widget.CompoundButton; +import android.widget.EditText; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.SeekBar; @@ -57,6 +60,7 @@ import fr.gouv.etalab.mastodon.R; import static android.app.Activity.RESULT_OK; import static fr.gouv.etalab.mastodon.helper.Helper.CHANGE_THEME_INTENT; import static fr.gouv.etalab.mastodon.helper.Helper.INTENT_ACTION; +import static fr.gouv.etalab.mastodon.helper.Helper.SET_YANDEX_API_KEY; import static fr.gouv.etalab.mastodon.helper.Helper.changeDrawableColor; @@ -71,6 +75,8 @@ public class SettingsFragment extends Fragment { private static final int ACTIVITY_CHOOSE_FILE = 411; private TextView set_folder; int count1, count2, count3 = 0; + private EditText your_api_key; + @Override public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { @@ -170,6 +176,36 @@ public class SettingsFragment extends Fragment { editor.apply(); } }); + your_api_key = rootView.findViewById(R.id.translation_key); + + your_api_key.addTextChangedListener(new TextWatcher() { + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + + } + + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + + } + + @Override + public void afterTextChanged(Editable s) { + SharedPreferences.Editor editor = sharedpreferences.edit(); + int translatore = sharedpreferences.getInt(Helper.SET_TRANSLATOR, Helper.TRANS_YANDEX); + String store = null; + if( translatore == Helper.TRANS_YANDEX) + store = Helper.SET_YANDEX_API_KEY; + else if( translatore == Helper.TRANS_DEEPL) + store = Helper.SET_DEEPL_API_KEY; + if( store != null) + if( s != null && s.length() > 0) + editor.putString(store, s.toString().trim()); + else + editor.putString(store, null); + editor.apply(); + } + }); boolean notif_validation_fav = sharedpreferences.getBoolean(Helper.SET_NOTIF_VALIDATION_FAV, false); final CheckBox set_share_validation_fav = rootView.findViewById(R.id.set_share_validation_fav); @@ -645,11 +681,20 @@ public class SettingsFragment extends Fragment { switch (sharedpreferences.getInt(Helper.SET_TRANSLATOR, Helper.TRANS_YANDEX)){ case Helper.TRANS_YANDEX: positionSpinnerTrans = 0; + your_api_key.setVisibility(View.VISIBLE); + your_api_key.setText(sharedpreferences.getString(Helper.SET_YANDEX_API_KEY, "")); + break; + case Helper.TRANS_DEEPL: + positionSpinnerTrans = 1; + your_api_key.setVisibility(View.VISIBLE); + your_api_key.setText(sharedpreferences.getString(Helper.SET_DEEPL_API_KEY, "")); break; case Helper.TRANS_NONE: - positionSpinnerTrans = 1; + positionSpinnerTrans = 2; + your_api_key.setVisibility(View.GONE); break; default: + your_api_key.setVisibility(View.VISIBLE); positionSpinnerTrans = 0; } translation_layout_spinner.setSelection(positionSpinnerTrans); @@ -660,10 +705,21 @@ public class SettingsFragment extends Fragment { SharedPreferences.Editor editor = sharedpreferences.edit(); switch (position){ case 0: + your_api_key.setVisibility(View.VISIBLE); editor.putInt(Helper.SET_TRANSLATOR, Helper.TRANS_YANDEX); editor.apply(); + if( sharedpreferences.getString(Helper.SET_DEEPL_API_KEY, null) != null) + your_api_key.setText(sharedpreferences.getString(Helper.SET_DEEPL_API_KEY, "")); break; case 1: + your_api_key.setVisibility(View.VISIBLE); + editor.putInt(Helper.SET_TRANSLATOR, Helper.TRANS_DEEPL); + editor.apply(); + if( sharedpreferences.getString(SET_YANDEX_API_KEY, null) != null) + your_api_key.setText(sharedpreferences.getString(SET_YANDEX_API_KEY, null)); + break; + case 2: + your_api_key.setVisibility(View.GONE); set_trans_forced.isChecked(); editor.putBoolean(Helper.SET_TRANS_FORCED, false); editor.putInt(Helper.SET_TRANSLATOR, Helper.TRANS_NONE); diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java b/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java index 4b85dda6d..859c949ab 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java @@ -262,6 +262,7 @@ public class Helper { public static final int LED_COLOUR = 0; public static final int TRANS_YANDEX = 0; + public static final int TRANS_DEEPL = 1; public static final int TRANS_NONE = 2; public static final String SET_TRANS_FORCED = "set_trans_forced"; @@ -327,6 +328,8 @@ public class Helper { //User agent public static final String USER_AGENT = "Mastalab/"+ BuildConfig.VERSION_NAME + " Android/"+ Build.VERSION.RELEASE; + public static final String SET_YANDEX_API_KEY = "set_yandex_api_key"; + public static final String SET_DEEPL_API_KEY = "set_deepl_api_key"; private static boolean menuAccountsOpened = false; diff --git a/app/src/main/res/layout-sw600dp/fragment_settings.xml b/app/src/main/res/layout-sw600dp/fragment_settings.xml index 3c663ce25..79bcfcbd1 100644 --- a/app/src/main/res/layout-sw600dp/fragment_settings.xml +++ b/app/src/main/res/layout-sw600dp/fragment_settings.xml @@ -197,29 +197,39 @@ android:layout_height="wrap_content" /> - + - + - - - + + + + + diff --git a/app/src/main/res/layout/fragment_settings.xml b/app/src/main/res/layout/fragment_settings.xml index dbf3caddd..4d676d18a 100644 --- a/app/src/main/res/layout/fragment_settings.xml +++ b/app/src/main/res/layout/fragment_settings.xml @@ -202,21 +202,32 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center_vertical" - android:orientation="horizontal"> - + - - + + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 459245563..ad85a449d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -351,9 +351,12 @@ Yandex + DeepL No + Your API key, you can leave blank for Yandex + Dark Light