, 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');
#include "conferencemodel.h"
#include "urlinputdialog.h"
#include "mapwindow.h"
+#include "errormessage.h"
#include <QInputDialog>
#include <QItemSelectionModel>
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();
}
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;
+ }
QString roomName;
<< 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");
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); }
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 */
database.open();
}
+ checkConferenceMap(database);
+
//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 void checkConferenceMap(QSqlDatabase &aDatabase);
};
#endif /* SQLENGINE_H */