58 lines
2.1 KiB
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;
|
|
}
|
|
}
|
|
}
|