#include "searchtabcontainer.h"
#include "searchhead.h"
-
+#include <QMessageBox>
SearchTabContainer::SearchTabContainer(QWidget *aParent) : TabContainer( aParent )
{
columns["ROOM"] = "name";
QString keyword = searchHeader->searchEdit->text().replace( QString("%"), QString("\\%") );
- qDebug() << "\nKeyword to search: " << keyword;
+ //qDebug() << "\nKeyword to search: " << keyword;
int confId = Conference::activeConference();
SqlEngine::searchEvent( confId, columns, keyword );
QDate startDate = Conference::getById(confId).start();
QDate endDate = Conference::getById(confId).end();
- dayNavigator->setDates(startDate, endDate);
- updateTreeView( Conference::getById(confId).start() );
+
+ int nrofFounds = 0;
+ QDate firstDateWithFounds = endDate;
+ QDate lastDateWithFounds = startDate;
+ for(QDate d=startDate; d<=endDate; d=d.addDays(1))
+ {
+ try{
+ int count = Event::getSearchResultByDate(d, confId, "start").count();
+ if(count && (firstDateWithFounds==endDate))
+ firstDateWithFounds=d;
+ if(count)
+ lastDateWithFounds=d;
+ nrofFounds+=count;
+ }
+ catch( OrmException &e ){
+ qDebug() << "Event::getSearchResultByDate failed: " << e.text();
+ }
+ catch(...){
+ qDebug() << "Event::getSearchResultByDate failed";
+ }
+ }
+
+ if(!nrofFounds)
+ {
+ // TODO: display some message
+ treeView->hide();
+ searchAgainButton->hide();
+ dayNavigator->hide();
+ header->show();
+ QMessageBox::information(
+ this,
+ QString("Keyword '%1' not found!").arg(keyword),
+ QString("No events containing '%1' found!").arg(keyword),
+ QMessageBox::Ok);
+ }
+ else
+ {
+ searchAgainButton->show();
+ dayNavigator->show();
+ treeView->show();
+ header->hide();
+
+ updateTreeView( firstDateWithFounds );
+ dayNavigator->setDates(firstDateWithFounds, lastDateWithFounds);
+ }
}
void SearchTabContainer::searchAgainClicked()
{
- qDebug() << "SearchTab::searchAgainClicked()";
header->show();
searchAgainButton->hide();
dayNavigator->hide();
void SearchTabContainer::loadEvents( const QDate &aDate, const int aConferenceId )
{
- int eventsCount = static_cast<EventModel*>(treeView->model())->loadSearchResultEvents( aDate, aConferenceId );
- if( eventsCount ||
- //TODO: this is not good test
- dayNavigator->getCurrentDate() != Conference::getById( aConferenceId ).start()
- ){
- searchAgainButton->show();
- dayNavigator->show();
- treeView->show();
- header->hide();
- }
- else{
- treeView->hide();
- searchAgainButton->hide();
- dayNavigator->hide();
- header->show();
- }
+ static_cast<EventModel*>(treeView->model())->loadSearchResultEvents( aDate, aConferenceId );
}
+
// CREATE
execQuery( db, "CREATE TEMP TABLE SEARCH_EVENT ( xid_conference INTEGER NOT NULL, id INTEGER NOT NULL );");
// INSERT
- QString query = QString("INSERT INTO SEARCH_EVENT ( xid_conference, id) "
+ QString query = QString("INSERT INTO SEARCH_EVENT ( xid_conference, id ) "
"SELECT EVENT.xid_conference, EVENT.id FROM EVENT ");
if( aColumns.contains("ROOM") ){
- query += "INNER JOIN EVENT_ROOM ON (EVENT.xid_conference = EVENT_ROOM.xid_conference AND EVENT.id = EVENT_ROOM.xid_event ) ";
+ query += "INNER JOIN EVENT_ROOM ON ( EVENT.xid_conference = EVENT_ROOM.xid_conference AND EVENT.id = EVENT_ROOM.xid_event ) ";
query += "INNER JOIN ROOM ON ( EVENT_ROOM.xid_room = ROOM.id ) ";
}
if( aColumns.contains("PERSON") ){
- query += "INNER JOIN EVENT_PERSON ON (EVENT.xid_conference = EVENT_PERSON.xid_conference AND EVENT.id = EVENT_PERSON.xid_event ) ";
+ query += "INNER JOIN EVENT_PERSON ON ( EVENT.xid_conference = EVENT_PERSON.xid_conference AND EVENT.id = EVENT_PERSON.xid_event ) ";
query += "INNER JOIN PERSON ON ( EVENT_PERSON.xid_person = PERSON.id ) ";
}
query += QString("WHERE EVENT.xid_conference = %1 AND (").arg( aConferenceId );
bool SqlEngine::execQuery(QSqlDatabase &aDatabase, const QString &aQuery)
{
- qDebug() << "\nSQL: " << aQuery;
+ //qDebug() << "\nSQL: " << aQuery;
QSqlQuery sqlQuery(aDatabase);
if( !sqlQuery.exec(aQuery) ){
return false;
}
else{
- qDebug() << "SQL OK.\n";
+ //qDebug() << "SQL OK.\n";
return true;
}
}