/* * Copyright (C) 2010 Ixonos Plc. * Copyright (C) 2011-2017 Philipp Spitzer, gregor herrmann, Stefan Stahl * * This file is part of ConfClerk. * * ConfClerk is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the Free * Software Foundation, either version 2 of the License, or (at your option) * any later version. * * ConfClerk is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * * You should have received a copy of the GNU General Public License along with * ConfClerk. If not, see . */ #include "searchtabcontainer.h" #include "searchhead.h" #include SearchTabContainer::SearchTabContainer(QWidget *aParent): TabContainer(aParent), sqlEngine(0) { header = new SearchHead(this); header->setObjectName(QString::fromUtf8("header")); QSizePolicy sizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Expanding); sizePolicy.setHorizontalStretch(0); sizePolicy.setVerticalStretch(0); //sizePolicy.setHeightForWidth(TabContainer::sizePolicy().hasHeightForWidth()); sizePolicy.setHeightForWidth(header->sizePolicy().hasHeightForWidth()); header->setSizePolicy(sizePolicy); header->setMinimumSize(QSize(10, 10)); verticalLayout->insertWidget(0,header); connect(header, SIGNAL(searchClicked()), SLOT(searchButtonClicked())); showSearchDialog(); } bool SearchTabContainer::searchDialogIsVisible() const { return header->isVisible(); } int SearchTabContainer::searchResultCount(const QDate& date) const { int confId = Conference::activeConference(); if (confId == -1) return 0; return Event::getSearchResultByDate(date, confId, "start, duration").count(); } void SearchTabContainer::showSearchDialog(bool show) { header->setVisible(show); treeView->setVisible(!show); if (show) header->searchEdit->setFocus(Qt::OtherFocusReason); } void SearchTabContainer::searchButtonClicked() { if (!sqlEngine) return; QMultiHash columns; SearchHead *searchHeader = static_cast(header); if( searchHeader->searchTitle->isChecked() ) columns.insert("EVENT", "title"); if( searchHeader->searchAbstract->isChecked() ) columns.insert("EVENT", "abstract"); if( searchHeader->searchTag->isChecked() ) columns.insert("EVENT", "tag"); if( searchHeader->searchSpeaker->isChecked() ) columns.insert("PERSON", "name"); if( searchHeader->searchRoom->isChecked() ) columns.insert("ROOM", "name"); QString keyword = searchHeader->searchEdit->text(); int confId = Conference::activeConference(); if (confId == -1) return; Conference conf = Conference::getById(confId); sqlEngine->searchEvent( confId, columns, keyword ); int nrofFounds = 0; for (QDate d = conf.start(); d <= conf.end(); d = d.addDays(1)) nrofFounds += Event::getSearchResultByDate(d, confId, "start, duration").count(); if (!nrofFounds) { treeView->hide(); header->show(); QMessageBox::information( this, QString("Keyword '%1' not found!").arg(keyword), QString("No events containing '%1' found!").arg(keyword), QMessageBox::Ok); } else { treeView->show(); header->hide(); emit searchResultChanged(); } } void SearchTabContainer::loadEvents( const QDate &aDate, const int aConferenceId ) { static_cast(treeView->model())->loadSearchResultEvents( aDate, aConferenceId ); }