91
91
info_hint.icon_hint, info_hint.data);
94
internal virtual HashTable<string, Variant> update_property (HashTable<string, Variant> values)
94
internal virtual async HashTable<string, Variant> update_property (HashTable<string, Variant> values)
96
96
_raw.update_property (values);
236
236
description_markup: description);
239
internal static GenericPreview empty ()
241
var preview = new GenericPreview ("", "", null);
242
preview.get_raw ().set_no_details (true);
239
247
internal override Object create_raw ()
241
249
return new Protocol.GenericPreview ();
396
internal override HashTable<string, Variant> update_property (HashTable<string, Variant> values)
404
internal override async HashTable<string, Variant> update_property (HashTable<string, Variant> values)
398
406
Variant? action_v = values["action"];
399
407
Variant? uri_v = values["uri"];
480
public class SeriesItem : Object
487
/* No support for SeriesPreview yet */
488
internal class SeriesItem : Object
482
490
public string uri { get; construct; }
483
491
public string title { get; construct; }
492
public class SeriesPreview : Preview, Dee.Serializable
500
internal class SeriesPreview : Preview, Dee.Serializable
494
502
private string _current_item_uri;
495
503
public string current_item_uri
552
561
public signal Preview? request_item_preview (string uri);
554
internal override HashTable<string, Variant> update_property (HashTable<string, Variant> values)
563
internal override async HashTable<string, Variant> update_property (HashTable<string, Variant> values)
556
var response = base.update_property (values);
565
var response = yield base.update_property (values);
557
566
int new_selected_item = _raw.selected_item;
558
567
Preview? preview = null;
559
568
if (new_selected_item != _selected_item &&
575
584
private Variant serialize ()
586
// FIXME: this won't work with AsyncPreview, but we can't really emit
587
// the request_item_preview signal sooner, because the user of this API
588
// needs time to construct the instance and connect to the signal
589
// We seem to need extra init() method.
577
591
// ensures that we emit selected_item_changed shortly after construction
578
592
if (_selected_item < 0 && _raw.get_items ().length > 0)
595
// Keeping this internal so far, we'll probably expose it later
596
internal class AsyncPreview : Preview
609
public class AsyncPreview : Preview
598
611
public AsyncPreview ()
603
public Cancellable cancellable { get; private set; }
616
public AsyncPreview.with_cancellable (Cancellable cancellable)
618
Object (cancellable: cancellable);
621
public Cancellable cancellable { get; construct set; }
605
623
public signal void preview_ready (Preview preview);
606
// FIXME: also add an emit method, so it's easy to use in C/Python
625
// simple emit method, so it's easy to use in C/Python
626
[CCode (name = "unity_async_preview_preview_ready")]
627
public void emit_preview_ready (Preview? preview)
628
requires (!(preview is AsyncPreview))
630
preview_ready (preview);
608
633
internal override Object create_raw ()
610
635
return new Protocol.GenericPreview ();
638
internal async Preview? wait_for_signal ()
640
Preview? preview = null;
641
var sig_id = this.preview_ready.connect ((preview_) =>
643
if (preview_ != null && !(preview_ is AsyncPreview))
647
wait_for_signal.callback ();
651
Cancellable? canc = null;
652
if (cancellable != null)
655
canc_id = canc.connect (() =>
657
SignalHandler.block (this, sig_id);
658
// the cancellable's lock is held in the callback, we'd deadlock if we
659
// tried to continue the callback and disconnect right away
660
Idle.add (wait_for_signal.callback);
667
SignalHandler.disconnect (this, sig_id);
668
if (canc != null) canc.disconnect (canc_id);
614
674
} /* namespace */