#include <QPainter>
#include <QLabel>
+#include <conference.h>
+#include <application.h>
DayNavigatorWidget::DayNavigatorWidget(QWidget *aParent): QWidget(aParent) {
void DayNavigatorWidget::paintEvent(QPaintEvent *aEvent) {
Q_UNUSED(aEvent);
-
- QString selectedDateStr = mCurDate.isValid() ? mCurDate.toString("dddd\nyyyy-MM-dd") : tr("No date");
+ QString selectedDateStr;
+ if (mCurDate.isValid()) {
+ selectedDateStr = mCurDate.toString("dddd\nyyyy-MM-dd");
+ bool hasConference = ((Application*) qApp)->hasActiveConference();
+ if (hasConference) {
+ Conference& conference = ((Application*) qApp)->activeConference();
+ if (conference.hasDisplayTimeShift() && conference.displayTimeShift() != 0) {
+ QTime shift(0, 0);
+ bool minus = conference.displayTimeShift() < 0;
+ shift = shift.addSecs(conference.displayTimeShift() * 60 * (minus ? -1 : 1));
+ selectedDateStr += " (" + (minus ? QString("-") : "+") + shift.toString("HH:mm") + ")";
+ }
+ }
+ } else {
+ selectedDateStr = tr("No date");
+ }
QPainter painter(this);
painter.save();
#include <QDialog>
#include <QMessageBox>
+#include <application.h>
#include "ui_about.h"
#include "eventdialog.h"
void MainWindow::onAlarmTimerTimeout() {
// determine if an alarm is set on an event that's starting soon
- QList<Event> events = Event::getImminentAlarmEvents(AppSettings::preEventAlarmSec(), Conference::activeConference());
+ int conferenceId = Conference::activeConference();
+ QList<Event> events = Event::getImminentAlarmEvents(AppSettings::preEventAlarmSec(), conferenceId);
if (events.empty()) return;
// build a message string
+ const Conference conference = Conference::getById(conferenceId);
Event event;
QString title;
QString message;
if (events.size() == 1) {
event = events.first();
- title = tr("Next event at %1").arg(event.start().toString("HH:mm"));
+ title = tr("Next event at %1").arg(conference.shiftTime(event.start().time()).toString("HH:mm"));
message = tr("\"%1\"\n(%2)").arg(event.title()).arg(event.room()->name());
} else {
title = tr("%1 upcoming events").arg(events.size());
QStringList messages;
foreach (event, events) {
- messages += tr("%1: \"%2\" (%3)").arg(event.start().toString("HH:mm")).arg(event.title()).arg(event.room()->name());
+ messages += tr("%1: \"%2\" (%3)").arg(conference.shiftTime(event.start().time()).toString("HH:mm")).arg(event.title()).arg(event.room()->name());
}
message = messages.join("\n");
}
if (confId != -1) // only init tabs if a conference is active
{
Conference active = Conference::getById(confId);
+ ((Application*) qApp)->setActiveConference(active);
QDate startDate = active.start();
QDate endDate = active.end();
clearTabs();
dayNavigator->unsetDates();
setWindowTitle(saved_title);
+ ((Application*) qApp)->unsetActiveConference();
}
}
+QTime Conference::shiftTime(const QTime& value) const {
+ return value.addSecs(displayTimeShift() * 60);
+}
int utcOffset() const {return value("utc_offset").toInt();}
bool hasDisplayTimeShift() const {return !value("display_time_shift").isNull();}
int displayTimeShift() const {return value("display_time_shift").toInt();}
+ void setDisplayTimeShift(int newValue) {setValue("display_time_shift", newValue); update("display_time_shift");}
+
bool isActive() const { return value("active").toBool(); }
QString url() const { return stringFromNullable(value("url")); }
update("url");
}
+ /// Returns a QTime that is shifted by displayTimeShift minutes
+ QTime shiftTime(const QTime& value) const;
+
private:
static QString stringFromNullable(const QVariant& v)
{
if (role != Qt::DisplayRole) {
return QVariant();
}
-
return conferences[index.row()].title();
+}
- try {
- const Conference& c = conferenceFromIndex(index);
- return c.title();
- } catch (OrmNoObjectException&) {
- return QVariant();
+const Conference& ConferenceModel::conferenceFromIndex(const QModelIndex& index) const
+{
+ if (index.parent().isValid()
+ or index.column() != 0
+ or index.row() >= conferences.size())
+ {
+ throw OrmNoObjectException();
}
-
+ return conferences[index.row()];
}
-const Conference& ConferenceModel::conferenceFromIndex(const QModelIndex& index) const
+Conference& ConferenceModel::conferenceFromIndex(const QModelIndex& index)
{
if (index.parent().isValid()
or index.column() != 0
It also provides typed access to the conferences from ConferenceEditor.
-It does not actually modify anything in DB, this is performed by other classes.
+It does not actually modify anything in DB (unless methods changing the conference instance returned by conferenceFromIndex are used),
+this is performed by other classes.
\see ConferenceEditor, MainWindow::showConferences()
*/
virtual QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const;
const Conference& conferenceFromIndex(const QModelIndex&) const;
+ Conference& conferenceFromIndex(const QModelIndex&);
QModelIndex indexFromId(int id) const;
public slots:
void newConferenceBegin();
#include <QDebug>
#include <QPainter>
+#include <application.h>
+#include "conference.h"
#include "room.h"
const int SPACER = 10;
painter->setPen(QPen(conflictSeverity != csNone ? Qt::black : textColor));
QPointF titlePointF(option.rect.x() + SPACER,
option.rect.y() + SPACER + mControls[FavouriteControlStrong]->image()->height());
- QTime start = event->start().time();
+ Conference& conference = ((Application*) qApp)->activeConference();
+ QTime start = conference.shiftTime(event->start().time());
painter->setFont(fontBig);
painter->drawText(titlePointF,start.toString("hh:mm") + "-" + start.addSecs(event->duration()).toString("hh:mm") + ", " + event->roomName());
#include "track.h"
#include "room.h"
+#include <application.h>
+
const QString EventModel::COMMA_SEPARATOR = ", ";
EventModel::EventModel()
for (int i = mFirstEventIndex; i != mFirstEventIndex + mChildCount; ++i) {
endTime = qMax(mEvents.at(i).start().addSecs(mEvents.at(i).duration()), endTime);
}
- mTitle = QString("%1 - %2").arg(startTime.toString("HH:mm")).arg(endTime.toString("HH:mm"));
+ Conference& conference = ((Application*) qApp)->activeConference();
+ QTime s = conference.shiftTime(startTime.time());
+ QTime e = conference.shiftTime(endTime.time());
+ mTitle = QString("%1 - %2").arg(s.toString("HH:mm")).arg(e.toString("HH:mm"));
}