- Timestamp:
- 08/22/12 00:11:58 (10 years ago)
- Branches:
- master, qt5
- Children:
- 7680536
- Parents:
- ca20842
- Location:
- src
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
src/gui/conferenceeditor.cpp
rca20842 r2dffed3 104 104 UrlInputDialog url_input(this); 105 105 switch (url_input.exec()) { 106 case UrlInputDialog::HaveUrl: emit haveConferenceUrl(url_input.url() ); break;107 case UrlInputDialog::HaveFile: emit haveConferenceFile(url_input.url() ); break;106 case UrlInputDialog::HaveUrl: emit haveConferenceUrl(url_input.url(), 0); break; 107 case UrlInputDialog::HaveFile: emit haveConferenceFile(url_input.url(), 0); break; 108 108 case UrlInputDialog::Cancel: return; 109 109 } … … 144 144 void ConferenceEditor::refreshClicked() 145 145 { 146 if (selected_id < 0) return;146 if (selected_id <= 0) return; 147 147 const Conference& selectedConf = Conference::getById(selected_id); 148 148 QString url = selectedConf.url(); … … 158 158 // fetch 159 159 importStarted(); // just to show the progress bar 160 emit haveConferenceUrl(url );160 emit haveConferenceUrl(url, selected_id); 161 161 } 162 162 -
src/gui/conferenceeditor.h
rca20842 r2dffed3 48 48 void noneConferenceSelected(); 49 49 50 void haveConferenceUrl(const QString& url );51 void haveConferenceFile(const QString& path );50 void haveConferenceUrl(const QString& url, int conferenceId); 51 void haveConferenceFile(const QString& path, int conferenceId); 52 52 void removeConferenceRequested(int id); 53 53 void changeUrlRequested(int, const QString&); -
src/gui/mainwindow.cpp
rca20842 r2dffed3 148 148 Conference active = Conference::getById(confId); 149 149 if (active.url().isEmpty()) return; 150 importFromNetwork(active.url() );150 importFromNetwork(active.url(), confId); 151 151 setEnabled(false); 152 152 } … … 318 318 ConferenceEditor dialog(conferenceModel, this); 319 319 320 connect(&dialog, SIGNAL(haveConferenceUrl(const QString& )), SLOT(importFromNetwork(const QString&)));321 connect(&dialog, SIGNAL(haveConferenceFile(const QString& )), SLOT(importFromFile(const QString&)));320 connect(&dialog, SIGNAL(haveConferenceUrl(const QString&, int)), SLOT(importFromNetwork(const QString&, int))); 321 connect(&dialog, SIGNAL(haveConferenceFile(const QString&, int)), SLOT(importFromFile(const QString&, int))); 322 322 connect(&dialog, SIGNAL(removeConferenceRequested(int)), SLOT(removeConference(int))); 323 323 connect(&dialog, SIGNAL(changeUrlRequested(int, const QString&)), … … 350 350 if (!redirectUrl.isEmpty()) { 351 351 if (redirectUrl != aReply->request().url()) { 352 importFromNetwork(redirectUrl.toString() );352 importFromNetwork(redirectUrl.toString(), aReply->request().attribute(QNetworkRequest::User).toInt()); 353 353 return; // don't enable controls 354 354 } else { … … 356 356 } 357 357 } else { 358 importData(aReply->readAll(), aReply->url().toEncoded() );358 importData(aReply->readAll(), aReply->url().toEncoded(), aReply->request().attribute(QNetworkRequest::User).toInt()); 359 359 } 360 360 } … … 362 362 } 363 363 364 void MainWindow::importData(const QByteArray &aData, const QString& url )365 { 366 mXmlParser->parseData(aData, url );367 } 368 369 void MainWindow::importFromNetwork(const QString& url )364 void MainWindow::importData(const QByteArray &aData, const QString& url, int conferenceId) 365 { 366 mXmlParser->parseData(aData, url, conferenceId); 367 } 368 369 void MainWindow::importFromNetwork(const QString& url, int conferenceId) 370 370 { 371 371 QNetworkRequest request; 372 372 request.setUrl(QUrl(url)); 373 request.setAttribute(QNetworkRequest::User, conferenceId); 373 374 374 375 mNetworkAccessManager->setProxy(QNetworkProxy::applicationProxy()); … … 376 377 } 377 378 378 void MainWindow::importFromFile(const QString& filename )379 void MainWindow::importFromFile(const QString& filename, int conferenceId) 379 380 { 380 381 QFile file(filename); … … 384 385 } 385 386 386 importData(file.readAll(), "" );387 importData(file.readAll(), "", conferenceId); 387 388 } 388 389 -
src/gui/mainwindow.h
rca20842 r2dffed3 55 55 // TODO: remove 56 56 void networkQueryFinished(QNetworkReply*); 57 void importFromNetwork(const QString& );58 void importFromFile(const QString& );57 void importFromNetwork(const QString&, int conferenceId); 58 void importFromFile(const QString&, int conferenceId); 59 59 void removeConference(int); 60 60 void changeConferenceUrl(int, const QString&); … … 66 66 void initTabs(); 67 67 void clearTabs(); 68 void importData(const QByteArray &aData, const QString& url );68 void importData(const QByteArray &aData, const QString& url, int conferenceId); 69 69 70 70 QString saved_title; -
src/sql/schedulexmlparser.cpp
rca20842 r2dffed3 33 33 } 34 34 35 void ScheduleXmlParser::parseData(const QByteArray &aData, const QString& url )35 void ScheduleXmlParser::parseData(const QByteArray &aData, const QString& url, int conferenceId) 36 36 { 37 37 QDomDocument document; … … 48 48 SqlEngine::beginTransaction(); 49 49 50 int confId = 0;51 50 QString conference_title; 52 51 if (!scheduleElement.isNull()) … … 57 56 emit(parsingScheduleBegin()); 58 57 QHash<QString,QString> conference; 59 conference["id"] = QString::number(0); // conference ID is assigned automatically, or obtained from the DB58 conference["id"] = conferenceId; // conference ID is assigned automatically if 0 60 59 conference["title"] = conferenceElement.firstChildElement("title").text(); 61 60 conference["subtitle"] = conferenceElement.firstChildElement("subtitle").text(); … … 68 67 conference["timeslot_duration"] = conferenceElement.firstChildElement("timeslot_duration").text(); // time 69 68 conference["url"] = url; 70 SqlEngine::addConferenceToDB(conference );71 conf Id = conference["id"].toInt();69 SqlEngine::addConferenceToDB(conference, conferenceId); 70 conferenceId = conference["id"].toInt(); 72 71 conference_title = conference["title"]; 73 72 } … … 105 104 room["name"] = roomElement.attribute("name"); 106 105 room["event_id"] = eventElement.attribute("id"); 107 room["conference_id"] = QString::number(conf Id,10);106 room["conference_id"] = QString::number(conferenceId,10); 108 107 SqlEngine::addRoomToDB(room); 109 108 … … 111 110 QHash<QString,QString> event; 112 111 event["id"] = eventElement.attribute("id");; 113 event["conference_id"] = QString::number(conf Id, 10);112 event["conference_id"] = QString::number(conferenceId, 10); 114 113 event["start"] = eventElement.firstChildElement("start").text(); // time eg. 10:00 115 114 event["date"] = dayElement.attribute("date"); // date eg. 2009-02-07 … … 126 125 SqlEngine::addEventToDB(event); 127 126 // process persons' nodes 128 QList<QString> persons;129 127 QDomElement personsElement = eventElement.firstChildElement("persons"); 130 128 QDomNodeList personList = personsElement.elementsByTagName("person"); … … 134 132 person["name"] = personList.at(i).toElement().text(); 135 133 person["event_id"] = eventElement.attribute("id"); 136 person["conference_id"] = QString::number(confId, 10); 137 //qDebug() << "adding Person: " << person["name"]; 134 person["conference_id"] = QString::number(conferenceId, 10); 138 135 SqlEngine::addPersonToDB(person); 139 136 } … … 146 143 link["url"] = linkList.at(i).toElement().attribute("href"); 147 144 link["event_id"] = eventElement.attribute("id"); 148 link["conference_id"] = QString::number(conf Id, 10);145 link["conference_id"] = QString::number(conferenceId, 10); 149 146 SqlEngine::addLinkToDB(link); 150 147 } -
src/sql/schedulexmlparser.h
rca20842 r2dffed3 30 30 31 31 public slots: 32 void parseData(const QByteArray &aData, const QString& url );32 void parseData(const QByteArray &aData, const QString& url, int conferenceId); 33 33 34 34 signals: -
src/sql/sqlengine.cpp
rca20842 r2dffed3 87 87 } 88 88 89 void SqlEngine::addConferenceToDB(QHash<QString,QString> &aConference )89 void SqlEngine::addConferenceToDB(QHash<QString,QString> &aConference, int conferenceId) 90 90 { 91 91 QSqlDatabase db = QSqlDatabase::database(); … … 93 93 if (db.isValid() && db.isOpen()) 94 94 { 95 int confId = 0; 96 QList<Conference> confsList = Conference::getAll(); 97 if(confsList.count()) 98 { 99 QListIterator<Conference> i(confsList); 100 while (i.hasNext()) 101 { 102 Conference conf = i.next(); 103 if( aConference["title"] == conf.title() ) 104 { 105 confId = conf.id(); 106 aConference["id"] = QString::number(confId); 107 break; 108 } 109 } 110 } 111 112 if(!confId) // conference 'aConference' isn't in the table => insert 113 { 114 // HACK 115 // When city is empty, assign a dummy value. We probably want to find a way to change the database scheme ... 116 // cf. #32 117 if (aConference["city"].isEmpty()) aConference["city"] = "n/a"; 118 119 QSqlQuery query(db); 95 // HACK 96 // When city is empty, assign a dummy value. We probably want to find a way to change the database scheme ... 97 // cf. #32 98 if (aConference["city"].isEmpty()) aConference["city"] = "n/a"; 99 100 QSqlQuery query(db); 101 if (conferenceId <= 0) // insert conference 102 { 120 103 query.prepare("INSERT INTO CONFERENCE (title,url,subtitle,venue,city,start,end,days," 121 104 "day_change,timeslot_duration,active) " … … 128 111 query.bindValue(":end", QDateTime(QDate::fromString(aConference["end"],DATE_FORMAT),QTime(0,0),Qt::UTC).toTime_t()); 129 112 query.bindValue(":day_change", -QTime::fromString(aConference["day_change"],TIME_FORMAT).secsTo(QTime(0,0))); 130 query.bindValue(": day_change", -QTime::fromString(aConference["timeslot_duration"],TIME_FORMAT).secsTo(QTime(0,0)));131 query.bindValue(":active", confsList.count() > 0 ? 0 :1);113 query.bindValue(":timeslot_duration", -QTime::fromString(aConference["timeslot_duration"],TIME_FORMAT).secsTo(QTime(0,0))); 114 query.bindValue(":active", 1); 132 115 if (!query.exec()) qDebug() << "Could not execute query to insert a conference:" << query.lastError(); 133 116 aConference["id"] = query.lastInsertId().toString(); // 'id' is assigned automatically 117 } 118 else // update conference 119 { 120 query.prepare("UPDATE CONFERENCE set title=:title, url=:url, subtitle=:subtitle, venue=:venue, city=:city, start=:start, end=:end, days=:days," 121 "day_change=:day_change, timeslot_duration=:timeslot_duration, active=:active " 122 "WHERE id=:id"); 123 foreach (QString prop_name, (QList<QString>() << "title" << "url" << "subtitle" << "venue" << "city" << "days")) { 124 query.bindValue(QString(":") + prop_name, aConference[prop_name]); 125 } 126 query.bindValue(":start", QDateTime(QDate::fromString(aConference["start"],DATE_FORMAT),QTime(0,0),Qt::UTC).toTime_t()); 127 query.bindValue(":end", QDateTime(QDate::fromString(aConference["end"],DATE_FORMAT),QTime(0,0),Qt::UTC).toTime_t()); 128 query.bindValue(":day_change", -QTime::fromString(aConference["day_change"],TIME_FORMAT).secsTo(QTime(0,0))); 129 query.bindValue(":timeslot_duration", -QTime::fromString(aConference["timeslot_duration"],TIME_FORMAT).secsTo(QTime(0,0))); 130 query.bindValue(":active", 1); 131 query.bindValue(":id", conferenceId); 132 if (!query.exec()) qDebug() << "Could not execute query to update a conference:" << query.lastError(); 133 aConference["id"] = conferenceId; 134 134 } 135 135 } -
src/sql/sqlengine.h
rca20842 r2dffed3 33 33 ~SqlEngine(); 34 34 static void initialize(); 35 static void addConferenceToDB(QHash<QString,QString> &aConference); 35 // if a conferneceId != 0 is given, the confernece is updated instead of inserted. 36 static void addConferenceToDB(QHash<QString,QString> &aConference, int conferenceId); 36 37 static void addEventToDB(QHash<QString,QString> &aEvent); 37 38 static void addPersonToDB(QHash<QString,QString> &aPerson);
Note: See TracChangeset
for help on using the changeset viewer.