1bea4f105Sopenharmony_ci/* 2bea4f105Sopenharmony_ci * Copyright (c) 2023-2024 Huawei Device Co., Ltd. 3bea4f105Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4bea4f105Sopenharmony_ci * you may not use this file except in compliance with the License. 5bea4f105Sopenharmony_ci * You may obtain a copy of the License at 6bea4f105Sopenharmony_ci * 7bea4f105Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8bea4f105Sopenharmony_ci * 9bea4f105Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10bea4f105Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11bea4f105Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12bea4f105Sopenharmony_ci * See the License for the specific language governing permissions and 13bea4f105Sopenharmony_ci * limitations under the License. 14bea4f105Sopenharmony_ci */ 15bea4f105Sopenharmony_ci 16bea4f105Sopenharmony_ciimport { common, Context, UIExtensionContentSession } from '@kit.AbilityKit'; 17bea4f105Sopenharmony_ciimport { PickerWindowType, SelectMode, UnityStartMode } from '../constants/FilePickerItems'; 18bea4f105Sopenharmony_ci 19bea4f105Sopenharmony_ciexport class StartModeOptions { 20bea4f105Sopenharmony_ci /**************************** picker *********************************/ 21bea4f105Sopenharmony_ci /************** common *******************/ 22bea4f105Sopenharmony_ci /** 23bea4f105Sopenharmony_ci * picker场景下,界面模式 24bea4f105Sopenharmony_ci */ 25bea4f105Sopenharmony_ci public windowType = PickerWindowType.ABILITY; 26bea4f105Sopenharmony_ci 27bea4f105Sopenharmony_ci public session: UIExtensionContentSession; 28bea4f105Sopenharmony_ci 29bea4f105Sopenharmony_ci /** 30bea4f105Sopenharmony_ci * want对应的action 31bea4f105Sopenharmony_ci */ 32bea4f105Sopenharmony_ci public action: string = ''; 33bea4f105Sopenharmony_ci 34bea4f105Sopenharmony_ci /** 35bea4f105Sopenharmony_ci * 拉起picker的应用ability名 36bea4f105Sopenharmony_ci */ 37bea4f105Sopenharmony_ci public callerAbilityName: string = ''; 38bea4f105Sopenharmony_ci 39bea4f105Sopenharmony_ci /** 40bea4f105Sopenharmony_ci * 拉起picker的包名 41bea4f105Sopenharmony_ci */ 42bea4f105Sopenharmony_ci public callerBundleName: string = ''; 43bea4f105Sopenharmony_ci 44bea4f105Sopenharmony_ci /** 45bea4f105Sopenharmony_ci * 选择器callerId 46bea4f105Sopenharmony_ci */ 47bea4f105Sopenharmony_ci public callerUid: number = 0; 48bea4f105Sopenharmony_ci 49bea4f105Sopenharmony_ci /** 50bea4f105Sopenharmony_ci * 拉起picker的默认文件或者指定目录 51bea4f105Sopenharmony_ci */ 52bea4f105Sopenharmony_ci public defaultFilePathUri: string = ''; 53bea4f105Sopenharmony_ci 54bea4f105Sopenharmony_ci /** 55bea4f105Sopenharmony_ci * 代表拉起sysPicker/filePicker类型的ExtensionAbility 56bea4f105Sopenharmony_ci */ 57bea4f105Sopenharmony_ci public extType: string = ''; 58bea4f105Sopenharmony_ci 59bea4f105Sopenharmony_ci /** 60bea4f105Sopenharmony_ci * UIExtensionContext 61bea4f105Sopenharmony_ci */ 62bea4f105Sopenharmony_ci public uiExtContext: common.UIExtensionContext; 63bea4f105Sopenharmony_ci 64bea4f105Sopenharmony_ci /** 65bea4f105Sopenharmony_ci * UIExtensionContext 66bea4f105Sopenharmony_ci */ 67bea4f105Sopenharmony_ci public uiContext: common.UIAbilityContext; 68bea4f105Sopenharmony_ci 69bea4f105Sopenharmony_ci /** 70bea4f105Sopenharmony_ci * context 71bea4f105Sopenharmony_ci */ 72bea4f105Sopenharmony_ci public context: Context; 73bea4f105Sopenharmony_ci 74bea4f105Sopenharmony_ci 75bea4f105Sopenharmony_ci /** 76bea4f105Sopenharmony_ci * 用来区分选择,保存还是下载模式 77bea4f105Sopenharmony_ci * 当pickerType设置为downloadAuth时,用户配置的参数newFileNames、defaultFilePathUri和fileSuffixChoices将不会生效 78bea4f105Sopenharmony_ci */ 79bea4f105Sopenharmony_ci public pickerType: string = 'DEFAULT'; 80bea4f105Sopenharmony_ci 81bea4f105Sopenharmony_ci /************** select *******************/ 82bea4f105Sopenharmony_ci /** 83bea4f105Sopenharmony_ci * 选择文件的后缀类型 84bea4f105Sopenharmony_ci */ 85bea4f105Sopenharmony_ci public fileSuffixFilters: string[] = []; 86bea4f105Sopenharmony_ci 87bea4f105Sopenharmony_ci /** 88bea4f105Sopenharmony_ci * 选择文件最大个数,上限500, 默认为1 89bea4f105Sopenharmony_ci */ 90bea4f105Sopenharmony_ci public maxSelectNumber: number = 1; 91bea4f105Sopenharmony_ci 92bea4f105Sopenharmony_ci /** 93bea4f105Sopenharmony_ci * 支持选择的资源类型,比如:文件、文件夹和二者混合 94bea4f105Sopenharmony_ci */ 95bea4f105Sopenharmony_ci public selectMode: SelectMode = SelectMode.FILE; 96bea4f105Sopenharmony_ci 97bea4f105Sopenharmony_ci /** 98bea4f105Sopenharmony_ci * 当为授权模式,defaultFilePathUri必填,表明待授权uri 99bea4f105Sopenharmony_ci */ 100bea4f105Sopenharmony_ci public isAuthMode: boolean = false; 101bea4f105Sopenharmony_ci 102bea4f105Sopenharmony_ci /** 103bea4f105Sopenharmony_ci * 调用方传入文件类型(兼容双框架action) 104bea4f105Sopenharmony_ci */ 105bea4f105Sopenharmony_ci public phonePickerType: string = ''; 106bea4f105Sopenharmony_ci 107bea4f105Sopenharmony_ci /** 108bea4f105Sopenharmony_ci * 调用方传入文件类型列表 109bea4f105Sopenharmony_ci */ 110bea4f105Sopenharmony_ci public phonePickerTypeList: string[] = []; 111bea4f105Sopenharmony_ci 112bea4f105Sopenharmony_ci 113bea4f105Sopenharmony_ci /************** save *******************/ 114bea4f105Sopenharmony_ci /** 115bea4f105Sopenharmony_ci * 进行保存的文件名列表 116bea4f105Sopenharmony_ci */ 117bea4f105Sopenharmony_ci public newFileNames: string[] = []; 118bea4f105Sopenharmony_ci 119bea4f105Sopenharmony_ci /** 120bea4f105Sopenharmony_ci * 保存文件的后缀类型 121bea4f105Sopenharmony_ci */ 122bea4f105Sopenharmony_ci public fileSuffixChoices: string[] = []; 123bea4f105Sopenharmony_ci 124bea4f105Sopenharmony_ci /** 125bea4f105Sopenharmony_ci * 手机保存文件的后缀类型 126bea4f105Sopenharmony_ci */ 127bea4f105Sopenharmony_ci public PhoneFileSuffixChoices: string = ''; 128bea4f105Sopenharmony_ci 129bea4f105Sopenharmony_ci 130bea4f105Sopenharmony_ci /**************************** 主界面模式 *********************************/ 131bea4f105Sopenharmony_ci /** 132bea4f105Sopenharmony_ci * 文管启动模式,只允许初始化过程修改一次,默认为主界面模式 133bea4f105Sopenharmony_ci */ 134bea4f105Sopenharmony_ci public startMode: UnityStartMode = UnityStartMode.NORMAL; 135bea4f105Sopenharmony_ci 136bea4f105Sopenharmony_ci public getFileSuffixFilterList(): string[] { 137bea4f105Sopenharmony_ci if (this.fileSuffixFilters.length === 0) { 138bea4f105Sopenharmony_ci this.fileSuffixFilters.push('.*'); 139bea4f105Sopenharmony_ci } 140bea4f105Sopenharmony_ci return this.fileSuffixFilters; 141bea4f105Sopenharmony_ci } 142bea4f105Sopenharmony_ci 143bea4f105Sopenharmony_ci public setSelectMode(mode: number | undefined): void { 144bea4f105Sopenharmony_ci if (mode === undefined) { 145bea4f105Sopenharmony_ci this.selectMode = SelectMode.FILE; 146bea4f105Sopenharmony_ci return; 147bea4f105Sopenharmony_ci } 148bea4f105Sopenharmony_ci if ((mode < SelectMode.FILE) || (mode > SelectMode.MIXED)) { 149bea4f105Sopenharmony_ci this.selectMode = SelectMode.FILE; 150bea4f105Sopenharmony_ci return; 151bea4f105Sopenharmony_ci } 152bea4f105Sopenharmony_ci this.selectMode = mode; 153bea4f105Sopenharmony_ci } 154bea4f105Sopenharmony_ci 155bea4f105Sopenharmony_ci public setNewFileNames(names: string[] | undefined): void { 156bea4f105Sopenharmony_ci if (names === undefined) { 157bea4f105Sopenharmony_ci this.newFileNames = []; 158bea4f105Sopenharmony_ci return; 159bea4f105Sopenharmony_ci } 160bea4f105Sopenharmony_ci if (names.length === 0) { 161bea4f105Sopenharmony_ci this.newFileNames = ['']; 162bea4f105Sopenharmony_ci return; 163bea4f105Sopenharmony_ci } 164bea4f105Sopenharmony_ci this.newFileNames = names; 165bea4f105Sopenharmony_ci } 166bea4f105Sopenharmony_ci 167bea4f105Sopenharmony_ci public isDownloadMode(): boolean { 168bea4f105Sopenharmony_ci return this.pickerType === 'downloadAuth'; 169bea4f105Sopenharmony_ci } 170bea4f105Sopenharmony_ci 171bea4f105Sopenharmony_ci public isGrantPermissionMode(): boolean { 172bea4f105Sopenharmony_ci return this.isAuthMode; 173bea4f105Sopenharmony_ci } 174bea4f105Sopenharmony_ci 175bea4f105Sopenharmony_ci public isSelectFolderMode(): boolean { 176bea4f105Sopenharmony_ci return this.startMode === UnityStartMode.FILE_PICKER_OPEN_FOLDER; 177bea4f105Sopenharmony_ci } 178bea4f105Sopenharmony_ci 179bea4f105Sopenharmony_ci public isOpenFileMode(): boolean { 180bea4f105Sopenharmony_ci // 新方案需要通过pickerType区分 181bea4f105Sopenharmony_ci return this.action === 'ohos.want.action.OPEN_FILE_SERVICE' || this.action === 'ohos.want.action.OPEN_FILE'; 182bea4f105Sopenharmony_ci } 183bea4f105Sopenharmony_ci 184bea4f105Sopenharmony_ci public isCreateFileMode(): boolean { 185bea4f105Sopenharmony_ci // 新方案需要通过pickerType区分 186bea4f105Sopenharmony_ci return this.action === 'ohos.want.action.CREATE_FILE_SERVICE' || this.action === 'ohos.want.action.CREATE_FILE'; 187bea4f105Sopenharmony_ci } 188bea4f105Sopenharmony_ci 189bea4f105Sopenharmony_ci public isUxt(): boolean { 190bea4f105Sopenharmony_ci return this.windowType === PickerWindowType.UI; 191bea4f105Sopenharmony_ci } 192bea4f105Sopenharmony_ci 193bea4f105Sopenharmony_ci public setUiExtContext(context: common.UIExtensionContext): void { 194bea4f105Sopenharmony_ci this.uiExtContext = context; 195bea4f105Sopenharmony_ci } 196bea4f105Sopenharmony_ci}