void CalendarThreadWrapper::addToCalendar() { const QString viaStation = m_result->viaStation(); QSettings settings(FAHRPLAN_SETTINGS_NAMESPACE, "fahrplan2"); QString calendarEntryTitle; QString calendarEntryDesc; if (viaStation.isEmpty()) calendarEntryTitle = tr("%1 to %2").arg(m_result->departureStation(), m_result->arrivalStation()); else calendarEntryTitle = tr("%1 via %3 to %2").arg(m_result->departureStation(), m_result->arrivalStation(), viaStation); if (!m_result->info().isEmpty()) calendarEntryDesc.append(m_result->info()).append("\n"); const bool compactFormat = settings.value("compactCalendarEntries", false).toBool(); for (int i=0; i < m_result->itemcount(); i++) { JourneyDetailResultItem *item = m_result->getItem(i); if (!compactFormat && !item->train().isEmpty()) calendarEntryDesc.append("--- ").append(item->train()).append(" ---\n"); calendarEntryDesc.append(formatStation(item->departureDateTime(), item->departureStation(), item->departureInfo())); calendarEntryDesc.append("\n"); if (compactFormat && !item->train().isEmpty()) calendarEntryDesc.append("--- ").append(item->train()).append(" ---\n"); calendarEntryDesc.append(formatStation(item->arrivalDateTime(), item->arrivalStation(), item->arrivalInfo())); calendarEntryDesc.append("\n"); if (!item->info().isEmpty()) { calendarEntryDesc.append(item->info()).append("\n"); } if (!compactFormat) calendarEntryDesc.append("\n"); } if (!compactFormat) calendarEntryDesc.append( tr("-- \nAdded by Fahrplan. Please, re-check the information before your journey.")); #ifdef BUILD_FOR_BLACKBERRY CalendarService service; QPair<AccountId, FolderId> folder; settings.beginGroup("Calendar"); folder.first = settings.value("AccountId", -1).toInt(); if (folder.first >= 0) folder.second = settings.value("FolderId", -1).toInt(); if ((folder.first < 0) || (folder.second < 0)) folder = service.defaultCalendarFolder(); CalendarEvent event; event.setAccountId(folder.first); event.setFolderId(folder.second); event.setSubject(calendarEntryTitle); event.setStartTime(m_result->departureDateTime()); event.setEndTime(m_result->arrivalDateTime()); event.setBody(calendarEntryDesc); event.setReminder(-1); emit addCalendarEntryComplete(service.createEvent(event) == Result::Success); #elif defined(BUILD_FOR_HARMATTAN) || defined(BUILD_FOR_MAEMO_5) || defined(BUILD_FOR_SYMBIAN) QOrganizerManager defaultManager; QOrganizerEvent event; event.setDisplayLabel(calendarEntryTitle); event.setStartDateTime(m_result->departureDateTime()); event.setEndDateTime(m_result->arrivalDateTime()); event.setDescription(calendarEntryDesc); QString id = settings.value("Calendar/CollectionId").toString(); if (!id.isEmpty()) { QOrganizerCollectionId collectionId = QOrganizerCollectionId::fromString(id); if (!collectionId.isNull()) event.setCollectionId(collectionId); } emit addCalendarEntryComplete(defaultManager.saveItem(&event)); #else emit addCalendarEntryComplete(false); #endif QThread::currentThread()->exit(0); // Move back to GUI thread so the deleteLater() callback works (it requires // an event loop which is still alive) moveToThread(QCoreApplication::instance()->thread()); }
JourneyDetailResultList * Parser131500ComAu::parseDetails(JourneyResultItem *journeyitem) { QString element = journeyitem->internalData1(); element.replace("am+", "am"); element.replace("pm+", "pm"); QStringList detailResults = element.split("<linesep>"); JourneyDetailResultList *results = new JourneyDetailResultList(); QDate journeydate = journeyitem->date(); for (int i = 0; i < detailResults.count(); i++) { JourneyDetailResultItem *item = new JourneyDetailResultItem(); QRegExp regexp = QRegExp("(Take the |Walk to )(.*)$"); regexp.setMinimal(true); regexp.indexIn(detailResults[i].trimmed()); if (regexp.cap(1) == "Take the ") { //qDebug()<<"Regular: "<<regexp.cap(2).trimmed(); QRegExp regexp2 = QRegExp("(.*)Dep: (\\d:\\d\\d|\\d\\d:\\d\\d)(am|pm)(.*)Arr: (\\d:\\d\\d|\\d\\d:\\d\\d)(am|pm)(.*)(\\t+.*)$"); regexp2.setMinimal(true); regexp2.indexIn(regexp.cap(2).trimmed()); //qDebug()<<"***"; if (regexp2.matchedLength() == -1) { regexp2 = QRegExp("(.*)Dep: (\\d:\\d\\d|\\d\\d:\\d\\d)(am|pm)(.*)Arr: (\\d:\\d\\d|\\d\\d:\\d\\d)(am|pm)(.*)$"); regexp2.setMinimal(true); regexp2.indexIn(regexp.cap(2).trimmed()); } /* qDebug()<<"Train:"<<regexp2.cap(1).trimmed(); qDebug()<<"Time1:"<<regexp2.cap(2).trimmed(); qDebug()<<"Time1b:"<<regexp2.cap(3).trimmed(); qDebug()<<"Station1:"<<regexp2.cap(4).trimmed(); qDebug()<<"Time2:"<<regexp2.cap(5).trimmed(); qDebug()<<"Time2b:"<<regexp2.cap(6).trimmed(); qDebug()<<"Station2:"<<regexp2.cap(7).trimmed(); qDebug()<<"Alt:"<<regexp2.cap(8).trimmed(); */ QDateTime fromDateTime; QDateTime toDateTime; QTime fromTime = QTime::fromString(regexp2.cap(2).trimmed() + regexp2.cap(3).trimmed(), "h:map"); QTime toTime = QTime::fromString(regexp2.cap(5).trimmed() + regexp2.cap(6).trimmed(), "h:map"); fromDateTime.setDate(journeydate); fromDateTime.setTime(fromTime); toDateTime.setDate(journeydate); toDateTime.setTime(toTime); if (toDateTime.toTime_t() < fromDateTime.toTime_t()) { toDateTime.addDays(1); journeydate.addDays(1); } item->setDepartureStation(regexp2.cap(4).trimmed()); item->setArrivalStation(regexp2.cap(7).trimmed()); item->setTrain(regexp2.cap(1).trimmed()); item->setInfo(regexp2.cap(8).trimmed()); item->setDepartureDateTime(fromDateTime); item->setArrivalDateTime(toDateTime); results->appendItem(item); } if (regexp.cap(1) == "Walk to ") { //qDebug()<<"Walking: "<<regexp.cap(2).trimmed(); QRegExp regexp2 = QRegExp("(.*) - (.+) (.*)$"); regexp2.setMinimal(true); regexp2.indexIn(regexp.cap(2).trimmed()); /* qDebug()<<"***"; qDebug()<<"Station1:"<<regexp2.cap(1).trimmed(); qDebug()<<"WalkDist1:"<<regexp2.cap(2).trimmed(); qDebug()<<"WalkDist2:"<<regexp2.cap(3).trimmed(); */ item->setDepartureStation(""); if (results->itemcount() > 0) { JourneyDetailResultItem *lastitem = results->getItem(results->itemcount() - 1); item->setDepartureStation(lastitem->arrivalStation()); item->setDepartureDateTime(lastitem->arrivalDateTime()); item->setArrivalDateTime(lastitem->arrivalDateTime()); } item->setArrivalStation(regexp2.cap(1).trimmed()); // TODO: Might need translation item->setInfo("Walking " + regexp2.cap(2).trimmed() + " " + regexp2.cap(3).trimmed()); //Don't add WalkTo infos as first item if (results->itemcount() > 0) { results->appendItem(item); } } } results->setDuration(journeyitem->duration()); if (results->itemcount() > 0) { JourneyDetailResultItem *lastitem = results->getItem(results->itemcount() - 1); JourneyDetailResultItem *firstitem = results->getItem(0); results->setDepartureStation(firstitem->departureStation()); results->setArrivalStation(lastitem->arrivalStation()); for (int i=0; i < results->itemcount(); i++) { if (!results->getItem(i)->departureDateTime().isNull()) { results->setDepartureDateTime(results->getItem(i)->departureDateTime()); break; } } for (int i=results->itemcount() -1; i >= 0; i--) { if (!results->getItem(i)->arrivalDateTime().isNull()) { results->setArrivalDateTime(results->getItem(i)->arrivalDateTime()); break; } } } return results; }
void CalendarThreadWrapper::addToCalendar() { #if defined(MEEGO_EDITION_HARMATTAN) || defined(Q_WS_MAEMO_5) || defined(Q_OS_SYMBIAN) QString desc; const QString viaStation = m_result->viaStation(); if (viaStation.isEmpty()) desc.append(tr("%1 to %2").arg(m_result->departureStation()).arg(m_result->arrivalStation()) + "\n"); else desc.append(tr("%1 via %3 to %2").arg(m_result->departureStation()).arg(m_result->arrivalStation()).arg(viaStation) + "\n"); if (!m_result->info().isEmpty()) { desc.append(m_result->info() + "\n"); } for (int i=0; i < m_result->itemcount(); i++) { JourneyDetailResultItem *item = m_result->getItem(i); if (!item->train().isEmpty()) { desc.append(item->train() + "\n"); } desc.append(item->departureDateTime().date().toString() + " " + item->departureDateTime().time().toString("HH:mm") + " " + item->departureStation()); if (!item->departureInfo().isEmpty()) { desc.append(" - " + item->departureInfo()); } desc.append("\n"); desc.append(item->arrivalDateTime().date().toString() + " " + item->arrivalDateTime().time().toString("HH:mm") + " " + item->arrivalStation()); if (!item->arrivalInfo().isEmpty()) { desc.append(" - " + item->arrivalInfo()); } desc.append("\n"); if (!item->info().isEmpty()) { desc.append(item->info() + "\n"); } desc.append("--\n"); } desc.append(tr("\n(added by fahrplan app, please recheck informations before travel.)")); QOrganizerManager defaultManager; QOrganizerEvent event; if (viaStation.isEmpty()) event.setDisplayLabel(tr("Journey: %1 to %2").arg(m_result->departureStation()).arg(m_result->arrivalStation())); else event.setDisplayLabel(tr("Journey: %1 via %3 to %2").arg(m_result->departureStation()).arg(m_result->arrivalStation()).arg(viaStation)); event.setDescription(desc); event.setStartDateTime(m_result->departureDateTime()); event.setEndDateTime(m_result->arrivalDateTime()); emit addCalendarEntryComplete(defaultManager.saveItem(&event)); #else emit addCalendarEntryComplete(false); #endif QThread::currentThread()->exit(0); // Move back to GUI thread so the deleteLater() callback works (it requires // an event loop which is still alive) moveToThread(QCoreApplication::instance()->thread()); }