Some C++11 cleanups to importers, preparing for autoscanner/import wizard

This commit is contained in:
Mark Watkins 2014-04-26 19:54:08 +10:00
parent e8fe6c7af0
commit 38d7aeb3fb
21 changed files with 1933 additions and 1341 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -954,18 +954,19 @@ void gGraphView::updateScale()
void gGraphView::updateScrollBar() void gGraphView::updateScrollBar()
{ {
if (!m_scrollbar) { return; } if (!m_scrollbar || (m_graphs.size() == 0)) {
return;
if (!m_graphs.size()) { return; } }
float th = scaleHeight(); // height of all graphs float th = scaleHeight(); // height of all graphs
float h = height(); // height of main widget float h = height(); // height of main widget
float vis = 0; float vis = 0;
for (int i = 0; i < m_graphs.size(); i++) { vis += m_graphs[i]->isEmpty() || (!m_graphs[i]->visible()) ? 0 : 1; } for (int i = 0; i < m_graphs.size(); i++) {
vis += (m_graphs[i]->isEmpty() || !m_graphs[i]->visible()) ? 0 : 1;
}
//vis+=1;
if (th < h) { // less graphs than fits on screen if (th < h) { // less graphs than fits on screen
m_scrollbar->setMaximum(0); // turn scrollbar off. m_scrollbar->setMaximum(0); // turn scrollbar off.
@ -1027,7 +1028,7 @@ void gGraphView::resizeGL(int w, int h)
glLoadIdentity(); glLoadIdentity();
} }
void gGraphView::renderSomethingFun(float alpha) void gGraphView::renderCube(float alpha)
{ {
if (cubeimg.size() == 0) { return; } if (cubeimg.size() == 0) { return; }
@ -1366,55 +1367,51 @@ bool gGraphView::renderGraphs()
//int thr=m_idealthreads; //int thr=m_idealthreads;
#ifdef ENABLED_THREADED_DRAWING #ifdef ENABLED_THREADED_DRAWING
if (threaded) {
for (int i = 0; i < m_idealthreads; i++) {
masterlock->acquire(1);
m_threads[i]->mutex.unlock();
}
for (int i = 0; i < m_idealthreads; i++) { // wait till all the threads are done
masterlock->acquire(1); // ask for all the CPU's back..
m_threads[i]->mutex.unlock(); masterlock->acquire(m_idealthreads);
} masterlock->release(m_idealthreads);
} else {
// wait till all the threads are done
// ask for all the CPU's back..
masterlock->acquire(m_idealthreads);
masterlock->release(m_idealthreads);
}
else // just do it here
{
#endif #endif
s = m_drawlist.size(); s = m_drawlist.size();
for (int i = 0; i < s; i++) { for (int i = 0; i < s; i++) {
gGraph *g = m_drawlist.at(0); gGraph *g = m_drawlist.at(0);
m_drawlist.pop_front(); m_drawlist.pop_front();
g->paint(g->m_rect.x(), g->m_rect.y(), g->m_rect.width(), g->m_rect.height()); g->paint(g->m_rect.x(), g->m_rect.y(), g->m_rect.width(), g->m_rect.height());
} }
#ifdef ENABLED_THREADED_DRAWING #ifdef ENABLED_THREADED_DRAWING
} }
#endif #endif
//int elapsed=time.elapsed(); //int elapsed=time.elapsed();
//QColor col=Qt::black; //QColor col=Qt::black;
backlines->draw(); backlines->draw();
for (int i = 0; i < m_graphs.size(); i++) for (int i = 0; i < m_graphs.size(); i++)
{ {
m_graphs[i]->drawGLBuf(); m_graphs[i]->drawGLBuf();
} }
quads->draw(); quads->draw();
lines->draw(); lines->draw();
// lines->setSize(linesize); // lines->setSize(linesize);
// DrawTextQue(); // DrawTextQue();
//glDisable(GL_TEXTURE_2D); //glDisable(GL_TEXTURE_2D);
//glDisable(GL_DEPTH_TEST); //glDisable(GL_DEPTH_TEST);
return numgraphs > 0; return numgraphs > 0;
} }
void gGraphView::fadeOut() void gGraphView::fadeOut()
{ {
@ -1605,7 +1602,7 @@ void gGraphView::paintGL()
if (!m_inAnimation || (!m_fadingIn)) { if (!m_inAnimation || (!m_fadingIn)) {
// Not in animation sequence, draw graphs like normal // Not in animation sequence, draw graphs like normal
if (bereallyannoying) { if (bereallyannoying) {
renderSomethingFun(0.7F); renderCube(0.7F);
} }
numgraphs = renderGraphs(); numgraphs = renderGraphs();
@ -1617,7 +1614,7 @@ void gGraphView::paintGL()
if (something_fun && this->isVisible()) {// Do something fun instead if (something_fun && this->isVisible()) {// Do something fun instead
if (!bereallyannoying) { if (!bereallyannoying) {
renderSomethingFun(); renderCube();
} }
tp = height() - (y / 2); tp = height() - (y / 2);

View File

@ -374,7 +374,8 @@ class gGraphView : public QGLWidget
//! \brief Add Graph to drawing queue, mainly for the benefit of multithreaded drawing code //! \brief Add Graph to drawing queue, mainly for the benefit of multithreaded drawing code
void queGraph(gGraph *, int originX, int originY, int width, int height); void queGraph(gGraph *, int originX, int originY, int width, int height);
void renderSomethingFun(float alpha = 1); //! \brief Render the annoying spinning graph empty cube
void renderCube(float alpha = 1);
Day *m_day; Day *m_day;

View File

@ -28,6 +28,9 @@ class CMS50Loader : public MachineLoader
CMS50Loader(); CMS50Loader();
virtual ~CMS50Loader(); virtual ~CMS50Loader();
virtual bool Detect(const QString &path) { Q_UNUSED(path); return false; } // bypass autoscanner
virtual int Open(QString &path, Profile *profile); virtual int Open(QString &path, Profile *profile);
static void Register(); static void Register();

View File

@ -899,6 +899,12 @@ Machine *FPIconLoader::CreateMachine(QString serial, Profile *profile)
return m; return m;
} }
bool FPIconLoader::Detect(const QString & path)
{
return false;
}
bool fpicon_initialized = false; bool fpicon_initialized = false;
void FPIconLoader::Register() void FPIconLoader::Register()
{ {

View File

@ -54,6 +54,9 @@ class FPIconLoader : public MachineLoader
FPIconLoader(); FPIconLoader();
virtual ~FPIconLoader(); virtual ~FPIconLoader();
//! \brief Detect if the given path contains a valid Folder structure
virtual bool Detect(const QString & path);
//! \brief Scans path for F&P Icon data signature, and Loads any new data //! \brief Scans path for F&P Icon data signature, and Loads any new data
virtual int Open(QString &path, Profile *profile); virtual int Open(QString &path, Profile *profile);

View File

@ -36,6 +36,11 @@ IntellipapLoader::~IntellipapLoader()
{ {
} }
bool IntellipapLoader::Detect(const QString & path)
{
return false;
}
int IntellipapLoader::Open(QString &path, Profile *profile) int IntellipapLoader::Open(QString &path, Profile *profile)
{ {
// Check for SL directory // Check for SL directory
@ -66,46 +71,48 @@ int IntellipapLoader::Open(QString &path, Profile *profile)
f.open(QFile::ReadOnly); f.open(QFile::ReadOnly);
QTextStream tstream(&f); QTextStream tstream(&f);
QHash<QString, QString> lookup; QHash<QString, QString> lookup = {
lookup["Sn"] = STR_PROP_Serial; {"Sn", STR_PROP_Serial },
lookup["Mn"] = STR_PROP_ModelNumber; {"Mn", STR_PROP_ModelNumber },
lookup["Mo"] = "PAPMode"; // 0=cpap, 1=auto {"Mo", "PAPMode" }, // 0 cpap, 1 auto
//lookup["Pn"]="Pn"; //{"Pn", "??" },
lookup["Pu"] = "MaxPressure"; {"Pu", "MaxPressure" },
lookup["Pl"] = "MinPressure"; {"Pl", "MaxPressure" },
//lookup["Ds"]="Ds"; //{"Ds", "??" },
//lookup["Pc"]="Pc"; //{"Pc", "??" },
lookup["Pd"] = "RampPressure"; // Delay Pressure {"Pd", "RampPressure" }, // Pressure Delay
lookup["Dt"] = "RampTime"; // Delay Time {"Dt", "RampTime" },
//lookup["Ld"]="Ld"; //{"Ld", "??" },
//lookup["Lh"]="Lh"; //{"Lh", "??" },
//lookup["FC"]="FC"; //{"FC", "??" },
//lookup["FE"]="FE"; //{"FE", "??" },
//lookup["FL"]="FL"; //{"FL", "??" },
lookup["A%"] = "ApneaThreshold"; {"A%", "ApneaThreshold" },
lookup["Ad"] = "ApneaDuration"; {"Ad", "ApneaDuration" },
lookup["H%"] = "HypopneaThreshold"; {"H%", "HypopneaThreshold" },
lookup["Hd"] = "HypopneaDuration"; {"Hd", "HypopneaDuration" },
//lookup["Pi"]="Pi"; //080 //{"Pi", "??" },
//lookup["Pe"]="Pe"; //WF //{"Pe", "??" },
lookup["Ri"] = "SmartFlexIRnd"; // Inhale Rounding (0-5) {"Ri", "SmartFlexIRnd" }, // Inhale Rounding (0-5)
lookup["Re"] = "SmartFlexERnd"; // Exhale Rounding (0-5) {"Re", "SmartFlexERnd" }, // Inhale Rounding (0-5)
//lookup["Bu"]="Bu"; //WF //{"Bu", "??" }, // WF
//lookup["Ie"]="Ie"; //20 //{"Ie", "??" }, // 20
//lookup["Se"]="Se"; //05 //{"Se", "??" }, // 05
//lookup["Si"]="Si"; //05 //{"Si", "??" }, // 05
//lookup["Mi"]="Mi"; //0 //{"Mi", "??" }, // 0
lookup["Uh"] = "HoursMeter"; //0000.0 {"Uh", "HoursMeter"}, // 0000.0
lookup["Up"] = "ComplianceMeter"; //0000.0 {"Up", "ComplianceMeter"}, // 0000.00
//lookup["Er"]="ErrorCode"; // E00 //{"Er", "ErrorCode"}, // E00
//lookup["El"]="LastErrorCode"; // E00 00/00/0000 //{"El", "LastErrorCode"}, // E00 00/00/0000
//lookup["Hp"]="Hp"; //1 //{"Hp", "??"}, // 1
//lookup["Hs"]="Hs"; //02 //{"Hs", "??"}, // 02
//lookup["Lu"]="LowUseThreshold"; // defaults to 0 (4 hours) //{"Lu", "LowUseThreshold"}, // defaults to 0 (4 hours)
lookup["Sf"] = "SmartFlex"; {"Sf", "SmartFlex"},
lookup["Sm"] = "SmartFlexMode"; {"Sm", "SmartFlexMode"},
lookup["Ks=s"] = "Ks_s"; {"Ks=s", "Ks_s"},
lookup["Ks=i"] = "Ks_i"; {"Ks=i", "ks_i"}
};
QHash<QString, QString> set1; QHash<QString, QString> set1;
QHash<QString, QString>::iterator hi; QHash<QString, QString>::iterator hi;

View File

@ -51,6 +51,10 @@ class IntellipapLoader : public MachineLoader
public: public:
IntellipapLoader(); IntellipapLoader();
virtual ~IntellipapLoader(); virtual ~IntellipapLoader();
//! \brief Detect if the given path contains a valid Folder structure
virtual bool Detect(const QString & path);
//! \brief Scans path for Intellipap data signature, and Loads any new data //! \brief Scans path for Intellipap data signature, and Loads any new data
virtual int Open(QString &path, Profile *profile); virtual int Open(QString &path, Profile *profile);

View File

@ -47,6 +47,9 @@ class MSeriesLoader : public MachineLoader
MSeriesLoader(); MSeriesLoader();
virtual ~MSeriesLoader(); virtual ~MSeriesLoader();
//! \brief Detect if the given path contains a valid Folder structure
virtual bool Detect(const QString & path) { Q_UNUSED(path); return false; }
//! \brief Opens M-Series block device //! \brief Opens M-Series block device
virtual int Open(QString &file, Profile *profile); virtual int Open(QString &file, Profile *profile);

View File

@ -1795,6 +1795,12 @@ bool PRS1Loader::OpenWaveforms(SessionID sid, QString filename)
return true; return true;
} }
bool PRS1Loader::Detect(const QString & path)
{
return false;
}
void InitModelMap() void InitModelMap()
{ {
ModelMap[0x34] = "RemStar Pro with C-Flex+"; ModelMap[0x34] = "RemStar Pro with C-Flex+";

View File

@ -51,6 +51,10 @@ class PRS1Loader : public MachineLoader
public: public:
PRS1Loader(); PRS1Loader();
virtual ~PRS1Loader(); virtual ~PRS1Loader();
//! \brief Detect if the given path contains a valid Folder structure
virtual bool Detect(const QString & path);
//! \brief Scans directory path for valid PRS1 signature //! \brief Scans directory path for valid PRS1 signature
virtual int Open(QString &path, Profile *profile); virtual int Open(QString &path, Profile *profile);

View File

@ -2367,6 +2367,12 @@ bool ResmedLoader::LoadPLD(Session *sess, EDFParser &edf)
return true; return true;
} }
bool ResmedLoader::Detect(const QString & path)
{
return false;
}
const QString RMS9_STR_Escape = "S9 Escape"; const QString RMS9_STR_Escape = "S9 Escape";
const QString RMS9_STR_EscapeAuto = "S9 Escape Auto"; const QString RMS9_STR_EscapeAuto = "S9 Escape Auto";
const QString RMS9_STR_Elite = "S9 Elite"; const QString RMS9_STR_Elite = "S9 Elite";
@ -2385,40 +2391,40 @@ void ResInitModelMap()
{ {
// Escape Series // Escape Series
RMS9ModelMap[36001] = RMS9ModelMap[36011] = RMS9ModelMap[36021] = RMS9ModelMap[36141] = RMS9ModelMap[36001] = RMS9ModelMap[36011] = RMS9ModelMap[36021] = RMS9ModelMap[36141] =
RMS9ModelMap[36201] = RMS9ModelMap[36221] = RMS9ModelMap[36261] = RMS9ModelMap[36301] = RMS9ModelMap[36201] = RMS9ModelMap[36221] = RMS9ModelMap[36261] = RMS9ModelMap[36301] =
RMS9ModelMap[36361] = RMS9_STR_Escape; RMS9ModelMap[36361] = RMS9_STR_Escape;
// Escape Auto Series // Escape Auto Series
RMS9ModelMap[36002] = RMS9ModelMap[36012] = RMS9ModelMap[36022] = RMS9ModelMap[36302] = RMS9ModelMap[36002] = RMS9ModelMap[36012] = RMS9ModelMap[36022] = RMS9ModelMap[36302] =
RMS9ModelMap[36362] = RMS9_STR_EscapeAuto; RMS9ModelMap[36362] = RMS9_STR_EscapeAuto;
// Elite Series // Elite Series
RMS9ModelMap[36003] = RMS9ModelMap[36013] = RMS9ModelMap[36023] = RMS9ModelMap[36103] = RMS9ModelMap[36003] = RMS9ModelMap[36013] = RMS9ModelMap[36023] = RMS9ModelMap[36103] =
RMS9ModelMap[36113] = RMS9ModelMap[36123] = RMS9ModelMap[36143] = RMS9ModelMap[36203] = RMS9ModelMap[36113] = RMS9ModelMap[36123] = RMS9ModelMap[36143] = RMS9ModelMap[36203] =
RMS9ModelMap[36223] = RMS9ModelMap[36243] = RMS9ModelMap[36263] = RMS9ModelMap[36303] = RMS9ModelMap[36223] = RMS9ModelMap[36243] = RMS9ModelMap[36263] = RMS9ModelMap[36303] =
RMS9ModelMap[36343] = RMS9ModelMap[36363] = RMS9_STR_Elite; RMS9ModelMap[36343] = RMS9ModelMap[36363] = RMS9_STR_Elite;
// AutoSet Series // AutoSet Series
RMS9ModelMap[36005] = RMS9ModelMap[36015] = RMS9ModelMap[36025] = RMS9ModelMap[36105] = RMS9ModelMap[36005] = RMS9ModelMap[36015] = RMS9ModelMap[36025] = RMS9ModelMap[36105] =
RMS9ModelMap[36115] = RMS9ModelMap[36125] = RMS9ModelMap[36145] = RMS9ModelMap[36205] = RMS9ModelMap[36115] = RMS9ModelMap[36125] = RMS9ModelMap[36145] = RMS9ModelMap[36205] =
RMS9ModelMap[36225] = RMS9ModelMap[36245] = RMS9ModelMap[36265] = RMS9ModelMap[36305] = RMS9ModelMap[36225] = RMS9ModelMap[36245] = RMS9ModelMap[36265] = RMS9ModelMap[36305] =
RMS9ModelMap[36325] = RMS9ModelMap[36345] = RMS9ModelMap[36365] = RMS9_STR_AutoSet; RMS9ModelMap[36325] = RMS9ModelMap[36345] = RMS9ModelMap[36365] = RMS9_STR_AutoSet;
// AutoSet CS Series // AutoSet CS Series
RMS9ModelMap[36100] = RMS9ModelMap[36110] = RMS9ModelMap[36120] = RMS9ModelMap[36140] = RMS9ModelMap[36100] = RMS9ModelMap[36110] = RMS9ModelMap[36120] = RMS9ModelMap[36140] =
RMS9ModelMap[36200] = RMS9ModelMap[36220] = RMS9ModelMap[36360] = RMS9_STR_AutoSetCS; RMS9ModelMap[36200] = RMS9ModelMap[36220] = RMS9ModelMap[36360] = RMS9_STR_AutoSetCS;
// AutoSet 25 Series // AutoSet 25 Series
RMS9ModelMap[36106] = RMS9ModelMap[36116] = RMS9ModelMap[36126] = RMS9ModelMap[36146] = RMS9ModelMap[36106] = RMS9ModelMap[36116] = RMS9ModelMap[36126] = RMS9ModelMap[36146] =
RMS9ModelMap[36206] = RMS9ModelMap[36226] = RMS9ModelMap[36366] = RMS9_STR_AutoSet25; RMS9ModelMap[36206] = RMS9ModelMap[36226] = RMS9ModelMap[36366] = RMS9_STR_AutoSet25;
// Girly "For Her" AutoSet Series // Girly "For Her" AutoSet Series
RMS9ModelMap[36065] = RMS9_STR_AutoSetForHer; RMS9ModelMap[36065] = RMS9_STR_AutoSetForHer;
// VPAP S Series (+H5i +Climate Control) // VPAP S Series (+H5i +Climate Control)
RMS9ModelMap[36004] = RMS9ModelMap[36014] = RMS9ModelMap[36024] = RMS9ModelMap[36114] = RMS9ModelMap[36004] = RMS9ModelMap[36014] = RMS9ModelMap[36024] = RMS9ModelMap[36114] =
RMS9ModelMap[36124] = RMS9ModelMap[36144] = RMS9ModelMap[36204] = RMS9ModelMap[36224] = RMS9ModelMap[36124] = RMS9ModelMap[36144] = RMS9ModelMap[36204] = RMS9ModelMap[36224] =
RMS9ModelMap[36284] = RMS9ModelMap[36304] = RMS9_STR_VPAP_S; RMS9ModelMap[36284] = RMS9ModelMap[36304] = RMS9_STR_VPAP_S;
// VPAP Auto Series (+H5i +Climate Control) // VPAP Auto Series (+H5i +Climate Control)
RMS9ModelMap[36006] = RMS9ModelMap[36016] = RMS9ModelMap[36026] = RMS9_STR_VPAP_Auto; RMS9ModelMap[36006] = RMS9ModelMap[36016] = RMS9ModelMap[36026] = RMS9_STR_VPAP_Auto;
@ -2427,19 +2433,19 @@ void ResInitModelMap()
// VPAP Adapt Series (+H5i +Climate Control) // VPAP Adapt Series (+H5i +Climate Control)
// Trev's 36037 supports variable EPAP... // Trev's 36037 supports variable EPAP...
RMS9ModelMap[36037] = RMS9ModelMap[36007] = RMS9ModelMap[36017] = RMS9ModelMap[36027] = RMS9ModelMap[36037] = RMS9ModelMap[36007] = RMS9ModelMap[36017] = RMS9ModelMap[36027] =
RMS9ModelMap[36367] = RMS9_STR_VPAP_Adapt; RMS9ModelMap[36367] = RMS9_STR_VPAP_Adapt;
// VPAP ST Series (+H5i +Climate Control) // VPAP ST Series (+H5i +Climate Control)
RMS9ModelMap[36008] = RMS9ModelMap[36018] = RMS9ModelMap[36028] = RMS9ModelMap[36108] = RMS9ModelMap[36008] = RMS9ModelMap[36018] = RMS9ModelMap[36028] = RMS9ModelMap[36108] =
RMS9ModelMap[36148] = RMS9ModelMap[36208] = RMS9ModelMap[36228] = RMS9ModelMap[36368] = RMS9ModelMap[36148] = RMS9ModelMap[36208] = RMS9ModelMap[36228] = RMS9ModelMap[36368] =
RMS9_STR_VPAP_ST; RMS9_STR_VPAP_ST;
// VPAP ST 22 Series // VPAP ST 22 Series
RMS9ModelMap[36118] = RMS9ModelMap[36128] = RMS9_STR_VPAP_ST22; RMS9ModelMap[36118] = RMS9ModelMap[36128] = RMS9_STR_VPAP_ST22;
// VPAP ST-A Series // VPAP ST-A Series
RMS9ModelMap[36039] = RMS9ModelMap[36159] = RMS9ModelMap[36169] = RMS9ModelMap[36379] = RMS9ModelMap[36039] = RMS9ModelMap[36159] = RMS9ModelMap[36169] = RMS9ModelMap[36379] =
RMS9_STR_VPAP_STA; RMS9_STR_VPAP_STA;
// 36003, 36013, 36023, 36103, 36113, 36123, 36143, 36203, // 36003, 36013, 36023, 36103, 36113, 36123, 36143, 36203,
@ -2495,86 +2501,111 @@ void ResInitModelMap()
*/ */
////////////////////////////////////////////////////////////////////////////
// Translation lookup table for non-english machines // Translation lookup table for non-english machines
resmed_codes[CPAP_FlowRate].push_back("Flow"); ////////////////////////////////////////////////////////////////////////////
resmed_codes[CPAP_MaskPressureHi].push_back("Mask Pres");
resmed_codes[CPAP_MaskPressureHi].push_back("Mask Pressure"); // vpap
resmed_codes[CPAP_RespEvent].push_back("Resp Event");
resmed_codes[CPAP_MaskPressure].push_back("Mask Pres"); resmed_codes[CPAP_FlowRate] = {"Flow"};
resmed_codes[CPAP_MaskPressure].push_back("Mask Pressure"); // vpap
resmed_codes[CPAP_Pressure].push_back("Therapy Pres"); // not on vpap resmed_codes[CPAP_MaskPressureHi] = {
resmed_codes[CPAP_IPAP].push_back("Insp Pressure"); // on vpap "Mask Pres",
"Mask Pressure" // VPAP
};
resmed_codes[CPAP_MaskPressure] = {
"Mask Pres",
"Mask Pressure" // VPAP
};
resmed_codes[CPAP_EPAP].push_back("Exp Press"); resmed_codes[CPAP_RespEvent] = {"Resp Event"};
resmed_codes[CPAP_EPAP].push_back("Exp Pressure"); // vpap resmed_codes[CPAP_Pressure] = {"Therapy Pres"};
resmed_codes[CPAP_IPAP] = {"Insp Pressure"};
resmed_codes[CPAP_EPAP] = {"Exp Press", "Exp Pressure"};
resmed_codes[CPAP_Leak].push_back("Leak"); resmed_codes[CPAP_Leak] = {
resmed_codes[CPAP_Leak].push_back("Leck."); "Leak",
resmed_codes[CPAP_Leak].push_back("Läcka"); "Leck.",
"Läcka"
};
resmed_codes[CPAP_RespRate].push_back("RR"); resmed_codes[CPAP_RespRate] = {
resmed_codes[CPAP_RespRate].push_back("AF"); "RR",
resmed_codes[CPAP_RespRate].push_back("FR"); "AF",
"FR"
};
resmed_codes[CPAP_TidalVolume] = {
"Vt",
"VC",
};
resmed_codes[CPAP_MinuteVent] = {
"MV",
"VM"
};
resmed_codes[CPAP_TidalVolume].push_back("Vt"); resmed_codes[CPAP_IE] = {"I:E"};
resmed_codes[CPAP_TidalVolume].push_back("VC"); resmed_codes[CPAP_Snore] = {"Snore Index"};
resmed_codes[CPAP_FLG] = {"FFL Index"};
resmed_codes[CPAP_RespEvent] = {"RE"};
resmed_codes[CPAP_Ti] = {"Ti"};
resmed_codes[CPAP_Te] = {"Te"};
resmed_codes[CPAP_MinuteVent].push_back("MV"); // SAD (oximetry)
resmed_codes[CPAP_MinuteVent].push_back("VM");
resmed_codes[CPAP_IE].push_back("I:E"); // vpap resmed_codes[OXI_Pulse] = {
resmed_codes[CPAP_Snore].push_back("Snore Index"); "Pulse",
resmed_codes[CPAP_FLG].push_back("FFL Index"); "Puls", // German & Swedish
"Pols", // Dutch
};
resmed_codes[CPAP_RespEvent].push_back("RE"); resmed_codes[OXI_SPO2] = {"SpO2"};
resmed_codes[CPAP_Ti].push_back("Ti");
resmed_codes[CPAP_Te].push_back("Te");
// Sad (oximetry)
resmed_codes[OXI_Pulse].push_back("Pulse");
resmed_codes[OXI_Pulse].push_back("Puls"); // German & Swedish
resmed_codes[OXI_Pulse].push_back("Pols"); // Dutch
resmed_codes[OXI_SPO2].push_back("SpO2");
// Event annotations // Event annotations
resmed_codes[CPAP_Obstructive].push_back("Obstructive apnea"); resmed_codes[CPAP_Obstructive] = {"Obstructive apnea"};
resmed_codes[CPAP_Hypopnea].push_back("Hypopnea"); resmed_codes[CPAP_Hypopnea] = {"Hypopnea"};
resmed_codes[CPAP_Apnea].push_back("Apnea"); resmed_codes[CPAP_Apnea] = {"Apnea"};
resmed_codes[CPAP_ClearAirway].push_back("Central apnea"); resmed_codes[CPAP_ClearAirway] = {"Central apnea"};
resmed_codes[CPAP_Mode].push_back("Mode"); resmed_codes[CPAP_Mode] = {
resmed_codes[CPAP_Mode].push_back("Modus"); // Dutch & German "Mode",
resmed_codes[CPAP_Mode].push_back("Funktion"); // Swedish "Modus", // Dutch & German
"Funktion", // Swedish
};
resmed_codes[RMS9_SetPressure].push_back("Eingest. Druck"); // German resmed_codes[RMS9_SetPressure] = {
resmed_codes[RMS9_SetPressure].push_back("Ingestelde druk"); // Dutch "Set Pressure", // English - Prescription
resmed_codes[RMS9_SetPressure].push_back("Set Pressure"); // English - Prescription "Eingest. Druck", // German
resmed_codes[RMS9_SetPressure].push_back("Pres. prescrite"); // French "Ingestelde druk", // Dutch
resmed_codes[RMS9_SetPressure].push_back("Inställt tryck"); // Swedish "Pres. prescrite", // French
resmed_codes[RMS9_SetPressure].push_back("Inställt tryck"); // Swedish, QT5.2 "Inställt tryck", // Swedish
"Inställt tryck", // Swedish, QT5.2
};
resmed_codes[RMS9_EPR].push_back("EPR"); resmed_codes[RMS9_EPR] = {"EPR"};
resmed_codes[RMS9_EPRSet].push_back("EPR Level"); resmed_codes[RMS9_EPRSet] = {
resmed_codes[RMS9_EPRSet].push_back("EPR-Stufe"); // French "EPR Level",
resmed_codes[RMS9_EPRSet].push_back("EPR-niveau"); // Dutch "EPR-Stufe", // French
resmed_codes[RMS9_EPRSet].push_back("Niveau EPR"); // German "EPR-niveau", // Dutch
resmed_codes[RMS9_EPRSet].push_back("EPR-nivå"); // Swedish "Niveau EPR", // German
resmed_codes[RMS9_EPRSet].push_back("EPR-nivÃ¥"); // Swedish, QT5.2 "EPR-nivå", // Swedish
"EPR-nivå", // Swedish, QT5.2
};
resmed_codes[CPAP_PressureMax].push_back("Max Pressure");
resmed_codes[CPAP_PressureMax].push_back("Max. Druck"); // German
resmed_codes[CPAP_PressureMax].push_back("Max druk"); // Dutch
resmed_codes[CPAP_PressureMax].push_back("Pression max."); // French
resmed_codes[CPAP_PressureMax].push_back("Max tryck"); // Swedish
resmed_codes[CPAP_PressureMin].push_back("Min Pressure"); resmed_codes[CPAP_PressureMax] = {
resmed_codes[CPAP_PressureMin].push_back("Min. Druck"); // German "Max Pressure",
resmed_codes[CPAP_PressureMin].push_back("Min druk"); // Dutch "Max. Druck", // German
resmed_codes[CPAP_PressureMin].push_back("Pression min."); // French "Max druk", // Dutch
resmed_codes[CPAP_PressureMin].push_back("Min tryck"); // Swedish "Pression max.", // French
"Max tryck", // Swedish
};
resmed_codes[CPAP_PressureMin] = {
"Min Pressure",
"Min. Druck", // German
"Min druk", // Dutch
"Pression min.", // French
"Min tryck", // Swedish
};
// STR.edf // STR.edf
} }

View File

@ -180,6 +180,9 @@ class ResmedLoader : public MachineLoader
ResmedLoader(); ResmedLoader();
virtual ~ResmedLoader(); virtual ~ResmedLoader();
//! \brief Detect if the given path contains a valid Folder structure
virtual bool Detect(const QString & path);
//! \brief Scans for S9 SD folder structure signature, and loads any new data if found //! \brief Scans for S9 SD folder structure signature, and loads any new data if found
virtual int Open(QString &path, Profile *profile); virtual int Open(QString &path, Profile *profile);

View File

@ -26,6 +26,8 @@ class SomnoposeLoader : public MachineLoader
public: public:
SomnoposeLoader(); SomnoposeLoader();
virtual ~SomnoposeLoader(); virtual ~SomnoposeLoader();
virtual bool Detect(const QString &path) { Q_UNUSED(path); return false; } // bypass autoscanner
virtual int Open(QString &path, Profile *profile); virtual int Open(QString &path, Profile *profile);
virtual int OpenFile(QString filename); virtual int OpenFile(QString filename);
static void Register(); static void Register();

View File

@ -26,6 +26,8 @@ class ZEOLoader : public MachineLoader
public: public:
ZEOLoader(); ZEOLoader();
virtual ~ZEOLoader(); virtual ~ZEOLoader();
virtual bool Detect(const QString &path) { Q_UNUSED(path); return false; } // bypass autoscanner
virtual int Open(QString &path, Profile *profile); virtual int Open(QString &path, Profile *profile);
virtual int OpenFile(QString filename); virtual int OpenFile(QString filename);
static void Register(); static void Register();

View File

@ -28,7 +28,7 @@ void RegisterLoader(MachineLoader *loader)
} }
void DestroyLoaders() void DestroyLoaders()
{ {
for (QList<MachineLoader *>::iterator i = m_loaders.begin(); i != m_loaders.end(); i++) { for (auto i = m_loaders.begin(); i != m_loaders.end(); i++) {
delete(*i); delete(*i);
} }
@ -41,7 +41,7 @@ MachineLoader::MachineLoader()
MachineLoader::~MachineLoader() MachineLoader::~MachineLoader()
{ {
for (QList<Machine *>::iterator m = m_machlist.begin(); m != m_machlist.end(); m++) { for (auto m = m_machlist.begin(); m != m_machlist.end(); m++) {
delete *m; delete *m;
} }
} }

View File

@ -28,6 +28,9 @@ class MachineLoader
//virtual Machine * CreateMachine() {}; //virtual Machine * CreateMachine() {};
//! \brief Detect if the given path contains a valid folder structure
virtual bool Detect(const QString & path) = 0;
//! \brief Override this to scan path and detect new machine data //! \brief Override this to scan path and detect new machine data
virtual int Open(QString &path, Profile *) = 0; // Scans for new content virtual int Open(QString &path, Profile *) = 0; // Scans for new content