1/*
2 * Copyright (C) 2024 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *     http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16/**
17 * @file A component which support other applications to select photos or videos
18 * @kit MediaLibraryKit
19 */
20
21import photoAccessHelper from '@ohos.file.photoAccessHelper';
22
23/**
24 * Declare struct PhotoPickerComponent
25 *
26 * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
27 * @atomicservice
28 * @since 12
29 */
30@Component
31export declare struct PhotoPickerComponent {
32  /**
33   * PickerOptions
34   *
35   * @type { ?PickerOptions }
36   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
37   * @atomicservice
38   * @since 12
39   */
40  pickerOptions?: PickerOptions;
41
42  /**
43   * Callback when select photos or videos
44   *
45   * @type { ?function }
46   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
47   * @atomicservice
48   * @since 12
49   */
50  onSelect?: (uri: string) => void;
51
52  /**
53   * Callback when Deselect photos or videos
54   *
55   * @type { ?function }
56   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
57   * @atomicservice
58   * @since 12
59   */
60  onDeselect?: (uri: string) => void;
61
62  /**
63   * Callback when click item. include click camera item and thumbnail item, will return itemInfo
64   *
65   * @type { ?function }
66   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
67   * @atomicservice
68   * @since 12
69   */
70  onItemClicked?: (itemInfo: ItemInfo, clickType: ClickType) => boolean;
71
72  /**
73   * Callback when enter photo browser, will return photoBrowserInfo
74   *
75   * @type { ?function }
76   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
77   * @atomicservice
78   * @since 12
79   */
80  onEnterPhotoBrowser?: (photoBrowserInfo: PhotoBrowserInfo) => boolean;
81
82  /**
83   * Callback when exit photo browser, will return photoBrowserInfo
84   *
85   * @type { ?function }
86   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
87   * @atomicservice
88   * @since 12
89   */
90  onExitPhotoBrowser?: (photoBrowserInfo: PhotoBrowserInfo) => boolean;
91
92  /**
93   * Callback when pickerController is ready.
94   * Set data to picker component by pickerController is supported after pickerController is ready
95   *
96   * @type { ?function }
97   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
98   * @atomicservice
99   * @since 12
100   */
101  onPickerControllerReady?: () => void;
102
103  /**
104   * Callback when photo browser change, will return browserItemInfo
105   *
106   * @type { ?function }
107   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
108   * @atomicservice
109   * @since 12
110   */
111  onPhotoBrowserChanged?: (browserItemInfo: BaseItemInfo) => boolean;
112
113  /**
114   * Callback when selected items are deleted
115   *
116   * @type { ?function }
117   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
118   * @atomicservice
119   * @since 13
120   */
121  onSelectedItemsDeleted?: ItemsDeletedCallback;
122
123  /**
124   * Callback when exceed max selected
125   *
126   * @type { ?function }
127   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
128   * @atomicservice
129   * @since 13
130   */
131  onExceedMaxSelected?: ExceedMaxSelectedCallback;
132
133  /**
134   * Callback when the current album is deleted
135   *
136   * @type { ?function }
137   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
138   * @atomicservice
139   * @since 13
140   */
141  onCurrentAlbumDeleted?: CurrentAlbumDeletedCallback
142
143  /**
144   * PickerController
145   *
146   * @type { ?PickerController }
147   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
148   * @atomicservice
149   * @since 12
150   */
151  @ObjectLink
152  pickerController: PickerController;
153
154  /**
155   * Build function of PhotoPickerComponent
156   *
157   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
158   * @atomicservice
159   * @since 12
160   */
161  build(): void;
162}
163
164
165/**
166 * The callback of onSelectedItemsDeleted event
167 *
168 * @typedef { function } ItemsDeletedCallback
169 * @param { Array<BaseItemInfo> }
170 * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
171 * @atomicservice
172 * @since 13
173 */
174export type ItemsDeletedCallback = (baseItemInfos: Array<BaseItemInfo>) => void;
175
176/**
177 * The callback of onExceedMaxSelected event
178 *
179 * @typedef { function } ItemsDeletedCallback
180 * @param { MaxCountType }
181 * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
182 * @atomicservice
183 * @since 13
184 */
185export type ExceedMaxSelectedCallback = (exceedMaxCountType: MaxCountType) => void;
186
187/**
188 * The callback of onCurrentAlbumDeleted event
189 *
190 * @typedef { function } CurrentAlbumDeletedCallback
191 * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
192 * @atomicservice
193 * @since 13
194 */
195export type CurrentAlbumDeletedCallback = () => void;
196
197/**
198 * The class for PickerController
199 *
200 * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
201 * @atomicservice
202 * @since 12
203 */
204@Observed
205export declare class PickerController {
206  /**
207   * Set data to picker component
208   *
209   * @param { DataType } dataType - data type
210   * @param { Object } data - data
211   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
212   * @atomicservice
213   * @since 12
214   */
215  setData(dataType: DataType, data: Object): void;
216
217  /**
218   * Set max select count to picker component, include max_total_count, max_photo_count and max_video_count.
219   *
220   * @param { MaxSelected } maxSelected - max select count data
221   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
222   * @atomicservice
223   * @since 12
224   */
225  setMaxSelected(maxSelected: MaxSelected): void;
226
227  /**
228   * Set photo browser item to picker component.
229   *
230   * @param { string } uri - specify image uri for photo browsing
231   * @param { PhotoBrowserRange } photoBrowserRange - photo browser slide range
232   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
233   * @atomicservice
234   * @since 12
235   */
236  setPhotoBrowserItem(uri: string, photoBrowserRange?: PhotoBrowserRange): void;
237
238  /**
239   * Exit photo browser.
240   *
241   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
242   * @atomicservice
243   * @since 13
244   */
245  exitPhotoBrowser(): void;
246
247  /**
248   * Sets whether other elements on the photo browser page are visible.
249   *
250   * @param { Array<PhotoBrowserUIElement> } elements - other elements on the photo browser page
251   * @param { boolean } isVisible - visible or not
252   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
253   * @atomicservice
254   * @since 13
255   */
256  setPhotoBrowserUIElementVisibility(elements: Array<PhotoBrowserUIElement>, isVisible: boolean): void;
257}
258
259/**
260 * PickerOptions Object
261 *
262 * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
263 * @atomicservice
264 * @since 12
265 */
266export declare class PickerOptions extends photoAccessHelper.BaseSelectOptions {
267  /**
268   * Support set checkBox color
269   *
270   * @type { ?string }
271   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
272   * @atomicservice
273   * @since 12
274   */
275  checkBoxColor?: string;
276
277  /**
278   * Support set backgroundColor
279   *
280   * @type { ?string }
281   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
282   * @atomicservice
283   * @since 12
284   */
285  backgroundColor?: string;
286
287  /**
288   * Support repeat select
289   *
290   * @type { ?boolean }
291   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
292   * @atomicservice
293   * @since 12
294   */
295  isRepeatSelectSupported?: boolean;
296
297  /**
298   * Support to set checkbox text color
299   *
300   * @type { ?string }
301   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
302   * @atomicservice
303   * @since 12
304   */
305  checkboxTextColor?: string;
306
307  /**
308   * Support to set photo browser background color mode
309   *
310   * @type { ?PickerColorMode }
311   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
312   * @atomicservice
313   * @since 12
314   */
315  photoBrowserBackgroundColorMode?: PickerColorMode;
316
317  /**
318   * Support to set max select number remind mode.
319   *
320   * @type { ?ReminderMode }
321   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
322   * @atomicservice
323   * @since 12
324   */
325  maxSelectedReminderMode?: ReminderMode;
326
327  /**
328   * Support to set display orientation
329   *
330   * @type { ?PickerOrientation }
331   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
332   * @atomicservice
333   * @since 12
334   */
335  orientation?: PickerOrientation;
336
337  /**
338   * Support to set select mode
339   *
340   * @type { ?SelectMode }
341   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
342   * @atomicservice
343   * @since 12
344   */
345  selectMode?: SelectMode;
346
347  /**
348   * Support to set max photo select number
349   *
350   * @type { ?number }
351   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
352   * @atomicservice
353   * @since 12
354   */
355  maxPhotoSelectNumber?: number;
356
357  /**
358   * Support to set max video select number
359   *
360   * @type { ?number }
361   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
362   * @atomicservice
363   * @since 12
364   */
365  maxVideoSelectNumber?: number;
366
367  /**
368   * Support to set sliding selection
369   *
370   * @type { ?boolean }
371   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
372   * @atomicservice
373   * @since 13
374   */
375  isSlidingSelectionSupported?: boolean;
376
377  /**
378   * Support to set photo browser checkbox position
379   *
380   * @type { ?[number, number] }
381   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
382   * @atomicservice
383   * @since 13
384   */
385  photoBrowserCheckboxPosition?: [number, number];
386}
387
388/**
389 * BaseItemInfo
390 *
391 * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
392 * @atomicservice
393 * @since 12
394 */
395export declare class BaseItemInfo {
396  /**
397   * Uri. if the itemType is CAMERA, it will be null
398   *
399   * @type { ?string }
400   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
401   * @atomicservice
402   * @since 12
403   */
404  uri?: string;
405
406  /**
407   * MimeType. if the itemType is CAMERA, it will be null
408   *
409   * @type { ?string }
410   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
411   * @atomicservice
412   * @since 12
413   */
414  mimeType?: string;
415
416  /**
417   * Width. if the itemType is CAMERA, it will be null
418   *
419   * @type { ?number }
420   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
421   * @atomicservice
422   * @since 12
423   */
424  width?: number;
425
426  /**
427   * Height. if the itemType is CAMERA, it will be null
428   *
429   * @type { ?number }
430   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
431   * @atomicservice
432   * @since 12
433   */
434  height?: number;
435
436  /**
437   * Size. if the itemType is CAMERA, it will be null
438   *
439   * @type { ?number }
440   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
441   * @atomicservice
442   * @since 12
443   */
444  size?: number;
445
446  /**
447   * Duration. if the itemType is CAMERA, it will be null; if photos, return -1
448   *
449   * @type { ?number }
450   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
451   * @atomicservice
452   * @since 12
453   */
454  duration?: number;
455}
456
457/**
458 * ItemInfo
459 *
460 * @extends BaseItemInfo
461 * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
462 * @atomicservice
463 * @since 12
464 */
465export declare class ItemInfo extends BaseItemInfo {
466  /**
467   * itemType. include CAMERA and THUMBNAIL.
468   *
469   * @type { ?ItemType }
470   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
471   * @atomicservice
472   * @since 12
473   */
474  itemType?: ItemType;
475}
476
477/**
478 * PhotoBrowserInfo
479 *
480 * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
481 * @atomicservice
482 * @since 12
483 */
484export declare class PhotoBrowserInfo {
485  /**
486   * AnimatorParams. include duration and curve
487   *
488   * @type { ?AnimatorParams }
489   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
490   * @atomicservice
491   * @since 12
492   */
493  animatorParams?: AnimatorParams;
494}
495
496/**
497 * AnimatorParams
498 *
499 * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
500 * @atomicservice
501 * @since 12
502 */
503export declare class AnimatorParams {
504  /**
505   * Animate duration
506   *
507   * @type { ?number }
508   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
509   * @atomicservice
510   * @since 12
511   */
512  duration?: number;
513
514  /**
515   * Animate curve
516   *
517   * @type { ?Curve | ICurve | string }
518   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
519   * @atomicservice
520   * @since 12
521   */
522  curve?: Curve | ICurve | string;
523}
524
525/**
526 * MaxSelected
527 *
528 * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
529 * @atomicservice
530 * @since 12
531 */
532export declare class MaxSelected {
533  /**
534   * data. support to set max_total_count, max_photo_count and max_video_count.
535   *
536   * @type { ?Map<MaxCountType, number> }
537   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
538   * @atomicservice
539   * @since 12
540   */
541  data?: Map<MaxCountType, number>;
542}
543
544/**
545 * DataType represents the type of the data set to picker component
546 *
547 * @enum { number } DataType
548 * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
549 * @atomicservice
550 * @since 12
551 */
552export declare enum DataType {
553  /**
554   * DataType: set selected uris to picker component, the data should be a array of uri
555   *
556   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
557   * @atomicservice
558   * @since 12
559   */
560  SET_SELECTED_URIS = 1,
561
562  /**
563   * SET_ALBUM_URI. set selected album uri to picker component
564   *
565   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
566   * @atomicservice
567   * @since 12
568   */
569  SET_ALBUM_URI = 2
570}
571
572/**
573 * ItemType. include CAMERA and THUMBNAIL
574 *
575 * @enum { number } ItemType
576 * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
577 * @atomicservice
578 * @since 12
579 */
580export declare enum ItemType {
581  /**
582   * THUMBNAIL. photos or videos item
583   *
584   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
585   * @atomicservice
586   * @since 12
587   */
588  THUMBNAIL = 0,
589
590  /**
591   * CAMERA. camera item
592   *
593   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
594   * @atomicservice
595   * @since 12
596   */
597  CAMERA = 1
598}
599
600/**
601 * ClickType. include SELECTED and DESELECTED
602 *
603 * @enum { number } ClickType
604 * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
605 * @atomicservice
606 * @since 12
607 */
608export declare enum ClickType {
609  /**
610   * SELECTED. click to select photos or videos, if click camera item, the clickType is SELECTED.
611   *
612   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
613   * @atomicservice
614   * @since 12
615   */
616  SELECTED = 0,
617
618  /**
619   * DESELECTED. click to deselect photos or videos
620   *
621   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
622   * @atomicservice
623   * @since 12
624   */
625  DESELECTED = 1
626}
627
628/**
629 * PickerOrientation. include VERTICAL and HORIZONTAL
630 *
631 * @enum { number } PickerOrientation
632 * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
633 * @atomicservice
634 * @since 12
635 */
636export declare enum PickerOrientation {
637  /**
638   * VERTICAL. vertical display
639   *
640   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
641   * @atomicservice
642   * @since 12
643   */
644  VERTICAL = 0,
645
646  /**
647   * HORIZONTAL. horizontal display
648   *
649   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
650   * @atomicservice
651   * @since 12
652   */
653  HORIZONTAL = 1
654}
655
656/**
657 * SelectMode. include SINGLE_SELECT and MULTI_SELECT
658 *
659 * @enum { number } SelectMode
660 * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
661 * @atomicservice
662 * @since 12
663 */
664export declare enum SelectMode {
665  /**
666   * SINGLE_SELECT. single select
667   *
668   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
669   * @atomicservice
670   * @since 12
671   */
672  SINGLE_SELECT = 0,
673
674  /**
675   * MULTI_SELECT. multi select
676   *
677   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
678   * @atomicservice
679   * @since 12
680   */
681  MULTI_SELECT = 1
682}
683
684/**
685 * PickerColorMode. include AUTO, LIGHT and DARK
686 *
687 * @enum { number } PickerColorMode
688 * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
689 * @atomicservice
690 * @since 12
691 */
692export declare enum PickerColorMode {
693  /**
694   * AUTO. follow system color
695   *
696   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
697   * @atomicservice
698   * @since 12
699   */
700  AUTO = 0,
701
702  /**
703   * LIGHT. light color
704   *
705   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
706   * @atomicservice
707   * @since 12
708   */
709  LIGHT = 1,
710
711  /**
712   * DARK. dark color
713   *
714   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
715   * @atomicservice
716   * @since 12
717   */
718  DARK = 2
719}
720
721/**
722 * ReminderMode, include NONE, TOAST and MASK
723 *
724 * @enum { number } ReminderMode
725 * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
726 * @atomicservice
727 * @since 12
728 */
729export declare enum ReminderMode {
730  /**
731   * NONE. no need to remind
732   *
733   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
734   * @atomicservice
735   * @since 12
736   */
737  NONE = 0,
738
739  /**
740   * TOAST. remind by toast
741   *
742   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
743   * @atomicservice
744   * @since 12
745   */
746  TOAST = 1,
747
748  /**
749   * MASK. remind by mask
750   *
751   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
752   * @atomicservice
753   * @since 12
754   */
755  MASK = 2
756}
757
758/**
759 * MaxCountType. include TOTAL_MAX_COUNT, PHOTO_MAX_COUNT and VIDEO_MAX_COUNT
760 *
761 * @enum { number } MaxCountType
762 * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
763 * @atomicservice
764 * @since 12
765 */
766export declare enum MaxCountType {
767  /**
768   * TOTAL_MAX_COUNT. total max count
769   *
770   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
771   * @atomicservice
772   * @since 12
773   */
774  TOTAL_MAX_COUNT = 0,
775
776  /**
777   * PHOTO_MAX_COUNT. photo max count
778   *
779   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
780   * @atomicservice
781   * @since 12
782   */
783  PHOTO_MAX_COUNT = 1,
784
785  /**
786   * VIDEO_MAX_COUNT. video max count
787   *
788   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
789   * @atomicservice
790   * @since 12
791   */
792  VIDEO_MAX_COUNT = 2
793}
794
795/**
796 * PhotoBrowserRange. include ALL and SELECTED_ONLY
797 *
798 * @enum { number } PhotoBrowserRange
799 * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
800 * @atomicservice
801 * @since 12
802 */
803export declare enum PhotoBrowserRange {
804  /**
805   * ALL. all photos or vedios
806   *
807   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
808   * @atomicservice
809   * @since 12
810   */
811  ALL = 0,
812
813  /**
814   * SELECTED_ONLY. only selected photos or vedios
815   *
816   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
817   * @atomicservice
818   * @since 12
819   */
820  SELECTED_ONLY = 1,
821}
822
823/**
824 * PhotoBrowserUIElement. include CHECKBOX and BACK_BUTTON
825 *
826 * @enum { number } PhotoBrowserUIElement
827 * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
828 * @atomicservice
829 * @since 13
830 */
831export declare enum PhotoBrowserUIElement {
832  /**
833   * CHECKBOX. checkbox
834   *
835   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
836   * @atomicservice
837   * @since 13
838   */
839  CHECKBOX = 0,
840
841  /**
842   * BACK_BUTTON. back button
843   *
844   * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
845   * @atomicservice
846   * @since 13
847   */
848  BACK_BUTTON = 1
849}