File: main.cpp

package info (click to toggle)
qt6-base 6.9.1%2Bdfsg-4
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 316,752 kB
  • sloc: cpp: 2,112,334; ansic: 381,848; xml: 142,587; python: 21,632; java: 8,505; asm: 4,009; javascript: 2,290; sh: 1,657; perl: 1,028; makefile: 131
file content (60 lines) | stat: -rw-r--r-- 1,985 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
// Copyright (C) 2024 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause

#include "calendarBackendInterface.h"

#include <QApplication>
#include <QCalendar>
#include <QCalendarWidget>
#include <QCommandLineParser>
#include <QDebug>
#include <QPluginLoader>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QCoreApplication::setApplicationName("JulianGregorianCalendar");
    QCommandLineParser parser;
    parser.setApplicationDescription("Calendar Backend Plugin Example");
    parser.addHelpOption();
    parser.addPositionalArgument("date; names",
                                 "Date of transition between "
                                 "Julian and Gregorian calendars "
                                 "as string in the format 'yyyy-MM-dd;'. Optionally, user can "
                                 "provide names for the calendar separated with ';'");
    parser.process(a);
    const QStringList args = parser.positionalArguments();
    if (args.isEmpty())
        parser.showHelp(1);
    if (args.at(0).isEmpty())
        parser.showHelp(1);
//![0]
    QPluginLoader loader;
    loader.setFileName("../plugin/calendarPlugin");
    loader.load();
    if (!loader.isLoaded())
        return 1;
    auto *myplugin = qobject_cast<RequestedCalendarInterface*>(loader.instance());
//![0]
//![1]
    const auto cid = myplugin->loadCalendar(args.at(0));
    if (!cid.isValid()) {
        qWarning() << "Invalid ID";
        parser.showHelp(1);
    }
    const QCalendar calendar(cid);
//![1]
//![2]
    QCalendarWidget widget;
    widget.setCalendar(calendar);
    widget.show();
    QCalendar::YearMonthDay when = { 1582, 10, 4 };
    QCalendar julian = QCalendar(QCalendar::System::Julian);
    auto got = QDate::fromString(args.at(0).left(10), u"yyyy-MM-dd", julian);
    if (got.isValid())
        when = julian.partsFromDate(got);
    widget.setCurrentPage(when.year, when.month);
//![2]
    return a.exec();
}