/* call_bottom_bar.c generated by valac 0.56.19, the Vala compiler
 * generated from call_bottom_bar.vala, do not modify */

#include <gtk/gtk.h>
#include <glib-object.h>
#include <glib.h>
#include <stdlib.h>
#include <string.h>
#include <pango/pango.h>
#include <adwaita.h>
#include "libdino.h"

#if !defined(VALA_STRICT_C)
#if !defined(__clang__) && defined(__GNUC__) && (__GNUC__ >= 14)
#pragma GCC diagnostic warning "-Wincompatible-pointer-types"
#elif defined(__clang__) && (__clang_major__ >= 16)
#pragma clang diagnostic ignored "-Wincompatible-function-pointer-types"
#pragma clang diagnostic ignored "-Wincompatible-pointer-types"
#endif
#endif
#if !defined(VALA_EXTERN)
#if defined(_MSC_VER)
#define VALA_EXTERN __declspec(dllexport) extern
#elif __GNUC__ >= 4
#define VALA_EXTERN __attribute__((visibility("default"))) extern
#else
#define VALA_EXTERN extern
#endif
#endif

#define DINO_UI_TYPE_CALL_BOTTOM_BAR (dino_ui_call_bottom_bar_get_type ())
#define DINO_UI_CALL_BOTTOM_BAR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), DINO_UI_TYPE_CALL_BOTTOM_BAR, DinoUiCallBottomBar))
#define DINO_UI_CALL_BOTTOM_BAR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), DINO_UI_TYPE_CALL_BOTTOM_BAR, DinoUiCallBottomBarClass))
#define DINO_UI_IS_CALL_BOTTOM_BAR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), DINO_UI_TYPE_CALL_BOTTOM_BAR))
#define DINO_UI_IS_CALL_BOTTOM_BAR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), DINO_UI_TYPE_CALL_BOTTOM_BAR))
#define DINO_UI_CALL_BOTTOM_BAR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), DINO_UI_TYPE_CALL_BOTTOM_BAR, DinoUiCallBottomBarClass))

typedef struct _DinoUiCallBottomBar DinoUiCallBottomBar;
typedef struct _DinoUiCallBottomBarClass DinoUiCallBottomBarClass;
typedef struct _DinoUiCallBottomBarPrivate DinoUiCallBottomBarPrivate;

#define DINO_UI_TYPE_AUDIO_SETTINGS_POPOVER (dino_ui_audio_settings_popover_get_type ())
#define DINO_UI_AUDIO_SETTINGS_POPOVER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), DINO_UI_TYPE_AUDIO_SETTINGS_POPOVER, DinoUiAudioSettingsPopover))
#define DINO_UI_AUDIO_SETTINGS_POPOVER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), DINO_UI_TYPE_AUDIO_SETTINGS_POPOVER, DinoUiAudioSettingsPopoverClass))
#define DINO_UI_IS_AUDIO_SETTINGS_POPOVER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), DINO_UI_TYPE_AUDIO_SETTINGS_POPOVER))
#define DINO_UI_IS_AUDIO_SETTINGS_POPOVER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), DINO_UI_TYPE_AUDIO_SETTINGS_POPOVER))
#define DINO_UI_AUDIO_SETTINGS_POPOVER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), DINO_UI_TYPE_AUDIO_SETTINGS_POPOVER, DinoUiAudioSettingsPopoverClass))

typedef struct _DinoUiAudioSettingsPopover DinoUiAudioSettingsPopover;
typedef struct _DinoUiAudioSettingsPopoverClass DinoUiAudioSettingsPopoverClass;

#define DINO_UI_TYPE_VIDEO_SETTINGS_POPOVER (dino_ui_video_settings_popover_get_type ())
#define DINO_UI_VIDEO_SETTINGS_POPOVER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), DINO_UI_TYPE_VIDEO_SETTINGS_POPOVER, DinoUiVideoSettingsPopover))
#define DINO_UI_VIDEO_SETTINGS_POPOVER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), DINO_UI_TYPE_VIDEO_SETTINGS_POPOVER, DinoUiVideoSettingsPopoverClass))
#define DINO_UI_IS_VIDEO_SETTINGS_POPOVER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), DINO_UI_TYPE_VIDEO_SETTINGS_POPOVER))
#define DINO_UI_IS_VIDEO_SETTINGS_POPOVER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), DINO_UI_TYPE_VIDEO_SETTINGS_POPOVER))
#define DINO_UI_VIDEO_SETTINGS_POPOVER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), DINO_UI_TYPE_VIDEO_SETTINGS_POPOVER, DinoUiVideoSettingsPopoverClass))

typedef struct _DinoUiVideoSettingsPopover DinoUiVideoSettingsPopover;
typedef struct _DinoUiVideoSettingsPopoverClass DinoUiVideoSettingsPopoverClass;
enum  {
	DINO_UI_CALL_BOTTOM_BAR_0_PROPERTY,
	DINO_UI_CALL_BOTTOM_BAR_AUDIO_ENABLED_PROPERTY,
	DINO_UI_CALL_BOTTOM_BAR_VIDEO_ENABLED_PROPERTY,
	DINO_UI_CALL_BOTTOM_BAR_COUNTERPART_DISPLAY_NAME_PROPERTY,
	DINO_UI_CALL_BOTTOM_BAR_NUM_PROPERTIES
};
static GParamSpec* dino_ui_call_bottom_bar_properties[DINO_UI_CALL_BOTTOM_BAR_NUM_PROPERTIES];
#define _g_free0(var) (var = (g_free (var), NULL))
#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
enum  {
	DINO_UI_CALL_BOTTOM_BAR_HANG_UP_SIGNAL,
	DINO_UI_CALL_BOTTOM_BAR_NUM_SIGNALS
};
static guint dino_ui_call_bottom_bar_signals[DINO_UI_CALL_BOTTOM_BAR_NUM_SIGNALS] = {0};

struct _DinoUiCallBottomBar {
	GtkBox parent_instance;
	DinoUiCallBottomBarPrivate * priv;
	DinoUiAudioSettingsPopover* audio_settings_popover;
	DinoUiVideoSettingsPopover* video_settings_popover;
};

struct _DinoUiCallBottomBarClass {
	GtkBoxClass parent_class;
};

struct _DinoUiCallBottomBarPrivate {
	gboolean _audio_enabled;
	gboolean _video_enabled;
	gchar* _counterpart_display_name;
	GtkButton* audio_button;
	GtkOverlay* audio_button_overlay;
	GtkImage* audio_image;
	GtkMenuButton* audio_settings_button;
	GtkButton* video_button;
	GtkOverlay* video_button_overlay;
	GtkImage* video_image;
	GtkMenuButton* video_settings_button;
	GtkLabel* label;
	GtkStack* stack;
};

static gint DinoUiCallBottomBar_private_offset;
static gpointer dino_ui_call_bottom_bar_parent_class = NULL;

VALA_EXTERN GType dino_ui_call_bottom_bar_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (DinoUiCallBottomBar, g_object_unref)
VALA_EXTERN GType dino_ui_audio_settings_popover_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (DinoUiAudioSettingsPopover, g_object_unref)
VALA_EXTERN GType dino_ui_video_settings_popover_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (DinoUiVideoSettingsPopover, g_object_unref)
VALA_EXTERN DinoUiCallBottomBar* dino_ui_call_bottom_bar_new (void);
VALA_EXTERN DinoUiCallBottomBar* dino_ui_call_bottom_bar_construct (GType object_type);
static void __lambda58_ (DinoUiCallBottomBar* self);
VALA_EXTERN gboolean dino_ui_call_bottom_bar_get_audio_enabled (DinoUiCallBottomBar* self);
VALA_EXTERN void dino_ui_call_bottom_bar_set_audio_enabled (DinoUiCallBottomBar* self,
                                                gboolean value);
static void ___lambda58__gtk_button_clicked (GtkButton* _sender,
                                      gpointer self);
VALA_EXTERN void dino_ui_util_menu_button_set_icon_with_size (GtkMenuButton* menu_button,
                                                  const gchar* icon_name,
                                                  gint pixel_size);
static void __lambda59_ (DinoUiCallBottomBar* self);
VALA_EXTERN gboolean dino_ui_call_bottom_bar_get_video_enabled (DinoUiCallBottomBar* self);
VALA_EXTERN void dino_ui_call_bottom_bar_set_video_enabled (DinoUiCallBottomBar* self,
                                                gboolean value);
static void ___lambda59__gtk_button_clicked (GtkButton* _sender,
                                      gpointer self);
static void __lambda60_ (DinoUiCallBottomBar* self);
static void ___lambda60__gtk_button_clicked (GtkButton* _sender,
                                      gpointer self);
VALA_EXTERN void dino_ui_call_bottom_bar_on_audio_enabled_changed (DinoUiCallBottomBar* self);
static void _dino_ui_call_bottom_bar_on_audio_enabled_changed_g_object_notify (GObject* _sender,
                                                                        GParamSpec* pspec,
                                                                        gpointer self);
VALA_EXTERN void dino_ui_call_bottom_bar_on_video_enabled_changed (DinoUiCallBottomBar* self);
static void _dino_ui_call_bottom_bar_on_video_enabled_changed_g_object_notify (GObject* _sender,
                                                                        GParamSpec* pspec,
                                                                        gpointer self);
VALA_EXTERN DinoUiAudioSettingsPopover* dino_ui_call_bottom_bar_show_audio_device_choices (DinoUiCallBottomBar* self,
                                                                               gboolean show);
VALA_EXTERN DinoUiAudioSettingsPopover* dino_ui_audio_settings_popover_new (void);
VALA_EXTERN DinoUiAudioSettingsPopover* dino_ui_audio_settings_popover_construct (GType object_type);
static void __lambda61_ (DinoUiCallBottomBar* self);
static void ___lambda61__dino_ui_audio_settings_popover_microphone_selected (DinoUiAudioSettingsPopover* _sender,
                                                                      DinoPluginsMediaDevice* device,
                                                                      gpointer self);
static void __lambda62_ (DinoUiCallBottomBar* self);
static void ___lambda62__dino_ui_audio_settings_popover_speaker_selected (DinoUiAudioSettingsPopover* _sender,
                                                                   DinoPluginsMediaDevice* device,
                                                                   gpointer self);
VALA_EXTERN void dino_ui_call_bottom_bar_show_audio_device_error (DinoUiCallBottomBar* self);
VALA_EXTERN void dino_ui_util_force_error_color (GtkWidget* widget,
                                     const gchar* selector);
VALA_EXTERN DinoUiVideoSettingsPopover* dino_ui_call_bottom_bar_show_video_device_choices (DinoUiCallBottomBar* self,
                                                                               gboolean show);
VALA_EXTERN DinoUiVideoSettingsPopover* dino_ui_video_settings_popover_new (void);
VALA_EXTERN DinoUiVideoSettingsPopover* dino_ui_video_settings_popover_construct (GType object_type);
static void __lambda63_ (DinoUiCallBottomBar* self);
static void ___lambda63__dino_ui_video_settings_popover_camera_selected (DinoUiVideoSettingsPopover* _sender,
                                                                  DinoPluginsMediaDevice* device,
                                                                  gpointer self);
VALA_EXTERN void dino_ui_call_bottom_bar_show_video_device_error (DinoUiCallBottomBar* self);
VALA_EXTERN void dino_ui_call_bottom_bar_show_counterpart_ended (DinoUiCallBottomBar* self,
                                                     const gchar* text);
VALA_EXTERN gchar* dino_ui_util_unbreak_space_around_non_spacing_mark (gchar* s);
VALA_EXTERN gboolean dino_ui_call_bottom_bar_is_menu_active (DinoUiCallBottomBar* self);
VALA_EXTERN const gchar* dino_ui_call_bottom_bar_get_counterpart_display_name (DinoUiCallBottomBar* self);
VALA_EXTERN void dino_ui_call_bottom_bar_set_counterpart_display_name (DinoUiCallBottomBar* self,
                                                           const gchar* value);
static void dino_ui_call_bottom_bar_finalize (GObject * obj);
static GType dino_ui_call_bottom_bar_get_type_once (void);
static void _vala_dino_ui_call_bottom_bar_get_property (GObject * object,
                                                 guint property_id,
                                                 GValue * value,
                                                 GParamSpec * pspec);
static void _vala_dino_ui_call_bottom_bar_set_property (GObject * object,
                                                 guint property_id,
                                                 const GValue * value,
                                                 GParamSpec * pspec);

static inline gpointer
dino_ui_call_bottom_bar_get_instance_private (DinoUiCallBottomBar* self)
{
	return G_STRUCT_MEMBER_P (self, DinoUiCallBottomBar_private_offset);
}

static void
__lambda58_ (DinoUiCallBottomBar* self)
{
	gboolean _tmp0_;
	_tmp0_ = self->priv->_audio_enabled;
	dino_ui_call_bottom_bar_set_audio_enabled (self, !_tmp0_);
}

static void
___lambda58__gtk_button_clicked (GtkButton* _sender,
                                 gpointer self)
{
	__lambda58_ ((DinoUiCallBottomBar*) self);
}

static void
__lambda59_ (DinoUiCallBottomBar* self)
{
	gboolean _tmp0_;
	_tmp0_ = self->priv->_video_enabled;
	dino_ui_call_bottom_bar_set_video_enabled (self, !_tmp0_);
}

static void
___lambda59__gtk_button_clicked (GtkButton* _sender,
                                 gpointer self)
{
	__lambda59_ ((DinoUiCallBottomBar*) self);
}

static void
__lambda60_ (DinoUiCallBottomBar* self)
{
	g_signal_emit (self, dino_ui_call_bottom_bar_signals[DINO_UI_CALL_BOTTOM_BAR_HANG_UP_SIGNAL], 0);
}

static void
___lambda60__gtk_button_clicked (GtkButton* _sender,
                                 gpointer self)
{
	__lambda60_ ((DinoUiCallBottomBar*) self);
}

static void
_dino_ui_call_bottom_bar_on_audio_enabled_changed_g_object_notify (GObject* _sender,
                                                                   GParamSpec* pspec,
                                                                   gpointer self)
{
	dino_ui_call_bottom_bar_on_audio_enabled_changed ((DinoUiCallBottomBar*) self);
}

static void
_dino_ui_call_bottom_bar_on_video_enabled_changed_g_object_notify (GObject* _sender,
                                                                   GParamSpec* pspec,
                                                                   gpointer self)
{
	dino_ui_call_bottom_bar_on_video_enabled_changed ((DinoUiCallBottomBar*) self);
}

DinoUiCallBottomBar*
dino_ui_call_bottom_bar_construct (GType object_type)
{
	DinoUiCallBottomBar * self = NULL;
	GtkBox* main_buttons = NULL;
	GtkBox* _tmp0_ = NULL;
	GtkButton* _tmp1_;
	GtkImage* _tmp2_;
	GtkButton* _tmp3_;
	GtkButton* _tmp4_;
	AdwBin* audio_button_bin = NULL;
	AdwBin* _tmp5_;
	GtkButton* _tmp6_;
	GtkOverlay* _tmp7_;
	GtkOverlay* _tmp8_;
	GtkMenuButton* _tmp9_;
	GtkMenuButton* _tmp10_;
	GtkMenuButton* _tmp11_;
	GtkMenuButton* _tmp12_;
	GtkMenuButton* _tmp13_;
	GtkOverlay* _tmp14_;
	GtkButton* _tmp15_;
	GtkImage* _tmp16_;
	GtkButton* _tmp17_;
	GtkButton* _tmp18_;
	AdwBin* video_button_bin = NULL;
	AdwBin* _tmp19_;
	GtkButton* _tmp20_;
	GtkOverlay* _tmp21_;
	GtkOverlay* _tmp22_;
	GtkMenuButton* _tmp23_;
	GtkMenuButton* _tmp24_;
	GtkMenuButton* _tmp25_;
	GtkMenuButton* _tmp26_;
	GtkMenuButton* _tmp27_;
	GtkOverlay* _tmp28_;
	GtkButton* button_hang = NULL;
	GtkButton* _tmp29_ = NULL;
	gchar* _tmp30_;
	GtkImage* _tmp31_ = NULL;
	GtkImage* _tmp32_;
	AdwBin* button_hang_bin = NULL;
	AdwBin* _tmp33_ = NULL;
	GtkLabel* _tmp34_;
	GtkStack* _tmp35_;
	GtkStack* _tmp36_;
	GtkLabel* _tmp37_;
	GtkStack* _tmp38_;
	self = (DinoUiCallBottomBar*) g_object_new (object_type, "orientation", GTK_ORIENTATION_HORIZONTAL, "spacing", 0, NULL);
	_tmp0_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 20);
	gtk_widget_set_margin_start ((GtkWidget*) _tmp0_, 40);
	gtk_widget_set_margin_end ((GtkWidget*) _tmp0_, 40);
	gtk_widget_set_margin_bottom ((GtkWidget*) _tmp0_, 20);
	gtk_widget_set_margin_top ((GtkWidget*) _tmp0_, 20);
	gtk_widget_set_halign ((GtkWidget*) _tmp0_, GTK_ALIGN_CENTER);
	gtk_widget_set_hexpand ((GtkWidget*) _tmp0_, TRUE);
	g_object_ref_sink (_tmp0_);
	main_buttons = _tmp0_;
	_tmp1_ = self->priv->audio_button;
	_tmp2_ = self->priv->audio_image;
	gtk_button_set_child (_tmp1_, (GtkWidget*) _tmp2_);
	_tmp3_ = self->priv->audio_button;
	gtk_widget_add_css_class ((GtkWidget*) _tmp3_, "circular");
	_tmp4_ = self->priv->audio_button;
	g_signal_connect_object (_tmp4_, "clicked", (GCallback) ___lambda58__gtk_button_clicked, self, 0);
	_tmp5_ = (AdwBin*) adw_bin_new ();
	g_object_ref_sink (_tmp5_);
	audio_button_bin = _tmp5_;
	gtk_widget_add_css_class ((GtkWidget*) audio_button_bin, "call-button");
	gtk_widget_set_margin_bottom ((GtkWidget*) audio_button_bin, 5);
	gtk_widget_set_margin_end ((GtkWidget*) audio_button_bin, 5);
	_tmp6_ = self->priv->audio_button;
	adw_bin_set_child (audio_button_bin, (GtkWidget*) _tmp6_);
	_tmp7_ = self->priv->audio_button_overlay;
	gtk_overlay_set_child (_tmp7_, (GtkWidget*) audio_button_bin);
	_tmp8_ = self->priv->audio_button_overlay;
	_tmp9_ = self->priv->audio_settings_button;
	gtk_overlay_add_overlay (_tmp8_, (GtkWidget*) _tmp9_);
	_tmp10_ = self->priv->audio_settings_button;
	dino_ui_util_menu_button_set_icon_with_size (_tmp10_, "go-up-symbolic", 10);
	_tmp11_ = self->priv->audio_settings_button;
	gtk_widget_add_css_class ((GtkWidget*) _tmp11_, "circular");
	_tmp12_ = self->priv->audio_settings_button;
	gtk_widget_add_css_class ((GtkWidget*) _tmp12_, "call-button");
	_tmp13_ = self->priv->audio_settings_button;
	gtk_widget_add_css_class ((GtkWidget*) _tmp13_, "call-mediadevice-settings-button");
	_tmp14_ = self->priv->audio_button_overlay;
	gtk_box_append (main_buttons, (GtkWidget*) _tmp14_);
	_tmp15_ = self->priv->video_button;
	_tmp16_ = self->priv->video_image;
	gtk_button_set_child (_tmp15_, (GtkWidget*) _tmp16_);
	_tmp17_ = self->priv->video_button;
	gtk_widget_add_css_class ((GtkWidget*) _tmp17_, "circular");
	_tmp18_ = self->priv->video_button;
	g_signal_connect_object (_tmp18_, "clicked", (GCallback) ___lambda59__gtk_button_clicked, self, 0);
	_tmp19_ = (AdwBin*) adw_bin_new ();
	g_object_ref_sink (_tmp19_);
	video_button_bin = _tmp19_;
	gtk_widget_add_css_class ((GtkWidget*) video_button_bin, "call-button");
	gtk_widget_set_margin_bottom ((GtkWidget*) video_button_bin, 5);
	gtk_widget_set_margin_end ((GtkWidget*) video_button_bin, 5);
	_tmp20_ = self->priv->video_button;
	adw_bin_set_child (video_button_bin, (GtkWidget*) _tmp20_);
	_tmp21_ = self->priv->video_button_overlay;
	gtk_overlay_set_child (_tmp21_, (GtkWidget*) video_button_bin);
	_tmp22_ = self->priv->video_button_overlay;
	_tmp23_ = self->priv->video_settings_button;
	gtk_overlay_add_overlay (_tmp22_, (GtkWidget*) _tmp23_);
	_tmp24_ = self->priv->video_settings_button;
	dino_ui_util_menu_button_set_icon_with_size (_tmp24_, "go-up-symbolic", 10);
	_tmp25_ = self->priv->video_settings_button;
	gtk_widget_add_css_class ((GtkWidget*) _tmp25_, "circular");
	_tmp26_ = self->priv->video_settings_button;
	gtk_widget_add_css_class ((GtkWidget*) _tmp26_, "call-button");
	_tmp27_ = self->priv->video_settings_button;
	gtk_widget_add_css_class ((GtkWidget*) _tmp27_, "call-mediadevice-settings-button");
	_tmp28_ = self->priv->video_button_overlay;
	gtk_box_append (main_buttons, (GtkWidget*) _tmp28_);
	_tmp29_ = (GtkButton*) gtk_button_new ();
	g_object_set ((GtkWidget*) _tmp29_, "height-request", 45, NULL);
	g_object_set ((GtkWidget*) _tmp29_, "width-request", 45, NULL);
	gtk_widget_set_halign ((GtkWidget*) _tmp29_, GTK_ALIGN_START);
	gtk_widget_set_valign ((GtkWidget*) _tmp29_, GTK_ALIGN_START);
	g_object_ref_sink (_tmp29_);
	button_hang = _tmp29_;
	_tmp30_ = g_strdup ("dino-phone-hangup-symbolic");
	_tmp31_ = (GtkImage*) gtk_image_new ();
	g_object_set (_tmp31_, "icon-name", _tmp30_, NULL);
	_g_free0 (_tmp30_);
	gtk_image_set_pixel_size (_tmp31_, 22);
	g_object_ref_sink (_tmp31_);
	_tmp32_ = _tmp31_;
	gtk_button_set_child (button_hang, (GtkWidget*) _tmp32_);
	_g_object_unref0 (_tmp32_);
	gtk_widget_add_css_class ((GtkWidget*) button_hang, "circular");
	gtk_widget_add_css_class ((GtkWidget*) button_hang, "destructive-action");
	g_signal_connect_object (button_hang, "clicked", (GCallback) ___lambda60__gtk_button_clicked, self, 0);
	_tmp33_ = (AdwBin*) adw_bin_new ();
	gtk_widget_set_valign ((GtkWidget*) _tmp33_, GTK_ALIGN_START);
	g_object_ref_sink (_tmp33_);
	button_hang_bin = _tmp33_;
	gtk_widget_add_css_class ((GtkWidget*) button_hang_bin, "call-button");
	adw_bin_set_child (button_hang_bin, (GtkWidget*) button_hang);
	gtk_box_append (main_buttons, (GtkWidget*) button_hang_bin);
	_tmp34_ = self->priv->label;
	gtk_widget_add_css_class ((GtkWidget*) _tmp34_, "text-no-controls");
	_tmp35_ = self->priv->stack;
	gtk_stack_add_named (_tmp35_, (GtkWidget*) main_buttons, "control-buttons");
	_tmp36_ = self->priv->stack;
	_tmp37_ = self->priv->label;
	gtk_stack_add_named (_tmp36_, (GtkWidget*) _tmp37_, "label");
	_tmp38_ = self->priv->stack;
	gtk_box_append ((GtkBox*) self, (GtkWidget*) _tmp38_);
	g_signal_connect_object ((GObject*) self, "notify::audio-enabled", (GCallback) _dino_ui_call_bottom_bar_on_audio_enabled_changed_g_object_notify, self, 0);
	g_signal_connect_object ((GObject*) self, "notify::video-enabled", (GCallback) _dino_ui_call_bottom_bar_on_video_enabled_changed_g_object_notify, self, 0);
	dino_ui_call_bottom_bar_set_audio_enabled (self, TRUE);
	dino_ui_call_bottom_bar_set_video_enabled (self, FALSE);
	dino_ui_call_bottom_bar_on_audio_enabled_changed (self);
	dino_ui_call_bottom_bar_on_video_enabled_changed (self);
	gtk_widget_add_css_class ((GtkWidget*) self, "call-bottom-bar");
	_g_object_unref0 (button_hang_bin);
	_g_object_unref0 (button_hang);
	_g_object_unref0 (video_button_bin);
	_g_object_unref0 (audio_button_bin);
	_g_object_unref0 (main_buttons);
	return self;
}

DinoUiCallBottomBar*
dino_ui_call_bottom_bar_new (void)
{
	return dino_ui_call_bottom_bar_construct (DINO_UI_TYPE_CALL_BOTTOM_BAR);
}

static void
__lambda61_ (DinoUiCallBottomBar* self)
{
	GtkMenuButton* _tmp0_;
	_tmp0_ = self->priv->audio_settings_button;
	gtk_menu_button_popdown (_tmp0_);
}

static void
___lambda61__dino_ui_audio_settings_popover_microphone_selected (DinoUiAudioSettingsPopover* _sender,
                                                                 DinoPluginsMediaDevice* device,
                                                                 gpointer self)
{
	__lambda61_ ((DinoUiCallBottomBar*) self);
}

static void
__lambda62_ (DinoUiCallBottomBar* self)
{
	GtkMenuButton* _tmp0_;
	_tmp0_ = self->priv->audio_settings_button;
	gtk_menu_button_popdown (_tmp0_);
}

static void
___lambda62__dino_ui_audio_settings_popover_speaker_selected (DinoUiAudioSettingsPopover* _sender,
                                                              DinoPluginsMediaDevice* device,
                                                              gpointer self)
{
	__lambda62_ ((DinoUiCallBottomBar*) self);
}

static gpointer
_g_object_ref0 (gpointer self)
{
	return self ? g_object_ref (self) : NULL;
}

DinoUiAudioSettingsPopover*
dino_ui_call_bottom_bar_show_audio_device_choices (DinoUiCallBottomBar* self,
                                                   gboolean show)
{
	GtkMenuButton* _tmp0_;
	DinoUiAudioSettingsPopover* _tmp1_;
	DinoUiAudioSettingsPopover* _tmp3_;
	GtkMenuButton* _tmp4_;
	DinoUiAudioSettingsPopover* _tmp5_;
	DinoUiAudioSettingsPopover* _tmp6_;
	DinoUiAudioSettingsPopover* _tmp7_;
	DinoUiAudioSettingsPopover* _tmp8_;
	DinoUiAudioSettingsPopover* _tmp9_;
	DinoUiAudioSettingsPopover* result;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->audio_settings_button;
	gtk_widget_set_visible ((GtkWidget*) _tmp0_, show);
	_tmp1_ = self->audio_settings_popover;
	if (_tmp1_ != NULL) {
		DinoUiAudioSettingsPopover* _tmp2_;
		_tmp2_ = self->audio_settings_popover;
		gtk_widget_set_visible ((GtkWidget*) _tmp2_, FALSE);
	}
	if (!show) {
		result = NULL;
		return result;
	}
	_tmp3_ = dino_ui_audio_settings_popover_new ();
	g_object_ref_sink (_tmp3_);
	_g_object_unref0 (self->audio_settings_popover);
	self->audio_settings_popover = _tmp3_;
	_tmp4_ = self->priv->audio_settings_button;
	_tmp5_ = self->audio_settings_popover;
	gtk_menu_button_set_popover (_tmp4_, (GtkPopover*) _tmp5_);
	_tmp6_ = self->audio_settings_popover;
	g_signal_connect_object (_tmp6_, "microphone-selected", (GCallback) ___lambda61__dino_ui_audio_settings_popover_microphone_selected, self, 0);
	_tmp7_ = self->audio_settings_popover;
	g_signal_connect_object (_tmp7_, "speaker-selected", (GCallback) ___lambda62__dino_ui_audio_settings_popover_speaker_selected, self, 0);
	_tmp8_ = self->audio_settings_popover;
	_tmp9_ = _g_object_ref0 (_tmp8_);
	result = _tmp9_;
	return result;
}

void
dino_ui_call_bottom_bar_show_audio_device_error (DinoUiCallBottomBar* self)
{
	GtkMenuButton* _tmp0_;
	GtkMenuButton* _tmp1_;
	g_return_if_fail (self != NULL);
	_tmp0_ = self->priv->audio_settings_button;
	gtk_menu_button_set_icon_name (_tmp0_, "dialog-warning-symbolic");
	_tmp1_ = self->priv->audio_settings_button;
	dino_ui_util_force_error_color ((GtkWidget*) _tmp1_, "*");
}

static void
__lambda63_ (DinoUiCallBottomBar* self)
{
	GtkMenuButton* _tmp0_;
	_tmp0_ = self->priv->video_settings_button;
	gtk_menu_button_popdown (_tmp0_);
}

static void
___lambda63__dino_ui_video_settings_popover_camera_selected (DinoUiVideoSettingsPopover* _sender,
                                                             DinoPluginsMediaDevice* device,
                                                             gpointer self)
{
	__lambda63_ ((DinoUiCallBottomBar*) self);
}

DinoUiVideoSettingsPopover*
dino_ui_call_bottom_bar_show_video_device_choices (DinoUiCallBottomBar* self,
                                                   gboolean show)
{
	GtkMenuButton* _tmp0_;
	DinoUiVideoSettingsPopover* _tmp1_;
	DinoUiVideoSettingsPopover* _tmp3_;
	GtkMenuButton* _tmp4_;
	DinoUiVideoSettingsPopover* _tmp5_;
	DinoUiVideoSettingsPopover* _tmp6_;
	DinoUiVideoSettingsPopover* _tmp7_;
	DinoUiVideoSettingsPopover* _tmp8_;
	DinoUiVideoSettingsPopover* result;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->video_settings_button;
	gtk_widget_set_visible ((GtkWidget*) _tmp0_, show);
	_tmp1_ = self->video_settings_popover;
	if (_tmp1_ != NULL) {
		DinoUiVideoSettingsPopover* _tmp2_;
		_tmp2_ = self->video_settings_popover;
		gtk_widget_set_visible ((GtkWidget*) _tmp2_, FALSE);
	}
	if (!show) {
		result = NULL;
		return result;
	}
	_tmp3_ = dino_ui_video_settings_popover_new ();
	g_object_ref_sink (_tmp3_);
	_g_object_unref0 (self->video_settings_popover);
	self->video_settings_popover = _tmp3_;
	_tmp4_ = self->priv->video_settings_button;
	_tmp5_ = self->video_settings_popover;
	gtk_menu_button_set_popover (_tmp4_, (GtkPopover*) _tmp5_);
	_tmp6_ = self->video_settings_popover;
	g_signal_connect_object (_tmp6_, "camera-selected", (GCallback) ___lambda63__dino_ui_video_settings_popover_camera_selected, self, 0);
	_tmp7_ = self->video_settings_popover;
	_tmp8_ = _g_object_ref0 (_tmp7_);
	result = _tmp8_;
	return result;
}

void
dino_ui_call_bottom_bar_show_video_device_error (DinoUiCallBottomBar* self)
{
	GtkMenuButton* _tmp0_;
	GtkMenuButton* _tmp1_;
	g_return_if_fail (self != NULL);
	_tmp0_ = self->priv->video_settings_button;
	gtk_menu_button_set_icon_name (_tmp0_, "dialog-warning-symbolic");
	_tmp1_ = self->priv->video_settings_button;
	dino_ui_util_force_error_color ((GtkWidget*) _tmp1_, "*");
}

void
dino_ui_call_bottom_bar_on_audio_enabled_changed (DinoUiCallBottomBar* self)
{
	gboolean _tmp0_;
	g_return_if_fail (self != NULL);
	_tmp0_ = self->priv->_audio_enabled;
	if (_tmp0_) {
		GtkImage* _tmp1_;
		GtkButton* _tmp2_;
		GtkButton* _tmp3_;
		_tmp1_ = self->priv->audio_image;
		g_object_set (_tmp1_, "icon-name", "audio-input-microphone-symbolic", NULL);
		_tmp2_ = self->priv->audio_button;
		gtk_widget_add_css_class ((GtkWidget*) _tmp2_, "white-button");
		_tmp3_ = self->priv->audio_button;
		gtk_widget_remove_css_class ((GtkWidget*) _tmp3_, "transparent-white-button");
	} else {
		GtkImage* _tmp4_;
		GtkButton* _tmp5_;
		GtkButton* _tmp6_;
		_tmp4_ = self->priv->audio_image;
		g_object_set (_tmp4_, "icon-name", "microphone-disabled-symbolic", NULL);
		_tmp5_ = self->priv->audio_button;
		gtk_widget_remove_css_class ((GtkWidget*) _tmp5_, "white-button");
		_tmp6_ = self->priv->audio_button;
		gtk_widget_add_css_class ((GtkWidget*) _tmp6_, "transparent-white-button");
	}
}

void
dino_ui_call_bottom_bar_on_video_enabled_changed (DinoUiCallBottomBar* self)
{
	gboolean _tmp0_;
	g_return_if_fail (self != NULL);
	_tmp0_ = self->priv->_video_enabled;
	if (_tmp0_) {
		GtkImage* _tmp1_;
		GtkButton* _tmp2_;
		GtkButton* _tmp3_;
		_tmp1_ = self->priv->video_image;
		g_object_set (_tmp1_, "icon-name", "dino-video-symbolic", NULL);
		_tmp2_ = self->priv->video_button;
		gtk_widget_add_css_class ((GtkWidget*) _tmp2_, "white-button");
		_tmp3_ = self->priv->video_button;
		gtk_widget_remove_css_class ((GtkWidget*) _tmp3_, "transparent-white-button");
	} else {
		GtkImage* _tmp4_;
		GtkButton* _tmp5_;
		GtkButton* _tmp6_;
		_tmp4_ = self->priv->video_image;
		g_object_set (_tmp4_, "icon-name", "dino-video-off-symbolic", NULL);
		_tmp5_ = self->priv->video_button;
		gtk_widget_remove_css_class ((GtkWidget*) _tmp5_, "white-button");
		_tmp6_ = self->priv->video_button;
		gtk_widget_add_css_class ((GtkWidget*) _tmp6_, "transparent-white-button");
	}
}

void
dino_ui_call_bottom_bar_show_counterpart_ended (DinoUiCallBottomBar* self,
                                                const gchar* text)
{
	GtkStack* _tmp0_;
	GtkLabel* _tmp1_;
	gchar* _tmp2_;
	gchar* _tmp3_;
	gchar* _tmp4_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (text != NULL);
	_tmp0_ = self->priv->stack;
	gtk_stack_set_visible_child_name (_tmp0_, "label");
	_tmp1_ = self->priv->label;
	_tmp2_ = g_strdup (text);
	_tmp3_ = dino_ui_util_unbreak_space_around_non_spacing_mark (_tmp2_);
	_tmp4_ = _tmp3_;
	gtk_label_set_label (_tmp1_, _tmp4_);
	_g_free0 (_tmp4_);
}

gboolean
dino_ui_call_bottom_bar_is_menu_active (DinoUiCallBottomBar* self)
{
	gboolean _tmp0_ = FALSE;
	gboolean _tmp1_ = FALSE;
	GtkMenuButton* _tmp2_;
	GtkPopover* _tmp3_;
	GtkPopover* _tmp4_;
	gboolean result;
	g_return_val_if_fail (self != NULL, FALSE);
	_tmp2_ = self->priv->video_settings_button;
	_tmp3_ = gtk_menu_button_get_popover (_tmp2_);
	_tmp4_ = _tmp3_;
	if (_tmp4_ != NULL) {
		GtkMenuButton* _tmp5_;
		GtkPopover* _tmp6_;
		GtkPopover* _tmp7_;
		gboolean _tmp8_;
		gboolean _tmp9_;
		_tmp5_ = self->priv->video_settings_button;
		_tmp6_ = gtk_menu_button_get_popover (_tmp5_);
		_tmp7_ = _tmp6_;
		_tmp8_ = gtk_widget_get_visible ((GtkWidget*) _tmp7_);
		_tmp9_ = _tmp8_;
		_tmp1_ = _tmp9_;
	} else {
		_tmp1_ = FALSE;
	}
	if (_tmp1_) {
		_tmp0_ = TRUE;
	} else {
		gboolean _tmp10_ = FALSE;
		GtkMenuButton* _tmp11_;
		GtkPopover* _tmp12_;
		GtkPopover* _tmp13_;
		_tmp11_ = self->priv->audio_settings_button;
		_tmp12_ = gtk_menu_button_get_popover (_tmp11_);
		_tmp13_ = _tmp12_;
		if (_tmp13_ != NULL) {
			GtkMenuButton* _tmp14_;
			GtkPopover* _tmp15_;
			GtkPopover* _tmp16_;
			gboolean _tmp17_;
			gboolean _tmp18_;
			_tmp14_ = self->priv->audio_settings_button;
			_tmp15_ = gtk_menu_button_get_popover (_tmp14_);
			_tmp16_ = _tmp15_;
			_tmp17_ = gtk_widget_get_visible ((GtkWidget*) _tmp16_);
			_tmp18_ = _tmp17_;
			_tmp10_ = _tmp18_;
		} else {
			_tmp10_ = FALSE;
		}
		_tmp0_ = _tmp10_;
	}
	result = _tmp0_;
	return result;
}

gboolean
dino_ui_call_bottom_bar_get_audio_enabled (DinoUiCallBottomBar* self)
{
	gboolean result;
	g_return_val_if_fail (self != NULL, FALSE);
	result = self->priv->_audio_enabled;
	return result;
}

void
dino_ui_call_bottom_bar_set_audio_enabled (DinoUiCallBottomBar* self,
                                           gboolean value)
{
	gboolean old_value;
	g_return_if_fail (self != NULL);
	old_value = dino_ui_call_bottom_bar_get_audio_enabled (self);
	if (old_value != value) {
		self->priv->_audio_enabled = value;
		g_object_notify_by_pspec ((GObject *) self, dino_ui_call_bottom_bar_properties[DINO_UI_CALL_BOTTOM_BAR_AUDIO_ENABLED_PROPERTY]);
	}
}

gboolean
dino_ui_call_bottom_bar_get_video_enabled (DinoUiCallBottomBar* self)
{
	gboolean result;
	g_return_val_if_fail (self != NULL, FALSE);
	result = self->priv->_video_enabled;
	return result;
}

void
dino_ui_call_bottom_bar_set_video_enabled (DinoUiCallBottomBar* self,
                                           gboolean value)
{
	gboolean old_value;
	g_return_if_fail (self != NULL);
	old_value = dino_ui_call_bottom_bar_get_video_enabled (self);
	if (old_value != value) {
		self->priv->_video_enabled = value;
		g_object_notify_by_pspec ((GObject *) self, dino_ui_call_bottom_bar_properties[DINO_UI_CALL_BOTTOM_BAR_VIDEO_ENABLED_PROPERTY]);
	}
}

const gchar*
dino_ui_call_bottom_bar_get_counterpart_display_name (DinoUiCallBottomBar* self)
{
	const gchar* result;
	const gchar* _tmp0_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_counterpart_display_name;
	result = _tmp0_;
	return result;
}

void
dino_ui_call_bottom_bar_set_counterpart_display_name (DinoUiCallBottomBar* self,
                                                      const gchar* value)
{
	gchar* old_value;
	g_return_if_fail (self != NULL);
	old_value = dino_ui_call_bottom_bar_get_counterpart_display_name (self);
	if (g_strcmp0 (value, old_value) != 0) {
		gchar* _tmp0_;
		_tmp0_ = g_strdup (value);
		_g_free0 (self->priv->_counterpart_display_name);
		self->priv->_counterpart_display_name = _tmp0_;
		g_object_notify_by_pspec ((GObject *) self, dino_ui_call_bottom_bar_properties[DINO_UI_CALL_BOTTOM_BAR_COUNTERPART_DISPLAY_NAME_PROPERTY]);
	}
}

static void
dino_ui_call_bottom_bar_class_init (DinoUiCallBottomBarClass * klass,
                                    gpointer klass_data)
{
	dino_ui_call_bottom_bar_parent_class = g_type_class_peek_parent (klass);
	g_type_class_adjust_private_offset (klass, &DinoUiCallBottomBar_private_offset);
	G_OBJECT_CLASS (klass)->get_property = _vala_dino_ui_call_bottom_bar_get_property;
	G_OBJECT_CLASS (klass)->set_property = _vala_dino_ui_call_bottom_bar_set_property;
	G_OBJECT_CLASS (klass)->finalize = dino_ui_call_bottom_bar_finalize;
	g_object_class_install_property (G_OBJECT_CLASS (klass), DINO_UI_CALL_BOTTOM_BAR_AUDIO_ENABLED_PROPERTY, dino_ui_call_bottom_bar_properties[DINO_UI_CALL_BOTTOM_BAR_AUDIO_ENABLED_PROPERTY] = g_param_spec_boolean ("audio-enabled", "audio-enabled", "audio-enabled", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), DINO_UI_CALL_BOTTOM_BAR_VIDEO_ENABLED_PROPERTY, dino_ui_call_bottom_bar_properties[DINO_UI_CALL_BOTTOM_BAR_VIDEO_ENABLED_PROPERTY] = g_param_spec_boolean ("video-enabled", "video-enabled", "video-enabled", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), DINO_UI_CALL_BOTTOM_BAR_COUNTERPART_DISPLAY_NAME_PROPERTY, dino_ui_call_bottom_bar_properties[DINO_UI_CALL_BOTTOM_BAR_COUNTERPART_DISPLAY_NAME_PROPERTY] = g_param_spec_string ("counterpart-display-name", "counterpart-display-name", "counterpart-display-name", NULL, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
	dino_ui_call_bottom_bar_signals[DINO_UI_CALL_BOTTOM_BAR_HANG_UP_SIGNAL] = g_signal_new ("hang-up", DINO_UI_TYPE_CALL_BOTTOM_BAR, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
}

static void
dino_ui_call_bottom_bar_instance_init (DinoUiCallBottomBar * self,
                                       gpointer klass)
{
	GtkButton* _tmp0_ = NULL;
	GtkOverlay* _tmp1_;
	GtkImage* _tmp2_ = NULL;
	GtkMenuButton* _tmp3_ = NULL;
	GtkButton* _tmp4_ = NULL;
	GtkOverlay* _tmp5_;
	GtkImage* _tmp6_ = NULL;
	GtkMenuButton* _tmp7_ = NULL;
	GtkLabel* _tmp8_ = NULL;
	GtkStack* _tmp9_;
	self->priv = dino_ui_call_bottom_bar_get_instance_private (self);
	_tmp0_ = (GtkButton*) gtk_button_new ();
	g_object_set ((GtkWidget*) _tmp0_, "height-request", 45, NULL);
	g_object_set ((GtkWidget*) _tmp0_, "width-request", 45, NULL);
	gtk_widget_set_halign ((GtkWidget*) _tmp0_, GTK_ALIGN_START);
	gtk_widget_set_valign ((GtkWidget*) _tmp0_, GTK_ALIGN_START);
	g_object_ref_sink (_tmp0_);
	self->priv->audio_button = _tmp0_;
	_tmp1_ = (GtkOverlay*) gtk_overlay_new ();
	g_object_ref_sink (_tmp1_);
	self->priv->audio_button_overlay = _tmp1_;
	_tmp2_ = (GtkImage*) gtk_image_new ();
	gtk_image_set_pixel_size (_tmp2_, 22);
	g_object_ref_sink (_tmp2_);
	self->priv->audio_image = _tmp2_;
	_tmp3_ = (GtkMenuButton*) gtk_menu_button_new ();
	gtk_widget_set_halign ((GtkWidget*) _tmp3_, GTK_ALIGN_END);
	gtk_widget_set_valign ((GtkWidget*) _tmp3_, GTK_ALIGN_END);
	g_object_ref_sink (_tmp3_);
	self->priv->audio_settings_button = _tmp3_;
	_tmp4_ = (GtkButton*) gtk_button_new ();
	g_object_set ((GtkWidget*) _tmp4_, "height-request", 45, NULL);
	g_object_set ((GtkWidget*) _tmp4_, "width-request", 45, NULL);
	gtk_widget_set_halign ((GtkWidget*) _tmp4_, GTK_ALIGN_START);
	gtk_widget_set_valign ((GtkWidget*) _tmp4_, GTK_ALIGN_START);
	g_object_ref_sink (_tmp4_);
	self->priv->video_button = _tmp4_;
	_tmp5_ = (GtkOverlay*) gtk_overlay_new ();
	g_object_ref_sink (_tmp5_);
	self->priv->video_button_overlay = _tmp5_;
	_tmp6_ = (GtkImage*) gtk_image_new ();
	gtk_image_set_pixel_size (_tmp6_, 22);
	g_object_ref_sink (_tmp6_);
	self->priv->video_image = _tmp6_;
	_tmp7_ = (GtkMenuButton*) gtk_menu_button_new ();
	gtk_widget_set_halign ((GtkWidget*) _tmp7_, GTK_ALIGN_END);
	gtk_widget_set_valign ((GtkWidget*) _tmp7_, GTK_ALIGN_END);
	g_object_ref_sink (_tmp7_);
	self->priv->video_settings_button = _tmp7_;
	_tmp8_ = (GtkLabel*) gtk_label_new ("");
	gtk_widget_set_halign ((GtkWidget*) _tmp8_, GTK_ALIGN_CENTER);
	gtk_widget_set_valign ((GtkWidget*) _tmp8_, GTK_ALIGN_CENTER);
	gtk_label_set_wrap (_tmp8_, TRUE);
	gtk_label_set_wrap_mode (_tmp8_, PANGO_WRAP_WORD_CHAR);
	gtk_widget_set_hexpand ((GtkWidget*) _tmp8_, TRUE);
	g_object_ref_sink (_tmp8_);
	self->priv->label = _tmp8_;
	_tmp9_ = (GtkStack*) gtk_stack_new ();
	g_object_ref_sink (_tmp9_);
	self->priv->stack = _tmp9_;
}

static void
dino_ui_call_bottom_bar_finalize (GObject * obj)
{
	DinoUiCallBottomBar * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, DINO_UI_TYPE_CALL_BOTTOM_BAR, DinoUiCallBottomBar);
	_g_free0 (self->priv->_counterpart_display_name);
	_g_object_unref0 (self->priv->audio_button);
	_g_object_unref0 (self->priv->audio_button_overlay);
	_g_object_unref0 (self->priv->audio_image);
	_g_object_unref0 (self->priv->audio_settings_button);
	_g_object_unref0 (self->audio_settings_popover);
	_g_object_unref0 (self->priv->video_button);
	_g_object_unref0 (self->priv->video_button_overlay);
	_g_object_unref0 (self->priv->video_image);
	_g_object_unref0 (self->priv->video_settings_button);
	_g_object_unref0 (self->video_settings_popover);
	_g_object_unref0 (self->priv->label);
	_g_object_unref0 (self->priv->stack);
	G_OBJECT_CLASS (dino_ui_call_bottom_bar_parent_class)->finalize (obj);
}

static GType
dino_ui_call_bottom_bar_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (DinoUiCallBottomBarClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) dino_ui_call_bottom_bar_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (DinoUiCallBottomBar), 0, (GInstanceInitFunc) dino_ui_call_bottom_bar_instance_init, NULL };
	GType dino_ui_call_bottom_bar_type_id;
	dino_ui_call_bottom_bar_type_id = g_type_register_static (gtk_box_get_type (), "DinoUiCallBottomBar", &g_define_type_info, 0);
	DinoUiCallBottomBar_private_offset = g_type_add_instance_private (dino_ui_call_bottom_bar_type_id, sizeof (DinoUiCallBottomBarPrivate));
	return dino_ui_call_bottom_bar_type_id;
}

GType
dino_ui_call_bottom_bar_get_type (void)
{
	static volatile gsize dino_ui_call_bottom_bar_type_id__once = 0;
	if (g_once_init_enter (&dino_ui_call_bottom_bar_type_id__once)) {
		GType dino_ui_call_bottom_bar_type_id;
		dino_ui_call_bottom_bar_type_id = dino_ui_call_bottom_bar_get_type_once ();
		g_once_init_leave (&dino_ui_call_bottom_bar_type_id__once, dino_ui_call_bottom_bar_type_id);
	}
	return dino_ui_call_bottom_bar_type_id__once;
}

static void
_vala_dino_ui_call_bottom_bar_get_property (GObject * object,
                                            guint property_id,
                                            GValue * value,
                                            GParamSpec * pspec)
{
	DinoUiCallBottomBar * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, DINO_UI_TYPE_CALL_BOTTOM_BAR, DinoUiCallBottomBar);
	switch (property_id) {
		case DINO_UI_CALL_BOTTOM_BAR_AUDIO_ENABLED_PROPERTY:
		g_value_set_boolean (value, dino_ui_call_bottom_bar_get_audio_enabled (self));
		break;
		case DINO_UI_CALL_BOTTOM_BAR_VIDEO_ENABLED_PROPERTY:
		g_value_set_boolean (value, dino_ui_call_bottom_bar_get_video_enabled (self));
		break;
		case DINO_UI_CALL_BOTTOM_BAR_COUNTERPART_DISPLAY_NAME_PROPERTY:
		g_value_set_string (value, dino_ui_call_bottom_bar_get_counterpart_display_name (self));
		break;
		default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
		break;
	}
}

static void
_vala_dino_ui_call_bottom_bar_set_property (GObject * object,
                                            guint property_id,
                                            const GValue * value,
                                            GParamSpec * pspec)
{
	DinoUiCallBottomBar * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, DINO_UI_TYPE_CALL_BOTTOM_BAR, DinoUiCallBottomBar);
	switch (property_id) {
		case DINO_UI_CALL_BOTTOM_BAR_AUDIO_ENABLED_PROPERTY:
		dino_ui_call_bottom_bar_set_audio_enabled (self, g_value_get_boolean (value));
		break;
		case DINO_UI_CALL_BOTTOM_BAR_VIDEO_ENABLED_PROPERTY:
		dino_ui_call_bottom_bar_set_video_enabled (self, g_value_get_boolean (value));
		break;
		case DINO_UI_CALL_BOTTOM_BAR_COUNTERPART_DISPLAY_NAME_PROPERTY:
		dino_ui_call_bottom_bar_set_counterpart_display_name (self, g_value_get_string (value));
		break;
		default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
		break;
	}
}

