From 9196cb0ea3f4fcc8b89f343b8305e1af575c1350 Mon Sep 17 00:00:00 2001 From: Philipp Spitzer Date: Mon, 17 Oct 2011 21:49:51 +0000 Subject: [PATCH] Sorted by duration additionally to start. --- src/gui/searchtabcontainer.cpp | 2 +- src/mvc/event.cpp | 14 ++++++-------- src/mvc/eventmodel.cpp | 6 +++--- 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/src/gui/searchtabcontainer.cpp b/src/gui/searchtabcontainer.cpp index 9ba4965..86c9fcc 100644 --- a/src/gui/searchtabcontainer.cpp +++ b/src/gui/searchtabcontainer.cpp @@ -76,7 +76,7 @@ void SearchTabContainer::searchButtonClicked() { for(QDate d=startDate; d<=endDate; d=d.addDays(1)) { try{ - int count = Event::getSearchResultByDate(d, confId, "start").count(); + int count = Event::getSearchResultByDate(d, confId, "start, duration").count(); if(count && (firstDateWithFounds==endDate)) firstDateWithFounds=d; if(count) diff --git a/src/mvc/event.cpp b/src/mvc/event.cpp index 86968e7..9c93928 100644 --- a/src/mvc/event.cpp +++ b/src/mvc/event.cpp @@ -43,8 +43,7 @@ Event::Event() : { } -Event Event::getById(int id, int conferenceId) -{ +Event Event::getById(int id, int conferenceId) { QSqlQuery query; query.prepare(selectQuery() + "WHERE id = :id AND xid_conference = :conf"); query.bindValue(":id", id); @@ -52,14 +51,13 @@ Event Event::getById(int id, int conferenceId) return loadOne(query); } -QList Event::getByDate(const QDate& date, int conferenceId, QString orderBy) -{ + +QList Event::getByDate(const QDate& date, int conferenceId, QString orderBy) { QSqlQuery query; query.prepare(selectQuery() + QString("WHERE xid_conference = :conf AND start >= :start AND start < :end ORDER BY %1").arg(orderBy)); query.bindValue(":conf", conferenceId); query.bindValue(":start", convertToDb(date, QVariant::DateTime)); query.bindValue(":end", convertToDb(date.addDays(1), QVariant::DateTime)); - return load(query); } @@ -68,7 +66,7 @@ QList Event::getByDateAndRoom(const QDate& date, int conferenceId) QSqlQuery query; QString aliasEvent("E"); QString aliasEventRoom("R"); - query.prepare(QString("SELECT %1 FROM %2 %3, %4 %5 WHERE %3.xid_conference = :conf AND %3.start >= :start AND %3.start < :end AND %3.id = R.xid_event ORDER BY %5.xid_room, %3.start").arg( + query.prepare(QString("SELECT %1 FROM %2 %3, %4 %5 WHERE %3.xid_conference = :conf AND %3.start >= :start AND %3.start < :end AND %3.id = R.xid_event ORDER BY %5.xid_room, %3.start, %3.duration").arg( columnsForSelect(aliasEvent), Event::sTableName, aliasEvent, "EVENT_ROOM", aliasEventRoom)); query.bindValue(":conf", conferenceId); query.bindValue(":start", convertToDb(date, QVariant::DateTime)); @@ -84,7 +82,7 @@ QList Event::conflictEvents(int aEventId, int conferenceId) { query.prepare(selectQuery() + "WHERE xid_conference = :conf AND ( \ ( start >= :s1 AND ( start + duration ) < :e1 ) \ OR ( ( start + duration ) > :s2 AND start < :e2 ) ) \ - AND favourite = 1 AND NOT id = :id ORDER BY start"); + AND favourite = 1 AND NOT id = :id ORDER BY start, duration"); query.bindValue(":conf", event.conferenceId()); query.bindValue(":s1", convertToDb(event.start(), QVariant::DateTime)); query.bindValue(":e1", convertToDb(event.start().toTime_t()+event.duration(), QVariant::DateTime)); @@ -99,7 +97,7 @@ QList Event::conflictEvents(int aEventId, int conferenceId) { QList Event::getFavByDate(const QDate& date, int conferenceId) { QSqlQuery query; - query.prepare(selectQuery() + QString("WHERE xid_conference = :conf AND start >= :start AND start < :end AND favourite = 1 ORDER BY start")); + query.prepare(selectQuery() + QString("WHERE xid_conference = :conf AND start >= :start AND start < :end AND favourite = 1 ORDER BY start, duration")); query.bindValue(":conf", conferenceId); query.bindValue(":start", convertToDb(date, QVariant::DateTime)); query.bindValue(":end", convertToDb(date.addDays(1), QVariant::DateTime)); diff --git a/src/mvc/eventmodel.cpp b/src/mvc/eventmodel.cpp index f86b047..658e96c 100644 --- a/src/mvc/eventmodel.cpp +++ b/src/mvc/eventmodel.cpp @@ -241,7 +241,7 @@ void EventModel::loadEvents(const QDate &aDate, int aConferenceId) // check for existence of the conference in the DB if(Conference::getAll().count()) { - mEvents = Event::getByDate(QDate(aDate.year(), aDate.month(), aDate.day()), aConferenceId, "start"); + mEvents = Event::getByDate(QDate(aDate.year(), aDate.month(), aDate.day()), aConferenceId, "start, duration"); } createTimeGroups(); } @@ -264,7 +264,7 @@ int EventModel::loadSearchResultEvents(const QDate &aDate, int aConferenceId) if(Conference::getAll().count()) { try{ - mEvents = Event::getSearchResultByDate(QDate(aDate.year(), aDate.month(), aDate.day()), aConferenceId, "start"); + mEvents = Event::getSearchResultByDate(QDate(aDate.year(), aDate.month(), aDate.day()), aConferenceId, "start, duration"); } catch( OrmException &e ){ qDebug() << "Event::getSearchResultByDate failed: " << e.text(); @@ -285,7 +285,7 @@ void EventModel::loadEventsByTrack(const QDate &aDate, int aConferenceId) clearModel(); if (Conference::getAll().count()) { - mEvents = Event::getByDate(QDate(aDate.year(), aDate.month(), aDate.day()), aConferenceId, "xid_track, start"); + mEvents = Event::getByDate(QDate(aDate.year(), aDate.month(), aDate.day()), aConferenceId, "xid_track, start, duration"); } createTrackGroups(); } -- 2.39.5