path stored as additional field in conference table
if it's null or empty, "Show map" button is not shown
if existing database does not have the field, it will be automatically added
, day_change INTEGER
, timeslot_duration INTEGER
, active INTEGER DEFAULT 0
, day_change INTEGER
, timeslot_duration INTEGER
, active INTEGER DEFAULT 0
- , url VARCHAR UNIQUE);
-INSERT INTO "CONFERENCE" VALUES(1,'FOSDEM 2010','Free and Opensource Software Developers European Meeting','ULB (Campus Solbosch)','Brussels',1265414400,1265500800,2,28800,900,1,"http://fosdem.org/2010/schedule/xml");
+ , url VARCHAR UNIQUE
+ , map VARCHAR);
+INSERT INTO "CONFERENCE" VALUES(1,'FOSDEM 2010','Free and Opensource Software Developers European Meeting','ULB (Campus Solbosch)','Brussels',1265414400,1265500800,2,28800,900,1,"http://fosdem.org/2010/schedule/xml", ":/maps/campus.png");
CREATE TABLE TRACK ( id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL
, name VARCHAR UNIQUE NOT NULL );
INSERT INTO "TRACK" VALUES(1,'Keynotes');
CREATE TABLE TRACK ( id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL
, name VARCHAR UNIQUE NOT NULL );
INSERT INTO "TRACK" VALUES(1,'Keynotes');
#include "conferencemodel.h"
#include "urlinputdialog.h"
#include "mapwindow.h"
#include "conferencemodel.h"
#include "urlinputdialog.h"
#include "mapwindow.h"
+#include "errormessage.h"
#include <QInputDialog>
#include <QItemSelectionModel>
#include <QInputDialog>
#include <QItemSelectionModel>
conf.start().toString("dd-MM-yyyy")
+ ", " +
conf.end().toString("dd-MM-yyyy"));
conf.start().toString("dd-MM-yyyy")
+ ", " +
conf.end().toString("dd-MM-yyyy"));
+
+ QString map = conf.map();
+ if (map.isEmpty()) {
+ showMapButton->hide();
+ } else {
+ showMapButton->show();
+ }
+
conferenceInfo->setCurrentIndex(0);
removeBtn->show();
}
conferenceInfo->setCurrentIndex(0);
removeBtn->show();
}
void ConferenceEditor::conferenceMapClicked()
{
void ConferenceEditor::conferenceMapClicked()
{
- QString mapPath = QString(":/maps/campus.png");
- if(!QFile::exists(mapPath))
- mapPath = QString(":/maps/rooms/not-available.png");
+ Conference conf = Conference::getById(selected_id);
+ QString mapPath = conf.map();
+ if(mapPath.isEmpty() or !QFile::exists(mapPath)) {
+ error_message("Map is not available");
+ return;
+ }
<< QSqlField("day_change", QVariant::Int)
<< QSqlField("timeslot_duration", QVariant::Int)
<< QSqlField("active", QVariant::Bool)
<< QSqlField("day_change", QVariant::Int)
<< QSqlField("timeslot_duration", QVariant::Int)
<< QSqlField("active", QVariant::Bool)
- << QSqlField("url", QVariant::String));
+ << QSqlField("url", QVariant::String)
+ << QSqlField("map", QVariant::String)
+ );
QString const Conference::sTableName = QString("conference");
QString const Conference::sTableName = QString("conference");
int dayChange() const { return value("day_change").toInt(); } // in seconds from 00:00
int timeslotDuration() const { return value("timeslot_duration").toInt(); } // in seconds
bool isActive() const { return value("active").toBool(); }
int dayChange() const { return value("day_change").toInt(); } // in seconds from 00:00
int timeslotDuration() const { return value("timeslot_duration").toInt(); } // in seconds
bool isActive() const { return value("active").toBool(); }
- QString url() const
- {
- QVariant val = value("url");
- qDebug() << __PRETTY_FUNCTION__ << val;
- if (val.isValid()) {
- return val.toString();
- } else {
- return QString();
- }
- }
+ QString url() const { return stringFromNullable(value("url")); }
+ QString map() const { return stringFromNullable(value("map")); }
#if 0
void setId(int id) { setValue("id", id); }
#if 0
void setId(int id) { setValue("id", id); }
setValue("url", url.isNull() ? QVariant() : url);
update("url");
}
setValue("url", url.isNull() ? QVariant() : url);
update("url");
}
+
+private:
+ static QString stringFromNullable(const QVariant& v)
+ {
+ if (v.isValid()) {
+ return v.toString();
+ } else {
+ return QString();
+ }
+ }
};
#endif /* CONFERENCE_H */
};
#endif /* CONFERENCE_H */
+ checkConferenceMap(database);
+
//LOG_INFO(QString("Opening '%1' database '%2'").arg(aDatabaseType).arg(aDatabaseName));
return result ? QString() : database.lastError().text();
//LOG_INFO(QString("Opening '%1' database '%2'").arg(aDatabaseType).arg(aDatabaseName));
return result ? QString() : database.lastError().text();
+void SqlEngine::checkConferenceMap(QSqlDatabase &aDatabase)
+{
+ QSqlQuery sqlQuery(aDatabase);
+ sqlQuery.prepare("SELECT map FROM conference");
+ if (!sqlQuery.exec()) {
+ qWarning() << "column conference.map is missing; adding";
+ execQuery(aDatabase, "ALTER TABLE conference ADD COLUMN map VARCHAR")
+ and execQuery(aDatabase, "UPDATE conference SET map = ':/maps/campus.png' WHERE title = 'FOSDEM 2010'");
+ }
+}
static QString login(const QString &aDatabaseType, const QString &aDatabaseName);
static bool execQuery(QSqlDatabase &aDatabase, const QString &aQuery);
static bool execQueryWithParameter(QSqlDatabase &aDatabase, const QString &aQuery, const QHash<QString, QVariant>& params);
static QString login(const QString &aDatabaseType, const QString &aDatabaseName);
static bool execQuery(QSqlDatabase &aDatabase, const QString &aQuery);
static bool execQueryWithParameter(QSqlDatabase &aDatabase, const QString &aQuery, const QHash<QString, QVariant>& params);
+
+ static void checkConferenceMap(QSqlDatabase &aDatabase);
};
#endif /* SQLENGINE_H */
};
#endif /* SQLENGINE_H */