diff options
Diffstat (limited to 'src/gs-lock-plug.c')
-rw-r--r-- | src/gs-lock-plug.c | 51 |
1 files changed, 41 insertions, 10 deletions
diff --git a/src/gs-lock-plug.c b/src/gs-lock-plug.c index 3283302..bcb6a86 100644 --- a/src/gs-lock-plug.c +++ b/src/gs-lock-plug.c @@ -1,6 +1,7 @@ /* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- * * Copyright (C) 2004-2006 William Jon McCann <[email protected]> + * Copyright (C) 2012-2021 MATE Developers * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -58,6 +59,9 @@ #define KEY_LOCK_DIALOG_THEME "lock-dialog-theme" +#define KEY_LOCK_DIALOG_T_FMT "lock-dialog-time-format" +#define KEY_LOCK_DIALOG_D_FMT "lock-dialog-date-format" + #define MDM_FLEXISERVER_COMMAND "mdmflexiserver" #define MDM_FLEXISERVER_ARGS "--startnew Standard" @@ -132,7 +136,6 @@ struct _ResponseData gint response_id; }; - enum { RESPONSE, @@ -293,12 +296,42 @@ date_time_update (GSLockPlug *plug) GDateTime *datetime; gchar *time; gchar *date; + gchar *tfmt; + gchar *dfmt; + gchar *str; + GSettings *settings; + + settings = g_settings_new (GSETTINGS_SCHEMA); + tfmt = g_settings_get_string (settings, KEY_LOCK_DIALOG_T_FMT); + dfmt = g_settings_get_string (settings, KEY_LOCK_DIALOG_D_FMT); + g_object_unref (settings); + + /* Time/Date formating https://developer.gnome.org/glib/stable/glib-GDateTime.html#g-date-time-format */ + datetime = g_date_time_new_now_local (); - time = g_date_time_format (datetime, "%X"); - /* Translators: Date format, see https://developer.gnome.org/glib/stable/glib-GDateTime.html#g-date-time-format */ - date = g_date_time_format (datetime, _("%A, %B %e")); + if (g_strcmp0(tfmt, "locale") == 0) + { + // Use locale default format + time = g_date_time_format (datetime, "%X"); + } + else + { + // Apply user defined format + time = g_date_time_format (datetime, tfmt); + } + + if (g_strcmp0(dfmt, "locale") == 0) + { + // Use locale default format + date = g_date_time_format (datetime, _("%A, %B %e")); + } + else + { + // Apply user defined format + date = g_date_time_format (datetime, dfmt); + } str = g_strdup_printf ("<span size=\"xx-large\" weight=\"ultrabold\">%s</span>", time); gtk_label_set_text (GTK_LABEL (plug->priv->auth_time_label), str); @@ -312,6 +345,8 @@ date_time_update (GSLockPlug *plug) g_free (time); g_free (date); + g_free (tfmt); + g_free (dfmt); g_date_time_unref (datetime); } @@ -419,7 +454,6 @@ dialog_timed_out (gpointer user_data) return FALSE; } - static void capslock_update (GSLockPlug *plug, gboolean is_on) @@ -650,7 +684,6 @@ gs_lock_plug_run (GSLockPlug *plug) return ri.response_id; } - static cairo_surface_t * surface_from_pixbuf (GdkPixbuf *pixbuf) { @@ -835,7 +868,6 @@ frame_pixbuf (GdkPixbuf *source) h); rowstride = gdk_pixbuf_get_rowstride (dest); - data = g_new0 (guint8, h * rowstride); surface = cairo_image_surface_create_for_data (data, @@ -1019,7 +1051,6 @@ gs_lock_plug_show (GtkWidget *widget) gs_profile_end ("parent"); - if (plug->priv->auth_face_image) { set_face_image (plug); @@ -1692,8 +1723,8 @@ expand_string (const char *text) GString *str; const char *p; char *username; - int i; - int n_chars; + glong i; + glong n_chars; struct utsname name; str = g_string_sized_new (strlen (text)); |