From ca2040885fec892d7f05337b10a560d2f75cf97d Mon Sep 17 00:00:00 2001 From: Serein <2075337935@qq.com> Date: Mon, 11 Dec 2023 20:07:57 +0800 Subject: [PATCH] fix bug --- qml/page/T_Calendar.qml | 2 +- qml/page/T_EventInfo.qml | 4 ++-- qml/page/T_EventoEdit.qml | 1 + src/controller/evento_service.cpp | 20 ++++---------------- src/controller/ui/evento_edit.cpp | 10 +++++----- src/controller/ui/evento_edit.h | 9 ++++----- src/domain/model/type_model.h | 6 ++++++ src/lang/En.cpp | 1 + src/lang/Zh.cpp | 1 + 9 files changed, 25 insertions(+), 29 deletions(-) diff --git a/qml/page/T_Calendar.qml b/qml/page/T_Calendar.qml index 3dfea322..0f4fe4ce 100644 --- a/qml/page/T_Calendar.qml +++ b/qml/page/T_Calendar.qml @@ -57,7 +57,7 @@ FluScrollablePage { function onResult(data) { if (data.enterPage) { pushPage() - showInfo("注意:活动地点和类型需要重新编辑", 5000) + showInfo("注意:活动地点需要重新编辑", 4000) } } } diff --git a/qml/page/T_EventInfo.qml b/qml/page/T_EventInfo.qml index 9f14980d..12b5d2e1 100644 --- a/qml/page/T_EventInfo.qml +++ b/qml/page/T_EventInfo.qml @@ -242,7 +242,7 @@ FluScrollablePage { Layout.topMargin: 15 implicitWidth: parent.width checked: EventoInfoController.isRegistrated - disabled: EventoHelper.state >= 2 || loading + disabled: EventoHelper.state != 2 || loading contentItem: Row{ spacing: 6 FluText { @@ -308,7 +308,7 @@ FluScrollablePage { implicitWidth: parent.width Layout.topMargin: 15 checked: EventoInfoController.isSubscribed - disabled: EventoHelper.state >= 2 || loading + disabled: EventoHelper.state > 2 || loading contentItem: Row{ spacing: 6 FluText { diff --git a/qml/page/T_EventoEdit.qml b/qml/page/T_EventoEdit.qml index a2cd609c..867d1b92 100644 --- a/qml/page/T_EventoEdit.qml +++ b/qml/page/T_EventoEdit.qml @@ -514,6 +514,7 @@ FluScrollablePage { } model: TypeModel textRole: "name" + currentIndex: EventoEditController.isEditMode ? EventoEditController.index : -1 } FluText { diff --git a/src/controller/evento_service.cpp b/src/controller/evento_service.cpp index c497c025..50212f17 100644 --- a/src/controller/evento_service.cpp +++ b/src/controller/evento_service.cpp @@ -94,7 +94,7 @@ void EventoService::load_RegisteredSchedule() { auto has_feedback = getRepo()->hasFeedbacked(evento.id).takeResult(); if (participation && (has_feedback || has_feedback.code() == EventoExceptionCode::FalseValue)) { - if (evento.gmtEventStart == evento.gmtEventEnd) + if (evento.gmtEventStart.date() == evento.gmtEventEnd.date()) singleDayEvents.emplace_back(evento, participation.take(), has_feedback); else multiDayEvents.emplace_back(evento, participation.take(), has_feedback); @@ -105,13 +105,7 @@ void EventoService::load_RegisteredSchedule() { stored[evento.id] = std::move(evento); } } - std::sort(singleDayEvents.begin(), singleDayEvents.end(), - [](const Schedule& e1, const Schedule& e2) { - auto date1 = QDate::fromString(e1.date, "MM.dd"); - auto date2 = QDate::fromString(e2.date, "MM.dd"); - return date1 > date2; - }); - std::vector model(multiDayEvents.begin(), multiDayEvents.end()); + std::vector model = std::move(multiDayEvents); model.insert(model.end(), singleDayEvents.begin(), singleDayEvents.end()); std::set dateSet; int width = 110; @@ -148,7 +142,7 @@ void EventoService::load_SubscribedSchedule() { auto has_feedback = getRepo()->hasFeedbacked(evento.id).takeResult(); if (participation && (has_feedback || has_feedback.code() == EventoExceptionCode::FalseValue)) { - if (evento.gmtEventStart == evento.gmtEventEnd) + if (evento.gmtEventStart.date() == evento.gmtEventEnd.date()) singleDayEvents.emplace_back(evento, participation.take(), has_feedback); else multiDayEvents.emplace_back(evento, participation.take(), has_feedback); @@ -159,13 +153,7 @@ void EventoService::load_SubscribedSchedule() { stored[evento.id] = std::move(evento); } } - std::sort(singleDayEvents.begin(), singleDayEvents.end(), - [](const Schedule& e1, const Schedule& e2) { - auto date1 = QDate::fromString(e1.date, "MM.dd"); - auto date2 = QDate::fromString(e2.date, "MM.dd"); - return date1 > date2; - }); - std::vector model(multiDayEvents.begin(), multiDayEvents.end()); + std::vector model = std::move(multiDayEvents); model.insert(model.end(), singleDayEvents.begin(), singleDayEvents.end()); std::set dateSet; int width = 110; diff --git a/src/controller/ui/evento_edit.cpp b/src/controller/ui/evento_edit.cpp index f81191d9..8cac3683 100644 --- a/src/controller/ui/evento_edit.cpp +++ b/src/controller/ui/evento_edit.cpp @@ -19,11 +19,10 @@ void EventoEditController::preload() { InformationService::getInstance().load_EditInfo(); } -void EventoEditController::createEvento(const QString& title, const QString& description, - const QString& eventStart, const QString& eventEnd, - const QString& registerStart, const QString& registerEnd, - int index, int locationId, - const QVariantList& departmentIds, const QString& tag) { +void EventoEditController::createEvento(QString title, QString description, QString eventStart, + QString eventEnd, QString registerStart, + QString registerEnd, int index, int locationId, + QVariantList departmentIds, QString tag) { auto typeId = TypeModel::getInstance()->getID(index); if (property("isEditMode").toBool()) { EventoService::getInstance().edit(EventoHelper::getInstance()->property("id").toInt(), @@ -42,6 +41,7 @@ void EventoEditController::update(const DTO_Evento& event) { } *(departmentIds.end() - 1) = u']'; + setProperty("index", TypeModel::getInstance()->getIndex(event.type.id)); setProperty("eventStart", event.gmtEventStart.toString("yyyy-MM-ddThh:mm:ss")); setProperty("eventEnd", event.gmtEventEnd.toString("yyyy-MM-ddThh:mm:ss")); setProperty("registerStart", event.gmtRegistrationStart.toString("yyyy-MM-ddThh:mm:ss")); diff --git a/src/controller/ui/evento_edit.h b/src/controller/ui/evento_edit.h index d828367e..dae4a654 100644 --- a/src/controller/ui/evento_edit.h +++ b/src/controller/ui/evento_edit.h @@ -20,11 +20,10 @@ class EventoEditController : public QObject { public: Q_INVOKABLE void loadEditInfo(); - Q_INVOKABLE void createEvento(const QString& title, const QString& description, - const QString& eventStart, const QString& eventEnd, - const QString& registerStart, const QString& registerEnd, - int index, int locationId, const QVariantList& departmentIds, - const QString& tag); + Q_INVOKABLE void createEvento(QString title, QString description, QString eventStart, + QString eventEnd, QString registerStart, QString registerEnd, + int index, int locationId, QVariantList departmentIds, + QString tag); private: bool m_isEditMode; // true: 编辑模式 false: 创建模式 diff --git a/src/domain/model/type_model.h b/src/domain/model/type_model.h index 157e03c1..579b1765 100644 --- a/src/domain/model/type_model.h +++ b/src/domain/model/type_model.h @@ -29,6 +29,12 @@ class TypeModel : public QAbstractListModel { return m_data[index].id; } + inline int getIndex(int id) { + return std::distance(m_data.begin(), std::find_if(m_data.begin(), m_data.end(), [=](const EventType& type) { + return type.id == id; + })); + } + private: TypeModel() = default; diff --git a/src/lang/En.cpp b/src/lang/En.cpp index 147ad3c8..dcfbc120 100644 --- a/src/lang/En.cpp +++ b/src/lang/En.cpp @@ -45,6 +45,7 @@ En::En(QObject* parent) : Lang{parent} { // event info lang_undertaking("Ongoing"); lang_not_started("Not Started"); + lang_registering("Registering"); lang_over("Over"); lang_cancelled("Cancelled"); lang_checked_in("Checked"); diff --git a/src/lang/Zh.cpp b/src/lang/Zh.cpp index 13c12a91..4745fe9a 100644 --- a/src/lang/Zh.cpp +++ b/src/lang/Zh.cpp @@ -43,6 +43,7 @@ Zh::Zh(QObject* parent) : Lang{parent} { // event info lang_undertaking("进行中"); + lang_registering("报名中"); lang_not_started("未开始"); lang_over("已结束"); lang_cancelled("已取消");