Skip to content

Commit

Permalink
Experience improvement
Browse files Browse the repository at this point in the history
Optimise the readability of the code
  • Loading branch information
Uynaity committed Sep 16, 2023
1 parent 6ab0383 commit c7c6030
Showing 3 changed files with 85 additions and 24 deletions.
2 changes: 1 addition & 1 deletion app/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -12,7 +12,7 @@ android {
minSdk = 26
targetSdk = 33
versionCode = 1
versionName = "1.1"
versionName = "1.2"

testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
96 changes: 73 additions & 23 deletions app/src/main/java/com/uynaity/ezcc2/MainActivity.kt
Original file line number Diff line number Diff line change
@@ -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,39 +18,73 @@ 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<Map<String, Any>>(), mutableListOf()
)

private var sortedSemList = mutableListOf(
mutableListOf<Map<String, Any>>(), mutableListOf()
)


override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
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)
sem2Data = findViewById(R.id.Sem2Data)

val spinner = findViewById<Spinner>(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<MutableList<Map<String, Any>>>) {
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<Map<String, Any>>): String {
private fun formatSem(sem: MutableList<Map<String, Any>>): 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]
}
}
}
}
11 changes: 11 additions & 0 deletions app/src/main/res/layout/activity_main.xml
Original file line number Diff line number Diff line change
@@ -145,4 +145,15 @@
app:srcCompat="@android:drawable/ic_menu_delete" />
</LinearLayout>

<Switch
android:id="@+id/switch1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minHeight="48dp"
android:text="空余量↓"
app:layout_constraintBottom_toTopOf="@+id/linearLayout7"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/search"
app:layout_constraintTop_toBottomOf="@+id/linearLayout6" />

</androidx.constraintlayout.widget.ConstraintLayout>

0 comments on commit c7c6030

Please sign in to comment.