X-Git-Url: https://git.toastfreeware.priv.at/toast/confclerk.git/blobdiff_plain/6df32f20316aab78c979f50ff17798cc6dd7e9e0..080dc7d603d45ba0662aa731418993ddd45b5fe8:/src/gui/conferenceeditor.cpp diff --git a/src/gui/conferenceeditor.cpp b/src/gui/conferenceeditor.cpp index 2c038e6..d93deee 100644 --- a/src/gui/conferenceeditor.cpp +++ b/src/gui/conferenceeditor.cpp @@ -1,5 +1,6 @@ /* * Copyright (C) 2010 Ixonos Plc. + * Copyright (C) 2011-2024 Philipp Spitzer, gregor herrmann, Stefan Stahl * * This file is part of ConfClerk. * @@ -20,7 +21,6 @@ #include "conferencemodel.h" #include "urlinputdialog.h" -#include "mapwindow.h" #include "errormessage.h" #include @@ -49,8 +49,9 @@ ConferenceEditor::ConferenceEditor(ConferenceModel* model, QWidget* parent) connect(removeBtn, SIGNAL(clicked()), SLOT(removeClicked())); connect(changeUrl, SIGNAL(clicked()), SLOT(changeUrlClicked())); connect(refreshBtn, SIGNAL(clicked()), SLOT(refreshClicked())); - connect(showMapButton, SIGNAL(clicked()), SLOT(conferenceMapClicked())); connect(buttonBox, SIGNAL(rejected()), SLOT(close())); + connect(conferenceDtsHours, SIGNAL(valueChanged(int)), SLOT(dtsChanged())); + connect(conferenceDtsMinutes, SIGNAL(valueChanged(int)), SLOT(dtsChanged())); // it's OK to emit selection signals here // because they are not yet connected to anybody @@ -90,19 +91,22 @@ void ConferenceEditor::itemSelected(const QModelIndex& current, const QModelInde conferenceTitle->setText(conf.title()); conferenceSubtitle->setText(conf.subtitle()); - conferenceWhere->setText(conf.city() + ", " + conf.venue()); + QString where = conf.city(); + if (!conf.city().isEmpty() && !conf.venue().isEmpty()) where += ", "; + where += conf.venue(); + conferenceWhere->setText(where); conferenceWhen->setText( - conf.start().toString("dd-MM-yyyy") - + ", " + - conf.end().toString("dd-MM-yyyy")); - - QString map = conf.map(); - if (map.isEmpty()) { - showMapButton->hide(); + conf.start().toString("yyyy-MM-dd") + + " - " + + conf.end().toString("yyyy-MM-dd")); + if (conf.hasUtcOffset()) { + conferenceUtcOffset->setText(QString::number(conf.utcOffset()) + " min"); } else { - showMapButton->show(); + conferenceUtcOffset->setText("N/A"); } - + int dts = conf.displayTimeShift(); + conferenceDtsHours->setValue(dts / 60); + conferenceDtsMinutes->setValue(abs(dts) % 60); conferenceInfo->setCurrentIndex(0); removeBtn->show(); } @@ -112,8 +116,8 @@ void ConferenceEditor::addClicked() { UrlInputDialog url_input(this); switch (url_input.exec()) { - case UrlInputDialog::HaveUrl: emit haveConferenceUrl(url_input.url()); break; - case UrlInputDialog::HaveFile: emit haveConferenceFile(url_input.url()); break; + case UrlInputDialog::HaveUrl: emit haveConferenceUrl(url_input.url(), 0); break; + case UrlInputDialog::HaveFile: emit haveConferenceFile(url_input.url(), 0); break; case UrlInputDialog::Cancel: return; } } @@ -139,13 +143,11 @@ void ConferenceEditor::removeClicked() void ConferenceEditor::changeUrlClicked() { - if (selected_id < 0) { - return; - } - const Conference& selected = Conference::getById(selected_id); + if (selected_id < 0) return; + const Conference& selectedConf = Conference::getById(selected_id); bool ok; - QString url = QInputDialog::getText(this, "URL Input", "Enter schedule URL", QLineEdit::Normal, selected.url(), &ok); + QString url = QInputDialog::getText(this, "URL Input", "Enter schedule URL", QLineEdit::Normal, selectedConf.url(), &ok); if (ok) { emit changeUrlRequested(selected_id, url); @@ -154,27 +156,29 @@ void ConferenceEditor::changeUrlClicked() void ConferenceEditor::refreshClicked() { - if (selected_id < 0) { - return; - } - const Conference& selected = Conference::getById(selected_id); - - QString url = selected.url(); + if (selected_id <= 0) return; + const Conference& selectedConf = Conference::getById(selected_id); + QString url = selectedConf.url(); - if (!url.isEmpty()) { - emit haveConferenceUrl(url); - } else { + if (url.isEmpty()) { static const QString format("Schedule URL for %1 is not set. Enter the schedule URL:"); bool ok; - QString url = QInputDialog::getText(this, "URL Input", format.arg(selected.title()), QLineEdit::Normal, QString(), &ok); - - if (ok) { - // first save it, to remain if fetch fails - emit changeUrlRequested(selected_id, url); - // then fetch - emit haveConferenceUrl(url); - } + url = QInputDialog::getText(this, "URL Input", format.arg(selectedConf.title()), QLineEdit::Normal, QString(), &ok); + if (!ok) return; + // first save it, to remain if fetch fails + emit changeUrlRequested(selected_id, url); } + // fetch + importStarted(); // just to show the progress bar + emit haveConferenceUrl(url, selected_id); +} + +void ConferenceEditor::dtsChanged() { + if (selected_id < 0) return; + Conference& conference = model->conferenceFromIndex(model->indexFromId(selected_id)); + int minutes = conferenceDtsMinutes->value(); + if (conferenceDtsHours->value() < 0) minutes *= -1; + conference.setDisplayTimeShift(conferenceDtsHours->value() * 60 + minutes); } void ConferenceEditor::importStarted() @@ -195,9 +199,7 @@ void ConferenceEditor::showParsingProgress(int progress) QApplication::processEvents(); } -void ConferenceEditor::importFinished(const QString& title) -{ - qDebug() << __PRETTY_FUNCTION__ << title; +void ConferenceEditor::importFinished(int conferenceId) { addBtn->show(); // removeItem should be shown later, but it takes some time, // and not looks good @@ -208,29 +210,10 @@ void ConferenceEditor::importFinished(const QString& title) QApplication::processEvents(); - int num = model->rowCount(); - for (int i = 0; i < num; i++) { - QModelIndex item = model->index(i, 0); - if (model->data(item) == title) { - emit wantCurrent(item, QItemSelectionModel::SelectCurrent); - return; - } - } - itemSelected(QModelIndex(), QModelIndex()); + QModelIndex item = model->indexFromId(conferenceId); + if (item.isValid()) + emit wantCurrent(item, QItemSelectionModel::SelectCurrent); + else + itemSelected(QModelIndex(), QModelIndex()); } -void ConferenceEditor::conferenceMapClicked() -{ - Conference conf = Conference::getById(selected_id); - QString mapPath = conf.map(); - if(mapPath.isEmpty() or !QFile::exists(mapPath)) { - error_message("Map is not available"); - return; - } - - QString roomName; - - QPixmap map(mapPath); - MapWindow window(map,roomName,this); - window.exec(); -}