Implement the locking dialog
This commit is contained in:
parent
875ff78fc5
commit
4e308d50e9
67
src/helper.c
67
src/helper.c
|
@ -209,9 +209,74 @@ static gboolean _lock_on_idle(gpointer data)
|
|||
|
||||
|
||||
/* panel_helper_lock_dialog */
|
||||
static gboolean _lock_dialog_on_closex(gpointer data);
|
||||
static void _lock_dialog_on_response(GtkWidget * widget, gint response,
|
||||
gpointer data);
|
||||
|
||||
static void _panel_helper_lock_dialog(Panel * panel)
|
||||
{
|
||||
/* FIXME implement */
|
||||
#ifdef EMBEDDED
|
||||
const char message[] = N_("This will lock your device.\n"
|
||||
"Do you really want to proceed?");
|
||||
#else
|
||||
const char message[] = N_("This will lock your session.\n"
|
||||
"Do you really want to proceed?");
|
||||
#endif
|
||||
GtkWidget * widget;
|
||||
|
||||
if(panel->lk_window != NULL)
|
||||
{
|
||||
gtk_window_present(GTK_WINDOW(panel->lk_window));
|
||||
return;
|
||||
}
|
||||
panel->lk_window = gtk_message_dialog_new(NULL, 0, GTK_MESSAGE_QUESTION,
|
||||
GTK_BUTTONS_NONE, "%s",
|
||||
#if GTK_CHECK_VERSION(2, 6, 0)
|
||||
_("Shutdown"));
|
||||
gtk_message_dialog_format_secondary_text(GTK_MESSAGE_DIALOG(
|
||||
panel->lk_window),
|
||||
#endif
|
||||
"%s", _(message));
|
||||
#if GTK_CHECK_VERSION(2, 10, 0)
|
||||
gtk_message_dialog_set_image(GTK_MESSAGE_DIALOG(panel->lk_window),
|
||||
gtk_image_new_from_icon_name("gnome-lockscreen",
|
||||
GTK_ICON_SIZE_DIALOG));
|
||||
#endif
|
||||
gtk_dialog_add_buttons(GTK_DIALOG(panel->lk_window), GTK_STOCK_CANCEL,
|
||||
FALSE, NULL);
|
||||
widget = gtk_button_new_with_label(_("Lock"));
|
||||
gtk_button_set_image(GTK_BUTTON(widget), gtk_image_new_from_icon_name(
|
||||
"gnome-lockscreen", GTK_ICON_SIZE_BUTTON));
|
||||
gtk_widget_show_all(widget);
|
||||
gtk_dialog_add_action_widget(GTK_DIALOG(panel->lk_window), widget,
|
||||
TRUE);
|
||||
gtk_window_set_keep_above(GTK_WINDOW(panel->lk_window), TRUE);
|
||||
gtk_window_set_position(GTK_WINDOW(panel->lk_window),
|
||||
GTK_WIN_POS_CENTER);
|
||||
gtk_window_set_title(GTK_WINDOW(panel->lk_window), _("Lock"));
|
||||
g_signal_connect(panel->lk_window, "delete-event", G_CALLBACK(
|
||||
_lock_dialog_on_closex), panel);
|
||||
g_signal_connect(panel->lk_window, "response", G_CALLBACK(
|
||||
_lock_dialog_on_response), panel);
|
||||
gtk_widget_show_all(panel->lk_window);
|
||||
}
|
||||
|
||||
static gboolean _lock_dialog_on_closex(gpointer data)
|
||||
{
|
||||
Panel * panel = data;
|
||||
|
||||
gtk_widget_hide(panel->lk_window);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void _lock_dialog_on_response(GtkWidget * widget, gint response,
|
||||
gpointer data)
|
||||
{
|
||||
Panel * panel = data;
|
||||
|
||||
gtk_widget_hide(widget);
|
||||
if(response == TRUE)
|
||||
_panel_helper_lock(panel);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -92,6 +92,7 @@ struct _Panel
|
|||
|
||||
/* dialogs */
|
||||
GtkWidget * ab_window;
|
||||
GtkWidget * lk_window;
|
||||
GtkWidget * lo_window;
|
||||
GtkWidget * sh_window;
|
||||
GtkWidget * su_window;
|
||||
|
@ -170,9 +171,8 @@ Panel * panel_new(PanelPrefs const * prefs)
|
|||
}
|
||||
panel->pr_window = NULL;
|
||||
panel->ab_window = NULL;
|
||||
#ifndef EMBEDDED
|
||||
panel->lk_window = NULL;
|
||||
panel->lo_window = NULL;
|
||||
#endif
|
||||
panel->sh_window = NULL;
|
||||
panel->su_window = NULL;
|
||||
if(panel->config == NULL)
|
||||
|
|
|
@ -55,6 +55,7 @@ struct _Panel
|
|||
|
||||
/* dialogs */
|
||||
GtkWidget * ab_window;
|
||||
GtkWidget * lk_window;
|
||||
GtkWidget * lo_window;
|
||||
GtkWidget * sh_window;
|
||||
GtkWidget * su_window;
|
||||
|
@ -167,6 +168,7 @@ static int _panel_init(Panel * panel, PanelWindowPosition position,
|
|||
panel->source = 0;
|
||||
panel->timeout = 0;
|
||||
panel->ab_window = NULL;
|
||||
panel->lk_window = NULL;
|
||||
panel->lo_window = NULL;
|
||||
panel->sh_window = NULL;
|
||||
panel->su_window = NULL;
|
||||
|
@ -188,6 +190,8 @@ static void _panel_destroy(Panel * panel)
|
|||
panel_window_delete(panel->windows[i]);
|
||||
if(panel->ab_window != NULL)
|
||||
gtk_widget_destroy(panel->ab_window);
|
||||
if(panel->lk_window != NULL)
|
||||
gtk_widget_destroy(panel->lk_window);
|
||||
if(panel->lo_window != NULL)
|
||||
gtk_widget_destroy(panel->lo_window);
|
||||
if(panel->sh_window != NULL)
|
||||
|
|
Loading…
Reference in New Issue
Block a user