diff --git a/.editorconfig b/.editorconfig
index e25cfb741..550a376e4 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -319,500 +319,6 @@ ij_shell_redirect_followed_by_space = false
ij_shell_switch_cases_indented = false
ij_shell_use_unix_line_separator = true
-[{*.c,*.c++,*.cc,*.cp,*.cpp,*.cppm,*.cu,*.cuh,*.cxx,*.h,*.h++,*.hh,*.hp,*.hpp,*.hxx,*.i,*.icc,*.ii,*.inl,*.ino,*.ipp,*.ixx,*.m,*.mm,*.mxx,*.pch,*.tcc,*.tpp}]
-ij_c_add_brief_tag = false
-ij_c_add_getter_prefix = true
-ij_c_add_setter_prefix = true
-ij_c_align_dictionary_pair_values = false
-ij_c_align_group_field_declarations = false
-ij_c_align_init_list_in_columns = true
-ij_c_align_multiline_array_initializer_expression = true
-ij_c_align_multiline_assignment = true
-ij_c_align_multiline_binary_operation = true
-ij_c_align_multiline_chained_methods = false
-ij_c_align_multiline_for = true
-ij_c_align_multiline_ternary_operation = true
-ij_c_array_initializer_comma_on_next_line = false
-ij_c_array_initializer_new_line_after_left_brace = false
-ij_c_array_initializer_right_brace_on_new_line = false
-ij_c_array_initializer_wrap = normal
-ij_c_assignment_wrap = off
-ij_c_binary_operation_sign_on_next_line = false
-ij_c_binary_operation_wrap = normal
-ij_c_blank_lines_after_class_header = 0
-ij_c_blank_lines_after_imports = 1
-ij_c_blank_lines_around_class = 1
-ij_c_blank_lines_around_field = 0
-ij_c_blank_lines_around_field_in_interface = 0
-ij_c_blank_lines_around_method = 1
-ij_c_blank_lines_around_method_in_interface = 1
-ij_c_blank_lines_around_namespace = 0
-ij_c_blank_lines_around_properties_in_declaration = 0
-ij_c_blank_lines_around_properties_in_interface = 0
-ij_c_blank_lines_before_imports = 1
-ij_c_blank_lines_before_method_body = 0
-ij_c_block_brace_placement = end_of_line
-ij_c_block_brace_style = end_of_line
-ij_c_block_comment_at_first_column = true
-ij_c_catch_on_new_line = false
-ij_c_class_brace_style = end_of_line
-ij_c_class_constructor_init_list_align_multiline = true
-ij_c_class_constructor_init_list_comma_on_next_line = false
-ij_c_class_constructor_init_list_new_line_after_colon = never
-ij_c_class_constructor_init_list_new_line_before_colon = if_long
-ij_c_class_constructor_init_list_wrap = normal
-ij_c_copy_is_deep = false
-ij_c_create_interface_for_categories = true
-ij_c_declare_generated_methods = true
-ij_c_description_include_member_names = true
-ij_c_discharged_short_ternary_operator = false
-ij_c_do_not_add_breaks = false
-ij_c_do_while_brace_force = never
-ij_c_else_on_new_line = false
-ij_c_enum_constants_comma_on_next_line = false
-ij_c_enum_constants_wrap = on_every_item
-ij_c_for_brace_force = never
-ij_c_for_statement_new_line_after_left_paren = false
-ij_c_for_statement_right_paren_on_new_line = false
-ij_c_for_statement_wrap = off
-ij_c_function_brace_placement = end_of_line
-ij_c_function_call_arguments_align_multiline = true
-ij_c_function_call_arguments_align_multiline_pars = false
-ij_c_function_call_arguments_comma_on_next_line = false
-ij_c_function_call_arguments_new_line_after_lpar = false
-ij_c_function_call_arguments_new_line_before_rpar = false
-ij_c_function_call_arguments_wrap = normal
-ij_c_function_non_top_after_return_type_wrap = normal
-ij_c_function_parameters_align_multiline = true
-ij_c_function_parameters_align_multiline_pars = false
-ij_c_function_parameters_comma_on_next_line = false
-ij_c_function_parameters_new_line_after_lpar = false
-ij_c_function_parameters_new_line_before_rpar = false
-ij_c_function_parameters_wrap = normal
-ij_c_function_top_after_return_type_wrap = normal
-ij_c_generate_additional_eq_operators = true
-ij_c_generate_additional_rel_operators = true
-ij_c_generate_class_constructor = true
-ij_c_generate_comparison_operators_use_std_tie = false
-ij_c_generate_instance_variables_for_properties = ask
-ij_c_generate_operators_as_members = true
-ij_c_header_guard_style_pattern = ${PROJECT_NAME}_${FILE_NAME}_${EXT}
-ij_c_if_brace_force = never
-ij_c_in_line_short_ternary_operator = true
-ij_c_indent_block_comment = true
-ij_c_indent_c_struct_members = 4
-ij_c_indent_case_from_switch = true
-ij_c_indent_class_members = 4
-ij_c_indent_directive_as_code = false
-ij_c_indent_implementation_members = 0
-ij_c_indent_inside_code_block = 4
-ij_c_indent_interface_members = 0
-ij_c_indent_interface_members_except_ivars_block = false
-ij_c_indent_namespace_members = 4
-ij_c_indent_preprocessor_directive = 0
-ij_c_indent_visibility_keywords = 0
-ij_c_insert_override = true
-ij_c_insert_virtual_with_override = false
-ij_c_introduce_auto_vars = false
-ij_c_introduce_const_params = false
-ij_c_introduce_const_vars = false
-ij_c_introduce_generate_property = false
-ij_c_introduce_generate_synthesize = true
-ij_c_introduce_globals_to_header = true
-ij_c_introduce_prop_to_private_category = false
-ij_c_introduce_static_consts = true
-ij_c_introduce_use_ns_types = false
-ij_c_ivars_prefix = _
-ij_c_keep_blank_lines_before_end = 2
-ij_c_keep_blank_lines_before_right_brace = 2
-ij_c_keep_blank_lines_in_code = 2
-ij_c_keep_blank_lines_in_declarations = 2
-ij_c_keep_case_expressions_in_one_line = false
-ij_c_keep_control_statement_in_one_line = true
-ij_c_keep_directive_at_first_column = true
-ij_c_keep_first_column_comment = true
-ij_c_keep_line_breaks = true
-ij_c_keep_nested_namespaces_in_one_line = false
-ij_c_keep_simple_blocks_in_one_line = true
-ij_c_keep_simple_methods_in_one_line = true
-ij_c_keep_structures_in_one_line = false
-ij_c_lambda_capture_list_align_multiline = false
-ij_c_lambda_capture_list_align_multiline_bracket = false
-ij_c_lambda_capture_list_comma_on_next_line = false
-ij_c_lambda_capture_list_new_line_after_lbracket = false
-ij_c_lambda_capture_list_new_line_before_rbracket = false
-ij_c_lambda_capture_list_wrap = off
-ij_c_line_comment_add_space = false
-ij_c_line_comment_at_first_column = true
-ij_c_method_brace_placement = end_of_line
-ij_c_method_call_arguments_align_by_colons = true
-ij_c_method_call_arguments_align_multiline = false
-ij_c_method_call_arguments_special_dictionary_pairs_treatment = true
-ij_c_method_call_arguments_wrap = off
-ij_c_method_call_chain_wrap = off
-ij_c_method_parameters_align_by_colons = true
-ij_c_method_parameters_align_multiline = false
-ij_c_method_parameters_wrap = off
-ij_c_namespace_brace_placement = end_of_line
-ij_c_parentheses_expression_new_line_after_left_paren = false
-ij_c_parentheses_expression_right_paren_on_new_line = false
-ij_c_place_assignment_sign_on_next_line = false
-ij_c_property_nonatomic = true
-ij_c_put_ivars_to_implementation = true
-ij_c_refactor_compatibility_aliases_and_classes = true
-ij_c_refactor_properties_and_ivars = true
-ij_c_release_style = ivar
-ij_c_retain_object_parameters_in_constructor = true
-ij_c_semicolon_after_method_signature = false
-ij_c_shift_operation_align_multiline = true
-ij_c_shift_operation_wrap = normal
-ij_c_show_non_virtual_functions = false
-ij_c_space_after_colon = true
-ij_c_space_after_colon_in_foreach = true
-ij_c_space_after_colon_in_selector = false
-ij_c_space_after_comma = true
-ij_c_space_after_cup_in_blocks = false
-ij_c_space_after_dictionary_literal_colon = true
-ij_c_space_after_for_semicolon = true
-ij_c_space_after_init_list_colon = true
-ij_c_space_after_method_parameter_type_parentheses = false
-ij_c_space_after_method_return_type_parentheses = false
-ij_c_space_after_pointer_in_declaration = false
-ij_c_space_after_quest = true
-ij_c_space_after_reference_in_declaration = false
-ij_c_space_after_reference_in_rvalue = false
-ij_c_space_after_structures_rbrace = true
-ij_c_space_after_superclass_colon = true
-ij_c_space_after_type_cast = true
-ij_c_space_after_visibility_sign_in_method_declaration = true
-ij_c_space_before_autorelease_pool_lbrace = true
-ij_c_space_before_catch_keyword = true
-ij_c_space_before_catch_left_brace = true
-ij_c_space_before_catch_parentheses = true
-ij_c_space_before_category_parentheses = true
-ij_c_space_before_chained_send_message = true
-ij_c_space_before_class_left_brace = true
-ij_c_space_before_colon = true
-ij_c_space_before_colon_in_foreach = false
-ij_c_space_before_comma = false
-ij_c_space_before_dictionary_literal_colon = false
-ij_c_space_before_do_left_brace = true
-ij_c_space_before_else_keyword = true
-ij_c_space_before_else_left_brace = true
-ij_c_space_before_export_lbrace = true
-ij_c_space_before_for_left_brace = true
-ij_c_space_before_for_parentheses = true
-ij_c_space_before_for_semicolon = false
-ij_c_space_before_if_left_brace = true
-ij_c_space_before_if_parentheses = true
-ij_c_space_before_init_list = false
-ij_c_space_before_init_list_colon = true
-ij_c_space_before_method_call_parentheses = false
-ij_c_space_before_method_left_brace = true
-ij_c_space_before_method_parentheses = false
-ij_c_space_before_namespace_lbrace = true
-ij_c_space_before_pointer_in_declaration = true
-ij_c_space_before_property_attributes_parentheses = false
-ij_c_space_before_protocols_brackets = true
-ij_c_space_before_quest = true
-ij_c_space_before_reference_in_declaration = true
-ij_c_space_before_superclass_colon = true
-ij_c_space_before_switch_left_brace = true
-ij_c_space_before_switch_parentheses = true
-ij_c_space_before_template_call_lt = false
-ij_c_space_before_template_declaration_lt = false
-ij_c_space_before_try_left_brace = true
-ij_c_space_before_while_keyword = true
-ij_c_space_before_while_left_brace = true
-ij_c_space_before_while_parentheses = true
-ij_c_space_between_adjacent_brackets = false
-ij_c_space_between_operator_and_punctuator = false
-ij_c_space_within_empty_array_initializer_braces = false
-ij_c_spaces_around_additive_operators = true
-ij_c_spaces_around_assignment_operators = true
-ij_c_spaces_around_bitwise_operators = true
-ij_c_spaces_around_equality_operators = true
-ij_c_spaces_around_lambda_arrow = true
-ij_c_spaces_around_logical_operators = true
-ij_c_spaces_around_multiplicative_operators = true
-ij_c_spaces_around_pm_operators = false
-ij_c_spaces_around_relational_operators = true
-ij_c_spaces_around_shift_operators = true
-ij_c_spaces_around_unary_operator = false
-ij_c_spaces_within_array_initializer_braces = false
-ij_c_spaces_within_braces = true
-ij_c_spaces_within_brackets = false
-ij_c_spaces_within_cast_parentheses = false
-ij_c_spaces_within_catch_parentheses = false
-ij_c_spaces_within_category_parentheses = false
-ij_c_spaces_within_empty_braces = false
-ij_c_spaces_within_empty_function_call_parentheses = false
-ij_c_spaces_within_empty_function_declaration_parentheses = false
-ij_c_spaces_within_empty_lambda_capture_list_bracket = false
-ij_c_spaces_within_empty_template_call_ltgt = false
-ij_c_spaces_within_empty_template_declaration_ltgt = false
-ij_c_spaces_within_for_parentheses = false
-ij_c_spaces_within_function_call_parentheses = false
-ij_c_spaces_within_function_declaration_parentheses = false
-ij_c_spaces_within_if_parentheses = false
-ij_c_spaces_within_lambda_capture_list_bracket = false
-ij_c_spaces_within_method_parameter_type_parentheses = false
-ij_c_spaces_within_method_return_type_parentheses = false
-ij_c_spaces_within_parentheses = false
-ij_c_spaces_within_property_attributes_parentheses = false
-ij_c_spaces_within_protocols_brackets = false
-ij_c_spaces_within_send_message_brackets = false
-ij_c_spaces_within_structured_binding_list_bracket = false
-ij_c_spaces_within_switch_parentheses = false
-ij_c_spaces_within_template_call_ltgt = false
-ij_c_spaces_within_template_declaration_ltgt = false
-ij_c_spaces_within_template_double_gt = true
-ij_c_spaces_within_while_parentheses = false
-ij_c_special_else_if_treatment = true
-ij_c_structured_binding_list_align_multiline = false
-ij_c_structured_binding_list_align_multiline_bracket = false
-ij_c_structured_binding_list_comma_on_next_line = false
-ij_c_structured_binding_list_new_line_after_lbracket = false
-ij_c_structured_binding_list_new_line_before_rbracket = false
-ij_c_structured_binding_list_wrap = off
-ij_c_superclass_list_after_colon = never
-ij_c_superclass_list_align_multiline = true
-ij_c_superclass_list_before_colon = if_long
-ij_c_superclass_list_comma_on_next_line = false
-ij_c_superclass_list_wrap = on_every_item
-ij_c_tag_prefix_of_block_comment = at
-ij_c_tag_prefix_of_line_comment = back_slash
-ij_c_template_call_arguments_align_multiline = false
-ij_c_template_call_arguments_align_multiline_pars = false
-ij_c_template_call_arguments_comma_on_next_line = false
-ij_c_template_call_arguments_new_line_after_lt = false
-ij_c_template_call_arguments_new_line_before_gt = false
-ij_c_template_call_arguments_wrap = off
-ij_c_template_declaration_function_body_indent = false
-ij_c_template_declaration_function_wrap = split_into_lines
-ij_c_template_declaration_struct_body_indent = false
-ij_c_template_declaration_struct_wrap = split_into_lines
-ij_c_template_parameters_align_multiline = false
-ij_c_template_parameters_align_multiline_pars = false
-ij_c_template_parameters_comma_on_next_line = false
-ij_c_template_parameters_new_line_after_lt = false
-ij_c_template_parameters_new_line_before_gt = false
-ij_c_template_parameters_wrap = off
-ij_c_ternary_operation_signs_on_next_line = true
-ij_c_ternary_operation_wrap = normal
-ij_c_type_qualifiers_placement = before
-ij_c_use_modern_casts = true
-ij_c_use_setters_in_constructor = true
-ij_c_while_brace_force = never
-ij_c_while_on_new_line = false
-ij_c_wrap_property_declaration = off
-
-[{*.cmake,CMakeLists.txt}]
-ij_cmake_align_multiline_parameters_in_calls = false
-ij_cmake_force_commands_case = 2
-ij_cmake_keep_blank_lines_in_code = 2
-ij_cmake_space_before_for_parentheses = true
-ij_cmake_space_before_if_parentheses = true
-ij_cmake_space_before_method_call_parentheses = false
-ij_cmake_space_before_method_parentheses = false
-ij_cmake_space_before_while_parentheses = true
-ij_cmake_spaces_within_for_parentheses = false
-ij_cmake_spaces_within_if_parentheses = false
-ij_cmake_spaces_within_method_call_parentheses = false
-ij_cmake_spaces_within_method_parentheses = false
-ij_cmake_spaces_within_while_parentheses = false
-
-[{*.gant,*.groovy,*.gy}]
-ij_groovy_align_group_field_declarations = false
-ij_groovy_align_multiline_array_initializer_expression = false
-ij_groovy_align_multiline_assignment = false
-ij_groovy_align_multiline_binary_operation = false
-ij_groovy_align_multiline_chained_methods = false
-ij_groovy_align_multiline_extends_list = false
-ij_groovy_align_multiline_for = true
-ij_groovy_align_multiline_list_or_map = true
-ij_groovy_align_multiline_method_parentheses = false
-ij_groovy_align_multiline_parameters = true
-ij_groovy_align_multiline_parameters_in_calls = false
-ij_groovy_align_multiline_resources = true
-ij_groovy_align_multiline_ternary_operation = false
-ij_groovy_align_multiline_throws_list = false
-ij_groovy_align_named_args_in_map = true
-ij_groovy_align_throws_keyword = false
-ij_groovy_array_initializer_new_line_after_left_brace = false
-ij_groovy_array_initializer_right_brace_on_new_line = false
-ij_groovy_array_initializer_wrap = off
-ij_groovy_assert_statement_wrap = off
-ij_groovy_assignment_wrap = off
-ij_groovy_binary_operation_wrap = off
-ij_groovy_blank_lines_after_class_header = 0
-ij_groovy_blank_lines_after_imports = 1
-ij_groovy_blank_lines_after_package = 1
-ij_groovy_blank_lines_around_class = 1
-ij_groovy_blank_lines_around_field = 0
-ij_groovy_blank_lines_around_field_in_interface = 0
-ij_groovy_blank_lines_around_method = 1
-ij_groovy_blank_lines_around_method_in_interface = 1
-ij_groovy_blank_lines_before_imports = 1
-ij_groovy_blank_lines_before_method_body = 0
-ij_groovy_blank_lines_before_package = 0
-ij_groovy_block_brace_style = end_of_line
-ij_groovy_block_comment_add_space = false
-ij_groovy_block_comment_at_first_column = true
-ij_groovy_call_parameters_new_line_after_left_paren = false
-ij_groovy_call_parameters_right_paren_on_new_line = false
-ij_groovy_call_parameters_wrap = off
-ij_groovy_catch_on_new_line = false
-ij_groovy_class_annotation_wrap = split_into_lines
-ij_groovy_class_brace_style = end_of_line
-ij_groovy_class_count_to_use_import_on_demand = 5
-ij_groovy_do_while_brace_force = never
-ij_groovy_else_on_new_line = false
-ij_groovy_enable_groovydoc_formatting = true
-ij_groovy_enum_constants_wrap = off
-ij_groovy_extends_keyword_wrap = off
-ij_groovy_extends_list_wrap = off
-ij_groovy_field_annotation_wrap = split_into_lines
-ij_groovy_finally_on_new_line = false
-ij_groovy_for_brace_force = never
-ij_groovy_for_statement_new_line_after_left_paren = false
-ij_groovy_for_statement_right_paren_on_new_line = false
-ij_groovy_for_statement_wrap = off
-ij_groovy_ginq_general_clause_wrap_policy = 2
-ij_groovy_ginq_having_wrap_policy = 1
-ij_groovy_ginq_indent_having_clause = true
-ij_groovy_ginq_indent_on_clause = true
-ij_groovy_ginq_on_wrap_policy = 1
-ij_groovy_ginq_space_after_keyword = true
-ij_groovy_if_brace_force = never
-ij_groovy_import_annotation_wrap = 2
-ij_groovy_imports_layout = *,|,javax.**,java.**,|,$*
-ij_groovy_indent_case_from_switch = true
-ij_groovy_indent_label_blocks = true
-ij_groovy_insert_inner_class_imports = false
-ij_groovy_keep_blank_lines_before_right_brace = 2
-ij_groovy_keep_blank_lines_in_code = 2
-ij_groovy_keep_blank_lines_in_declarations = 2
-ij_groovy_keep_control_statement_in_one_line = true
-ij_groovy_keep_first_column_comment = true
-ij_groovy_keep_indents_on_empty_lines = false
-ij_groovy_keep_line_breaks = true
-ij_groovy_keep_multiple_expressions_in_one_line = false
-ij_groovy_keep_simple_blocks_in_one_line = false
-ij_groovy_keep_simple_classes_in_one_line = true
-ij_groovy_keep_simple_lambdas_in_one_line = true
-ij_groovy_keep_simple_methods_in_one_line = true
-ij_groovy_label_indent_absolute = false
-ij_groovy_label_indent_size = 0
-ij_groovy_lambda_brace_style = end_of_line
-ij_groovy_layout_static_imports_separately = true
-ij_groovy_line_comment_add_space = false
-ij_groovy_line_comment_add_space_on_reformat = false
-ij_groovy_line_comment_at_first_column = true
-ij_groovy_method_annotation_wrap = split_into_lines
-ij_groovy_method_brace_style = end_of_line
-ij_groovy_method_call_chain_wrap = off
-ij_groovy_method_parameters_new_line_after_left_paren = false
-ij_groovy_method_parameters_right_paren_on_new_line = false
-ij_groovy_method_parameters_wrap = off
-ij_groovy_modifier_list_wrap = false
-ij_groovy_names_count_to_use_import_on_demand = 3
-ij_groovy_packages_to_use_import_on_demand = java.awt.*,javax.swing.*
-ij_groovy_parameter_annotation_wrap = off
-ij_groovy_parentheses_expression_new_line_after_left_paren = false
-ij_groovy_parentheses_expression_right_paren_on_new_line = false
-ij_groovy_prefer_parameters_wrap = false
-ij_groovy_resource_list_new_line_after_left_paren = false
-ij_groovy_resource_list_right_paren_on_new_line = false
-ij_groovy_resource_list_wrap = off
-ij_groovy_space_after_assert_separator = true
-ij_groovy_space_after_colon = true
-ij_groovy_space_after_comma = true
-ij_groovy_space_after_comma_in_type_arguments = true
-ij_groovy_space_after_for_semicolon = true
-ij_groovy_space_after_quest = true
-ij_groovy_space_after_type_cast = true
-ij_groovy_space_before_annotation_parameter_list = false
-ij_groovy_space_before_array_initializer_left_brace = false
-ij_groovy_space_before_assert_separator = false
-ij_groovy_space_before_catch_keyword = true
-ij_groovy_space_before_catch_left_brace = true
-ij_groovy_space_before_catch_parentheses = true
-ij_groovy_space_before_class_left_brace = true
-ij_groovy_space_before_closure_left_brace = true
-ij_groovy_space_before_colon = true
-ij_groovy_space_before_comma = false
-ij_groovy_space_before_do_left_brace = true
-ij_groovy_space_before_else_keyword = true
-ij_groovy_space_before_else_left_brace = true
-ij_groovy_space_before_finally_keyword = true
-ij_groovy_space_before_finally_left_brace = true
-ij_groovy_space_before_for_left_brace = true
-ij_groovy_space_before_for_parentheses = true
-ij_groovy_space_before_for_semicolon = false
-ij_groovy_space_before_if_left_brace = true
-ij_groovy_space_before_if_parentheses = true
-ij_groovy_space_before_method_call_parentheses = false
-ij_groovy_space_before_method_left_brace = true
-ij_groovy_space_before_method_parentheses = false
-ij_groovy_space_before_quest = true
-ij_groovy_space_before_record_parentheses = false
-ij_groovy_space_before_switch_left_brace = true
-ij_groovy_space_before_switch_parentheses = true
-ij_groovy_space_before_synchronized_left_brace = true
-ij_groovy_space_before_synchronized_parentheses = true
-ij_groovy_space_before_try_left_brace = true
-ij_groovy_space_before_try_parentheses = true
-ij_groovy_space_before_while_keyword = true
-ij_groovy_space_before_while_left_brace = true
-ij_groovy_space_before_while_parentheses = true
-ij_groovy_space_in_named_argument = true
-ij_groovy_space_in_named_argument_before_colon = false
-ij_groovy_space_within_empty_array_initializer_braces = false
-ij_groovy_space_within_empty_method_call_parentheses = false
-ij_groovy_spaces_around_additive_operators = true
-ij_groovy_spaces_around_assignment_operators = true
-ij_groovy_spaces_around_bitwise_operators = true
-ij_groovy_spaces_around_equality_operators = true
-ij_groovy_spaces_around_lambda_arrow = true
-ij_groovy_spaces_around_logical_operators = true
-ij_groovy_spaces_around_multiplicative_operators = true
-ij_groovy_spaces_around_regex_operators = true
-ij_groovy_spaces_around_relational_operators = true
-ij_groovy_spaces_around_shift_operators = true
-ij_groovy_spaces_within_annotation_parentheses = false
-ij_groovy_spaces_within_array_initializer_braces = false
-ij_groovy_spaces_within_braces = true
-ij_groovy_spaces_within_brackets = false
-ij_groovy_spaces_within_cast_parentheses = false
-ij_groovy_spaces_within_catch_parentheses = false
-ij_groovy_spaces_within_for_parentheses = false
-ij_groovy_spaces_within_gstring_injection_braces = false
-ij_groovy_spaces_within_if_parentheses = false
-ij_groovy_spaces_within_list_or_map = false
-ij_groovy_spaces_within_method_call_parentheses = false
-ij_groovy_spaces_within_method_parentheses = false
-ij_groovy_spaces_within_parentheses = false
-ij_groovy_spaces_within_switch_parentheses = false
-ij_groovy_spaces_within_synchronized_parentheses = false
-ij_groovy_spaces_within_try_parentheses = false
-ij_groovy_spaces_within_tuple_expression = false
-ij_groovy_spaces_within_while_parentheses = false
-ij_groovy_special_else_if_treatment = true
-ij_groovy_ternary_operation_wrap = off
-ij_groovy_throws_keyword_wrap = off
-ij_groovy_throws_list_wrap = off
-ij_groovy_use_flying_geese_braces = false
-ij_groovy_use_fq_class_names = false
-ij_groovy_use_fq_class_names_in_javadoc = true
-ij_groovy_use_relative_indents = false
-ij_groovy_use_single_class_imports = true
-ij_groovy_variable_annotation_wrap = off
-ij_groovy_while_brace_force = never
-ij_groovy_while_on_new_line = false
-ij_groovy_wrap_chain_calls_after_dot = false
-ij_groovy_wrap_long_lines = false
-
[{*.har,*.json}]
indent_size = 2
ij_json_array_wrapping = split_into_lines
@@ -858,91 +364,6 @@ ij_html_space_around_equality_in_attribute = false
ij_html_space_inside_empty_tag = false
ij_html_text_wrap = normal
-[{*.kt,*.kts}]
-ij_kotlin_align_in_columns_case_branch = false
-ij_kotlin_align_multiline_binary_operation = false
-ij_kotlin_align_multiline_extends_list = false
-ij_kotlin_align_multiline_method_parentheses = false
-ij_kotlin_align_multiline_parameters = true
-ij_kotlin_align_multiline_parameters_in_calls = false
-ij_kotlin_allow_trailing_comma = false
-ij_kotlin_allow_trailing_comma_on_call_site = false
-ij_kotlin_assignment_wrap = off
-ij_kotlin_blank_lines_after_class_header = 0
-ij_kotlin_blank_lines_around_block_when_branches = 0
-ij_kotlin_blank_lines_before_declaration_with_comment_or_annotation_on_separate_line = 1
-ij_kotlin_block_comment_add_space = false
-ij_kotlin_block_comment_at_first_column = true
-ij_kotlin_call_parameters_new_line_after_left_paren = false
-ij_kotlin_call_parameters_right_paren_on_new_line = false
-ij_kotlin_call_parameters_wrap = off
-ij_kotlin_catch_on_new_line = false
-ij_kotlin_class_annotation_wrap = split_into_lines
-ij_kotlin_continuation_indent_for_chained_calls = true
-ij_kotlin_continuation_indent_for_expression_bodies = true
-ij_kotlin_continuation_indent_in_argument_lists = true
-ij_kotlin_continuation_indent_in_elvis = true
-ij_kotlin_continuation_indent_in_if_conditions = true
-ij_kotlin_continuation_indent_in_parameter_lists = true
-ij_kotlin_continuation_indent_in_supertype_lists = true
-ij_kotlin_else_on_new_line = false
-ij_kotlin_enum_constants_wrap = off
-ij_kotlin_extends_list_wrap = off
-ij_kotlin_field_annotation_wrap = split_into_lines
-ij_kotlin_finally_on_new_line = false
-ij_kotlin_if_rparen_on_new_line = false
-ij_kotlin_import_nested_classes = false
-ij_kotlin_imports_layout = *,java.**,javax.**,kotlin.**,^
-ij_kotlin_insert_whitespaces_in_simple_one_line_method = true
-ij_kotlin_keep_blank_lines_before_right_brace = 2
-ij_kotlin_keep_blank_lines_in_code = 2
-ij_kotlin_keep_blank_lines_in_declarations = 2
-ij_kotlin_keep_first_column_comment = true
-ij_kotlin_keep_indents_on_empty_lines = false
-ij_kotlin_keep_line_breaks = true
-ij_kotlin_lbrace_on_next_line = false
-ij_kotlin_line_break_after_multiline_when_entry = true
-ij_kotlin_line_comment_add_space = false
-ij_kotlin_line_comment_add_space_on_reformat = false
-ij_kotlin_line_comment_at_first_column = true
-ij_kotlin_method_annotation_wrap = split_into_lines
-ij_kotlin_method_call_chain_wrap = off
-ij_kotlin_method_parameters_new_line_after_left_paren = false
-ij_kotlin_method_parameters_right_paren_on_new_line = false
-ij_kotlin_method_parameters_wrap = off
-ij_kotlin_name_count_to_use_star_import = 2147483647
-ij_kotlin_name_count_to_use_star_import_for_members = 2147483647
-ij_kotlin_packages_to_use_import_on_demand = java.util.*,kotlinx.android.synthetic.**,io.ktor.**
-ij_kotlin_parameter_annotation_wrap = off
-ij_kotlin_space_after_comma = true
-ij_kotlin_space_after_extend_colon = true
-ij_kotlin_space_after_type_colon = true
-ij_kotlin_space_before_catch_parentheses = true
-ij_kotlin_space_before_comma = false
-ij_kotlin_space_before_extend_colon = true
-ij_kotlin_space_before_for_parentheses = true
-ij_kotlin_space_before_if_parentheses = true
-ij_kotlin_space_before_lambda_arrow = true
-ij_kotlin_space_before_type_colon = false
-ij_kotlin_space_before_when_parentheses = true
-ij_kotlin_space_before_while_parentheses = true
-ij_kotlin_spaces_around_additive_operators = true
-ij_kotlin_spaces_around_assignment_operators = true
-ij_kotlin_spaces_around_equality_operators = true
-ij_kotlin_spaces_around_function_type_arrow = true
-ij_kotlin_spaces_around_logical_operators = true
-ij_kotlin_spaces_around_multiplicative_operators = true
-ij_kotlin_spaces_around_range = false
-ij_kotlin_spaces_around_relational_operators = true
-ij_kotlin_spaces_around_unary_operator = false
-ij_kotlin_spaces_around_when_arrow = true
-ij_kotlin_use_custom_formatting_for_modifiers = true
-ij_kotlin_variable_annotation_wrap = off
-ij_kotlin_while_on_new_line = false
-ij_kotlin_wrap_elvis_expressions = 1
-ij_kotlin_wrap_expression_body_functions = 0
-ij_kotlin_wrap_first_method_in_call_chain = false
-
[{*.markdown,*.md}]
ij_markdown_force_one_space_after_blockquote_symbol = true
ij_markdown_force_one_space_after_header_symbol = true
@@ -961,5 +382,3 @@ ij_markdown_min_lines_between_paragraphs = 1
ij_markdown_wrap_text_if_long = true
ij_markdown_wrap_text_inside_blockquotes = true
-[{*.toml,Cargo.lock,Cargo.toml.orig,Gopkg.lock,Pipfile,poetry.lock}]
-ij_toml_keep_indents_on_empty_lines = false
diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml
index 2ea596224..13855c861 100644
--- a/.idea/codeStyles/Project.xml
+++ b/.idea/codeStyles/Project.xml
@@ -8,15 +8,6 @@
-
diff --git a/src/androidTest/java/de/dennisguse/opentracks/io/file/TrackFilenameGeneratorTest2.java b/src/androidTest/java/de/dennisguse/opentracks/io/file/TrackFilenameGenerator2Test.java
similarity index 92%
rename from src/androidTest/java/de/dennisguse/opentracks/io/file/TrackFilenameGeneratorTest2.java
rename to src/androidTest/java/de/dennisguse/opentracks/io/file/TrackFilenameGenerator2Test.java
index 47ba0f256..f3e14ead8 100644
--- a/src/androidTest/java/de/dennisguse/opentracks/io/file/TrackFilenameGeneratorTest2.java
+++ b/src/androidTest/java/de/dennisguse/opentracks/io/file/TrackFilenameGenerator2Test.java
@@ -14,7 +14,7 @@ import de.dennisguse.opentracks.data.models.Track;
//TODO Merge with TrackFilenameGeneratorTest whenever Junit5 gets available.
//https://github.com/android/android-test/issues/224
@RunWith(Parameterized.class)
-public class TrackFilenameGeneratorTest2 {
+public class TrackFilenameGenerator2Test {
@Parameterized.Parameters
public static Collection data() {
@@ -26,7 +26,7 @@ public class TrackFilenameGeneratorTest2 {
private final TrackFilenameGenerator subject;
- public TrackFilenameGeneratorTest2(String template) {
+ public TrackFilenameGenerator2Test(String template) {
this.subject = new TrackFilenameGenerator(template);
}
diff --git a/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/ExportImportTest.java b/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/ExportImportTest.java
index ed584df35..a80b5da34 100644
--- a/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/ExportImportTest.java
+++ b/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/ExportImportTest.java
@@ -112,7 +112,7 @@ public class ExportImportTest {
private TrackImporter trackImporter;
@Before
- public void fileSetup() throws IOException, TimeoutException {
+ public void fileSetup() throws IOException {
TrackRecordingServiceTestUtils.resetService(mServiceRule, context);
tmpFile = File.createTempFile("test", "test", context.getFilesDir());
@@ -124,7 +124,7 @@ public class ExportImportTest {
}
@After
- public void tearDown() throws TimeoutException {
+ public void tearDown() {
tmpFile.deleteOnExit();
tmpFileUri = null;
diff --git a/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestMarker.java b/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceMarkerTest.java
similarity index 97%
rename from src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestMarker.java
rename to src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceMarkerTest.java
index 077336f78..945a7a6a9 100644
--- a/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestMarker.java
+++ b/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceMarkerTest.java
@@ -51,7 +51,7 @@ import de.dennisguse.opentracks.data.models.TrackPoint;
import de.dennisguse.opentracks.services.handlers.TrackPointCreator;
@RunWith(AndroidJUnit4.class)
-public class TrackRecordingServiceTestMarker {
+public class TrackRecordingServiceMarkerTest {
@Rule
public final ServiceTestRule mServiceRule = ServiceTestRule.withTimeout(5, TimeUnit.SECONDS);
@@ -86,7 +86,7 @@ public class TrackRecordingServiceTestMarker {
}
@After
- public void tearDown() throws TimeoutException {
+ public void tearDown() {
TrackRecordingServiceTestUtils.resetService(mServiceRule, context);
// Ensure that the database is empty after every test
diff --git a/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestRecording.java b/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceRecordingTest.java
similarity index 99%
rename from src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestRecording.java
rename to src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceRecordingTest.java
index 58be6700d..5c11b2b77 100644
--- a/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestRecording.java
+++ b/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceRecordingTest.java
@@ -49,7 +49,7 @@ import de.dennisguse.opentracks.stats.TrackStatistics;
* So, if something fails, subsequent tests may be affected.
*/
@RunWith(AndroidJUnit4.class)
-public class TrackRecordingServiceTestRecording {
+public class TrackRecordingServiceRecordingTest {
@Rule
public final ServiceTestRule mServiceRule = ServiceTestRule.withTimeout(5, TimeUnit.SECONDS);
@@ -96,7 +96,7 @@ public class TrackRecordingServiceTestRecording {
}
@After
- public void tearDown() throws TimeoutException {
+ public void tearDown() {
TrackRecordingServiceTestUtils.resetService(mServiceRule, context);
// Ensure that the database is empty after every test
contentProviderUtils.deleteAllTracks(context);
diff --git a/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestStateMachine.java b/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceStateMachineTest.java
similarity index 98%
rename from src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestStateMachine.java
rename to src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceStateMachineTest.java
index 979a8dd9e..297a33c14 100644
--- a/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestStateMachine.java
+++ b/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceStateMachineTest.java
@@ -54,7 +54,7 @@ import de.dennisguse.opentracks.services.handlers.GpsStatusValue;
* As states are checked against MutableLiveData that are updated via `postValue()` (is asynchronous to be inform other Threads), Thread.sleep() is required.
*/
@RunWith(AndroidJUnit4.class)
-public class TrackRecordingServiceTestStateMachine {
+public class TrackRecordingServiceStateMachineTest {
@Rule
public final ServiceTestRule mServiceRule = ServiceTestRule.withTimeout(5, TimeUnit.SECONDS);
@@ -93,7 +93,7 @@ public class TrackRecordingServiceTestStateMachine {
}
@After
- public void tearDown() throws TimeoutException {
+ public void tearDown() {
TrackRecordingServiceTestUtils.resetService(mServiceRule, context);
// Ensure that the database is empty after every test
contentProviderUtils.deleteAllTracks(context);
diff --git a/src/main/java/de/dennisguse/opentracks/services/TrackRecordingServiceNotificationManager.java b/src/main/java/de/dennisguse/opentracks/services/TrackRecordingServiceNotificationManager.java
index 7ed36d078..7dd1f098e 100644
--- a/src/main/java/de/dennisguse/opentracks/services/TrackRecordingServiceNotificationManager.java
+++ b/src/main/java/de/dennisguse/opentracks/services/TrackRecordingServiceNotificationManager.java
@@ -108,9 +108,7 @@ class TrackRecordingServiceNotificationManager implements SharedPreferences.OnSh
Intent intent = IntentUtils.newIntent(context, TrackListActivity.class);
int pendingIntentFlags = 0;
- if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
- pendingIntentFlags = PendingIntent.FLAG_IMMUTABLE | PendingIntent.FLAG_UPDATE_CURRENT;
- }
+ pendingIntentFlags = PendingIntent.FLAG_IMMUTABLE | PendingIntent.FLAG_UPDATE_CURRENT;
PendingIntent pendingIntent = TaskStackBuilder.create(context)
.addParentStack(TrackListActivity.class)
.addNextIntent(intent)
diff --git a/src/main/java/de/dennisguse/opentracks/ui/util/ListItemUtils.java b/src/main/java/de/dennisguse/opentracks/ui/util/ListItemUtils.java
index 40b2cffb9..88db83581 100644
--- a/src/main/java/de/dennisguse/opentracks/ui/util/ListItemUtils.java
+++ b/src/main/java/de/dennisguse/opentracks/ui/util/ListItemUtils.java
@@ -81,7 +81,7 @@ public class ListItemUtils {
// Match list_item_time_distance in list_item.xml
timeDistanceText = getTimeDistance(totalTime, totalDistance);
if (markerCount > 0) {
- timeDistanceText += " \u2027";
+ timeDistanceText += " ‧";
}
}
setTextView(context, timeDistanceTextView, timeDistanceText, hasPhoto);
@@ -145,7 +145,7 @@ public class ListItemUtils {
StringBuilder builder = new StringBuilder();
if (totalTime != null && totalTime.length() != 0) {
if (builder.length() != 0) {
- builder.append(" \u2027 ");
+ builder.append(" ‧ ");
}
builder.append(totalTime);
}
diff --git a/src/main/res/layout/about.xml b/src/main/res/layout/about.xml
index 8ed16f753..5e8fa7711 100644
--- a/src/main/res/layout/about.xml
+++ b/src/main/res/layout/about.xml
@@ -13,126 +13,119 @@
android:id="@+id/track_list_toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
- app:title="@string/about_preference_title"
- app:navigationIcon="@drawable/ic_baseline_info_24" />
+ app:navigationIcon="@drawable/ic_baseline_info_24"
+ app:title="@string/about_preference_title" />
-
-
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ android:padding="20dp">
+ android:layout_margin="8dp"
+ android:orientation="horizontal">
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ android:textAppearance="?attr/textAppearanceSubtitle1" />
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/main/res/layout/help.xml b/src/main/res/layout/help.xml
index 65f6183f7..f98306535 100644
--- a/src/main/res/layout/help.xml
+++ b/src/main/res/layout/help.xml
@@ -16,145 +16,138 @@
app:title="@string/menu_help" />
-
-
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ android:padding="20dp">
-
+ android:text="@string/help_feature_title" />
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
-
-
-
-
-
+
+
+