feat: add action icons

This commit is contained in:
Fabian Christoffel
2023-06-26 14:57:47 +02:00
parent a595756799
commit 61b13c3e19
10 changed files with 62 additions and 22 deletions

View File

@@ -14,7 +14,7 @@ import androidx.recyclerview.widget.RecyclerView
interface Action {
fun getLabel(): String
fun getIcon(): String
fun getIcon(): Int?
fun execute(): Unit
}
@@ -70,6 +70,7 @@ class DeviceListAdapter(
deviceActions = view.findViewById(R.id.device_actions)
}
@SuppressLint("RestrictedApi")
fun bind(result: DeviceListEntry) {
deviceNameView.text = result.name ?: "<N/A>"
macAddressView.text = result.address
@@ -90,13 +91,18 @@ class DeviceListAdapter(
deviceActions.setOnClickListener {
val popup = PopupMenu(context, deviceActions)
result.getActions().forEach { action ->
popup.menu.add(action.getLabel())
.setOnMenuItemClickListener { menuItem ->
action.execute()
true
}
val menuItem = popup.menu.add(action.getLabel())
menuItem.setOnMenuItemClickListener { item ->
action.execute()
true
}
val menuIcon = action.getIcon()
if (menuIcon != null) {
menuItem.setIcon(menuIcon)
}
}
val inflater = popup.menuInflater
popup.setForceShowIcon(true)
inflater.inflate(R.menu.device_menu, popup.menu)
popup.show()
}

View File

@@ -195,8 +195,8 @@ class KirbyDevice(
return "Connect"
}
override fun getIcon(): String {
return ""
override fun getIcon(): Int {
return R.drawable.action_icon_connect
}
override fun execute() {
@@ -213,8 +213,8 @@ class KirbyDevice(
return "Disconnect"
}
override fun getIcon(): String {
return ""
override fun getIcon(): Int {
return R.drawable.action_icon_disconnect
}
override fun execute() {
@@ -227,8 +227,8 @@ class KirbyDevice(
return "Fetch Measurement"
}
override fun getIcon(): String {
TODO("Not yet implemented")
override fun getIcon(): Int {
return R.drawable.action_icon_fetch_measurement
}
override fun execute() {
@@ -242,8 +242,8 @@ class KirbyDevice(
return "Subscribe"
}
override fun getIcon(): String {
return ""
override fun getIcon(): Int {
return R.drawable.action_icon_subscribe
}
override fun execute() {
@@ -261,8 +261,8 @@ class KirbyDevice(
return "Unsubscribe"
}
override fun getIcon(): String {
return ""
override fun getIcon(): Int {
return R.drawable.action_icon_subscribe_disable
}
override fun execute() {

View File

@@ -121,6 +121,9 @@ class MainActivity : AppCompatActivity() {
override fun onScanningStateChange(isScanning: Boolean) {
runOnUiThread {
binding.fab.setText(if (isScanning) "Stop Scan" else "Start Scan")
binding.fab.setIconResource(
if (isScanning) R.drawable.action_icon_disconnect else R.drawable.action_icon_scan
)
}
}
@@ -338,8 +341,8 @@ class DummyListEntry(override val address: String) : DeviceListEntry {
return "Test action 1"
}
override fun getIcon(): String {
return ""
override fun getIcon(): Int? {
return R.drawable.action_icon_disconnect
}
override fun execute() {
@@ -350,8 +353,8 @@ class DummyListEntry(override val address: String) : DeviceListEntry {
return "Test action 2"
}
override fun getIcon(): String {
return ""
override fun getIcon(): Int? {
return R.drawable.action_icon_connect
}
override fun execute() {