From bb80f4b2967b6883ec8102c180386e181d0b7104 Mon Sep 17 00:00:00 2001 From: Mark Watkins Date: Mon, 11 Jul 2011 03:49:02 +1000 Subject: [PATCH] Hide some unused graphs --- SleepLib/loader_plugins/resmed_loader.cpp | 6 ++- daily.cpp | 52 ++++++++++++++++------ daily.h | 2 +- docs/PRS1 Data Format.odt | Bin 14606 -> 14597 bytes 4 files changed, 44 insertions(+), 16 deletions(-) diff --git a/SleepLib/loader_plugins/resmed_loader.cpp b/SleepLib/loader_plugins/resmed_loader.cpp index 03e14ff1..1e1a0489 100644 --- a/SleepLib/loader_plugins/resmed_loader.cpp +++ b/SleepLib/loader_plugins/resmed_loader.cpp @@ -490,8 +490,10 @@ bool ResmedLoader::LoadBRP(Session *sess,EDFParser &edf) long recs=edf.edfsignals[s]->nr*edf.GetNumDataRecords(); MachineCode code; if (edf.edfsignals[s]->label=="Flow") code=CPAP_FlowRate; - else if (edf.edfsignals[s]->label=="Mask Pres") code=CPAP_MaskPressure; - else { + else if (edf.edfsignals[s]->label=="Mask Pres") { + code=CPAP_MaskPressure; + // for (int i=0;idata[i]/=50.0; + } else { qDebug() << "Unknown Signal " << edf.edfsignals[s]->label; continue; } diff --git a/daily.cpp b/daily.cpp index e9c17b63..9e03972d 100644 --- a/daily.cpp +++ b/daily.cpp @@ -116,8 +116,16 @@ Daily::Daily(QWidget *parent,QGLContext *context) : LEAK->setMinimumHeight(150); + AddCPAPData(mpw=new WaveData(CPAP_MaskPressure,1000000)); //FlowRate + MP=new gGraphWindow(gSplitter,tr("Mask Pressure"),SF); + MP->AddLayer(new gYAxis()); + MP->AddLayer(new gXAxis()); + gLineChart *g=new gLineChart(mpw,Qt::black,4000,true); + g->ReportEmpty(true); + MP->AddLayer(g); + + AddCPAPData(frw=new WaveData(CPAP_FlowRate,1000000)); //FlowRate - //AddCPAPData(mpw=new WaveData(CPAP_MaskPressure,700000)); //FlowRate // Holy crap resmed stuff is huge.. FRW=new gGraphWindow(gSplitter,tr("Flow Rate"),SF); //FRW->AddLayer(new gFooBar()); @@ -125,7 +133,7 @@ Daily::Daily(QWidget *parent,QGLContext *context) : FRW->AddLayer(new gXAxis()); FRW->AddLayer(new gLineOverlayBar(flags[0],QColor("light green"),"CSR")); // FRW->AddLayer(new gLineChart(mpw,Qt::blue,700000,true)); - gLineChart *g=new gLineChart(frw,Qt::black,4000,true); + g=new gLineChart(frw,Qt::black,4000,true); g->ReportEmpty(true); FRW->AddLayer(g); FRW->AddLayer(new gLineOverlayBar(flags[3],QColor("blue"),"H")); @@ -255,6 +263,7 @@ Daily::Daily(QWidget *parent,QGLContext *context) : TAP_EAP->hide(); FRW->LinkZoom(SF); + FRW->LinkZoom(MP); FRW->LinkZoom(PRD); FRW->LinkZoom(LEAK); FRW->LinkZoom(SNORE); @@ -263,6 +272,7 @@ Daily::Daily(QWidget *parent,QGLContext *context) : FRW->LinkZoom(RR); FRW->LinkZoom(FLG); SF->LinkZoom(FRW); + SF->LinkZoom(MP); SF->LinkZoom(PRD); SF->LinkZoom(LEAK); SF->LinkZoom(SNORE); @@ -272,6 +282,7 @@ Daily::Daily(QWidget *parent,QGLContext *context) : SF->LinkZoom(FLG); PRD->LinkZoom(SF); PRD->LinkZoom(FRW); + PRD->LinkZoom(MP); PRD->LinkZoom(LEAK); PRD->LinkZoom(SNORE); PRD->LinkZoom(MV); @@ -282,6 +293,7 @@ Daily::Daily(QWidget *parent,QGLContext *context) : LEAK->LinkZoom(SF); LEAK->LinkZoom(FRW); LEAK->LinkZoom(PRD); + LEAK->LinkZoom(MP); LEAK->LinkZoom(SNORE); LEAK->LinkZoom(MV); LEAK->LinkZoom(TV); @@ -290,6 +302,7 @@ Daily::Daily(QWidget *parent,QGLContext *context) : SNORE->LinkZoom(SF); SNORE->LinkZoom(FRW); + SNORE->LinkZoom(MP); SNORE->LinkZoom(PRD); SNORE->LinkZoom(LEAK); SNORE->LinkZoom(MV); @@ -299,6 +312,7 @@ Daily::Daily(QWidget *parent,QGLContext *context) : MV->LinkZoom(SF); MV->LinkZoom(FRW); + MV->LinkZoom(MP); MV->LinkZoom(PRD); MV->LinkZoom(LEAK); MV->LinkZoom(SNORE); @@ -308,6 +322,7 @@ Daily::Daily(QWidget *parent,QGLContext *context) : TV->LinkZoom(SF); TV->LinkZoom(FRW); + TV->LinkZoom(MP); TV->LinkZoom(PRD); TV->LinkZoom(LEAK); TV->LinkZoom(SNORE); @@ -318,6 +333,7 @@ Daily::Daily(QWidget *parent,QGLContext *context) : RR->LinkZoom(SF); RR->LinkZoom(FRW); RR->LinkZoom(PRD); + RR->LinkZoom(MP); RR->LinkZoom(LEAK); RR->LinkZoom(SNORE); RR->LinkZoom(MV); @@ -326,6 +342,7 @@ Daily::Daily(QWidget *parent,QGLContext *context) : FLG->LinkZoom(SF); FLG->LinkZoom(FRW); + FLG->LinkZoom(MP); FLG->LinkZoom(PRD); FLG->LinkZoom(LEAK); FLG->LinkZoom(SNORE); @@ -333,10 +350,21 @@ Daily::Daily(QWidget *parent,QGLContext *context) : FLG->LinkZoom(TV); FLG->LinkZoom(RR); + MP->LinkZoom(SF); + MP->LinkZoom(FRW); + MP->LinkZoom(FLG); + MP->LinkZoom(PRD); + MP->LinkZoom(LEAK); + MP->LinkZoom(SNORE); + MP->LinkZoom(MV); + MP->LinkZoom(TV); + MP->LinkZoom(RR); + gSplitter->addWidget(NoData); AddGraph(SF); AddGraph(FRW); + AddGraph(MP); AddGraph(MV); AddGraph(TV); AddGraph(RR); @@ -646,6 +674,9 @@ void Daily::Load(QDate date) LEAK->show(); SF->show(); SNORE->show(); + MP->show(); + + } else { html+=""+tr("No CPAP data available")+""; html+=" \n"; @@ -658,21 +689,16 @@ void Daily::Load(QDate date) LEAK->hide(); SF->hide(); SNORE->hide(); + MP->hide(); } // Instead of doing this, check whether any data exists.. // and show based on this factor. - if (cpap && (cpap->machine->GetClass()=="ResMed")) { - //MV->show(); - //TV->show(); - //RR->show(); - FLG->show(); - } else { - //MV->hide(); - //TV->hide(); - //RR->hide(); - FLG->hide(); - } + //cpap && cpap->count(CPAP_MinuteVentilation)>0 ? MV->show() : MV->hide(); + cpap && cpap->count(CPAP_MinuteVentilation)>0 ? MV->show() : MV->hide(); + cpap && cpap->count(CPAP_TidalVolume)>0 ? TV->show() : TV->hide(); + cpap && cpap->count(CPAP_RespiratoryRate)>0 ? RR->show() : RR->hide(); + cpap && cpap->count(CPAP_FlowLimitGraph)>0 ? FLG->show() : FLG->hide(); if (oxi) { html+=""+tr("Pulse:"); diff --git a/daily.h b/daily.h index c7b4fcd4..43291516 100644 --- a/daily.h +++ b/daily.h @@ -60,7 +60,7 @@ private: gPointData *tap,*tap_eap,*tap_iap,*g_ahi,*frw,*prd,*leakdata,*pressure_iap,*pressure_eap,*snore; gPointData *pulse,*spo2,*rr,*mv,*tv,*mpw,*flg; - gGraphWindow *PRD,*FRW,*G_AHI,*TAP,*LEAK,*SF,*TAP_EAP,*TAP_IAP,*PULSE,*SPO2,*SNORE,*RR,*MV,*TV,*FLG; + gGraphWindow *PRD,*FRW,*G_AHI,*TAP,*LEAK,*SF,*TAP_EAP,*TAP_IAP,*PULSE,*SPO2,*SNORE,*RR,*MP,*MV,*TV,*FLG; list OXIData; list CPAPData; diff --git a/docs/PRS1 Data Format.odt b/docs/PRS1 Data Format.odt index 64eae6bb8aaa916503265249c3ee7894adbc041c..4608054c2f370c13a9f980ca91796f6a7beff96e 100644 GIT binary patch delta 9225 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 P7NF|_jEE4PzpVcQxCk}f delta 9209 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 YA(QvtU|M;JAa@g%cxmCn{^hj)2ikjKl>h($