/*
* Copyright (C) 2010 Ixonos Plc.
- * Copyright (C) 2011 Philipp Spitzer, gregor herrmann
+ * Copyright (C) 2011-2012 Philipp Spitzer, gregor herrmann, Stefan Stahl
*
* This file is part of ConfClerk.
*
connect(dayNavigator, SIGNAL(dateChanged(QDate)), roomsTabContainer, SLOT(redisplayDate(QDate)));
connect(dayNavigator, SIGNAL(dateChanged(QDate)), searchTabContainer, SLOT(redisplayDate(QDate)));
+ // search result has changed
+ connect(searchTabContainer, SIGNAL(searchResultChanged()), SLOT(onSearchResultChanged()));
+
+
useConference(Conference::activeConference());
// optimization, see useConference() code
try {
void MainWindow::on_nowAction_triggered() {
-
+ int confId = Conference::activeConference();
+ if (confId== -1) return;
+ dayNavigator->setCurDate(QDate::currentDate());
+ dayTabContainer->expandTimeGroup(QTime::currentTime(), confId);
}
void MainWindow::on_searchAction_triggered() {
- searchTabContainer->showSearchDialog();
- tabWidget->setCurrentWidget(searchTab);
+ if (tabWidget->currentWidget() == searchTab)
+ searchTabContainer->showSearchDialog(!searchTabContainer->searchDialogIsVisible());
+ else {
+ tabWidget->setCurrentWidget(searchTab);
+ searchTabContainer->showSearchDialog();
+ }
+}
+
+
+void MainWindow::on_expandAllAction_triggered() {
+ if (tabWidget->currentWidget() == favouritesTab) favsTabContainer->treeView->expandAll();
+ if (tabWidget->currentWidget() == dayViewTab) dayTabContainer->treeView->expandAll();
+ if (tabWidget->currentWidget() == tracksTab) tracksTabContainer->treeView->expandAll();
+ if (tabWidget->currentWidget() == roomsTab) roomsTabContainer->treeView->expandAll();
+ if (tabWidget->currentWidget() == searchTab) searchTabContainer->treeView->expandAll();
+}
+
+
+void MainWindow::on_collapseAllAction_triggered() {
+ if (tabWidget->currentWidget() == favouritesTab) favsTabContainer->treeView->collapseAll();
+ if (tabWidget->currentWidget() == dayViewTab) dayTabContainer->treeView->collapseAll();
+ if (tabWidget->currentWidget() == tracksTab) tracksTabContainer->treeView->collapseAll();
+ if (tabWidget->currentWidget() == roomsTab) roomsTabContainer->treeView->collapseAll();
+ if (tabWidget->currentWidget() == searchTab) searchTabContainer->treeView->collapseAll();
}
}
+void MainWindow::onSearchResultChanged() {
+ // Are results found on the current date?
+ QDate date = dayNavigator->curDate();
+ int count = searchTabContainer->searchResultCount(date);
+ if (count > 0) {searchTabContainer->redisplayDate(date); return;}
+
+ // Are results found in the future?
+ for (date = date.addDays(1); date <= dayNavigator->endDate(); date = date.addDays(1)) {
+ int count = searchTabContainer->searchResultCount(date);
+ if (count > 0) {dayNavigator->setCurDate(date); return;}
+ }
+
+ // Are results found in the past?
+ for (date = dayNavigator->startDate(); date < dayNavigator->curDate(); date = date.addDays(1)) {
+ int count = searchTabContainer->searchResultCount(date);
+ if (count > 0) {dayNavigator->setCurDate(date); return;}
+ }
+ // No results were found
+ searchTabContainer->redisplayDate(dayNavigator->curDate());
+}
+
+
void MainWindow::useConference(int id)
{
if (id == -1) // in case no conference is active
}
}
-void MainWindow::networkQueryFinished(QNetworkReply *aReply)
-{
- if ( aReply->error() != QNetworkReply::NoError )
- {
+void MainWindow::networkQueryFinished(QNetworkReply *aReply) {
+ if (aReply->error() != QNetworkReply::NoError) {
error_message(QString("Error occured during download: ") + aReply->errorString());
- }
- else
- {
- importData(aReply->readAll(), aReply->url().toEncoded());
+ } else {
+ QUrl redirectUrl = aReply->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl();
+ if (!redirectUrl.isEmpty()) {
+ if (redirectUrl != aReply->request().url()) {
+ importFromNetwork(redirectUrl.toString());
+ return; // don't enable controls
+ } else {
+ error_message(QString("Error: Cyclic redirection from %1 to itself.").arg(redirectUrl.toString()));
+ }
+ } else {
+ importData(aReply->readAll(), aReply->url().toEncoded());
+ }
}
setEnabled(true);
}