Inceptum/launcher-gtk/src/main/java/io/gitlab/jfronny/inceptum/gtk/control/InstanceThumbnail.java

58 lines
2.1 KiB
Java

package io.gitlab.jfronny.inceptum.gtk.control;
import io.github.jwharm.javagi.Ownership;
import io.gitlab.jfronny.inceptum.launcher.system.instance.Instance;
import org.gtk.gobject.GObject;
import org.gtk.gobject.TypeInstance;
import org.gtk.gtk.Image;
import org.gtk.gtk.Spinner;
import org.gtk.gtk.Stack;
import java.lang.foreign.Addressable;
public class InstanceThumbnail extends Stack {
private static final String SPINNER = "spinner";
private static final String IMAGE = "image";
private static final String GENERIC = "generic";
private InstanceThumbnail(Addressable address, Ownership ownership) {
super(address, ownership);
}
public static InstanceThumbnail castFrom(org.gtk.gobject.GiObject gobject) {
if (GObject.typeCheckInstanceIsA(TypeInstance.fromAddress.marshal(gobject.handle(), Ownership.NONE), Stack.getType())) {
return new InstanceThumbnail(gobject.handle(), gobject.yieldOwnership());
} else {
throw new ClassCastException("Object type is not an instance of GtkStack");
}
}
public InstanceThumbnail() {
super();
var spinner = new Spinner();
var image = new Image();
var generic = new 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);
}
public void bind(Instance entry) {
var spinner = Spinner.castFrom(getChildByName(SPINNER));
var image = Image.castFrom(getChildByName(IMAGE)); //TODO
var generic = Image.castFrom(getChildByName(GENERIC));
//TODO mark instance being played
if (entry.isSetupLocked) {
visibleChild = spinner;
} else if (false) { // if the instance has an image, load the image data and set it as the visible child
visibleChild = image;
} else {
visibleChild = generic;
}
}
}