store room map in database
authorkirilma <kirilma@localhost>
Wed, 5 May 2010 13:56:57 +0000 (13:56 +0000)
committerkirilma <kirilma@localhost>
Wed, 5 May 2010 13:56:57 +0000 (13:56 +0000)
show it if it's available, otherwise show a warning
set proper values in default database
new rooms imported as without maps

src/fosdem.sql
src/gui/tabcontainer.cpp
src/mvc/room.h
src/sql/schedulexmlparser.cpp

index 09913fe..c27ff91 100644 (file)
@@ -50,26 +50,26 @@ INSERT INTO "TRACK" VALUES(32,'BSD');
 CREATE TABLE ROOM ( id INTEGER PRIMARY KEY  AUTOINCREMENT  NOT NULL
     , name VARCHAR UNIQUE NOT NULL
     , picture VARCHAR NOT NULL);
-INSERT INTO "ROOM" VALUES(1,'Janson','NOT DEFINED YET');
-INSERT INTO "ROOM" VALUES(2,'Chavanne','NOT DEFINED YET');
-INSERT INTO "ROOM" VALUES(3,'Ferrer','NOT DEFINED YET');
-INSERT INTO "ROOM" VALUES(4,'Lameere','NOT DEFINED YET');
-INSERT INTO "ROOM" VALUES(5,'H.1301','NOT DEFINED YET');
-INSERT INTO "ROOM" VALUES(6,'UA2.114','NOT DEFINED YET');
-INSERT INTO "ROOM" VALUES(7,'H.1302','NOT DEFINED YET');
-INSERT INTO "ROOM" VALUES(8,'H.1308','NOT DEFINED YET');
-INSERT INTO "ROOM" VALUES(9,'H.1309','NOT DEFINED YET');
-INSERT INTO "ROOM" VALUES(10,'H.2213','NOT DEFINED YET');
-INSERT INTO "ROOM" VALUES(11,'H.2214','NOT DEFINED YET');
-INSERT INTO "ROOM" VALUES(12,'AW1.105','NOT DEFINED YET');
-INSERT INTO "ROOM" VALUES(13,'AW1.120','NOT DEFINED YET');
-INSERT INTO "ROOM" VALUES(14,'AW1.121','NOT DEFINED YET');
-INSERT INTO "ROOM" VALUES(15,'AW1.124','NOT DEFINED YET');
-INSERT INTO "ROOM" VALUES(16,'AW1.126','NOT DEFINED YET');
-INSERT INTO "ROOM" VALUES(17,'Guillissen','NOT DEFINED YET');
-INSERT INTO "ROOM" VALUES(18,'AY','NOT DEFINED YET');
-INSERT INTO "ROOM" VALUES(19,'AW1.117','NOT DEFINED YET');
-INSERT INTO "ROOM" VALUES(20,'AW1.125','NOT DEFINED YET');
+INSERT INTO "ROOM" VALUES(1,'Janson', ':/maps/rooms/janson.png');
+INSERT INTO "ROOM" VALUES(2,'Chavanne', ':/maps/rooms/chavanne.png');
+INSERT INTO "ROOM" VALUES(3,'Ferrer', ':/maps/rooms/ferrer.png');
+INSERT INTO "ROOM" VALUES(4,'Lameere', ':/maps/rooms/lameere.png');
+INSERT INTO "ROOM" VALUES(5,'H.1301', ':/maps/rooms/h1301.png');
+INSERT INTO "ROOM" VALUES(6,'UA2.114', ':/maps/rooms/ua2114.png');
+INSERT INTO "ROOM" VALUES(7,'H.1302', ':/maps/rooms/h1302.png');
+INSERT INTO "ROOM" VALUES(8,'H.1308', ':/maps/rooms/h1308.png');
+INSERT INTO "ROOM" VALUES(9,'H.1309', ':/maps/rooms/h1309.png');
+INSERT INTO "ROOM" VALUES(10,'H.2213', ':/maps/rooms/h2213.png');
+INSERT INTO "ROOM" VALUES(11,'H.2214', ':/maps/rooms/h2214.png');
+INSERT INTO "ROOM" VALUES(12,'AW1.105', ':/maps/rooms/aw1105.png');
+INSERT INTO "ROOM" VALUES(13,'AW1.120', ':/maps/rooms/aw1120.png');
+INSERT INTO "ROOM" VALUES(14,'AW1.121', ':/maps/rooms/aw1121.png');
+INSERT INTO "ROOM" VALUES(15,'AW1.124', ':/maps/rooms/aw1124.png');
+INSERT INTO "ROOM" VALUES(16,'AW1.126', ':/maps/rooms/aw1126.png');
+INSERT INTO "ROOM" VALUES(17,'Guillissen', ':/maps/rooms/guillissen.png');
+INSERT INTO "ROOM" VALUES(18,'AY', ':/maps/rooms/ay.png');
+INSERT INTO "ROOM" VALUES(19,'AW1.117', ':/maps/rooms/aw1117.png');
+INSERT INTO "ROOM" VALUES(20,'AW1.125', ':/maps/rooms/aw1125.png');
 CREATE TABLE PERSON ( id INTEGER PRIMARY KEY  NOT NULL, name VARCHAR UNIQUE NOT NULL);
 INSERT INTO "PERSON" VALUES(19,'Tias Guns');
 INSERT INTO "PERSON" VALUES(22,'Peter Saint-Andre');
index 01900d8..94ce625 100644 (file)
@@ -27,6 +27,8 @@
 
 #include "eventdialog.h"
 #include "mapwindow.h"
+#include "room.h"
+#include "errormessage.h"
 
 #include "conflictsdialog.h"
 
@@ -83,20 +85,22 @@ void TabContainer::displayMap(const QModelIndex &aIndex)
 {
     Event *event = static_cast<Event*>(aIndex.internalPointer());
 
-    // room names are stored in lower-case format
-    // room names are stored without dots in the name, eg. "aw.1124.png" -> "aw1124.png"
-    QString mapPath = QString(":/maps/rooms/%1.png").arg(event->room().toLower().remove("."));
-    if(!QFile::exists(mapPath))
-        mapPath = QString(":/maps/rooms/not-available.png");
-
-    QString roomName;
-    if(mapPath.contains("not-available", Qt::CaseInsensitive))
-        roomName = QString("Map is not available: %1").arg(event->room());
-    else
-        roomName = event->room();
+    Room room = Room::retrieve(event->roomId());
+    QVariant mapPathV = room.map();
+    QString mapPath;
+    if (!mapPathV.isValid()) {
+        error_message("No map for this room");
+        return;
+    } else {
+        mapPath = mapPathV.toString();
+        if (!QFile::exists(mapPath)) {
+            error_message("Map for this room not found: " + mapPath);
+            return;
+        }
+    }
 
     QPixmap map(mapPath);
-    MapWindow window(map,roomName,this);
+    MapWindow window(map, room.name(),this);
     window.exec();
 }
 
index dd78e58..11544a2 100644 (file)
@@ -34,6 +34,8 @@ public:
     void setId(int id) { setValue("id", id); }
     QString name() const { return value("name").toString(); }
     void setName(const QString & type) { setValue("name", type); }
+    // TODO: make naming consistent - either "picture" or "map"
+     QVariant map() const { return value("picture"); }
     int insert();
 public:
     static QList<Room> getAll();
index 68bf711..78a6633 100644 (file)
@@ -102,7 +102,7 @@ void ScheduleXmlParser::parseData(const QByteArray &aData, const QString& url)
                         room["name"] = roomElement.attribute("name");
                         room["event_id"] = eventElement.attribute("id");
                         room["conference_id"] = QString::number(confId,10);
-                        room["picture"] = "NOT DEFINED YET"; // TODO: implement some mapping to assign correct picture to specified room_name
+                        room["picture"] = ""; // TODO: implement some mapping to assign correct picture to specified room_name
                         SqlEngine::addRoomToDB(room);
 
                         // process event's nodes