application/settings.c

changeset 67
3f987dde3be2
parent 66
eee1f3092844
equal deleted inserted replaced
66:eee1f3092844 67:3f987dde3be2
271 UiContext *ctx = data; 271 UiContext *ctx = data;
272 char *s = ptr; 272 char *s = ptr;
273 ui_free(ctx, ptr); 273 ui_free(ctx, ptr);
274 } 274 }
275 275
276 static void secretstore_newmasterpw(UiEvent *event, void *userdata) {
277 SettingsWindow *settings = event->window;
278 if(event->intval == 1) {
279 pwdstore_setpassword(settings->pwdstore, event->eventdata);
280 set_pwdstore(settings->pwdstore);
281 pwdstore_save(settings->pwdstore);
282 settings->pwdstore = NULL;
283 }
284 ui_close(event->obj);
285 }
276 286
277 void settings_ok(UiEvent *event, void *userdata) { 287 void settings_ok(UiEvent *event, void *userdata) {
278 SettingsWindow *settings = event->window; 288 SettingsWindow *settings = event->window;
279 settings->config_saved = TRUE;
280 // save any changed settings 289 // save any changed settings
281 settings_store_repository(settings); 290 settings_store_repository(settings);
282 settings_credentials_save(settings); 291 settings_credentials_save(settings);
283 292
284 set_config(settings->config); // TODO: free old config 293 set_config(settings->config); // TODO: free old config
285 if(store_config()) { 294 if(store_config()) {
286 ui_dialog(event->obj, .title = "Error", .content = "Cannot store settings", .closebutton_label = "OK"); 295 ui_dialog(event->obj, .title = "Error", .content = "Cannot store settings", .closebutton_label = "OK");
287 } 296 }
288 settings->config = NULL; 297 application_update_repolist(get_application()); settings->config = NULL;
289 if(settings->credentials_modified) { 298 if(settings->credentials_modified) {
290 set_pwdstore(settings->pwdstore); 299 if(settings->pwdstore->key) {
291 pwdstore_save(settings->pwdstore); 300 set_pwdstore(settings->pwdstore);
301 pwdstore_save(settings->pwdstore);
302 } else {
303 ui_dialog(event->obj,
304 .title = "Secret Store",
305 .content = "Master password",
306 .password = TRUE,
307 .result = secretstore_newmasterpw,
308 .button1_label = "Create Secret Store",
309 .closebutton_label = "Cancel",
310 .result = secretstore_newmasterpw);
311 return;
312 }
292 settings->pwdstore = NULL; 313 settings->pwdstore = NULL;
293 } 314 }
294 application_update_repolist(get_application());
295 ui_close(event->obj); 315 ui_close(event->obj);
296 } 316 }
297 317
298 void settings_close(UiEvent *event, void *userdata) { 318 void settings_close(UiEvent *event, void *userdata) {
299 SettingsWindow *settings = event->window; 319 SettingsWindow *settings = event->window;
300 if(settings->config_saved) {
301 // function was called as context closefunc by ui_close
302 // in settings_ok
303 // don't free anything
304 return;
305 }
306 if(settings->config) { 320 if(settings->config) {
307 dav_config_free(settings->config); 321 dav_config_free(settings->config);
308 } 322 }
309 if(settings->pwdstore) { 323 if(settings->pwdstore) {
310 pwdstore_free(settings->pwdstore); 324 pwdstore_free(settings->pwdstore);
311 } 325 }
312 } 326 }
313 327
314 void settings_cancel(UiEvent *event, void *userdata) { 328 void settings_cancel(UiEvent *event, void *userdata) {
315 SettingsWindow *settings = event->window;
316 ui_close(event->obj); 329 ui_close(event->obj);
317 } 330 }
318 331
319 void settings_window_open() { 332 void settings_window_open() {
320 DavConfig *config = load_config_file(); 333 DavConfig *config = load_config_file();

mercurial