From 11d7ec564b70fc4b8e8aae5355554e5a09ffe32d Mon Sep 17 00:00:00 2001 From: Philipp Spitzer Date: Mon, 17 Oct 2011 21:37:48 +0000 Subject: [PATCH] Implemented "now" action and removed the "now" button from the day navigator. --- src/create_tables.sql | 2 +- src/gui/daynavigatorwidget.cpp | 6 ------ src/gui/daynavigatorwidget.h | 1 - src/gui/daynavigatorwidget.ui | 18 +----------------- src/gui/dayviewtabcontainer.cpp | 29 +++++++++++++++++++++++------ src/gui/dayviewtabcontainer.h | 6 +++++- src/gui/mainwindow.cpp | 5 ++++- src/mvc/event.h | 1 + 8 files changed, 35 insertions(+), 33 deletions(-) diff --git a/src/create_tables.sql b/src/create_tables.sql index a04b8d2..122c1cf 100644 --- a/src/create_tables.sql +++ b/src/create_tables.sql @@ -32,7 +32,7 @@ CREATE TABLE PERSON ( id INTEGER NOT NULL CREATE TABLE EVENT ( xid_conference INTEGER NOT NULL , id INTEGER NOT NULL , start INTEGER NOT NULL - , duration INTEGER NOT NULL + , duration INTEGER NOT NULL -- duration of the event in seconds , xid_track INTEGER NOT NULL REFERENCES TRACK(id) , type VARCHAR , language VARCHAR diff --git a/src/gui/daynavigatorwidget.cpp b/src/gui/daynavigatorwidget.cpp index e251f6f..c48f354 100644 --- a/src/gui/daynavigatorwidget.cpp +++ b/src/gui/daynavigatorwidget.cpp @@ -28,7 +28,6 @@ DayNavigatorWidget::DayNavigatorWidget(QWidget *aParent): QWidget(aParent) { connect(prevDayButton, SIGNAL(clicked()), SLOT(prevDayButtonClicked())); connect(nextDayButton, SIGNAL(clicked()), SLOT(nextDayButtonClicked())); - connect(todayButton, SIGNAL(clicked()), SLOT(todayButtonClicked())); configureNavigation(); } @@ -106,11 +105,6 @@ void DayNavigatorWidget::nextDayButtonClicked() { } -void DayNavigatorWidget::todayButtonClicked() { - setCurDate(QDate::currentDate()); -} - - void DayNavigatorWidget::paintEvent(QPaintEvent *aEvent) { Q_UNUSED(aEvent); diff --git a/src/gui/daynavigatorwidget.h b/src/gui/daynavigatorwidget.h index d342e19..e16017c 100644 --- a/src/gui/daynavigatorwidget.h +++ b/src/gui/daynavigatorwidget.h @@ -40,7 +40,6 @@ class DayNavigatorWidget : public QWidget, private Ui::DayNavigatorWidget { void paintEvent(QPaintEvent *); void configureNavigation(); private slots: - void todayButtonClicked(); void prevDayButtonClicked(); void nextDayButtonClicked(); signals: diff --git a/src/gui/daynavigatorwidget.ui b/src/gui/daynavigatorwidget.ui index 255790a..650d533 100644 --- a/src/gui/daynavigatorwidget.ui +++ b/src/gui/daynavigatorwidget.ui @@ -64,27 +64,11 @@ - - - - ... - - - - :/icons/today.png:/icons/today.png - - - true - - - - - - + prevDayButtonClicked() diff --git a/src/gui/dayviewtabcontainer.cpp b/src/gui/dayviewtabcontainer.cpp index 35ce2d8..9230327 100644 --- a/src/gui/dayviewtabcontainer.cpp +++ b/src/gui/dayviewtabcontainer.cpp @@ -20,15 +20,32 @@ #include "dayviewtabcontainer.h" -DayViewTabContainer::DayViewTabContainer(QWidget *aParent) : TabContainer( aParent ) -{ +DayViewTabContainer::DayViewTabContainer(QWidget *aParent): TabContainer(aParent) { } -DayViewTabContainer::~DayViewTabContainer() -{ + +void DayViewTabContainer::expandTimeGroup(QTime time, int conferenceId) { + EventModel* eventModel = static_cast(treeView->model()); + + // iterate over the time groups + for (int g = 0; g != eventModel->rowCount(); ++g) { + QModelIndex groupIdx = eventModel->index(g, 0); + // iterate over the events in the group + for (int e = 0; e != eventModel->rowCount(groupIdx); ++e) { + QModelIndex eventIdx = eventModel->index(e, 0, groupIdx); + int eventId = eventIdx.data().toInt(); + Event event = Event::getById(eventId, conferenceId); + if (time < event.start().time().addSecs(event.duration())) { // if time < end + // expand this group + treeView->expand(groupIdx); + treeView->scrollTo(eventIdx, QAbstractItemView::PositionAtTop); + return; + } + } + } } -void DayViewTabContainer::loadEvents( const QDate &aDate, const int aConferenceId ) -{ + +void DayViewTabContainer::loadEvents( const QDate &aDate, const int aConferenceId ) { static_cast(treeView->model())->loadEvents( aDate, aConferenceId ); } diff --git a/src/gui/dayviewtabcontainer.h b/src/gui/dayviewtabcontainer.h index e049ff6..f0ab645 100644 --- a/src/gui/dayviewtabcontainer.h +++ b/src/gui/dayviewtabcontainer.h @@ -27,7 +27,11 @@ class DayViewTabContainer: public TabContainer { Q_OBJECT public: DayViewTabContainer(QWidget *aParent); - virtual ~DayViewTabContainer(); + virtual ~DayViewTabContainer() {} + +public slots: + void expandTimeGroup(QTime time, int conferenceId); + protected: virtual void loadEvents(const QDate &aDate, const int aConferenceId ); }; diff --git a/src/gui/mainwindow.cpp b/src/gui/mainwindow.cpp index 8373041..b9969a9 100644 --- a/src/gui/mainwindow.cpp +++ b/src/gui/mainwindow.cpp @@ -149,7 +149,10 @@ void MainWindow::on_reloadAction_triggered() { void MainWindow::on_nowAction_triggered() { - + int confId = Conference::activeConference(); + if (confId== -1) return; + dayNavigator->setCurDate(QDate::currentDate()); + dayTabContainer->expandTimeGroup(QTime::currentTime(), confId); } diff --git a/src/mvc/event.h b/src/mvc/event.h index 08c86f0..ad83521 100644 --- a/src/mvc/event.h +++ b/src/mvc/event.h @@ -53,6 +53,7 @@ public: int id() const { return value("id").toInt(); } int conferenceId() const { return value("xid_conference").toInt(); } QDateTime start() const { return value("start").toDateTime(); } + /// duration of the event in seconds int duration() const { return value("duration").toInt(); } int trackId() const { return value("xid_track").toInt(); } QString type() const { return value("type").toString(); } -- 2.39.5