user-accounts: Move more functions to common/
This commit is contained in:
parent
e2dafa4169
commit
93832da41f
3 changed files with 12 additions and 96 deletions
|
@ -148,9 +148,10 @@ row_activated (GtkTreeView *tree_view,
|
||||||
{
|
{
|
||||||
gtk_dialog_response (GTK_DIALOG (chooser), GTK_RESPONSE_OK);
|
gtk_dialog_response (GTK_DIALOG (chooser), GTK_RESPONSE_OK);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static gboolean
|
gboolean
|
||||||
language_has_font (const gchar *locale)
|
cc_common_language_has_font (const gchar *locale)
|
||||||
{
|
{
|
||||||
const FcCharSet *charset;
|
const FcCharSet *charset;
|
||||||
FcPattern *pattern;
|
FcPattern *pattern;
|
||||||
|
@ -207,8 +208,8 @@ language_has_font (const gchar *locale)
|
||||||
return is_displayable;
|
return is_displayable;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
void
|
||||||
add_available_languages (GtkListStore *store)
|
cc_common_language_add_available_languages (GtkListStore *store)
|
||||||
{
|
{
|
||||||
char **languages;
|
char **languages;
|
||||||
int i;
|
int i;
|
||||||
|
@ -221,7 +222,7 @@ add_available_languages (GtkListStore *store)
|
||||||
languages = gdm_get_all_language_names ();
|
languages = gdm_get_all_language_names ();
|
||||||
|
|
||||||
for (i = 0; languages[i] != NULL; i++) {
|
for (i = 0; languages[i] != NULL; i++) {
|
||||||
if (!language_has_font (languages[i]))
|
if (!cc_common_language_has_font (languages[i]))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
name = gdm_normalize_language_name (languages[i]);
|
name = gdm_normalize_language_name (languages[i]);
|
||||||
|
@ -237,6 +238,7 @@ add_available_languages (GtkListStore *store)
|
||||||
g_strfreev (languages);
|
g_strfreev (languages);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
void
|
void
|
||||||
um_add_user_languages (GtkTreeModel *model)
|
um_add_user_languages (GtkTreeModel *model)
|
||||||
{
|
{
|
||||||
|
@ -262,7 +264,7 @@ um_add_user_languages (GtkTreeModel *model)
|
||||||
for (l = users; l; l = l->next) {
|
for (l = users; l; l = l->next) {
|
||||||
user = l->data;
|
user = l->data;
|
||||||
lang = um_user_get_language (user);
|
lang = um_user_get_language (user);
|
||||||
if (!lang || !language_has_font (lang)) {
|
if (!lang || !cc_common_language_has_font (lang)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -41,6 +41,8 @@ gint cc_common_language_sort_languages (GtkTreeModel *model,
|
||||||
gboolean cc_common_language_get_iter_for_language (GtkTreeModel *model,
|
gboolean cc_common_language_get_iter_for_language (GtkTreeModel *model,
|
||||||
const gchar *lang,
|
const gchar *lang,
|
||||||
GtkTreeIter *iter);
|
GtkTreeIter *iter);
|
||||||
|
void cc_common_language_add_available_languages (GtkListStore *store);
|
||||||
|
gboolean cc_common_language_has_font (const gchar *locale);
|
||||||
|
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
|
@ -87,94 +87,6 @@ row_activated (GtkTreeView *tree_view,
|
||||||
gtk_dialog_response (GTK_DIALOG (chooser), GTK_RESPONSE_OK);
|
gtk_dialog_response (GTK_DIALOG (chooser), GTK_RESPONSE_OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
|
||||||
language_has_font (const gchar *locale)
|
|
||||||
{
|
|
||||||
const FcCharSet *charset;
|
|
||||||
FcPattern *pattern;
|
|
||||||
FcObjectSet *object_set;
|
|
||||||
FcFontSet *font_set;
|
|
||||||
gchar *language_code;
|
|
||||||
gboolean is_displayable;
|
|
||||||
|
|
||||||
is_displayable = FALSE;
|
|
||||||
pattern = NULL;
|
|
||||||
object_set = NULL;
|
|
||||||
font_set = NULL;
|
|
||||||
|
|
||||||
if (!gdm_parse_language_name (locale, &language_code, NULL, NULL, NULL))
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
charset = FcLangGetCharSet ((FcChar8 *) language_code);
|
|
||||||
if (!charset) {
|
|
||||||
/* fontconfig does not know about this language */
|
|
||||||
is_displayable = TRUE;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
/* see if any fonts support rendering it */
|
|
||||||
pattern = FcPatternBuild (NULL, FC_LANG, FcTypeString, language_code, NULL);
|
|
||||||
|
|
||||||
if (pattern == NULL)
|
|
||||||
goto done;
|
|
||||||
|
|
||||||
object_set = FcObjectSetCreate ();
|
|
||||||
|
|
||||||
if (object_set == NULL)
|
|
||||||
goto done;
|
|
||||||
|
|
||||||
font_set = FcFontList (NULL, pattern, object_set);
|
|
||||||
|
|
||||||
if (font_set == NULL)
|
|
||||||
goto done;
|
|
||||||
|
|
||||||
is_displayable = (font_set->nfont > 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
done:
|
|
||||||
if (font_set != NULL)
|
|
||||||
FcFontSetDestroy (font_set);
|
|
||||||
|
|
||||||
if (object_set != NULL)
|
|
||||||
FcObjectSetDestroy (object_set);
|
|
||||||
|
|
||||||
if (pattern != NULL)
|
|
||||||
FcPatternDestroy (pattern);
|
|
||||||
|
|
||||||
g_free (language_code);
|
|
||||||
|
|
||||||
return is_displayable;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
add_available_languages (GtkListStore *store)
|
|
||||||
{
|
|
||||||
char **languages;
|
|
||||||
int i;
|
|
||||||
char *name;
|
|
||||||
char *language;
|
|
||||||
GtkTreeIter iter;
|
|
||||||
|
|
||||||
gtk_list_store_clear (store);
|
|
||||||
|
|
||||||
languages = gdm_get_all_language_names ();
|
|
||||||
|
|
||||||
for (i = 0; languages[i] != NULL; i++) {
|
|
||||||
if (!language_has_font (languages[i]))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
name = gdm_normalize_language_name (languages[i]);
|
|
||||||
language = gdm_get_language_from_name (name, NULL);
|
|
||||||
|
|
||||||
gtk_list_store_append (store, &iter);
|
|
||||||
gtk_list_store_set (store, &iter, LOCALE_COL, name, DISPLAY_LOCALE_COL, language, -1);
|
|
||||||
|
|
||||||
g_free (name);
|
|
||||||
g_free (language);
|
|
||||||
}
|
|
||||||
|
|
||||||
g_strfreev (languages);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
um_add_user_languages (GtkTreeModel *model)
|
um_add_user_languages (GtkTreeModel *model)
|
||||||
{
|
{
|
||||||
|
@ -199,7 +111,7 @@ um_add_user_languages (GtkTreeModel *model)
|
||||||
for (l = users; l; l = l->next) {
|
for (l = users; l; l = l->next) {
|
||||||
user = l->data;
|
user = l->data;
|
||||||
lang = um_user_get_language (user);
|
lang = um_user_get_language (user);
|
||||||
if (!lang || !language_has_font (lang)) {
|
if (!lang || !cc_common_language_has_font (lang)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -300,7 +212,7 @@ um_language_chooser_new (void)
|
||||||
|
|
||||||
gtk_tree_view_set_model (GTK_TREE_VIEW (list), GTK_TREE_MODEL (store));
|
gtk_tree_view_set_model (GTK_TREE_VIEW (list), GTK_TREE_MODEL (store));
|
||||||
|
|
||||||
add_available_languages (store);
|
cc_common_language_add_available_languages (store);
|
||||||
|
|
||||||
g_object_unref (builder);
|
g_object_unref (builder);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue