Compare commits
2 Commits
66e12d5019
...
c795effd3d
Author | SHA1 | Date |
---|---|---|
|
c795effd3d | |
|
e404727c45 |
|
@ -80,9 +80,35 @@ Page {
|
||||||
viewportX: ListView.view.contentX
|
viewportX: ListView.view.contentX
|
||||||
|
|
||||||
delegate: Rectangle {
|
delegate: Rectangle {
|
||||||
|
id: booking
|
||||||
|
|
||||||
|
required property string holder
|
||||||
|
required property string reservationStatus
|
||||||
|
|
||||||
|
function reservationStatusColor(status) {
|
||||||
|
switch (status) {
|
||||||
|
case "created":
|
||||||
|
return "#cbebff";
|
||||||
|
case "cancelled":
|
||||||
|
return "#ffbaa6";
|
||||||
|
case "confirmed":
|
||||||
|
return "#ffe673";
|
||||||
|
case "checked-in":
|
||||||
|
return "#9fefb9";
|
||||||
|
case "invoiced":
|
||||||
|
return "#e1dbd6";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
border.color: "black"
|
border.color: "black"
|
||||||
border.width: 1
|
border.width: 1
|
||||||
color: "blue"
|
color: reservationStatusColor(reservationStatus)
|
||||||
|
|
||||||
|
Label {
|
||||||
|
anchors.fill: parent
|
||||||
|
elide: Text.ElideRight
|
||||||
|
text: booking.holder
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
header: Pane {
|
header: Pane {
|
||||||
|
|
|
@ -167,16 +167,28 @@ void TimelineView::componentComplete()
|
||||||
populate();
|
populate();
|
||||||
}
|
}
|
||||||
|
|
||||||
TimelineView::Item *TimelineView::createItem(qint64 day, qint64 len)
|
TimelineView::Item *TimelineView::createItem(qint64 day, const TimelineModel::Item &modelItem)
|
||||||
{
|
{
|
||||||
QQuickItem *item = m_reusableItems.isEmpty() ? qobject_cast<QQuickItem *>(m_delegate->create(
|
QQuickItem *item;
|
||||||
m_delegate->creationContext()))
|
|
||||||
: m_reusableItems.takeLast();
|
if (m_reusableItems.isEmpty()) {
|
||||||
|
QVariantMap initialProperties{
|
||||||
|
{"holder", modelItem.holder},
|
||||||
|
{"reservationStatus", modelItem.status},
|
||||||
|
};
|
||||||
|
item = qobject_cast<QQuickItem *>(
|
||||||
|
m_delegate->createWithInitialProperties(initialProperties,
|
||||||
|
m_delegate->creationContext()));
|
||||||
if (!item) {
|
if (!item) {
|
||||||
qmlWarning(m_delegate) << TimelineView::tr("Delegate must be of Item type");
|
qmlWarning(m_delegate) << TimelineView::tr("Delegate must be of Item type");
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
auto *viewItem = new TimelineView::Item(day, len, *item, *this);
|
} else {
|
||||||
|
item = m_reusableItems.takeLast();
|
||||||
|
item->setProperty("holder", modelItem.holder);
|
||||||
|
item->setProperty("reservationStatus", modelItem.status);
|
||||||
|
}
|
||||||
|
auto *viewItem = new TimelineView::Item(day, modelItem.nights, *item, *this);
|
||||||
return viewItem;
|
return viewItem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -235,7 +247,7 @@ void TimelineView::populate()
|
||||||
if (!m_items.isEmpty() && m_items.first()->day <= day) {
|
if (!m_items.isEmpty() && m_items.first()->day <= day) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
TimelineView::Item *viewItem = createItem(day, item->nights);
|
TimelineView::Item *viewItem = createItem(day, *item);
|
||||||
if (!viewItem) {
|
if (!viewItem) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -263,7 +275,7 @@ void TimelineView::populate()
|
||||||
if (!m_items.isEmpty() && m_items.last()->day >= day) {
|
if (!m_items.isEmpty() && m_items.last()->day >= day) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
TimelineView::Item *viewItem = createItem(day, item->nights);
|
TimelineView::Item *viewItem = createItem(day, *item);
|
||||||
if (!viewItem) {
|
if (!viewItem) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -61,7 +61,7 @@ private:
|
||||||
|
|
||||||
struct Item;
|
struct Item;
|
||||||
|
|
||||||
Item *createItem(qint64 day, qint64 len);
|
Item *createItem(qint64 day, const TimelineModel::Item &modelItem);
|
||||||
void releaseItem(Item *item);
|
void releaseItem(Item *item);
|
||||||
void drainItems();
|
void drainItems();
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue