/*
* Copyright (c) 2022 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import missionManager from '@ohos.application.missionManager'
import Logger from '../modle/Logger'
import Mission from '../modle/Mission'
import { MissionInfoComponent } from '../common/MissionInfoComponent'
import { TitleBar } from '../common/TitleBar'
const TAG: string = 'Index'
const NUMMAX: number = 10
@Entry
@Component
struct Index {
@State missionInfos: Array<Mission> = []
@State listenerId: number = 0
@State isRefreshing: boolean = false
@State refreshMission: Resource = $r('app.string.get_mission_manager')
@State isShow: boolean = true
onMissionCreatedCallback() {
Logger.info(TAG, `onMissionCreatedCallback Created`)
}
onMissionDestroyedCallback() {
Logger.info(TAG, `onMissionDestroyedCallback destroyed`)
}
onMissionSnapshotChangedCallback() {
Logger.info(TAG, `onMissionSnapshotChangedCallback snapshot changed`)
}
onMissionMovedToFrontCallback() {
Logger.info(TAG, `onMissionMovedToFrontCallback moved to fornt`)
}
onMissionIconUpdatedCallback() {
Logger.info(TAG, `onMissionIconUpdatedCallback icon has changed`)
}
handlerRefresh = () => {
Logger.info(TAG, `clickCallback start`)
this.isShow = false
missionManager.getMissionInfos('', NUMMAX, (error, data) => {
this.missionInfos = []
setTimeout(() => {
this.missionInfos = data.map((item) => {
return item
})
Logger.info(TAG, `getMissionInfos missionInfos= ${JSON.stringify(this.missionInfos)}`)
}, 1000)
})
}
aboutToAppear() {
let listener = {
onMissionCreated: this.onMissionCreatedCallback,
onMissionDestroyed: this.onMissionDestroyedCallback,
onMissionSnapshotChanged: this.onMissionSnapshotChangedCallback,
onMissionMovedToFront: this.onMissionMovedToFrontCallback,
onMissionIconUpdated: this.onMissionIconUpdatedCallback
}
this.listenerId = missionManager.registerMissionListener(listener)
Logger.info(TAG, `aboutToAppear ${this.listenerId}`)
}
aboutToDisappear() {
missionManager.unregisterMissionListener(this.listenerId)
}
build() {
Column() {
TitleBar()
Text(this.isShow ? this.refreshMission : '')
.fontSize(30)
.margin(10)
Refresh({ refreshing: this.isRefreshing, offset: 120, friction: 100 }) {
List({ space: 20, initialIndex: 0 }) {
ForEach(this.missionInfos, (item) => {
ListItem() {
MissionInfoComponent({ mission: item, handlerRefresh: this.handlerRefresh })
}
}, item => item.timestamp)
}
.height('90%')
}
.width('95%')
.onRefreshing(this.handlerRefresh)
}
.width('100%')
.height('100%')
}
}