/* * libosinfo: * * Copyright (C) 2009-2020 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library. If not, see * */ #include #include G_DEFINE_TYPE(OsinfoAvatarFormat, osinfo_avatar_format, OSINFO_TYPE_ENTITY); /** * SECTION: osinfo_avatar_format * @short_description: The required format of avatar for an install script * @see_also: #OsinfoInstallScript */ enum { PROP_0, PROP_MIME_TYPES, PROP_WIDTH, PROP_HEIGHT, PROP_ALPHA, LAST_PROP }; static GParamSpec *properties[LAST_PROP]; static void osinfo_avatar_format_get_property(GObject *object, guint property_id, GValue *value, GParamSpec *pspec) { OsinfoAvatarFormat *avatar = OSINFO_AVATAR_FORMAT(object); switch (property_id) { case PROP_MIME_TYPES: { GList *mime_types; mime_types = osinfo_avatar_format_get_mime_types(avatar); g_value_set_pointer(value, mime_types); break; } case PROP_WIDTH: g_value_set_int(value, osinfo_avatar_format_get_width(avatar)); break; case PROP_HEIGHT: g_value_set_int(value, osinfo_avatar_format_get_height(avatar)); break; case PROP_ALPHA: g_value_set_boolean(value, osinfo_avatar_format_get_alpha(avatar)); break; default: /* We don't have any other property... */ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); break; } } /* Init functions */ static void osinfo_avatar_format_class_init(OsinfoAvatarFormatClass *klass) { GObjectClass *g_klass = G_OBJECT_CLASS(klass); g_klass->get_property = osinfo_avatar_format_get_property; /** * OsinfoAvatarFormat:mime-types: (type GLib.List(utf8)) (transfer container): * * The allowed mime-types for the avatar. **/ properties[PROP_MIME_TYPES] = g_param_spec_pointer("mime-types", "MIME Types", _("The allowed mime-types for the avatar"), G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); /** * OsinfoAvatarFormat:width: * * The required width (in pixels) of the avatar. **/ properties[PROP_WIDTH] = g_param_spec_int("width", "Width", _("The required width (in pixels) of the avatar"), -1, G_MAXINT, -1, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); /** * OsinfoAvatarFormat:height: * * The required height (in pixels) of the avatar. **/ properties[PROP_HEIGHT] = g_param_spec_int("height", "Height", _("The required height (in pixels) of the avatar."), -1, G_MAXINT, -1, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); /** * OsinfoAvatarFormat:alpha: * * Whether alpha channel is supported in the avatar. **/ properties[PROP_ALPHA] = g_param_spec_boolean("alpha", "Alpha", _("Whether alpha channel is supported in the avatar."), TRUE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_properties(g_klass, LAST_PROP, properties); } static void osinfo_avatar_format_init(OsinfoAvatarFormat *avatar) { } /** * osinfo_avatar_format_new: * * Construct a new user avatar file for an #OsinfoInstallScript. * * Returns: (transfer full): the necessary information to create an avatar for * an user * * Since: 0.2.8 */ OsinfoAvatarFormat * osinfo_avatar_format_new(void) { return g_object_new(OSINFO_TYPE_AVATAR_FORMAT, NULL); } /** * osinfo_avatar_format_get_mime_types: * @avatar: the avatar info * * Returns: (transfer container) (element-type utf8): the required mime-types of the avatar. * * Since: 0.2.2 */ GList * osinfo_avatar_format_get_mime_types(OsinfoAvatarFormat *avatar) { return osinfo_entity_get_param_value_list(OSINFO_ENTITY(avatar), OSINFO_AVATAR_FORMAT_PROP_MIME_TYPE); } /** * osinfo_avatar_format_get_width: * @avatar: the avatar info * * Returns: the required width (in pixels) of the avatar, or -1. * * Since: 0.2.2 */ gint osinfo_avatar_format_get_width(OsinfoAvatarFormat *avatar) { return osinfo_entity_get_param_value_int64(OSINFO_ENTITY(avatar), OSINFO_AVATAR_FORMAT_PROP_WIDTH); } /** * osinfo_avatar_format_get_height: * @avatar: the avatar info * * Returns: the required height (in pixels) of the avatar, or -1. * * Since: 0.2.2 */ gint osinfo_avatar_format_get_height(OsinfoAvatarFormat *avatar) { return osinfo_entity_get_param_value_int64(OSINFO_ENTITY(avatar), OSINFO_AVATAR_FORMAT_PROP_HEIGHT); } /** * osinfo_avatar_format_get_alpha: * @avatar: the avatar info * * Returns: Whether alpha channel is supported in the avatar. * * Since: 0.2.2 */ gboolean osinfo_avatar_format_get_alpha(OsinfoAvatarFormat *avatar) { return osinfo_entity_get_param_value_boolean_with_default (OSINFO_ENTITY(avatar), OSINFO_AVATAR_FORMAT_PROP_ALPHA, TRUE); }