1df226684Sopenharmony_ci/* 2df226684Sopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd. 3df226684Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4df226684Sopenharmony_ci * you may not use this file except in compliance with the License. 5df226684Sopenharmony_ci * You may obtain a copy of the License at 6df226684Sopenharmony_ci * 7df226684Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8df226684Sopenharmony_ci * 9df226684Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10df226684Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11df226684Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12df226684Sopenharmony_ci * See the License for the specific language governing permissions and 13df226684Sopenharmony_ci * limitations under the License. 14df226684Sopenharmony_ci */ 15df226684Sopenharmony_ci 16df226684Sopenharmony_ciimport UIExtensionContentSession from '@ohos.app.ability.UIExtensionContentSession'; 17df226684Sopenharmony_ciimport ability from '@ohos.ability.ability'; 18df226684Sopenharmony_ciimport Constants from '../common/constant'; 19df226684Sopenharmony_ciimport GlobalContext from '../common/GlobalContext'; 20df226684Sopenharmony_ciimport { directionStatus } from '../common/utils'; 21df226684Sopenharmony_ciimport common from '@ohos.app.ability.common'; 22df226684Sopenharmony_ciimport { HiLog } from '../common/HiLog'; 23df226684Sopenharmony_ci 24df226684Sopenharmony_ciconst TAG = 'PermStat'; 25df226684Sopenharmony_ci 26df226684Sopenharmony_cilet abilityResult: ability.AbilityResult = { 27df226684Sopenharmony_ci 'resultCode': 0, 28df226684Sopenharmony_ci 'want': {} 29df226684Sopenharmony_ci}; 30df226684Sopenharmony_ci 31df226684Sopenharmony_ciclass StatusContent { 32df226684Sopenharmony_ci public label: Resource | undefined = undefined 33df226684Sopenharmony_ci public value: boolean = false 34df226684Sopenharmony_ci public date?: boolean 35df226684Sopenharmony_ci} 36df226684Sopenharmony_ci 37df226684Sopenharmony_ciclass TitleContent { 38df226684Sopenharmony_ci public title: Resource | undefined = undefined 39df226684Sopenharmony_ci public content: StatusContent[] = [] 40df226684Sopenharmony_ci} 41df226684Sopenharmony_ci 42df226684Sopenharmony_cilet storage = LocalStorage.getShared(); 43df226684Sopenharmony_ci@Entry(storage) 44df226684Sopenharmony_ci@Component 45df226684Sopenharmony_cistruct PermissionStatus { 46df226684Sopenharmony_ci @State session: UIExtensionContentSession | undefined = storage === undefined ? undefined : storage.get<UIExtensionContentSession>('session'); 47df226684Sopenharmony_ci @State directionStatus: number = 0; 48df226684Sopenharmony_ci @State authPerm: number = Constants.PP_IMAGE_PAD; 49df226684Sopenharmony_ci @State authPermFlag: boolean = false; 50df226684Sopenharmony_ci @State accountId: string = ''; 51df226684Sopenharmony_ci @State validity: number = 0; 52df226684Sopenharmony_ci private array1: TitleContent[] = [ 53df226684Sopenharmony_ci { 54df226684Sopenharmony_ci title: ($r('app.string.perm_list_title_read_only')), 55df226684Sopenharmony_ci content: [ 56df226684Sopenharmony_ci { 57df226684Sopenharmony_ci label: ($r('app.string.perm_list_title_read_only')), value: true 58df226684Sopenharmony_ci } 59df226684Sopenharmony_ci ] 60df226684Sopenharmony_ci }, 61df226684Sopenharmony_ci { 62df226684Sopenharmony_ci title: ($r('app.string.header_title_edit')), 63df226684Sopenharmony_ci content: [ 64df226684Sopenharmony_ci { 65df226684Sopenharmony_ci label: ($r('app.string.save')), value: false 66df226684Sopenharmony_ci }, 67df226684Sopenharmony_ci { 68df226684Sopenharmony_ci label: ($r('app.string.save_as')), value: false 69df226684Sopenharmony_ci }, 70df226684Sopenharmony_ci { 71df226684Sopenharmony_ci label: ($r('app.string.header_title_edit_content')), value: false 72df226684Sopenharmony_ci }, 73df226684Sopenharmony_ci { 74df226684Sopenharmony_ci label: ($r('app.string.screenshot')), value: false 75df226684Sopenharmony_ci }, 76df226684Sopenharmony_ci { 77df226684Sopenharmony_ci label: ($r('app.string.share_the_screen')), value: false 78df226684Sopenharmony_ci }, 79df226684Sopenharmony_ci { 80df226684Sopenharmony_ci label: ($r('app.string.screen_recording')), value: false 81df226684Sopenharmony_ci }, 82df226684Sopenharmony_ci { 83df226684Sopenharmony_ci label: ($r('app.string.duplicate')), value: false 84df226684Sopenharmony_ci }, 85df226684Sopenharmony_ci { 86df226684Sopenharmony_ci label: ($r('app.string.print')), value: false 87df226684Sopenharmony_ci }, 88df226684Sopenharmony_ci ] 89df226684Sopenharmony_ci }, 90df226684Sopenharmony_ci { 91df226684Sopenharmony_ci title: ($r('app.string.Document_valid')), 92df226684Sopenharmony_ci content: [ 93df226684Sopenharmony_ci { 94df226684Sopenharmony_ci label: ($r('app.string.Document_valid_until')), value: false, date: true 95df226684Sopenharmony_ci } 96df226684Sopenharmony_ci ] 97df226684Sopenharmony_ci } 98df226684Sopenharmony_ci ]; 99df226684Sopenharmony_ci private array2: TitleContent[] = [ 100df226684Sopenharmony_ci { 101df226684Sopenharmony_ci title: ($r('app.string.perm_list_title_read_only')), 102df226684Sopenharmony_ci content: [ 103df226684Sopenharmony_ci { 104df226684Sopenharmony_ci label: ($r('app.string.perm_list_title_read_only')), value: true 105df226684Sopenharmony_ci } 106df226684Sopenharmony_ci ] 107df226684Sopenharmony_ci }, 108df226684Sopenharmony_ci { 109df226684Sopenharmony_ci title: ($r('app.string.header_title_edit')), 110df226684Sopenharmony_ci content: [ 111df226684Sopenharmony_ci { 112df226684Sopenharmony_ci label: ($r('app.string.save')), value: true 113df226684Sopenharmony_ci }, 114df226684Sopenharmony_ci { 115df226684Sopenharmony_ci label: ($r('app.string.save_as')), value: true 116df226684Sopenharmony_ci }, 117df226684Sopenharmony_ci { 118df226684Sopenharmony_ci label: ($r('app.string.header_title_edit_content')), value: true 119df226684Sopenharmony_ci }, 120df226684Sopenharmony_ci { 121df226684Sopenharmony_ci label: ($r('app.string.screenshot')), value: true 122df226684Sopenharmony_ci }, 123df226684Sopenharmony_ci { 124df226684Sopenharmony_ci label: ($r('app.string.share_the_screen')), value: true 125df226684Sopenharmony_ci }, 126df226684Sopenharmony_ci { 127df226684Sopenharmony_ci label: ($r('app.string.screen_recording')), value: true 128df226684Sopenharmony_ci }, 129df226684Sopenharmony_ci { 130df226684Sopenharmony_ci label: ($r('app.string.duplicate')), value: true 131df226684Sopenharmony_ci }, 132df226684Sopenharmony_ci { 133df226684Sopenharmony_ci label: ($r('app.string.print')), value: true 134df226684Sopenharmony_ci }, 135df226684Sopenharmony_ci ] 136df226684Sopenharmony_ci }, 137df226684Sopenharmony_ci { 138df226684Sopenharmony_ci title: ($r('app.string.Document_valid')), 139df226684Sopenharmony_ci content: [ 140df226684Sopenharmony_ci { 141df226684Sopenharmony_ci label: ($r('app.string.Document_valid_until')), value: false, date: true 142df226684Sopenharmony_ci } 143df226684Sopenharmony_ci ] 144df226684Sopenharmony_ci } 145df226684Sopenharmony_ci ]; 146df226684Sopenharmony_ci 147df226684Sopenharmony_ci aboutToAppear() { 148df226684Sopenharmony_ci HiLog.info(TAG, `aboutToAppear`); 149df226684Sopenharmony_ci this.authPerm = AppStorage.get('authPerm') ?? 1; 150df226684Sopenharmony_ci this.accountId = AppStorage.get('contactAccount') ?? ''; 151df226684Sopenharmony_ci this.validity = AppStorage.get('validity') ?? 0; 152df226684Sopenharmony_ci this.directionStatus = (getContext(this) as common.UIAbilityContext).config.direction ?? -1; 153df226684Sopenharmony_ci directionStatus((counter) => { 154df226684Sopenharmony_ci this.directionStatus = counter; 155df226684Sopenharmony_ci }) 156df226684Sopenharmony_ci } 157df226684Sopenharmony_ci 158df226684Sopenharmony_ci getTime(validity: number) { 159df226684Sopenharmony_ci if (validity === 0) { 160df226684Sopenharmony_ci return $r('app.string.permanently'); 161df226684Sopenharmony_ci } 162df226684Sopenharmony_ci let date: Date = new Date(validity); 163df226684Sopenharmony_ci let year = date.getFullYear(); 164df226684Sopenharmony_ci let month = date.getMonth() + 1; 165df226684Sopenharmony_ci let day = date.getDate(); 166df226684Sopenharmony_ci let hour = date.getHours(); 167df226684Sopenharmony_ci let minute = date.getMinutes(); 168df226684Sopenharmony_ci return `${year}/${month}/${day} ${hour}:${minute}`; 169df226684Sopenharmony_ci } 170df226684Sopenharmony_ci 171df226684Sopenharmony_ci @Builder 172df226684Sopenharmony_ci itemHead(text?: string | Resource) { 173df226684Sopenharmony_ci Text(text) 174df226684Sopenharmony_ci .fontSize($r('sys.float.ohos_id_text_size_sub_title3')) 175df226684Sopenharmony_ci .fontWeight(FontWeight.Medium) 176df226684Sopenharmony_ci .fontColor($r('sys.color.ohos_id_color_text_secondary')) 177df226684Sopenharmony_ci .width(Constants.HEADER_COLUMN_WIDTH) 178df226684Sopenharmony_ci .constraintSize({ minHeight: Constants.SUB_HEADER_HEIGHT }) 179df226684Sopenharmony_ci } 180df226684Sopenharmony_ci 181df226684Sopenharmony_ci build() { 182df226684Sopenharmony_ci GridRow({ 183df226684Sopenharmony_ci columns: { 184df226684Sopenharmony_ci xs: Constants.XS_COLUMNS, 185df226684Sopenharmony_ci sm: Constants.SM_COLUMNS, 186df226684Sopenharmony_ci md: Constants.MD_COLUMNS, 187df226684Sopenharmony_ci lg: Constants.LG_COLUMNS 188df226684Sopenharmony_ci }, 189df226684Sopenharmony_ci gutter: Constants.DIALOG_GUTTER 190df226684Sopenharmony_ci }) { 191df226684Sopenharmony_ci GridCol({ 192df226684Sopenharmony_ci span: { 193df226684Sopenharmony_ci xs: Constants.XS_SPAN, 194df226684Sopenharmony_ci sm: Constants.SM_SPAN, 195df226684Sopenharmony_ci md: Constants.SM_SPAN, 196df226684Sopenharmony_ci lg: Constants.SM_SPAN 197df226684Sopenharmony_ci }, 198df226684Sopenharmony_ci offset: { 199df226684Sopenharmony_ci xs: Constants.XS_OFFSET, 200df226684Sopenharmony_ci sm: Constants.SM_OFFSET, 201df226684Sopenharmony_ci md: Constants.LG_OFFSET, 202df226684Sopenharmony_ci lg: Constants.SM_SPAN 203df226684Sopenharmony_ci } 204df226684Sopenharmony_ci }) { 205df226684Sopenharmony_ci Flex({ justifyContent: FlexAlign.Center, alignItems: ItemAlign.Center, 206df226684Sopenharmony_ci direction: FlexDirection.Column }) { 207df226684Sopenharmony_ci Flex({ alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { 208df226684Sopenharmony_ci Column() { 209df226684Sopenharmony_ci Row() { 210df226684Sopenharmony_ci Text($r('app.string.header_title')) 211df226684Sopenharmony_ci .fontWeight(FontWeight.Bold) 212df226684Sopenharmony_ci .fontColor($r('sys.color.ohos_id_color_text_primary')) 213df226684Sopenharmony_ci .fontSize($r('sys.float.ohos_id_text_size_dialog_tittle')) 214df226684Sopenharmony_ci .width(Constants.HEADER_TEXT_WIDTH) 215df226684Sopenharmony_ci .align(Alignment.Start) 216df226684Sopenharmony_ci } 217df226684Sopenharmony_ci .width(Constants.HEADER_COLUMN_WIDTH) 218df226684Sopenharmony_ci .height(Constants.HEADER_COLUMN_HEIGHT) 219df226684Sopenharmony_ci .padding({ 220df226684Sopenharmony_ci left: Constants.HEADER_COLUMN_PADDING_LEFT, 221df226684Sopenharmony_ci right: Constants.HEADER_COLUMN_PADDING_RIGHT 222df226684Sopenharmony_ci }) 223df226684Sopenharmony_ci .margin({ bottom: Constants.HEADER_COLUMN_MARGIN_BOTTOM }); 224df226684Sopenharmony_ci 225df226684Sopenharmony_ci Scroll() { 226df226684Sopenharmony_ci Column() { 227df226684Sopenharmony_ci Row() { 228df226684Sopenharmony_ci Text(this.authPerm === Constants.FOOTER_OPACITY_ONE ? 229df226684Sopenharmony_ci $r('app.string.permission_status_readOnly') : $r('app.string.permission_status_title')) 230df226684Sopenharmony_ci .fontWeight(FontWeight.Regular) 231df226684Sopenharmony_ci .fontColor($r('sys.color.ohos_id_color_text_secondary')) 232df226684Sopenharmony_ci .fontSize($r('sys.float.ohos_id_text_size_body1')) 233df226684Sopenharmony_ci .width(Constants.HEADER_TEXT_WIDTH) 234df226684Sopenharmony_ci .align(Alignment.Start) 235df226684Sopenharmony_ci } 236df226684Sopenharmony_ci .width(Constants.HEADER_COLUMN_WIDTH) 237df226684Sopenharmony_ci .margin({ bottom: Constants.DU_LINE_MARGIN_TOP2 }) 238df226684Sopenharmony_ci 239df226684Sopenharmony_ci List() { 240df226684Sopenharmony_ci ForEach(this.authPerm === Constants.FOOTER_OPACITY_ONE ? 241df226684Sopenharmony_ci this.array1 : this.array2, (item: TitleContent) => { 242df226684Sopenharmony_ci ListItemGroup({ header: this.itemHead(item.title) }) { 243df226684Sopenharmony_ci ForEach(item.content, (item: StatusContent) => { 244df226684Sopenharmony_ci ListItem() { 245df226684Sopenharmony_ci Column() { 246df226684Sopenharmony_ci Row() { 247df226684Sopenharmony_ci Text(item.label) 248df226684Sopenharmony_ci .constraintSize({ 249df226684Sopenharmony_ci minHeight: Constants.SUB_HEADER_HEIGHT, 250df226684Sopenharmony_ci maxWidth: Constants.SUB_HEADER_WIDTH 251df226684Sopenharmony_ci }) 252df226684Sopenharmony_ci .fontSize($r('sys.float.ohos_id_text_size_body1')) 253df226684Sopenharmony_ci .textAlign(TextAlign.Start) 254df226684Sopenharmony_ci .fontWeight(FontWeight.Medium) 255df226684Sopenharmony_ci Blank() 256df226684Sopenharmony_ci if (item.date) { 257df226684Sopenharmony_ci Text(this.getTime(this.validity)) 258df226684Sopenharmony_ci .constraintSize({ minHeight: Constants.SUB_HEADER_HEIGHT }) 259df226684Sopenharmony_ci .fontSize($r('sys.float.ohos_id_text_size_body2')) 260df226684Sopenharmony_ci .textAlign(TextAlign.Start) 261df226684Sopenharmony_ci .fontWeight(FontWeight.Regular) 262df226684Sopenharmony_ci .opacity(Constants.ENCRYPTION_STATUS_VALUE_COLOR) 263df226684Sopenharmony_ci } else { 264df226684Sopenharmony_ci SymbolGlyph(item.value ? $r('sys.symbol.checkmark') : $r('sys.symbol.multiply')) 265df226684Sopenharmony_ci .fontSize(`${Constants.PP_IMAGE_WIDTH}vp`) 266df226684Sopenharmony_ci .fontColor([$r('sys.color.ohos_id_color_text_primary')]) 267df226684Sopenharmony_ci .opacity(Constants.ENCRYPTION_STATUS_VALUE_COLOR) 268df226684Sopenharmony_ci } 269df226684Sopenharmony_ci } 270df226684Sopenharmony_ci .width(Constants.HEADER_TEXT_WIDTH); 271df226684Sopenharmony_ci Divider() 272df226684Sopenharmony_ci .width(Constants.HEADER_TEXT_WIDTH) 273df226684Sopenharmony_ci .height(Constants.FOOTER_OPACITY_ONE) 274df226684Sopenharmony_ci .color($r('sys.color.comp_divider')); 275df226684Sopenharmony_ci } 276df226684Sopenharmony_ci } 277df226684Sopenharmony_ci }, (item: StatusContent) => JSON.stringify(item)) 278df226684Sopenharmony_ci } 279df226684Sopenharmony_ci }) 280df226684Sopenharmony_ci } 281df226684Sopenharmony_ci 282df226684Sopenharmony_ci Row() { 283df226684Sopenharmony_ci Text() { 284df226684Sopenharmony_ci Span($r('app.string.apply_for_the_subject')) 285df226684Sopenharmony_ci if (this.authPerm === Constants.FOOTER_OPACITY_ONE) { 286df226684Sopenharmony_ci Span($r('app.string.apply_for_the_permission', this.accountId)) 287df226684Sopenharmony_ci } 288df226684Sopenharmony_ci } 289df226684Sopenharmony_ci .fontColor($r('sys.color.ohos_id_color_text_secondary')) 290df226684Sopenharmony_ci .fontSize($r('sys.float.ohos_id_text_size_body1')) 291df226684Sopenharmony_ci .align(Alignment.Start) 292df226684Sopenharmony_ci .fontWeight(FontWeight.Regular) 293df226684Sopenharmony_ci } 294df226684Sopenharmony_ci .width(Constants.HEADER_COLUMN_WIDTH) 295df226684Sopenharmony_ci .margin({ top: Constants.DA_MARGIN_TOP }); 296df226684Sopenharmony_ci } 297df226684Sopenharmony_ci }.constraintSize({ 298df226684Sopenharmony_ci maxHeight: this.directionStatus === 299df226684Sopenharmony_ci 0 ? Constants.CHANGE_MAX_HEIGHT : Constants.ENCRYPTION_SUCCESS_MAX_HEIGHT 300df226684Sopenharmony_ci }) 301df226684Sopenharmony_ci .padding({ 302df226684Sopenharmony_ci left: Constants.HEADER_COLUMN_PADDING_LEFT, 303df226684Sopenharmony_ci right: Constants.HEADER_COLUMN_PADDING_RIGHT 304df226684Sopenharmony_ci }) 305df226684Sopenharmony_ci 306df226684Sopenharmony_ci Row() { 307df226684Sopenharmony_ci Button($r('app.string.da_button'), { type: ButtonType.Capsule, stateEffect: true }) 308df226684Sopenharmony_ci .backgroundColor($r('sys.color.ohos_id_color_button_normal')) 309df226684Sopenharmony_ci .fontColor($r('sys.color.ohos_id_color_text_primary_activated')) 310df226684Sopenharmony_ci .width(Constants.ENCRYPTION_PERMISSION_STATUS_WIDTH) 311df226684Sopenharmony_ci .controlSize(ControlSize.NORMAL) 312df226684Sopenharmony_ci .onClick(() => { 313df226684Sopenharmony_ci if (this.session !== undefined) { 314df226684Sopenharmony_ci this.session.terminateSelfWithResult({ 315df226684Sopenharmony_ci 'resultCode': 0, 316df226684Sopenharmony_ci 'want': { 317df226684Sopenharmony_ci 'bundleName': Constants.DLP_MANAGER_BUNDLE_NAME, 318df226684Sopenharmony_ci }, 319df226684Sopenharmony_ci }); 320df226684Sopenharmony_ci } else { 321df226684Sopenharmony_ci if (GlobalContext.load('fileOpenHistoryFromMain')) { 322df226684Sopenharmony_ci (GlobalContext.load('fileOpenHistoryFromMain') as Map<string, Object>).delete(GlobalContext.load('uri') as string) 323df226684Sopenharmony_ci } 324df226684Sopenharmony_ci abilityResult.resultCode = 0; 325df226684Sopenharmony_ci (getContext(this) as common.UIAbilityContext).terminateSelfWithResult(abilityResult); 326df226684Sopenharmony_ci } 327df226684Sopenharmony_ci }) 328df226684Sopenharmony_ci } 329df226684Sopenharmony_ci .justifyContent(FlexAlign.Center) 330df226684Sopenharmony_ci .padding({ 331df226684Sopenharmony_ci top: Constants.FOOTER_ROW_PAD_LEFT, 332df226684Sopenharmony_ci bottom: Constants.HEADER_COLUMN_PADDING_BOTTOM, 333df226684Sopenharmony_ci left: Constants.FOOTER_ROW_PAD_LEFT, 334df226684Sopenharmony_ci right: Constants.FOOTER_ROW_PAD_RIGHT 335df226684Sopenharmony_ci }) 336df226684Sopenharmony_ci } 337df226684Sopenharmony_ci .width(Constants.ENCRYPTION_PC_FIXING_STATUS_WIDTH) 338df226684Sopenharmony_ci .backgroundColor($r('sys.color.ohos_id_color_dialog_bg')) 339df226684Sopenharmony_ci .borderRadius($r('sys.float.ohos_id_corner_radius_dialog')) 340df226684Sopenharmony_ci .shadow(ShadowStyle.OUTER_DEFAULT_MD) 341df226684Sopenharmony_ci .constraintSize({ minWidth: Constants.ENCRYPTION_PC_FIXING_STATUS_WIDTH }) 342df226684Sopenharmony_ci .backgroundBlurStyle(BlurStyle.COMPONENT_ULTRA_THICK); 343df226684Sopenharmony_ci } 344df226684Sopenharmony_ci } 345df226684Sopenharmony_ci } 346df226684Sopenharmony_ci } 347df226684Sopenharmony_ci } 348df226684Sopenharmony_ci} 349