ratbagd: expose 'DefaultProfile'

Add a new property that exposes the default profile.

Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
This commit is contained in:
David Herrmann
2015-09-29 16:34:32 +02:00
parent e189dc3b1f
commit c24ca68d63
3 changed files with 35 additions and 0 deletions

View File

@@ -194,12 +194,40 @@ static int ratbagd_device_get_active_profile(sd_bus *bus,
return sd_bus_message_append(reply, "o", "/");
}
static int ratbagd_device_get_default_profile(sd_bus *bus,
const char *path,
const char *interface,
const char *property,
sd_bus_message *reply,
void *userdata,
sd_bus_error *error)
{
struct ratbagd_device *device = userdata;
struct ratbagd_profile *profile;
unsigned int i;
for (i = 0; i < device->n_profiles; ++i) {
profile = device->profiles[i];
if (!profile)
continue;
if (!ratbagd_profile_is_default(profile))
continue;
return sd_bus_message_append(reply, "o",
ratbagd_profile_get_path(profile));
}
/* Eww, we want 'maybe' types here! */
return sd_bus_message_append(reply, "o", "/");
}
const sd_bus_vtable ratbagd_device_vtable[] = {
SD_BUS_VTABLE_START(0),
SD_BUS_PROPERTY("Id", "s", NULL, offsetof(struct ratbagd_device, name), SD_BUS_VTABLE_PROPERTY_CONST),
SD_BUS_PROPERTY("Description", "s", ratbagd_device_get_description, 0, SD_BUS_VTABLE_PROPERTY_CONST),
SD_BUS_PROPERTY("Profiles", "ao", ratbagd_device_get_profiles, 0, SD_BUS_VTABLE_PROPERTY_CONST),
SD_BUS_PROPERTY("ActiveProfile", "o", ratbagd_device_get_active_profile, 0, 0),
SD_BUS_PROPERTY("DefaultProfile", "o", ratbagd_device_get_default_profile, 0, 0),
SD_BUS_VTABLE_END,
};

View File

@@ -103,3 +103,9 @@ bool ratbagd_profile_is_active(struct ratbagd_profile *profile)
assert(profile);
return ratbag_profile_is_active(profile->lib_profile) != 0;
}
bool ratbagd_profile_is_default(struct ratbagd_profile *profile)
{
assert(profile);
return ratbag_profile_is_default(profile->lib_profile) != 0;
}

View File

@@ -53,6 +53,7 @@ int ratbagd_profile_new(struct ratbagd_profile **out,
struct ratbagd_profile *ratbagd_profile_free(struct ratbagd_profile *profile);
const char *ratbagd_profile_get_path(struct ratbagd_profile *profile);
bool ratbagd_profile_is_active(struct ratbagd_profile *profile);
bool ratbagd_profile_is_default(struct ratbagd_profile *profile);
DEFINE_TRIVIAL_CLEANUP_FUNC(struct ratbagd_profile *, ratbagd_profile_free);