13ceed64fSopenharmony_ci/*
23ceed64fSopenharmony_ci * Copyright (c) 2021-2022 Huawei Device Co., Ltd.
33ceed64fSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
43ceed64fSopenharmony_ci * you may not use this file except in compliance with the License.
53ceed64fSopenharmony_ci * You may obtain a copy of the License at
63ceed64fSopenharmony_ci *
73ceed64fSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
83ceed64fSopenharmony_ci *
93ceed64fSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
103ceed64fSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
113ceed64fSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
123ceed64fSopenharmony_ci * See the License for the specific language governing permissions and
133ceed64fSopenharmony_ci * limitations under the License.
143ceed64fSopenharmony_ci */
153ceed64fSopenharmony_ci#ifndef OHOS_FORM_FWK_FORM_TIMER_H
163ceed64fSopenharmony_ci#define OHOS_FORM_FWK_FORM_TIMER_H
173ceed64fSopenharmony_ci
183ceed64fSopenharmony_ci#include "form_constants.h"
193ceed64fSopenharmony_ci#include "form_util.h"
203ceed64fSopenharmony_ci
213ceed64fSopenharmony_cinamespace OHOS {
223ceed64fSopenharmony_cinamespace AppExecFwk {
233ceed64fSopenharmony_ci/**
243ceed64fSopenharmony_ci * @enum UpdateType
253ceed64fSopenharmony_ci * Update type.
263ceed64fSopenharmony_ci */
273ceed64fSopenharmony_cienum UpdateType {
283ceed64fSopenharmony_ci    TYPE_INTERVAL_CHANGE,
293ceed64fSopenharmony_ci    TYPE_ATTIME_CHANGE,
303ceed64fSopenharmony_ci    TYPE_INTERVAL_TO_ATTIME,
313ceed64fSopenharmony_ci    TYPE_ATTIME_TO_INTERVAL,
323ceed64fSopenharmony_ci    TYPE_INTERVAL_ONCE,
333ceed64fSopenharmony_ci    TYPE_NO_CHANGE,
343ceed64fSopenharmony_ci};
353ceed64fSopenharmony_ci/**
363ceed64fSopenharmony_ci * @class FormTimer
373ceed64fSopenharmony_ci * form timer task.
383ceed64fSopenharmony_ci */
393ceed64fSopenharmony_ciclass FormTimer {
403ceed64fSopenharmony_cipublic:
413ceed64fSopenharmony_ci    int64_t formId;
423ceed64fSopenharmony_ci    int32_t userId;
433ceed64fSopenharmony_ci    int64_t period;
443ceed64fSopenharmony_ci    int hour;
453ceed64fSopenharmony_ci    int min;
463ceed64fSopenharmony_ci    bool isUpdateAt;
473ceed64fSopenharmony_ci    int64_t refreshTime;
483ceed64fSopenharmony_ci    bool isEnable = true;
493ceed64fSopenharmony_ci    bool isCountTimer;
503ceed64fSopenharmony_ci    UpdateType type = UpdateType::TYPE_INTERVAL_CHANGE;
513ceed64fSopenharmony_ci
523ceed64fSopenharmony_ci    FormTimer()
533ceed64fSopenharmony_ci    {
543ceed64fSopenharmony_ci        formId = -1;
553ceed64fSopenharmony_ci        userId = -1;
563ceed64fSopenharmony_ci        period = -1;
573ceed64fSopenharmony_ci        hour = -1;
583ceed64fSopenharmony_ci        min = -1;
593ceed64fSopenharmony_ci        isUpdateAt = false;
603ceed64fSopenharmony_ci        isCountTimer = false;
613ceed64fSopenharmony_ci        refreshTime = FormUtil::GetCurrentMillisecond();
623ceed64fSopenharmony_ci        type = UpdateType::TYPE_INTERVAL_CHANGE;
633ceed64fSopenharmony_ci    }
643ceed64fSopenharmony_ci
653ceed64fSopenharmony_ci    FormTimer(int64_t id, bool countTimer, int32_t uId = 0)
663ceed64fSopenharmony_ci    {
673ceed64fSopenharmony_ci        formId = id;
683ceed64fSopenharmony_ci        userId = uId;
693ceed64fSopenharmony_ci        period = -1;
703ceed64fSopenharmony_ci        hour = -1;
713ceed64fSopenharmony_ci        min = -1;
723ceed64fSopenharmony_ci        isUpdateAt = false;
733ceed64fSopenharmony_ci        isCountTimer = countTimer;
743ceed64fSopenharmony_ci        refreshTime = FormUtil::GetCurrentMillisecond();
753ceed64fSopenharmony_ci        type = UpdateType::TYPE_INTERVAL_CHANGE;
763ceed64fSopenharmony_ci    }
773ceed64fSopenharmony_ci
783ceed64fSopenharmony_ci    FormTimer(int64_t id, long repeatTime, int32_t uId = 0)
793ceed64fSopenharmony_ci    {
803ceed64fSopenharmony_ci        formId = id;
813ceed64fSopenharmony_ci        userId = uId;
823ceed64fSopenharmony_ci        period = repeatTime;
833ceed64fSopenharmony_ci        hour = -1;
843ceed64fSopenharmony_ci        min = -1;
853ceed64fSopenharmony_ci        isUpdateAt = false;
863ceed64fSopenharmony_ci        isCountTimer = true;
873ceed64fSopenharmony_ci        refreshTime = FormUtil::GetCurrentMillisecond();
883ceed64fSopenharmony_ci        type = UpdateType::TYPE_INTERVAL_CHANGE;
893ceed64fSopenharmony_ci    }
903ceed64fSopenharmony_ci
913ceed64fSopenharmony_ci    FormTimer(int64_t id, int hourTime, int minTime, int32_t uId = 0)
923ceed64fSopenharmony_ci    {
933ceed64fSopenharmony_ci        formId = id;
943ceed64fSopenharmony_ci        userId = uId;
953ceed64fSopenharmony_ci        hour = hourTime;
963ceed64fSopenharmony_ci        min = minTime;
973ceed64fSopenharmony_ci        period = -1;
983ceed64fSopenharmony_ci        isUpdateAt = true;
993ceed64fSopenharmony_ci        isCountTimer = false;
1003ceed64fSopenharmony_ci        refreshTime = FormUtil::GetCurrentMillisecond();
1013ceed64fSopenharmony_ci        type = UpdateType::TYPE_INTERVAL_CHANGE;
1023ceed64fSopenharmony_ci    }
1033ceed64fSopenharmony_ci
1043ceed64fSopenharmony_ci    ~FormTimer(void) {}
1053ceed64fSopenharmony_ci};
1063ceed64fSopenharmony_ci/**
1073ceed64fSopenharmony_ci * @class UpdateAtItem
1083ceed64fSopenharmony_ci * Update item at time.
1093ceed64fSopenharmony_ci */
1103ceed64fSopenharmony_ciclass UpdateAtItem {
1113ceed64fSopenharmony_cipublic:
1123ceed64fSopenharmony_ci    long updateAtTime = -1;
1133ceed64fSopenharmony_ci    FormTimer refreshTask;
1143ceed64fSopenharmony_ci};
1153ceed64fSopenharmony_ci/**
1163ceed64fSopenharmony_ci * @class DynamicRefreshItem
1173ceed64fSopenharmony_ci * Dynamic refresh item.
1183ceed64fSopenharmony_ci */
1193ceed64fSopenharmony_ciclass DynamicRefreshItem {
1203ceed64fSopenharmony_cipublic:
1213ceed64fSopenharmony_ci    int64_t formId = 0L;
1223ceed64fSopenharmony_ci    int64_t settedTime = INT64_MAX;
1233ceed64fSopenharmony_ci    int32_t userId = -1;
1243ceed64fSopenharmony_ci
1253ceed64fSopenharmony_ci    DynamicRefreshItem() {}
1263ceed64fSopenharmony_ci
1273ceed64fSopenharmony_ci    DynamicRefreshItem(int64_t id, int64_t time, int32_t uId = 0)
1283ceed64fSopenharmony_ci    {
1293ceed64fSopenharmony_ci        formId = id;
1303ceed64fSopenharmony_ci        settedTime = time;
1313ceed64fSopenharmony_ci        userId = uId;
1323ceed64fSopenharmony_ci    }
1333ceed64fSopenharmony_ci
1343ceed64fSopenharmony_ci    ~DynamicRefreshItem(void) {}
1353ceed64fSopenharmony_ci};
1363ceed64fSopenharmony_ci/**
1373ceed64fSopenharmony_ci * @struct LimitInfo
1383ceed64fSopenharmony_ci * Limit info about a form.
1393ceed64fSopenharmony_ci */
1403ceed64fSopenharmony_cistruct LimitInfo {
1413ceed64fSopenharmony_ci    int refreshCount = 0;
1423ceed64fSopenharmony_ci    bool isReported = false;
1433ceed64fSopenharmony_ci    bool remindFlag = false;
1443ceed64fSopenharmony_ci};
1453ceed64fSopenharmony_ci
1463ceed64fSopenharmony_ci/**
1473ceed64fSopenharmony_ci * @struct FormTimerCfg
1483ceed64fSopenharmony_ci * Form timer config info.
1493ceed64fSopenharmony_ci */
1503ceed64fSopenharmony_cistruct FormTimerCfg {
1513ceed64fSopenharmony_ci    bool enableUpdate = false;
1523ceed64fSopenharmony_ci    int64_t updateDuration = 0L;
1533ceed64fSopenharmony_ci    int updateAtHour = -1;
1543ceed64fSopenharmony_ci    int updateAtMin = -1;
1553ceed64fSopenharmony_ci};
1563ceed64fSopenharmony_ci}  // namespace AppExecFwk
1573ceed64fSopenharmony_ci}  // namespace OHOS
1583ceed64fSopenharmony_ci#endif // OHOS_FORM_FWK_FORM_TIMER_H
159