gboolean gth_datetime_to_timeval (GthDateTime *dt, GTimeVal *tv) { char *exif_date; gboolean result; exif_date = gth_datetime_to_exif_date (dt); result = _g_time_val_from_exif_date (exif_date, tv); g_free (exif_date); return result; }
static void ok_button_clicked (GtkWidget *button, DialogData *data) { GthChangeFields change_fields; GthChangeType change_type; GthDateTime *date_time; int time_adjustment; GthTask *task; date_time = NULL; change_fields = 0; if (IS_ACTIVE (GET_WIDGET ("change_last_modified_checkbutton"))) change_fields |= GTH_CHANGE_LAST_MODIFIED_DATE; if (IS_ACTIVE (GET_WIDGET ("change_comment_checkbutton"))) change_fields |= GTH_CHANGE_COMMENT_DATE; change_type = 0; time_adjustment = 0; if (IS_ACTIVE (GET_WIDGET ("to_following_date_radiobutton"))) { change_type = GTH_CHANGE_TO_FOLLOWING_DATE; date_time = gth_datetime_new (); gth_time_selector_get_value (GTH_TIME_SELECTOR (data->date_selector), date_time); } else if (IS_ACTIVE (GET_WIDGET ("to_last_modified_date_radiobutton"))) change_type = GTH_CHANGE_TO_FILE_MODIFIED_DATE; else if (IS_ACTIVE (GET_WIDGET ("to_creation_date_radiobutton"))) change_type = GTH_CHANGE_TO_FILE_CREATION_DATE; else if (IS_ACTIVE (GET_WIDGET ("to_photo_original_date_radiobutton"))) change_type = GTH_CHANGE_TO_PHOTO_ORIGINAL_DATE; else if (IS_ACTIVE (GET_WIDGET ("adjust_time_radiobutton"))) { change_type = GTH_CHANGE_ADJUST_TIME; time_adjustment = (HOURS_TO_SECONDS (gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (GET_WIDGET ("adjust_time_h_spinbutton")))) + MINS_TO_SECONDS (gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (GET_WIDGET ("adjust_time_m_spinbutton")))) + gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (GET_WIDGET ("adjust_time_s_spinbutton")))); if (gtk_combo_box_get_active (GTK_COMBO_BOX (GET_WIDGET ("adjust_sign_combobox"))) == 1) time_adjustment = -time_adjustment; } /* save the preferences */ g_settings_set_boolean (data->settings, PREF_CHANGE_DATE_SET_LAST_MODIFIED_DATE, (change_fields & GTH_CHANGE_LAST_MODIFIED_DATE) == GTH_CHANGE_LAST_MODIFIED_DATE); g_settings_set_boolean (data->settings, PREF_CHANGE_DATE_SET_COMMENT_DATE, (change_fields & GTH_CHANGE_COMMENT_DATE) == GTH_CHANGE_COMMENT_DATE); g_settings_set_boolean (data->settings, PREF_CHANGE_DATE_TO_FOLLOWING_DATE, change_type == GTH_CHANGE_TO_FOLLOWING_DATE); if (change_type == GTH_CHANGE_TO_FOLLOWING_DATE) { char *s; s = gth_datetime_to_exif_date (date_time); g_settings_set_string (data->settings, PREF_CHANGE_DATE_DATE, s); g_free (s); } g_settings_set_boolean (data->settings, PREF_CHANGE_DATE_TO_FILE_MODIFIED_DATE, change_type == GTH_CHANGE_TO_FILE_MODIFIED_DATE); g_settings_set_boolean (data->settings, PREF_CHANGE_DATE_TO_FILE_CREATION_DATE, change_type == GTH_CHANGE_TO_FILE_CREATION_DATE); g_settings_set_boolean (data->settings, PREF_CHANGE_DATE_TO_PHOTO_ORIGINAL_DATE, change_type == GTH_CHANGE_TO_PHOTO_ORIGINAL_DATE); g_settings_set_boolean (data->settings, PREF_CHANGE_DATE_ADJUST_TIME, change_type == GTH_CHANGE_ADJUST_TIME); if (change_type == GTH_CHANGE_ADJUST_TIME) g_settings_set_int (data->settings, PREF_CHANGE_DATE_TIME_ADJUSTMENT, time_adjustment); /* exec the task */ task = gth_change_date_task_new (gth_browser_get_location (data->browser), data->file_list, change_fields, change_type, date_time, time_adjustment); gth_browser_exec_task (data->browser, task, FALSE); gtk_widget_destroy (data->dialog); g_object_unref (task); gth_datetime_free (date_time); }