~ubuntu-branches/ubuntu/precise/empathy/precise-proposed-201205180810

« back to all changes in this revision

Viewing changes to src/empathy-preferences.c

  • Committer: Bazaar Package Importer
  • Author(s): Brian Curtis, Brian Curtis, Ken VanDine
  • Date: 2011-06-01 10:35:24 UTC
  • mfrom: (1.1.70 upstream) (6.3.44 experimental)
  • Revision ID: james.westby@ubuntu.com-20110601103524-wx3wgp71394730jt
Tags: 3.1.1-1ubuntu1
[ Brian Curtis ]
* Merge with Debian experimental, remaining Ubuntu changes:
* debian/control:
  - Drop geoclue/mapping build-depends (they are in Universe)
  - Add Vcz-Bzr link
  - Add Suggests on telepathy-idle
  - Bump telepathy-butterfly, telepathy-haze to recommends
  - Don't recommend the freedesktop sound theme we have an ubuntu one
  - Add build depend for libunity-dev
* debian/rules:
  - Use autoreconf.mk
  - Disable map and location
* debian/empathy.install:
  - Install message indicator configuration
* debian/indicators/empathy:
  - Message indicator configuration
* debian/patches/01_lpi.patch:
  - Add Launchpad integration
* debian/patches/10_use_notify_osd_icons.patch:
  - Use the notify-osd image for new messages
* debian/patches/34_start_raised_execpt_in_session.patch
  - If not started with the session, we should always raise
* debian/patches/36_chat_window_default_size.patch:
  - Make the default chat window size larger
* debian/patches/37_facebook_default.patch:
  - Make facebook the default chat account type
* debian/patches/38_lp_569289.patch
  - Set freenode as default IRC network for new IRC accounts 
* debian/patches/41_unity_launcher_progress.patch
  - Display file transfer progress in the unity launcher

[ Ken VanDine ]
* debian/control
  - build depend on libgcr-3-dev instead of libgcr-dev
  - dropped build depends for libindicate, we will use telepathy-indicator
  - Depend on dconf-gsettings-backend | gsettings-backend
  - Added a Recommends for telepathy-indicator
* +debian/empathy.gsettings-override
  - Added an override for notifications-focus
* debian/patches/series
  - commented out 23_idomessagedialog_for_voip_and_ft.patch, until ido has 
    been ported to gtk3

Show diffs side-by-side

added added

removed removed

Lines of Context:
26
26
#include <config.h>
27
27
 
28
28
#include <string.h>
 
29
#include <stdio.h>
29
30
 
30
31
#include <gtk/gtk.h>
31
32
#include <glib/gi18n.h>
47
48
 
48
49
#include "empathy-preferences.h"
49
50
 
 
51
#define DEBUG_FLAG EMPATHY_DEBUG_OTHER
 
52
#include <libempathy/empathy-debug.h>
 
53
 
50
54
G_DEFINE_TYPE (EmpathyPreferences, empathy_preferences, GTK_TYPE_DIALOG);
51
55
 
52
56
#define GET_PRIV(self) ((EmpathyPreferencesPriv *)((EmpathyPreferences *) self)->priv)
56
60
 
57
61
        GtkWidget *checkbutton_show_smileys;
58
62
        GtkWidget *checkbutton_show_contacts_in_rooms;
59
 
        GtkWidget *checkbutton_use_libindicate;
60
 
        GtkWidget *combobox_chat_theme;
61
63
        GtkWidget *checkbutton_separate_chat_windows;
62
64
        GtkWidget *checkbutton_events_notif_area;
63
65
        GtkWidget *checkbutton_autoconnect;
81
83
        GtkWidget *checkbutton_location_resource_cell;
82
84
        GtkWidget *checkbutton_location_resource_gps;
83
85
 
 
86
        GtkWidget *vbox_chat_theme;
 
87
        GtkWidget *combobox_chat_theme;
 
88
        GtkWidget *sw_chat_theme_preview;
 
89
        EmpathyChatView *chat_theme_preview;
 
90
        EmpathyThemeManager *theme_manager;
 
91
 
84
92
        GSettings *gsettings;
85
93
        GSettings *gsettings_chat;
86
94
        GSettings *gsettings_loc;
102
110
static gboolean preferences_languages_load_foreach       (GtkTreeModel           *model,
103
111
                                                          GtkTreePath            *path,
104
112
                                                          GtkTreeIter            *iter,
105
 
                                                          gchar                 **languages);
 
113
                                                          GList                  *languages);
106
114
static void     preferences_languages_cell_toggled_cb    (GtkCellRendererToggle  *cell,
107
115
                                                          gchar                  *path_string,
108
116
                                                          EmpathyPreferences      *preferences);
115
123
};
116
124
 
117
125
enum {
118
 
        COL_COMBO_IS_ADIUM,
119
 
        COL_COMBO_VISIBLE_NAME,
120
 
        COL_COMBO_NAME,
121
 
        COL_COMBO_PATH,
122
 
        COL_COMBO_COUNT
 
126
        COL_THEME_VISIBLE_NAME,
 
127
        COL_THEME_NAME,
 
128
        COL_THEME_IS_ADIUM,
 
129
        COL_THEME_ADIUM_PATH,
 
130
        COL_THEME_COUNT
123
131
};
124
132
 
125
133
enum {
236
244
                         priv->checkbutton_show_smileys,
237
245
                         "active",
238
246
                         G_SETTINGS_BIND_DEFAULT);
239
 
#ifdef HAVE_LIBINDICATE
240
 
        g_settings_bind (priv->gsettings_ui,
241
 
                         EMPATHY_PREFS_UI_USE_LIBINDICATE,
242
 
                         priv->checkbutton_use_libindicate,
243
 
                         "active",
244
 
                         G_SETTINGS_BIND_DEFAULT);
245
 
#else
246
 
        gtk_widget_hide (GTK_WIDGET (priv->checkbutton_use_libindicate));
247
 
#endif
248
 
 
249
247
        g_settings_bind (priv->gsettings_chat,
250
248
                         EMPATHY_PREFS_CHAT_SHOW_CONTACTS_IN_ROOMS,
251
249
                         priv->checkbutton_show_contacts_in_rooms,
322
320
{
323
321
        EmpathyPreferencesPriv *priv = GET_PRIV (preferences);
324
322
        GtkTreePath *path;
325
 
        gboolean toggled, instore;
 
323
        gboolean instore;
326
324
        GtkTreeIter iter;
327
325
        GtkTreeView *view;
328
326
        GtkTreeModel *model;
332
330
        model = gtk_tree_view_get_model (view);
333
331
 
334
332
        path = gtk_tree_path_new_from_string (path_string);
335
 
        toggled = gtk_cell_renderer_toggle_get_active (toggle);
336
333
 
337
334
        gtk_tree_model_get_iter (model, &iter, path);
338
335
        gtk_tree_model_get (model, &iter, COL_SOUND_KEY, &key,
421
418
        GtkTreeView       *view;
422
419
        GtkListStore      *store;
423
420
        GtkTreeSelection  *selection;
424
 
        GtkTreeModel      *model;
425
421
        GtkTreeViewColumn *column;
426
422
        GtkCellRenderer   *renderer;
427
423
        guint              col_offset;
438
434
        selection = gtk_tree_view_get_selection (view);
439
435
        gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE);
440
436
 
441
 
        model = GTK_TREE_MODEL (store);
442
 
 
443
437
        renderer = gtk_cell_renderer_toggle_new ();
444
438
        g_signal_connect (renderer, "toggled",
445
439
                          G_CALLBACK (preferences_languages_cell_toggled_cb),
482
476
 
483
477
        codes = empathy_spell_get_language_codes ();
484
478
 
485
 
        g_settings_set_boolean (priv->gsettings_chat,
486
 
                                EMPATHY_PREFS_CHAT_SPELL_CHECKER_ENABLED,
487
 
                                codes != NULL);
488
479
        if (!codes) {
489
480
                gtk_widget_set_sensitive (priv->treeview_spell_checker, FALSE);
490
481
        }
580
571
        EmpathyPreferencesPriv *priv = GET_PRIV (preferences);
581
572
        GtkTreeView   *view;
582
573
        GtkTreeModel  *model;
583
 
        gchar         *value;
584
 
        gchar        **vlanguages;
585
 
 
586
 
        value = g_settings_get_string (priv->gsettings_chat,
587
 
                                       EMPATHY_PREFS_CHAT_SPELL_CHECKER_LANGUAGES);
588
 
 
589
 
        if (value == NULL)
 
574
        GList         *enabled_codes;
 
575
 
 
576
        enabled_codes = empathy_spell_get_enabled_language_codes ();
 
577
 
 
578
        g_settings_set_boolean (priv->gsettings_chat,
 
579
                                EMPATHY_PREFS_CHAT_SPELL_CHECKER_ENABLED,
 
580
                                enabled_codes != NULL);
 
581
 
 
582
        if (enabled_codes == NULL)
590
583
                return;
591
584
 
592
 
        vlanguages = g_strsplit (value, ",", -1);
593
 
        g_free (value);
594
 
 
595
585
        view = GTK_TREE_VIEW (priv->treeview_spell_checker);
596
586
        model = gtk_tree_view_get_model (view);
597
587
 
598
588
        gtk_tree_model_foreach (model,
599
589
                                (GtkTreeModelForeachFunc) preferences_languages_load_foreach,
600
 
                                vlanguages);
 
590
                                enabled_codes);
601
591
 
602
 
        g_strfreev (vlanguages);
 
592
        g_list_free (enabled_codes);
603
593
}
604
594
 
605
595
static gboolean
606
596
preferences_languages_load_foreach (GtkTreeModel  *model,
607
597
                                    GtkTreePath   *path,
608
598
                                    GtkTreeIter   *iter,
609
 
                                    gchar        **languages)
 
599
                                    GList         *languages)
610
600
{
611
601
        gchar    *code;
612
 
        gchar    *lang;
613
 
        gint      i;
614
602
        gboolean  found = FALSE;
615
603
 
616
604
        if (!languages) {
622
610
                return FALSE;
623
611
        }
624
612
 
625
 
        for (i = 0, lang = languages[i]; lang; lang = languages[++i]) {
626
 
                if (!tp_strdiff (lang, code)) {
627
 
                        found = TRUE;
628
 
                }
 
613
        if (g_list_find_custom (languages, code, (GCompareFunc) strcmp)) {
 
614
                found = TRUE;
629
615
        }
630
616
 
631
617
        g_free (code);
664
650
}
665
651
 
666
652
static void
 
653
preferences_preview_theme_append_message (EmpathyChatView *view,
 
654
                                          EmpathyContact *sender,
 
655
                                          EmpathyContact *receiver,
 
656
                                          const gchar *text)
 
657
{
 
658
        EmpathyMessage *message;
 
659
 
 
660
        message = g_object_new (EMPATHY_TYPE_MESSAGE,
 
661
                "sender", sender,
 
662
                "receiver", receiver,
 
663
                "body", text,
 
664
                NULL);
 
665
 
 
666
        empathy_chat_view_append_message (view, message);
 
667
        g_object_unref (message);
 
668
}
 
669
 
 
670
static void
 
671
preferences_preview_theme_changed_cb (EmpathyThemeManager *manager,
 
672
                                      EmpathyPreferences  *preferences)
 
673
{
 
674
        EmpathyPreferencesPriv *priv = GET_PRIV (preferences);
 
675
        TpDBusDaemon *dbus;
 
676
        TpAccount *account;
 
677
        EmpathyContact *juliet;
 
678
        EmpathyContact *romeo;
 
679
 
 
680
        DEBUG ("Theme changed, update preview widget");
 
681
 
 
682
        if (priv->chat_theme_preview != NULL) {
 
683
                gtk_widget_destroy (GTK_WIDGET (priv->chat_theme_preview));
 
684
        }
 
685
        priv->chat_theme_preview = empathy_theme_manager_create_view (manager);
 
686
        gtk_container_add (GTK_CONTAINER (priv->sw_chat_theme_preview),
 
687
                           GTK_WIDGET (priv->chat_theme_preview));
 
688
        gtk_widget_show (GTK_WIDGET (priv->chat_theme_preview));
 
689
 
 
690
        /* FIXME: It is ugly to add a fake conversation like that.
 
691
         * Would be cool if we could request a TplLogManager for a fake
 
692
         * conversation */
 
693
        dbus = tp_dbus_daemon_dup (NULL);
 
694
        account = tp_account_new (dbus,
 
695
                TP_ACCOUNT_OBJECT_PATH_BASE "cm/jabber/account", NULL);
 
696
        juliet = g_object_new (EMPATHY_TYPE_CONTACT,
 
697
                "account", account,
 
698
                "id", "juliet",
 
699
                /* translators: Contact name for the chat theme preview */
 
700
                "alias", _("Juliet"),
 
701
                "is-user", FALSE,
 
702
                NULL);
 
703
        romeo = g_object_new (EMPATHY_TYPE_CONTACT,
 
704
                "account", account,
 
705
                "id", "romeo",
 
706
                /* translators: Contact name for the chat theme preview */
 
707
                "alias", _("Romeo"),
 
708
                "is-user", TRUE,
 
709
                NULL);
 
710
 
 
711
        preferences_preview_theme_append_message (priv->chat_theme_preview,
 
712
                /* translators: Quote from Romeo & Julier, for chat theme preview */
 
713
                juliet, romeo, _("O Romeo, Romeo, wherefore art thou Romeo?"));
 
714
        preferences_preview_theme_append_message (priv->chat_theme_preview,
 
715
                /* translators: Quote from Romeo & Julier, for chat theme preview */
 
716
                juliet, romeo, _("Deny thy father and refuse thy name;"));
 
717
        preferences_preview_theme_append_message (priv->chat_theme_preview,
 
718
                /* translators: Quote from Romeo & Julier, for chat theme preview */
 
719
                juliet, romeo, _("Or if thou wilt not, be but sworn my love"));
 
720
        preferences_preview_theme_append_message (priv->chat_theme_preview,
 
721
                /* translators: Quote from Romeo & Julier, for chat theme preview */
 
722
                juliet, romeo, _("And I'll no longer be a Capulet."));
 
723
        preferences_preview_theme_append_message (priv->chat_theme_preview,
 
724
                /* translators: Quote from Romeo & Julier, for chat theme preview */
 
725
                romeo, juliet, _("Shall I hear more, or shall I speak at this?"));
 
726
 
 
727
        /* translators: Quote from Romeo & Julier, for chat theme preview */
 
728
        empathy_chat_view_append_event (priv->chat_theme_preview, _("Juliet has disconnected"));
 
729
 
 
730
        g_object_unref (juliet);
 
731
        g_object_unref (romeo);
 
732
        g_object_unref (account);
 
733
        g_object_unref (dbus);
 
734
}
 
735
 
 
736
static void
 
737
preferences_theme_changed_cb (GtkComboBox        *combo,
 
738
                              EmpathyPreferences *preferences)
 
739
{
 
740
        EmpathyPreferencesPriv *priv = GET_PRIV (preferences);
 
741
        GtkTreeIter   iter;
 
742
 
 
743
        if (gtk_combo_box_get_active_iter (combo, &iter)) {
 
744
                GtkTreeModel *model;
 
745
                gboolean      is_adium;
 
746
                gchar        *name;
 
747
                gchar        *path;
 
748
 
 
749
                model = gtk_combo_box_get_model (combo);
 
750
                gtk_tree_model_get (model, &iter,
 
751
                                    COL_THEME_IS_ADIUM, &is_adium,
 
752
                                    COL_THEME_NAME, &name,
 
753
                                    COL_THEME_ADIUM_PATH, &path,
 
754
                                    -1);
 
755
 
 
756
                g_settings_set_string (priv->gsettings_chat,
 
757
                                       EMPATHY_PREFS_CHAT_THEME,
 
758
                                       name);
 
759
                if (is_adium) {
 
760
                        g_settings_set_string (priv->gsettings_chat,
 
761
                                               EMPATHY_PREFS_CHAT_ADIUM_PATH,
 
762
                                               path);
 
763
                }
 
764
 
 
765
                g_free (name);
 
766
                g_free (path);
 
767
        }
 
768
}
 
769
 
 
770
static void
667
771
preferences_theme_notify_cb (GSettings   *gsettings,
668
772
                             const gchar *key,
669
773
                             gpointer     user_data)
676
780
        GtkTreeModel       *model;
677
781
        GtkTreeIter         iter;
678
782
        gboolean            found = FALSE;
 
783
        gboolean            ok;
679
784
 
680
785
        conf_name = g_settings_get_string (gsettings, EMPATHY_PREFS_CHAT_THEME);
681
786
        conf_path = g_settings_get_string (gsettings, EMPATHY_PREFS_CHAT_ADIUM_PATH);
682
787
 
683
788
        combo = GTK_COMBO_BOX (priv->combobox_chat_theme);
684
789
        model = gtk_combo_box_get_model (combo);
685
 
        if (gtk_tree_model_get_iter_first (model, &iter)) {
 
790
        for (ok = gtk_tree_model_get_iter_first (model, &iter);
 
791
             ok && !found;
 
792
             ok = gtk_tree_model_iter_next (model, &iter)) {
686
793
                gboolean is_adium;
687
794
                gchar *name;
688
795
                gchar *path;
689
796
 
690
 
                do {
691
 
                        gtk_tree_model_get (model, &iter,
692
 
                                            COL_COMBO_IS_ADIUM, &is_adium,
693
 
                                            COL_COMBO_NAME, &name,
694
 
                                            COL_COMBO_PATH, &path,
695
 
                                            -1);
696
 
 
697
 
                        if (!tp_strdiff (name, conf_name)) {
698
 
                                if (tp_strdiff (name, "adium") ||
699
 
                                    !tp_strdiff (path, conf_path)) {
700
 
                                        found = TRUE;
701
 
                                        gtk_combo_box_set_active_iter (combo, &iter);
702
 
                                        g_free (name);
703
 
                                        g_free (path);
704
 
                                        break;
705
 
                                }
706
 
                        }
707
 
 
708
 
                        g_free (name);
709
 
                        g_free (path);
710
 
                } while (gtk_tree_model_iter_next (model, &iter));
 
797
                gtk_tree_model_get (model, &iter,
 
798
                                    COL_THEME_IS_ADIUM, &is_adium,
 
799
                                    COL_THEME_NAME, &name,
 
800
                                    COL_THEME_ADIUM_PATH, &path,
 
801
                                    -1);
 
802
 
 
803
                if (!tp_strdiff (name, conf_name) &&
 
804
                    (!is_adium || !tp_strdiff (path, conf_path))) {
 
805
                        found = TRUE;
 
806
                        gtk_combo_box_set_active_iter (combo, &iter);
 
807
                }
 
808
 
 
809
                g_free (name);
 
810
                g_free (path);
711
811
        }
712
812
 
713
813
        /* Fallback to the first one. */
722
822
}
723
823
 
724
824
static void
725
 
preferences_theme_changed_cb (GtkComboBox        *combo,
726
 
                              EmpathyPreferences *preferences)
727
 
{
728
 
        EmpathyPreferencesPriv *priv = GET_PRIV (preferences);
729
 
        GtkTreeModel *model;
730
 
        GtkTreeIter   iter;
731
 
        gboolean      is_adium;
732
 
        gchar        *name;
733
 
        gchar        *path;
734
 
 
735
 
        if (gtk_combo_box_get_active_iter (combo, &iter)) {
736
 
                model = gtk_combo_box_get_model (combo);
737
 
 
738
 
                gtk_tree_model_get (model, &iter,
739
 
                                    COL_COMBO_IS_ADIUM, &is_adium,
740
 
                                    COL_COMBO_NAME, &name,
741
 
                                    COL_COMBO_PATH, &path,
742
 
                                    -1);
743
 
 
744
 
                g_settings_set_string (priv->gsettings_chat,
745
 
                                       EMPATHY_PREFS_CHAT_THEME,
746
 
                                       name);
747
 
                if (is_adium == TRUE)
748
 
                        g_settings_set_string (priv->gsettings_chat,
749
 
                                               EMPATHY_PREFS_CHAT_ADIUM_PATH,
750
 
                                               path);
751
 
                g_free (name);
752
 
                g_free (path);
753
 
        }
754
 
}
755
 
 
756
 
static void
757
825
preferences_themes_setup (EmpathyPreferences *preferences)
758
826
{
759
827
        EmpathyPreferencesPriv *priv = GET_PRIV (preferences);
769
837
        cell_layout = GTK_CELL_LAYOUT (combo);
770
838
 
771
839
        /* Create the model */
772
 
        store = gtk_list_store_new (COL_COMBO_COUNT,
773
 
                                    G_TYPE_BOOLEAN, /* Is an Adium theme */
774
 
                                    G_TYPE_STRING,  /* Display name */
775
 
                                    G_TYPE_STRING,  /* Theme name */
776
 
                                    G_TYPE_STRING); /* Theme path */
 
840
        store = gtk_list_store_new (COL_THEME_COUNT,
 
841
                                    G_TYPE_STRING,      /* Display name */
 
842
                                    G_TYPE_STRING,      /* Theme name */
 
843
                                    G_TYPE_BOOLEAN,     /* Is an Adium theme */
 
844
                                    G_TYPE_STRING);     /* Adium theme path */
777
845
        gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (store),
778
 
                COL_COMBO_VISIBLE_NAME, GTK_SORT_ASCENDING);
 
846
                COL_THEME_VISIBLE_NAME, GTK_SORT_ASCENDING);
779
847
 
780
848
        /* Fill the model */
781
849
        themes = empathy_theme_manager_get_themes ();
782
850
        for (i = 0; themes[i]; i += 2) {
783
851
                gtk_list_store_insert_with_values (store, NULL, -1,
784
 
                        COL_COMBO_IS_ADIUM, FALSE,
785
 
                        COL_COMBO_VISIBLE_NAME, _(themes[i + 1]),
786
 
                        COL_COMBO_NAME, themes[i],
787
 
                        COL_COMBO_PATH, NULL,
 
852
                        COL_THEME_VISIBLE_NAME, _(themes[i + 1]),
 
853
                        COL_THEME_NAME, themes[i],
 
854
                        COL_THEME_IS_ADIUM, FALSE,
788
855
                        -1);
789
856
        }
790
857
 
800
867
 
801
868
                if (name != NULL && path != NULL) {
802
869
                        gtk_list_store_insert_with_values (store, NULL, -1,
803
 
                                COL_COMBO_IS_ADIUM, TRUE,
804
 
                                COL_COMBO_VISIBLE_NAME, name,
805
 
                                COL_COMBO_NAME, "adium",
806
 
                                COL_COMBO_PATH, path,
 
870
                                COL_THEME_VISIBLE_NAME, name,
 
871
                                COL_THEME_NAME, "adium",
 
872
                                COL_THEME_IS_ADIUM, TRUE,
 
873
                                COL_THEME_ADIUM_PATH, path,
807
874
                                -1);
808
875
                }
809
876
                g_hash_table_unref (info);
814
881
        renderer = gtk_cell_renderer_text_new ();
815
882
        gtk_cell_layout_pack_start (cell_layout, renderer, TRUE);
816
883
        gtk_cell_layout_set_attributes (cell_layout, renderer,
817
 
                "text", COL_COMBO_VISIBLE_NAME, NULL);
 
884
                "text", COL_THEME_VISIBLE_NAME, NULL);
818
885
 
819
886
        gtk_combo_box_set_model (combo, GTK_TREE_MODEL (store));
820
887
        g_object_unref (store);
850
917
{
851
918
        EmpathyPreferencesPriv *priv = GET_PRIV (self);
852
919
 
 
920
        g_object_unref (priv->theme_manager);
 
921
 
853
922
        g_object_unref (priv->gsettings);
854
923
        g_object_unref (priv->gsettings_chat);
855
924
        g_object_unref (priv->gsettings_loc);
901
970
                "notebook", &priv->notebook,
902
971
                "checkbutton_show_smileys", &priv->checkbutton_show_smileys,
903
972
                "checkbutton_show_contacts_in_rooms", &priv->checkbutton_show_contacts_in_rooms,
904
 
                "checkbutton_use_libindicate", &priv->checkbutton_use_libindicate,
 
973
                "vbox_chat_theme", &priv->vbox_chat_theme,
905
974
                "combobox_chat_theme", &priv->combobox_chat_theme,
 
975
                "sw_chat_theme_preview", &priv->sw_chat_theme_preview,
906
976
                "checkbutton_separate_chat_windows", &priv->checkbutton_separate_chat_windows,
907
977
                "checkbutton_events_notif_area", &priv->checkbutton_events_notif_area,
908
978
                "checkbutton_autoconnect", &priv->checkbutton_autoconnect,
937
1007
        priv->gsettings_ui = g_settings_new (EMPATHY_PREFS_UI_SCHEMA);
938
1008
        priv->gsettings_logger = g_settings_new (EMPATHY_PREFS_LOGGER_SCHEMA);
939
1009
 
 
1010
        /* Create chat theme preview, and track changes */
 
1011
        priv->theme_manager = empathy_theme_manager_dup_singleton ();
 
1012
        tp_g_signal_connect_object (priv->theme_manager, "theme-changed",
 
1013
                          G_CALLBACK (preferences_preview_theme_changed_cb),
 
1014
                          preferences, 0);
 
1015
        preferences_preview_theme_changed_cb (priv->theme_manager, preferences);
 
1016
 
940
1017
        preferences_themes_setup (preferences);
941
1018
 
942
1019
        preferences_setup_widgets (preferences);