qdebug.h includes many Qt and STL headers, so if you include a Qt header you get all those transitive includes, which may affect build time. - Where appropriate use the printf-like syntax of qDebug() and co., these don't need the QDebug streaming operators - qfloat16 is used in an inline member function, so include it explicitly [ChangeLog][Potentially Source Incompatible Changes] Various Qt public headers don't include QDebug any more; if you need QDebug's streaming you'll have to include it in your code. Task-number: QTBUG-132439 Change-Id: I750587e17a3b38fa226cd3af8eaccc8da580f436 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> (cherry picked from commit 185cba6e95a006d2548f20599f84390e5a3ad653) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
61 lines
1.9 KiB
C++
61 lines
1.9 KiB
C++
// 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();
|
|
}
|