aboutsummaryrefslogtreecommitdiff
path: root/src/setup/gnunet-setup-gns-edit.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/setup/gnunet-setup-gns-edit.c')
-rw-r--r--src/setup/gnunet-setup-gns-edit.c116
1 files changed, 61 insertions, 55 deletions
diff --git a/src/setup/gnunet-setup-gns-edit.c b/src/setup/gnunet-setup-gns-edit.c
index c5d5bb3e..f790572b 100644
--- a/src/setup/gnunet-setup-gns-edit.c
+++ b/src/setup/gnunet-setup-gns-edit.c
@@ -195,6 +195,11 @@ edit_dialog_setup_common_elements (struct EditDialogContext *edc)
195 GtkListStore *ls; 195 GtkListStore *ls;
196 GtkTreeIter iter; 196 GtkTreeIter iter;
197 gchar *opt; 197 gchar *opt;
198 struct GNUNET_TIME_Absolute at;
199 struct GNUNET_TIME_Relative rt;
200 time_t tp;
201 struct tm *ymd;
202 GtkCalendar *cal;
198 203
199 if (GNUNET_YES != 204 if (GNUNET_YES !=
200 edc->old_record_in_namestore) 205 edc->old_record_in_namestore)
@@ -224,64 +229,65 @@ edit_dialog_setup_common_elements (struct EditDialogContext *edc)
224 gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (edc->builder, 229 gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (edc->builder,
225 "edit_dialog_expiration_relative_combobox"))); 230 "edit_dialog_expiration_relative_combobox")));
226 } 231 }
232 if ( (edc->n_is_relative) &&
233 (GNUNET_TIME_UNIT_FOREVER_REL.rel_value != edc->n_exp_time) )
234 {
235 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gtk_builder_get_object (edc->builder,
236 "edit_dialog_expiration_relative_radiobutton")),
237 TRUE);
238 gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (edc->builder,
239 "edit_dialog_expiration_absolute_calendar")));
240 gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (edc->builder,
241 "edit_dialog_expiration_absolute_hbox")));
242 rt.rel_value = edc->n_exp_time;
243 }
227 else 244 else
228 { 245 {
229 if (edc->n_is_relative) 246 /* select a sane default */
230 { 247 rt = GNUNET_TIME_UNIT_DAYS;
231 struct GNUNET_TIME_Relative rt; 248 }
232 249 cb = GTK_COMBO_BOX (gtk_builder_get_object (edc->builder,
233 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gtk_builder_get_object (edc->builder, 250 "edit_dialog_expiration_relative_combobox"));
234 "edit_dialog_expiration_relative_radiobutton")), 251 ls = GTK_LIST_STORE (gtk_combo_box_get_model (cb));
235 TRUE); 252 gtk_list_store_insert_with_values (ls, &iter,
236 gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (edc->builder, 253 -1 /* position: append */,
237 "edit_dialog_expiration_absolute_calendar"))); 254 0, GNUNET_STRINGS_relative_time_to_string (rt, GNUNET_NO),
238 gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (edc->builder, 255 -1);
239 "edit_dialog_expiration_absolute_hbox"))); 256 gtk_combo_box_set_active_iter (cb, &iter);
240 rt.rel_value = edc->n_exp_time; 257 if ( (! edc->n_is_relative) &&
241 258 (GNUNET_TIME_UNIT_FOREVER_ABS.abs_value != edc->n_exp_time) )
242 cb = GTK_COMBO_BOX (gtk_builder_get_object (edc->builder, 259 {
243 "edit_dialog_expiration_relative_combobox")); 260 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gtk_builder_get_object (edc->builder,
244 ls = GTK_LIST_STORE (gtk_combo_box_get_model (cb)); 261 "edit_dialog_expiration_absolute_radiobutton")),
245 gtk_list_store_insert_with_values (ls, &iter, 262 TRUE);
246 -1 /* position: append */, 263
247 0, GNUNET_STRINGS_relative_time_to_string (rt, GNUNET_NO), 264 gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (edc->builder,
248 -1); 265 "edit_dialog_expiration_relative_combobox")));
249 gtk_combo_box_set_active_iter (cb, &iter); 266 at.abs_value = edc->n_exp_time;
250 } 267 }
251 else 268 else
252 { 269 {
253 struct GNUNET_TIME_Absolute at; 270 /* select a sane default: right now */
254 time_t tp; 271 at = GNUNET_TIME_absolute_get ();
255 struct tm *ymd;
256 GtkCalendar *cal;
257
258 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gtk_builder_get_object (edc->builder,
259 "edit_dialog_expiration_absolute_radiobutton")),
260 TRUE);
261
262 gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (edc->builder,
263 "edit_dialog_expiration_relative_combobox")));
264 at.abs_value = edc->n_exp_time;
265 tp = (time_t) (at.abs_value / 1000LL); /* convert to seconds */
266 ymd = gmtime (&tp);
267 cal = GTK_CALENDAR (gtk_builder_get_object (edc->builder,
268 "edit_dialog_expiration_absolute_calendar"));
269 gtk_calendar_select_month (cal,
270 ymd->tm_mon,
271 ymd->tm_year + 1900);
272 gtk_calendar_mark_day (cal,
273 ymd->tm_mday);
274 gtk_spin_button_set_value (GTK_SPIN_BUTTON (gtk_builder_get_object (edc->builder,
275 "edit_dialog_expiration_absolute_hours_spinbutton")),
276 (double) ymd->tm_hour);
277 gtk_spin_button_set_value (GTK_SPIN_BUTTON (gtk_builder_get_object (edc->builder,
278 "edit_dialog_expiration_absolute_minutes_spinbutton")),
279 (double) ymd->tm_min);
280 gtk_spin_button_set_value (GTK_SPIN_BUTTON (gtk_builder_get_object (edc->builder,
281 "edit_dialog_expiration_absolute_seconds_spinbutton")),
282 (double) ymd->tm_sec);
283 }
284 } 272 }
273 tp = (time_t) (at.abs_value / 1000LL); /* convert to seconds */
274 ymd = gmtime (&tp);
275 cal = GTK_CALENDAR (gtk_builder_get_object (edc->builder,
276 "edit_dialog_expiration_absolute_calendar"));
277 gtk_calendar_select_month (cal,
278 ymd->tm_mon,
279 ymd->tm_year + 1900);
280 gtk_calendar_mark_day (cal,
281 ymd->tm_mday);
282 gtk_spin_button_set_value (GTK_SPIN_BUTTON (gtk_builder_get_object (edc->builder,
283 "edit_dialog_expiration_absolute_hours_spinbutton")),
284 (double) ymd->tm_hour);
285 gtk_spin_button_set_value (GTK_SPIN_BUTTON (gtk_builder_get_object (edc->builder,
286 "edit_dialog_expiration_absolute_minutes_spinbutton")),
287 (double) ymd->tm_min);
288 gtk_spin_button_set_value (GTK_SPIN_BUTTON (gtk_builder_get_object (edc->builder,
289 "edit_dialog_expiration_absolute_seconds_spinbutton")),
290 (double) ymd->tm_sec);
285 291
286 /* set source zone! */ 292 /* set source zone! */
287 cb = GTK_COMBO_BOX (gtk_builder_get_object (edc->builder, 293 cb = GTK_COMBO_BOX (gtk_builder_get_object (edc->builder,