abapGit/src/zcl_abapgit_settings.clas.abap
Marc Bernard 29a9201a3b
Commit page: option to hide author fields (#5171)
* Commit page: option to hide author fields

The vast majority of time the committer is the same as the author (I assume). This adds an option to hide the author name and email fields on the commit form.

* Update docs

* Update docs

Co-authored-by: Christian Günter <christianguenter@googlemail.com>
2021-12-01 09:27:30 -05:00

483 lines
12 KiB
ABAP

CLASS zcl_abapgit_settings DEFINITION
PUBLIC
CREATE PUBLIC .
PUBLIC SECTION.
CONSTANTS c_commitmsg_comment_length_dft TYPE i VALUE 50 ##NO_TEXT.
CONSTANTS c_commitmsg_body_size_dft TYPE i VALUE 72 ##NO_TEXT.
CONSTANTS:
BEGIN OF c_icon_scaling,
large TYPE c VALUE 'L',
small TYPE c VALUE 'S',
END OF c_icon_scaling .
CONSTANTS:
BEGIN OF c_ui_theme,
default TYPE string VALUE 'default',
dark TYPE string VALUE 'dark',
belize TYPE string VALUE 'belize',
synced_with_gui TYPE string VALUE 'synced_with_gui',
END OF c_ui_theme .
METHODS set_proxy_url
IMPORTING
!iv_url TYPE string .
METHODS set_proxy_port
IMPORTING
!iv_port TYPE string .
METHODS set_proxy_authentication
IMPORTING
!iv_auth TYPE abap_bool .
METHODS set_proxy_bypass
IMPORTING
!it_bypass TYPE zif_abapgit_definitions=>ty_range_proxy_bypass_url OPTIONAL .
METHODS get_proxy_url
RETURNING
VALUE(rv_proxy_url) TYPE string .
METHODS get_proxy_port
RETURNING
VALUE(rv_port) TYPE string .
METHODS get_proxy_authentication
RETURNING
VALUE(rv_auth) TYPE abap_bool .
METHODS get_proxy_bypass
RETURNING
VALUE(rt_bypass) TYPE zif_abapgit_definitions=>ty_range_proxy_bypass_url .
METHODS set_run_critical_tests
IMPORTING
!iv_run TYPE abap_bool .
METHODS get_run_critical_tests
RETURNING
VALUE(rv_run) TYPE abap_bool .
METHODS set_experimental_features
IMPORTING
!iv_run TYPE abap_bool .
METHODS get_experimental_features
RETURNING
VALUE(rv_run) TYPE abap_bool .
METHODS set_max_lines
IMPORTING
!iv_lines TYPE i .
METHODS get_max_lines
RETURNING
VALUE(rv_lines) TYPE i .
METHODS set_adt_jump_enanbled
IMPORTING
!iv_adt_jump_enabled TYPE abap_bool .
METHODS get_adt_jump_enabled
RETURNING
VALUE(rv_adt_jump_enabled) TYPE abap_bool .
METHODS set_commitmsg_comment_length
IMPORTING
!iv_length TYPE i .
METHODS get_commitmsg_comment_length
RETURNING
VALUE(rv_length) TYPE i .
METHODS set_commitmsg_comment_default
IMPORTING
!iv_default TYPE string .
METHODS get_commitmsg_comment_default
RETURNING
VALUE(rv_default) TYPE string .
METHODS set_commitmsg_body_size
IMPORTING
!iv_length TYPE i .
METHODS get_commitmsg_body_size
RETURNING
VALUE(rv_length) TYPE i .
METHODS set_commitmsg_hide_author
IMPORTING
!iv_hide_author TYPE abap_bool.
METHODS get_commitmsg_hide_author
RETURNING
VALUE(rv_hide_author) TYPE abap_bool.
METHODS get_settings_xml
RETURNING
VALUE(rv_settings_xml) TYPE string
RAISING
zcx_abapgit_exception .
METHODS get_user_settings
RETURNING
VALUE(rs_settings) TYPE zif_abapgit_definitions=>ty_s_user_settings
RAISING
zcx_abapgit_exception .
METHODS set_xml_settings
IMPORTING
!iv_settings_xml TYPE string
RAISING
zcx_abapgit_exception .
METHODS set_defaults .
METHODS set_user_settings
IMPORTING
!is_user_settings TYPE zif_abapgit_definitions=>ty_s_user_settings .
METHODS get_show_default_repo
RETURNING
VALUE(rv_show_default_repo) TYPE abap_bool .
METHODS set_show_default_repo
IMPORTING
!iv_show_default_repo TYPE abap_bool .
METHODS set_link_hints_enabled
IMPORTING
!iv_link_hints_enabled TYPE abap_bool .
METHODS get_link_hints_enabled
RETURNING
VALUE(rv_link_hints_enabled) TYPE abap_bool
RAISING
zcx_abapgit_exception .
METHODS set_link_hint_key
IMPORTING
!iv_link_hint_key TYPE string .
METHODS get_link_hint_key
RETURNING
VALUE(rv_link_hint_key) TYPE string .
METHODS set_parallel_proc_disabled
IMPORTING
!iv_disable_parallel_proc TYPE abap_bool .
METHODS get_parallel_proc_disabled
RETURNING
VALUE(rv_disable_parallel_proc) TYPE abap_bool .
METHODS get_icon_scaling
RETURNING
VALUE(rv_scaling) TYPE zif_abapgit_definitions=>ty_s_user_settings-icon_scaling .
METHODS set_icon_scaling
IMPORTING
!iv_scaling TYPE zif_abapgit_definitions=>ty_s_user_settings-icon_scaling .
METHODS get_ui_theme
IMPORTING
!iv_resolve_synced TYPE abap_bool DEFAULT abap_true
RETURNING
VALUE(rv_ui_theme) TYPE zif_abapgit_definitions=>ty_s_user_settings-ui_theme .
METHODS set_ui_theme
IMPORTING
!iv_ui_theme TYPE zif_abapgit_definitions=>ty_s_user_settings-ui_theme .
METHODS get_activate_wo_popup
RETURNING
VALUE(rv_act_wo_popup) TYPE zif_abapgit_definitions=>ty_s_user_settings-activate_wo_popup .
METHODS set_activate_wo_popup
IMPORTING
!iv_act_wo_popup TYPE zif_abapgit_definitions=>ty_s_user_settings-activate_wo_popup .
PROTECTED SECTION.
PRIVATE SECTION.
TYPES: BEGIN OF ty_s_settings,
proxy_url TYPE string,
proxy_port TYPE string,
proxy_auth TYPE string,
proxy_bypass TYPE zif_abapgit_definitions=>ty_range_proxy_bypass_url,
run_critical_tests TYPE abap_bool,
experimental_features TYPE abap_bool,
commitmsg_comment_length TYPE i,
commitmsg_comment_deflt TYPE string,
commitmsg_body_size TYPE i,
commitmsg_hide_author TYPE abap_bool,
END OF ty_s_settings.
DATA: ms_settings TYPE ty_s_settings,
ms_user_settings TYPE zif_abapgit_definitions=>ty_s_user_settings.
METHODS:
set_default_link_hint_key.
ENDCLASS.
CLASS zcl_abapgit_settings IMPLEMENTATION.
METHOD get_activate_wo_popup.
rv_act_wo_popup = ms_user_settings-activate_wo_popup.
ENDMETHOD.
METHOD get_adt_jump_enabled.
rv_adt_jump_enabled = ms_user_settings-adt_jump_enabled.
ENDMETHOD.
METHOD get_commitmsg_body_size.
rv_length = ms_settings-commitmsg_body_size.
ENDMETHOD.
METHOD get_commitmsg_comment_default.
rv_default = ms_settings-commitmsg_comment_deflt.
ENDMETHOD.
METHOD get_commitmsg_comment_length.
rv_length = ms_settings-commitmsg_comment_length.
ENDMETHOD.
METHOD get_commitmsg_hide_author.
rv_hide_author = ms_settings-commitmsg_hide_author.
ENDMETHOD.
METHOD get_experimental_features.
rv_run = ms_settings-experimental_features.
ENDMETHOD.
METHOD get_icon_scaling.
rv_scaling = ms_user_settings-icon_scaling.
ENDMETHOD.
METHOD get_link_hints_enabled.
rv_link_hints_enabled = ms_user_settings-link_hints_enabled.
ENDMETHOD.
METHOD get_link_hint_key.
rv_link_hint_key = ms_user_settings-link_hint_key.
ENDMETHOD.
METHOD get_max_lines.
rv_lines = ms_user_settings-max_lines.
ENDMETHOD.
METHOD get_parallel_proc_disabled.
rv_disable_parallel_proc = ms_user_settings-parallel_proc_disabled.
ENDMETHOD.
METHOD get_proxy_authentication.
rv_auth = ms_settings-proxy_auth.
ENDMETHOD.
METHOD get_proxy_bypass.
rt_bypass = ms_settings-proxy_bypass.
ENDMETHOD.
METHOD get_proxy_port.
rv_port = ms_settings-proxy_port.
ENDMETHOD.
METHOD get_proxy_url.
rv_proxy_url = ms_settings-proxy_url.
ENDMETHOD.
METHOD get_run_critical_tests.
rv_run = ms_settings-run_critical_tests.
ENDMETHOD.
METHOD get_settings_xml.
DATA: li_output TYPE REF TO zif_abapgit_xml_output.
CREATE OBJECT li_output TYPE zcl_abapgit_xml_output.
li_output->add( iv_name = zcl_abapgit_persistence_db=>c_type_settings
ig_data = ms_settings ).
rv_settings_xml = li_output->render( ).
ENDMETHOD.
METHOD get_show_default_repo.
rv_show_default_repo = ms_user_settings-show_default_repo.
ENDMETHOD.
METHOD get_ui_theme.
DATA: lv_frontend_theme TYPE string.
rv_ui_theme = ms_user_settings-ui_theme.
IF rv_ui_theme = c_ui_theme-synced_with_gui AND iv_resolve_synced = abap_true.
TRY.
CALL METHOD ('CL_GUI_RESOURCES')=>get_themename
IMPORTING
themename = lv_frontend_theme
EXCEPTIONS
get_std_resource_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
rv_ui_theme = c_ui_theme-default.
RETURN.
ENDIF.
CATCH cx_sy_dyn_call_error.
rv_ui_theme = c_ui_theme-default.
RETURN.
ENDTRY.
CASE lv_frontend_theme.
WHEN 'Belize'.
rv_ui_theme = c_ui_theme-belize.
WHEN OTHERS.
rv_ui_theme = c_ui_theme-default.
ENDCASE.
ENDIF.
ENDMETHOD.
METHOD get_user_settings.
rs_settings = ms_user_settings.
ENDMETHOD.
METHOD set_activate_wo_popup.
ms_user_settings-activate_wo_popup = iv_act_wo_popup.
ENDMETHOD.
METHOD set_adt_jump_enanbled.
ms_user_settings-adt_jump_enabled = iv_adt_jump_enabled.
ENDMETHOD.
METHOD set_commitmsg_body_size.
ms_settings-commitmsg_body_size = iv_length.
ENDMETHOD.
METHOD set_commitmsg_comment_default.
ms_settings-commitmsg_comment_deflt = iv_default.
ENDMETHOD.
METHOD set_commitmsg_comment_length.
ms_settings-commitmsg_comment_length = iv_length.
ENDMETHOD.
METHOD set_commitmsg_hide_author.
ms_settings-commitmsg_hide_author = iv_hide_author.
ENDMETHOD.
METHOD set_defaults.
CLEAR ms_settings.
set_proxy_authentication( abap_false ).
set_run_critical_tests( abap_false ).
set_experimental_features( abap_false ).
set_max_lines( 500 ).
set_adt_jump_enanbled( abap_true ).
set_show_default_repo( abap_false ).
set_commitmsg_comment_length( c_commitmsg_comment_length_dft ).
set_commitmsg_body_size( c_commitmsg_body_size_dft ).
set_default_link_hint_key( ).
set_icon_scaling( '' ).
ENDMETHOD.
METHOD set_default_link_hint_key.
set_link_hint_key( |f| ).
ENDMETHOD.
METHOD set_experimental_features.
ms_settings-experimental_features = iv_run.
ENDMETHOD.
METHOD set_icon_scaling.
ms_user_settings-icon_scaling = iv_scaling.
IF ms_user_settings-icon_scaling NA c_icon_scaling.
ms_user_settings-icon_scaling = ''. " Reset to default
ENDIF.
ENDMETHOD.
METHOD set_link_hints_enabled.
ms_user_settings-link_hints_enabled = iv_link_hints_enabled.
ENDMETHOD.
METHOD set_link_hint_key.
ms_user_settings-link_hint_key = iv_link_hint_key.
ENDMETHOD.
METHOD set_max_lines.
ms_user_settings-max_lines = iv_lines.
ENDMETHOD.
METHOD set_parallel_proc_disabled.
ms_user_settings-parallel_proc_disabled = iv_disable_parallel_proc.
ENDMETHOD.
METHOD set_proxy_authentication.
ms_settings-proxy_auth = iv_auth.
ENDMETHOD.
METHOD set_proxy_bypass.
ms_settings-proxy_bypass = it_bypass.
ENDMETHOD.
METHOD set_proxy_port.
ms_settings-proxy_port = iv_port.
ENDMETHOD.
METHOD set_proxy_url.
ms_settings-proxy_url = iv_url.
ENDMETHOD.
METHOD set_run_critical_tests.
ms_settings-run_critical_tests = iv_run.
ENDMETHOD.
METHOD set_show_default_repo.
ms_user_settings-show_default_repo = iv_show_default_repo.
ENDMETHOD.
METHOD set_ui_theme.
ms_user_settings-ui_theme = iv_ui_theme.
IF ms_user_settings-ui_theme <> c_ui_theme-default
AND ms_user_settings-ui_theme <> c_ui_theme-dark
AND ms_user_settings-ui_theme <> c_ui_theme-belize
AND ms_user_settings-ui_theme <> c_ui_theme-synced_with_gui.
ms_user_settings-ui_theme = c_ui_theme-default. " Reset to default
ENDIF.
ENDMETHOD.
METHOD set_user_settings.
ms_user_settings = is_user_settings.
IF ms_user_settings-link_hint_key IS INITIAL.
set_default_link_hint_key( ).
ENDIF.
ENDMETHOD.
METHOD set_xml_settings.
DATA: lo_input TYPE REF TO zif_abapgit_xml_input.
CREATE OBJECT lo_input TYPE zcl_abapgit_xml_input EXPORTING iv_xml = iv_settings_xml.
CLEAR ms_settings.
lo_input->read(
EXPORTING
iv_name = zcl_abapgit_persistence_db=>c_type_settings
CHANGING
cg_data = ms_settings ).
ENDMETHOD.
ENDCLASS.