From 9208bdbb0b8ee2bbee7479e8adb59b96e79e78d9 Mon Sep 17 00:00:00 2001 From: korrco Date: Tue, 19 Jan 2010 20:58:29 +0000 Subject: [PATCH] support for view activities with their names added --- src/gui/mainwindow.cpp | 11 +++++++--- src/mvc/activity.cpp | 48 ++++++++++++++++++++++++++++++++++++++++++ src/mvc/activity.h | 32 ++++++++++++++++++++++++++++ src/mvc/eventmodel.cpp | 9 ++++---- src/mvc/mvc.pro | 20 ++++++++++-------- 5 files changed, 104 insertions(+), 16 deletions(-) create mode 100644 src/mvc/activity.cpp create mode 100644 src/mvc/activity.h diff --git a/src/gui/mainwindow.cpp b/src/gui/mainwindow.cpp index b133986..4abb672 100644 --- a/src/gui/mainwindow.cpp +++ b/src/gui/mainwindow.cpp @@ -6,6 +6,7 @@ #include #include +#include #include #include @@ -38,6 +39,9 @@ MainWindow::MainWindow(QWidget *parent) connect(mXmlParser, SIGNAL(progressStatus(int)), this, SLOT(showParsingProgress(int))); statusBar()->showMessage(tr("Ready")); + //create activity map + Activity::updateActivityMap(); + connect(dayNavigator, SIGNAL(dateChanged(const QDate &)), SLOT(updateDayView(const QDate &))); connect(activityDayNavigator, SIGNAL(dateChanged(const QDate &)), SLOT(updateActivitiesDayView(const QDate &))); connect(favouriteDayNavigator, SIGNAL(dateChanged(const QDate &)), SLOT(updateFavouritesDayView(const QDate &))); @@ -135,6 +139,8 @@ void MainWindow::importSchedule() dayNavigator->setDates(aStartDate, aEndDate); activityDayNavigator->setDates(aStartDate, aEndDate); } + //update activity map + Activity::updateActivityMap(); } void MainWindow::showParsingProgress(int aStatus) @@ -178,7 +184,7 @@ void MainWindow::updateTab(const int aIndex) break; case 2: //index 2 of tabWidget: activitiesTab { - static_cast(actTreeView->model())->loadEventsByActivities(Conference::getById(confId).start(),confId); + static_cast(actTreeView->model())->loadEventsByActivities(Conference::getById(confId).start(), confId); actTreeView->reset(); activityDayNavigator->show(); } @@ -192,7 +198,7 @@ void MainWindow::updateTab(const int aIndex) void MainWindow::updateActivitiesDayView(const QDate &aDate) { - static_cast(actTreeView->model())->loadEventsByActivities(aDate,confId); + static_cast(actTreeView->model())->loadEventsByActivities(aDate, confId); actTreeView->reset(); activityDayNavigator->show(); } @@ -234,4 +240,3 @@ void MainWindow::displayMap(const QModelIndex &aIndex) MapWindow window(map,roomName,this); window.exec(); } - diff --git a/src/mvc/activity.cpp b/src/mvc/activity.cpp new file mode 100644 index 0000000..36ecaa1 --- /dev/null +++ b/src/mvc/activity.cpp @@ -0,0 +1,48 @@ +/* + * activity.cpp + * + * Created on: Dec 27, 2009 + * Author: Pavol Korinek + */ + +#include "activity.h" + +QString const Activity::sTableName = QString("activity"); +int const Activity::sTableColCount = 2; + +QSqlRecord const Activity::sColumns = Activity::toRecord(QList() + << QSqlField("id", QVariant::Int) + << QSqlField("name", QVariant::String)); + +QList Activity::getAll() +{ + QSqlQuery query; + query.prepare(selectQuery()); + return load(query); +} + +QMap* Activity::mIdToActivity = 0; + +void Activity::updateActivityMap() +{ + if (mIdToActivity) + { + delete mIdToActivity; + } + mIdToActivity = new QMap; + QList activityList = Activity::getAll(); + Activity activity; + for (int id = 0; id < activityList.count(); ++id) { + activity = activityList.at(id); + mIdToActivity->insert(activity.id(), activity); + } +} + +QString Activity::getActivityName(int id) +{ + QString name = mIdToActivity->value(id).name(); + if (name == "") { + qDebug() << QString("Error: undefined activity name for id %1").arg(id); + } + return name; +} diff --git a/src/mvc/activity.h b/src/mvc/activity.h new file mode 100644 index 0000000..86be082 --- /dev/null +++ b/src/mvc/activity.h @@ -0,0 +1,32 @@ +/* + * activity.h + * + * Created on: Dec 27, 2009 + * Author: Pavol Korinek + */ + +#ifndef ACTIVITY_H_ +#define ACTIVITY_H_ + +#include + +class Activity : public OrmRecord +{ +public: + static const QSqlRecord sColumns; + static QString const sTableName; + static const int sTableColCount; +public: + static QList getAll(); + int id() const { return value("id").toInt(); } + void setId(int id) { setValue("id", id); } + QString name() const { return value("name").toString(); } + void setName(const QString & type) { setValue("name", type); } +public: + static void updateActivityMap(); + static QString getActivityName(int id); +private: + static QMap* mIdToActivity; +}; + +#endif /* ACTIVITY_H_ */ diff --git a/src/mvc/eventmodel.cpp b/src/mvc/eventmodel.cpp index fb14a56..cefea46 100644 --- a/src/mvc/eventmodel.cpp +++ b/src/mvc/eventmodel.cpp @@ -1,5 +1,6 @@ #include "eventmodel.h" #include +#include EventModel::EventModel() { @@ -50,8 +51,8 @@ void EventModel::createActivityGroups() { return; } int activityId = mEvents.first().activityId(); - //TODO korinpa: get activity name - mGroups << EventModel::Group(QString("activity %1").arg(activityId), 0); + + mGroups << EventModel::Group(Activity::getActivityName(activityId), 0); int nextActivityId = activityId; for (int i=0; i