From 0c43dc403269208f3431aebcc01dd059d3b6d48f Mon Sep 17 00:00:00 2001
From: zhuyaliang <15132211195@163.com>
Date: Thu, 13 Jun 2019 23:07:46 +0800
Subject: Authentication to add modification time
---
capplets/time-admin/src/main.c | 72 ++++++++++++++++++++++++++----------
capplets/time-admin/src/time-share.h | 3 ++
2 files changed, 56 insertions(+), 19 deletions(-)
(limited to 'capplets')
diff --git a/capplets/time-admin/src/main.c b/capplets/time-admin/src/main.c
index b17ebc54..8b339cc2 100644
--- a/capplets/time-admin/src/main.c
+++ b/capplets/time-admin/src/main.c
@@ -14,13 +14,14 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
+#include
#include "time-tool.h"
#include "time-zone.h"
#include "time-map.h"
#define LOCKFILE "/tmp/time-admin.pid"
-#define TIME_ADMIN_PERMISSION "org.mate.user.admin.administration"
+#define TIME_ADMIN_PERMISSION "org.freedesktop.timedate1.set-time"
#define APPICON "mate-times-admin.png"
#define ICONFILE DATADIR APPICON
@@ -79,12 +80,36 @@ static void CloseWindow (GtkButton *button,gpointer data)
TimeAdmin *ta = (TimeAdmin *)data;
QuitApp(ta);
-}
+}
+static void UpdatePermission(TimeAdmin *ta)
+{
+ gboolean is_authorized;
+
+ is_authorized = g_permission_get_allowed (G_PERMISSION (ta->Permission));
+
+ gtk_widget_set_sensitive(ta->HourSpin, is_authorized);
+ gtk_widget_set_sensitive(ta->MinuteSpin, is_authorized);
+ gtk_widget_set_sensitive(ta->SecondSpin, is_authorized);
+ gtk_widget_set_sensitive(ta->TimeZoneButton, is_authorized);
+ gtk_widget_set_sensitive(ta->Calendar, is_authorized);
+ gtk_widget_set_sensitive(ta->SaveButton, is_authorized);
+ gtk_widget_set_sensitive(ta->NtpSyncSwitch, is_authorized);
+}
+
+
+static void on_permission_changed (GPermission *permission,
+ GParamSpec *pspec,
+ gpointer data)
+{
+ TimeAdmin *ua = (TimeAdmin *)data;
+ UpdatePermission(ua);
+}
+
static void InitMainWindow(TimeAdmin *ta)
{
GtkWidget *Window;
GdkPixbuf *AppIcon;
- //GError *error = NULL;
+ GError *error = NULL;
Window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
ta->MainWindow = WindowLogin = Window;
@@ -100,21 +125,28 @@ static void InitMainWindow(TimeAdmin *ta)
G_CALLBACK(on_window_quit),
ta);
- /*
- ua->Permission = polkit_permission_new_sync (USER_ADMIN_PERMISSION, NULL, NULL, &error);
- ua->ButtonLock = gtk_lock_button_new(ua->Permission);
- gtk_lock_button_set_permission(GTK_LOCK_BUTTON (ua->ButtonLock),ua->Permission);
- g_signal_connect(ua->Permission,
- "notify",
- G_CALLBACK (on_permission_changed),
- ua);
- */
AppIcon = GetAppIcon();
if(AppIcon)
{
gtk_window_set_icon(GTK_WINDOW(Window),AppIcon);
g_object_unref(AppIcon);
- }
+ }
+ ta->Permission = polkit_permission_new_sync (TIME_ADMIN_PERMISSION,
+ NULL,
+ NULL,
+ &error);
+ if (ta->Permission == NULL)
+ {
+ g_error_free (error);
+ return;
+ }
+ ta->ButtonLock = gtk_lock_button_new(ta->Permission);
+ gtk_lock_button_set_permission(GTK_LOCK_BUTTON (ta->ButtonLock),ta->Permission);
+ gtk_widget_grab_focus(ta->ButtonLock);
+ g_signal_connect(ta->Permission,
+ "notify",
+ G_CALLBACK (on_permission_changed),
+ ta);
}
static int RecordPid(void)
@@ -207,7 +239,6 @@ static GtkWidget * TimeZoneAndNtp(TimeAdmin *ta)
GtkWidget *table;
GtkWidget *TimeZoneLabel;
GtkWidget *NtpSyncLabel;
- GtkWidget *NtpSyncSwitch;
const char *TimeZone;
gboolean NtpState;
char *ZoneName;
@@ -236,17 +267,17 @@ static GtkWidget * TimeZoneAndNtp(TimeAdmin *ta)
SetLableFontType(NtpSyncLabel,11,_("Ntp Sync:"));
gtk_grid_attach(GTK_GRID(table) ,NtpSyncLabel, 0 , 1 , 1 , 1);
- NtpSyncSwitch = gtk_switch_new();
+ ta->NtpSyncSwitch = gtk_switch_new();
NtpState = GetNtpState(ta);
if(NtpState)
{
ReloadNtp(ta->proxy,NtpState);
}
ta->NtpState = NtpState;
- gtk_switch_set_state (GTK_SWITCH(NtpSyncSwitch),
+ gtk_switch_set_state (GTK_SWITCH(ta->NtpSyncSwitch),
NtpState);
- gtk_grid_attach(GTK_GRID(table) ,NtpSyncSwitch, 1 , 1 , 1 , 1);
- g_signal_connect (G_OBJECT(NtpSyncSwitch),
+ gtk_grid_attach(GTK_GRID(table) ,ta->NtpSyncSwitch, 1 , 1 , 1 , 1);
+ g_signal_connect (G_OBJECT(ta->NtpSyncSwitch),
"state-set",
G_CALLBACK (ChangeNtpSync),
ta);
@@ -343,7 +374,9 @@ static GtkWidget *SetDate(TimeAdmin *ta)
G_CALLBACK (CloseWindow),
ta);
- ta->SaveButton = gtk_button_new_with_label (_("Save"));
+ gtk_grid_attach(GTK_GRID(table) ,ta->ButtonLock, 1 , 5 , 1 , 1);
+
+ ta->SaveButton = gtk_button_new_with_label (_("Save"));
gtk_widget_set_sensitive(ta->SaveButton,!ta->NtpState);
gtk_grid_attach(GTK_GRID(table) ,ta->SaveButton, 2 , 5 , 1 , 1);
g_signal_connect (ta->SaveButton,
@@ -425,6 +458,7 @@ int main(int argc, char **argv)
exit(0);
}
CreateClockInterface(&ta);
+ UpdatePermission(&ta);
gtk_widget_show_all(ta.MainWindow);
gtk_main();
diff --git a/capplets/time-admin/src/time-share.h b/capplets/time-admin/src/time-share.h
index 453faeee..a0088a87 100644
--- a/capplets/time-admin/src/time-share.h
+++ b/capplets/time-admin/src/time-share.h
@@ -53,6 +53,7 @@ typedef struct
GtkWidget *MinuteSpin;
GtkWidget *SecondSpin;
GtkWidget *TimeZoneButton;
+ GtkWidget *NtpSyncSwitch;
GtkWidget *Calendar;
GtkWidget *CloseButton;
GtkWidget *SaveButton;
@@ -70,6 +71,8 @@ typedef struct
GtkWidget *map;
GtkListStore *CityListStore;
GtkTreeModelSort *CityModelSort;
+ GtkWidget *ButtonLock;
+ GPermission *Permission;
}TimeAdmin;
--
cgit v1.2.1