/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
 * This file is part of the LibreOffice project.
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 */

#ifndef __com_sun_star_i18n_XCalendar4_idl__
#define __com_sun_star_i18n_XCalendar4_idl__

#include <com/sun/star/i18n/Calendar3.idl>


module com { module sun { module star { module i18n {



/** This interface provides access to locale specific calendar
    systems.

    <p> It is derived from ::com::sun::star::i18n::XCalendar3 and
    provides additional methods to set and get the local time. </p>

    @since LibreOffice 5.0
 */
interface XCalendar4 : com::sun::star::i18n::XCalendar3
{
    /** Set the local date/time as an offset to the start of the
        calendar at 1-Jan-1970 00:00. The integer part represents the
        number of days passed since start date. The fractional part
        represents fractions of a day, thus 0.5 means 12 hours.

        The actual timezone and daylight saving time offsets effective
        at the given date and time are considered and subtracted before
        setting the UTC time at the calendar.
     */
    void    setLocalDateTime( [in] double TimeInDays );

    /** Get the local date/time as an offset to the start of the
        calendar at 1-Jan-1970 00:00. The integer part represents the
        number of days passed since start date. The fractional part
        represents fractions of a day, thus 0.5 means 12 hours.

        The actual timezone and daylight saving time offsets effective
        at the given date and time are considered and added to the UTC
        time at the calendar.
     */
    double  getLocalDateTime();

    /** Load the default calendar for the given locale with a given time zone.

        @param  rLocale
                the locale for the calendar
        @param  TimeZone
                If empty, the system's time zone is used.
                Else specified as "Region/City" name like "Europe/Berlin",
                or a custom time zone ID such as "UTC" or "GMT-8:00".

        @since LibreOffice 6.3
     */
    void    loadDefaultCalendarTZ( [in] ::com::sun::star::lang::Locale rLocale, [in] string TimeZone );

    /** Load a specific calendar for the given locale with a given time zone.

        @param  uniqueID
                the uniqueID for the calendar.
                As of 2019-09-25, we can specify ROC, dangi, buddhist, gengou,
                gregorian, hanja, hanja_yoil, hijri, jewish.
                If the calendar for the specified uniqueID is not found,
                gregorian is used.
        @param  rLocale
                the locale for the calendar
        @param  TimeZone
                If empty, the system's time zone is used.
                Else specified as "Region/City" name like "Europe/Berlin",
                or a custom time zone ID such as "UTC" or "GMT-8:00".

        @since LibreOffice 6.3
     */
    void    loadCalendarTZ( [in] string uniqueID,
                            [in] ::com::sun::star::lang::Locale rLocale,
                            [in] string TimeZone );

};

}; }; }; };

#endif
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
