1115
1108
gtk_entry_set_visibility (GTK_ENTRY (widget), show);
1119
applet_mobile_pin_dialog_new (const char *title,
1122
const char *show_password_label,
1123
gboolean show_auto_unlock_checkbox)
1128
GError *error = NULL;
1129
GtkBuilder *builder;
1131
g_return_val_if_fail (title != NULL, NULL);
1132
g_return_val_if_fail (header != NULL, NULL);
1133
g_return_val_if_fail (desc != NULL, NULL);
1134
g_return_val_if_fail (show_password_label != NULL, NULL);
1136
builder = gtk_builder_new ();
1138
if (!gtk_builder_add_from_file (builder, UIDIR "/gsm-unlock.ui", &error)) {
1139
g_warning ("Couldn't load builder file: %s", error->message);
1140
g_error_free (error);
1141
g_object_unref (builder);
1145
dialog = GTK_WIDGET (gtk_builder_get_object (builder, "unlock_dialog"));
1147
g_object_unref (builder);
1148
g_return_val_if_fail (dialog != NULL, NULL);
1151
g_object_set_data_full (G_OBJECT (dialog), "builder", builder, (GDestroyNotify) g_object_unref);
1153
gtk_window_set_position (GTK_WINDOW(dialog), GTK_WIN_POS_CENTER_ALWAYS);
1154
gtk_window_set_title (GTK_WINDOW (dialog), title);
1156
widget = GTK_WIDGET (gtk_builder_get_object (builder, "header_label"));
1157
str = g_strdup_printf ("<span size=\"larger\" weight=\"bold\">%s</span>", header);
1158
gtk_label_set_use_markup (GTK_LABEL (widget), TRUE);
1159
gtk_label_set_markup (GTK_LABEL (widget), str);
1162
widget = GTK_WIDGET (gtk_builder_get_object (builder, "desc_label"));
1163
gtk_label_set_text (GTK_LABEL (widget), desc);
1165
widget = GTK_WIDGET (gtk_builder_get_object (builder, "show_password_checkbutton"));
1166
gtk_button_set_label (GTK_BUTTON (widget), show_password_label);
1167
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), FALSE);
1168
g_signal_connect (widget, "toggled", G_CALLBACK (show_toggled_cb), dialog);
1169
show_toggled_cb (widget, dialog);
1171
g_signal_connect (dialog, "delete-event", G_CALLBACK (mpd_cancel_dialog), NULL);
1173
widget = GTK_WIDGET (gtk_builder_get_object (builder, "save_checkbutton"));
1174
if (show_auto_unlock_checkbox)
1175
g_object_set_data (G_OBJECT (widget), "active", GUINT_TO_POINTER (TRUE));
1177
mpd_entry_changed (NULL, dialog);
1183
applet_mobile_pin_dialog_present (GtkWidget *dialog, gboolean now)
1185
GtkBuilder *builder;
1188
g_return_if_fail (dialog != NULL);
1189
builder = g_object_get_data (G_OBJECT (dialog), "builder");
1190
g_return_if_fail (builder != NULL);
1192
gtk_widget_show_all (dialog);
1194
widget = GTK_WIDGET (gtk_builder_get_object (builder, "progress_hbox"));
1195
gtk_widget_hide (widget);
1197
/* Hide inactive entries */
1199
widget = GTK_WIDGET (gtk_builder_get_object (builder, "code2_entry"));
1200
if (!g_object_get_data (G_OBJECT (widget), "active")) {
1201
gtk_widget_hide (widget);
1202
widget = GTK_WIDGET (gtk_builder_get_object (builder, "code2_label"));
1203
gtk_widget_hide (widget);
1206
widget = GTK_WIDGET (gtk_builder_get_object (builder, "code3_entry"));
1207
if (!g_object_get_data (G_OBJECT (widget), "active")) {
1208
gtk_widget_hide (widget);
1209
widget = GTK_WIDGET (gtk_builder_get_object (builder, "code3_label"));
1210
gtk_widget_hide (widget);
1213
widget = GTK_WIDGET (gtk_builder_get_object (builder, "save_checkbutton"));
1214
if (!g_object_get_data (G_OBJECT (widget), "active"))
1215
gtk_widget_hide (widget);
1217
/* Need to resize the dialog after hiding widgets */
1218
gtk_window_resize (GTK_WINDOW (dialog), 400, 100);
1220
/* Show the dialog */
1221
gtk_widget_realize (dialog);
1223
gtk_window_present_with_time (GTK_WINDOW (dialog),
1224
gdk_x11_get_server_time (gtk_widget_get_window (dialog)));
1226
gtk_window_present (GTK_WINDOW (dialog));
1230
1112
mpd_entry_filter (GtkEntry *entry,
1231
1113
const char *text,
1256
1138
g_free (result);
1260
mpd_set_entry (GtkWidget *dialog,
1261
const char *entry_name,
1262
const char *label_name,
1267
GtkBuilder *builder;
1269
gboolean entry2_active = FALSE;
1270
gboolean entry3_active = FALSE;
1272
g_return_if_fail (dialog != NULL);
1273
builder = g_object_get_data (G_OBJECT (dialog), "builder");
1274
g_return_if_fail (builder != NULL);
1276
widget = GTK_WIDGET (gtk_builder_get_object (builder, label_name));
1277
gtk_label_set_text (GTK_LABEL (widget), label);
1279
widget = GTK_WIDGET (gtk_builder_get_object (builder, entry_name));
1280
g_signal_connect (widget, "changed", G_CALLBACK (mpd_entry_changed), dialog);
1281
g_signal_connect (widget, "insert-text", G_CALLBACK (mpd_entry_filter), NULL);
1284
gtk_entry_set_max_length (GTK_ENTRY (widget), maxlen);
1285
g_object_set_data (G_OBJECT (widget), "minlen", GUINT_TO_POINTER (minlen));
1287
/* Tag it so we know it's active */
1288
g_object_set_data (G_OBJECT (widget), "active", GUINT_TO_POINTER (1));
1290
/* Make a single-entry dialog look better */
1291
widget = GTK_WIDGET (gtk_builder_get_object (builder, "code2_entry"));
1292
entry2_active = GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (widget), "active"));
1293
widget = GTK_WIDGET (gtk_builder_get_object (builder, "code3_entry"));
1294
entry3_active = GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (widget), "active"));
1296
widget = GTK_WIDGET (gtk_builder_get_object (builder, "table14"));
1297
if (entry2_active || entry3_active)
1298
gtk_table_set_row_spacings (GTK_TABLE (widget), 6);
1300
gtk_table_set_row_spacings (GTK_TABLE (widget), 0);
1302
mpd_entry_changed (NULL, dialog);
1306
applet_mobile_pin_dialog_set_entry1 (GtkWidget *dialog,
1311
mpd_set_entry (dialog, "code1_entry", "code1_label", label, minlen, maxlen);
1315
applet_mobile_pin_dialog_set_entry2 (GtkWidget *dialog,
1320
mpd_set_entry (dialog, "code2_entry", "code2_label", label, minlen, maxlen);
1324
applet_mobile_pin_dialog_set_entry3 (GtkWidget *dialog,
1329
mpd_set_entry (dialog, "code3_entry", "code3_label", label, minlen, maxlen);
1332
void applet_mobile_pin_dialog_match_23 (GtkWidget *dialog, gboolean match)
1334
g_return_if_fail (dialog != NULL);
1336
g_object_set_data (G_OBJECT (dialog), "match23", GUINT_TO_POINTER (match));
1340
mpd_get_entry (GtkWidget *dialog, const char *entry_name)
1342
GtkBuilder *builder;
1345
g_return_val_if_fail (dialog != NULL, NULL);
1346
builder = g_object_get_data (G_OBJECT (dialog), "builder");
1347
g_return_val_if_fail (builder != NULL, NULL);
1349
widget = GTK_WIDGET (gtk_builder_get_object (builder, entry_name));
1350
return gtk_entry_get_text (GTK_ENTRY (widget));
1354
1142
applet_mobile_pin_dialog_get_entry1 (GtkWidget *dialog)
1356
return mpd_get_entry (dialog, "code1_entry");
1144
GtkBuilder *builder;
1147
g_return_val_if_fail (dialog != NULL, NULL);
1148
builder = g_object_get_data (G_OBJECT (dialog), "builder");
1149
g_return_val_if_fail (builder != NULL, NULL);
1151
widget = GTK_WIDGET (gtk_builder_get_object (builder, "code1_entry"));
1152
return gtk_entry_get_text (GTK_ENTRY (widget));
1360
1156
applet_mobile_pin_dialog_get_entry2 (GtkWidget *dialog)
1362
return mpd_get_entry (dialog, "code2_entry");
1366
applet_mobile_pin_dialog_get_entry3 (GtkWidget *dialog)
1368
return mpd_get_entry (dialog, "code3_entry");
1158
GtkBuilder *builder;
1161
g_return_val_if_fail (dialog != NULL, NULL);
1162
builder = g_object_get_data (G_OBJECT (dialog), "builder");
1163
g_return_val_if_fail (builder != NULL, NULL);
1165
widget = GTK_WIDGET (gtk_builder_get_object (builder, "code2_entry"));
1166
return gtk_entry_get_text (GTK_ENTRY (widget));
1468
1266
gtk_widget_set_sensitive (widget, TRUE);
1270
applet_mobile_pin_dialog_new (const char *unlock_required,
1271
const char *device_description)
1277
GError *error = NULL;
1278
GtkBuilder *builder;
1279
const char *header = NULL;
1280
const char *title = NULL;
1281
const char *show_password_label = NULL;
1283
const char *label1 = NULL, *label2 = NULL, *label3 = NULL;
1284
gboolean match23 = FALSE;
1285
guint32 label1_min = 0, label2_min = 0, label3_min = 0;
1286
guint32 label1_max = 0, label2_max = 0, label3_max = 0;
1287
gboolean puk = FALSE;
1289
g_return_val_if_fail (unlock_required != NULL, NULL);
1290
g_return_val_if_fail (!strcmp (unlock_required, "sim-pin") || !strcmp (unlock_required, "sim-puk"), NULL);
1292
builder = gtk_builder_new ();
1294
if (!gtk_builder_add_from_file (builder, UIDIR "/gsm-unlock.ui", &error)) {
1295
g_warning ("Couldn't load builder file: %s", error->message);
1296
g_error_free (error);
1297
g_object_unref (builder);
1301
dialog = GTK_WIDGET (gtk_builder_get_object (builder, "unlock_dialog"));
1303
g_object_unref (builder);
1304
g_return_val_if_fail (dialog != NULL, NULL);
1307
g_object_set_data_full (G_OBJECT (dialog), "builder", builder, (GDestroyNotify) g_object_unref);
1309
/* Figure out the dialog text based on the required unlock code */
1310
if (!strcmp (unlock_required, "sim-pin")) {
1311
title = _("SIM PIN unlock required");
1312
header = _("SIM PIN Unlock Required");
1313
/* FIXME: some warning about # of times you can enter incorrect PIN */
1314
desc = g_strdup_printf (_("The mobile broadband device '%s' requires a SIM PIN code before it can be used."), device_description);
1315
/* Translators: PIN code entry label */
1316
label1 = _("PIN code:");
1319
/* Translators: Show/obscure PIN checkbox label */
1320
show_password_label = _("Show PIN code");
1321
} else if (!strcmp (unlock_required, "sim-puk")) {
1322
title = _("SIM PUK unlock required");
1323
header = _("SIM PUK Unlock Required");
1324
/* FIXME: some warning about # of times you can enter incorrect PUK */
1325
desc = g_strdup_printf (_("The mobile broadband device '%s' requires a SIM PUK code before it can be used."), device_description);
1326
/* Translators: PUK code entry label */
1327
label1 = _("PUK code:");
1328
label1_min = label1_max = 8;
1329
/* Translators: New PIN entry label */
1330
label2 = _("New PIN code:");
1331
/* Translators: New PIN verification entry label */
1332
label3 = _("Re-enter new PIN code:");
1333
label2_min = label3_min = 4;
1334
label2_max = label3_max = 8;
1336
/* Translators: Show/obscure PIN/PUK checkbox label */
1337
show_password_label = _("Show PIN/PUK codes");
1340
g_assert_not_reached ();
1342
gtk_window_set_position (GTK_WINDOW(dialog), GTK_WIN_POS_CENTER_ALWAYS);
1343
gtk_window_set_title (GTK_WINDOW (dialog), title);
1345
widget = GTK_WIDGET (gtk_builder_get_object (builder, "header_label"));
1346
str = g_strdup_printf ("<span size=\"larger\" weight=\"bold\">%s</span>", header);
1347
gtk_label_set_use_markup (GTK_LABEL (widget), TRUE);
1348
gtk_label_set_markup (GTK_LABEL (widget), str);
1351
widget = GTK_WIDGET (gtk_builder_get_object (builder, "desc_label"));
1352
gtk_label_set_text (GTK_LABEL (widget), desc);
1355
widget = GTK_WIDGET (gtk_builder_get_object (builder, "show_password_checkbutton"));
1356
gtk_button_set_label (GTK_BUTTON (widget), show_password_label);
1357
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), FALSE);
1358
g_signal_connect (widget, "toggled", G_CALLBACK (show_toggled_cb), dialog);
1359
show_toggled_cb (widget, dialog);
1361
g_signal_connect (dialog, "delete-event", G_CALLBACK (mpd_cancel_dialog), NULL);
1363
gtk_widget_show_all (dialog);
1365
widget = GTK_WIDGET (gtk_builder_get_object (builder, "save_checkbutton"));
1367
g_object_set_data (G_OBJECT (widget), "active", GUINT_TO_POINTER (TRUE));
1369
gtk_widget_hide (widget);
1372
g_object_set_data (G_OBJECT (dialog), "match23", GUINT_TO_POINTER (match23));
1375
label = GTK_WIDGET (gtk_builder_get_object (builder, "code1_label"));
1376
widget = GTK_WIDGET (gtk_builder_get_object (builder, "code1_entry"));
1377
gtk_label_set_text (GTK_LABEL (label), label1);
1378
g_signal_connect (widget, "changed", G_CALLBACK (mpd_entry_changed), dialog);
1379
g_signal_connect (widget, "insert-text", G_CALLBACK (mpd_entry_filter), NULL);
1381
gtk_entry_set_max_length (GTK_ENTRY (widget), label1_max);
1382
g_object_set_data (G_OBJECT (widget), "minlen", GUINT_TO_POINTER (label1_min));
1383
g_object_set_data (G_OBJECT (widget), "active", GUINT_TO_POINTER (1));
1386
label = GTK_WIDGET (gtk_builder_get_object (builder, "code2_label"));
1387
widget = GTK_WIDGET (gtk_builder_get_object (builder, "code2_entry"));
1389
gtk_label_set_text (GTK_LABEL (label), label2);
1390
g_signal_connect (widget, "changed", G_CALLBACK (mpd_entry_changed), dialog);
1391
g_signal_connect (widget, "insert-text", G_CALLBACK (mpd_entry_filter), NULL);
1393
gtk_entry_set_max_length (GTK_ENTRY (widget), label2_max);
1394
g_object_set_data (G_OBJECT (widget), "minlen", GUINT_TO_POINTER (label2_min));
1395
g_object_set_data (G_OBJECT (widget), "active", GUINT_TO_POINTER (1));
1397
gtk_widget_hide (label);
1398
gtk_widget_hide (widget);
1403
widget = GTK_WIDGET (gtk_builder_get_object (builder, "code3_label"));
1404
gtk_label_set_text (GTK_LABEL (widget), label3);
1405
widget = GTK_WIDGET (gtk_builder_get_object (builder, "code3_entry"));
1406
g_signal_connect (widget, "changed", G_CALLBACK (mpd_entry_changed), dialog);
1407
g_signal_connect (widget, "insert-text", G_CALLBACK (mpd_entry_filter), NULL);
1409
gtk_entry_set_max_length (GTK_ENTRY (widget), label3_max);
1410
g_object_set_data (G_OBJECT (widget), "minlen", GUINT_TO_POINTER (label3_min));
1411
g_object_set_data (G_OBJECT (widget), "active", GUINT_TO_POINTER (1));
1413
gtk_widget_hide (label);
1414
gtk_widget_hide (widget);
1417
/* Make a single-entry dialog look better */
1418
widget = GTK_WIDGET (gtk_builder_get_object (builder, "table14"));
1419
if (label2 || label3)
1420
gtk_table_set_row_spacings (GTK_TABLE (widget), 6);
1422
gtk_table_set_row_spacings (GTK_TABLE (widget), 0);
1424
widget = GTK_WIDGET (gtk_builder_get_object (builder, "progress_hbox"));
1425
gtk_widget_hide (widget);
1427
mpd_entry_changed (NULL, dialog);