18779efd5Sopenharmony_ci/**
28779efd5Sopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd.
38779efd5Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
48779efd5Sopenharmony_ci * you may not use this file except in compliance with the License.
58779efd5Sopenharmony_ci * You may obtain a copy of the License at
68779efd5Sopenharmony_ci *
78779efd5Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
88779efd5Sopenharmony_ci *
98779efd5Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
108779efd5Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
118779efd5Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
128779efd5Sopenharmony_ci * See the License for the specific language governing permissions and
138779efd5Sopenharmony_ci * limitations under the License.
148779efd5Sopenharmony_ci */
158779efd5Sopenharmony_ci
168779efd5Sopenharmony_ciimport router from '@ohos.router';
178779efd5Sopenharmony_ciimport pasteboard from '@ohos.pasteboard';
188779efd5Sopenharmony_ciimport { HiLog } from '../../../../../common/src/main/ets/util/HiLog';
198779efd5Sopenharmony_ciimport { StringUtil } from '../../../../../common/src/main/ets/util/StringUtil';
208779efd5Sopenharmony_ciimport StringFormatUtil from '../util/StringFormatUtil';
218779efd5Sopenharmony_ciimport { missedCallManager } from '../feature/missedCall/MissedCallManager';
228779efd5Sopenharmony_ciimport CallRecordPresenter from './dialer/callRecord/CallRecordPresenter';
238779efd5Sopenharmony_ciimport FavoriteListPresenter from './favorite/FavoriteListPresenter';
248779efd5Sopenharmony_ci
258779efd5Sopenharmony_ciconst TAG = 'IndexPresenter  ';
268779efd5Sopenharmony_ci
278779efd5Sopenharmony_ciexport default class IndexPresenter {
288779efd5Sopenharmony_ci  private static instance: IndexPresenter;
298779efd5Sopenharmony_ci
308779efd5Sopenharmony_ci  public static getInstance(): IndexPresenter {
318779efd5Sopenharmony_ci    if (!IndexPresenter.instance) {
328779efd5Sopenharmony_ci      IndexPresenter.instance = new IndexPresenter();
338779efd5Sopenharmony_ci    }
348779efd5Sopenharmony_ci    return IndexPresenter.instance;
358779efd5Sopenharmony_ci  }
368779efd5Sopenharmony_ci
378779efd5Sopenharmony_ci  onPageShow() {
388779efd5Sopenharmony_ci    HiLog.i(TAG, 'onPageShow !!!');
398779efd5Sopenharmony_ci    this.cancelMissedCallNotification()
408779efd5Sopenharmony_ci    if (parseInt(StringFormatUtil.judgeSysTime()) !== AppStorage.Get('sysTime')) {
418779efd5Sopenharmony_ci      HiLog.i(TAG, 'DO requestItem cause systemTime changed');
428779efd5Sopenharmony_ci      CallRecordPresenter.getInstance().requestItem();
438779efd5Sopenharmony_ci      AppStorage.SetOrCreate('sysTime', parseInt(StringFormatUtil.judgeSysTime()));
448779efd5Sopenharmony_ci    }
458779efd5Sopenharmony_ci  }
468779efd5Sopenharmony_ci
478779efd5Sopenharmony_ci  getCurrentUrl(){
488779efd5Sopenharmony_ci    let url = router.getState().path+router.getState().name;
498779efd5Sopenharmony_ci    HiLog.i(TAG,'getCurrentUrl:'+url)
508779efd5Sopenharmony_ci    return url;
518779efd5Sopenharmony_ci  }
528779efd5Sopenharmony_ci
538779efd5Sopenharmony_ci  goToPage(url: string, pageIndex?: number, params?) {
548779efd5Sopenharmony_ci    HiLog.i(TAG, 'goToPage: ' + url);
558779efd5Sopenharmony_ci    if (pageIndex != undefined && router.getState().index >= pageIndex) {
568779efd5Sopenharmony_ci      if (url == globalThis.presenterManager?.mainUrl || this.getCurrentUrl() == url) {
578779efd5Sopenharmony_ci        router.back({
588779efd5Sopenharmony_ci          url: url,
598779efd5Sopenharmony_ci          params: params
608779efd5Sopenharmony_ci        })
618779efd5Sopenharmony_ci        return;
628779efd5Sopenharmony_ci      }
638779efd5Sopenharmony_ci      router.replaceUrl({
648779efd5Sopenharmony_ci        url: url,
658779efd5Sopenharmony_ci        params: params
668779efd5Sopenharmony_ci      });
678779efd5Sopenharmony_ci    } else {
688779efd5Sopenharmony_ci      router.pushUrl({
698779efd5Sopenharmony_ci        url: url,
708779efd5Sopenharmony_ci        params: params
718779efd5Sopenharmony_ci      });
728779efd5Sopenharmony_ci    }
738779efd5Sopenharmony_ci  }
748779efd5Sopenharmony_ci
758779efd5Sopenharmony_ci  cancelMissedCallNotification() {
768779efd5Sopenharmony_ci    HiLog.i(TAG, `cancelMissedCallNotification`);
778779efd5Sopenharmony_ci    missedCallManager.cancelNotification()
788779efd5Sopenharmony_ci  }
798779efd5Sopenharmony_ci
808779efd5Sopenharmony_ci  aboutToAppear() {
818779efd5Sopenharmony_ci    HiLog.i(TAG, 'aboutToAppear !!!');
828779efd5Sopenharmony_ci    AppStorage.SetOrCreate('sysTime', parseInt(StringFormatUtil.judgeSysTime()));
838779efd5Sopenharmony_ci  }
848779efd5Sopenharmony_ci
858779efd5Sopenharmony_ci  aboutToDisappear() {
868779efd5Sopenharmony_ci    HiLog.i(TAG, 'aboutToDisappear !!!');
878779efd5Sopenharmony_ci  }
888779efd5Sopenharmony_ci
898779efd5Sopenharmony_ci  getCopy(phoneNumber) {
908779efd5Sopenharmony_ci    HiLog.i(TAG, 'Succeeded PasteData is ' + JSON.stringify(phoneNumber));
918779efd5Sopenharmony_ci    let pasteData = pasteboard.createPlainTextData(phoneNumber);
928779efd5Sopenharmony_ci    let systemPasteboard = pasteboard.getSystemPasteboard();
938779efd5Sopenharmony_ci    systemPasteboard.setPasteData(pasteData, (err, data) => {
948779efd5Sopenharmony_ci      if (err) {
958779efd5Sopenharmony_ci        HiLog.e(TAG, 'Failed to set PasteData. Cause: ' + JSON.stringify(err.message));
968779efd5Sopenharmony_ci        return;
978779efd5Sopenharmony_ci      }
988779efd5Sopenharmony_ci      HiLog.i(TAG, 'Succeeded in setting PasteData.');
998779efd5Sopenharmony_ci    });
1008779efd5Sopenharmony_ci  }
1018779efd5Sopenharmony_ci
1028779efd5Sopenharmony_ci  getTabSrc(tabIndex: number, index: number): Resource {
1038779efd5Sopenharmony_ci    let imgSrc = $r('app.media.ic_call_filled_normal');
1048779efd5Sopenharmony_ci    if (index === 1) {
1058779efd5Sopenharmony_ci      imgSrc = $r('app.media.ic_contacts_normal_filled');
1068779efd5Sopenharmony_ci    }
1078779efd5Sopenharmony_ci    if (index === 2) {
1088779efd5Sopenharmony_ci      imgSrc = $r('app.media.ic_feature_normal_filled');
1098779efd5Sopenharmony_ci    }
1108779efd5Sopenharmony_ci    return imgSrc;
1118779efd5Sopenharmony_ci  }
1128779efd5Sopenharmony_ci
1138779efd5Sopenharmony_ci  getTabText(tabIndex: number, index: number): Resource {
1148779efd5Sopenharmony_ci    let text = $r('app.string.dialer');
1158779efd5Sopenharmony_ci    if (index === 1) {
1168779efd5Sopenharmony_ci      text = $r('app.string.contact');
1178779efd5Sopenharmony_ci    }
1188779efd5Sopenharmony_ci    if (index === 2) {
1198779efd5Sopenharmony_ci      text = $r('app.string.favorite');
1208779efd5Sopenharmony_ci    }
1218779efd5Sopenharmony_ci    return text;
1228779efd5Sopenharmony_ci  }
1238779efd5Sopenharmony_ci
1248779efd5Sopenharmony_ci  getTabTextColor(tabIndex: number, index: number): Resource {
1258779efd5Sopenharmony_ci    let color = $r('sys.color.ohos_id_color_bottom_tab_text_off');
1268779efd5Sopenharmony_ci    if (tabIndex === index) {
1278779efd5Sopenharmony_ci      color = $r('sys.color.ohos_id_color_connected');
1288779efd5Sopenharmony_ci    }
1298779efd5Sopenharmony_ci    return color;
1308779efd5Sopenharmony_ci  }
1318779efd5Sopenharmony_ci}