mirror of
https://gitlab.com/pholy/OSCAR-code.git
synced 2025-04-17 11:10:45 +00:00
Merge branch 'master' into translations
This commit is contained in:
commit
291b139324
@ -3039,8 +3039,12 @@ bool PRS1Import::ImportEventChunk(PRS1DataChunk* event)
|
|||||||
if (session->last() == 0) {
|
if (session->last() == 0) {
|
||||||
qWarning() << sessionid << "End time not set by summary?";
|
qWarning() << sessionid << "End time not set by summary?";
|
||||||
} else if (t > session->last()) {
|
} else if (t > session->last()) {
|
||||||
// This has only been seen once, with corrupted data, in which the summary and event
|
// This has only been seen in two instances:
|
||||||
// files each contained multiple conflicting sessions (all brief) with the same ID.
|
// 1. Once with corrupted data, in which the summary and event files each contained
|
||||||
|
// multiple conflicting sessions (all brief) with the same ID.
|
||||||
|
// 2. On one 500G110, multiple PRS1PressureSetEvents appear after the end of the session,
|
||||||
|
// across roughtly two dozen sessions. These seem to be discarded on official reports,
|
||||||
|
// see ImportEvent() below.
|
||||||
qWarning() << sessionid << "Events continue after summary?";
|
qWarning() << sessionid << "Events continue after summary?";
|
||||||
}
|
}
|
||||||
// Events can end before the session if the mask was off before the equipment turned off.
|
// Events can end before the session if the mask was off before the equipment turned off.
|
||||||
@ -3071,6 +3075,10 @@ void PRS1Import::ImportEvent(qint64 t, PRS1ParsedEvent* e)
|
|||||||
|
|
||||||
switch (e->m_type) {
|
switch (e->m_type) {
|
||||||
case PRS1PressureSetEvent::TYPE: // currentPressure is used to calculate unintentional leak, not just PS
|
case PRS1PressureSetEvent::TYPE: // currentPressure is used to calculate unintentional leak, not just PS
|
||||||
|
// TODO: These have sometimes been observed with t > session->last() on a 500G110.
|
||||||
|
// Official reports seem to discard such events, OSCAR currently doesn't.
|
||||||
|
// Test this more thoroughly before changing behavior here.
|
||||||
|
// fall through
|
||||||
case PRS1IPAPSetEvent::TYPE:
|
case PRS1IPAPSetEvent::TYPE:
|
||||||
case PRS1IPAPAverageEvent::TYPE:
|
case PRS1IPAPAverageEvent::TYPE:
|
||||||
AddEvent(channel, t, e->m_value, e->m_gain);
|
AddEvent(channel, t, e->m_value, e->m_gain);
|
||||||
@ -7258,10 +7266,15 @@ bool PRS1DataChunk::ParseSummaryF0V6(void)
|
|||||||
tt += data[pos] | (data[pos+1] << 8); // This adds to the total duration (otherwise it won't match report)
|
tt += data[pos] | (data[pos+1] << 8); // This adds to the total duration (otherwise it won't match report)
|
||||||
this->ParseHumidifierSettingV3(data[pos+2], data[pos+3]);
|
this->ParseHumidifierSettingV3(data[pos+2], data[pos+3]);
|
||||||
break;
|
break;
|
||||||
|
case 0x0d: // ???
|
||||||
|
// seen on one 500G multiple times
|
||||||
|
//CHECK_VALUE(data[pos], 0); // 16-bit value
|
||||||
|
//CHECK_VALUE(data[pos+1], 0);
|
||||||
|
break;
|
||||||
case 0x0e:
|
case 0x0e:
|
||||||
// only seen once on 400G, many times on 500G
|
// only seen once on 400G, many times on 500G
|
||||||
CHECK_VALUES(data[pos], 0, 6);
|
//CHECK_VALUES(data[pos], 0, 6); // 16-bit value
|
||||||
CHECK_VALUE(data[pos+1], 0);
|
//CHECK_VALUE(data[pos+1], 0);
|
||||||
//CHECK_VALUES(data[pos+2], 7, 9);
|
//CHECK_VALUES(data[pos+2], 7, 9);
|
||||||
//CHECK_VALUES(data[pos+3], 7, 15);
|
//CHECK_VALUES(data[pos+3], 7, 15);
|
||||||
//CHECK_VALUES(data[pos+4], 7, 12);
|
//CHECK_VALUES(data[pos+4], 7, 12);
|
||||||
|
@ -108,7 +108,7 @@ void init()
|
|||||||
// Note: Old channel names stored in channels.xml are not translatable.. they need to be moved to be defined AFTER here instead
|
// Note: Old channel names stored in channels.xml are not translatable.. they need to be moved to be defined AFTER here instead
|
||||||
if (!schema::channel.Load(":/docs/channels.xml")) {
|
if (!schema::channel.Load(":/docs/channels.xml")) {
|
||||||
QMessageBox::critical(0, STR_MessageBox_Error,
|
QMessageBox::critical(0, STR_MessageBox_Error,
|
||||||
QObject::tr("Couldn't parse Channels.xml, this build is seriously borked, no choice but to abort!!"),
|
QObject::tr("Couldn't parse Channels.xml, OSCAR cannot continue and is exiting."),
|
||||||
QMessageBox::Ok);
|
QMessageBox::Ok);
|
||||||
QApplication::exit(-1);
|
QApplication::exit(-1);
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
// Update the string below to set OSCAR's version and release status.
|
// Update the string below to set OSCAR's version and release status.
|
||||||
// See https://semver.org/spec/v2.0.0.html for details on format.
|
// See https://semver.org/spec/v2.0.0.html for details on format.
|
||||||
|
|
||||||
#define VERSION "1.1.1-rc-4"
|
#define VERSION "1.1.2-alpha-0"
|
||||||
|
|
||||||
|
@ -1827,7 +1827,7 @@ void MainWindow::RestartApplication(bool force_login, QString cmdline)
|
|||||||
if (QProcess::startDetached("/usr/bin/open", args)) {
|
if (QProcess::startDetached("/usr/bin/open", args)) {
|
||||||
QApplication::instance()->exit();
|
QApplication::instance()->exit();
|
||||||
} else {
|
} else {
|
||||||
QMessageBox::warning(nullptr, tr("Gah!"),
|
QMessageBox::warning(nullptr, STR_MessageBox_Error,
|
||||||
tr("If you can read this, the restart command didn't work. You will have to do it yourself manually."), QMessageBox::Ok);
|
tr("If you can read this, the restart command didn't work. You will have to do it yourself manually."), QMessageBox::Ok);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1854,7 +1854,7 @@ void MainWindow::RestartApplication(bool force_login, QString cmdline)
|
|||||||
|
|
||||||
// ::exit(0);
|
// ::exit(0);
|
||||||
} else {
|
} else {
|
||||||
QMessageBox::warning(nullptr, tr("Gah!"),
|
QMessageBox::warning(nullptr, STR_MessageBox_Error,
|
||||||
tr("If you can read this, the restart command didn't work. You will have to do it yourself manually."), QMessageBox::Ok);
|
tr("If you can read this, the restart command didn't work. You will have to do it yourself manually."), QMessageBox::Ok);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -178,7 +178,7 @@ QString Welcome::GenerateCPAPHTML()
|
|||||||
int daysto = date.daysTo(QDate::currentDate());
|
int daysto = date.daysTo(QDate::currentDate());
|
||||||
QString daystring;
|
QString daystring;
|
||||||
if (daysto == 1) daystring += tr("last night");
|
if (daysto == 1) daystring += tr("last night");
|
||||||
else if (daysto == 2) daystring += tr("yesterday");
|
else if (daysto == 2) daystring += tr("1 day ago");
|
||||||
else daystring += tr("%2 days ago").arg(date.daysTo(QDate::currentDate()));
|
else daystring += tr("%2 days ago").arg(date.daysTo(QDate::currentDate()));
|
||||||
|
|
||||||
html += tr("was %1 (on %2)").arg(daystring).arg(date.toString(Qt::SystemLocaleLongDate)) + "<br/>";
|
html += tr("was %1 (on %2)").arg(daystring).arg(date.toString(Qt::SystemLocaleLongDate)) + "<br/>";
|
||||||
@ -339,8 +339,8 @@ QString Welcome::GenerateOxiHTML()
|
|||||||
|
|
||||||
html += "<p>"+QObject::tr("Most recent Oximetry data: <a onclick='alert(\"daily=%2\");'>%1</a> ").arg(oxidate.toString(Qt::SystemLocaleLongDate)).arg(oxidate.toString(Qt::ISODate));
|
html += "<p>"+QObject::tr("Most recent Oximetry data: <a onclick='alert(\"daily=%2\");'>%1</a> ").arg(oxidate.toString(Qt::SystemLocaleLongDate)).arg(oxidate.toString(Qt::ISODate));
|
||||||
if (daysto == 1) html += QObject::tr("(last night)");
|
if (daysto == 1) html += QObject::tr("(last night)");
|
||||||
else if (daysto == 2) html += QObject::tr("(yesterday)");
|
else if (daysto == 2) html += QObject::tr("(1 day ago)");
|
||||||
else html += QObject::tr("(%2 day ago)").arg(oxidate.daysTo(QDate::currentDate()));
|
else html += QObject::tr("(%2 days ago)").arg(oxidate.daysTo(QDate::currentDate()));
|
||||||
html+="</p>";
|
html+="</p>";
|
||||||
ui->oxiIcon->setVisible(true);
|
ui->oxiIcon->setVisible(true);
|
||||||
ui->oxiInfo->setVisible(true);
|
ui->oxiInfo->setVisible(true);
|
||||||
|
Loading…
Reference in New Issue
Block a user