feat: add action icons
This commit is contained in:
@@ -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()
|
||||
}
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user