فهرست منبع

系统设置改为统一保存,保存后重启App

Frankensteinly 9 ماه پیش
والد
کامیت
c7ce1dc8cf

+ 2 - 3
app/src/main/java/com/grkj/iscs/view/fragment/SystemSettingFragment.kt

@@ -76,9 +76,8 @@ class SystemSettingFragment : BaseMvpFragment<ISystemSettingView, SystemSettingP
 
         mBinding?.tvPort?.text = SPUtils.getPortConfig(requireActivity())
 
-        mBinding?.tvSetPort?.setOnClickListener {
-            presenter?.setPort(mBinding?.tvPort?.text.toString())
-            // TODO 设置端口
+        mBinding?.cbSave?.setOnClickListener {
+            presenter?.saveConfig(requireContext(), mDockList, mBinding?.tvPort?.text.toString())
         }
     }
 

+ 14 - 3
app/src/main/java/com/grkj/iscs/view/presenter/SystemSettingPresenter.kt

@@ -1,5 +1,7 @@
 package com.grkj.iscs.view.presenter
 
+import android.content.Context
+import android.content.Intent
 import com.google.gson.Gson
 import com.google.gson.reflect.TypeToken
 import com.grkj.iscs.BusinessManager
@@ -18,6 +20,7 @@ import com.grkj.iscs.view.fragment.DockTestFragment
 import com.grkj.iscs.view.fragment.SystemSettingFragment.DockItem
 import com.grkj.iscs.view.iview.ISystemSettingView
 import java.io.File
+import kotlin.system.exitProcess
 
 class SystemSettingPresenter : BasePresenter<ISystemSettingView>() {
 
@@ -64,8 +67,6 @@ class SystemSettingPresenter : BasePresenter<ISystemSettingView>() {
         }
         dockList.add(DockTestFragment.DockTestBean(address.toInt(16).toByte(), type))
         callback()
-        ToastUtils.tip(R.string.save_success)
-        SPUtils.saveDockConfig(mContext!!, Gson().toJson(dockList))
     }
 
     fun getSerialPorts(): List<String> {
@@ -89,13 +90,23 @@ class SystemSettingPresenter : BasePresenter<ISystemSettingView>() {
         return fileName.startsWith("ttyS") || fileName.startsWith("ttyUSB")
     }
 
-    fun setPort(port: String?) {
+    fun saveConfig(ctx: Context, dockList: MutableList<DockTestFragment.DockTestBean>, port: String?) {
         if (port.isNullOrEmpty()) {
             ToastUtils.tip(R.string.please_select_port)
             return
         }
         ToastUtils.tip(R.string.save_success)
         BusinessManager.disconnectDock()
+        SPUtils.saveDockConfig(mContext!!, Gson().toJson(dockList))
         SPUtils.savePortConfig(mContext!!, port)
+        restartApp(ctx)
+    }
+
+    private fun restartApp(ctx: Context) {
+        ctx.packageManager?.getLaunchIntentForPackage(ctx.packageName)?.let {
+            it.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
+            ctx.startActivity(it)
+        }
+        exitProcess(0)
     }
 }

+ 25 - 18
app/src/main/res/layout/fragment_system_setting.xml

@@ -1,5 +1,6 @@
 <?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"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
@@ -70,7 +71,7 @@
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_marginLeft="@dimen/common_spacing_small"
-                android:background="@drawable/common_btn_bg"
+                android:background="@drawable/common_btn_blue_bg"
                 android:gravity="center"
                 android:paddingHorizontal="@dimen/common_spacing_big"
                 android:paddingVertical="@dimen/common_text_padding"
@@ -89,13 +90,13 @@
     </LinearLayout>
 
     <!-- 串口地址设置 -->
-    <LinearLayout
+    <RelativeLayout
         android:layout_width="0dp"
         android:layout_height="match_parent"
-        android:layout_weight="1"
-        android:orientation="vertical">
+        android:layout_weight="1">
 
         <TextView
+            android:id="@+id/tv_port_title"
             style="@style/CommonTextView"
             android:text="@string/port_address_config"
             android:textSize="@dimen/common_text_size_big" />
@@ -103,6 +104,7 @@
         <LinearLayout
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
+            android:layout_below="@id/tv_port_title"
             android:layout_marginVertical="@dimen/common_spacing_small"
             android:gravity="center_vertical"
             android:orientation="horizontal">
@@ -132,19 +134,24 @@
                     android:rotation="90"
                     android:src="@mipmap/arrow" />
             </RelativeLayout>
-
-            <TextView
-                android:id="@+id/tv_set_port"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginLeft="@dimen/common_spacing_small"
-                android:background="@drawable/common_btn_bg"
-                android:gravity="center"
-                android:paddingHorizontal="@dimen/common_spacing_big"
-                android:paddingVertical="@dimen/common_text_padding"
-                android:text="@string/settings"
-                android:textColor="@color/white"
-                android:textSize="@dimen/common_text_size" />
         </LinearLayout>
-    </LinearLayout>
+
+        <TextView
+            android:id="@+id/tv_tip"
+            style="@style/CommonTextView"
+            android:layout_alignParentRight="true"
+            android:layout_alignParentBottom="true"
+            android:text="@string/system_setting_tip"
+            android:textSize="@dimen/common_text_size_small" />
+
+        <com.grkj.iscs.view.widget.CommonBtn
+            android:id="@+id/cb_save"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_above="@id/tv_tip"
+            android:layout_alignParentRight="true"
+            android:layout_marginBottom="@dimen/common_spacing_small"
+            app:btn_bg="@drawable/common_btn_blue_bg"
+            app:btn_name="@string/save_config" />
+    </RelativeLayout>
 </LinearLayout>

+ 2 - 0
app/src/main/res/values/strings.xml

@@ -200,4 +200,6 @@
     <string name="port_address">串口地址</string>
     <string name="please_select_port">请选择串口</string>
     <string name="save_success">保存成功!</string>
+    <string name="save_config">保存配置</string>
+    <string name="system_setting_tip">保存配置后App将自动重启,配置将在重启后生效</string>
 </resources>