瀏覽代碼

增加手动设置语言功能

weizhengliang 2 年之前
父節點
當前提交
db6f966e62

+ 1 - 1
callingbed/src/main/java/com/wdkl/app/ncs/callingbed/activity/CallingbedActivity.kt

@@ -1643,7 +1643,7 @@ class CallingbedActivity :BaseActivity<CallingbedActivityPresenter, CallingbedMa
 
     fun backToMain() {
         backTimeout++
-        if (backTimeout >= Constant.CALL_TIMEOUT) {
+        if (backTimeout >= 2*60) {
             //费用、二维码界面超时返回主界面
             if (costFragment.equals(curFragment) || qrCodeFragment.equals(curFragment)) {
                 if (Constant.DEVICE_STATUS == 1) {

+ 5 - 0
callingbed/src/main/java/com/wdkl/app/ncs/callingbed/fragment/QrCodeFragment.kt

@@ -6,6 +6,7 @@ import com.wdkl.app.ncs.callingbed.R
 import com.wdkl.app.ncs.callingbed.activity.CallingbedActivity
 import com.wdkl.app.ncs.callingbed.databinding.QrcodeViewBinding
 import com.wdkl.app.ncs.callingbed.helper.AppUpdateHelper
+import com.wdkl.app.ncs.callingbed.helper.LanguageSetDialogHelper
 import com.wdkl.app.ncs.callingbed.helper.NetHelper
 import com.wdkl.app.ncs.callingbed.helper.ServerConfigDialogHelper
 import com.wdkl.app.ncs.callingbed.launch.CallingbedLaunch
@@ -96,6 +97,10 @@ class QrCodeFragment : BaseFragment<QrCodeFragmentPresenter, QrcodeViewBinding>(
         tv_btn_server_config.setOnClickListener {
             ServerConfigDialogHelper.showPasswordDialog(activity)
         }
+
+        tv_btn_language_setting.setOnClickListener {
+            LanguageSetDialogHelper.showDialog(activity)
+        }
     }
 
     override fun destory() {

+ 140 - 0
callingbed/src/main/java/com/wdkl/app/ncs/callingbed/helper/LanguageSetDialogHelper.java

@@ -0,0 +1,140 @@
+package com.wdkl.app.ncs.callingbed.helper;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.os.Handler;
+import android.util.Log;
+import android.view.Gravity;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.Window;
+import android.view.WindowManager;
+import android.widget.AdapterView;
+import android.widget.ArrayAdapter;
+import android.widget.Button;
+import android.widget.RadioButton;
+import android.widget.RadioGroup;
+import android.widget.Spinner;
+import android.widget.Toast;
+
+import com.wdkl.app.ncs.callingbed.R;
+import com.wdkl.app.ncs.callingbed.settings.SettingConfig;
+
+
+public class LanguageSetDialogHelper {
+
+    private static AlertDialog dialog;
+    private static int selectIndex;
+
+    public static void showDialog(final Activity activity) {
+        if (dialog != null && dialog.isShowing()) {
+            return;
+        }
+
+        final int originIndex = LocaleMangerUtils.getCurrentLocaleIndex();
+        selectIndex = originIndex;
+
+        View contentView = LayoutInflater.from(activity).inflate(R.layout.language_set_dialog, null);
+        AlertDialog.Builder builder = new AlertDialog.Builder(activity);
+        builder.setView(contentView);
+
+        RadioButton btnYes = contentView.findViewById(R.id.rb_language_yes);
+        RadioButton btnNo = contentView.findViewById(R.id.rb_language_no);
+        final int mode = SettingConfig.getLanguageMode(activity);
+        if (mode == 0) {
+            btnYes.setChecked(true);
+        } else {
+            btnNo.setChecked(true);
+        }
+
+        Button buttonCancel = contentView.findViewById(R.id.cancel_button);
+        Button buttonConfirm = contentView.findViewById(R.id.confirm_button);
+        Spinner spinner = contentView.findViewById(R.id.spinner_language_select);
+        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(activity,
+                R.array.language_list, R.layout.spinner_item);
+        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
+        spinner.setAdapter(adapter);
+        spinner.setSelection(originIndex);
+        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
+            @Override
+            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
+                Log.d("languageId", "pos: " + position + ", originIndex: " + originIndex);
+                selectIndex = position;
+            }
+
+            @Override
+            public void onNothingSelected(AdapterView<?> parent) {
+
+            }
+        });
+
+        RadioGroup languageGroup = contentView.findViewById(R.id.group_language_mode);
+        languageGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
+            @Override
+            public void onCheckedChanged(RadioGroup group, int checkedId) {
+                if (checkedId == R.id.rb_language_yes) {
+                    SettingConfig.setLanguageMode(activity, 0);
+                } else {
+                    SettingConfig.setLanguageMode(activity, 1);
+                }
+            }
+        });
+
+        buttonCancel.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                if (dialog != null) {
+                    dialog.dismiss();
+                }
+            }
+        });
+
+        buttonConfirm.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                SettingConfig.setLanguageId(activity, selectIndex);
+
+                if (SettingConfig.getLanguageMode(activity) == 1) {
+                    if (selectIndex != originIndex) {
+                        Toast.makeText(activity, "restart now...", Toast.LENGTH_LONG).show();
+                        new Handler().postDelayed(new Runnable() {
+                            @Override
+                            public void run() {
+                                AppUpdateHelper.restartApp(activity);
+                            }
+                        }, 3000);
+                    }
+                } else {
+                    Toast.makeText(activity, "restart now...", Toast.LENGTH_LONG).show();
+                    new Handler().postDelayed(new Runnable() {
+                        @Override
+                        public void run() {
+                            AppUpdateHelper.restartApp(activity);
+                        }
+                    }, 3000);
+                }
+
+                if (dialog != null) {
+                    dialog.dismiss();
+                }
+            }
+        });
+
+        dialog = builder.create();
+        //dialog.setCanceledOnTouchOutside(false);
+        //dialog.setCancelable(false);
+        dialog.show();
+
+        //设置dialog宽高及位置
+        try {
+            Window window = dialog.getWindow();
+            WindowManager.LayoutParams lp = window.getAttributes();
+            lp.width = 480;
+            lp.height = 420;
+            lp.gravity = Gravity.CENTER;
+            window.setAttributes(lp);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+}

+ 83 - 0
callingbed/src/main/res/layout/language_set_dialog.xml

@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:padding="20dp"
+    android:gravity="center"
+    android:orientation="vertical">
+
+    <TextView
+        android:id="@+id/tv_language_title"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="10dp"
+        android:text="@string/language_set_mode"
+        android:textSize="24sp" />
+
+    <RadioGroup
+        android:id="@+id/group_language_mode"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="10dp"
+        android:orientation="horizontal">
+        <RadioButton
+            android:id="@+id/rb_language_yes"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/str_yes"/>
+        <RadioButton
+            android:id="@+id/rb_language_no"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="4dp"
+            android:text="@string/str_no"/>
+    </RadioGroup>
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="20dp"
+        android:orientation="vertical">
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:gravity="center"
+            android:text="@string/language_set_title"
+            android:textSize="24sp" />
+
+        <Spinner
+            android:id="@+id/spinner_language_select"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="10dp"/>
+    </LinearLayout>
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="60dp"
+        android:gravity="center_horizontal">
+        <Button
+            android:id="@+id/confirm_button"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:background="@mipmap/bg_bottom_btn"
+            android:padding="8dp"
+            android:text="@string/str_confirm"
+            android:textSize="20sp"
+            android:textColor="@drawable/selector_bottom_btn_text_color"/>
+
+        <Button
+            android:id="@+id/cancel_button"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="80dp"
+            android:background="@mipmap/bg_bottom_btn"
+            android:padding="8dp"
+            android:text="@string/str_cancel"
+            android:textSize="20sp"
+            android:textColor="@drawable/selector_bottom_btn_text_color"/>
+    </LinearLayout>
+
+</LinearLayout>

+ 12 - 0
callingbed/src/main/res/layout/qrcode_view.xml

@@ -91,9 +91,21 @@
                 android:layout_alignParentBottom="true"
                 android:orientation="vertical">
                 <TextView
+                    android:id="@+id/tv_btn_language_setting"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:padding="4dp"
+                    android:background="@color/main_color"
+                    android:gravity="center_horizontal"
+                    android:text="@string/language_set_title"
+                    android:textColor="@drawable/selector_bottom_btn_text_color"
+                    android:textSize="20sp" />
+
+                <TextView
                     android:id="@+id/tv_btn_reboot"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
+                    android:layout_marginTop="10dp"
                     android:padding="4dp"
                     android:background="@color/main_color"
                     android:gravity="center_horizontal"

+ 10 - 0
callingbed/src/main/res/layout/spinner_item.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<TextView xmlns:android="http://schemas.android.com/apk/res/android"
+    android:singleLine="true"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:gravity="center"
+    android:padding="4dp"
+    android:ellipsize="marquee"
+    android:textAlignment="inherit"
+    android:textSize="20sp"/>

+ 5 - 0
resource/src/main/res/values-es/string.xml

@@ -107,4 +107,9 @@
     <string name="server_config">Configuración del servidor</string>
     <string name="product_desc">Descripción del Producto:</string>
     <string name="device_error">Error del dispositivo, reinicie!</string>
+
+    <string name="language_set_title">Idioma</string>
+    <string name="language_set_mode">Sincronizar el idioma desde el servidor:</string>
+    <string name="str_yes">Sí</string>
+    <string name="str_no">No</string>
 </resources>

+ 5 - 0
resource/src/main/res/values-ru/strings.xml

@@ -101,4 +101,9 @@
     <string name="server_config">Конфигурация сервера</string>
     <string name="product_desc">описание продукта:</string>
     <string name="device_error">Ошибка устройства, перезагрузите компьютер!</string>
+
+    <string name="language_set_title">Язык</string>
+    <string name="language_set_mode">Синхронизировать язык с сервером:</string>
+    <string name="str_yes">Да</string>
+    <string name="str_no">Нет</string>
 </resources>

+ 5 - 0
resource/src/main/res/values-zh/strings.xml

@@ -110,4 +110,9 @@
     <string name="server_config">服务器配置</string>
     <string name="product_desc">产品说明:</string>
     <string name="device_error">设备网络出现异常,请检查网络或尝试断电重启!</string>
+
+    <string name="language_set_title">语言设置</string>
+    <string name="language_set_mode">是否同步服务器语言:</string>
+    <string name="str_yes">是</string>
+    <string name="str_no">否</string>
 </resources>

+ 5 - 0
resource/src/main/res/values/strings.xml

@@ -110,4 +110,9 @@
     <string name="server_config">Server config</string>
     <string name="product_desc">Product:</string>
     <string name="device_error">Device error, please reboot!</string>
+
+    <string name="language_set_title">Language setting</string>
+    <string name="language_set_mode">Sync language from server:</string>
+    <string name="str_yes">Yes</string>
+    <string name="str_no">No</string>
 </resources>