Skip to content

Commit

Permalink
Merge pull request #1 from kl11n/master
Browse files Browse the repository at this point in the history
Make CheckableItems checkable on init
  • Loading branch information
kdroidFilter authored Nov 20, 2024
2 parents 10758a1 + 35861af commit da77d8a
Show file tree
Hide file tree
Showing 7 changed files with 17 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -23,5 +23,6 @@ internal interface Gtk : Library {
fun gtk_widget_set_sensitive(widget: Pointer, sensitive: Int)
fun gtk_widget_destroy(menu: Pointer)
fun gtk_widget_hide(get: Pointer?)
fun gtk_check_menu_item_set_active(checkMenuItem: Pointer, active: Boolean)

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package com.kdroid.composetray.menu.api

interface TrayMenuBuilder {
fun Item(label: String, isEnabled: Boolean = true, onClick: () -> Unit = {})
fun CheckableItem(label: String, isEnabled: Boolean = true, onToggle: (Boolean) -> Unit)
fun CheckableItem(label: String, checked: Boolean = false, isEnabled: Boolean = true, onToggle: (Boolean) -> Unit)
fun SubMenu(label: String, isEnabled: Boolean = true, submenuContent: (TrayMenuBuilder.() -> Unit)?)
fun Divider()
fun dispose()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ internal class AwtTrayMenuBuilderImpl(private val popupMenu: PopupMenu, private
popupMenu.add(menuItem)
}

override fun CheckableItem(label: String, isEnabled: Boolean, onToggle: (Boolean) -> Unit) {
var isChecked = false
override fun CheckableItem(label: String, checked:Boolean, isEnabled: Boolean, onToggle: (Boolean) -> Unit) {
var isChecked = checked
val checkableMenuItem = MenuItem(getCheckableLabel(label, isChecked))
checkableMenuItem.isEnabled = isEnabled

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,10 +61,11 @@ class LinuxTrayMenuBuilderImpl(private val menu: Pointer) : TrayMenuBuilder {
)
}

override fun CheckableItem(label: String, isEnabled: Boolean, onToggle: (Boolean) -> Unit) {
override fun CheckableItem(label: String, checked: Boolean, isEnabled: Boolean, onToggle: (Boolean) -> Unit) {
val checkMenuItem = Gtk.INSTANCE.gtk_check_menu_item_new_with_label(label)
Gtk.INSTANCE.gtk_menu_shell_append(menu, checkMenuItem)
Gtk.INSTANCE.gtk_widget_set_sensitive(checkMenuItem, if (isEnabled) 1 else 0)
Gtk.INSTANCE.gtk_check_menu_item_set_active(checkMenuItem, checked)

val callback = object : GCallback {
override fun callback(widget: Pointer, data: Pointer?) {
Expand Down Expand Up @@ -139,4 +140,4 @@ class LinuxTrayMenuBuilderImpl(private val menu: Pointer) : TrayMenuBuilder {
override fun dispose() {
scope.cancel()
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@ internal class WindowsTrayMenuBuilderImpl(
}
}

override fun CheckableItem(label: String, isEnabled: Boolean, onToggle: (Boolean) -> Unit) {
var isChecked = false // Initialise l'état checked
override fun CheckableItem(label: String, checked: Boolean, isEnabled: Boolean, onToggle: (Boolean) -> Unit) {
var isChecked = checked // Initialise l'état checked

lock.withLock {
val menuItem = WindowsTrayManager.MenuItem(
Expand Down Expand Up @@ -89,4 +89,4 @@ internal class WindowsTrayMenuBuilderImpl(
}

fun build(): List<WindowsTrayManager.MenuItem> = lock.withLock { menuItems.toList() }
}
}
3 changes: 3 additions & 0 deletions src/test/kotlin/sample/DemoAdaptivePositionWindows.kt
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,9 @@ fun main() = application {
CheckableItem(label = "Enable notifications") { isChecked ->
Log.i(logTag, "Notifications ${if (isChecked) "enabled" else "disabled"}")
}
CheckableItem(label = "Initial Checked", checked = true) { isChecked ->
Log.i(logTag, "Initial Checked ${if (isChecked) "enabled" else "disabled"}")
}

Divider()

Expand Down
3 changes: 3 additions & 0 deletions src/test/kotlin/sample/DemoWithContextMenu.kt
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,9 @@ fun main() = application {
CheckableItem(label = "Enable notifications") { isChecked ->
Log.i(logTag, "Notifications ${if (isChecked) "enabled" else "disabled"}")
}
CheckableItem(label = "Initial Checked", checked = true) { isChecked ->
Log.i(logTag, "Initial Checked ${if (isChecked) "enabled" else "disabled"}")
}

Divider()

Expand Down

0 comments on commit da77d8a

Please sign in to comment.