diff --git a/app/build.gradle.kts b/app/build.gradle.kts index df951b8..05baa1e 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -12,7 +12,7 @@ android { minSdk = 26 targetSdk = 33 versionCode = 1 - versionName = "1.1" + versionName = "1.2" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } diff --git a/app/src/main/java/com/uynaity/ezcc2/MainActivity.kt b/app/src/main/java/com/uynaity/ezcc2/MainActivity.kt index d5d91f3..e8be08e 100644 --- a/app/src/main/java/com/uynaity/ezcc2/MainActivity.kt +++ b/app/src/main/java/com/uynaity/ezcc2/MainActivity.kt @@ -4,6 +4,7 @@ import android.annotation.SuppressLint import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.widget.Button +import android.widget.Switch import android.widget.EditText import android.widget.TextView import android.widget.Toast @@ -17,16 +18,40 @@ import android.widget.ImageButton import android.widget.Spinner +@SuppressLint("UseSwitchCompatOrMaterialCode") class MainActivity : AppCompatActivity() { private lateinit var courseCodeEditText: EditText private lateinit var searchButton: Button private lateinit var clearButton: ImageButton + private lateinit var switch1: Switch private lateinit var sem1Stat: TextView private lateinit var sem1Data: TextView private lateinit var sem2Stat: TextView private lateinit var sem2Data: TextView private var backPressedTime: Long = 0 private val backPressedInterval = 2000 + private var isSorted = false + + private var caches = mutableListOf( + "", "" + ) + + private var cachesSorted = mutableListOf( + "", "" + ) + + private var stats = mutableListOf( + "", "" + ) + + private var semList = mutableListOf( + mutableListOf>(), mutableListOf() + ) + + private var sortedSemList = mutableListOf( + mutableListOf>(), mutableListOf() + ) + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -34,6 +59,7 @@ class MainActivity : AppCompatActivity() { courseCodeEditText = findViewById(R.id.courseCode) searchButton = findViewById(R.id.search) clearButton = findViewById(R.id.clearButton) + switch1 = findViewById(R.id.switch1) sem1Stat = findViewById(R.id.sem1Stat) sem1Data = findViewById(R.id.Sem1Data) sem2Stat = findViewById(R.id.Sem2Stat) @@ -41,15 +67,24 @@ class MainActivity : AppCompatActivity() { val spinner = findViewById(R.id.spinner) val adapter = ArrayAdapter.createFromResource( - this, R.array.spinner_options, // 你的字符串数组资源 - android.R.layout.simple_spinner_item + this, R.array.spinner_options, android.R.layout.simple_spinner_item ) adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) spinner.adapter = adapter + searchButton.setOnClickListener { Thread { try { - getTableData(courseCodeEditText.text.toString()) + semList = getTableData(courseCodeEditText.text.toString()) + sortedSemList = semList.map { sem -> + sem.sortedByDescending { it["空余数量"] as Int }.toMutableList() + }.toMutableList() + if (isSorted) { + judgement() + } else { + judgement() + } + printSem() } catch (e: Exception) { sem1Stat.text = e.message } @@ -58,12 +93,20 @@ class MainActivity : AppCompatActivity() { val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager imm.hideSoftInputFromWindow(searchButton.windowToken, 0) } + clearButton.setOnClickListener { courseCodeEditText.text.clear() courseCodeEditText.requestFocus() val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager imm.showSoftInput(courseCodeEditText, InputMethodManager.SHOW_IMPLICIT) } + + switch1.setOnCheckedChangeListener { _, isChecked -> + isSorted = isChecked + if (semList[0].isNotEmpty() && semList[1].isNotEmpty()) { + printSem() + } + } } @Deprecated("Deprecated in Java") @@ -139,37 +182,30 @@ class MainActivity : AppCompatActivity() { semList[sem].add(dataSet) } } - judgement(semList) return semList } @SuppressLint("SetTextI18n") - private fun judgement(re: MutableList>>) { - val semList = mutableListOf( - sem1Data, sem2Data - ) - val semStats = mutableListOf( - sem1Stat, sem2Stat - ) - for (index in re.indices) { - val subList = re[index] + private fun judgement() { + for (index in semList.indices) { + val subList = semList[index] if (subList.isEmpty()) { - runOnUiThread { - semStats[index].text = "未在Sem ${index + 1}中找到相关课程 :-(" - } + stats[index] = "未在Sem ${index + 1}中找到相关课程 :-(" } else { - runOnUiThread { - semStats[index].text = "Sem ${index + 1}中找到以下相关课程:" - } - } - runOnUiThread { - semList[index].text = printSem(subList) + stats[index] = "Sem ${index + 1}中找到以下相关课程:" } + caches[index] = formatSem(subList) + } + + for (index in sortedSemList.indices) { + val subList = sortedSemList[index] + cachesSorted[index] = formatSem(subList) } + } - private fun printSem(sem: MutableList>): String { + private fun formatSem(sem: MutableList>): String { var str = "" for (i in sem) { for (j in i) { @@ -179,4 +215,18 @@ class MainActivity : AppCompatActivity() { str += "\n" return str } + + private fun printSem() { + runOnUiThread { + sem1Stat.text = stats[0] + sem2Stat.text = stats[1] + if (isSorted) { + sem1Data.text = cachesSorted[0] + sem2Data.text = cachesSorted[1] + } else { + sem1Data.text = caches[0] + sem2Data.text = caches[1] + } + } + } } diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index dec03ae..bc50a45 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -145,4 +145,15 @@ app:srcCompat="@android:drawable/ic_menu_delete" /> + + \ No newline at end of file