diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f9a10cce..8708f770 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -126,9 +126,6 @@ - diff --git a/app/src/main/java/org/mian/gitnex/activities/SettingsAppearanceActivity.java b/app/src/main/java/org/mian/gitnex/activities/SettingsAppearanceActivity.java index aaa16ada..1f57e765 100644 --- a/app/src/main/java/org/mian/gitnex/activities/SettingsAppearanceActivity.java +++ b/app/src/main/java/org/mian/gitnex/activities/SettingsAppearanceActivity.java @@ -11,6 +11,8 @@ import android.widget.TimePicker; import androidx.annotation.NonNull; import androidx.fragment.app.DialogFragment; import com.google.android.material.dialog.MaterialAlertDialogBuilder; +import java.util.LinkedHashMap; +import java.util.Locale; import org.mian.gitnex.R; import org.mian.gitnex.databinding.ActivitySettingsAppearanceBinding; import org.mian.gitnex.fragments.SettingsFragment; @@ -29,6 +31,7 @@ public class SettingsAppearanceActivity extends BaseActivity { private static String[] themeList; private static int themeSelectedChoice = 0; private View.OnClickListener onClickListener; + private static int langSelectedChoice = 0; @Override public void onCreate(Bundle savedInstanceState) { @@ -39,6 +42,12 @@ public class SettingsAppearanceActivity extends BaseActivity { ActivitySettingsAppearanceBinding.inflate(getLayoutInflater()); setContentView(activitySettingsAppearanceBinding.getRoot()); + LinkedHashMap lang = new LinkedHashMap<>(); + lang.put("", getString(R.string.settingsLanguageSystem)); + for (String langCode : getResources().getStringArray(R.array.languages)) { + lang.put(langCode, getLanguageDisplayName(langCode)); + } + ImageView closeActivity = activitySettingsAppearanceBinding.close; LinearLayout customFontFrame = activitySettingsAppearanceBinding.customFontFrame; @@ -196,6 +205,48 @@ public class SettingsAppearanceActivity extends BaseActivity { materialAlertDialogBuilder.create().show(); }); + + // language selector dialog + LinearLayout langFrame = activitySettingsAppearanceBinding.langFrame; + + activitySettingsAppearanceBinding.helpTranslate.setOnClickListener( + v12 -> { + AppUtil.openUrlInBrowser(this, getResources().getString(R.string.crowdInLink)); + }); + + langSelectedChoice = tinyDB.getInt("langId"); + activitySettingsAppearanceBinding.tvLanguageSelected.setText( + lang.get(lang.keySet().toArray(new String[0])[langSelectedChoice])); + + // language dialog + langFrame.setOnClickListener( + view -> { + MaterialAlertDialogBuilder materialAlertDialogBuilder = + new MaterialAlertDialogBuilder(ctx) + .setTitle(R.string.settingsLanguageSelectorDialogTitle) + .setCancelable(langSelectedChoice != -1) + .setNeutralButton(getString(R.string.cancelButton), null) + .setSingleChoiceItems( + lang.values().toArray(new String[0]), + langSelectedChoice, + (dialogInterface, i) -> { + String selectedLanguage = + lang.keySet().toArray(new String[0])[i]; + tinyDB.putInt("langId", i); + tinyDB.putString("locale", selectedLanguage); + + SettingsFragment.refreshParent = true; + this.overridePendingTransition(0, 0); + dialogInterface.dismiss(); + Toasty.success( + appCtx, + getResources() + .getString(R.string.settingsSave)); + this.recreate(); + }); + + materialAlertDialogBuilder.create().show(); + }); } private void initCloseListener() { @@ -255,4 +306,12 @@ public class SettingsAppearanceActivity extends BaseActivity { requireActivity().recreate(); } } + + private static String getLanguageDisplayName(String langCode) { + Locale english = new Locale("en"); + Locale translated = new Locale(langCode); + return String.format( + "%s (%s)", + translated.getDisplayName(translated), translated.getDisplayName(english)); + } } diff --git a/app/src/main/java/org/mian/gitnex/activities/SettingsTranslationActivity.java b/app/src/main/java/org/mian/gitnex/activities/SettingsTranslationActivity.java deleted file mode 100644 index 3b7d2d5c..00000000 --- a/app/src/main/java/org/mian/gitnex/activities/SettingsTranslationActivity.java +++ /dev/null @@ -1,103 +0,0 @@ -package org.mian.gitnex.activities; - -import android.os.Bundle; -import android.view.View; -import android.widget.ImageView; -import android.widget.LinearLayout; -import android.widget.TextView; -import com.google.android.material.dialog.MaterialAlertDialogBuilder; -import java.util.LinkedHashMap; -import java.util.Locale; -import org.mian.gitnex.R; -import org.mian.gitnex.databinding.ActivitySettingsTranslationBinding; -import org.mian.gitnex.fragments.SettingsFragment; -import org.mian.gitnex.helpers.AppUtil; -import org.mian.gitnex.helpers.Toasty; - -/** - * @author M M Arif - */ -public class SettingsTranslationActivity extends BaseActivity { - - private static int langSelectedChoice = 0; - private View.OnClickListener onClickListener; - - private static String getLanguageDisplayName(String langCode) { - Locale english = new Locale("en"); - Locale translated = new Locale(langCode); - return String.format( - "%s (%s)", - translated.getDisplayName(translated), translated.getDisplayName(english)); - } - - @Override - public void onCreate(Bundle savedInstanceState) { - - super.onCreate(savedInstanceState); - - LinkedHashMap langs = new LinkedHashMap<>(); - langs.put("", getString(R.string.settingsLanguageSystem)); - for (String langCode : getResources().getStringArray(R.array.languages)) { - langs.put(langCode, getLanguageDisplayName(langCode)); - } - - ActivitySettingsTranslationBinding activitySettingsTranslationBinding = - ActivitySettingsTranslationBinding.inflate(getLayoutInflater()); - setContentView(activitySettingsTranslationBinding.getRoot()); - - ImageView closeActivity = activitySettingsTranslationBinding.close; - - initCloseListener(); - closeActivity.setOnClickListener(onClickListener); - - final TextView tvLanguageSelected = - activitySettingsTranslationBinding.tvLanguageSelected; // setter for en, fr - TextView helpTranslate = activitySettingsTranslationBinding.helpTranslate; - - LinearLayout langFrame = activitySettingsTranslationBinding.langFrame; - - helpTranslate.setOnClickListener( - v12 -> { - AppUtil.openUrlInBrowser(this, getResources().getString(R.string.crowdInLink)); - }); - - langSelectedChoice = tinyDB.getInt("langId"); - tvLanguageSelected.setText( - langs.get(langs.keySet().toArray(new String[0])[langSelectedChoice])); - - // language dialog - langFrame.setOnClickListener( - view -> { - MaterialAlertDialogBuilder materialAlertDialogBuilder = - new MaterialAlertDialogBuilder(ctx) - .setTitle(R.string.settingsLanguageSelectorDialogTitle) - .setCancelable(langSelectedChoice != -1) - .setNeutralButton(getString(R.string.cancelButton), null) - .setSingleChoiceItems( - langs.values().toArray(new String[0]), - langSelectedChoice, - (dialogInterface, i) -> { - String selectedLanguage = - langs.keySet().toArray(new String[0])[i]; - tinyDB.putInt("langId", i); - tinyDB.putString("locale", selectedLanguage); - - SettingsFragment.refreshParent = true; - this.overridePendingTransition(0, 0); - dialogInterface.dismiss(); - Toasty.success( - appCtx, - getResources() - .getString(R.string.settingsSave)); - this.recreate(); - }); - - materialAlertDialogBuilder.create().show(); - }); - } - - private void initCloseListener() { - - onClickListener = view -> finish(); - } -} diff --git a/app/src/main/java/org/mian/gitnex/fragments/SettingsFragment.java b/app/src/main/java/org/mian/gitnex/fragments/SettingsFragment.java index 55ab91c5..da78f3c1 100644 --- a/app/src/main/java/org/mian/gitnex/fragments/SettingsFragment.java +++ b/app/src/main/java/org/mian/gitnex/fragments/SettingsFragment.java @@ -19,7 +19,6 @@ import org.mian.gitnex.activities.SettingsAppearanceActivity; import org.mian.gitnex.activities.SettingsGeneralActivity; import org.mian.gitnex.activities.SettingsNotificationsActivity; import org.mian.gitnex.activities.SettingsSecurityActivity; -import org.mian.gitnex.activities.SettingsTranslationActivity; import org.mian.gitnex.databinding.CustomAboutDialogBinding; import org.mian.gitnex.databinding.FragmentSettingsBinding; import org.mian.gitnex.helpers.AppUtil; @@ -70,9 +69,6 @@ public class SettingsFragment extends Fragment { fragmentSettingsBinding.notificationsFrame.setOnClickListener( v1 -> startActivity(new Intent(ctx, SettingsNotificationsActivity.class))); - fragmentSettingsBinding.languagesFrame.setOnClickListener( - v1 -> startActivity(new Intent(ctx, SettingsTranslationActivity.class))); - fragmentSettingsBinding.rateAppFrame.setOnClickListener(rateApp -> rateThisApp()); fragmentSettingsBinding.aboutAppFrame.setOnClickListener(aboutApp -> showAboutAppDialog()); diff --git a/app/src/main/res/layout/activity_settings_appearance.xml b/app/src/main/res/layout/activity_settings_appearance.xml index 5c2562e1..0d65497c 100644 --- a/app/src/main/res/layout/activity_settings_appearance.xml +++ b/app/src/main/res/layout/activity_settings_appearance.xml @@ -216,7 +216,7 @@ android:id="@+id/labelsInListFrame" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginBottom="@dimen/dimen60dp" + android:layout_marginBottom="@dimen/dimen6dp" android:background="?android:attr/selectableItemBackground" android:orientation="horizontal" android:padding="@dimen/dimen16dp"> @@ -268,4 +268,51 @@ + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_settings_translation.xml b/app/src/main/res/layout/activity_settings_translation.xml deleted file mode 100644 index 4cc01514..00000000 --- a/app/src/main/res/layout/activity_settings_translation.xml +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/layout/fragment_settings.xml b/app/src/main/res/layout/fragment_settings.xml index da137662..80dcf5fe 100644 --- a/app/src/main/res/layout/fragment_settings.xml +++ b/app/src/main/res/layout/fragment_settings.xml @@ -293,61 +293,6 @@ - - - - - - - - - - - - - - - - Do you want to reset counter for repository %s? This will reset all the counters for this account repositories. - Themes, fonts, badges + Themes, fonts, badges, translation Biometric authentication, SSL certificates, cache Languages Crash reports