tracksTabContainer->setType(TabContainer::EContainerTypeTracks);
nowTabContainer->setType(TabContainer::EContainerTypeNow);
roomsTabContainer->setType(TabContainer::EContainerTypeRooms);
+ searchTabContainer->setType(TabContainer::EContainerTypeSearch);
connect(importScheduleWidget, SIGNAL(scheduleImported(int)), SLOT(scheduleImported(int)));
- connect(searchDayNavigator, SIGNAL(dateChanged(const QDate &)), SLOT(updateSearchView(const QDate &)));
-
- // SEARCH EVENTS View
- searchTreeView->setHeaderHidden(true);
- searchTreeView->setRootIsDecorated(false);
- searchTreeView->setIndentation(0);
- searchTreeView->setAnimated(true);
- searchTreeView->setModel(new EventModel());
- searchTreeView->setItemDelegate(new Delegate(searchTreeView));
-
// event details have changed
connect(dayTabContainer, SIGNAL(eventHasChanged(int)), SLOT(eventHasChanged(int)));
connect(favsTabContainer, SIGNAL(eventHasChanged(int)), SLOT(eventHasChanged(int)));
connect(favsTabContainer, SIGNAL(eventHasChanged(int)), SLOT(eventHasChanged(int)));
connect(roomsTabContainer, SIGNAL(eventHasChanged(int)), SLOT(eventHasChanged(int)));
connect(nowTabContainer, SIGNAL(eventHasChanged(int)), SLOT(eventHasChanged(int)));
+ connect(searchTabContainer, SIGNAL(eventHasChanged(int)), SLOT(eventHasChanged(int)));
- connect(searchTreeView, SIGNAL(eventHasChanged(int)), SLOT(eventHasChanged(int)));
-
- // event clicked
- connect(searchTreeView, SIGNAL(clicked(const QModelIndex &)), SLOT(itemClicked(const QModelIndex &)));
-
- // event search button clicked
- connect(searchButton, SIGNAL(clicked()), SLOT(searchClicked()));
- connect(searchAgainButton, SIGNAL(clicked()), SLOT(searchAgainClicked()));
// event conference map button clicked
connect(showMapButton, SIGNAL(clicked()), SLOT(conferenceMapClicked()));
- //
+
connect(tabWidget, SIGNAL(infoIconClicked()), SLOT(aboutApp()));
if(Conference::getAll().count()) // no conference(s) in the DB
{
- QDate aStartDate = Conference::getById(AppSettings::confId()).start();
- QDate aEndDate = Conference::getById(AppSettings::confId()).end();
- searchDayNavigator->setDates(aStartDate, aEndDate);
+ QDate startDate = Conference::getById(AppSettings::confId()).start();
+ QDate endDate = Conference::getById(AppSettings::confId()).end();
//
- dayTabContainer->setDates(aStartDate, aEndDate);
- tracksTabContainer->setDates(aStartDate, aEndDate);
- roomsTabContainer->setDates(aStartDate, aEndDate);
- favsTabContainer->setDates(aStartDate, aEndDate);
+ dayTabContainer->setDates(startDate, endDate);
+ tracksTabContainer->setDates(startDate, endDate);
+ roomsTabContainer->setDates(startDate, endDate);
+ favsTabContainer->setDates(startDate, endDate);
+ searchTabContainer->setDates(startDate, endDate);
//
conferenceTitle->setText(Conference::getById(AppSettings::confId()).title());
conferenceSubtitle->setText(Conference::getById(AppSettings::confId()).subtitle());
Conference::getById(AppSettings::confId()).end().toString("dd-MM-yyyy"));
}
- searchTreeView->hide();
- searchVerticalWidget->hide();
- searchHead->show();
-
// open dialog for given Event ID
// this is used in case Alarm Dialog request application to start
if(aEventId)
dialog.exec();
}
-void MainWindow::updateSearchView(const QDate &aDate)
-{
- qDebug() << "MainWindow::updateSearchView(), aDate: " << aDate.toString() ;
- searchTreeView->reset();
- int eventsCount = static_cast<EventModel*>(searchTreeView->model())->loadSearchResultEvents(aDate,AppSettings::confId());
- if( eventsCount ||
- searchDayNavigator->getCurrentDate() != Conference::getById(AppSettings::confId()).start() ){
- searchVerticalWidget->show();
- //searchAgainButton->show();
- searchTreeView->show();
- searchHead->hide();
- }
- else{
- searchTreeView->hide();
- searchVerticalWidget->hide();
- searchHead->show();
- }
-}
-
-void MainWindow::searchClicked()
-{
- QHash<QString,QString> 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 aStartDate = Conference::getById(AppSettings::confId()).start();
- QDate aEndDate = Conference::getById(AppSettings::confId()).end();
- searchDayNavigator->setDates(aStartDate, aEndDate);
- updateSearchView( Conference::getById(AppSettings::confId()).start() );
-}
-
-void MainWindow::searchAgainClicked()
-{
- searchHead->show();
- //searchAgainButton->hide();
- searchVerticalWidget->hide();
- searchTreeView->hide();
-}
-
void MainWindow::conferenceMapClicked()
{
QString mapPath = QString(":/maps/campus.png");
tracksTabContainer->updateTreeViewModel(aEventId);
nowTabContainer->updateTreeViewModel(aEventId);
roomsTabContainer->updateTreeViewModel(aEventId);
-
- static_cast<EventModel*>(searchTreeView->model())->updateModel(aEventId);
+ searchTabContainer->updateTreeViewModel(aEventId);
}
private slots:
void scheduleImported(int aConfId);
void aboutApp();
- void updateSearchView(const QDate &aDate);
- void searchClicked();
- void searchAgainClicked();
void conferenceMapClicked();
void eventHasChanged(int aEventId);
};
-#endif // MAINWINDOW_H
+#endif /* MAINWINDOW_H */
</attribute>
<layout class="QHBoxLayout" name="horizontalLayout_1" >
<item>
- <widget class="QWidget" native="1" name="searchVerticalWidget" >
- <property name="enabled" >
- <bool>true</bool>
- </property>
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Expanding" hsizetype="Minimum" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <layout class="QVBoxLayout" name="searchDayNavigatorVerticalLayout" >
- <property name="margin" >
- <number>0</number>
- </property>
- <item>
- <widget class="QToolButton" name="searchAgainButton" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Preferred" hsizetype="Preferred" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="toolTip" >
- <string>Search again</string>
- </property>
- <property name="text" >
- <string>S</string>
- </property>
- <property name="icon" >
- <iconset resource="../icons.qrc" >
- <normaloff>:/icons/search.png</normaloff>:/icons/search.png</iconset>
- </property>
- <property name="iconSize" >
- <size>
- <width>24</width>
- <height>24</height>
- </size>
- </property>
- <property name="toolButtonStyle" >
- <enum>Qt::ToolButtonIconOnly</enum>
- </property>
- </widget>
- </item>
- <item>
- <widget class="DayNavigatorWidget" native="1" name="searchDayNavigator" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Expanding" hsizetype="Minimum" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="maximumSize" >
- <size>
- <width>16777215</width>
- <height>16777215</height>
- </size>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- </item>
- <item>
- <layout class="QVBoxLayout" name="verticalLayout_3" >
- <item>
- <widget class="QWidget" native="1" name="searchHead" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Preferred" hsizetype="Preferred" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="maximumSize" >
- <size>
- <width>16777215</width>
- <height>16777215</height>
- </size>
- </property>
- <layout class="QGridLayout" name="searchHeadLayout" >
- <property name="sizeConstraint" >
- <enum>QLayout::SetDefaultConstraint</enum>
- </property>
- <item row="2" column="0" >
- <layout class="QHBoxLayout" name="horizontalLayout" >
- <item>
- <widget class="QLineEdit" name="searchEdit" >
- <property name="enabled" >
- <bool>true</bool>
- </property>
- <property name="toolTip" >
- <string>type a keyword to search</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QPushButton" name="searchButton" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Minimum" hsizetype="Minimum" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text" >
- <string>Search</string>
- </property>
- <property name="icon" >
- <iconset resource="../icons.qrc" >
- <normaloff>:/icons/search.png</normaloff>:/icons/search.png</iconset>
- </property>
- <property name="checkable" >
- <bool>false</bool>
- </property>
- <property name="autoDefault" >
- <bool>true</bool>
- </property>
- <property name="default" >
- <bool>true</bool>
- </property>
- <property name="flat" >
- <bool>false</bool>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- <item row="0" column="0" >
- <layout class="QHBoxLayout" name="horizontalLayout_6" >
- <item>
- <widget class="QCheckBox" name="searchTitle" >
- <property name="text" >
- <string>Title</string>
- </property>
- <property name="checked" >
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QCheckBox" name="searchAbstract" >
- <property name="text" >
- <string>Abstract</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QCheckBox" name="searchSpeaker" >
- <property name="text" >
- <string>Speaker</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QCheckBox" name="searchTag" >
- <property name="text" >
- <string>Tag</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QCheckBox" name="searchRoom" >
- <property name="text" >
- <string>Room</string>
- </property>
- </widget>
- </item>
- <item>
- <spacer name="horizontalSpacer" >
- <property name="orientation" >
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeHint" stdset="0" >
- <size>
- <width>40</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </item>
- </layout>
- </item>
- </layout>
- </widget>
- </item>
- <item>
- <widget class="TreeView" name="searchTreeView" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="MinimumExpanding" hsizetype="Expanding" >
- <horstretch>0</horstretch>
- <verstretch>1</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize" >
- <size>
- <width>0</width>
- <height>0</height>
- </size>
- </property>
- <property name="maximumSize" >
- <size>
- <width>16777215</width>
- <height>16777215</height>
- </size>
- </property>
- </widget>
- </item>
- <item>
- <spacer name="verticalSpacer_2" >
- <property name="orientation" >
- <enum>Qt::Vertical</enum>
- </property>
- <property name="sizeType" >
- <enum>QSizePolicy::Expanding</enum>
- </property>
- <property name="sizeHint" stdset="0" >
- <size>
- <width>20</width>
- <height>1</height>
- </size>
- </property>
- </spacer>
- </item>
- </layout>
+ <widget class="TabContainer" native="1" name="searchTabContainer" />
</item>
</layout>
</widget>
<widget class="QStatusBar" name="statusbar" />
</widget>
<customwidgets>
- <customwidget>
- <class>DayNavigatorWidget</class>
- <extends>QWidget</extends>
- <header>daynavigatorwidget.h</header>
- <container>1</container>
- </customwidget>
- <customwidget>
- <class>TreeView</class>
- <extends>QTreeView</extends>
- <header>../mvc/treeview.h</header>
- </customwidget>
<customwidget>
<class>TabWidget</class>
<extends>QTabWidget</extends>
#include <QMessageBox>
#include <QTimer>
+#include <sqlengine.h>
#include <appsettings.h>
#include <conference.h>
setupUi(this);
searchAgainButton->hide();
+ searchHead->hide();
treeView->setHeaderHidden(true);
treeView->setRootIsDecorated(false);
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
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)
treeView->setAllExpanded(true);
}
break;
+ case EContainerTypeSearch:
+ {
+ treeView->reset();
+ int eventsCount = static_cast<EventModel*>(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:
{
}
}
+void TabContainer::searchClicked()
+{
+ if(mType == EContainerTypeSearch)
+ {
+ QHash<QString,QString> 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();
+ }
+}
+
void itemClicked(const QModelIndex &aIndex);
void displayMap(const QModelIndex &aIndex);
void displayWarning(const QModelIndex &aIndex);
+ void searchClicked();
+ void searchAgainClicked();
private:
TabContainer::Type mType;
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout" >
- <item row="0" column="0" >
- <widget class="QToolButton" name="searchAgainButton" >
- <property name="enabled" >
- <bool>true</bool>
- </property>
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Preferred" hsizetype="Preferred" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="toolTip" >
- <string>Search again</string>
- </property>
- <property name="text" >
- <string>S</string>
- </property>
- <property name="icon" >
- <iconset resource="../icons.qrc" >
- <normaloff>:/icons/search.png</normaloff>:/icons/search.png</iconset>
- </property>
- <property name="iconSize" >
- <size>
- <width>24</width>
- <height>24</height>
- </size>
- </property>
- <property name="toolButtonStyle" >
- <enum>Qt::ToolButtonIconOnly</enum>
- </property>
- </widget>
+ <item row="0" column="2" >
+ <layout class="QVBoxLayout" name="verticalLayout" >
+ <item>
+ <widget class="QWidget" native="1" name="searchHead" >
+ <property name="sizePolicy" >
+ <sizepolicy vsizetype="Preferred" hsizetype="Preferred" >
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="maximumSize" >
+ <size>
+ <width>16777215</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <layout class="QGridLayout" name="searchHeadLayout_2" >
+ <property name="sizeConstraint" >
+ <enum>QLayout::SetDefaultConstraint</enum>
+ </property>
+ <item row="2" column="0" >
+ <layout class="QHBoxLayout" name="horizontalLayout_2" >
+ <item>
+ <widget class="QLineEdit" name="searchEdit" >
+ <property name="enabled" >
+ <bool>true</bool>
+ </property>
+ <property name="toolTip" >
+ <string>type a keyword to search</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="searchButton" >
+ <property name="sizePolicy" >
+ <sizepolicy vsizetype="Minimum" hsizetype="Minimum" >
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text" >
+ <string>Search</string>
+ </property>
+ <property name="icon" >
+ <iconset resource="../icons.qrc" >
+ <normaloff>:/icons/search.png</normaloff>:/icons/search.png</iconset>
+ </property>
+ <property name="checkable" >
+ <bool>false</bool>
+ </property>
+ <property name="autoDefault" >
+ <bool>true</bool>
+ </property>
+ <property name="default" >
+ <bool>true</bool>
+ </property>
+ <property name="flat" >
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item row="0" column="0" >
+ <layout class="QHBoxLayout" name="horizontalLayout_7" >
+ <item>
+ <widget class="QCheckBox" name="searchTitle" >
+ <property name="text" >
+ <string>Title</string>
+ </property>
+ <property name="checked" >
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="searchAbstract" >
+ <property name="text" >
+ <string>Abstract</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="searchSpeaker" >
+ <property name="text" >
+ <string>Speaker</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="searchTag" >
+ <property name="text" >
+ <string>Tag</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="searchRoom" >
+ <property name="text" >
+ <string>Room</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer" >
+ <property name="orientation" >
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0" >
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ <item row="3" column="0" >
+ <spacer name="verticalSpacer" >
+ <property name="orientation" >
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0" >
+ <size>
+ <width>20</width>
+ <height>40</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="TreeView" name="treeView" />
+ </item>
+ </layout>
</item>
- <item rowspan="2" row="0" column="1" >
- <widget class="TreeView" name="treeView" />
- </item>
- <item row="1" column="0" >
- <widget class="DayNavigatorWidget" native="1" name="dayNavigator" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Expanding" hsizetype="Minimum" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- </widget>
+ <item row="0" column="1" >
+ <layout class="QVBoxLayout" name="verticalLayout_2" >
+ <item>
+ <widget class="QToolButton" name="searchAgainButton" >
+ <property name="enabled" >
+ <bool>true</bool>
+ </property>
+ <property name="sizePolicy" >
+ <sizepolicy vsizetype="Preferred" hsizetype="Preferred" >
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="toolTip" >
+ <string>Search again</string>
+ </property>
+ <property name="text" >
+ <string>S</string>
+ </property>
+ <property name="icon" >
+ <iconset resource="../icons.qrc" >
+ <normaloff>:/icons/search.png</normaloff>:/icons/search.png</iconset>
+ </property>
+ <property name="iconSize" >
+ <size>
+ <width>24</width>
+ <height>24</height>
+ </size>
+ </property>
+ <property name="toolButtonStyle" >
+ <enum>Qt::ToolButtonIconOnly</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="DayNavigatorWidget" native="1" name="dayNavigator" >
+ <property name="sizePolicy" >
+ <sizepolicy vsizetype="Expanding" hsizetype="Minimum" >
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ </item>
+ </layout>
</item>
</layout>
</widget>