summaryrefslogtreecommitdiff
path: root/src/gs-lock-plug.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gs-lock-plug.c')
-rw-r--r--src/gs-lock-plug.c51
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));