Skip to content

Commit 83241d4

Browse files
306: image editor (#554)
1 parent e045bac commit 83241d4

File tree

1 file changed

+94
-25
lines changed

1 file changed

+94
-25
lines changed

src/z2ui5_cl_demo_app_306.clas.abap

Lines changed: 94 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
4351
ENDCLASS.
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+
150219
ENDCLASS.

0 commit comments

Comments
 (0)