void LogviewDialog::refreshUI() { ui->treeWidget->clear(); std::vector<logFileFormat> logFileData; if (!parseLogFile(logFileData, (char*)Paths::getLogPath().c_str())) { QStringList itemData; itemData << "Now" << "CRITICAL" << "Error parsing log file."; ui->treeWidget->insertTopLevelItem(0, new QTreeWidgetItem(itemData)); } else { /* Reverse elements so they are in proper order */ std::reverse(logFileData.begin(), logFileData.end()); for (std::vector<logFileFormat>::iterator it = logFileData.begin(); it != logFileData.end(); it++) { QStringList itemData; itemData << it->date.c_str() << it->urgency.c_str() << it->info.c_str(); QTreeWidgetItem *widgetItem = new QTreeWidgetItem(itemData); ui->treeWidget->insertTopLevelItem(0, widgetItem); } } for (int i = 0; i < 3; i++) //Clean formatting up ui->treeWidget->resizeColumnToContents(i); }
void LogviewDialog::refreshUI() { ui->treeWidget->clear(); std::vector<logFileFormat> logFileData; parseLogFile(logFileData, (char*)Paths::getLogPath().c_str()); /* Reverse elements so they are in proper order */ std::reverse(logFileData.begin(), logFileData.end()); for (std::vector<logFileFormat>::iterator it = logFileData.begin(); it != logFileData.end(); it++) { QStringList itemData; itemData << it->date.c_str() << it->urgency.c_str() << it->info.c_str(); QTreeWidgetItem *widgetItem = new QTreeWidgetItem(itemData); ui->treeWidget->insertTopLevelItem(0, widgetItem); } ui->treeWidget->resizeColumnToContents(1); //Clean things up... }
int main() { /* const char *macs[4] = { "00-21-29-96-31-e7", "00-25-9c-57-de-a2", "00-21-91-51-58-6d", "00-17-9a-02-4e-05" }; */ std::string file("../pics/IMG_0024.JPG.log"); std::string imageName("IMG_0024.JPG"); LogFileResult result = parseLogFile(file, imageName); std::cout << "result found " << result.image_found << " at " << result.image_time << std::endl; std::cout << result.aps.size() << " aps." << std::endl; for (int i = 0; i < result.aps.size(); i++) { AccessPoint point = result.aps[i]; std::cout << "ap " << point.mac_address << " with signal " << point.signal << " at " << point.time << std::endl; } GeoLocateResult gresult = geolocate_locate(result.aps); std::cout << "lat " << gresult.lat << " lon " << gresult.lon << " accuracy " << gresult.accuracy << " succeeded " << gresult.success << std::endl; std::string imgFile("photo.jpg"); dumpAllExif(imgFile); ExifGPS gps = readGPS(imgFile); std::cout << "gps lat " << gps.lat << " gps lon " << gps.lon << std::endl; std::string tmpFile("test.jpg"); writeGPS(tmpFile, gps); dumpAllExif(tmpFile); return 0; }
/** * @brief KmlExport::exportToKML Triggers logfile export to KML. */ bool KmlExport::exportToKML() { bool ret = open(); if (!ret) { qDebug () << "Logfile failed to open during KML export"; return false; } // Parses logfile and generates KML document ret = preparseLogFile(); if (!ret) { qDebug () << "Logfile preparsing failed"; return false; } // Call parser. parseLogFile(); // Add track to <Document> document->add_feature(trackFolder); // Add timespans to <Document> document->add_feature(timestampFolder); // Add ground track to <Document> { LineStringPtr linestring = factory->CreateLineString(); linestring->set_extrude(false); // Do not extrude to ground linestring->set_altitudemode(kmldom::ALTITUDEMODE_CLAMPTOGROUND); linestring->set_coordinates(wallAxes[0]); MultiGeometryPtr multiGeometry = factory->CreateMultiGeometry(); multiGeometry->add_geometry(linestring); PlacemarkPtr placemark = factory->CreatePlacemark(); placemark->set_geometry(multiGeometry); placemark->set_styleurl("#ts_2_tb"); placemark->set_name("Ground track"); document->add_feature(placemark); } // Add wall axes to <Document> FolderPtr folder = factory->CreateFolder(); for (int i=0; i<numberOfWallAxes; i++) { LineStringPtr linestring = factory->CreateLineString(); linestring->set_extrude(false); // Do not extrude to ground linestring->set_altitudemode(kmldom::ALTITUDEMODE_ABSOLUTE); linestring->set_coordinates(wallAxes[i]); MultiGeometryPtr multiGeometry = factory->CreateMultiGeometry(); multiGeometry->add_geometry(linestring); PlacemarkPtr placemark = factory->CreatePlacemark(); placemark->set_geometry(multiGeometry); placemark->set_styleurl("#ts_1_tb"); folder->add_feature(placemark); folder->set_name("Wall axes"); } document->add_feature(folder); // Create <kml> and give it <Document>. KmlPtr kml = factory->CreateKml(); kml->set_feature(document); // kml takes ownership. // Serialize to XML std::string kml_data = kmldom::SerializePretty(kml); // Save to file if (QFileInfo(outputFileName).suffix().toLower() == "kmz") { if (!kmlengine::KmzFile::WriteKmz(outputFileName.toStdString().c_str(), kml_data)) { qDebug() << "KMZ write failed: " << outputFileName; QMessageBox::critical(new QWidget(),"KMZ write failed", "Failed to write KMZ file."); return false; } } else if (QFileInfo(outputFileName).suffix().toLower() == "kml") { if (!kmlbase::File::WriteStringToFile(kml_data, outputFileName.toStdString())) { qDebug() << "KML write failed: " << outputFileName; QMessageBox::critical(new QWidget(),"KML write failed", "Failed to write KML file."); return false; } } else { qDebug() << "Write failed. Invalid file name:" << outputFileName; QMessageBox::critical(new QWidget(),"Write failed", "Failed to write file. Invalid filename"); return false; } return true; }