82
99
fingerprint_buf, accountname, protocol);
84
101
if (fingerprint) {
85
sprintf(s, "Fingerprint: %.80s", fingerprint);
102
sprintf(s, _("Fingerprint: %.80s"), fingerprint);
86
103
if (ui_layout.generate_button)
87
104
gtk_widget_set_sensitive(ui_layout.generate_button, 0);
89
sprintf(s, "No key present");
106
sprintf(s, _("No key present"));
90
107
if (ui_layout.generate_button)
91
108
gtk_widget_set_sensitive(ui_layout.generate_button, 1);
94
sprintf(s, "No account available");
111
sprintf(s, _("No account available"));
95
112
if (ui_layout.generate_button)
96
113
gtk_widget_set_sensitive(ui_layout.generate_button, 0);
104
static GtkWidget *accountmenu_get_selected_item(void)
108
if (ui_layout.accountmenu == NULL) return NULL;
110
menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(ui_layout.accountmenu));
111
return gtk_menu_get_active(GTK_MENU(menu));
114
static PurpleAccount *item_get_account(GtkWidget *item)
116
if (!item) return NULL;
117
return g_object_get_data(G_OBJECT(item), "account");
120
121
/* Call this function when the DSA key is updated; it will redraw the
121
122
* UI, if visible. */
122
123
static void otrg_gtk_ui_update_fingerprint(void)
125
PurpleAccount *account;
128
item = accountmenu_get_selected_item();
132
account = item_get_account(item);
133
user_data = g_object_get_data(G_OBJECT(ui_layout.accountmenu),
136
account_menu_changed_cb(item, account, user_data);
125
g_signal_emit_by_name(G_OBJECT(ui_layout.accountmenu), "changed");
139
128
static void account_menu_added_removed_cb(PurpleAccount *account, void *data)
179
168
titles[0] = context->username;
180
169
if (context->msgstate == OTRL_MSGSTATE_ENCRYPTED &&
181
170
context->active_fingerprint != fingerprint) {
182
titles[1] = "Unused";
171
titles[1] = _("Unused");
184
173
titles[1] = (gchar *)
185
trust_states[otrg_plugin_context_to_trust(context)];
174
_(trust_states[otrg_plugin_context_to_trust(context)]);
187
176
titles[2] = (fingerprint->trust && fingerprint->trust[0]) ?
189
178
otrl_privkey_hash_to_human(hash, fingerprint->fingerprint);
190
179
titles[3] = hash;
191
180
p = purple_find_prpl(context->protocol);
192
proto_name = (p && p->info->name) ? p->info->name : "Unknown";
181
proto_name = (p && p->info->name) ? p->info->name : _("Unknown");
193
182
titles[4] = g_strdup_printf("%s (%s)", context->accountname,
195
184
i = gtk_clist_append(GTK_CLIST(keylist), titles);
385
374
otrg_dialog_verify_fingerprint(fingerprint);
388
static void otroptions_clicked_cb(GtkButton *button, struct otroptionsdata *oo)
377
static void otrsettings_clicked_cb(GtkButton *button,
378
struct otrsettingsdata *os)
390
gtk_widget_set_sensitive(oo->enablebox, TRUE);
380
gtk_widget_set_sensitive(os->enablebox, TRUE);
391
381
if (gtk_toggle_button_get_active(
392
GTK_TOGGLE_BUTTON(oo->enablebox))) {
393
gtk_widget_set_sensitive(oo->automaticbox, TRUE);
382
GTK_TOGGLE_BUTTON(os->enablebox))) {
383
gtk_widget_set_sensitive(os->automaticbox, TRUE);
394
384
if (gtk_toggle_button_get_active(
395
GTK_TOGGLE_BUTTON(oo->automaticbox))) {
396
gtk_widget_set_sensitive(oo->onlyprivatebox, TRUE);
385
GTK_TOGGLE_BUTTON(os->automaticbox))) {
386
gtk_widget_set_sensitive(os->onlyprivatebox, TRUE);
398
gtk_widget_set_sensitive(oo->onlyprivatebox, FALSE);
388
gtk_widget_set_sensitive(os->onlyprivatebox, FALSE);
390
gtk_widget_set_sensitive(os->avoidloggingotrbox, TRUE);
401
gtk_widget_set_sensitive(oo->automaticbox, FALSE);
402
gtk_widget_set_sensitive(oo->onlyprivatebox, FALSE);
392
gtk_widget_set_sensitive(os->automaticbox, FALSE);
393
gtk_widget_set_sensitive(os->onlyprivatebox, FALSE);
394
gtk_widget_set_sensitive(os->avoidloggingotrbox, FALSE);
406
static void create_otroption_buttons(struct otroptionsdata *oo,
398
static void create_otrsettings_buttons(struct otrsettingsdata *os,
409
401
GtkWidget *tempbox1, *tempbox2;
411
oo->enablebox = gtk_check_button_new_with_label("Enable private "
413
oo->automaticbox = gtk_check_button_new_with_label("Automatically "
414
"initiate private messaging");
415
oo->onlyprivatebox = gtk_check_button_new_with_label("Require private "
403
os->enablebox = gtk_check_button_new_with_label(_("Enable private "
405
os->automaticbox = gtk_check_button_new_with_label(_("Automatically "
406
"initiate private messaging"));
407
os->onlyprivatebox = gtk_check_button_new_with_label(_("Require private "
409
os->avoidloggingotrbox = gtk_check_button_new_with_label(
410
_("Don't log OTR conversations"));
418
gtk_box_pack_start(GTK_BOX(vbox), oo->enablebox,
412
gtk_box_pack_start(GTK_BOX(vbox), os->enablebox,
419
413
FALSE, FALSE, 0);
420
414
tempbox1 = gtk_hbox_new(FALSE, 0);
421
415
gtk_box_pack_start(GTK_BOX(vbox), tempbox1,
423
417
tempbox2 = gtk_vbox_new(FALSE, 0);
424
418
gtk_box_pack_start(GTK_BOX(tempbox1), tempbox2, FALSE, FALSE, 5);
426
gtk_box_pack_start(GTK_BOX(tempbox2), oo->automaticbox,
420
gtk_box_pack_start(GTK_BOX(tempbox2), os->automaticbox,
427
421
FALSE, FALSE, 0);
428
422
tempbox1 = gtk_hbox_new(FALSE, 0);
429
423
gtk_box_pack_start(GTK_BOX(tempbox2), tempbox1, FALSE, FALSE, 0);
430
424
tempbox2 = gtk_vbox_new(FALSE, 0);
431
425
gtk_box_pack_start(GTK_BOX(tempbox1), tempbox2, FALSE, FALSE, 5);
433
gtk_box_pack_start(GTK_BOX(tempbox2), oo->onlyprivatebox,
427
gtk_box_pack_start(GTK_BOX(tempbox2), os->onlyprivatebox,
434
428
FALSE, FALSE, 0);
436
g_signal_connect(G_OBJECT(oo->enablebox), "clicked",
437
G_CALLBACK(otroptions_clicked_cb), oo);
438
g_signal_connect(G_OBJECT(oo->automaticbox), "clicked",
439
G_CALLBACK(otroptions_clicked_cb), oo);
440
g_signal_connect(G_OBJECT(oo->onlyprivatebox), "clicked",
430
gtk_box_pack_start(GTK_BOX(vbox), os->avoidloggingotrbox, FALSE, FALSE, 5);
432
g_signal_connect(G_OBJECT(os->enablebox), "clicked",
433
G_CALLBACK(otrsettings_clicked_cb), os);
434
g_signal_connect(G_OBJECT(os->automaticbox), "clicked",
435
G_CALLBACK(otrsettings_clicked_cb), os);
436
g_signal_connect(G_OBJECT(os->onlyprivatebox), "clicked",
437
G_CALLBACK(otrsettings_clicked_cb), os);
438
g_signal_connect(G_OBJECT(os->avoidloggingotrbox), "clicked",
439
G_CALLBACK(otrsettings_clicked_cb), os);
442
static void otroptions_clicked_cb(GtkButton *button,
443
struct otroptionsdata *oo)
445
/* This doesn't really do anything useful right now, but is here for
446
* future expansion purposes. */
447
gtk_widget_set_sensitive(oo->showotrbutton, TRUE);
450
static void create_otroptions_buttons(struct otroptionsdata *oo,
453
#ifdef OLD_OTR_BUTTON
454
oo->showotrbutton = gtk_check_button_new_with_label(_("Show OTR button"));
456
oo->showotrbutton = gtk_check_button_new_with_label(
457
_("Show OTR button in toolbar"));
460
gtk_box_pack_start(GTK_BOX(vbox), oo->showotrbutton, FALSE, FALSE, 0);
462
g_signal_connect(G_OBJECT(oo->showotrbutton), "clicked",
441
463
G_CALLBACK(otroptions_clicked_cb), oo);
444
466
/* Load the global OTR prefs */
445
467
static void otrg_gtk_ui_global_prefs_load(gboolean *enabledp,
446
gboolean *automaticp, gboolean *onlyprivatep)
468
gboolean *automaticp, gboolean *onlyprivatep,
469
gboolean *avoidloggingotrp)
448
471
if (purple_prefs_exists("/OTR/enabled")) {
449
472
*enabledp = purple_prefs_get_bool("/OTR/enabled");
450
473
*automaticp = purple_prefs_get_bool("/OTR/automatic");
451
474
*onlyprivatep = purple_prefs_get_bool("/OTR/onlyprivate");
475
*avoidloggingotrp = purple_prefs_get_bool("/OTR/avoidloggingotr");
453
477
*enabledp = TRUE;
454
478
*automaticp = TRUE;
455
479
*onlyprivatep = FALSE;
480
*avoidloggingotrp = FALSE;
459
484
/* Save the global OTR prefs */
460
485
static void otrg_gtk_ui_global_prefs_save(gboolean enabled,
461
gboolean automatic, gboolean onlyprivate)
486
gboolean automatic, gboolean onlyprivate, gboolean avoidloggingotr)
463
488
if (! purple_prefs_exists("/OTR")) {
464
489
purple_prefs_add_none("/OTR");
466
491
purple_prefs_set_bool("/OTR/enabled", enabled);
467
492
purple_prefs_set_bool("/OTR/automatic", automatic);
468
493
purple_prefs_set_bool("/OTR/onlyprivate", onlyprivate);
494
purple_prefs_set_bool("/OTR/avoidloggingotr", avoidloggingotr);
471
497
/* Load the OTR prefs for a particular buddy */
472
498
static void otrg_gtk_ui_buddy_prefs_load(PurpleBuddy *buddy,
473
499
gboolean *usedefaultp, gboolean *enabledp, gboolean *automaticp,
474
gboolean *onlyprivatep)
500
gboolean *onlyprivatep, gboolean *avoidloggingotrp)
476
502
PurpleBlistNode *node = &(buddy->node);
478
504
*usedefaultp = ! purple_blist_node_get_bool(node, "OTR/overridedefault");
480
506
if (*usedefaultp) {
481
otrg_gtk_ui_global_prefs_load(enabledp, automaticp, onlyprivatep);
507
otrg_gtk_ui_global_prefs_load(enabledp, automaticp, onlyprivatep,
483
510
*enabledp = purple_blist_node_get_bool(node, "OTR/enabled");
484
511
*automaticp = purple_blist_node_get_bool(node, "OTR/automatic");
485
512
*onlyprivatep = purple_blist_node_get_bool(node, "OTR/onlyprivate");
514
purple_blist_node_get_bool(node, "OTR/avoidloggingotr");
489
518
/* Save the OTR prefs for a particular buddy */
490
519
static void otrg_gtk_ui_buddy_prefs_save(PurpleBuddy *buddy,
491
520
gboolean usedefault, gboolean enabled, gboolean automatic,
492
gboolean onlyprivate)
521
gboolean onlyprivate, gboolean avoidloggingotr)
494
523
PurpleBlistNode *node = &(buddy->node);
497
526
purple_blist_node_set_bool(node, "OTR/enabled", enabled);
498
527
purple_blist_node_set_bool(node, "OTR/automatic", automatic);
499
528
purple_blist_node_set_bool(node, "OTR/onlyprivate", onlyprivate);
529
purple_blist_node_set_bool(node, "OTR/avoidloggingotr", avoidloggingotr);
502
static void load_otroptions(struct otroptionsdata *oo)
532
static void load_otrsettings(struct otrsettingsdata *os)
504
534
gboolean otrenabled;
505
535
gboolean otrautomatic;
506
536
gboolean otronlyprivate;
508
otrg_gtk_ui_global_prefs_load(&otrenabled, &otrautomatic, &otronlyprivate);
510
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(oo->enablebox),
537
gboolean otravoidloggingotr;
539
otrg_gtk_ui_global_prefs_load(&otrenabled, &otrautomatic, &otronlyprivate,
540
&otravoidloggingotr);
542
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(os->enablebox),
512
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(oo->automaticbox),
544
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(os->automaticbox),
514
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(oo->onlyprivatebox),
546
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(os->onlyprivatebox),
517
otroptions_clicked_cb(GTK_BUTTON(oo->enablebox), oo);
548
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(os->avoidloggingotrbox),
551
otrsettings_clicked_cb(GTK_BUTTON(os->enablebox), os);
554
/* Load the global OTR UI options */
555
static void otrg_gtk_ui_global_options_load(gboolean *showotrbuttonp)
557
if (purple_prefs_exists("/OTR/showotrbutton")) {
558
*showotrbuttonp = purple_prefs_get_bool("/OTR/showotrbutton");
560
#ifdef OLD_OTR_BUTTON
561
*showotrbuttonp = FALSE;
563
*showotrbuttonp = TRUE;
568
/* Save the global OTR UI options */
569
static void otrg_gtk_ui_global_options_save(gboolean showotrbutton)
571
if (! purple_prefs_exists("/OTR")) {
572
purple_prefs_add_none("/OTR");
574
if (! purple_prefs_exists("/OTR/showotrbutton")) {
575
purple_prefs_add_bool("/OTR/showotrbutton", showotrbutton);
577
purple_prefs_set_bool("/OTR/showotrbutton", showotrbutton);
581
static void load_otroptions(struct otroptionsdata *oo)
583
gboolean showotrbutton;
585
otrg_gtk_ui_global_options_load(&showotrbutton);
587
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(oo->showotrbutton),
590
otroptions_clicked_cb(GTK_BUTTON(oo->showotrbutton), oo);
520
593
/* Create the privkeys UI, and pack it into the vbox */
568
641
FALSE, FALSE, 0);
571
/* Save the global OTR options whenever they're clicked */
644
/* Save the global OTR settings whenever they're clicked */
645
static void otrsettings_save_cb(GtkButton *button, struct otrsettingsdata *os)
647
otrg_gtk_ui_global_prefs_save(
648
gtk_toggle_button_get_active(
649
GTK_TOGGLE_BUTTON(os->enablebox)),
650
gtk_toggle_button_get_active(
651
GTK_TOGGLE_BUTTON(os->automaticbox)),
652
gtk_toggle_button_get_active(
653
GTK_TOGGLE_BUTTON(os->onlyprivatebox)),
654
gtk_toggle_button_get_active(
655
GTK_TOGGLE_BUTTON(os->avoidloggingotrbox)));
657
otrg_dialog_resensitize_all();
660
/* Save the global OTR UI options whenever they're clicked */
572
661
static void otroptions_save_cb(GtkButton *button, struct otroptionsdata *oo)
574
otrg_gtk_ui_global_prefs_save(
575
gtk_toggle_button_get_active(
576
GTK_TOGGLE_BUTTON(oo->enablebox)),
577
gtk_toggle_button_get_active(
578
GTK_TOGGLE_BUTTON(oo->automaticbox)),
579
gtk_toggle_button_get_active(
580
GTK_TOGGLE_BUTTON(oo->onlyprivatebox)));
663
otrg_gtk_ui_global_options_save(
664
gtk_toggle_button_get_active(
665
GTK_TOGGLE_BUTTON(oo->showotrbutton)));
582
667
otrg_dialog_resensitize_all();
670
/* Make the settings UI, and pack it into the vbox */
671
static void make_settings_ui(GtkWidget *vbox)
676
frame = gtk_frame_new(_("Default OTR Settings"));
677
gtk_box_pack_start(GTK_BOX(vbox), frame, FALSE, FALSE, 0);
679
fbox = gtk_vbox_new(FALSE, 0);
680
gtk_container_set_border_width(GTK_CONTAINER(fbox), 10);
681
gtk_container_add(GTK_CONTAINER(frame), fbox);
683
create_otrsettings_buttons(&(ui_layout.os), fbox);
685
load_otrsettings(&(ui_layout.os));
687
g_signal_connect(G_OBJECT(ui_layout.os.enablebox), "clicked",
688
G_CALLBACK(otrsettings_save_cb), &(ui_layout.os));
689
g_signal_connect(G_OBJECT(ui_layout.os.automaticbox), "clicked",
690
G_CALLBACK(otrsettings_save_cb), &(ui_layout.os));
691
g_signal_connect(G_OBJECT(ui_layout.os.onlyprivatebox), "clicked",
692
G_CALLBACK(otrsettings_save_cb), &(ui_layout.os));
693
g_signal_connect(G_OBJECT(ui_layout.os.avoidloggingotrbox), "clicked",
694
G_CALLBACK(otrsettings_save_cb), &(ui_layout.os));
585
697
/* Make the options UI, and pack it into the vbox */
586
698
static void make_options_ui(GtkWidget *vbox)
589
701
GtkWidget *frame;
591
frame = gtk_frame_new("Default OTR Settings");
703
frame = gtk_frame_new(_("OTR UI Options"));
592
704
gtk_box_pack_start(GTK_BOX(vbox), frame, FALSE, FALSE, 0);
594
706
fbox = gtk_vbox_new(FALSE, 0);
595
707
gtk_container_set_border_width(GTK_CONTAINER(fbox), 10);
596
708
gtk_container_add(GTK_CONTAINER(frame), fbox);
598
create_otroption_buttons(&(ui_layout.oo), fbox);
710
create_otroptions_buttons(&(ui_layout.oo), fbox);
600
712
load_otroptions(&(ui_layout.oo));
602
g_signal_connect(G_OBJECT(ui_layout.oo.enablebox), "clicked",
603
G_CALLBACK(otroptions_save_cb), &(ui_layout.oo));
604
g_signal_connect(G_OBJECT(ui_layout.oo.automaticbox), "clicked",
605
G_CALLBACK(otroptions_save_cb), &(ui_layout.oo));
606
g_signal_connect(G_OBJECT(ui_layout.oo.onlyprivatebox), "clicked",
714
g_signal_connect(G_OBJECT(ui_layout.oo.showotrbutton), "clicked",
607
715
G_CALLBACK(otroptions_save_cb), &(ui_layout.oo));
744
859
gboolean defaultset =
745
860
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->defaultbox));
746
861
if (defaultset) {
747
gtk_widget_set_sensitive(data->oo.enablebox, FALSE);
748
gtk_widget_set_sensitive(data->oo.automaticbox, FALSE);
749
gtk_widget_set_sensitive(data->oo.onlyprivatebox, FALSE);
862
gtk_widget_set_sensitive(data->os.enablebox, FALSE);
863
gtk_widget_set_sensitive(data->os.automaticbox, FALSE);
864
gtk_widget_set_sensitive(data->os.onlyprivatebox, FALSE);
865
gtk_widget_set_sensitive(data->os.avoidloggingotrbox, FALSE);
751
otroptions_clicked_cb(button, &(data->oo));
867
otrsettings_clicked_cb(button, &(data->os));
755
871
static void load_buddyprefs(struct cbdata *data)
757
gboolean usedefault, enabled, automatic, onlyprivate;
873
gboolean usedefault, enabled, automatic, onlyprivate, avoidloggingotr;
759
875
otrg_gtk_ui_buddy_prefs_load(data->buddy, &usedefault, &enabled,
760
&automatic, &onlyprivate);
876
&automatic, &onlyprivate, &avoidloggingotr);
762
878
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->defaultbox),
765
881
if (usedefault) {
766
882
/* Load the global defaults */
767
load_otroptions(&(data->oo));
883
load_otrsettings(&(data->os));
769
885
/* We've got buddy-specific prefs */
770
886
gtk_toggle_button_set_active(
771
GTK_TOGGLE_BUTTON(data->oo.enablebox), enabled);
772
gtk_toggle_button_set_active(
773
GTK_TOGGLE_BUTTON(data->oo.automaticbox), automatic);
774
gtk_toggle_button_set_active(
775
GTK_TOGGLE_BUTTON(data->oo.onlyprivatebox), onlyprivate);
887
GTK_TOGGLE_BUTTON(data->os.enablebox), enabled);
888
gtk_toggle_button_set_active(
889
GTK_TOGGLE_BUTTON(data->os.automaticbox), automatic);
890
gtk_toggle_button_set_active(
891
GTK_TOGGLE_BUTTON(data->os.onlyprivatebox), onlyprivate);
892
gtk_toggle_button_set_active(
893
GTK_TOGGLE_BUTTON(data->os.avoidloggingotrbox),
778
897
default_clicked_cb(GTK_BUTTON(data->defaultbox), data);
835
957
/* Set the title */
837
label_text = g_strdup_printf("<span weight=\"bold\" size=\"larger\">"
838
"OTR Settings for %s</span>", purple_buddy_get_contact_alias(buddy));
959
label_text = g_strdup_printf(_("OTR Settings for %s"),
960
purple_buddy_get_contact_alias(buddy));
961
label_markup = g_strdup_printf("<span weight=\"bold\" size=\"larger\">"
962
"%s</span>", label_text);
840
964
label = gtk_label_new(NULL);
842
gtk_label_set_markup(GTK_LABEL(label), label_text);
966
gtk_label_set_markup(GTK_LABEL(label), label_markup);
967
g_free(label_markup);
843
968
g_free(label_text);
844
969
gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
845
970
gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
857
982
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), gtk_hseparator_new(),
858
983
FALSE, FALSE, 5);
860
create_otroption_buttons(&(data->oo), GTK_DIALOG(dialog)->vbox);
985
create_otrsettings_buttons(&(data->os), GTK_DIALOG(dialog)->vbox);
862
987
g_signal_connect(G_OBJECT(data->defaultbox), "clicked",
863
988
G_CALLBACK(default_clicked_cb), data);
864
989
g_signal_connect(G_OBJECT(data->defaultbox), "clicked",
865
990
G_CALLBACK(config_buddy_clicked_cb), data);
866
g_signal_connect(G_OBJECT(data->oo.enablebox), "clicked",
867
G_CALLBACK(config_buddy_clicked_cb), data);
868
g_signal_connect(G_OBJECT(data->oo.automaticbox), "clicked",
869
G_CALLBACK(config_buddy_clicked_cb), data);
870
g_signal_connect(G_OBJECT(data->oo.onlyprivatebox), "clicked",
991
g_signal_connect(G_OBJECT(data->os.enablebox), "clicked",
992
G_CALLBACK(config_buddy_clicked_cb), data);
993
g_signal_connect(G_OBJECT(data->os.automaticbox), "clicked",
994
G_CALLBACK(config_buddy_clicked_cb), data);
995
g_signal_connect(G_OBJECT(data->os.onlyprivatebox), "clicked",
996
G_CALLBACK(config_buddy_clicked_cb), data);
997
g_signal_connect(G_OBJECT(data->os.avoidloggingotrbox), "clicked",
871
998
G_CALLBACK(config_buddy_clicked_cb), data);
873
1000
/* Set the inital states of the buttons */
881
1008
gtk_widget_show_all(dialog);
884
/* Calculate the policy for a particular account / username */
885
static OtrlPolicy otrg_gtk_ui_find_policy(PurpleAccount *account,
1011
/* Load the preferences for a particular account / username */
1012
static void otrg_gtk_ui_get_prefs(OtrgUiPrefs *prefsp, PurpleAccount *account,
886
1013
const char *name)
888
1015
PurpleBuddy *buddy;
889
gboolean otrenabled, otrautomatic, otronlyprivate;
890
gboolean buddyusedefault, buddyenabled, buddyautomatic, buddyonlyprivate;
891
OtrlPolicy policy = OTRL_POLICY_DEFAULT;
1016
gboolean otrenabled, otrautomatic, otronlyprivate, otravoidloggingotr;
1017
gboolean buddyusedefault, buddyenabled, buddyautomatic, buddyonlyprivate,
1018
buddyavoidloggingotr;
1020
prefsp->policy = OTRL_POLICY_DEFAULT;
1021
prefsp->avoid_logging_otr = FALSE;
1022
prefsp->show_otr_button = FALSE;
893
1024
/* Get the default policy */
894
otrg_gtk_ui_global_prefs_load(&otrenabled, &otrautomatic, &otronlyprivate);
1025
otrg_gtk_ui_global_prefs_load(&otrenabled, &otrautomatic, &otronlyprivate,
1026
&otravoidloggingotr);
1027
otrg_gtk_ui_global_options_load(&(prefsp->show_otr_button));
896
1029
if (otrenabled) {
897
1030
if (otrautomatic) {
898
1031
if (otronlyprivate) {
899
policy = OTRL_POLICY_ALWAYS;
1032
prefsp->policy = OTRL_POLICY_ALWAYS;
901
policy = OTRL_POLICY_OPPORTUNISTIC;
1034
prefsp->policy = OTRL_POLICY_OPPORTUNISTIC;
904
policy = OTRL_POLICY_MANUAL;
1037
prefsp->policy = OTRL_POLICY_MANUAL;
1039
prefsp->avoid_logging_otr = otravoidloggingotr;
907
policy = OTRL_POLICY_NEVER;
1041
prefsp->policy = OTRL_POLICY_NEVER;
910
1044
buddy = purple_find_buddy(account, name);
911
if (!buddy) return policy;
913
1047
/* Get the buddy-specific policy, if present */
914
1048
otrg_gtk_ui_buddy_prefs_load(buddy, &buddyusedefault, &buddyenabled,
915
&buddyautomatic, &buddyonlyprivate);
1049
&buddyautomatic, &buddyonlyprivate, &buddyavoidloggingotr);
917
if (buddyusedefault) return policy;
1051
if (buddyusedefault) return;
919
1053
if (buddyenabled) {
920
1054
if (buddyautomatic) {
921
1055
if (buddyonlyprivate) {
922
policy = OTRL_POLICY_ALWAYS;
1056
prefsp->policy = OTRL_POLICY_ALWAYS;
924
policy = OTRL_POLICY_OPPORTUNISTIC;
1058
prefsp->policy = OTRL_POLICY_OPPORTUNISTIC;
927
policy = OTRL_POLICY_MANUAL;
1061
prefsp->policy = OTRL_POLICY_MANUAL;
1063
prefsp->avoid_logging_otr = buddyavoidloggingotr;
930
policy = OTRL_POLICY_NEVER;
1065
prefsp->policy = OTRL_POLICY_NEVER;
1069
/* Initialize the OTR UI subsystem */
1070
static void otrg_gtk_ui_init(void)
1075
/* Deinitialize the OTR UI subsystem */
1076
static void otrg_gtk_ui_cleanup(void)
936
1081
static const OtrgUiUiOps gtk_ui_ui_ops = {
1083
otrg_gtk_ui_cleanup,
937
1084
otrg_gtk_ui_update_fingerprint,
938
1085
otrg_gtk_ui_update_keylist,
939
1086
otrg_gtk_ui_config_buddy,
940
otrg_gtk_ui_find_policy
1087
otrg_gtk_ui_get_prefs
943
1090
/* Get the GTK UI ops */