417
tracker_config_file_migrate (TrackerConfigFile *file,
419
TrackerConfigMigrationEntry *entries)
417
migrate_keyfile_to_settings (TrackerConfigMigrationEntry *entries,
418
TrackerConfigFile *file,
423
g_return_val_if_fail (TRACKER_IS_CONFIG_FILE (file), FALSE);
425
if (!file->key_file || !file->file_exists) {
429
423
g_message ("Migrating configuration to GSettings...");
431
425
for (i = 0; entries[i].type != G_TYPE_INVALID; i++) {
490
g_file_delete (file->file, NULL, NULL);
491
485
g_message ("Finished migration to GSettings.");
491
migrate_settings_to_keyfile (TrackerConfigMigrationEntry *entries,
493
TrackerConfigFile *file)
497
g_message ("Storing configuration to Keyfile...");
499
for (i = 0; entries[i].type != G_TYPE_INVALID; i++) {
500
switch (entries[i].type) {
505
if (entries[i].type == G_TYPE_INT) {
506
val = g_settings_get_int (settings, entries[i].settings_key);
508
val = g_settings_get_enum (settings, entries[i].settings_key);
511
g_key_file_set_integer (file->key_file,
512
entries[i].file_section,
517
case G_TYPE_BOOLEAN: {
520
val = g_settings_get_boolean (settings, entries[i].settings_key);
521
g_key_file_set_boolean (file->key_file,
522
entries[i].file_section,
527
case G_TYPE_POINTER: {
530
vals = g_settings_get_strv (settings, entries[i].settings_key);
533
g_key_file_set_string_list (file->key_file,
534
entries[i].file_section,
536
(const gchar * const *)vals,
537
g_strv_length (vals));
544
g_assert_not_reached ();
551
TrackerConfigFile *file;
552
TrackerConfigMigrationEntry *entries;
553
} UnappliedNotifyData;
556
settings_has_unapplied_notify (GObject *object,
560
UnappliedNotifyData *data = user_data;
562
if (!g_settings_get_has_unapplied (G_SETTINGS (object))) {
563
/* Dump to config file too */
564
migrate_settings_to_keyfile (data->entries,
567
tracker_config_file_save (data->file);
572
tracker_config_file_migrate (TrackerConfigFile *file,
574
TrackerConfigMigrationEntry *entries)
576
g_return_val_if_fail (TRACKER_IS_CONFIG_FILE (file), FALSE);
578
if (file->key_file && file->file_exists) {
579
migrate_keyfile_to_settings (entries, file, settings);
582
if (g_getenv ("TRACKER_USE_CONFIG_FILES")) {
583
UnappliedNotifyData *data;
585
/* Ensure we have the config file in place */
586
if (!file->file_exists) {
587
migrate_settings_to_keyfile (entries,
590
tracker_config_file_save (file);
593
/* Keep the file around, and connect to notify::has-unapplied so
594
* we write back to it when g_settings_apply() is called
596
data = g_new (UnappliedNotifyData, 1);
597
data->file = g_object_ref (file);
598
data->entries = entries;
600
g_signal_connect (settings, "notify::has-unapplied",
601
G_CALLBACK (settings_has_unapplied_notify),
604
/* The config file has been migrated to GSettings, delete it */
605
g_file_delete (file->file, NULL, NULL);