mirror of https://codeberg.org/gitnex/GitNex.git
Refactor: move translation to appearance
This commit is contained in:
parent
6fc664a418
commit
684a2f0776
|
@ -126,9 +126,6 @@
|
|||
<activity
|
||||
android:name=".activities.SettingsSecurityActivity"
|
||||
android:configChanges="orientation|screenSize|smallestScreenSize|density|screenLayout|keyboard|keyboardHidden|navigation"/>
|
||||
<activity
|
||||
android:name=".activities.SettingsTranslationActivity"
|
||||
android:configChanges="orientation|screenSize|smallestScreenSize|density|screenLayout|keyboard|keyboardHidden|navigation"/>
|
||||
<activity
|
||||
android:name=".activities.AddNewTeamMemberActivity"
|
||||
android:configChanges="orientation|screenSize|smallestScreenSize|density|screenLayout|keyboard|keyboardHidden|navigation"/>
|
||||
|
|
|
@ -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<String, String> 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));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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<String, String> 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();
|
||||
}
|
||||
}
|
|
@ -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());
|
||||
|
|
|
@ -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 @@
|
|||
|
||||
</RelativeLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/langFrame"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?android:attr/selectableItemBackground"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:orientation="vertical"
|
||||
android:padding="@dimen/dimen16dp">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvLanguageHeaderSelector"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dimen24dp"
|
||||
android:layout_marginEnd="@dimen/dimen24dp"
|
||||
android:text="@string/settingsLanguageSelectorHeader"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="@dimen/dimen18sp"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvLanguageSelected"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dimen24dp"
|
||||
android:layout_marginEnd="@dimen/dimen24dp"
|
||||
android:text="@string/settingsLanguageSelectedHeaderDefault"
|
||||
android:textColor="?attr/selectedTextColor"
|
||||
android:textSize="@dimen/dimen16sp"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/helpTranslate"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:autoLink="web"
|
||||
android:background="?android:attr/selectableItemBackground"
|
||||
android:paddingStart="@dimen/dimen40dp"
|
||||
android:paddingTop="@dimen/dimen12dp"
|
||||
android:paddingBottom="@dimen/dimen12dp"
|
||||
android:paddingEnd="@dimen/dimen24dp"
|
||||
android:layout_marginBottom="@dimen/dimen2dp"
|
||||
android:text="@string/settingsHelpTranslateText"
|
||||
android:textColor="@color/lightBlue"
|
||||
android:textSize="@dimen/dimen16sp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
|
|
@ -1,96 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="?attr/primaryBackgroundColor"
|
||||
android:orientation="vertical">
|
||||
|
||||
<com.google.android.material.appbar.AppBarLayout
|
||||
android:id="@+id/appbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="@dimen/dimen10dp"
|
||||
android:theme="@style/Widget.AppCompat.SearchView"
|
||||
app:elevation="@dimen/dimen0dp">
|
||||
|
||||
<com.google.android.material.appbar.MaterialToolbar
|
||||
android:id="@+id/toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?attr/primaryBackgroundColor">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/close"
|
||||
android:layout_width="@dimen/dimen26dp"
|
||||
android:layout_height="@dimen/dimen26dp"
|
||||
android:layout_marginStart="@dimen/dimen16dp"
|
||||
android:layout_marginEnd="@dimen/dimen16dp"
|
||||
android:background="?android:attr/selectableItemBackgroundBorderless"
|
||||
android:clickable="true"
|
||||
android:contentDescription="@string/close"
|
||||
android:focusable="true"
|
||||
android:gravity="center_vertical"
|
||||
android:src="@drawable/ic_close"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/toolbar_title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:maxLines="1"
|
||||
android:text="@string/settingsLanguageHeaderText"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="@dimen/dimen20sp"/>
|
||||
|
||||
</com.google.android.material.appbar.MaterialToolbar>
|
||||
|
||||
</com.google.android.material.appbar.AppBarLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/langFrame"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?android:attr/selectableItemBackground"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:orientation="vertical"
|
||||
android:padding="@dimen/dimen16dp">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvLanguageHeaderSelector"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dimen24dp"
|
||||
android:layout_marginEnd="@dimen/dimen24dp"
|
||||
android:text="@string/settingsLanguageSelectorHeader"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="@dimen/dimen18sp"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvLanguageSelected"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dimen24dp"
|
||||
android:layout_marginEnd="@dimen/dimen24dp"
|
||||
android:text="@string/settingsLanguageSelectedHeaderDefault"
|
||||
android:textColor="?attr/selectedTextColor"
|
||||
android:textSize="@dimen/dimen16sp"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/helpTranslate"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:autoLink="web"
|
||||
android:background="?android:attr/selectableItemBackground"
|
||||
android:paddingStart="@dimen/dimen40dp"
|
||||
android:paddingTop="@dimen/dimen16dp"
|
||||
android:paddingEnd="@dimen/dimen24dp"
|
||||
android:paddingBottom="@dimen/dimen16dp"
|
||||
android:text="@string/settingsHelpTranslateText"
|
||||
android:textColor="@color/lightBlue"
|
||||
android:textSize="@dimen/dimen16sp"/>
|
||||
|
||||
</LinearLayout>
|
|
@ -293,61 +293,6 @@
|
|||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/languagesFrame"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="5dp"
|
||||
android:background="?android:attr/selectableItemBackground"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal"
|
||||
android:padding="15dp">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:contentDescription="@string/generalImgContentText"
|
||||
app:srcCompat="@drawable/ic_flag"/>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="10dp"
|
||||
android:layout_marginEnd="10dp"
|
||||
android:layout_weight="1"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvLanguages"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingStart="12dp"
|
||||
android:paddingEnd="12dp"
|
||||
android:text="@string/settingsLanguageHeaderText"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="18sp"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/languagesHintText"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:paddingStart="12dp"
|
||||
android:paddingEnd="12dp"
|
||||
android:text="@string/languagesHintText"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="12sp"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<ImageView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:contentDescription="@string/generalImgContentText"
|
||||
app:srcCompat="@drawable/ic_chevron_right"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/rateAppFrame"
|
||||
android:layout_width="match_parent"
|
||||
|
|
|
@ -622,7 +622,7 @@
|
|||
<string name="resetCounterDialogMessage">Do you want to reset counter for repository %s?</string>
|
||||
<string name="resetCounterAllDialogMessage">This will reset all the counters for this account repositories.</string>
|
||||
|
||||
<string name="appearanceHintText">Themes, fonts, badges</string>
|
||||
<string name="appearanceHintText">Themes, fonts, badges, translation</string>
|
||||
<string name="securityHintText">Biometric authentication, SSL certificates, cache</string>
|
||||
<string name="languagesHintText">Languages</string>
|
||||
<string name="reportsHintText">Crash reports</string>
|
||||
|
|
Loading…
Reference in New Issue