]> gitweb.hhaalo.de Git - sane-kds-s2000w-net.git/commitdiff
refactor reset options set
authorBastian Dehn <hhaalo@arcor.de>
Wed, 8 Oct 2025 17:05:17 +0000 (19:05 +0200)
committerBastian Dehn <hhaalo@arcor.de>
Wed, 8 Oct 2025 17:18:50 +0000 (19:18 +0200)
src/kds_s2000w_handler_opts.c

index 3e12847f7176925f96ad8c1bcd7a7a962b926b5c..73b093482e3cb8ec832b207888e527f801a92638 100644 (file)
@@ -79,6 +79,36 @@ void _kds_s2000w_handler_opts_set_autostart_on(json_object* config)
        _kds_s2000w_handler_opts_write_value_to_json(value_object, SANE_TYPE_INT, &auto_start_value);
 }
 
+void _kds_s2000w_handler_opts_set_option_to_default(handler* h)
+{
+       response* resp = kds_s2000w_client_response_init();
+       kds_s2000w_client_get_capabilities(resp);
+       json_object* capabilities = json_tokener_parse(resp->data);
+       json_object* default_values = json_object_object_get(capabilities, "Defaults");
+       json_object* default_config = json_object_new_object();
+       json_object_object_add(default_config, CONFIGURATION, default_values);
+
+       json_object_put(h->current_scanner_config);
+       h->current_scanner_config = NULL;
+
+       h->current_scanner_config = default_config;
+
+       kds_s2000w_client_response_free(resp);
+       resp = NULL;
+}
+
+json_object* _kds_s2000w_handler_opts_reset(option_descriptor* descriptor, handler* h)
+{
+       if (strcmp(descriptor->config_name, RESET) != 0)
+               return json_object_object_get(h->current_scanner_config, CONFIGURATION);
+
+       _kds_s2000w_handler_opts_set_option_to_default(h);
+       json_object* config = json_object_object_get(h->current_scanner_config, CONFIGURATION);
+       _kds_s2000w_handler_opts_set_autostart_on(config);
+
+       return config;
+}
+
 void _kds_s2000w_handler_opts_set_options(handler* h)
 {
        const char* json_string = json_object_to_json_string_ext(h->current_scanner_config, JSON_C_TO_STRING_PLAIN);
@@ -148,24 +178,6 @@ void _kds_s2000w_handler_opts_set_valid_coord_y(option_descriptor* descriptor, h
        json_object_set_int(value_object, h->coord->height);
 }
 
-void _kds_s2000w_handler_opts_set_option_to_default(handler* h)
-{
-       response* resp = kds_s2000w_client_response_init();
-       kds_s2000w_client_get_capabilities(resp);
-       json_object* capabilities = json_tokener_parse(resp->data);
-       json_object* default_values = json_object_object_get(capabilities, "Defaults");
-       json_object* default_config = json_object_new_object();
-       json_object_object_add(default_config, CONFIGURATION, default_values);
-
-       json_object_put(h->current_scanner_config);
-       h->current_scanner_config = NULL;
-
-       h->current_scanner_config = default_config;
-
-       kds_s2000w_client_response_free(resp);
-       resp = NULL;
-}
-
 void _kds_s2000w_handler_opts_set_enable_cropping_image(json_object* config)
 {
        json_object* cropping_mode = json_object_object_get(config, CROPPING_MODE);
@@ -531,13 +543,7 @@ void kds_s2000w_handler_opts_set_option(handler* h, uint32_t option, void* value
                _kds_s2000w_handler_opts_write_value_to_json(value_object, descriptor->descriptor->type, value);
 
        _kds_s2000w_handler_opts_set_scan_source(descriptor, h, value);
-
-       if (strcmp(descriptor->config_name, RESET) == 0) {
-               _kds_s2000w_handler_opts_set_option_to_default(h);
-               config = json_object_object_get(h->current_scanner_config, CONFIGURATION);
-
-               _kds_s2000w_handler_opts_set_autostart_on(config);
-       }
+       config = _kds_s2000w_handler_opts_reset(descriptor, h);
 
        if (h->profile > PROFILE_MIN)
                _kds_s2000w_handler_opts_set_depends_opts(h, descriptor->config_name, config);