summaryrefslogtreecommitdiff
path: root/libmatemixer/matemixer-device.c
diff options
context:
space:
mode:
Diffstat (limited to 'libmatemixer/matemixer-device.c')
-rw-r--r--libmatemixer/matemixer-device.c147
1 files changed, 100 insertions, 47 deletions
diff --git a/libmatemixer/matemixer-device.c b/libmatemixer/matemixer-device.c
index 8e6a465..d4a7c39 100644
--- a/libmatemixer/matemixer-device.c
+++ b/libmatemixer/matemixer-device.c
@@ -19,89 +19,141 @@
#include <glib-object.h>
#include "matemixer-device.h"
-#include "matemixer-device-profile.h"
+#include "matemixer-enum-types.h"
+#include "matemixer-profile.h"
G_DEFINE_INTERFACE (MateMixerDevice, mate_mixer_device, G_TYPE_OBJECT)
static void
mate_mixer_device_default_init (MateMixerDeviceInterface *iface)
{
- g_object_interface_install_property (
- iface,
- g_param_spec_string ("identifier",
- "Identifier",
- "Identifier of the sound device",
- NULL,
- G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE));
-
- g_object_interface_install_property (
- iface,
- g_param_spec_string ("name",
- "Name",
- "Name of the sound device",
- NULL,
- G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE));
-
- g_object_interface_install_property (
- iface,
- g_param_spec_string ("icon",
- "Icon",
- "Name of the sound device icon",
- NULL,
- G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE));
-
- g_object_interface_install_property (
- iface,
- g_param_spec_object ("active-profile",
- "Active profile",
- "Identifier of the currently active profile",
- MATE_MIXER_TYPE_DEVICE_PROFILE,
- G_PARAM_CONSTRUCT | G_PARAM_READWRITE));
+ g_object_interface_install_property (iface,
+ g_param_spec_string ("name",
+ "Name",
+ "Name of the sound device",
+ NULL,
+ G_PARAM_CONSTRUCT_ONLY |
+ G_PARAM_READWRITE |
+ G_PARAM_STATIC_STRINGS));
+
+ g_object_interface_install_property (iface,
+ g_param_spec_string ("description",
+ "Description",
+ "Description of the sound device",
+ NULL,
+ G_PARAM_CONSTRUCT_ONLY |
+ G_PARAM_READWRITE |
+ G_PARAM_STATIC_STRINGS));
+
+ g_object_interface_install_property (iface,
+ g_param_spec_string ("icon",
+ "Icon",
+ "Name of the sound device icon",
+ NULL,
+ G_PARAM_CONSTRUCT_ONLY |
+ G_PARAM_READWRITE |
+ G_PARAM_STATIC_STRINGS));
+
+ g_object_interface_install_property (iface,
+ g_param_spec_object ("active-profile",
+ "Active profile",
+ "Name of the active profile",
+ MATE_MIXER_TYPE_PROFILE,
+ G_PARAM_READABLE |
+ G_PARAM_STATIC_STRINGS));
+}
+
+const gchar *
+mate_mixer_device_get_name (MateMixerDevice *device)
+{
+ MateMixerDeviceInterface *iface;
+
+ g_return_val_if_fail (MATE_MIXER_IS_DEVICE (device), NULL);
+
+ iface = MATE_MIXER_DEVICE_GET_INTERFACE (device);
+
+ if (iface->get_name)
+ return iface->get_name (device);
+
+ return NULL;
+}
+
+const gchar *
+mate_mixer_device_get_description (MateMixerDevice *device)
+{
+ MateMixerDeviceInterface *iface;
+
+ g_return_val_if_fail (MATE_MIXER_IS_DEVICE (device), NULL);
+
+ iface = MATE_MIXER_DEVICE_GET_INTERFACE (device);
+
+ if (iface->get_description)
+ return iface->get_description (device);
+
+ return NULL;
+}
+
+const gchar *
+mate_mixer_device_get_icon (MateMixerDevice *device)
+{
+ MateMixerDeviceInterface *iface;
+
+ g_return_val_if_fail (MATE_MIXER_IS_DEVICE (device), NULL);
+
+ iface = MATE_MIXER_DEVICE_GET_INTERFACE (device);
+
+ if (iface->get_icon)
+ return iface->get_icon (device);
+
+ return NULL;
}
const GList *
-mate_mixer_device_list_tracks (MateMixerDevice *device)
+mate_mixer_device_list_streams (MateMixerDevice *device)
{
MateMixerDeviceInterface *iface;
g_return_val_if_fail (MATE_MIXER_IS_DEVICE (device), NULL);
iface = MATE_MIXER_DEVICE_GET_INTERFACE (device);
- if (iface->list_tracks)
- return iface->list_tracks (device);
+
+ if (iface->list_streams)
+ return iface->list_streams (device);
return NULL;
}
const GList *
-mate_mixer_device_get_ports (MateMixerDevice *device)
+mate_mixer_device_list_ports (MateMixerDevice *device)
{
MateMixerDeviceInterface *iface;
g_return_val_if_fail (MATE_MIXER_IS_DEVICE (device), NULL);
iface = MATE_MIXER_DEVICE_GET_INTERFACE (device);
- if (iface->get_ports)
- return iface->get_ports (device);
+
+ if (iface->list_ports)
+ return iface->list_ports (device);
return NULL;
}
const GList *
-mate_mixer_device_get_profiles (MateMixerDevice *device)
+mate_mixer_device_list_profiles (MateMixerDevice *device)
{
MateMixerDeviceInterface *iface;
g_return_val_if_fail (MATE_MIXER_IS_DEVICE (device), NULL);
iface = MATE_MIXER_DEVICE_GET_INTERFACE (device);
- if (iface->get_profiles)
- return iface->get_profiles (device);
+
+ if (iface->list_profiles)
+ return iface->list_profiles (device);
return NULL;
}
-MateMixerDeviceProfile *
+MateMixerProfile *
mate_mixer_device_get_active_profile (MateMixerDevice *device)
{
MateMixerDeviceInterface *iface;
@@ -109,6 +161,7 @@ mate_mixer_device_get_active_profile (MateMixerDevice *device)
g_return_val_if_fail (MATE_MIXER_IS_DEVICE (device), NULL);
iface = MATE_MIXER_DEVICE_GET_INTERFACE (device);
+
if (iface->get_active_profile)
return iface->get_active_profile (device);
@@ -116,17 +169,17 @@ mate_mixer_device_get_active_profile (MateMixerDevice *device)
}
gboolean
-mate_mixer_device_set_active_profile (MateMixerDevice *device,
- MateMixerDeviceProfile *profile)
+mate_mixer_device_set_active_profile (MateMixerDevice *device, const gchar *name)
{
MateMixerDeviceInterface *iface;
- g_return_val_if_fail (MATE_MIXER_IS_DEVICE (device), NULL);
- g_return_val_if_fail (MATE_MIXER_IS_DEVICE_PROFILE (profile), NULL);
+ g_return_val_if_fail (MATE_MIXER_IS_DEVICE (device), FALSE);
+ g_return_val_if_fail (name != NULL, FALSE);
iface = MATE_MIXER_DEVICE_GET_INTERFACE (device);
+
if (iface->set_active_profile)
- return iface->set_active_profile (device, profile);
+ return iface->set_active_profile (device, name);
return FALSE;
}