49 lines
1.5 KiB
Kotlin
49 lines
1.5 KiB
Kotlin
package io.gitlab.jfronny.inceptum.gtk.control
|
|
|
|
import io.gitlab.jfronny.inceptum.launcher.system.instance.Instance
|
|
import org.gnome.gtk.Image
|
|
import org.gnome.gtk.Spinner
|
|
import org.gnome.gtk.Stack
|
|
import java.lang.foreign.MemorySegment
|
|
|
|
class InstanceThumbnail : Stack {
|
|
private constructor(address: MemorySegment) : super(address)
|
|
|
|
constructor() : super() {
|
|
val spinner = Spinner()
|
|
val image = Image()
|
|
val generic = Image()
|
|
spinner.name = SPINNER
|
|
image.name = IMAGE
|
|
generic.name = GENERIC
|
|
generic.setFromIconName("media-playback-start-symbolic") //TODO better default icon
|
|
addNamed(spinner, SPINNER)
|
|
addNamed(image, IMAGE)
|
|
addNamed(generic, GENERIC)
|
|
}
|
|
|
|
fun bind(entry: Instance) {
|
|
val spinner = getChildByName(SPINNER) as Spinner
|
|
val image = getChildByName(IMAGE) as Image //TODO
|
|
val generic = getChildByName(GENERIC) as Image
|
|
//TODO mark instance being played
|
|
visibleChild = if (entry.isSetupLocked) {
|
|
spinner
|
|
} else if (false) { // if the instance has an image, load the image data and set it as the visible child
|
|
image
|
|
} else {
|
|
generic
|
|
}
|
|
}
|
|
|
|
companion object {
|
|
private const val SPINNER = "spinner"
|
|
private const val IMAGE = "image"
|
|
private const val GENERIC = "generic"
|
|
@JvmStatic
|
|
fun castFrom(stack: Stack): InstanceThumbnail {
|
|
return InstanceThumbnail(stack.handle())
|
|
}
|
|
}
|
|
}
|