X-Git-Url: https://git.toastfreeware.priv.at/toast/confclerk.git/blobdiff_plain/9f367eb1ca61e58058b62e462f1759d87aa10ec3..001c8cfe6f0538c1a5e93e5eea7452f3cfa211f4:/src/gui/tabcontainer.cpp diff --git a/src/gui/tabcontainer.cpp b/src/gui/tabcontainer.cpp index 6035e84..993b9a2 100644 --- a/src/gui/tabcontainer.cpp +++ b/src/gui/tabcontainer.cpp @@ -4,6 +4,7 @@ #include #include +#include #include #include @@ -22,6 +23,7 @@ TabContainer::TabContainer(QWidget *aParent) setupUi(this); searchAgainButton->hide(); + searchHead->hide(); treeView->setHeaderHidden(true); treeView->setRootIsDecorated(false); @@ -37,6 +39,9 @@ TabContainer::TabContainer(QWidget *aParent) connect(treeView, SIGNAL(requestForMap(const QModelIndex &)), SLOT(displayMap(const QModelIndex &))); connect(treeView, SIGNAL(requestForWarning(const QModelIndex &)), SLOT(displayWarning(const QModelIndex &))); + connect(searchButton, SIGNAL(clicked()), SLOT(searchClicked())); + connect(searchAgainButton, SIGNAL(clicked()), SLOT(searchAgainClicked())); + if(!Conference::getAll().count()) // no conference(s) in the DB { dayNavigator->hide(); // hide DayNavigatorWidget @@ -52,12 +57,17 @@ TabContainer::TabContainer(QWidget *aParent) void TabContainer::setType(TabContainer::Type aType) { mType = aType; + if(aType == EContainerTypeNow) { QTimer *timer = new QTimer( this ); connect( timer, SIGNAL(timeout()), SLOT(timerUpdateTreeView()) ); timer->start( 30000); // 30 seconds timer } + if(aType == EContainerTypeSearch) + { + searchHead->show(); + } } void TabContainer::updateTreeView(const QDate &aDate) @@ -90,6 +100,25 @@ void TabContainer::updateTreeView(const QDate &aDate) treeView->setAllExpanded(true); } break; + case EContainerTypeSearch: + { + treeView->reset(); + int eventsCount = static_cast(treeView->model())->loadSearchResultEvents(aDate,AppSettings::confId()); + if( eventsCount || + dayNavigator->getCurrentDate() != Conference::getById(AppSettings::confId()).start() ){ + searchAgainButton->show(); + dayNavigator->show(); + treeView->show(); + searchHead->hide(); + } + else{ + treeView->hide(); + searchAgainButton->hide(); + dayNavigator->hide(); + searchHead->show(); + } + } + break; case EContainerTypeNone: default: { @@ -178,3 +207,42 @@ void TabContainer::timerUpdateTreeView() } } +void TabContainer::searchClicked() +{ + if(mType == EContainerTypeSearch) + { + QHash columns; + + if( searchTitle->isChecked() ) + columns.insertMulti("EVENT", "title"); + if( searchAbstract->isChecked() ) + columns.insertMulti("EVENT", "abstract"); + if( searchTag->isChecked() ) + columns.insertMulti("EVENT", "tag"); + if( searchSpeaker->isChecked() ) + columns["PERSON"] = "name"; + if( searchRoom->isChecked() ) + columns["ROOM"] = "name"; + + QString keyword = searchEdit->text().replace( QString("%"), QString("\\%") ); + qDebug() << "\nKeyword to search: " << keyword; + SqlEngine::searchEvent( AppSettings::confId(), columns, keyword ); + + QDate startDate = Conference::getById(AppSettings::confId()).start(); + QDate endDate = Conference::getById(AppSettings::confId()).end(); + dayNavigator->setDates(startDate, endDate); + updateTreeView( Conference::getById(AppSettings::confId()).start() ); + } +} + +void TabContainer::searchAgainClicked() +{ + if(mType == EContainerTypeSearch) + { + searchHead->show(); + searchAgainButton->hide(); + dayNavigator->hide(); + treeView->hide(); + } +} +