diff options
author | Mitch Curtis <mitch.curtis@digia.com> | 2014-01-17 16:24:56 +0100 |
---|---|---|
committer | Mitch Curtis <mitch.curtis@digia.com> | 2014-02-03 15:49:46 +0100 |
commit | 624f7a45ec1b0927f7394c3d67244494ef4353ba (patch) | |
tree | 57d7e5fb0b8ee3061e8ce8af9b1da8eda4344163 | |
parent | 7980cd04fc68a1b6b0cc57181ed9d4f7fd63d3c8 (diff) | |
download | qtquickcontrols-624f7a45ec1b0927f7394c3d67244494ef4353ba.tar.gz |
Add calendar example.
An example of Calendar used with an SQL model to view events.
Change-Id: I54887dcedf4ea6bbb12c7c35fe968ff13821b696
Reviewed-by: Mitch Curtis <mitch.curtis@digia.com>
-rw-r--r-- | examples/quick/controls/calendar/calendar.pro | 9 | ||||
-rw-r--r-- | examples/quick/controls/calendar/qml/main.qml | 191 | ||||
-rw-r--r-- | examples/quick/controls/calendar/resources.qrc | 5 | ||||
-rw-r--r-- | examples/quick/controls/calendar/src/event.cpp | 99 | ||||
-rw-r--r-- | examples/quick/controls/calendar/src/event.h | 79 | ||||
-rw-r--r-- | examples/quick/controls/calendar/src/main.cpp | 52 | ||||
-rw-r--r-- | examples/quick/controls/calendar/src/sqleventmodel.cpp | 105 | ||||
-rw-r--r-- | examples/quick/controls/calendar/src/sqleventmodel.h | 63 | ||||
-rw-r--r-- | examples/quick/controls/calendar/src/src.pri | 9 | ||||
-rw-r--r-- | examples/quick/controls/controls.pro | 1 | ||||
-rw-r--r-- | src/controls/doc/src/qtquickcontrols-examples.qdoc | 10 |
11 files changed, 623 insertions, 0 deletions
diff --git a/examples/quick/controls/calendar/calendar.pro b/examples/quick/controls/calendar/calendar.pro new file mode 100644 index 00000000..cfba66a6 --- /dev/null +++ b/examples/quick/controls/calendar/calendar.pro @@ -0,0 +1,9 @@ +QT += qml quick sql +TARGET = calendar + +include(src/src.pri) +include(../shared/shared.pri) + +OTHER_FILES += qml/main.qml + +RESOURCES += resources.qrc diff --git a/examples/quick/controls/calendar/qml/main.qml b/examples/quick/controls/calendar/qml/main.qml new file mode 100644 index 00000000..0c0d5a1e --- /dev/null +++ b/examples/quick/controls/calendar/qml/main.qml @@ -0,0 +1,191 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names +** of its contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.1 +import QtQuick.Controls.Styles 1.1 +import QtGraphicalEffects 1.0 +import org.qtproject.example 1.0 + +ApplicationWindow { + visible: true + width: 640 + height: 480 + minimumWidth: 400 + minimumHeight: 300 + + title: "Calendar Example" + + SqlEventModel { + id: eventModel + } + + Row { + id: row + anchors.fill: parent + anchors.margins: 20 + spacing: 10 + + Rectangle { + width: row.width * 0.4 - row.spacing / 2 + height: calendar.height + + Column { + id: eventsPane + anchors.fill: parent + anchors.margins: spacing / 2 + spacing: 10 + + Row { + id: eventDateRow + width: parent.width + height: eventDayLabel.height + spacing: 10 + + Label { + id: eventDayLabel + text: calendar.selectedDate.getDate() + font.pointSize: 35 + } + + Column { + height: eventDayLabel.height + + Label { + readonly property var options: { weekday: "long" } + text: calendar.locale.standaloneDayName(calendar.selectedDate.getDay(), Locale.LongFormat) + font.pointSize: 18 + } + Label { + text: calendar.selectedDateText + font.pointSize: 12 + } + } + } + + ListView { + id: eventsListView + width: parent.width + height: parent.height - eventDateRow.height + spacing: 4 + clip: true + + model: eventModel.eventsForDate(calendar.selectedDate) + delegate: Rectangle { + width: eventsListView.width + height: eventItemColumn.height + + Column { + id: eventItemColumn + anchors.left: parent.left + anchors.leftMargin: 4 + anchors.right: parent.right + height: timeLabel.height + nameLabel.height + + Label { + id: nameLabel + width: parent.width + wrapMode: Text.Wrap + text: modelData.name + font.pointSize: 12 + } + Label { + id: timeLabel + width: parent.width + wrapMode: Text.Wrap + text: modelData.startDate.toLocaleTimeString(calendar.locale, Locale.ShortFormat) + color: "#aaa" + } + } + } + } + } + } + + Calendar { + id: calendar + width: parent.width * 0.6 - row.spacing / 2 + height: parent.height + selectedDate: new Date(2014, 0, 1) + + style: CalendarStyle { + dateDelegate: Rectangle { + color: styleData.date !== undefined && styleData.selected ? selectedDateColor : "white" + readonly property color sameMonthDateTextColor: "black" + readonly property color selectedDateColor: "#aaa" + readonly property color selectedDateTextColor: "white" + readonly property color differentMonthDateTextColor: Qt.darker("darkgrey", 1.4); + readonly property color invalidDatecolor: "#dddddd" + + Label { + id: dayDelegateText + text: styleData.date.getDate() + font.pixelSize: 14 + anchors.centerIn: parent + color: { + var color = invalidDatecolor; + if (control.isValidDate(styleData.date)) { + // Date is within the valid range. + color = styleData.date.getMonth() === control.selectedDate.getMonth() + ? sameMonthDateTextColor : differentMonthDateTextColor; + + if (styleData.selected) { + color = selectedDateTextColor + } + } + color; + } + } + + Rectangle { + color: styleData.selected ? "white" : "red" + width: 4 + height: width + radius: width / 2 + anchors.horizontalCenter: parent.horizontalCenter + anchors.top: dayDelegateText.bottom + anchors.topMargin: 2 + visible: eventModel.eventsForDate(styleData.date).length > 0 + } + } + } + } + } +} diff --git a/examples/quick/controls/calendar/resources.qrc b/examples/quick/controls/calendar/resources.qrc new file mode 100644 index 00000000..69145a82 --- /dev/null +++ b/examples/quick/controls/calendar/resources.qrc @@ -0,0 +1,5 @@ +<RCC> + <qresource prefix="/"> + <file>qml/main.qml</file> + </qresource> +</RCC> diff --git a/examples/quick/controls/calendar/src/event.cpp b/examples/quick/controls/calendar/src/event.cpp new file mode 100644 index 00000000..838c1773 --- /dev/null +++ b/examples/quick/controls/calendar/src/event.cpp @@ -0,0 +1,99 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names +** of its contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "event.h" + +Event::Event(QObject *parent) : + QObject(parent) +{ +} + +Event::Event(const Event &rhs) : + QObject(rhs.parent()) +{ + *this = rhs; +} + +Event &Event::operator=(const Event &rhs) +{ + mName = rhs.mName; + mStartDate = rhs.mStartDate; + mEndDate = rhs.mEndDate; + return *this; +} + +QString Event::name() const +{ + return mName; +} + +void Event::setName(const QString &name) +{ + if (name != mName) { + mName = name; + emit nameChanged(mName); + } +} + +QDateTime Event::startDate() const +{ + return mStartDate; +} + +void Event::setStartDate(const QDateTime &startDate) +{ + if (startDate != mStartDate) { + mStartDate = startDate; + emit startDateChanged(mStartDate); + } +} + +QDateTime Event::endDate() const +{ + return mEndDate; +} + +void Event::setEndDate(const QDateTime &endDate) +{ + if (endDate != mEndDate) { + mEndDate = endDate; + emit endDateChanged(mEndDate); + } +} diff --git a/examples/quick/controls/calendar/src/event.h b/examples/quick/controls/calendar/src/event.h new file mode 100644 index 00000000..f53c750b --- /dev/null +++ b/examples/quick/controls/calendar/src/event.h @@ -0,0 +1,79 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names +** of its contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef EVENT_H +#define EVENT_H + +#include <QDateTime> +#include <QObject> +#include <QString> + +class Event : public QObject +{ + Q_OBJECT + + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + Q_PROPERTY(QDateTime startDate READ startDate WRITE setStartDate NOTIFY startDateChanged) + Q_PROPERTY(QDateTime endDate READ endDate WRITE setEndDate NOTIFY endDateChanged) +public: + explicit Event(QObject *parent = 0); + Event(const Event &rhs); + Event &operator=(const Event &rhs); + + QString name() const; + void setName(const QString &name); + + QDateTime startDate() const; + void setStartDate(const QDateTime &startDate); + + QDateTime endDate() const; + void setEndDate(const QDateTime &endDate); +signals: + void nameChanged(const QString &name); + void startDateChanged(const QDateTime &startDate); + void endDateChanged(const QDateTime &endDate); +public slots: +private: + QString mName; + QDateTime mStartDate; + QDateTime mEndDate; +}; + +#endif diff --git a/examples/quick/controls/calendar/src/main.cpp b/examples/quick/controls/calendar/src/main.cpp new file mode 100644 index 00000000..7067c0f3 --- /dev/null +++ b/examples/quick/controls/calendar/src/main.cpp @@ -0,0 +1,52 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names +** of its contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QtQml> + +#include "qtquickcontrolsapplication.h" +#include "sqleventmodel.h" + +int main(int argc, char *argv[]) +{ + QtQuickControlsApplication app(argc, argv); + qmlRegisterType<SqlEventModel>("org.qtproject.example", 1, 0, "SqlEventModel"); + QQmlApplicationEngine engine(QUrl("qrc:/qml/main.qml")); + return app.exec(); +} diff --git a/examples/quick/controls/calendar/src/sqleventmodel.cpp b/examples/quick/controls/calendar/src/sqleventmodel.cpp new file mode 100644 index 00000000..b24c1bcc --- /dev/null +++ b/examples/quick/controls/calendar/src/sqleventmodel.cpp @@ -0,0 +1,105 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names +** of its contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "sqleventmodel.h" + +#include <QDebug> +#include <QFileInfo> +#include <QSqlError> +#include <QSqlQuery> + +SqlEventModel::SqlEventModel() : + QSqlQueryModel() +{ + createConnection(); +} + +QList<QObject*> SqlEventModel::eventsForDate(const QDate &date) +{ + const QString queryStr = QString::fromLatin1("SELECT * FROM Event WHERE '%1' >= startDate AND '%1' <= endDate").arg(date.toString("yyyy-MM-dd")); + QSqlQuery query(queryStr); + if (!query.exec()) { + qFatal("Query failed"); + } + + QList<QObject*> events; + while (query.next()) { + Event *event = new Event(this); + event->setName(query.value("name").toString()); + + QDateTime startDate; + startDate.setDate(query.value("startDate").toDate()); + startDate.setTime(QTime(0, 0).addSecs(query.value("startTime").toInt())); + event->setStartDate(startDate); + + QDateTime endDate; + endDate.setDate(query.value("endDate").toDate()); + endDate.setTime(QTime(0, 0).addSecs(query.value("endTime").toInt())); + event->setEndDate(endDate); + + events.append(event); + } + + return events; +} + +/* + Defines a helper function to open a connection to an + in-memory SQLITE database and to create a test table. +*/ +void SqlEventModel::createConnection() +{ + QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); + db.setDatabaseName(":memory:"); + if (!db.open()) { + qFatal("Cannot open database"); + return; + } + + QSqlQuery query; + // We store the time as seconds because it's easier to query. + query.exec("create table Event (name TEXT, startDate DATE, startTime INT, endDate DATE, endTime INT)"); + query.exec("insert into Event values('Grocery shopping', '2014-01-01', 36000, '2014-01-01', 39600)"); + query.exec("insert into Event values('Ice skating', '2014-01-01', 57600, '2014-01-01', 61200)"); + query.exec("insert into Event values('Doctor''s appointment', '2014-01-15', 57600, '2014-01-15', 63000)"); + query.exec("insert into Event values('Conference', '2014-01-24', 32400, '2014-01-28', 61200)"); + + return; +} diff --git a/examples/quick/controls/calendar/src/sqleventmodel.h b/examples/quick/controls/calendar/src/sqleventmodel.h new file mode 100644 index 00000000..a2b72c07 --- /dev/null +++ b/examples/quick/controls/calendar/src/sqleventmodel.h @@ -0,0 +1,63 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names +** of its contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef SQLEVENTMODEL_H +#define SQLEVENTMODEL_H + +#include <QList> +#include <QObject> +#include <QSqlTableModel> + +#include "event.h" + +class SqlEventModel : public QSqlQueryModel +{ + Q_OBJECT + +public: + SqlEventModel(); + + Q_INVOKABLE QList<QObject*> eventsForDate(const QDate &date); + +private: + static void createConnection(); +}; + +#endif diff --git a/examples/quick/controls/calendar/src/src.pri b/examples/quick/controls/calendar/src/src.pri new file mode 100644 index 00000000..50b2ea62 --- /dev/null +++ b/examples/quick/controls/calendar/src/src.pri @@ -0,0 +1,9 @@ +SOURCES += \ + $$PWD/event.cpp \ + $$PWD/main.cpp \ + $$PWD/sqleventmodel.cpp + + +HEADERS += \ + $$PWD/event.h \ + $$PWD/sqleventmodel.h diff --git a/examples/quick/controls/controls.pro b/examples/quick/controls/controls.pro index ad246f1d..84e4b6ba 100644 --- a/examples/quick/controls/controls.pro +++ b/examples/quick/controls/controls.pro @@ -1,6 +1,7 @@ TEMPLATE = subdirs SUBDIRS += \ + calendar \ gallery \ splitview \ tableview \ diff --git a/src/controls/doc/src/qtquickcontrols-examples.qdoc b/src/controls/doc/src/qtquickcontrols-examples.qdoc index 4bb99d8e..1531e3ff 100644 --- a/src/controls/doc/src/qtquickcontrols-examples.qdoc +++ b/src/controls/doc/src/qtquickcontrols-examples.qdoc @@ -105,3 +105,13 @@ for touch input using \l{Qt Quick Controls}. */ +/*! + \example controls/calendar + \title Qt Quick Controls - Calendar Example + \ingroup qtquickcontrols_examples + \brief Demonstrates the use of Calendar to display events + \image qtquickcontrols-example-calendar.png + + This example shows how Calendar can be used to view events retrieved from + an SQL database. +*/ |