From 7e7dcedaf31ee35499875491c9f569c575d28435 Mon Sep 17 00:00:00 2001 From: fiaxh Date: Mon, 14 Feb 2022 14:55:59 +0100 Subject: Port from GTK3 to GTK4 --- main/src/ui/call_window/call_bottom_bar.vala | 64 +++++++++++----------------- 1 file changed, 26 insertions(+), 38 deletions(-) (limited to 'main/src/ui/call_window/call_bottom_bar.vala') diff --git a/main/src/ui/call_window/call_bottom_bar.vala b/main/src/ui/call_window/call_bottom_bar.vala index b3fa2093..ddc196f2 100644 --- a/main/src/ui/call_window/call_bottom_bar.vala +++ b/main/src/ui/call_window/call_bottom_bar.vala @@ -9,63 +9,58 @@ public class Dino.Ui.CallBottomBar : Gtk.Box { public bool audio_enabled { get; set; } public bool video_enabled { get; set; } - public static IconSize ICON_SIZE_MEDIADEVICE_BUTTON = Gtk.icon_size_register("im.dino.Dino.CALL_MEDIADEVICE_BUTTON", 10, 10); - public string counterpart_display_name { get; set; } private Button audio_button = new Button() { height_request=45, width_request=45, halign=Align.START, valign=Align.START, visible=true }; private Overlay audio_button_overlay = new Overlay() { visible=true }; - private Image audio_image = new Image() { visible=true }; - private MenuButton audio_settings_button = new MenuButton() { halign=Align.END, valign=Align.END }; + private Image audio_image = new Image() { pixel_size=22 }; + private MenuButton audio_settings_button = new MenuButton() { icon_name="go-up-symbolic", halign=Align.END, valign=Align.END }; public AudioSettingsPopover? audio_settings_popover; private Button video_button = new Button() { height_request=45, width_request=45, halign=Align.START, valign=Align.START, visible=true }; private Overlay video_button_overlay = new Overlay() { visible=true }; - private Image video_image = new Image() { visible=true }; - private MenuButton video_settings_button = new MenuButton() { halign=Align.END, valign=Align.END }; + private Image video_image = new Image() { pixel_size=22 }; + private MenuButton video_settings_button = new MenuButton() { icon_name="go-up-symbolic", halign=Align.END, valign=Align.END }; public VideoSettingsPopover? video_settings_popover; - private Label label = new Label("") { margin=20, halign=Align.CENTER, valign=Align.CENTER, wrap=true, wrap_mode=Pango.WrapMode.WORD_CHAR, hexpand=true, visible=true }; + private Label label = new Label("") { halign=Align.CENTER, valign=Align.CENTER, wrap=true, wrap_mode=Pango.WrapMode.WORD_CHAR, hexpand=true, visible=true }; private Stack stack = new Stack() { visible=true }; public CallBottomBar() { Object(orientation:Orientation.HORIZONTAL, spacing:0); - Box main_buttons = new Box(Orientation.HORIZONTAL, 20) { margin_start=40, margin_end=40, margin=20, halign=Align.CENTER, hexpand=true, visible=true }; + Box main_buttons = new Box(Orientation.HORIZONTAL, 20) { margin_start=40, margin_end=40, margin_bottom=20, margin_top=20, halign=Align.CENTER, hexpand=true, visible=true }; - audio_button.add(audio_image); + audio_button.set_child(audio_image); audio_button.get_style_context().add_class("call-button"); audio_button.clicked.connect(() => { audio_enabled = !audio_enabled; }); audio_button.margin_end = audio_button.margin_bottom = 5; // space for the small settings button - audio_button_overlay.add(audio_button); + audio_button_overlay.set_child(audio_button); audio_button_overlay.add_overlay(audio_settings_button); - audio_settings_button.set_image(new Image.from_icon_name("go-up-symbolic", ICON_SIZE_MEDIADEVICE_BUTTON) { visible=true }); audio_settings_button.get_style_context().add_class("call-mediadevice-settings-button"); - audio_settings_button.use_popover = true; - main_buttons.add(audio_button_overlay); + main_buttons.append(audio_button_overlay); - video_button.add(video_image); + video_button.set_child(video_image); video_button.get_style_context().add_class("call-button"); video_button.clicked.connect(() => { video_enabled = !video_enabled; }); video_button.margin_end = video_button.margin_bottom = 5; - video_button_overlay.add(video_button); + video_button_overlay.set_child(video_button); video_button_overlay.add_overlay(video_settings_button); - video_settings_button.set_image(new Image.from_icon_name("go-up-symbolic", ICON_SIZE_MEDIADEVICE_BUTTON) { visible=true }); video_settings_button.get_style_context().add_class("call-mediadevice-settings-button"); - video_settings_button.use_popover = true; - main_buttons.add(video_button_overlay); + main_buttons.append(video_button_overlay); - Button button_hang = new Button.from_icon_name("dino-phone-hangup-symbolic", IconSize.LARGE_TOOLBAR) { height_request=45, width_request=45, halign=Align.START, valign=Align.START, visible=true }; + Button button_hang = new Button() { height_request=45, width_request=45, halign=Align.START, valign=Align.START, visible=true }; + button_hang.set_child(new Image() { icon_name="dino-phone-hangup-symbolic", pixel_size=22 }); button_hang.get_style_context().add_class("call-button"); button_hang.get_style_context().add_class("destructive-action"); button_hang.clicked.connect(() => hang_up()); - main_buttons.add(button_hang); + main_buttons.append(button_hang); label.get_style_context().add_class("text-no-controls"); stack.add_named(main_buttons, "control-buttons"); stack.add_named(label, "label"); - this.add(stack); + this.append(stack); this.notify["audio-enabled"].connect(on_audio_enabled_changed); this.notify["video-enabled"].connect(on_video_enabled_changed); @@ -85,18 +80,15 @@ public class Dino.Ui.CallBottomBar : Gtk.Box { if (!show) return null; audio_settings_popover = new AudioSettingsPopover(); - audio_settings_button.popover = audio_settings_popover; - - audio_settings_popover.set_relative_to(audio_settings_button); - audio_settings_popover.microphone_selected.connect(() => { audio_settings_button.active = false; }); - audio_settings_popover.speaker_selected.connect(() => { audio_settings_button.active = false; }); + audio_settings_popover.microphone_selected.connect(() => { audio_settings_button.popdown(); }); + audio_settings_popover.speaker_selected.connect(() => { audio_settings_button.popdown(); }); return audio_settings_popover; } public void show_audio_device_error() { - audio_settings_button.set_image(new Image.from_icon_name("dialog-warning-symbolic", IconSize.BUTTON) { visible=true }); + audio_settings_button.set_icon_name("dialog-warning-symbolic"); Util.force_error_color(audio_settings_button); } @@ -106,28 +98,24 @@ public class Dino.Ui.CallBottomBar : Gtk.Box { if (!show) return null; video_settings_popover = new VideoSettingsPopover(); - - video_settings_button.popover = video_settings_popover; - - video_settings_popover.set_relative_to(video_settings_button); - video_settings_popover.camera_selected.connect(() => { video_settings_button.active = false; }); + video_settings_popover.camera_selected.connect(() => { video_settings_button.popdown(); }); return video_settings_popover; } public void show_video_device_error() { - video_settings_button.set_image(new Image.from_icon_name("dialog-warning-symbolic", IconSize.BUTTON) { visible=true }); + video_settings_button.set_icon_name("dialog-warning-symbolic"); Util.force_error_color(video_settings_button); } public void on_audio_enabled_changed() { if (audio_enabled) { - audio_image.set_from_icon_name("dino-microphone-symbolic", IconSize.LARGE_TOOLBAR); + audio_image.icon_name = "dino-microphone-symbolic"; audio_button.get_style_context().add_class("white-button"); audio_button.get_style_context().remove_class("transparent-white-button"); } else { - audio_image.set_from_icon_name("dino-microphone-off-symbolic", IconSize.LARGE_TOOLBAR); + audio_image.icon_name = "dino-microphone-off-symbolic"; audio_button.get_style_context().remove_class("white-button"); audio_button.get_style_context().add_class("transparent-white-button"); } @@ -135,12 +123,12 @@ public class Dino.Ui.CallBottomBar : Gtk.Box { public void on_video_enabled_changed() { if (video_enabled) { - video_image.set_from_icon_name("dino-video-symbolic", IconSize.LARGE_TOOLBAR); + video_image.icon_name = "dino-video-symbolic"; video_button.get_style_context().add_class("white-button"); video_button.get_style_context().remove_class("transparent-white-button"); } else { - video_image.set_from_icon_name("dino-video-off-symbolic", IconSize.LARGE_TOOLBAR); + video_image.icon_name = "dino-video-off-symbolic"; video_button.get_style_context().remove_class("white-button"); video_button.get_style_context().add_class("transparent-white-button"); } @@ -152,6 +140,6 @@ public class Dino.Ui.CallBottomBar : Gtk.Box { } public bool is_menu_active() { - return video_settings_button.active || audio_settings_button.active; + return video_settings_button.popover.visible || audio_settings_button.popover.visible; // TODO gtk4 does this work? check for null? } } \ No newline at end of file -- cgit v1.2.3-54-g00ecf