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

View File

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

View File

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

View File

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

View File

@ -51,6 +51,10 @@ class IntellipapLoader : public MachineLoader
public:
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
virtual int Open(QString &path, Profile *profile);

View File

@ -47,6 +47,9 @@ class MSeriesLoader : public MachineLoader
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
virtual int Open(QString &file, Profile *profile);

View File

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

View File

@ -51,6 +51,10 @@ class PRS1Loader : public MachineLoader
public:
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
virtual int Open(QString &path, Profile *profile);

View File

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

View File

@ -180,6 +180,9 @@ class ResmedLoader : public MachineLoader
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
virtual int Open(QString &path, Profile *profile);

View File

@ -26,6 +26,8 @@ class SomnoposeLoader : public MachineLoader
public:
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 OpenFile(QString filename);
static void Register();

View File

@ -26,6 +26,8 @@ class ZEOLoader : public MachineLoader
public:
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 OpenFile(QString filename);
static void Register();

View File

@ -28,7 +28,7 @@ void RegisterLoader(MachineLoader *loader)
}
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);
}
@ -41,7 +41,7 @@ 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;
}
}

View File

@ -28,6 +28,9 @@ class MachineLoader
//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
virtual int Open(QString &path, Profile *) = 0; // Scans for new content