/* org.buddiesofbudgie.budgie-desktop.raven.widget.SoundOutput.h generated by valac 0.56.18-dirty, the Vala compiler, do not modify */

#ifndef __SRC_RAVEN_WIDGETS_SOUND_OUTPUT_ORG_BUDDIESOFBUDGIE_BUDGIE_DESKTOP_RAVEN_WIDGET_SOUNDOUTPUT_H__
#define __SRC_RAVEN_WIDGETS_SOUND_OUTPUT_ORG_BUDDIESOFBUDGIE_BUDGIE_DESKTOP_RAVEN_WIDGET_SOUNDOUTPUT_H__

#include <gtk/gtk.h>
#include <glib-object.h>
#include <pulse/pulseaudio.h>
#include <gvc-mixer-stream.h>
#include <stdlib.h>
#include <string.h>
#include <glib.h>
#include <gvc-mixer-control.h>
#include <libpeas.h>
#include "raven-plugin.h"
#include <gio/gio.h>

G_BEGIN_DECLS

#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 BUDGIE_TYPE_APP_SOUND_CONTROL (budgie_app_sound_control_get_type ())
#define BUDGIE_APP_SOUND_CONTROL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BUDGIE_TYPE_APP_SOUND_CONTROL, BudgieAppSoundControl))
#define BUDGIE_APP_SOUND_CONTROL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), BUDGIE_TYPE_APP_SOUND_CONTROL, BudgieAppSoundControlClass))
#define BUDGIE_IS_APP_SOUND_CONTROL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BUDGIE_TYPE_APP_SOUND_CONTROL))
#define BUDGIE_IS_APP_SOUND_CONTROL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), BUDGIE_TYPE_APP_SOUND_CONTROL))
#define BUDGIE_APP_SOUND_CONTROL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), BUDGIE_TYPE_APP_SOUND_CONTROL, BudgieAppSoundControlClass))

typedef struct _BudgieAppSoundControl BudgieAppSoundControl;
typedef struct _BudgieAppSoundControlClass BudgieAppSoundControlClass;
typedef struct _BudgieAppSoundControlPrivate BudgieAppSoundControlPrivate;

#define TYPE_SOUND_OUTPUT_RAVEN_PLUGIN (sound_output_raven_plugin_get_type ())
#define SOUND_OUTPUT_RAVEN_PLUGIN(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_SOUND_OUTPUT_RAVEN_PLUGIN, SoundOutputRavenPlugin))
#define SOUND_OUTPUT_RAVEN_PLUGIN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_SOUND_OUTPUT_RAVEN_PLUGIN, SoundOutputRavenPluginClass))
#define IS_SOUND_OUTPUT_RAVEN_PLUGIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_SOUND_OUTPUT_RAVEN_PLUGIN))
#define IS_SOUND_OUTPUT_RAVEN_PLUGIN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_SOUND_OUTPUT_RAVEN_PLUGIN))
#define SOUND_OUTPUT_RAVEN_PLUGIN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_SOUND_OUTPUT_RAVEN_PLUGIN, SoundOutputRavenPluginClass))

typedef struct _SoundOutputRavenPlugin SoundOutputRavenPlugin;
typedef struct _SoundOutputRavenPluginClass SoundOutputRavenPluginClass;
typedef struct _SoundOutputRavenPluginPrivate SoundOutputRavenPluginPrivate;

#define TYPE_SOUND_OUTPUT_RAVEN_WIDGET (sound_output_raven_widget_get_type ())
#define SOUND_OUTPUT_RAVEN_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_SOUND_OUTPUT_RAVEN_WIDGET, SoundOutputRavenWidget))
#define SOUND_OUTPUT_RAVEN_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_SOUND_OUTPUT_RAVEN_WIDGET, SoundOutputRavenWidgetClass))
#define IS_SOUND_OUTPUT_RAVEN_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_SOUND_OUTPUT_RAVEN_WIDGET))
#define IS_SOUND_OUTPUT_RAVEN_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_SOUND_OUTPUT_RAVEN_WIDGET))
#define SOUND_OUTPUT_RAVEN_WIDGET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_SOUND_OUTPUT_RAVEN_WIDGET, SoundOutputRavenWidgetClass))

typedef struct _SoundOutputRavenWidget SoundOutputRavenWidget;
typedef struct _SoundOutputRavenWidgetClass SoundOutputRavenWidgetClass;
typedef struct _SoundOutputRavenWidgetPrivate SoundOutputRavenWidgetPrivate;

#define TYPE_SOUND_OUTPUT_RAVEN_WIDGET_SETTINGS (sound_output_raven_widget_settings_get_type ())
#define SOUND_OUTPUT_RAVEN_WIDGET_SETTINGS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_SOUND_OUTPUT_RAVEN_WIDGET_SETTINGS, SoundOutputRavenWidgetSettings))
#define SOUND_OUTPUT_RAVEN_WIDGET_SETTINGS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_SOUND_OUTPUT_RAVEN_WIDGET_SETTINGS, SoundOutputRavenWidgetSettingsClass))
#define IS_SOUND_OUTPUT_RAVEN_WIDGET_SETTINGS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_SOUND_OUTPUT_RAVEN_WIDGET_SETTINGS))
#define IS_SOUND_OUTPUT_RAVEN_WIDGET_SETTINGS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_SOUND_OUTPUT_RAVEN_WIDGET_SETTINGS))
#define SOUND_OUTPUT_RAVEN_WIDGET_SETTINGS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_SOUND_OUTPUT_RAVEN_WIDGET_SETTINGS, SoundOutputRavenWidgetSettingsClass))

typedef struct _SoundOutputRavenWidgetSettings SoundOutputRavenWidgetSettings;
typedef struct _SoundOutputRavenWidgetSettingsClass SoundOutputRavenWidgetSettingsClass;
typedef struct _SoundOutputRavenWidgetSettingsPrivate SoundOutputRavenWidgetSettingsPrivate;

struct _BudgieAppSoundControl {
	GtkBox parent_instance;
	BudgieAppSoundControlPrivate * priv;
	GvcMixerStream* primary_stream;
	GvcMixerStream* stream;
	gchar* app_name;
};

struct _BudgieAppSoundControlClass {
	GtkBoxClass parent_class;
};

struct _SoundOutputRavenPlugin {
	PeasExtensionBase parent_instance;
	SoundOutputRavenPluginPrivate * priv;
};

struct _SoundOutputRavenPluginClass {
	PeasExtensionBaseClass parent_class;
};

struct _SoundOutputRavenWidget {
	BudgieRavenWidget parent_instance;
	SoundOutputRavenWidgetPrivate * priv;
};

struct _SoundOutputRavenWidgetClass {
	BudgieRavenWidgetClass parent_class;
};

struct _SoundOutputRavenWidgetSettings {
	GtkGrid parent_instance;
	SoundOutputRavenWidgetSettingsPrivate * priv;
};

struct _SoundOutputRavenWidgetSettingsClass {
	GtkGridClass parent_class;
};

GType budgie_app_sound_control_register_type (GTypeModule * module);
VALA_EXTERN GType budgie_app_sound_control_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (BudgieAppSoundControl, g_object_unref)
VALA_EXTERN BudgieAppSoundControl* budgie_app_sound_control_new (GvcMixerControl* c_mixer,
                                                     GvcMixerStream* c_primary,
                                                     GvcMixerStream* c_stream,
                                                     const gchar* c_icon,
                                                     const gchar* c_name);
VALA_EXTERN BudgieAppSoundControl* budgie_app_sound_control_construct (GType object_type,
                                                           GvcMixerControl* c_mixer,
                                                           GvcMixerStream* c_primary,
                                                           GvcMixerStream* c_stream,
                                                           const gchar* c_icon,
                                                           const gchar* c_name);
VALA_EXTERN void budgie_app_sound_control_refresh (BudgieAppSoundControl* self);
VALA_EXTERN void budgie_app_sound_control_refresh_volume (BudgieAppSoundControl* self);
GType sound_output_raven_plugin_register_type (GTypeModule * module);
VALA_EXTERN GType sound_output_raven_plugin_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (SoundOutputRavenPlugin, g_object_unref)
VALA_EXTERN SoundOutputRavenPlugin* sound_output_raven_plugin_new (void);
VALA_EXTERN SoundOutputRavenPlugin* sound_output_raven_plugin_construct (GType object_type);
GType sound_output_raven_widget_register_type (GTypeModule * module);
VALA_EXTERN GType sound_output_raven_widget_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (SoundOutputRavenWidget, g_object_unref)
VALA_EXTERN SoundOutputRavenWidget* sound_output_raven_widget_new (const gchar* uuid,
                                                       GSettings* settings);
VALA_EXTERN SoundOutputRavenWidget* sound_output_raven_widget_construct (GType object_type,
                                                             const gchar* uuid,
                                                             GSettings* settings);
VALA_EXTERN gboolean sound_output_raven_widget_has_devices (SoundOutputRavenWidget* self);
GType sound_output_raven_widget_settings_register_type (GTypeModule * module);
VALA_EXTERN GType sound_output_raven_widget_settings_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (SoundOutputRavenWidgetSettings, g_object_unref)
VALA_EXTERN SoundOutputRavenWidgetSettings* sound_output_raven_widget_settings_new (GSettings* settings);
VALA_EXTERN SoundOutputRavenWidgetSettings* sound_output_raven_widget_settings_construct (GType object_type,
                                                                              GSettings* settings);
VALA_EXTERN void peas_register_types (GTypeModule* module);

G_END_DECLS

#endif
