10fbfc30aSopenharmony_ci/*
20fbfc30aSopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd.
30fbfc30aSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
40fbfc30aSopenharmony_ci * you may not use this file except in compliance with the License.
50fbfc30aSopenharmony_ci * You may obtain a copy of the License at
60fbfc30aSopenharmony_ci *
70fbfc30aSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
80fbfc30aSopenharmony_ci *
90fbfc30aSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
100fbfc30aSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
110fbfc30aSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
120fbfc30aSopenharmony_ci * See the License for the specific language governing permissions and
130fbfc30aSopenharmony_ci * limitations under the License.
140fbfc30aSopenharmony_ci */
150fbfc30aSopenharmony_ci
160fbfc30aSopenharmony_ci#ifndef NATIVE_CALENDAR_MANAGER_H
170fbfc30aSopenharmony_ci#define NATIVE_CALENDAR_MANAGER_H
180fbfc30aSopenharmony_ci
190fbfc30aSopenharmony_ci#include <map>
200fbfc30aSopenharmony_ci#include "singleton.h"
210fbfc30aSopenharmony_ci#include "calendar_define.h"
220fbfc30aSopenharmony_ci#include "native_calendar.h"
230fbfc30aSopenharmony_ci#include "uri.h"
240fbfc30aSopenharmony_ciusing Uri = OHOS::Uri;
250fbfc30aSopenharmony_cinamespace OHOS::CalendarApi::Native {
260fbfc30aSopenharmony_ciclass CalendarManager {
270fbfc30aSopenharmony_cipublic:
280fbfc30aSopenharmony_ci    static CalendarManager &GetInstance();
290fbfc30aSopenharmony_ci    CalendarManager();
300fbfc30aSopenharmony_ci    ~CalendarManager() {};
310fbfc30aSopenharmony_ci    static bool IsDefaultAccount(const CalendarAccount& account);
320fbfc30aSopenharmony_ci    std::shared_ptr<Calendar> CreateCalendar(const CalendarAccount& account);
330fbfc30aSopenharmony_ci    std::shared_ptr<Calendar> GetCalendar(const std::optional<CalendarAccount>& account = std::nullopt);
340fbfc30aSopenharmony_ci    std::vector<std::shared_ptr<Calendar>> GetAllCalendars();
350fbfc30aSopenharmony_ci    bool DeleteCalendar(const Calendar& calendar);
360fbfc30aSopenharmony_ci    int DeleteAllCalendars();
370fbfc30aSopenharmony_ciprivate:
380fbfc30aSopenharmony_ci    std::unique_ptr<Uri> m_calendarUri;
390fbfc30aSopenharmony_ci};
400fbfc30aSopenharmony_ci}
410fbfc30aSopenharmony_ci
420fbfc30aSopenharmony_ci#endif