mirror of
https://gitlab.com/pholy/OSCAR-code.git
synced 2025-04-05 10:40:42 +00:00
Added Leak Redline threshold display and preference settings
This commit is contained in:
parent
02de835377
commit
b4f24c3457
@ -314,7 +314,7 @@ void gGraphView::closeEvent(QCloseEvent * event)
|
|||||||
|
|
||||||
gGraphView::~gGraphView()
|
gGraphView::~gGraphView()
|
||||||
{
|
{
|
||||||
doneCurrent();
|
doneCurrent(); // Fix for QTBUG-35363
|
||||||
|
|
||||||
#ifdef ENABLE_THREADED_DRAWING
|
#ifdef ENABLE_THREADED_DRAWING
|
||||||
|
|
||||||
|
@ -29,6 +29,7 @@ gLineChart::gLineChart(ChannelID code, QColor col, bool square_plot, bool disabl
|
|||||||
m_line_color = col;
|
m_line_color = col;
|
||||||
m_report_empty = false;
|
m_report_empty = false;
|
||||||
lines.reserve(50000);
|
lines.reserve(50000);
|
||||||
|
m_threshold = 0.0;
|
||||||
}
|
}
|
||||||
gLineChart::~gLineChart()
|
gLineChart::~gLineChart()
|
||||||
{
|
{
|
||||||
@ -252,6 +253,15 @@ void gLineChart::paint(QPainter &painter, gGraph &w, const QRegion ®ion)
|
|||||||
painter.setClipping(true);
|
painter.setClipping(true);
|
||||||
painter.setRenderHint(QPainter::Antialiasing, true);
|
painter.setRenderHint(QPainter::Antialiasing, true);
|
||||||
|
|
||||||
|
if (m_threshold > 0) {
|
||||||
|
painter.setPen(m_threshold_color);
|
||||||
|
int xst = left + 1;
|
||||||
|
int yst = top + height + 1;
|
||||||
|
|
||||||
|
EventDataType y=yst - ((m_threshold - miny) * ymult);
|
||||||
|
painter.drawLine(xst, y, xst+width, y);
|
||||||
|
}
|
||||||
|
|
||||||
for (int gi = 0; gi < m_codes.size(); gi++) {
|
for (int gi = 0; gi < m_codes.size(); gi++) {
|
||||||
ChannelID code = m_codes[gi];
|
ChannelID code = m_codes[gi];
|
||||||
|
|
||||||
|
@ -78,6 +78,9 @@ class gLineChart: public Layer
|
|||||||
//! \brief Enable or Disable the subplot identified by code.
|
//! \brief Enable or Disable the subplot identified by code.
|
||||||
void setPlotEnabled(ChannelID code, bool b) { m_enabled[code] = b; }
|
void setPlotEnabled(ChannelID code, bool b) { m_enabled[code] = b; }
|
||||||
|
|
||||||
|
void setThreshold(EventDataType value) { m_threshold = value; }
|
||||||
|
void setThresholdColor(QColor color) { m_threshold_color = color; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
bool m_report_empty;
|
bool m_report_empty;
|
||||||
bool m_square_plot;
|
bool m_square_plot;
|
||||||
@ -98,6 +101,9 @@ class gLineChart: public Layer
|
|||||||
QHash<ChannelID, bool> m_enabled;
|
QHash<ChannelID, bool> m_enabled;
|
||||||
|
|
||||||
QVector<QLine> lines;
|
QVector<QLine> lines;
|
||||||
|
|
||||||
|
float m_threshold;
|
||||||
|
QColor m_threshold_color;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // GLINECHART_H
|
#endif // GLINECHART_H
|
||||||
|
@ -37,7 +37,7 @@ gXGrid::~gXGrid()
|
|||||||
void gXGrid::paint(QPainter &painter, gGraph &w, const QRegion ®ion)
|
void gXGrid::paint(QPainter &painter, gGraph &w, const QRegion ®ion)
|
||||||
{
|
{
|
||||||
int left = region.boundingRect().left();
|
int left = region.boundingRect().left();
|
||||||
int top = region.boundingRect().top();
|
int top = region.boundingRect().top()+1;
|
||||||
int width = region.boundingRect().width();
|
int width = region.boundingRect().width();
|
||||||
int height = region.boundingRect().height();
|
int height = region.boundingRect().height();
|
||||||
|
|
||||||
@ -161,7 +161,7 @@ gYAxis::~gYAxis()
|
|||||||
void gYAxis::paint(QPainter &painter, gGraph &w, const QRegion ®ion)
|
void gYAxis::paint(QPainter &painter, gGraph &w, const QRegion ®ion)
|
||||||
{
|
{
|
||||||
int left = region.boundingRect().left();
|
int left = region.boundingRect().left();
|
||||||
int top = region.boundingRect().top();
|
int top = region.boundingRect().top()+1;
|
||||||
int width = region.boundingRect().width();
|
int width = region.boundingRect().width();
|
||||||
int height = region.boundingRect().height();
|
int height = region.boundingRect().height();
|
||||||
|
|
||||||
|
@ -222,6 +222,8 @@ const QString STR_CS_UserEventDuplicates = "UserEventDuplicates";
|
|||||||
const QString STR_CS_AHIWindow = "AHIWindow";
|
const QString STR_CS_AHIWindow = "AHIWindow";
|
||||||
const QString STR_CS_AHIReset = "AHIReset";
|
const QString STR_CS_AHIReset = "AHIReset";
|
||||||
const QString STR_CS_ClockDrift = "ClockDrift";
|
const QString STR_CS_ClockDrift = "ClockDrift";
|
||||||
|
const QString STR_CS_LeakRedline = "LeakRedline";
|
||||||
|
const QString STR_CS_ShowLeakRedline = "ShowLeakRedline";
|
||||||
|
|
||||||
// ImportSettings Strings
|
// ImportSettings Strings
|
||||||
const QString STR_IS_DaySplitTime = "DaySplitTime";
|
const QString STR_IS_DaySplitTime = "DaySplitTime";
|
||||||
@ -270,15 +272,15 @@ class ProfileSettings
|
|||||||
: m_profile(profile)
|
: m_profile(profile)
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
void setPref(QString name, QVariant value) {
|
inline void setPref(QString name, QVariant value) {
|
||||||
(*m_profile)[name] = value;
|
(*m_profile)[name] = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
void initPref(QString name, QVariant value) {
|
inline void initPref(QString name, QVariant value) {
|
||||||
m_profile->init(name, value);
|
m_profile->init(name, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
QVariant getPref(QString name) const {
|
inline QVariant getPref(QString name) const {
|
||||||
return (*m_profile)[name];
|
return (*m_profile)[name];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -456,6 +458,8 @@ class CPAPSettings : public ProfileSettings
|
|||||||
initPref(STR_CS_UserEventFlagging, false);
|
initPref(STR_CS_UserEventFlagging, false);
|
||||||
initPref(STR_CS_AHIWindow, 60.0);
|
initPref(STR_CS_AHIWindow, 60.0);
|
||||||
initPref(STR_CS_AHIReset, false);
|
initPref(STR_CS_AHIReset, false);
|
||||||
|
initPref(STR_CS_LeakRedline, 24.0);
|
||||||
|
initPref(STR_CS_ShowLeakRedline, true);
|
||||||
|
|
||||||
initPref(STR_CS_ClockDrift, (int)0);
|
initPref(STR_CS_ClockDrift, (int)0);
|
||||||
m_clock_drift = getPref(STR_CS_ClockDrift).toInt();
|
m_clock_drift = getPref(STR_CS_ClockDrift).toInt();
|
||||||
@ -481,6 +485,8 @@ class CPAPSettings : public ProfileSettings
|
|||||||
bool AHIReset() const { return getPref(STR_CS_AHIReset).toBool(); }
|
bool AHIReset() const { return getPref(STR_CS_AHIReset).toBool(); }
|
||||||
bool userEventFlagging() const { return getPref(STR_CS_UserEventFlagging).toBool(); }
|
bool userEventFlagging() const { return getPref(STR_CS_UserEventFlagging).toBool(); }
|
||||||
int clockDrift() const { return m_clock_drift; }
|
int clockDrift() const { return m_clock_drift; }
|
||||||
|
EventDataType leakRedline() const { return getPref(STR_CS_LeakRedline).toFloat(); }
|
||||||
|
bool showLeakRedline() const { return getPref(STR_CS_ShowLeakRedline).toBool(); }
|
||||||
|
|
||||||
//Setters
|
//Setters
|
||||||
void setMode(CPAPMode mode) { setPref(STR_CS_PrescribedMode, (int)mode); }
|
void setMode(CPAPMode mode) { setPref(STR_CS_PrescribedMode, (int)mode); }
|
||||||
@ -506,6 +512,8 @@ class CPAPSettings : public ProfileSettings
|
|||||||
void setClockDrift(int seconds) {
|
void setClockDrift(int seconds) {
|
||||||
setPref(STR_CS_ClockDrift, m_clock_drift = (int)seconds);
|
setPref(STR_CS_ClockDrift, m_clock_drift = (int)seconds);
|
||||||
}
|
}
|
||||||
|
void setLeakRedline(EventDataType value) { setPref(STR_CS_LeakRedline, value); }
|
||||||
|
void setShowLeakRedline(bool reset) { setPref(STR_CS_ShowLeakRedline, reset); }
|
||||||
|
|
||||||
public:
|
public:
|
||||||
int m_clock_drift;
|
int m_clock_drift;
|
||||||
|
@ -300,10 +300,15 @@ Daily::Daily(QWidget *parent,gGraphView * shared)
|
|||||||
AHI->AddLayer(AddCPAP(new gLineChart(CPAP_AHI, COLOR_AHI, square)));
|
AHI->AddLayer(AddCPAP(new gLineChart(CPAP_AHI, COLOR_AHI, square)));
|
||||||
}
|
}
|
||||||
|
|
||||||
gLineChart *lc=new gLineChart(CPAP_LeakTotal, COLOR_LeakTotal, square);
|
// this is class wide because the leak redline can be reset in preferences..
|
||||||
lc->addPlot(CPAP_Leak, COLOR_Leak, square);
|
// Better way would be having a search for linechart layers in graphlist[...]
|
||||||
lc->addPlot(CPAP_MaxLeak, COLOR_MaxLeak, square);
|
leakchart=new gLineChart(CPAP_LeakTotal, COLOR_LeakTotal, square);
|
||||||
graphlist[schema::channel[CPAP_Leak].label()]->AddLayer(AddCPAP(lc));
|
leakchart->addPlot(CPAP_Leak, COLOR_Leak, square);
|
||||||
|
leakchart->addPlot(CPAP_MaxLeak, COLOR_MaxLeak, square);
|
||||||
|
leakchart->setThresholdColor(Qt::red);
|
||||||
|
leakchart->setThreshold(PROFILE.cpap->leakRedline());
|
||||||
|
|
||||||
|
graphlist[schema::channel[CPAP_Leak].label()]->AddLayer(AddCPAP(leakchart));
|
||||||
//LEAK->AddLayer(AddCPAP(new gLineChart(CPAP_Leak, COLOR_Leak,square)));
|
//LEAK->AddLayer(AddCPAP(new gLineChart(CPAP_Leak, COLOR_Leak,square)));
|
||||||
//LEAK->AddLayer(AddCPAP(new gLineChart(CPAP_MaxLeak, COLOR_MaxLeak,square)));
|
//LEAK->AddLayer(AddCPAP(new gLineChart(CPAP_MaxLeak, COLOR_MaxLeak,square)));
|
||||||
graphlist[schema::channel[CPAP_Snore].label()]->AddLayer(AddCPAP(new gLineChart(CPAP_Snore, COLOR_Snore, true)));
|
graphlist[schema::channel[CPAP_Snore].label()]->AddLayer(AddCPAP(new gLineChart(CPAP_Snore, COLOR_Snore, true)));
|
||||||
@ -311,6 +316,7 @@ Daily::Daily(QWidget *parent,gGraphView * shared)
|
|||||||
graphlist[schema::channel[CPAP_PTB].label()]->AddLayer(AddCPAP(new gLineChart(CPAP_PTB, COLOR_PTB, square)));
|
graphlist[schema::channel[CPAP_PTB].label()]->AddLayer(AddCPAP(new gLineChart(CPAP_PTB, COLOR_PTB, square)));
|
||||||
|
|
||||||
|
|
||||||
|
gLineChart *lc = nullptr;
|
||||||
graphlist[schema::channel[CPAP_MaskPressure].label()]->AddLayer(AddCPAP(new gLineChart(CPAP_MaskPressure, COLOR_MaskPressure, false)));
|
graphlist[schema::channel[CPAP_MaskPressure].label()]->AddLayer(AddCPAP(new gLineChart(CPAP_MaskPressure, COLOR_MaskPressure, false)));
|
||||||
graphlist[schema::channel[CPAP_RespRate].label()]->AddLayer(AddCPAP(lc=new gLineChart(CPAP_RespRate, COLOR_RespRate, square)));
|
graphlist[schema::channel[CPAP_RespRate].label()]->AddLayer(AddCPAP(lc=new gLineChart(CPAP_RespRate, COLOR_RespRate, square)));
|
||||||
|
|
||||||
@ -1760,6 +1766,13 @@ void Daily::UpdateOXIGraphs(Day *day)
|
|||||||
|
|
||||||
void Daily::RedrawGraphs()
|
void Daily::RedrawGraphs()
|
||||||
{
|
{
|
||||||
|
// setting this here, because it needs to be done when preferences change
|
||||||
|
if (PROFILE.cpap->showLeakRedline()) {
|
||||||
|
leakchart->setThreshold(PROFILE.cpap->leakRedline());
|
||||||
|
} else {
|
||||||
|
leakchart->setThreshold(0); // switch it off
|
||||||
|
}
|
||||||
|
|
||||||
GraphView->redraw();
|
GraphView->redraw();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -343,6 +343,8 @@ private:
|
|||||||
MyWebView * webView;
|
MyWebView * webView;
|
||||||
Day * lastcpapday;
|
Day * lastcpapday;
|
||||||
|
|
||||||
|
gLineChart *leakchart;
|
||||||
|
|
||||||
bool ZombieMeterMoved;
|
bool ZombieMeterMoved;
|
||||||
bool BookmarksChanged;
|
bool BookmarksChanged;
|
||||||
};
|
};
|
||||||
|
@ -110,6 +110,9 @@ PreferencesDialog::PreferencesDialog(QWidget *parent, Profile *_profile) :
|
|||||||
//i=ui->timeZoneCombo->findText((*profile)["TimeZone"].toString());
|
//i=ui->timeZoneCombo->findText((*profile)["TimeZone"].toString());
|
||||||
//ui->timeZoneCombo->setCurrentIndex(i);
|
//ui->timeZoneCombo->setCurrentIndex(i);
|
||||||
|
|
||||||
|
ui->showLeakRedline->setChecked(profile->cpap->showLeakRedline());
|
||||||
|
ui->leakRedlineSpinbox->setValue(profile->cpap->leakRedline());
|
||||||
|
|
||||||
ui->spo2Drop->setValue(profile->oxi->spO2DropPercentage());
|
ui->spo2Drop->setValue(profile->oxi->spO2DropPercentage());
|
||||||
ui->spo2DropTime->setValue(profile->oxi->spO2DropDuration());
|
ui->spo2DropTime->setValue(profile->oxi->spO2DropDuration());
|
||||||
ui->pulseChange->setValue(profile->oxi->pulseChangeBPM());
|
ui->pulseChange->setValue(profile->oxi->pulseChangeBPM());
|
||||||
@ -402,6 +405,9 @@ bool PreferencesDialog::Save()
|
|||||||
profile->cpap->setMaskDescription(ui->maskDescription->text());
|
profile->cpap->setMaskDescription(ui->maskDescription->text());
|
||||||
profile->appearance->setAnimations(ui->animationsAndTransitionsCheckbox->isChecked());
|
profile->appearance->setAnimations(ui->animationsAndTransitionsCheckbox->isChecked());
|
||||||
|
|
||||||
|
profile->cpap->setShowLeakRedline(ui->showLeakRedline->isChecked());
|
||||||
|
profile->cpap->setLeakRedline(ui->leakRedlineSpinbox->value());
|
||||||
|
|
||||||
profile->cpap->setShowComplianceInfo(ui->complianceGroupbox->isChecked());
|
profile->cpap->setShowComplianceInfo(ui->complianceGroupbox->isChecked());
|
||||||
profile->cpap->setComplianceHours(ui->complianceHours->value());
|
profile->cpap->setComplianceHours(ui->complianceHours->value());
|
||||||
|
|
||||||
|
@ -51,7 +51,7 @@
|
|||||||
<item>
|
<item>
|
||||||
<widget class="QTabWidget" name="tabWidget">
|
<widget class="QTabWidget" name="tabWidget">
|
||||||
<property name="currentIndex">
|
<property name="currentIndex">
|
||||||
<number>6</number>
|
<number>1</number>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="importTab">
|
<widget class="QWidget" name="importTab">
|
||||||
<attribute name="title">
|
<attribute name="title">
|
||||||
@ -643,23 +643,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<layout class="QGridLayout" name="gridLayout_11">
|
<layout class="QGridLayout" name="gridLayout_11">
|
||||||
<item row="1" column="0" colspan="2">
|
<item row="3" column="0" colspan="2">
|
||||||
<widget class="QCheckBox" name="AddRERAtoAHI">
|
|
||||||
<property name="font">
|
|
||||||
<font>
|
|
||||||
<weight>75</weight>
|
|
||||||
<bold>true</bold>
|
|
||||||
</font>
|
|
||||||
</property>
|
|
||||||
<property name="toolTip">
|
|
||||||
<string>Shows Respiratory Disturbance Index instead of Apnea/Hypopnea Index (RDI=AHI + RERA)</string>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>Use RDI instead of AHI (PRS1 only)</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="2" column="0" colspan="2">
|
|
||||||
<widget class="QGroupBox" name="complianceGroupbox">
|
<widget class="QGroupBox" name="complianceGroupbox">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>Don't show any compliance information</string>
|
<string>Don't show any compliance information</string>
|
||||||
@ -734,7 +718,69 @@ p, li { white-space: pre-wrap; }
|
|||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="3" column="0" colspan="2">
|
<item row="0" column="0">
|
||||||
|
<widget class="QLabel" name="label_44">
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<weight>75</weight>
|
||||||
|
<bold>true</bold>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>CPAP Clock Drift</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="0" colspan="2">
|
||||||
|
<widget class="QCheckBox" name="AddRERAtoAHI">
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<weight>75</weight>
|
||||||
|
<bold>true</bold>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Shows Respiratory Disturbance Index instead of Apnea/Hypopnea Index (RDI=AHI + RERA)</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Use RDI instead of AHI (PRS1 only)</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="1">
|
||||||
|
<widget class="QSpinBox" name="clockDrift">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Don't touch this unless you know your CPAP clock is out.
|
||||||
|
Try to sync it to your PC's clock (which should be synced to a timeserver)</string>
|
||||||
|
</property>
|
||||||
|
<property name="suffix">
|
||||||
|
<string> seconds</string>
|
||||||
|
</property>
|
||||||
|
<property name="minimum">
|
||||||
|
<number>-7200</number>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<number>7200</number>
|
||||||
|
</property>
|
||||||
|
<property name="value">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="6" column="0">
|
||||||
|
<spacer name="verticalSpacer_7">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>40</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item row="4" column="0" colspan="2">
|
||||||
<widget class="QGroupBox" name="customEventGroupbox">
|
<widget class="QGroupBox" name="customEventGroupbox">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>Enable/disable experimental event flagging enhancements.
|
<string>Enable/disable experimental event flagging enhancements.
|
||||||
@ -870,7 +916,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="4" column="0" colspan="2">
|
<item row="5" column="0" colspan="2">
|
||||||
<widget class="QGroupBox" name="ahiGraphGroupbox">
|
<widget class="QGroupBox" name="ahiGraphGroupbox">
|
||||||
<property name="title">
|
<property name="title">
|
||||||
<string>AHI/Hour Graph Settings</string>
|
<string>AHI/Hour Graph Settings</string>
|
||||||
@ -943,49 +989,32 @@ Defaults to 60 minutes.. Highly recommend it's left at this value.</string>
|
|||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="5" column="0">
|
<item row="1" column="1">
|
||||||
<spacer name="verticalSpacer_7">
|
<widget class="QDoubleSpinBox" name="leakRedlineSpinbox">
|
||||||
<property name="orientation">
|
<property name="toolTip">
|
||||||
<enum>Qt::Vertical</enum>
|
<string>User definable threshold considered large leak</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="sizeHint" stdset="0">
|
<property name="suffix">
|
||||||
<size>
|
<string> L/min</string>
|
||||||
<width>20</width>
|
|
||||||
<height>40</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
</property>
|
||||||
</spacer>
|
<property name="decimals">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="0">
|
<item row="1" column="0">
|
||||||
<widget class="QLabel" name="label_44">
|
<widget class="QCheckBox" name="showLeakRedline">
|
||||||
<property name="font">
|
<property name="font">
|
||||||
<font>
|
<font>
|
||||||
<weight>75</weight>
|
<weight>75</weight>
|
||||||
<bold>true</bold>
|
<bold>true</bold>
|
||||||
</font>
|
</font>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
|
||||||
<string>CPAP Clock Drift</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="1">
|
|
||||||
<widget class="QSpinBox" name="clockDrift">
|
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>Don't touch this unless you know your CPAP clock is out.
|
<string>Whether to show the leak redline in the leak graph</string>
|
||||||
Try to sync it to your PC's clock (which should be synced to a timeserver)</string>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="suffix">
|
<property name="text">
|
||||||
<string> seconds</string>
|
<string>Show Leak Redline</string>
|
||||||
</property>
|
|
||||||
<property name="minimum">
|
|
||||||
<number>-7200</number>
|
|
||||||
</property>
|
|
||||||
<property name="maximum">
|
|
||||||
<number>7200</number>
|
|
||||||
</property>
|
|
||||||
<property name="value">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
Loading…
Reference in New Issue
Block a user