From d3e4a6de534ff5359845254566386ecb34aa7e72 Mon Sep 17 00:00:00 2001 From: fengge <844143714@qq.com> Date: Tue, 21 Apr 2026 23:10:10 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=85=8D=E7=BD=AE=E7=95=8C?= =?UTF-8?q?=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle.kts | 1 + .../main/java/com/stand/standapp/AppConfig.kt | 22 ++- .../java/com/stand/standapp/LoginActivity.kt | 70 ++++++--- .../standapp/printer/PrintTestActivity.java | 6 + app/src/main/res/drawable/bg_btn_primary.xml | 10 ++ .../main/res/drawable/bg_btn_secondary.xml | 10 ++ app/src/main/res/drawable/bg_dialog_white.xml | 5 + .../res/drawable/bg_edittext_settings.xml | 6 + app/src/main/res/drawable/bg_input_field.xml | 17 +++ app/src/main/res/layout/dialog_settings.xml | 140 ++++++++++++++++++ app/src/main/res/values/themes.xml | 13 +- 11 files changed, 273 insertions(+), 27 deletions(-) create mode 100644 app/src/main/res/drawable/bg_btn_primary.xml create mode 100644 app/src/main/res/drawable/bg_btn_secondary.xml create mode 100644 app/src/main/res/drawable/bg_dialog_white.xml create mode 100644 app/src/main/res/drawable/bg_edittext_settings.xml create mode 100644 app/src/main/res/drawable/bg_input_field.xml create mode 100644 app/src/main/res/layout/dialog_settings.xml diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 351480e..aad0f7c 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -47,6 +47,7 @@ android { dependencies { implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar")))) implementation("com.jakewharton.timber:timber:5.0.1") + implementation("androidx.cardview:cardview:1.0.0") implementation("io.github.justson:agentweb-core:v5.1.1-androidx") implementation("com.github.Justson:Downloader:v5.0.4-androidx") implementation("com.google.android.material:material:1.12.0") diff --git a/app/src/main/java/com/stand/standapp/AppConfig.kt b/app/src/main/java/com/stand/standapp/AppConfig.kt index 62d2893..9664f7e 100644 --- a/app/src/main/java/com/stand/standapp/AppConfig.kt +++ b/app/src/main/java/com/stand/standapp/AppConfig.kt @@ -6,12 +6,14 @@ import android.content.SharedPreferences object AppConfig { private const val PREF_NAME = "app_settings" private const val KEY_SERVER_URL = "server_url" + private const val KEY_SERIAL_PORT = "serial_port" private const val KEY_REMEMBER_LOGIN = "remember_login" private const val KEY_USERNAME = "saved_username" private const val KEY_PASSWORD = "saved_password" - // 默认服务器地址 + // 默认配置 const val DEFAULT_SERVER_URL = "https://template.gyouzhe.com" + const val DEFAULT_SERIAL_PORT = "/dev/ttyACM0" private fun getPrefs(context: Context): SharedPreferences { return context.getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE) @@ -25,6 +27,24 @@ object AppConfig { getPrefs(context).edit().putString(KEY_SERVER_URL, url).apply() } + fun getSerialPort(context: Context): String { + return getPrefs(context).getString(KEY_SERIAL_PORT, DEFAULT_SERIAL_PORT) ?: DEFAULT_SERIAL_PORT + } + + fun setSerialPort(context: Context, port: String) { + getPrefs(context).edit().putString(KEY_SERIAL_PORT, port).apply() + } + + /** + * 还原默认配置 + */ + fun resetToDefault(context: Context) { + getPrefs(context).edit() + .putString(KEY_SERVER_URL, DEFAULT_SERVER_URL) + .putString(KEY_SERIAL_PORT, DEFAULT_SERIAL_PORT) + .apply() + } + fun isRememberLogin(context: Context): Boolean { return getPrefs(context).getBoolean(KEY_REMEMBER_LOGIN, false) } diff --git a/app/src/main/java/com/stand/standapp/LoginActivity.kt b/app/src/main/java/com/stand/standapp/LoginActivity.kt index 0cfadb2..75677d6 100644 --- a/app/src/main/java/com/stand/standapp/LoginActivity.kt +++ b/app/src/main/java/com/stand/standapp/LoginActivity.kt @@ -143,31 +143,55 @@ class LoginActivity : AppCompatActivity() { }) } - /** - * 弹出服务器地址配置对话框 - */ private fun showServerConfigDialog() { - val container = LinearLayout(this) - container.orientation = LinearLayout.VERTICAL - container.setPadding(60, 20, 60, 0) - - val editText = EditText(this) - editText.setText(AppConfig.getServerUrl(this)) - editText.hint = "例如: http://192.168.1.100:8080" - container.addView(editText) - - AlertDialog.Builder(this) - .setTitle("服务器地址配置") - .setView(container) - .setPositiveButton("保存") { _, _ -> - val newUrl = editText.text.toString().trim() - if (newUrl.isNotEmpty()) { - AppConfig.setServerUrl(this, newUrl) - Toast.makeText(this, "服务器配置已更新", Toast.LENGTH_SHORT).show() - } + val dialogView = layoutInflater.inflate(R.layout.dialog_settings, null) + val etServerUrl = dialogView.findViewById(R.id.et_server_url) + val etSerialPort = dialogView.findViewById(R.id.et_serial_port) + val btnReset = dialogView.findViewById(R.id.btn_reset) + + // 初始化数据 + etServerUrl.setText(AppConfig.getServerUrl(this)) + etSerialPort.setText(AppConfig.getSerialPort(this)) + + val dialog = AlertDialog.Builder(this, R.style.CustomDialogTheme) + .setView(dialogView) + .setCancelable(false) + .create() + + btnReset.setOnClickListener { + etServerUrl.setText(AppConfig.DEFAULT_SERVER_URL) + etSerialPort.setText(AppConfig.DEFAULT_SERIAL_PORT) + Toast.makeText(this, "已重置数值 (待保存)", Toast.LENGTH_SHORT).show() + } + + dialogView.findViewById(R.id.btn_cancel).setOnClickListener { + dialog.dismiss() + } + + dialogView.findViewById(R.id.btn_save).setOnClickListener { + val serverUrl = etServerUrl.text.toString().trim() + val serialPort = etSerialPort.text.toString().trim() + + if (serverUrl.isEmpty()) { + etServerUrl.error = "地址不能为空" + return@setOnClickListener } - .setNegativeButton("取消", null) - .show() + + AppConfig.setServerUrl(this, serverUrl) + AppConfig.setSerialPort(this, serialPort) + + Toast.makeText(this, "参数已生效", Toast.LENGTH_SHORT).show() + dialog.dismiss() + } + + dialog.show() + + // 强制设置对话框宽度 + dialog.window?.let { window -> + val params = window.attributes + params.width = (resources.displayMetrics.widthPixels * 0.75).toInt() // 占据屏幕 75% 宽度 + window.attributes = params + } } override fun onBackPressed() { diff --git a/app/src/main/java/com/stand/standapp/printer/PrintTestActivity.java b/app/src/main/java/com/stand/standapp/printer/PrintTestActivity.java index 1c006ad..c3fd81a 100644 --- a/app/src/main/java/com/stand/standapp/printer/PrintTestActivity.java +++ b/app/src/main/java/com/stand/standapp/printer/PrintTestActivity.java @@ -20,6 +20,7 @@ import androidx.appcompat.app.AppCompatActivity; import com.dp.dp_serialportlist.Serialport_Factory; import com.stand.standapp.R; +import com.stand.standapp.AppConfig; import java.io.IOException; import java.io.InputStream; @@ -63,6 +64,11 @@ public class PrintTestActivity extends AppCompatActivity implements View.OnClick initViews(); sf = Serialport_Factory.getSerialport_Factory(this, mHandler); + + // 预填配置好的串口地址 + String savedPort = AppConfig.INSTANCE.getSerialPort(this); + etManualPath.setText(savedPort); + loadSerialPorts(); } diff --git a/app/src/main/res/drawable/bg_btn_primary.xml b/app/src/main/res/drawable/bg_btn_primary.xml new file mode 100644 index 0000000..8ba331b --- /dev/null +++ b/app/src/main/res/drawable/bg_btn_primary.xml @@ -0,0 +1,10 @@ + + + + + + + + + diff --git a/app/src/main/res/drawable/bg_btn_secondary.xml b/app/src/main/res/drawable/bg_btn_secondary.xml new file mode 100644 index 0000000..ecd11f0 --- /dev/null +++ b/app/src/main/res/drawable/bg_btn_secondary.xml @@ -0,0 +1,10 @@ + + + + + + + + + diff --git a/app/src/main/res/drawable/bg_dialog_white.xml b/app/src/main/res/drawable/bg_dialog_white.xml new file mode 100644 index 0000000..fff3e4a --- /dev/null +++ b/app/src/main/res/drawable/bg_dialog_white.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/app/src/main/res/drawable/bg_edittext_settings.xml b/app/src/main/res/drawable/bg_edittext_settings.xml new file mode 100644 index 0000000..6d5a733 --- /dev/null +++ b/app/src/main/res/drawable/bg_edittext_settings.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/app/src/main/res/drawable/bg_input_field.xml b/app/src/main/res/drawable/bg_input_field.xml new file mode 100644 index 0000000..09f6731 --- /dev/null +++ b/app/src/main/res/drawable/bg_input_field.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/dialog_settings.xml b/app/src/main/res/layout/dialog_settings.xml new file mode 100644 index 0000000..c45faf0 --- /dev/null +++ b/app/src/main/res/layout/dialog_settings.xml @@ -0,0 +1,140 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index d922e5e..b634734 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -2,8 +2,15 @@ + +