@@ -23,23 +23,31 @@ CLASS z2ui5_cl_demo_app_306 DEFINITION
2323 tt_combo TYPE STANDARD TABLE OF t_combo WITH EMPTY KEY .
2424
2525
26- DATA mt_picture TYPE STANDARD TABLE OF ty_picture WITH EMPTY KEY .
27- DATA mt_picture_out TYPE STANDARD TABLE OF ty_picture WITH EMPTY KEY .
28- DATA mv_pic_display TYPE string .
29- DATA mv_check_init TYPE abap_bool .
30- DATA mv_picture_base TYPE string .
31- DATA facing_mode TYPE string .
32- DATA facing_modes TYPE tt_combo.
33- DATA device TYPE string .
34- DATA devices TYPE tt_combo.
26+ DATA :
27+ mt_picture TYPE STANDARD TABLE OF ty_picture WITH EMPTY KEY ,
28+ mt_picture_out TYPE STANDARD TABLE OF ty_picture WITH EMPTY KEY ,
29+ mv_pic_display TYPE string ,
30+ mv_check_init TYPE abap_bool ,
31+ mv_picture_base TYPE string ,
32+ facing_mode TYPE string ,
33+ facing_modes TYPE tt_combo,
34+ device TYPE string ,
35+ devices TYPE tt_combo.
3536
3637 PROTECTED SECTION .
3738
3839 METHODS view_display
3940 IMPORTING
4041 client TYPE REF TO z2ui5_if_client.
4142
43+ METHODS edit
44+ IMPORTING
45+ client TYPE REF TO z2ui5_if_client.
46+
47+ DATA selected_picture TYPE ty_picture.
48+
4249 PRIVATE SECTION .
50+
4351ENDCLASS .
4452
4553
@@ -53,8 +61,8 @@ CLASS z2ui5_cl_demo_app_306 IMPLEMENTATION.
5361
5462 DATA (cont ) = view->shell( ).
5563 DATA (page ) = cont->page( title = 'abap2UI5 - Device Camera Picture'
56- navbuttonpress = client->_event( 'BACK' )
57- shownavbutton = xsdbool ( client->get( )-s_draft-id_prev_app_stack IS NOT INITIAL ) ).
64+ navbuttonpress = client->_event( 'BACK' )
65+ shownavbutton = xsdbool ( client->get( )-s_draft-id_prev_app_stack IS NOT INITIAL ) ).
5866
5967 page->vbox( class = `sapUiSmallMargin`
6068 )->label( text = `facingMode: ` labelfor = `ComboFacingMode`
@@ -71,10 +79,10 @@ CLASS z2ui5_cl_demo_app_306 IMPLEMENTATION.
7179 )->get( )->item( key = `{KEY}` text = `{TEXT}` ).
7280
7381 page->_z2ui5( )->camera_picture(
74- value = client->_bind_edit( mv_picture_base )
75- onphoto = client->_event( 'CAPTURE' )
82+ value = client->_bind_edit( mv_picture_base )
83+ onphoto = client->_event( 'CAPTURE' )
7684 facingmode = client->_bind_edit( facing_mode )
77- deviceid = client->_bind_edit( device ) ).
85+ deviceid = client->_bind_edit( device ) ).
7886
7987 page->list(
8088 headertext = 'List Ouput'
@@ -91,13 +99,26 @@ CLASS z2ui5_cl_demo_app_306 IMPLEMENTATION.
9199 IF mv_pic_display IS NOT INITIAL .
92100 page->_generic( ns = 'html'
93101 name = 'center'
94- )->_generic( ns = 'html'
95- name = 'img'
96- t_prop = VALUE #(
97- ( n = 'src' v = mv_pic_display )
98- ) ).
102+ )->_generic( ns = 'html'
103+ name = 'img'
104+ t_prop = VALUE #(
105+ ( n = 'src' v = mv_pic_display )
106+ ) ).
107+
108+ page->button( text = 'Edit' icon = 'sap-icon://edit' press = client->_event( 'EDIT' ) ).
99109 ENDIF .
100110
111+
112+ view->_generic( name = `script`
113+ ns = `html`
114+ )->_cc_plain_xml(
115+ 'z2ui5.sendImage = () => { ' &&
116+ ' const image = sap.ui.core.Fragment.byId("popupId", "imageEditor").getImagePngDataURL();' &&
117+ ' z2ui5.oController.PopupDestroy();' && | \n| &&
118+ ' z2ui5.oController.eB([`SAVE`],image);' &&
119+ '}'
120+ ).
121+
101122 client->view_display( view->stringify( ) ).
102123
103124 ENDMETHOD .
@@ -119,24 +140,37 @@ CLASS z2ui5_cl_demo_app_306 IMPLEMENTATION.
119140
120141 ENDIF .
121142
143+
122144 CASE client->get( )-event.
123145
124146 WHEN 'CAPTURE' .
125147 INSERT VALUE #( data = mv_picture_base time = sy -uzeit ) INTO TABLE mt_picture.
126148 CLEAR mv_picture_base.
127149 client->view_model_update( ).
128150
129- WHEN 'START' .
151+ WHEN 'DISPLAY' .
152+
153+ selected_picture = mt_picture_out[ selected = abap_true ].
154+ mv_pic_display = mt_picture[ selected_picture-id ]-data.
155+ view_display( client ).
130156
157+ WHEN 'EDIT' .
158+
159+ edit( client ).
160+
161+ WHEN 'SAVE' .
162+
163+ DATA (args ) = client->get( )-t_event_arg.
164+
165+ ASSIGN mt_picture[ selected_picture-id ] TO FIELD-SYMBOL (<picture> ).
166+ IF sy -subrc = 0 .
167+ mv_pic_display = <picture> -data = args[ 1 ].
168+ ENDIF .
131169
132- WHEN 'DISPLAY' .
133- DATA (lt_sel ) = mt_picture_out.
134- DELETE lt_sel WHERE selected = abap_false .
135- DATA (ls_sel ) = lt_sel[ 1 ].
136- mv_pic_display = mt_picture[ ls_sel-id ]-data.
137170 view_display( client ).
138171
139172 WHEN 'BACK' .
173+
140174 client->nav_app_leave( client->get_app( client->get( )-s_draft-id_prev_app_stack ) ).
141175
142176 ENDCASE .
@@ -147,4 +181,39 @@ CLASS z2ui5_cl_demo_app_306 IMPLEMENTATION.
147181 ENDLOOP .
148182
149183 ENDMETHOD .
184+
185+ METHOD edit .
186+
187+ DATA (popup ) = z2ui5_cl_xml_view=>factory_popup(
188+ )->dialog(
189+ title = 'Edit Picture'
190+ icon = 'sap-icon://edit'
191+ contentheight = `80%`
192+ contentwidth = `80%` ).
193+
194+ popup->_generic(
195+ name = 'ImageEditorContainer'
196+ ns = 'ie'
197+ )->_generic(
198+ name = 'ImageEditor'
199+ ns = 'ie'
200+ t_prop = VALUE #(
201+ ( n = `id` v = `imageEditor` )
202+ ( n = `src` v = mv_pic_display ) ) ).
203+
204+ popup->footer( )->overflow_toolbar(
205+ )->button(
206+ text = 'Cancel'
207+ type = 'Reject'
208+ press = client->_event_client( client->cs_event-popup_close )
209+ )->toolbar_spacer(
210+ )->button(
211+ text = 'Save'
212+ type = 'Emphasized'
213+ press = client->_event_client( val = `Z2UI5` t_arg = VALUE #( ( `sendImage` ) ) ) ).
214+
215+ client->popup_display( popup->stringify( ) ).
216+
217+ ENDMETHOD .
218+
150219ENDCLASS .
0 commit comments