#include "cernaehrungplugin.h" #include #include #include #include #include #include typedef struct tagVALUES { QString szSearch; cIngredient::iIngredient iIngredient; qreal dValue; } VALUES; VALUES g_values[] = { { "Broteinheiten", cIngredient::iIngredientBreadUnits, -1 }, { "Kilokalorien", cIngredient::iIngredientCalories, -1 }, { "Eiweiß", cIngredient::iIngredientProtein, -1 }, { "Fett", cIngredient::iIngredientFat, -1 }, { "Kohlenhydrate", cIngredient::iIngredientCarbohydrates, -1 }, { "Alkohol", cIngredient::iIngredientAlcohol, -1 }, { "Wasser", cIngredient::iIngredientWater, -1 }, { "Ballaststoffe gesamt", cIngredient::iIngredientTotalDietaryFibre, -1 }, { "Cholesterin", cIngredient::iIngredientCholesterol, -1 }, { "Mineralstoffe", cIngredient::iIngredientMineral, -1 }, { "Vitamin A Retinol", cIngredient::iIngredientVitaminARetinol, -1 }, { "Vitamin D", cIngredient::iIngredientVitaminD, -1 }, { "Vitamin E Aktiv.", cIngredient::iIngredientVitaminEactiv, -1 }, { "Folsäure", cIngredient::iIngredientFolicacid, -1 }, { "Vitamin B1", cIngredient::iIngredientVitaminB1, -1 }, { "Vitamin B2", cIngredient::iIngredientVitaminB2, -1 }, { "Vitamin B6", cIngredient::iIngredientVitaminB6, -1 }, { "Vitamin C", cIngredient::iIngredientVitaminC, -1 }, { "a-Tocopherol", cIngredient::iIngredientaTocopherol, -1 }, { "Vitamin K", cIngredient::iIngredientVitaminK, -1 }, { "Nicotinamid", cIngredient::iIngredientNicotinamide, -1 }, { "Pantothensäure", cIngredient::iIngredientPantothenicacid, -1 }, { "Biotin", cIngredient::iIngredientBiotin, -1 }, { "Vitamin B12", cIngredient::iIngredientVitaminB12, -1 }, { "Retinoläquivalent", cIngredient::iIngredientRetinolequivalent, -1 }, { "ß-Carotin", cIngredient::iIngredientbCarotene, -1 }, { "Niacinäquivalent", cIngredient::iIngredientNiacinequivalent, -1 }, { "freies Folsäureäquivalent", cIngredient::iIngredientfreefolicacidequivalent, -1 }, { "freie Folsäure", cIngredient::iIngredientfreefolicacid, -1 }, { "Natrium", cIngredient::iIngredientSodium, -1 }, { "Kalium", cIngredient::iIngredientPotassium, -1 }, { "Magnesium", cIngredient::iIngredientMagnesium, -1 }, { "Calcium", cIngredient::iIngredientCalcium, -1 }, { "Eisen", cIngredient::iIngredientIron, -1 }, { "Phosphor", cIngredient::iIngredientPhosphorus, -1 }, { "Kupfer", cIngredient::iIngredientCopper, -1 }, { "Zink", cIngredient::iIngredientZinc, -1 }, { "Chlorid", cIngredient::iIngredientChloride, -1 }, { "Fluorid", cIngredient::iIngredientFluoride, -1 }, { "Jodid", cIngredient::iIngredientIodide, -1 }, { "Selen", cIngredient::iIngredientSelenium, -1 }, { "Mangan", cIngredient::iIngredientManganese, -1 }, { "Schwefel", cIngredient::iIngredientSulphur, -1 }, { "Arginin", cIngredient::iIngredientArginine, -1 }, { "Cystin", cIngredient::iIngredientCystine, -1 }, { "Histidin", cIngredient::iIngredientHistidine, -1 }, { "Isoleucin", cIngredient::iIngredientIsoleucine, -1 }, { "Leucin", cIngredient::iIngredientLeucine, -1 }, { "Lysin", cIngredient::iIngredientLysine, -1 }, { "Methionin", cIngredient::iIngredientMethionine, -1 }, { "Phenylalanin", cIngredient::iIngredientPhenylalanine, -1 }, { "Threonin", cIngredient::iIngredientThreonine, -1 }, { "Tryptophan", cIngredient::iIngredientTryptophane, -1 }, { "Tyrosin", cIngredient::iIngredientTyrosine, -1 }, { "Valin", cIngredient::iIngredientValine, -1 }, { "Alanin", cIngredient::iIngredientAlanine, -1 }, { "Asparaginsäure", cIngredient::iIngredientAsparticacid, -1 }, { "Glutaminsäure", cIngredient::iIngredientGlutamicacid, -1 }, { "Glycin", cIngredient::iIngredientGlycine, -1 }, { "Prolin", cIngredient::iIngredientProline, -1 }, { "Serin", cIngredient::iIngredientSerine, -1 }, { "sonst. essent. Aminosäuren", cIngredient::iIngredientotheressent_aminoacids, -1 }, { "essent. Aminosäuren", cIngredient::iIngredientessent_aminoacids, -1 }, { "sonst. n. essent. Aminosäuren", cIngredient::iIngredientothernonessent_aminoacids, -1 }, { "n. essent. Aminosäuren", cIngredient::iIngredientnonessent_aminoacids, -1 }, { "Ges. Fettsäuren", cIngredient::iIngredientSaturatedfattyacids, -1 }, { "einfach unges. Fettsäuren", cIngredient::iIngredientMonounsaturatedfattyacids, -1 }, { "mehrf. unges. Fettsäuren", cIngredient::iIngredientPolyunsaturatedfattyacids, -1 }, { "Buttersäure", cIngredient::iIngredientButyricacid, -1 }, { "Capronsäure", cIngredient::iIngredientCaproicacid, -1 }, { "Caprylsäure", cIngredient::iIngredientCaprylicacid, -1 }, { "Caprinsäure", cIngredient::iIngredientCapricacid, -1 }, { "Laurinsäure", cIngredient::iIngredientLauricacid, -1 }, { "Myristinsäure", cIngredient::iIngredientMyristicacid, -1 }, { "C15:O Fettsäure", cIngredient::iIngredientC15_O_fattyacid, -1 }, { "Palmitinsäure", cIngredient::iIngredientPalmiticacid, -1 }, { "Margarinsäure", cIngredient::iIngredientMargaricacid, -1 }, { "Stearinsäure", cIngredient::iIngredientStearicacid, -1 }, { "Arachinsäure", cIngredient::iIngredientArachicacid, -1 }, { "Behensäure", cIngredient::iIngredientBehenicacid, -1 }, { "Lignocerinsäure", cIngredient::iIngredientLignocericacid, -1 }, { "Palmitoleinsäure", cIngredient::iIngredientPalmitoleicacid, -1 }, { "Ölsäure", cIngredient::iIngredientOleicacid, -1 }, { "Eicosensäure", cIngredient::iIngredientEicosenicacid, -1 }, { "C22:1 Fettsäure", cIngredient::iIngredientC22_1_fattyacid, -1 }, { "C14:1 Fettsäure", cIngredient::iIngredientC14_1_fattyacid, -1 }, { "C24:1 Fettsäure", cIngredient::iIngredientC24_1_fattyacid, -1 }, { "Linolsäure", cIngredient::iIngredientLinoleicacid, -1 }, { "Linolensäure", cIngredient::iIngredientLinolenicacid, -1 }, { "Arachidonsäure", cIngredient::iIngredientArachidonicacid, -1 }, { "C18:4 Fettsäure", cIngredient::iIngredientC18_4_fattyacid, -1 }, { "C20:5 N-3 Fettsäure", cIngredient::iIngredientC20_5_N_3fattyacid, -1 }, { "C22:5 N-3 Fettsäure", cIngredient::iIngredientC22_5_N_3fattyacid, -1 }, { "C22:6 N-3 Fettsäure", cIngredient::iIngredientC22_6_N_3fattyacid, -1 }, { "C16:2 Fettsäure", cIngredient::iIngredientC16_2_fattyacid, -1 }, { "sonst. gesättigte Fettsäuren", cIngredient::iIngredientothersaturatedfattyacids, -1 }, { "sonst. einfach unges. Fettsäuren", cIngredient::iIngredientothermonounsaturatedfattyacids, -1 }, { "Nonadecatriensäure", cIngredient::iIngredientNonadecatrienicacid, -1 }, { "Eicosadiensäure", cIngredient::iIngredientEicosadienicacid, -1 }, { "Eicosatriensäure", cIngredient::iIngredientEicosatrienicacid, -1 }, { "Docosadiensäure", cIngredient::iIngredientDocosadienicacid, -1 }, { "Docosatriensäure", cIngredient::iIngredientDocosatrienicacid, -1 }, { "Docosatetraensäure", cIngredient::iIngredientDocosatetraenicacid, -1 }, { "sonst. mehrfach unges. Fettsäuren", cIngredient::iIngredientotherpolyunsat_fattyacids, -1 }, { "sonst. kurzkettige Fettsäuren", cIngredient::iIngredientothershort_chainfattyacids, -1 }, { "kurzkettige Fettsäuren", cIngredient::iIngredientshort_chainfattyacids, -1 }, { "sonst. mittelkettige Fettsäuren", cIngredient::iIngredientothermedium_chainfattyacids, -1 }, { "mittelkettige Fettsäuren", cIngredient::iIngredientmedium_chainfattyacids, -1 }, { "sonst. langkettige Fettsäuren", cIngredient::iIngredientotherlong_chainfattyacids, -1 }, { "langkettige Fettsäuren", cIngredient::iIngredientlong_chainfattyacids, -1 }, { "Glycerin + Lipoide", cIngredient::iIngredientGlycerolandLipoides, -1 }, { "Sorbit", cIngredient::iIngredientSorbitol, -1 }, { "Glucose", cIngredient::iIngredientGlucose, -1 }, { "Fructose", cIngredient::iIngredientFructose, -1 }, { "Saccharose", cIngredient::iIngredientSucrose, -1 }, { "Lactose", cIngredient::iIngredientLactose, -1 }, { "Stärke", cIngredient::iIngredientStarch, -1 }, { "Maltose", cIngredient::iIngredientMaltose, -1 }, { "Galactose", cIngredient::iIngredientGalactose, -1 }, { "Glycogen", cIngredient::iIngredientGlycogene, -1 }, { "Pentosan", cIngredient::iIngredientPentosan, -1 }, { "Hexosan", cIngredient::iIngredientHexosan, -1 }, { "Cellulose", cIngredient::iIngredientCellulose, -1 }, { "Polyuronsäure", cIngredient::iIngredientPolyuronicacid, -1 }, { "Mannit", cIngredient::iIngredientMannitol, -1 }, { "Xylit", cIngredient::iIngredientXylitol, -1 }, { "sonst. Zuckeralkohole", cIngredient::iIngredientothersugaralcohols, -1 }, { "Summe Zuckeralkohole", cIngredient::iIngredientTotalsugaralcohols, -1 }, { "sonst. Monosaccharide", cIngredient::iIngredientothermonosaccharides, -1 }, { "Monosaccharide", cIngredient::iIngredientMonosaccharides, -1 }, { "sonst. Disaccharide", cIngredient::iIngredientotherdisaccharides, -1 }, { "Disaccharide", cIngredient::iIngredientDisaccharides, -1 }, { "Oligosaccharide resorb.", cIngredient::iIngredientOligosaccharidesresorb, -1 }, { "Oligosaccharide n. resorb.", cIngredient::iIngredientOligosaccharidesnonresorb, -1 }, { "sonst. Polysaccharide", cIngredient::iIngredientotherpolysaccharides, -1 }, { "Polysaccharide", cIngredient::iIngredientPolysaccharides, -1 }, { "Ballaststoffe wasserl.", cIngredient::iIngredientDietaryfibrewatersoluble, -1 }, { "Ballaststoffe w.unlösl.", cIngredient::iIngredientDietaryfibrewaterinsoluble, -1 }, { "Lignin", cIngredient::iIngredientLignin, -1 }, { "Purinbasen-Stickstoff", cIngredient::iIngredientPurinebasesnitrogen, -1 }, { "Kochsalz", cIngredient::iIngredientSodiumchloride, -1 }, { "Küchenabfälle", cIngredient::iIngredientWaste, -1 }, { "sonst. Eiweißstoffe", cIngredient::iIngredientotherproteins, -1 }, { "tierisches Eiweiß", cIngredient::iIngredientanimalprotein, -1 }, { "pflanzliches Eiweiß", cIngredient::iIngredientplantprotein, -1 }, { "Harnsäure", cIngredient::iIngredientUricacid, -1 }, { "sonst. organischen Säuren", cIngredient::iIngredientotherorganicacids, -1 }, { "Mol-Diff. Kationen-Anionen", cIngredient::iIngredientMol_diff_cations_anions, -1 }, { "Stickstoffaktor", cIngredient::iIngredientNitrogenfactor, -1 }, { "Fettsäurenanteil", cIngredient::iIngredientFattyacidpart, -1 }, { "Mineralstoffanteil", cIngredient::iIngredientMineralspart, -1 }, { "P/S Verhältnis", cIngredient::iIngredientPS_Ratio, -1 }, { "Biolog. Wertigkeit", cIngredient::iIngredientBiologicalvalue, -1 }, { "fruktosefreie Broteinheiten", cIngredient::iIngredientFructosefreebreadunits, -1 }, { "durchschn. Verzehr", cIngredient::iIngredientaverageconsumption, -1 }, }; QMap cErnaehrungPlugin::detailsCapability() { QMap map; map.insert("alle", "egal"); map.insert("Bundeslebensmittelschlüssel", "bls"); map.insert("Firmenprodukte", "produkte"); return(map); } //http://www.ernaehrung.de/lebensmittel/suche/&nameInput=Milch&origin=egal&language=de //Origin: egal, bls (Bundeslebensmittelschlüssel), produkte (Firmenprodukte) QStringList cErnaehrungPlugin::search(const QString& szSearch, const QString& szDetails) { m_szUrls.clear(); m_szIngredients.clear(); QNetworkAccessManager networkManager; QUrlQuery postData; postData.addQueryItem("nameInput", szSearch); if(szDetails.length()) postData.addQueryItem("origin", szDetails); else postData.addQueryItem("origin", "egal"); postData.addQueryItem("language", "de"); QNetworkRequest request(QUrl("http://www.ernaehrung.de/lebensmittel/suche/")); request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded"); QNetworkReply* reply = networkManager.post(request, postData.toString(QUrl::FullyEncoded).toUtf8()); QEventLoop loop; QObject::connect(reply, SIGNAL(finished()), &loop, SLOT(quit())); loop.exec(); QByteArray szData = reply->readAll(); delete reply; QList szList = szData.split('\n'); int z; for(z = 0;z < szList.count();z++) { QString szLine = QString::fromUtf8(szList.at(z)); if(szLine.contains("Suchergebnisse")) break; } for(;z < szList.count();z++) { QString szLine = QString::fromUtf8(szList.at(z)); if(szLine.contains("")+2); szReply = szReply.left(szReply.indexOf("<")); m_szIngredients.append(szReply); m_szUrls.append(szURL); } } return(m_szIngredients); } qreal toValue(const QString& sz) { QString szTmp; szTmp = sz.mid(sz.indexOf("\">")+2); szTmp = szTmp.left(szTmp.indexOf("<")); szTmp.replace(",", "."); return(szTmp.toDouble()); } bool cErnaehrungPlugin::load(qint16 iIndex) { m_bLoaded = false; if(iIndex > m_szUrls.count()-1) return(false); QNetworkAccessManager networkManager; QNetworkRequest request(QUrl(m_szUrls.at(iIndex))); request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded"); QNetworkReply* reply = networkManager.get(request); QEventLoop loop; QObject::connect(reply, SIGNAL(finished()), &loop, SLOT(quit())); loop.exec(); QByteArray szData = reply->readAll(); delete reply; QList szList; QString szName; qreal dFactor; for(int i = 0;i < (int)sizeof(g_values)/(int)sizeof(VALUES);i++) g_values[i].dValue = -1; if(szData.length()) { szList = szData.split('\n'); for(int z = 0;z < szList.count();z++) { if(szList.at(z).contains("

")) { szName = szList.at(z).mid(szList.at(z).indexOf("

")+4); szName = szName.left(szName.indexOf("

")); } else { //QString szL0 = QString::fromUtf8(szList.at(z)); QString szL0 = szList.at(z); for(int i = 0;i < (int)sizeof(g_values)/(int)sizeof(VALUES);i++) { //QString szL1 = g_values[i].szSearch; //bool x = szL0.contains(szL1); //x = false; if(szL0.contains(g_values[i].szSearch)) { dFactor = 1; QString szL1 = QString::fromUtf8(szList.at(z+1)); QString szL2 = QString::fromUtf8(szList.at(z+2)); if(szL2.contains(">g<")) dFactor = 1; else if(szL2.contains(">mg<")) dFactor = 1000; else if(szL2.contains(QString::fromUtf8(">µg<"))) dFactor = 1000000; g_values[i].dValue = toValue(szL1)/dFactor; break; } } } } } m_bLoaded = true; m_iLoadedIndex = iIndex; return(true); } qreal cErnaehrungPlugin::value(cIngredient::iIngredient i) { if(m_bLoaded) { for(int z = 0;z < (int)sizeof(g_values)/(int)sizeof(VALUES);z++) { if(g_values[z].iIngredient == i) return(g_values[z].dValue); } } return(-1); } QString cErnaehrungPlugin::ingredientName() { if(m_bLoaded) return(m_szIngredients.at(m_iLoadedIndex)); else return(QString("")); } bool cErnaehrungPlugin::config() { return(true); } QString cErnaehrungPlugin::author() { return("Herwig Birke"); } QString cErnaehrungPlugin::company() { return("WIN-DESIGN"); } QString cErnaehrungPlugin::link() { return("http://www.windesign.at"); } QString cErnaehrungPlugin::description() { return("This is the description."); } QString cErnaehrungPlugin::copyright() { return("This is the copyright."); }