/* volume.c generated by valac 0.56.18-dirty, the Vala compiler
 * generated from volume.vala, do not modify */

#include <gtk/gtk.h>
#include <glib-object.h>
#include <glib.h>
#include <stdlib.h>
#include <string.h>
#include <float.h>
#include <math.h>
#include <json-glib/json-glib.h>
#include <gee.h>
#include <pulse/pulseaudio.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 SWAY_NOTIFICATION_CENTER_WIDGETS_TYPE_BASE_WIDGET (sway_notification_center_widgets_base_widget_get_type ())
#define SWAY_NOTIFICATION_CENTER_WIDGETS_BASE_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SWAY_NOTIFICATION_CENTER_WIDGETS_TYPE_BASE_WIDGET, SwayNotificationCenterWidgetsBaseWidget))
#define SWAY_NOTIFICATION_CENTER_WIDGETS_BASE_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SWAY_NOTIFICATION_CENTER_WIDGETS_TYPE_BASE_WIDGET, SwayNotificationCenterWidgetsBaseWidgetClass))
#define SWAY_NOTIFICATION_CENTER_WIDGETS_IS_BASE_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SWAY_NOTIFICATION_CENTER_WIDGETS_TYPE_BASE_WIDGET))
#define SWAY_NOTIFICATION_CENTER_WIDGETS_IS_BASE_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SWAY_NOTIFICATION_CENTER_WIDGETS_TYPE_BASE_WIDGET))
#define SWAY_NOTIFICATION_CENTER_WIDGETS_BASE_WIDGET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SWAY_NOTIFICATION_CENTER_WIDGETS_TYPE_BASE_WIDGET, SwayNotificationCenterWidgetsBaseWidgetClass))

typedef struct _SwayNotificationCenterWidgetsBaseWidget SwayNotificationCenterWidgetsBaseWidget;
typedef struct _SwayNotificationCenterWidgetsBaseWidgetClass SwayNotificationCenterWidgetsBaseWidgetClass;
typedef struct _SwayNotificationCenterWidgetsBaseWidgetPrivate SwayNotificationCenterWidgetsBaseWidgetPrivate;

#define SWAY_NOTIFICATION_CENTER_WIDGETS_TYPE_VOLUME (sway_notification_center_widgets_volume_get_type ())
#define SWAY_NOTIFICATION_CENTER_WIDGETS_VOLUME(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SWAY_NOTIFICATION_CENTER_WIDGETS_TYPE_VOLUME, SwayNotificationCenterWidgetsVolume))
#define SWAY_NOTIFICATION_CENTER_WIDGETS_VOLUME_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SWAY_NOTIFICATION_CENTER_WIDGETS_TYPE_VOLUME, SwayNotificationCenterWidgetsVolumeClass))
#define SWAY_NOTIFICATION_CENTER_WIDGETS_IS_VOLUME(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SWAY_NOTIFICATION_CENTER_WIDGETS_TYPE_VOLUME))
#define SWAY_NOTIFICATION_CENTER_WIDGETS_IS_VOLUME_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SWAY_NOTIFICATION_CENTER_WIDGETS_TYPE_VOLUME))
#define SWAY_NOTIFICATION_CENTER_WIDGETS_VOLUME_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SWAY_NOTIFICATION_CENTER_WIDGETS_TYPE_VOLUME, SwayNotificationCenterWidgetsVolumeClass))

typedef struct _SwayNotificationCenterWidgetsVolume SwayNotificationCenterWidgetsVolume;
typedef struct _SwayNotificationCenterWidgetsVolumeClass SwayNotificationCenterWidgetsVolumeClass;
typedef struct _SwayNotificationCenterWidgetsVolumePrivate SwayNotificationCenterWidgetsVolumePrivate;

#define TYPE_ITER_LIST_BOX_CONTROLLER (iter_list_box_controller_get_type ())
#define ITER_LIST_BOX_CONTROLLER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_ITER_LIST_BOX_CONTROLLER, IterListBoxController))
#define ITER_LIST_BOX_CONTROLLER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_ITER_LIST_BOX_CONTROLLER, IterListBoxControllerClass))
#define IS_ITER_LIST_BOX_CONTROLLER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_ITER_LIST_BOX_CONTROLLER))
#define IS_ITER_LIST_BOX_CONTROLLER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_ITER_LIST_BOX_CONTROLLER))
#define ITER_LIST_BOX_CONTROLLER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_ITER_LIST_BOX_CONTROLLER, IterListBoxControllerClass))

typedef struct _IterListBoxController IterListBoxController;
typedef struct _IterListBoxControllerClass IterListBoxControllerClass;

#define SWAY_NOTIFICATION_CENTER_WIDGETS_TYPE_PULSE_DEVICE (sway_notification_center_widgets_pulse_device_get_type ())
#define SWAY_NOTIFICATION_CENTER_WIDGETS_PULSE_DEVICE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SWAY_NOTIFICATION_CENTER_WIDGETS_TYPE_PULSE_DEVICE, SwayNotificationCenterWidgetsPulseDevice))
#define SWAY_NOTIFICATION_CENTER_WIDGETS_PULSE_DEVICE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SWAY_NOTIFICATION_CENTER_WIDGETS_TYPE_PULSE_DEVICE, SwayNotificationCenterWidgetsPulseDeviceClass))
#define SWAY_NOTIFICATION_CENTER_WIDGETS_IS_PULSE_DEVICE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SWAY_NOTIFICATION_CENTER_WIDGETS_TYPE_PULSE_DEVICE))
#define SWAY_NOTIFICATION_CENTER_WIDGETS_IS_PULSE_DEVICE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SWAY_NOTIFICATION_CENTER_WIDGETS_TYPE_PULSE_DEVICE))
#define SWAY_NOTIFICATION_CENTER_WIDGETS_PULSE_DEVICE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SWAY_NOTIFICATION_CENTER_WIDGETS_TYPE_PULSE_DEVICE, SwayNotificationCenterWidgetsPulseDeviceClass))

typedef struct _SwayNotificationCenterWidgetsPulseDevice SwayNotificationCenterWidgetsPulseDevice;
typedef struct _SwayNotificationCenterWidgetsPulseDeviceClass SwayNotificationCenterWidgetsPulseDeviceClass;

#define SWAY_NOTIFICATION_CENTER_WIDGETS_TYPE_PULSE_DAEMON (sway_notification_center_widgets_pulse_daemon_get_type ())
#define SWAY_NOTIFICATION_CENTER_WIDGETS_PULSE_DAEMON(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SWAY_NOTIFICATION_CENTER_WIDGETS_TYPE_PULSE_DAEMON, SwayNotificationCenterWidgetsPulseDaemon))
#define SWAY_NOTIFICATION_CENTER_WIDGETS_PULSE_DAEMON_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SWAY_NOTIFICATION_CENTER_WIDGETS_TYPE_PULSE_DAEMON, SwayNotificationCenterWidgetsPulseDaemonClass))
#define SWAY_NOTIFICATION_CENTER_WIDGETS_IS_PULSE_DAEMON(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SWAY_NOTIFICATION_CENTER_WIDGETS_TYPE_PULSE_DAEMON))
#define SWAY_NOTIFICATION_CENTER_WIDGETS_IS_PULSE_DAEMON_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SWAY_NOTIFICATION_CENTER_WIDGETS_TYPE_PULSE_DAEMON))
#define SWAY_NOTIFICATION_CENTER_WIDGETS_PULSE_DAEMON_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SWAY_NOTIFICATION_CENTER_WIDGETS_TYPE_PULSE_DAEMON, SwayNotificationCenterWidgetsPulseDaemonClass))

typedef struct _SwayNotificationCenterWidgetsPulseDaemon SwayNotificationCenterWidgetsPulseDaemon;
typedef struct _SwayNotificationCenterWidgetsPulseDaemonClass SwayNotificationCenterWidgetsPulseDaemonClass;
enum  {
	SWAY_NOTIFICATION_CENTER_WIDGETS_VOLUME_0_PROPERTY,
	SWAY_NOTIFICATION_CENTER_WIDGETS_VOLUME_WIDGET_NAME_PROPERTY,
	SWAY_NOTIFICATION_CENTER_WIDGETS_VOLUME_NUM_PROPERTIES
};
static GParamSpec* sway_notification_center_widgets_volume_properties[SWAY_NOTIFICATION_CENTER_WIDGETS_VOLUME_NUM_PROPERTIES];
#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
#define _g_free0(var) (var = (g_free (var), NULL))

#define SWAY_NOTIFICATION_CENTER_WIDGETS_TYPE_PULSE_SINK_INPUT (sway_notification_center_widgets_pulse_sink_input_get_type ())
#define SWAY_NOTIFICATION_CENTER_WIDGETS_PULSE_SINK_INPUT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SWAY_NOTIFICATION_CENTER_WIDGETS_TYPE_PULSE_SINK_INPUT, SwayNotificationCenterWidgetsPulseSinkInput))
#define SWAY_NOTIFICATION_CENTER_WIDGETS_PULSE_SINK_INPUT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SWAY_NOTIFICATION_CENTER_WIDGETS_TYPE_PULSE_SINK_INPUT, SwayNotificationCenterWidgetsPulseSinkInputClass))
#define SWAY_NOTIFICATION_CENTER_WIDGETS_IS_PULSE_SINK_INPUT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SWAY_NOTIFICATION_CENTER_WIDGETS_TYPE_PULSE_SINK_INPUT))
#define SWAY_NOTIFICATION_CENTER_WIDGETS_IS_PULSE_SINK_INPUT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SWAY_NOTIFICATION_CENTER_WIDGETS_TYPE_PULSE_SINK_INPUT))
#define SWAY_NOTIFICATION_CENTER_WIDGETS_PULSE_SINK_INPUT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SWAY_NOTIFICATION_CENTER_WIDGETS_TYPE_PULSE_SINK_INPUT, SwayNotificationCenterWidgetsPulseSinkInputClass))

typedef struct _SwayNotificationCenterWidgetsPulseSinkInput SwayNotificationCenterWidgetsPulseSinkInput;
typedef struct _SwayNotificationCenterWidgetsPulseSinkInputClass SwayNotificationCenterWidgetsPulseSinkInputClass;

#define SWAY_NOTIFICATION_CENTER_WIDGETS_TYPE_SINK_INPUT_ROW (sway_notification_center_widgets_sink_input_row_get_type ())
#define SWAY_NOTIFICATION_CENTER_WIDGETS_SINK_INPUT_ROW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SWAY_NOTIFICATION_CENTER_WIDGETS_TYPE_SINK_INPUT_ROW, SwayNotificationCenterWidgetsSinkInputRow))
#define SWAY_NOTIFICATION_CENTER_WIDGETS_SINK_INPUT_ROW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SWAY_NOTIFICATION_CENTER_WIDGETS_TYPE_SINK_INPUT_ROW, SwayNotificationCenterWidgetsSinkInputRowClass))
#define SWAY_NOTIFICATION_CENTER_WIDGETS_IS_SINK_INPUT_ROW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SWAY_NOTIFICATION_CENTER_WIDGETS_TYPE_SINK_INPUT_ROW))
#define SWAY_NOTIFICATION_CENTER_WIDGETS_IS_SINK_INPUT_ROW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SWAY_NOTIFICATION_CENTER_WIDGETS_TYPE_SINK_INPUT_ROW))
#define SWAY_NOTIFICATION_CENTER_WIDGETS_SINK_INPUT_ROW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SWAY_NOTIFICATION_CENTER_WIDGETS_TYPE_SINK_INPUT_ROW, SwayNotificationCenterWidgetsSinkInputRowClass))

typedef struct _SwayNotificationCenterWidgetsSinkInputRow SwayNotificationCenterWidgetsSinkInputRow;
typedef struct _SwayNotificationCenterWidgetsSinkInputRowClass SwayNotificationCenterWidgetsSinkInputRowClass;
#define _json_object_unref0(var) ((var == NULL) ? NULL : (var = (json_object_unref (var), NULL)))
typedef struct _SwayNotificationCenterWidgetsSinkInputRowPrivate SwayNotificationCenterWidgetsSinkInputRowPrivate;

struct _SwayNotificationCenterWidgetsBaseWidget {
	GtkBox parent_instance;
	SwayNotificationCenterWidgetsBaseWidgetPrivate * priv;
};

struct _SwayNotificationCenterWidgetsBaseWidgetClass {
	GtkBoxClass parent_class;
	void (*on_cc_visibility_change) (SwayNotificationCenterWidgetsBaseWidget* self, gboolean value);
	const gchar* (*get_widget_name) (SwayNotificationCenterWidgetsBaseWidget* self);
};

struct _SwayNotificationCenterWidgetsVolume {
	SwayNotificationCenterWidgetsBaseWidget parent_instance;
	SwayNotificationCenterWidgetsVolumePrivate * priv;
};

struct _SwayNotificationCenterWidgetsVolumeClass {
	SwayNotificationCenterWidgetsBaseWidgetClass parent_class;
};

struct _SwayNotificationCenterWidgetsVolumePrivate {
	GtkBox* main_volume_slider_container;
	GtkLabel* label_widget;
	GtkScale* slider;
	GtkListBox* levels_listbox;
	IterListBoxController* list_box_controller;
	GtkToggleButton* reveal_button;
	GtkRevealer* revealer;
	GtkLabel* no_sink_inputs_label;
	gchar* empty_label;
	gchar* expand_label;
	gchar* collapse_label;
	gint icon_size G_GNUC_DEPRECATED ;
	GtkRevealerTransitionType revealer_type;
	gint revealer_duration;
	SwayNotificationCenterWidgetsPulseDevice* default_sink;
	SwayNotificationCenterWidgetsPulseDaemon* client;
	gboolean show_per_app;
	gboolean show_per_app_icon;
	gboolean show_per_app_label;
	gboolean expand_per_app;
};

struct _SwayNotificationCenterWidgetsSinkInputRow {
	GtkListBoxRow parent_instance;
	SwayNotificationCenterWidgetsSinkInputRowPrivate * priv;
	SwayNotificationCenterWidgetsPulseSinkInput* sink_input;
};

struct _SwayNotificationCenterWidgetsSinkInputRowClass {
	GtkListBoxRowClass parent_class;
};

static gint SwayNotificationCenterWidgetsVolume_private_offset;
static gpointer sway_notification_center_widgets_volume_parent_class = NULL;

VALA_EXTERN GType sway_notification_center_widgets_base_widget_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (SwayNotificationCenterWidgetsBaseWidget, g_object_unref)
VALA_EXTERN GType sway_notification_center_widgets_volume_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (SwayNotificationCenterWidgetsVolume, g_object_unref)
VALA_EXTERN GType iter_list_box_controller_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (IterListBoxController, g_object_unref)
VALA_EXTERN GType sway_notification_center_widgets_pulse_device_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (SwayNotificationCenterWidgetsPulseDevice, g_object_unref)
VALA_EXTERN GType sway_notification_center_widgets_pulse_daemon_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (SwayNotificationCenterWidgetsPulseDaemon, g_object_unref)
VALA_EXTERN void sway_notification_center_widgets_base_widget_on_cc_visibility_change (SwayNotificationCenterWidgetsBaseWidget* self,
                                                                           gboolean value);
VALA_EXTERN const gchar* sway_notification_center_widgets_base_widget_get_widget_name (SwayNotificationCenterWidgetsBaseWidget* self);
VALA_EXTERN SwayNotificationCenterWidgetsPulseDaemon* sway_notification_center_widgets_pulse_daemon_new (void);
VALA_EXTERN SwayNotificationCenterWidgetsPulseDaemon* sway_notification_center_widgets_pulse_daemon_construct (GType object_type);
VALA_EXTERN SwayNotificationCenterWidgetsVolume* sway_notification_center_widgets_volume_new (const gchar* suffix);
VALA_EXTERN SwayNotificationCenterWidgetsVolume* sway_notification_center_widgets_volume_construct (GType object_type,
                                                                                        const gchar* suffix);
VALA_EXTERN SwayNotificationCenterWidgetsBaseWidget* sway_notification_center_widgets_base_widget_construct (GType object_type,
                                                                                                 const gchar* suffix);
VALA_EXTERN JsonObject* sway_notification_center_widgets_base_widget_get_config (SwayNotificationCenterWidgetsBaseWidget* self,
                                                                     GtkWidget* widget);
VALA_EXTERN gpointer sway_notification_center_widgets_base_widget_get_prop (SwayNotificationCenterWidgetsBaseWidget* self,
                                                                GType t_type,
                                                                GBoxedCopyFunc t_dup_func,
                                                                GDestroyNotify t_destroy_func,
                                                                JsonObject* config,
                                                                const gchar* value_key,
                                                                gboolean* found);
static gboolean* _bool_dup (gboolean* self);
VALA_EXTERN IterListBoxController* iter_list_box_controller_new (GtkListBox* list_box);
VALA_EXTERN IterListBoxController* iter_list_box_controller_construct (GType object_type,
                                                           GtkListBox* list_box);
VALA_EXTERN GType sway_notification_center_widgets_pulse_sink_input_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (SwayNotificationCenterWidgetsPulseSinkInput, g_object_unref)
VALA_EXTERN GeeHashMap* sway_notification_center_widgets_pulse_daemon_get_active_sinks (SwayNotificationCenterWidgetsPulseDaemon* self);
VALA_EXTERN void iter_list_box_controller_append (IterListBoxController* self,
                                      GtkWidget* child);
VALA_EXTERN GType sway_notification_center_widgets_sink_input_row_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (SwayNotificationCenterWidgetsSinkInputRow, g_object_unref)
VALA_EXTERN SwayNotificationCenterWidgetsSinkInputRow* sway_notification_center_widgets_sink_input_row_new (SwayNotificationCenterWidgetsPulseSinkInput* sink_input,
                                                                                                SwayNotificationCenterWidgetsPulseDaemon* client,
                                                                                                gint icon_size,
                                                                                                gboolean show_per_app_icon,
                                                                                                gboolean show_per_app_label);
VALA_EXTERN SwayNotificationCenterWidgetsSinkInputRow* sway_notification_center_widgets_sink_input_row_construct (GType object_type,
                                                                                                      SwayNotificationCenterWidgetsPulseSinkInput* sink_input,
                                                                                                      SwayNotificationCenterWidgetsPulseDaemon* client,
                                                                                                      gint icon_size,
                                                                                                      gboolean show_per_app_icon,
                                                                                                      gboolean show_per_app_label);
static void sway_notification_center_widgets_volume_active_sink_change (SwayNotificationCenterWidgetsVolume* self,
                                                                 SwayNotificationCenterWidgetsPulseSinkInput* sink);
static void _sway_notification_center_widgets_volume_active_sink_change_sway_notification_center_widgets_pulse_daemon_change_active_sink (SwayNotificationCenterWidgetsPulseDaemon* _sender,
                                                                                                                                   SwayNotificationCenterWidgetsPulseSinkInput* device,
                                                                                                                                   gpointer self);
static void sway_notification_center_widgets_volume_active_sink_added (SwayNotificationCenterWidgetsVolume* self,
                                                                SwayNotificationCenterWidgetsPulseSinkInput* sink);
static void _sway_notification_center_widgets_volume_active_sink_added_sway_notification_center_widgets_pulse_daemon_new_active_sink (SwayNotificationCenterWidgetsPulseDaemon* _sender,
                                                                                                                               SwayNotificationCenterWidgetsPulseSinkInput* device,
                                                                                                                               gpointer self);
static void sway_notification_center_widgets_volume_active_sink_removed (SwayNotificationCenterWidgetsVolume* self,
                                                                  SwayNotificationCenterWidgetsPulseSinkInput* sink);
static void _sway_notification_center_widgets_volume_active_sink_removed_sway_notification_center_widgets_pulse_daemon_remove_active_sink (SwayNotificationCenterWidgetsPulseDaemon* _sender,
                                                                                                                                    SwayNotificationCenterWidgetsPulseSinkInput* device,
                                                                                                                                    gpointer self);
static void sway_notification_center_widgets_volume_set_button_icon (SwayNotificationCenterWidgetsVolume* self);
static void ___lambda83_ (SwayNotificationCenterWidgetsVolume* self);
static void ____lambda83__gtk_toggle_button_toggled (GtkToggleButton* _sender,
                                              gpointer self);
static void sway_notification_center_widgets_volume_real_on_cc_visibility_change (SwayNotificationCenterWidgetsBaseWidget* base,
                                                                           gboolean val);
VALA_EXTERN void sway_notification_center_widgets_pulse_daemon_start (SwayNotificationCenterWidgetsPulseDaemon* self);
VALA_EXTERN void sway_notification_center_widgets_pulse_daemon_close (SwayNotificationCenterWidgetsPulseDaemon* self);
static void sway_notification_center_widgets_volume_default_device_changed (SwayNotificationCenterWidgetsVolume* self,
                                                                     SwayNotificationCenterWidgetsPulseDevice* device);
VALA_EXTERN pa_direction_t sway_notification_center_widgets_pulse_device_get_direction (SwayNotificationCenterWidgetsPulseDevice* self);
VALA_EXTERN gdouble sway_notification_center_widgets_pulse_device_get_volume (SwayNotificationCenterWidgetsPulseDevice* self);
VALA_EXTERN GList* iter_list_box_controller_get_children (IterListBoxController* self);
VALA_EXTERN gboolean sway_notification_center_widgets_pulse_sink_input_cmp (SwayNotificationCenterWidgetsPulseSinkInput* self,
                                                                SwayNotificationCenterWidgetsPulseSinkInput* sink_input);
VALA_EXTERN void sway_notification_center_widgets_sink_input_row_update (SwayNotificationCenterWidgetsSinkInputRow* self,
                                                             SwayNotificationCenterWidgetsPulseSinkInput* sink_input);
VALA_EXTERN void iter_list_box_controller_remove (IterListBoxController* self,
                                      GtkWidget* child);
static GObject * sway_notification_center_widgets_volume_constructor (GType type,
                                                               guint n_construct_properties,
                                                               GObjectConstructParam * construct_properties);
static void _sway_notification_center_widgets_volume_default_device_changed_sway_notification_center_widgets_pulse_daemon_change_default_device (SwayNotificationCenterWidgetsPulseDaemon* _sender,
                                                                                                                                          SwayNotificationCenterWidgetsPulseDevice* device,
                                                                                                                                          gpointer self);
static void _sway_notification_center_widgets_volume___lambda84_ (SwayNotificationCenterWidgetsVolume* self);
VALA_EXTERN void sway_notification_center_widgets_pulse_daemon_set_device_volume (SwayNotificationCenterWidgetsPulseDaemon* self,
                                                                      SwayNotificationCenterWidgetsPulseDevice* device,
                                                                      gdouble volume);
static void __sway_notification_center_widgets_volume___lambda84__gtk_range_value_changed (GtkRange* _sender,
                                                                                    gpointer self);
static void sway_notification_center_widgets_volume_finalize (GObject * obj);
static GType sway_notification_center_widgets_volume_get_type_once (void);
static void _vala_sway_notification_center_widgets_volume_get_property (GObject * object,
                                                                 guint property_id,
                                                                 GValue * value,
                                                                 GParamSpec * pspec);

static inline gpointer
sway_notification_center_widgets_volume_get_instance_private (SwayNotificationCenterWidgetsVolume* self)
{
	return G_STRUCT_MEMBER_P (self, SwayNotificationCenterWidgetsVolume_private_offset);
}

static gboolean*
_bool_dup (gboolean* self)
{
	gboolean* dup;
	dup = g_new0 (gboolean, 1);
	memcpy (dup, self, sizeof (gboolean));
	return dup;
}

static gpointer
__bool_dup0 (gpointer self)
{
	return self ? _bool_dup (self) : NULL;
}

static void
_sway_notification_center_widgets_volume_active_sink_change_sway_notification_center_widgets_pulse_daemon_change_active_sink (SwayNotificationCenterWidgetsPulseDaemon* _sender,
                                                                                                                              SwayNotificationCenterWidgetsPulseSinkInput* device,
                                                                                                                              gpointer self)
{
	sway_notification_center_widgets_volume_active_sink_change ((SwayNotificationCenterWidgetsVolume*) self, device);
}

static void
_sway_notification_center_widgets_volume_active_sink_added_sway_notification_center_widgets_pulse_daemon_new_active_sink (SwayNotificationCenterWidgetsPulseDaemon* _sender,
                                                                                                                          SwayNotificationCenterWidgetsPulseSinkInput* device,
                                                                                                                          gpointer self)
{
	sway_notification_center_widgets_volume_active_sink_added ((SwayNotificationCenterWidgetsVolume*) self, device);
}

static void
_sway_notification_center_widgets_volume_active_sink_removed_sway_notification_center_widgets_pulse_daemon_remove_active_sink (SwayNotificationCenterWidgetsPulseDaemon* _sender,
                                                                                                                               SwayNotificationCenterWidgetsPulseSinkInput* device,
                                                                                                                               gpointer self)
{
	sway_notification_center_widgets_volume_active_sink_removed ((SwayNotificationCenterWidgetsVolume*) self, device);
}

static void
___lambda83_ (SwayNotificationCenterWidgetsVolume* self)
{
	GtkRevealer* _tmp0_;
	GtkToggleButton* _tmp1_;
	gboolean _tmp2_;
	gboolean _tmp3_;
	sway_notification_center_widgets_volume_set_button_icon (self);
	_tmp0_ = self->priv->revealer;
	_tmp1_ = self->priv->reveal_button;
	_tmp2_ = gtk_toggle_button_get_active (_tmp1_);
	_tmp3_ = _tmp2_;
	gtk_revealer_set_reveal_child (_tmp0_, _tmp3_);
}

static void
____lambda83__gtk_toggle_button_toggled (GtkToggleButton* _sender,
                                         gpointer self)
{
	___lambda83_ ((SwayNotificationCenterWidgetsVolume*) self);
}

SwayNotificationCenterWidgetsVolume*
sway_notification_center_widgets_volume_construct (GType object_type,
                                                   const gchar* suffix)
{
	SwayNotificationCenterWidgetsVolume * self = NULL;
	JsonObject* config = NULL;
	JsonObject* _tmp0_;
	JsonObject* _tmp1_;
	GtkScale* _tmp57_;
	GtkScale* _tmp58_;
	GtkBox* _tmp59_;
	GtkLabel* _tmp60_;
	GtkBox* _tmp61_;
	GtkScale* _tmp62_;
	GtkBox* _tmp63_;
	g_return_val_if_fail (suffix != NULL, NULL);
	self = (SwayNotificationCenterWidgetsVolume*) sway_notification_center_widgets_base_widget_construct (object_type, suffix);
	_tmp0_ = sway_notification_center_widgets_base_widget_get_config (G_TYPE_CHECK_INSTANCE_CAST (self, SWAY_NOTIFICATION_CENTER_WIDGETS_TYPE_BASE_WIDGET, SwayNotificationCenterWidgetsBaseWidget), G_TYPE_CHECK_INSTANCE_CAST (self, gtk_widget_get_type (), GtkWidget));
	config = _tmp0_;
	_tmp1_ = config;
	if (_tmp1_ != NULL) {
		gchar* label = NULL;
		JsonObject* _tmp2_;
		gpointer _tmp3_;
		const gchar* _tmp4_ = NULL;
		const gchar* _tmp5_;
		GtkLabel* _tmp6_;
		gboolean show_per_app_found = FALSE;
		gboolean* show_per_app = NULL;
		JsonObject* _tmp7_;
		gboolean _tmp8_ = FALSE;
		gpointer _tmp9_;
		gboolean _tmp10_;
		gboolean* _tmp11_;
		gboolean show_per_app_icon_found = FALSE;
		gboolean* show_per_app_icon = NULL;
		JsonObject* _tmp13_;
		gboolean _tmp14_ = FALSE;
		gpointer _tmp15_;
		gboolean _tmp16_;
		gboolean* _tmp17_;
		gboolean show_per_app_label_found = FALSE;
		gboolean* show_per_app_label = NULL;
		JsonObject* _tmp19_;
		gboolean _tmp20_ = FALSE;
		gpointer _tmp21_;
		gboolean _tmp22_;
		gboolean* _tmp23_;
		gboolean expand_per_app_found = FALSE;
		gboolean* expand_per_app = NULL;
		JsonObject* _tmp25_;
		gboolean _tmp26_ = FALSE;
		gpointer _tmp27_;
		gboolean _tmp28_;
		gboolean* _tmp29_;
		gchar* el = NULL;
		JsonObject* _tmp31_;
		gpointer _tmp32_;
		const gchar* _tmp33_;
		gchar* l1 = NULL;
		JsonObject* _tmp36_;
		gpointer _tmp37_;
		const gchar* _tmp38_;
		gchar* l2 = NULL;
		JsonObject* _tmp41_;
		gpointer _tmp42_;
		const gchar* _tmp43_;
		gint i = 0;
		JsonObject* _tmp46_;
		gpointer _tmp47_;
		JsonObject* _tmp48_;
		gpointer _tmp49_;
		gchar* animation_type = NULL;
		JsonObject* _tmp50_;
		gpointer _tmp51_;
		const gchar* _tmp52_;
		_tmp2_ = config;
		_tmp3_ = sway_notification_center_widgets_base_widget_get_prop (G_TYPE_CHECK_INSTANCE_CAST (self, SWAY_NOTIFICATION_CENTER_WIDGETS_TYPE_BASE_WIDGET, SwayNotificationCenterWidgetsBaseWidget), G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) g_free, _tmp2_, "label", NULL);
		label = (gchar*) _tmp3_;
		_tmp5_ = label;
		_tmp4_ = _tmp5_;
		if (_tmp4_ == NULL) {
			_tmp4_ = "Volume";
		}
		_tmp6_ = self->priv->label_widget;
		gtk_label_set_label (_tmp6_, _tmp4_);
		_tmp7_ = config;
		_tmp9_ = sway_notification_center_widgets_base_widget_get_prop (G_TYPE_CHECK_INSTANCE_CAST (self, SWAY_NOTIFICATION_CENTER_WIDGETS_TYPE_BASE_WIDGET, SwayNotificationCenterWidgetsBaseWidget), G_TYPE_BOOLEAN, NULL, NULL, _tmp7_, "show-per-app", &_tmp8_);
		show_per_app_found = _tmp8_;
		_tmp10_ = (gboolean) ((gintptr) _tmp9_);
		_tmp11_ = __bool_dup0 (&_tmp10_);
		show_per_app = _tmp11_;
		if (show_per_app_found) {
			gboolean* _tmp12_;
			_tmp12_ = show_per_app;
			self->priv->show_per_app = *_tmp12_;
		}
		_tmp13_ = config;
		_tmp15_ = sway_notification_center_widgets_base_widget_get_prop (G_TYPE_CHECK_INSTANCE_CAST (self, SWAY_NOTIFICATION_CENTER_WIDGETS_TYPE_BASE_WIDGET, SwayNotificationCenterWidgetsBaseWidget), G_TYPE_BOOLEAN, NULL, NULL, _tmp13_, "show-per-app-icon", &_tmp14_);
		show_per_app_icon_found = _tmp14_;
		_tmp16_ = (gboolean) ((gintptr) _tmp15_);
		_tmp17_ = __bool_dup0 (&_tmp16_);
		show_per_app_icon = _tmp17_;
		if (show_per_app_icon_found) {
			gboolean* _tmp18_;
			_tmp18_ = show_per_app_icon;
			self->priv->show_per_app_icon = *_tmp18_;
		}
		_tmp19_ = config;
		_tmp21_ = sway_notification_center_widgets_base_widget_get_prop (G_TYPE_CHECK_INSTANCE_CAST (self, SWAY_NOTIFICATION_CENTER_WIDGETS_TYPE_BASE_WIDGET, SwayNotificationCenterWidgetsBaseWidget), G_TYPE_BOOLEAN, NULL, NULL, _tmp19_, "show-per-app-label", &_tmp20_);
		show_per_app_label_found = _tmp20_;
		_tmp22_ = (gboolean) ((gintptr) _tmp21_);
		_tmp23_ = __bool_dup0 (&_tmp22_);
		show_per_app_label = _tmp23_;
		if (show_per_app_label_found) {
			gboolean* _tmp24_;
			_tmp24_ = show_per_app_label;
			self->priv->show_per_app_label = *_tmp24_;
		}
		_tmp25_ = config;
		_tmp27_ = sway_notification_center_widgets_base_widget_get_prop (G_TYPE_CHECK_INSTANCE_CAST (self, SWAY_NOTIFICATION_CENTER_WIDGETS_TYPE_BASE_WIDGET, SwayNotificationCenterWidgetsBaseWidget), G_TYPE_BOOLEAN, NULL, NULL, _tmp25_, "expand-per-app", &_tmp26_);
		expand_per_app_found = _tmp26_;
		_tmp28_ = (gboolean) ((gintptr) _tmp27_);
		_tmp29_ = __bool_dup0 (&_tmp28_);
		expand_per_app = _tmp29_;
		if (expand_per_app_found) {
			gboolean* _tmp30_;
			_tmp30_ = expand_per_app;
			self->priv->expand_per_app = *_tmp30_;
		}
		_tmp31_ = config;
		_tmp32_ = sway_notification_center_widgets_base_widget_get_prop (G_TYPE_CHECK_INSTANCE_CAST (self, SWAY_NOTIFICATION_CENTER_WIDGETS_TYPE_BASE_WIDGET, SwayNotificationCenterWidgetsBaseWidget), G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) g_free, _tmp31_, "empty-list-label", NULL);
		el = (gchar*) _tmp32_;
		_tmp33_ = el;
		if (_tmp33_ != NULL) {
			const gchar* _tmp34_;
			gchar* _tmp35_;
			_tmp34_ = el;
			_tmp35_ = g_strdup (_tmp34_);
			_g_free0 (self->priv->empty_label);
			self->priv->empty_label = _tmp35_;
		}
		_tmp36_ = config;
		_tmp37_ = sway_notification_center_widgets_base_widget_get_prop (G_TYPE_CHECK_INSTANCE_CAST (self, SWAY_NOTIFICATION_CENTER_WIDGETS_TYPE_BASE_WIDGET, SwayNotificationCenterWidgetsBaseWidget), G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) g_free, _tmp36_, "expand-button-label", NULL);
		l1 = (gchar*) _tmp37_;
		_tmp38_ = l1;
		if (_tmp38_ != NULL) {
			const gchar* _tmp39_;
			gchar* _tmp40_;
			_tmp39_ = l1;
			_tmp40_ = g_strdup (_tmp39_);
			_g_free0 (self->priv->expand_label);
			self->priv->expand_label = _tmp40_;
		}
		_tmp41_ = config;
		_tmp42_ = sway_notification_center_widgets_base_widget_get_prop (G_TYPE_CHECK_INSTANCE_CAST (self, SWAY_NOTIFICATION_CENTER_WIDGETS_TYPE_BASE_WIDGET, SwayNotificationCenterWidgetsBaseWidget), G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) g_free, _tmp41_, "collapse-button-label", NULL);
		l2 = (gchar*) _tmp42_;
		_tmp43_ = l2;
		if (_tmp43_ != NULL) {
			const gchar* _tmp44_;
			gchar* _tmp45_;
			_tmp44_ = l2;
			_tmp45_ = g_strdup (_tmp44_);
			_g_free0 (self->priv->collapse_label);
			self->priv->collapse_label = _tmp45_;
		}
		_tmp46_ = config;
		_tmp47_ = sway_notification_center_widgets_base_widget_get_prop (G_TYPE_CHECK_INSTANCE_CAST (self, SWAY_NOTIFICATION_CENTER_WIDGETS_TYPE_BASE_WIDGET, SwayNotificationCenterWidgetsBaseWidget), G_TYPE_INT, NULL, NULL, _tmp46_, "icon-size", NULL);
		i = MAX ((gint) ((gintptr) _tmp47_), 0);
		if (i != 0) {
			self->priv->icon_size = i;
		}
		_tmp48_ = config;
		_tmp49_ = sway_notification_center_widgets_base_widget_get_prop (G_TYPE_CHECK_INSTANCE_CAST (self, SWAY_NOTIFICATION_CENTER_WIDGETS_TYPE_BASE_WIDGET, SwayNotificationCenterWidgetsBaseWidget), G_TYPE_INT, NULL, NULL, _tmp48_, "animation-duration", NULL);
		self->priv->revealer_duration = MAX (0, (gint) ((gintptr) _tmp49_));
		if (self->priv->revealer_duration == 0) {
			self->priv->revealer_duration = 250;
		}
		_tmp50_ = config;
		_tmp51_ = sway_notification_center_widgets_base_widget_get_prop (G_TYPE_CHECK_INSTANCE_CAST (self, SWAY_NOTIFICATION_CENTER_WIDGETS_TYPE_BASE_WIDGET, SwayNotificationCenterWidgetsBaseWidget), G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) g_free, _tmp50_, "animation-type", NULL);
		animation_type = (gchar*) _tmp51_;
		_tmp52_ = animation_type;
		if (_tmp52_ != NULL) {
			const gchar* _tmp53_;
			const gchar* _tmp54_;
			GQuark _tmp56_ = 0U;
			static GQuark _tmp55_label0 = 0;
			static GQuark _tmp55_label1 = 0;
			_tmp53_ = animation_type;
			_tmp54_ = _tmp53_;
			_tmp56_ = (NULL == _tmp54_) ? 0 : g_quark_from_string (_tmp54_);
			if (_tmp56_ == ((0 != _tmp55_label0) ? _tmp55_label0 : (_tmp55_label0 = g_quark_from_static_string ("slide_up")))) {
				switch (0) {
					default:
					{
						self->priv->revealer_type = GTK_REVEALER_TRANSITION_TYPE_SLIDE_UP;
						break;
					}
				}
			} else if (_tmp56_ == ((0 != _tmp55_label1) ? _tmp55_label1 : (_tmp55_label1 = g_quark_from_static_string ("slide_down")))) {
				switch (0) {
					default:
					{
						self->priv->revealer_type = GTK_REVEALER_TRANSITION_TYPE_SLIDE_DOWN;
						break;
					}
				}
			} else {
				switch (0) {
					default:
					{
						self->priv->revealer_type = GTK_REVEALER_TRANSITION_TYPE_NONE;
						break;
					}
				}
			}
		}
		_g_free0 (animation_type);
		_g_free0 (l2);
		_g_free0 (l1);
		_g_free0 (el);
		_g_free0 (expand_per_app);
		_g_free0 (show_per_app_label);
		_g_free0 (show_per_app_icon);
		_g_free0 (show_per_app);
		_g_free0 (label);
	}
	gtk_orientable_set_orientation (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_orientable_get_type (), GtkOrientable), GTK_ORIENTATION_VERTICAL);
	_tmp57_ = self->priv->slider;
	gtk_scale_set_draw_value (_tmp57_, FALSE);
	_tmp58_ = self->priv->slider;
	gtk_widget_set_hexpand (G_TYPE_CHECK_INSTANCE_CAST (_tmp58_, gtk_widget_get_type (), GtkWidget), TRUE);
	_tmp59_ = self->priv->main_volume_slider_container;
	_tmp60_ = self->priv->label_widget;
	gtk_box_append (_tmp59_, G_TYPE_CHECK_INSTANCE_CAST (_tmp60_, gtk_widget_get_type (), GtkWidget));
	_tmp61_ = self->priv->main_volume_slider_container;
	_tmp62_ = self->priv->slider;
	gtk_box_append (_tmp61_, G_TYPE_CHECK_INSTANCE_CAST (_tmp62_, gtk_widget_get_type (), GtkWidget));
	_tmp63_ = self->priv->main_volume_slider_container;
	gtk_box_append (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_box_get_type (), GtkBox), G_TYPE_CHECK_INSTANCE_CAST (_tmp63_, gtk_widget_get_type (), GtkWidget));
	if (self->priv->show_per_app) {
		GtkRevealer* _tmp64_;
		GtkRevealer* _tmp65_;
		GtkRevealer* _tmp66_;
		GtkListBox* _tmp67_;
		GtkListBox* _tmp68_;
		GtkListBox* _tmp69_;
		GtkListBox* _tmp70_;
		GtkRevealer* _tmp71_;
		GtkListBox* _tmp72_;
		GtkListBox* _tmp73_;
		IterListBoxController* _tmp74_;
		SwayNotificationCenterWidgetsPulseDaemon* _tmp75_;
		GeeHashMap* _tmp76_;
		GeeHashMap* _tmp77_;
		gint _tmp78_;
		gint _tmp79_;
		SwayNotificationCenterWidgetsPulseDaemon* _tmp100_;
		SwayNotificationCenterWidgetsPulseDaemon* _tmp101_;
		SwayNotificationCenterWidgetsPulseDaemon* _tmp102_;
		GtkToggleButton* _tmp103_;
		GtkToggleButton* _tmp104_;
		GtkRevealer* _tmp105_;
		GtkToggleButton* _tmp106_;
		GtkBox* _tmp107_;
		GtkToggleButton* _tmp108_;
		GtkRevealer* _tmp109_;
		_tmp64_ = (GtkRevealer*) gtk_revealer_new ();
		if (_tmp64_) {
			g_object_set_data ((GObject *) _tmp64_, "vala-creation-function", "SwayNotificationCenter.Widgets.Volume.new");
		}
		g_object_ref_sink (_tmp64_);
		_g_object_unref0 (self->priv->revealer);
		self->priv->revealer = _tmp64_;
		_tmp65_ = self->priv->revealer;
		gtk_revealer_set_transition_type (_tmp65_, self->priv->revealer_type);
		_tmp66_ = self->priv->revealer;
		gtk_revealer_set_transition_duration (_tmp66_, (guint) self->priv->revealer_duration);
		_tmp67_ = (GtkListBox*) gtk_list_box_new ();
		if (_tmp67_) {
			g_object_set_data ((GObject *) _tmp67_, "vala-creation-function", "SwayNotificationCenter.Widgets.Volume.new");
		}
		g_object_ref_sink (_tmp67_);
		_g_object_unref0 (self->priv->levels_listbox);
		self->priv->levels_listbox = _tmp67_;
		_tmp68_ = self->priv->levels_listbox;
		gtk_widget_add_css_class (G_TYPE_CHECK_INSTANCE_CAST (_tmp68_, gtk_widget_get_type (), GtkWidget), "per-app-volume");
		_tmp69_ = self->priv->levels_listbox;
		gtk_list_box_set_activate_on_single_click (_tmp69_, TRUE);
		_tmp70_ = self->priv->levels_listbox;
		gtk_list_box_set_selection_mode (_tmp70_, GTK_SELECTION_NONE);
		_tmp71_ = self->priv->revealer;
		_tmp72_ = self->priv->levels_listbox;
		gtk_revealer_set_child (_tmp71_, G_TYPE_CHECK_INSTANCE_CAST (_tmp72_, gtk_widget_get_type (), GtkWidget));
		_tmp73_ = self->priv->levels_listbox;
		_tmp74_ = iter_list_box_controller_new (_tmp73_);
		if (_tmp74_) {
			g_object_set_data ((GObject *) _tmp74_, "vala-creation-function", "SwayNotificationCenter.Widgets.Volume.new");
		}
		_g_object_unref0 (self->priv->list_box_controller);
		self->priv->list_box_controller = _tmp74_;
		_tmp75_ = self->priv->client;
		_tmp76_ = sway_notification_center_widgets_pulse_daemon_get_active_sinks (_tmp75_);
		_tmp77_ = _tmp76_;
		_tmp78_ = gee_abstract_map_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp77_, GEE_TYPE_ABSTRACT_MAP, GeeAbstractMap));
		_tmp79_ = _tmp78_;
		if (_tmp79_ == 0) {
			const gchar* _tmp80_;
			GtkLabel* _tmp81_;
			IterListBoxController* _tmp82_;
			GtkLabel* _tmp83_;
			_tmp80_ = self->priv->empty_label;
			_tmp81_ = (GtkLabel*) gtk_label_new (_tmp80_);
			if (_tmp81_) {
				g_object_set_data ((GObject *) _tmp81_, "vala-creation-function", "SwayNotificationCenter.Widgets.Volume.new");
			}
			g_object_ref_sink (_tmp81_);
			_g_object_unref0 (self->priv->no_sink_inputs_label);
			self->priv->no_sink_inputs_label = _tmp81_;
			_tmp82_ = self->priv->list_box_controller;
			_tmp83_ = self->priv->no_sink_inputs_label;
			iter_list_box_controller_append (_tmp82_, G_TYPE_CHECK_INSTANCE_CAST (_tmp83_, gtk_widget_get_type (), GtkWidget));
		}
		{
			GeeIterator* _item_it = NULL;
			SwayNotificationCenterWidgetsPulseDaemon* _tmp84_;
			GeeHashMap* _tmp85_;
			GeeHashMap* _tmp86_;
			GeeCollection* _tmp87_;
			GeeCollection* _tmp88_;
			GeeCollection* _tmp89_;
			GeeIterator* _tmp90_;
			GeeIterator* _tmp91_;
			_tmp84_ = self->priv->client;
			_tmp85_ = sway_notification_center_widgets_pulse_daemon_get_active_sinks (_tmp84_);
			_tmp86_ = _tmp85_;
			_tmp87_ = gee_abstract_map_get_values (G_TYPE_CHECK_INSTANCE_CAST (_tmp86_, GEE_TYPE_ABSTRACT_MAP, GeeAbstractMap));
			_tmp88_ = _tmp87_;
			_tmp89_ = _tmp88_;
			_tmp90_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp89_, GEE_TYPE_ITERABLE, GeeIterable));
			_tmp91_ = _tmp90_;
			_g_object_unref0 (_tmp89_);
			_item_it = _tmp91_;
			while (TRUE) {
				GeeIterator* _tmp92_;
				SwayNotificationCenterWidgetsPulseSinkInput* item = NULL;
				GeeIterator* _tmp93_;
				gpointer _tmp94_;
				SwayNotificationCenterWidgetsSinkInputRow* row = NULL;
				SwayNotificationCenterWidgetsPulseSinkInput* _tmp95_;
				SwayNotificationCenterWidgetsPulseDaemon* _tmp96_;
				SwayNotificationCenterWidgetsSinkInputRow* _tmp97_;
				IterListBoxController* _tmp98_;
				SwayNotificationCenterWidgetsSinkInputRow* _tmp99_;
				_tmp92_ = _item_it;
				if (!gee_iterator_next (_tmp92_)) {
					break;
				}
				_tmp93_ = _item_it;
				_tmp94_ = gee_iterator_get (_tmp93_);
				item = (SwayNotificationCenterWidgetsPulseSinkInput*) _tmp94_;
				_tmp95_ = item;
				_tmp96_ = self->priv->client;
				_tmp97_ = sway_notification_center_widgets_sink_input_row_new (_tmp95_, _tmp96_, self->priv->icon_size, self->priv->show_per_app_icon, self->priv->show_per_app_label);
				if (_tmp97_) {
					g_object_set_data ((GObject *) _tmp97_, "vala-creation-function", "SwayNotificationCenter.Widgets.Volume.new");
				}
				g_object_ref_sink (_tmp97_);
				row = _tmp97_;
				_tmp98_ = self->priv->list_box_controller;
				_tmp99_ = row;
				iter_list_box_controller_append (_tmp98_, G_TYPE_CHECK_INSTANCE_CAST (_tmp99_, gtk_widget_get_type (), GtkWidget));
				_g_object_unref0 (row);
				_g_object_unref0 (item);
			}
			_g_object_unref0 (_item_it);
		}
		_tmp100_ = self->priv->client;
		g_signal_connect_object (_tmp100_, "change-active-sink", (GCallback) _sway_notification_center_widgets_volume_active_sink_change_sway_notification_center_widgets_pulse_daemon_change_active_sink, self, 0);
		_tmp101_ = self->priv->client;
		g_signal_connect_object (_tmp101_, "new-active-sink", (GCallback) _sway_notification_center_widgets_volume_active_sink_added_sway_notification_center_widgets_pulse_daemon_new_active_sink, self, 0);
		_tmp102_ = self->priv->client;
		g_signal_connect_object (_tmp102_, "remove-active-sink", (GCallback) _sway_notification_center_widgets_volume_active_sink_removed_sway_notification_center_widgets_pulse_daemon_remove_active_sink, self, 0);
		_tmp103_ = (GtkToggleButton*) gtk_toggle_button_new ();
		if (_tmp103_) {
			g_object_set_data ((GObject *) _tmp103_, "vala-creation-function", "SwayNotificationCenter.Widgets.Volume.new");
		}
		g_object_ref_sink (_tmp103_);
		_g_object_unref0 (self->priv->reveal_button);
		self->priv->reveal_button = _tmp103_;
		_tmp104_ = self->priv->reveal_button;
		gtk_toggle_button_set_active (_tmp104_, self->priv->expand_per_app);
		_tmp105_ = self->priv->revealer;
		gtk_revealer_set_reveal_child (_tmp105_, self->priv->expand_per_app);
		sway_notification_center_widgets_volume_set_button_icon (self);
		_tmp106_ = self->priv->reveal_button;
		g_signal_connect_object (_tmp106_, "toggled", (GCallback) ____lambda83__gtk_toggle_button_toggled, self, 0);
		_tmp107_ = self->priv->main_volume_slider_container;
		_tmp108_ = self->priv->reveal_button;
		gtk_box_append (_tmp107_, G_TYPE_CHECK_INSTANCE_CAST (_tmp108_, gtk_widget_get_type (), GtkWidget));
		_tmp109_ = self->priv->revealer;
		gtk_box_append (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_box_get_type (), GtkBox), G_TYPE_CHECK_INSTANCE_CAST (_tmp109_, gtk_widget_get_type (), GtkWidget));
	}
	_json_object_unref0 (config);
	return self;
}

SwayNotificationCenterWidgetsVolume*
sway_notification_center_widgets_volume_new (const gchar* suffix)
{
	return sway_notification_center_widgets_volume_construct (SWAY_NOTIFICATION_CENTER_WIDGETS_TYPE_VOLUME, suffix);
}

static void
sway_notification_center_widgets_volume_set_button_icon (SwayNotificationCenterWidgetsVolume* self)
{
	GtkToggleButton* _tmp0_;
	gboolean _tmp1_;
	gboolean _tmp2_;
	g_return_if_fail (SWAY_NOTIFICATION_CENTER_WIDGETS_IS_VOLUME (self));
	_tmp0_ = self->priv->reveal_button;
	_tmp1_ = gtk_toggle_button_get_active (_tmp0_);
	_tmp2_ = _tmp1_;
	if (!_tmp2_) {
		const gchar* _tmp3_;
		_tmp3_ = self->priv->expand_label;
		if (_tmp3_ == NULL) {
			GtkToggleButton* _tmp4_;
			_tmp4_ = self->priv->reveal_button;
			gtk_button_set_icon_name (G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, gtk_button_get_type (), GtkButton), "swaync-up-small-symbolic");
		} else {
			GtkToggleButton* _tmp5_;
			const gchar* _tmp6_;
			_tmp5_ = self->priv->reveal_button;
			_tmp6_ = self->priv->expand_label;
			gtk_button_set_label (G_TYPE_CHECK_INSTANCE_CAST (_tmp5_, gtk_button_get_type (), GtkButton), _tmp6_);
		}
	} else {
		const gchar* _tmp7_;
		_tmp7_ = self->priv->collapse_label;
		if (_tmp7_ == NULL) {
			GtkToggleButton* _tmp8_;
			_tmp8_ = self->priv->reveal_button;
			gtk_button_set_icon_name (G_TYPE_CHECK_INSTANCE_CAST (_tmp8_, gtk_button_get_type (), GtkButton), "swaync-down-small-symbolic");
		} else {
			GtkToggleButton* _tmp9_;
			const gchar* _tmp10_;
			_tmp9_ = self->priv->reveal_button;
			_tmp10_ = self->priv->collapse_label;
			gtk_button_set_label (G_TYPE_CHECK_INSTANCE_CAST (_tmp9_, gtk_button_get_type (), GtkButton), _tmp10_);
		}
	}
}

static void
sway_notification_center_widgets_volume_real_on_cc_visibility_change (SwayNotificationCenterWidgetsBaseWidget* base,
                                                                      gboolean val)
{
	SwayNotificationCenterWidgetsVolume * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (base, SWAY_NOTIFICATION_CENTER_WIDGETS_TYPE_VOLUME, SwayNotificationCenterWidgetsVolume);
	if (val) {
		SwayNotificationCenterWidgetsPulseDaemon* _tmp0_;
		_tmp0_ = self->priv->client;
		sway_notification_center_widgets_pulse_daemon_start (_tmp0_);
	} else {
		SwayNotificationCenterWidgetsPulseDaemon* _tmp1_;
		_tmp1_ = self->priv->client;
		sway_notification_center_widgets_pulse_daemon_close (_tmp1_);
	}
	if (self->priv->show_per_app) {
		GtkToggleButton* _tmp2_;
		_tmp2_ = self->priv->reveal_button;
		gtk_toggle_button_set_active (_tmp2_, self->priv->expand_per_app);
	}
}

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

static void
sway_notification_center_widgets_volume_default_device_changed (SwayNotificationCenterWidgetsVolume* self,
                                                                SwayNotificationCenterWidgetsPulseDevice* device)
{
	gboolean _tmp0_ = FALSE;
	g_return_if_fail (SWAY_NOTIFICATION_CENTER_WIDGETS_IS_VOLUME (self));
	g_return_if_fail (SWAY_NOTIFICATION_CENTER_WIDGETS_IS_PULSE_DEVICE (device));
	if (device != NULL) {
		pa_direction_t _tmp1_;
		pa_direction_t _tmp2_;
		_tmp1_ = sway_notification_center_widgets_pulse_device_get_direction (device);
		_tmp2_ = _tmp1_;
		_tmp0_ = _tmp2_ == PA_DIRECTION_OUTPUT;
	} else {
		_tmp0_ = FALSE;
	}
	if (_tmp0_) {
		SwayNotificationCenterWidgetsPulseDevice* _tmp3_;
		GtkScale* _tmp4_;
		gdouble _tmp5_;
		gdouble _tmp6_;
		_tmp3_ = _g_object_ref0 (device);
		_g_object_unref0 (self->priv->default_sink);
		self->priv->default_sink = _tmp3_;
		_tmp4_ = self->priv->slider;
		_tmp5_ = sway_notification_center_widgets_pulse_device_get_volume (device);
		_tmp6_ = _tmp5_;
		gtk_range_set_value (G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, gtk_range_get_type (), GtkRange), _tmp6_);
	}
}

static void
sway_notification_center_widgets_volume_active_sink_change (SwayNotificationCenterWidgetsVolume* self,
                                                            SwayNotificationCenterWidgetsPulseSinkInput* sink)
{
	IterListBoxController* _tmp0_;
	GList* _tmp1_;
	g_return_if_fail (SWAY_NOTIFICATION_CENTER_WIDGETS_IS_VOLUME (self));
	g_return_if_fail (SWAY_NOTIFICATION_CENTER_WIDGETS_IS_PULSE_SINK_INPUT (sink));
	_tmp0_ = self->priv->list_box_controller;
	_tmp1_ = iter_list_box_controller_get_children (_tmp0_);
	{
		GList* row_collection = NULL;
		GList* row_it = NULL;
		row_collection = _tmp1_;
		for (row_it = row_collection; row_it != NULL; row_it = row_it->next) {
			GtkWidget* row = NULL;
			row = (GtkWidget*) row_it->data;
			{
				GtkWidget* _tmp2_;
				SwayNotificationCenterWidgetsSinkInputRow* s = NULL;
				GtkWidget* _tmp3_;
				SwayNotificationCenterWidgetsSinkInputRow* _tmp4_;
				SwayNotificationCenterWidgetsSinkInputRow* _tmp5_;
				SwayNotificationCenterWidgetsPulseSinkInput* _tmp6_;
				_tmp2_ = row;
				if (!SWAY_NOTIFICATION_CENTER_WIDGETS_IS_SINK_INPUT_ROW (_tmp2_)) {
					continue;
				}
				_tmp3_ = row;
				_tmp4_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp3_, SWAY_NOTIFICATION_CENTER_WIDGETS_TYPE_SINK_INPUT_ROW, SwayNotificationCenterWidgetsSinkInputRow));
				s = _tmp4_;
				_tmp5_ = s;
				_tmp6_ = _tmp5_->sink_input;
				if (sway_notification_center_widgets_pulse_sink_input_cmp (_tmp6_, sink)) {
					SwayNotificationCenterWidgetsSinkInputRow* _tmp7_;
					_tmp7_ = s;
					sway_notification_center_widgets_sink_input_row_update (_tmp7_, sink);
					_g_object_unref0 (s);
					break;
				}
				_g_object_unref0 (s);
			}
		}
		(row_collection == NULL) ? NULL : (row_collection = (g_list_free (row_collection), NULL));
	}
}

static void
sway_notification_center_widgets_volume_active_sink_added (SwayNotificationCenterWidgetsVolume* self,
                                                           SwayNotificationCenterWidgetsPulseSinkInput* sink)
{
	SwayNotificationCenterWidgetsPulseDaemon* _tmp0_;
	GeeHashMap* _tmp1_;
	GeeHashMap* _tmp2_;
	gint _tmp3_;
	gint _tmp4_;
	SwayNotificationCenterWidgetsSinkInputRow* row = NULL;
	SwayNotificationCenterWidgetsPulseDaemon* _tmp10_;
	SwayNotificationCenterWidgetsSinkInputRow* _tmp11_;
	IterListBoxController* _tmp12_;
	g_return_if_fail (SWAY_NOTIFICATION_CENTER_WIDGETS_IS_VOLUME (self));
	g_return_if_fail (SWAY_NOTIFICATION_CENTER_WIDGETS_IS_PULSE_SINK_INPUT (sink));
	_tmp0_ = self->priv->client;
	_tmp1_ = sway_notification_center_widgets_pulse_daemon_get_active_sinks (_tmp0_);
	_tmp2_ = _tmp1_;
	_tmp3_ = gee_abstract_map_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, GEE_TYPE_ABSTRACT_MAP, GeeAbstractMap));
	_tmp4_ = _tmp3_;
	if (_tmp4_ == 1) {
		GtkWidget* label = NULL;
		GtkListBox* _tmp5_;
		GtkWidget* _tmp6_;
		GtkWidget* _tmp7_;
		IterListBoxController* _tmp8_;
		GtkWidget* _tmp9_;
		_tmp5_ = self->priv->levels_listbox;
		_tmp6_ = gtk_widget_get_first_child (G_TYPE_CHECK_INSTANCE_CAST (_tmp5_, gtk_widget_get_type (), GtkWidget));
		_tmp7_ = _g_object_ref0 (_tmp6_);
		label = _tmp7_;
		_tmp8_ = self->priv->list_box_controller;
		_tmp9_ = label;
		iter_list_box_controller_remove (_tmp8_, G_TYPE_CHECK_INSTANCE_CAST (_tmp9_, gtk_widget_get_type (), GtkWidget));
		_g_object_unref0 (label);
	}
	_tmp10_ = self->priv->client;
	_tmp11_ = sway_notification_center_widgets_sink_input_row_new (sink, _tmp10_, self->priv->icon_size, self->priv->show_per_app_icon, self->priv->show_per_app_label);
	if (_tmp11_) {
		g_object_set_data ((GObject *) _tmp11_, "vala-creation-function", "SwayNotificationCenter.Widgets.Volume.active_sink_added");
	}
	g_object_ref_sink (_tmp11_);
	row = _tmp11_;
	_tmp12_ = self->priv->list_box_controller;
	iter_list_box_controller_append (_tmp12_, G_TYPE_CHECK_INSTANCE_CAST (row, gtk_widget_get_type (), GtkWidget));
	_g_object_unref0 (row);
}

static void
sway_notification_center_widgets_volume_active_sink_removed (SwayNotificationCenterWidgetsVolume* self,
                                                             SwayNotificationCenterWidgetsPulseSinkInput* sink)
{
	IterListBoxController* _tmp0_;
	GList* _tmp1_;
	GtkListBox* _tmp9_;
	GtkWidget* _tmp10_;
	g_return_if_fail (SWAY_NOTIFICATION_CENTER_WIDGETS_IS_VOLUME (self));
	g_return_if_fail (SWAY_NOTIFICATION_CENTER_WIDGETS_IS_PULSE_SINK_INPUT (sink));
	_tmp0_ = self->priv->list_box_controller;
	_tmp1_ = iter_list_box_controller_get_children (_tmp0_);
	{
		GList* row_collection = NULL;
		GList* row_it = NULL;
		row_collection = _tmp1_;
		for (row_it = row_collection; row_it != NULL; row_it = row_it->next) {
			GtkWidget* row = NULL;
			row = (GtkWidget*) row_it->data;
			{
				GtkWidget* _tmp2_;
				SwayNotificationCenterWidgetsSinkInputRow* s = NULL;
				GtkWidget* _tmp3_;
				SwayNotificationCenterWidgetsSinkInputRow* _tmp4_;
				SwayNotificationCenterWidgetsSinkInputRow* _tmp5_;
				SwayNotificationCenterWidgetsPulseSinkInput* _tmp6_;
				_tmp2_ = row;
				if (!SWAY_NOTIFICATION_CENTER_WIDGETS_IS_SINK_INPUT_ROW (_tmp2_)) {
					continue;
				}
				_tmp3_ = row;
				_tmp4_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp3_, SWAY_NOTIFICATION_CENTER_WIDGETS_TYPE_SINK_INPUT_ROW, SwayNotificationCenterWidgetsSinkInputRow));
				s = _tmp4_;
				_tmp5_ = s;
				_tmp6_ = _tmp5_->sink_input;
				if (sway_notification_center_widgets_pulse_sink_input_cmp (_tmp6_, sink)) {
					IterListBoxController* _tmp7_;
					GtkWidget* _tmp8_;
					_tmp7_ = self->priv->list_box_controller;
					_tmp8_ = row;
					iter_list_box_controller_remove (_tmp7_, _tmp8_);
					_g_object_unref0 (s);
					break;
				}
				_g_object_unref0 (s);
			}
		}
		(row_collection == NULL) ? NULL : (row_collection = (g_list_free (row_collection), NULL));
	}
	_tmp9_ = self->priv->levels_listbox;
	_tmp10_ = gtk_widget_get_first_child (G_TYPE_CHECK_INSTANCE_CAST (_tmp9_, gtk_widget_get_type (), GtkWidget));
	if (_tmp10_ == NULL) {
		IterListBoxController* _tmp11_;
		GtkLabel* _tmp12_;
		_tmp11_ = self->priv->list_box_controller;
		_tmp12_ = self->priv->no_sink_inputs_label;
		iter_list_box_controller_append (_tmp11_, G_TYPE_CHECK_INSTANCE_CAST (_tmp12_, gtk_widget_get_type (), GtkWidget));
	}
}

static const gchar*
sway_notification_center_widgets_volume_real_get_widget_name (SwayNotificationCenterWidgetsBaseWidget* base)
{
	const gchar* result;
	SwayNotificationCenterWidgetsVolume* self;
	self = G_TYPE_CHECK_INSTANCE_CAST (base, SWAY_NOTIFICATION_CENTER_WIDGETS_TYPE_VOLUME, SwayNotificationCenterWidgetsVolume);
	result = "volume";
	return result;
}

static void
_sway_notification_center_widgets_volume_default_device_changed_sway_notification_center_widgets_pulse_daemon_change_default_device (SwayNotificationCenterWidgetsPulseDaemon* _sender,
                                                                                                                                     SwayNotificationCenterWidgetsPulseDevice* device,
                                                                                                                                     gpointer self)
{
	sway_notification_center_widgets_volume_default_device_changed ((SwayNotificationCenterWidgetsVolume*) self, device);
}

static void
_sway_notification_center_widgets_volume___lambda84_ (SwayNotificationCenterWidgetsVolume* self)
{
	SwayNotificationCenterWidgetsPulseDevice* _tmp0_;
	_tmp0_ = self->priv->default_sink;
	if (_tmp0_ != NULL) {
		SwayNotificationCenterWidgetsPulseDaemon* _tmp1_;
		SwayNotificationCenterWidgetsPulseDevice* _tmp2_;
		GtkScale* _tmp3_;
		GtkScale* _tmp4_;
		GtkScale* _tmp5_;
		gchar* _tmp6_;
		gchar* _tmp7_;
		_tmp1_ = self->priv->client;
		_tmp2_ = self->priv->default_sink;
		_tmp3_ = self->priv->slider;
		sway_notification_center_widgets_pulse_daemon_set_device_volume (_tmp1_, _tmp2_, (gdouble) ((gfloat) gtk_range_get_value (G_TYPE_CHECK_INSTANCE_CAST (_tmp3_, gtk_range_get_type (), GtkRange))));
		_tmp4_ = self->priv->slider;
		_tmp5_ = self->priv->slider;
		_tmp6_ = g_strdup_printf ("%i", (gint) gtk_range_get_value (G_TYPE_CHECK_INSTANCE_CAST (_tmp5_, gtk_range_get_type (), GtkRange)));
		_tmp7_ = _tmp6_;
		gtk_widget_set_tooltip_text (G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, gtk_widget_get_type (), GtkWidget), _tmp7_);
		_g_free0 (_tmp7_);
	}
}

static void
__sway_notification_center_widgets_volume___lambda84__gtk_range_value_changed (GtkRange* _sender,
                                                                               gpointer self)
{
	_sway_notification_center_widgets_volume___lambda84_ ((SwayNotificationCenterWidgetsVolume*) self);
}

static GObject *
sway_notification_center_widgets_volume_constructor (GType type,
                                                     guint n_construct_properties,
                                                     GObjectConstructParam * construct_properties)
{
	GObject * obj;
	GObjectClass * parent_class;
	SwayNotificationCenterWidgetsVolume * self;
	SwayNotificationCenterWidgetsPulseDaemon* _tmp0_;
	GtkScale* _tmp1_;
	parent_class = G_OBJECT_CLASS (sway_notification_center_widgets_volume_parent_class);
	obj = parent_class->constructor (type, n_construct_properties, construct_properties);
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, SWAY_NOTIFICATION_CENTER_WIDGETS_TYPE_VOLUME, SwayNotificationCenterWidgetsVolume);
	_tmp0_ = self->priv->client;
	g_signal_connect_object (_tmp0_, "change-default-device", (GCallback) _sway_notification_center_widgets_volume_default_device_changed_sway_notification_center_widgets_pulse_daemon_change_default_device, self, 0);
	_tmp1_ = self->priv->slider;
	g_signal_connect_object (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, gtk_range_get_type (), GtkRange), "value-changed", (GCallback) __sway_notification_center_widgets_volume___lambda84__gtk_range_value_changed, self, 0);
	return obj;
}

static void
sway_notification_center_widgets_volume_class_init (SwayNotificationCenterWidgetsVolumeClass * klass,
                                                    gpointer klass_data)
{
	sway_notification_center_widgets_volume_parent_class = g_type_class_peek_parent (klass);
	g_type_class_adjust_private_offset (klass, &SwayNotificationCenterWidgetsVolume_private_offset);
	((SwayNotificationCenterWidgetsBaseWidgetClass *) klass)->on_cc_visibility_change = (void (*) (SwayNotificationCenterWidgetsBaseWidget*, gboolean)) sway_notification_center_widgets_volume_real_on_cc_visibility_change;
	SWAY_NOTIFICATION_CENTER_WIDGETS_BASE_WIDGET_CLASS (klass)->get_widget_name = (const gchar* (*) (SwayNotificationCenterWidgetsBaseWidget*)) sway_notification_center_widgets_volume_real_get_widget_name;
	G_OBJECT_CLASS (klass)->get_property = _vala_sway_notification_center_widgets_volume_get_property;
	G_OBJECT_CLASS (klass)->constructor = sway_notification_center_widgets_volume_constructor;
	G_OBJECT_CLASS (klass)->finalize = sway_notification_center_widgets_volume_finalize;
	g_object_class_install_property (G_OBJECT_CLASS (klass), SWAY_NOTIFICATION_CENTER_WIDGETS_VOLUME_WIDGET_NAME_PROPERTY, sway_notification_center_widgets_volume_properties[SWAY_NOTIFICATION_CENTER_WIDGETS_VOLUME_WIDGET_NAME_PROPERTY] = g_param_spec_string ("widget-name", "widget-name", "widget-name", NULL, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
}

static void
sway_notification_center_widgets_volume_instance_init (SwayNotificationCenterWidgetsVolume * self,
                                                       gpointer klass)
{
	GtkBox* _tmp0_;
	GtkLabel* _tmp1_;
	GtkScale* _tmp2_;
	gchar* _tmp3_;
	SwayNotificationCenterWidgetsPulseDaemon* _tmp4_;
	self->priv = sway_notification_center_widgets_volume_get_instance_private (self);
	_tmp0_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
	if (_tmp0_) {
		g_object_set_data ((GObject *) _tmp0_, "vala-creation-function", "");
	}
	g_object_ref_sink (_tmp0_);
	self->priv->main_volume_slider_container = _tmp0_;
	_tmp1_ = (GtkLabel*) gtk_label_new (NULL);
	if (_tmp1_) {
		g_object_set_data ((GObject *) _tmp1_, "vala-creation-function", "");
	}
	g_object_ref_sink (_tmp1_);
	self->priv->label_widget = _tmp1_;
	_tmp2_ = (GtkScale*) gtk_scale_new_with_range (GTK_ORIENTATION_HORIZONTAL, (gdouble) 0, (gdouble) 100, (gdouble) 1);
	if (_tmp2_) {
		g_object_set_data ((GObject *) _tmp2_, "vala-creation-function", "");
	}
	g_object_ref_sink (_tmp2_);
	self->priv->slider = _tmp2_;
	_tmp3_ = g_strdup ("No active sink input");
	self->priv->empty_label = _tmp3_;
	self->priv->expand_label = NULL;
	self->priv->collapse_label = NULL;
	self->priv->icon_size = -1;
	self->priv->revealer_type = GTK_REVEALER_TRANSITION_TYPE_SLIDE_DOWN;
	self->priv->revealer_duration = 250;
	self->priv->default_sink = NULL;
	_tmp4_ = sway_notification_center_widgets_pulse_daemon_new ();
	if (_tmp4_) {
		g_object_set_data ((GObject *) _tmp4_, "vala-creation-function", "");
	}
	self->priv->client = _tmp4_;
	self->priv->show_per_app = FALSE;
	self->priv->show_per_app_icon = TRUE;
	self->priv->show_per_app_label = FALSE;
	self->priv->expand_per_app = FALSE;
}

static void
sway_notification_center_widgets_volume_finalize (GObject * obj)
{
	SwayNotificationCenterWidgetsVolume * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, SWAY_NOTIFICATION_CENTER_WIDGETS_TYPE_VOLUME, SwayNotificationCenterWidgetsVolume);
	_g_object_unref0 (self->priv->main_volume_slider_container);
	_g_object_unref0 (self->priv->label_widget);
	_g_object_unref0 (self->priv->slider);
	_g_object_unref0 (self->priv->levels_listbox);
	_g_object_unref0 (self->priv->list_box_controller);
	_g_object_unref0 (self->priv->reveal_button);
	_g_object_unref0 (self->priv->revealer);
	_g_object_unref0 (self->priv->no_sink_inputs_label);
	_g_free0 (self->priv->empty_label);
	_g_free0 (self->priv->expand_label);
	_g_free0 (self->priv->collapse_label);
	_g_object_unref0 (self->priv->default_sink);
	_g_object_unref0 (self->priv->client);
	G_OBJECT_CLASS (sway_notification_center_widgets_volume_parent_class)->finalize (obj);
}

 G_GNUC_NO_INLINE static GType
sway_notification_center_widgets_volume_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (SwayNotificationCenterWidgetsVolumeClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) sway_notification_center_widgets_volume_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (SwayNotificationCenterWidgetsVolume), 0, (GInstanceInitFunc) sway_notification_center_widgets_volume_instance_init, NULL };
	GType sway_notification_center_widgets_volume_type_id;
	sway_notification_center_widgets_volume_type_id = g_type_register_static (SWAY_NOTIFICATION_CENTER_WIDGETS_TYPE_BASE_WIDGET, "SwayNotificationCenterWidgetsVolume", &g_define_type_info, 0);
	SwayNotificationCenterWidgetsVolume_private_offset = g_type_add_instance_private (sway_notification_center_widgets_volume_type_id, sizeof (SwayNotificationCenterWidgetsVolumePrivate));
	return sway_notification_center_widgets_volume_type_id;
}

GType
sway_notification_center_widgets_volume_get_type (void)
{
	static gsize sway_notification_center_widgets_volume_type_id__once = 0;
	if (g_once_init_enter (&sway_notification_center_widgets_volume_type_id__once)) {
		GType sway_notification_center_widgets_volume_type_id;
		sway_notification_center_widgets_volume_type_id = sway_notification_center_widgets_volume_get_type_once ();
		g_once_init_leave (&sway_notification_center_widgets_volume_type_id__once, sway_notification_center_widgets_volume_type_id);
	}
	return sway_notification_center_widgets_volume_type_id__once;
}

static void
_vala_sway_notification_center_widgets_volume_get_property (GObject * object,
                                                            guint property_id,
                                                            GValue * value,
                                                            GParamSpec * pspec)
{
	SwayNotificationCenterWidgetsVolume * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, SWAY_NOTIFICATION_CENTER_WIDGETS_TYPE_VOLUME, SwayNotificationCenterWidgetsVolume);
	switch (property_id) {
		case SWAY_NOTIFICATION_CENTER_WIDGETS_VOLUME_WIDGET_NAME_PROPERTY:
		g_value_set_string (value, sway_notification_center_widgets_base_widget_get_widget_name (G_TYPE_CHECK_INSTANCE_CAST (self, SWAY_NOTIFICATION_CENTER_WIDGETS_TYPE_BASE_WIDGET, SwayNotificationCenterWidgetsBaseWidget)));
		break;
		default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
		break;
	}
}

