Exemplo n.º 1
0
static GIcon *
g_content_type_get_icon_internal (const gchar *type,
                                  gboolean     symbolic)
{
  char *mimetype_icon;
  char *generic_mimetype_icon = NULL;
  char *q;
  char *xdg_mimetype_icon;
  char *legacy_mimetype_icon;
  char *xdg_mimetype_generic_icon;
  char *icon_names[5];
  int n = 0;
  GIcon *themed_icon;
  const char *file_template;

  g_return_val_if_fail (type != NULL, NULL);

  if (symbolic)
    {
      file_template = "%s-symbolic";
    }
  else
    {
      file_template = "%s";
    }

  G_LOCK (gio_xdgmime);
  xdg_mimetype_icon = g_strdup_printf (file_template, xdg_mime_get_icon (type));
  G_UNLOCK (gio_xdgmime);
  xdg_mimetype_generic_icon = g_content_type_get_generic_icon_name (type);

  mimetype_icon = g_strdup_printf (file_template, type);
  if (xdg_mimetype_generic_icon)
    generic_mimetype_icon = g_strdup_printf (file_template, xdg_mimetype_generic_icon);

  while ((q = strchr (mimetype_icon, '/')) != NULL)
    *q = '-';

  /* Not all icons have migrated to the new icon theme spec, look for old names too */
  legacy_mimetype_icon = g_strconcat ("gnome-mime-", mimetype_icon, NULL);

  if (xdg_mimetype_icon)
    icon_names[n++] = xdg_mimetype_icon;

  icon_names[n++] = mimetype_icon;
  icon_names[n++] = legacy_mimetype_icon;

  if (generic_mimetype_icon)
    icon_names[n++] = generic_mimetype_icon;

  themed_icon = g_themed_icon_new_from_names (icon_names, n);

  g_free (xdg_mimetype_icon);
  g_free (xdg_mimetype_generic_icon);
  g_free (mimetype_icon);
  g_free (legacy_mimetype_icon);
  g_free (generic_mimetype_icon);

  return themed_icon;
}
Exemplo n.º 2
0
static GIcon *
g_content_type_get_icon_internal (const gchar *type,
                                  gboolean     symbolic)
{
  char *mimetype_icon;
  char *generic_mimetype_icon = NULL;
  char *q;
  char *xdg_mimetype_icon = NULL;
  char *xdg_mimetype_generic_icon;
  char *icon_names[3];
  int n = 0;
  GIcon *themed_icon;
  const char *file_template;
  const char  *xdg_icon;

  g_return_val_if_fail (type != NULL, NULL);

  if (symbolic)
    {
      file_template = "%s-symbolic";
    }
  else
    {
      file_template = "%s";
    }

  G_LOCK (gio_xdgmime);
  xdg_icon = xdg_mime_get_icon (type);
  G_UNLOCK (gio_xdgmime);
  if (xdg_icon != NULL)
    xdg_mimetype_icon = g_strdup_printf (file_template, xdg_icon);

  if (xdg_mimetype_icon)
    icon_names[n++] = xdg_mimetype_icon;

  mimetype_icon = g_strdup_printf (file_template, type);
  while ((q = strchr (mimetype_icon, '/')) != NULL)
    *q = '-';

  icon_names[n++] = mimetype_icon;

  xdg_mimetype_generic_icon = g_content_type_get_generic_icon_name (type);
  if (xdg_mimetype_generic_icon)
    generic_mimetype_icon = g_strdup_printf (file_template, xdg_mimetype_generic_icon);
  if (generic_mimetype_icon)
    icon_names[n++] = generic_mimetype_icon;

  themed_icon = g_themed_icon_new_from_names (icon_names, n);

  g_free (xdg_mimetype_icon);
  g_free (xdg_mimetype_generic_icon);
  g_free (mimetype_icon);
  g_free (generic_mimetype_icon);

  return themed_icon;
}
Exemplo n.º 3
0
static GIcon *
g_content_type_get_icon_internal (const gchar *type,
                                  gboolean     symbolic)
{
  char *mimetype_icon;
  char *generic_mimetype_icon = NULL;
  char *q;
  char *xdg_mimetype_icon = NULL;
  char *xdg_mimetype_generic_icon;
  char *icon_names[3];
  int n = 0;
  GIcon *themed_icon;
  const char  *xdg_icon;
  const char *suffix;

  g_return_val_if_fail (type != NULL, NULL);

  if (symbolic)
    suffix = "-symbolic";
  else
    suffix = "";

  G_LOCK (gio_xdgmime);
  xdg_icon = xdg_mime_get_icon (type);
  G_UNLOCK (gio_xdgmime);
   if (xdg_icon != NULL)
    xdg_mimetype_icon = g_strconcat (xdg_icon, suffix, NULL);

  if (xdg_mimetype_icon)
    icon_names[n++] = xdg_mimetype_icon;

  mimetype_icon = g_strconcat (type, suffix, NULL);
  while ((q = strchr (mimetype_icon, '/')) != NULL)
    *q = '-';

  icon_names[n++] = mimetype_icon;

  xdg_mimetype_generic_icon = g_content_type_get_generic_icon_name (type);
  if (xdg_mimetype_generic_icon)
    generic_mimetype_icon = g_strconcat (xdg_mimetype_generic_icon, suffix, NULL);
  if (generic_mimetype_icon)
    icon_names[n++] = generic_mimetype_icon;

  themed_icon = g_themed_icon_new_from_names (icon_names, n);

  g_free (xdg_mimetype_icon);
  g_free (xdg_mimetype_generic_icon);
  g_free (mimetype_icon);
  g_free (generic_mimetype_icon);

  return themed_icon;
}
Exemplo n.º 4
0
static GIcon *
g_content_type_get_icon_internal (const gchar *type,
                                  gboolean     symbolic)
{
  char *mimetype_icon;
  char *generic_mimetype_icon = NULL;
  char *q;
  char *icon_names[6];
  int n = 0;
  GIcon *themed_icon;
  const char  *xdg_icon;
  int i;

  g_return_val_if_fail (type != NULL, NULL);

  G_LOCK (gio_xdgmime);
  xdg_icon = xdg_mime_get_icon (type);
  G_UNLOCK (gio_xdgmime);

  if (xdg_icon)
    icon_names[n++] = g_strdup (xdg_icon);

  mimetype_icon = g_strdup (type);
  while ((q = strchr (mimetype_icon, '/')) != NULL)
    *q = '-';

  icon_names[n++] = mimetype_icon;

  generic_mimetype_icon = g_content_type_get_generic_icon_name (type);
  if (generic_mimetype_icon)
    icon_names[n++] = generic_mimetype_icon;

  if (symbolic)
    {
      for (i = 0; i < n; i++)
        {
          icon_names[n + i] = icon_names[i];
          icon_names[i] = g_strconcat (icon_names[i], "-symbolic", NULL);
        }

      n += n;
    }

  themed_icon = g_themed_icon_new_from_names (icon_names, n);

  for (i = 0; i < n; i++)
    g_free (icon_names[i]);

  return themed_icon;
}