]> git.0d.be Git - empathy.git/blobdiff - libempathy-gtk/empathy-theme-manager.c
theme-manager: automatically migrate from legacy themes to Adium themes
[empathy.git] / libempathy-gtk / empathy-theme-manager.c
index ff53c9594dcf9db85631406d7e82969700ac1fff..bb0b3f7844a98bf889c826fac08b1841d79f2176 100644 (file)
@@ -261,6 +261,51 @@ empathy_theme_manager_class_init (EmpathyThemeManagerClass *klass)
        object_class->finalize = theme_manager_finalize;
 }
 
+static void
+theme_manager_migrate_from_legacy_theme (EmpathyThemeManager *self)
+{
+       EmpathyThemeManagerPriv *priv = self->priv;
+       char *theme = g_settings_get_string (priv->gsettings_chat,
+                       EMPATHY_PREFS_CHAT_THEME);
+       const char *adium_theme, *variant = "";
+       char *path;
+
+       if (!tp_strdiff (theme, "adium")) {
+               goto finally;
+       } else if (!tp_strdiff (theme, "gnome")) {
+               adium_theme = "PlanetGNOME";
+       } else if (!tp_strdiff (theme, "simple")) {
+               adium_theme = "Boxes";
+               variant = "Simple";
+       } else if (!tp_strdiff (theme, "clean")) {
+               adium_theme = "Boxes";
+               variant = "Clean";
+       } else if (!tp_strdiff (theme, "blue")) {
+               adium_theme = "Boxes";
+               variant = "Blue";
+       } else {
+               adium_theme = "Classic";
+       }
+
+       path = g_strjoin (NULL, DATADIR, "/adium/message-styles/",
+               adium_theme, ".AdiumMessageStyle",
+               NULL);
+
+       DEBUG ("Migrating to '%s' variant '%s'", path, variant);
+
+       g_settings_set_string (priv->gsettings_chat,
+               EMPATHY_PREFS_CHAT_THEME, "adium");
+       g_settings_set_string (priv->gsettings_chat,
+               EMPATHY_PREFS_CHAT_ADIUM_PATH, path);
+       g_settings_set_string (priv->gsettings_chat,
+               EMPATHY_PREFS_CHAT_THEME_VARIANT, variant);
+
+       g_free (path);
+
+finally:
+       g_free (theme);
+}
+
 static void
 empathy_theme_manager_init (EmpathyThemeManager *manager)
 {
@@ -272,6 +317,8 @@ empathy_theme_manager_init (EmpathyThemeManager *manager)
 
        priv->gsettings_chat = g_settings_new (EMPATHY_PREFS_CHAT_SCHEMA);
 
+       theme_manager_migrate_from_legacy_theme (manager);
+
        /* Take the adium path/variant and track changes */
        g_signal_connect (priv->gsettings_chat,
                          "changed::" EMPATHY_PREFS_CHAT_ADIUM_PATH,