mirror of
https://gitlab.com/pholy/OSCAR-code.git
synced 2025-04-04 02:00:43 +00:00
First series in my translation-cleanup. More to come...
This commit is contained in:
parent
3e069fa4de
commit
1be14922c0
@ -127,7 +127,7 @@ QString AboutDialog::getRelnotes()
|
||||
QString text = "<html>"
|
||||
"<head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"></head>"
|
||||
"<body><span style=\" font-size:20pt;\">"+tr("Release Notes")+"</span><br/>"
|
||||
"<span style=\" font-size:14pt;\">"+tr("OSCAR %1").arg(getVersion())+"</span>"
|
||||
"<span style=\" font-size:14pt;\">"+QString("OSCAR %1").arg(getVersion())+"</span>"
|
||||
"<hr/>";
|
||||
if (getVersion().IsReleaseVersion() == false) {
|
||||
text += "<p><font color='red' size=+1><b>"+tr("Important:")+"</b></font> "
|
||||
|
@ -1108,7 +1108,7 @@ QString Daily::getMachineSettings(Day * day) {
|
||||
Machine * cpap = day->machine(MT_CPAP);
|
||||
if (cpap && day->hasEnabledSessions(MT_CPAP)) {
|
||||
html="<table cellpadding=0 cellspacing=0 border=0 width=100%>";
|
||||
html+=QString("<tr><td colspan=5 align=center><b>%1</b></td></tr>").arg(tr("Machine Settings"));
|
||||
html+=QString("<tr><td colspan=5 align=center><b>%1</b></td></tr>").arg(tr("Device Settings"));
|
||||
|
||||
if (day->noSettings(cpap)) {
|
||||
html+="<tr><td colspan=5 align=center><i><font color='red'>"+tr("<b>Please Note:</b> All settings shown below are based on assumptions that nothing has changed since previous days.")+"</font></i></td></tr>\n";
|
||||
@ -1117,7 +1117,7 @@ QString Daily::getMachineSettings(Day * day) {
|
||||
}
|
||||
/*
|
||||
} else if ((day->settingExists(CPAP_BrokenSummary))) {
|
||||
html+="<tr><td colspan=5 align=center><i>"+tr("Machine Settings Unavailable")+"</i></td></tr></table><hr/>\n";
|
||||
html+="<tr><td colspan=5 align=center><i>"+tr("Device Settings Unavailable")+"</i></td></tr></table><hr/>\n";
|
||||
return html;
|
||||
}
|
||||
*/
|
||||
@ -1320,7 +1320,7 @@ QString Daily::getStatisticsInfo(Day * day)
|
||||
.arg(STR_TR_Min)
|
||||
.arg(midname)
|
||||
.arg(QString("%1%2").arg(percentile*100,0,'f',0).arg(STR_UNIT_Percentage))
|
||||
.arg(ST_max == ST_MAX?STR_TR_Max:tr("99.5%"));
|
||||
.arg(ST_max == ST_MAX?STR_TR_Max:QString("99.5%"));
|
||||
|
||||
ChannelID chans[]={
|
||||
CPAP_Pressure,CPAP_PressureSet,CPAP_EPAP,CPAP_EPAPSet,CPAP_IPAP,CPAP_IPAPSet,CPAP_PS,CPAP_PTB,
|
||||
@ -1705,7 +1705,7 @@ void Daily::Load(QDate date)
|
||||
.arg("#F88017").arg(COLOR_Text.name()).arg(ahiname).arg(schema::channel[ahichan].fullname()).arg(ahi,0,'f',2);
|
||||
} else {
|
||||
htmlLeftAHI+=QString("<td colspan=5 bgcolor='%1' align=center><font size=+3 color='yellow'><b>%2</b></font></td>\n")
|
||||
.arg("#F88017").arg(tr("This CPAP machine does NOT record detailed data"));
|
||||
.arg("#F88017").arg(tr("This CPAP device does NOT record detailed data"));
|
||||
}
|
||||
htmlLeftAHI+="</tr>\n";
|
||||
htmlLeftAHI+="</table>\n";
|
||||
@ -1732,7 +1732,7 @@ void Daily::Load(QDate date)
|
||||
QString data;
|
||||
float channelHours = hours;
|
||||
if (chan.machtype() != MT_CPAP) {
|
||||
// Use machine type hours (if available) rather than CPAP hours, since
|
||||
// Use device type hours (if available) rather than CPAP hours, since
|
||||
// might have Oximetry (for example) longer or shorter than CPAP
|
||||
channelHours = day->hours(chan.machtype());
|
||||
if (channelHours <= 0) {
|
||||
@ -1784,9 +1784,9 @@ void Daily::Load(QDate date)
|
||||
htmlLeftNoHours+="<tr><td colspan=5 align='center'><b><h2>"+tr("Impossibly short session")+"</h2></b></td></tr>";
|
||||
htmlLeftNoHours+="<tr><td colspan=5 align='center'><i>"+tr("Zero hours??")+"</i></td></tr>\n";
|
||||
}
|
||||
} else { // machine is a brick
|
||||
htmlLeftNoHours+="<tr><td colspan=5 align='center'><b><h2>"+tr("BRICK :(")+"</h2></b></td></tr>";
|
||||
htmlLeftNoHours+="<tr><td colspan=5 align='center'><i>"+tr("Sorry, this machine only provides compliance data.")+"</i></td></tr>\n";
|
||||
} else { // Device is a brick
|
||||
htmlLeftNoHours+="<tr><td colspan=5 align='center'><b><h2>"+tr("no data :(")+"</h2></b></td></tr>";
|
||||
htmlLeftNoHours+="<tr><td colspan=5 align='center'><i>"+tr("Sorry, this device only provides compliance data.")+"</i></td></tr>\n";
|
||||
htmlLeftNoHours+="<tr><td colspan=5 align='center'><i>"+tr("Complain to your Equipment Provider!")+"</i></td></tr>\n";
|
||||
}
|
||||
htmlLeftNoHours+="<tr><td colspan='5'> </td></tr>\n";
|
||||
|
@ -279,7 +279,7 @@ private:
|
||||
\brief Create a new journal session for this date, if one doesn't exist.
|
||||
\param QDate date
|
||||
|
||||
Creates a new journal Machine record if necessary.
|
||||
Creates a new journal device record if necessary.
|
||||
*/
|
||||
Session * CreateJournalSession(QDate date);
|
||||
|
||||
|
@ -1047,7 +1047,7 @@ QToolButton:pressed {
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string notr="true"> i </string>
|
||||
<string> i </string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
|
@ -281,7 +281,7 @@ void MainWindow::closeEvent(QCloseEvent * event)
|
||||
static bool runonce = false;
|
||||
if (!runonce) {
|
||||
if (AppSetting->removeCardReminder()) {
|
||||
Notify(QObject::tr("Don't forget to place your datacard back in your CPAP machine"), QObject::tr("OSCAR Reminder"));
|
||||
Notify(QObject::tr("Don't forget to place your datacard back in your CPAP device"), QObject::tr("OSCAR Reminder"));
|
||||
QThread::msleep(1000);
|
||||
QApplication::processEvents();
|
||||
}
|
||||
@ -391,7 +391,7 @@ void MainWindow::PopulatePurgeMenu()
|
||||
addMachineToMenu(mach, ui->menu_Rebuild_CPAP_Data);
|
||||
}
|
||||
|
||||
// Add any imported machine (except the built-in journal) to the purge menu.
|
||||
// Add any imported device (except the built-in journal) to the purge menu.
|
||||
machines = p_profile->GetMachines();
|
||||
for (int i=0; i < machines.size(); ++i) {
|
||||
Machine *mach = machines.at(i);
|
||||
@ -484,13 +484,13 @@ bool MainWindow::OpenProfile(QString profileName, bool skippassword)
|
||||
|
||||
QList<Machine *> machines = p_profile->GetMachines(MT_CPAP);
|
||||
if (machines.isEmpty()) {
|
||||
qDebug() << "No machines in profile";
|
||||
qDebug() << "No devices in profile";
|
||||
} else {
|
||||
#ifdef LOCK_RESMED_SESSIONS
|
||||
for (QList<Machine *>::iterator it = machines.begin(); it != machines.end(); ++it) {
|
||||
QString mclass=(*it)->loaderName();
|
||||
if (mclass == STR_MACH_ResMed) {
|
||||
qDebug() << "ResMed machine found.. locking OSCAR preferences to suit it's summary system";
|
||||
qDebug() << "ResMed device found.. locking OSCAR preferences to suit it's summary system";
|
||||
|
||||
// Have to sacrifice these features to get access to summary data.
|
||||
p_profile->session->setCombineCloseSessions(0);
|
||||
@ -743,7 +743,7 @@ int MainWindow::importCPAP(ImportPath import, const QString &message)
|
||||
} else if (c == 0) {
|
||||
Notify(tr("Already up to date with CPAP data at\n\n%1").arg(import.path), tr("Up to date"));
|
||||
} else {
|
||||
Notify(tr("Couldn't find any valid Machine Data at\n\n%1").arg(import.path),tr("Import Problem"));
|
||||
Notify(tr("Couldn't find any valid Device Data at\n\n%1").arg(import.path),tr("Import Problem"));
|
||||
}
|
||||
disconnect(progdlg, SIGNAL(abortClicked()), import.loader, SLOT(abortImport()));
|
||||
disconnect(import.loader, SIGNAL(setProgressMax(int)), progdlg, SLOT(setProgressMax(int)));
|
||||
@ -797,7 +797,7 @@ void MainWindow::finishCPAPImport()
|
||||
|
||||
void MainWindow::importCPAPBackups()
|
||||
{
|
||||
// Get BackupPaths for all CPAP machines
|
||||
// Get BackupPaths for all CPAP devices
|
||||
QList<Machine *> machlist = p_profile->GetMachines(MT_CPAP);
|
||||
QList<ImportPath> paths;
|
||||
Q_FOREACH(Machine *m, machlist) {
|
||||
@ -959,7 +959,7 @@ QList<ImportPath> MainWindow::detectCPAPCards()
|
||||
}
|
||||
|
||||
Q_FOREACH(const QString &path, AutoScannerPaths) {
|
||||
// Scan through available machine loaders and test if this folder contains valid folder structure
|
||||
// Scan through available device loaders and test if this folder contains valid folder structure
|
||||
Q_FOREACH(MachineLoader * loader, loaders) {
|
||||
if (loader->Detect(path)) {
|
||||
detectedCards.append(ImportPath(path, loader));
|
||||
@ -1748,7 +1748,7 @@ void MainWindow::on_actionPurgeCurrentDayAll_triggered()
|
||||
this->purgeDay(MT_JOURNAL);
|
||||
}
|
||||
|
||||
// Purge data for a given machine type.
|
||||
// Purge data for a given device type.
|
||||
// Special handling: MT_JOURNAL == All data. MT_UNKNOWN == All except journal
|
||||
void MainWindow::purgeDay(MachineType type)
|
||||
{
|
||||
@ -1848,7 +1848,7 @@ void MainWindow::on_actionRebuildCPAP(QAction *action)
|
||||
|
||||
if (backups) {
|
||||
if (QMessageBox::question(this, STR_MessageBox_Question,
|
||||
tr("Are you sure you want to rebuild all CPAP data for the following machine:\n\n") +
|
||||
tr("Are you sure you want to rebuild all CPAP data for the following device:\n\n") +
|
||||
mach->brand() + " " + mach->model() + " " +
|
||||
mach->modelnumber() + " (" + mach->serial() + ")\n\n" +
|
||||
tr("Please note, that this could result in loss of data if OSCAR's backups have been disabled."),
|
||||
@ -1858,7 +1858,7 @@ void MainWindow::on_actionRebuildCPAP(QAction *action)
|
||||
} else {
|
||||
if (QMessageBox::question(this,
|
||||
STR_MessageBox_Warning,
|
||||
"<p><b>"+STR_MessageBox_Warning+": </b>"+tr("For some reason, OSCAR does not have any backups for the following machine:")+ "</p>" +
|
||||
"<p><b>"+STR_MessageBox_Warning+": </b>"+tr("For some reason, OSCAR does not have any backups for the following device:")+ "</p>" +
|
||||
"<p>"+mach->brand() + " " + mach->model() + " " + mach->modelnumber() + " (" + mach->serial() + ")</p>"+
|
||||
"<p>"+tr("Provided you have made <i>your <b>own</b> backups for ALL of your CPAP data</i>, you can still complete this operation, but you will have to restore from your backups manually.")+"</p>" +
|
||||
"<p><b>"+tr("Are you really sure you want to do this?")+"</b></p>",
|
||||
@ -1870,14 +1870,14 @@ void MainWindow::on_actionRebuildCPAP(QAction *action)
|
||||
QString path = mach->getBackupPath();
|
||||
MachineLoader *loader = lookupLoader(mach);
|
||||
|
||||
purgeMachine(mach); // purge destroys machine record
|
||||
purgeMachine(mach); // purge destroys device record
|
||||
|
||||
if (backups) {
|
||||
importCPAP(ImportPath(path, loader), tr("Please wait, importing from backup folder(s)..."));
|
||||
} else {
|
||||
if (QMessageBox::information(this, STR_MessageBox_Warning,
|
||||
tr("Because there are no internal backups to rebuild from, you will have to restore from your own.")+"\n\n"+
|
||||
tr("Would you like to import from your own backups now? (you will have no data visible for this machine until you do)"),
|
||||
tr("Would you like to import from your own backups now? (you will have no data visible for this device until you do)"),
|
||||
QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes) == QMessageBox::Yes) {
|
||||
on_action_Import_Data_triggered();
|
||||
} else {
|
||||
@ -1928,14 +1928,14 @@ void MainWindow::on_actionPurgeMachine(QAction *action)
|
||||
if (backups) {
|
||||
backupnotice = "<p>" + tr("Note as a precaution, the backup folder will be left in place.") + "</p>";
|
||||
} else {
|
||||
backupnotice = "<p>" + tr("OSCAR does not have any backups for this machine!") + "</p>" +
|
||||
"<p>" + tr("Unless you have made <i>your <b>own</b> backups for ALL of your data for this machine</i>, "
|
||||
"<font size=+2>you will lose this machine's data <b>permanently</b>!</font>") + "</p>";
|
||||
backupnotice = "<p>" + tr("OSCAR does not have any backups for this device!") + "</p>" +
|
||||
"<p>" + tr("Unless you have made <i>your <b>own</b> backups for ALL of your data for this device</i>, "
|
||||
"<font size=+2>you will lose this device's data <b>permanently</b>!</font>") + "</p>";
|
||||
}
|
||||
|
||||
if (QMessageBox::question(this, STR_MessageBox_Warning,
|
||||
"<p><b>"+STR_MessageBox_Warning+":</b> " +
|
||||
tr("You are about to <font size=+2>obliterate</font> OSCAR's machine database for the following machine:</p>") +
|
||||
tr("You are about to <font size=+2>obliterate</font> OSCAR's device database for the following device:</p>") +
|
||||
"<p><font size=+2>" + machname + "</font></p>" +
|
||||
backupnotice+
|
||||
"<p>"+tr("Are you <b>absolutely sure</b> you want to proceed?")+"</p>",
|
||||
@ -1958,7 +1958,7 @@ void MainWindow::purgeMachine(Machine * mach)
|
||||
QDir dir;
|
||||
QString path = mach->getDataPath();
|
||||
path.chop(1);
|
||||
qDebug() << "path to machine" << path;
|
||||
qDebug() << "path to device" << path;
|
||||
|
||||
p_profile->DelMachine(mach);
|
||||
delete mach;
|
||||
@ -2496,7 +2496,7 @@ void MainWindow::on_actionPurgeCurrentDaysOximetry_triggered()
|
||||
delete sess;
|
||||
}
|
||||
|
||||
// We have to update the summary cache for the affected machine(s),
|
||||
// We have to update the summary cache for the affected device(s),
|
||||
// otherwise OSCAR will still think this day has oximetry data at next launch.
|
||||
for (auto & mach : machines) {
|
||||
mach->SaveSummaryCache();
|
||||
|
@ -41,7 +41,7 @@ class MainWindow;
|
||||
|
||||
Open Source CPAP Analysis Reporter (OSCAR) is a program derived from the SleepyHead program written by Mark Watkins.
|
||||
|
||||
SleepyHead was a Cross-Platform Open-Source software for reviewing data from %CPAP machines, which are used in the treatment of Sleep Disorders.
|
||||
SleepyHead was a Cross-Platform Open-Source software for reviewing data from %CPAP devices, which are used in the treatment of Sleep Disorders.
|
||||
|
||||
SleepyHead was created by <a href="http://jedimark64.blogspot.com">Mark Watkins</a> (JediMark), an Australian software developer.
|
||||
|
||||
@ -60,7 +60,7 @@ class MainWindow;
|
||||
\section structure Program Structure
|
||||
OSCAR is written in C++ using Qt Toolkit library, and comprises of 3 main components
|
||||
\list
|
||||
\li The SleepLib Database, a specialized database for working with multiple sources of Sleep machine data.
|
||||
\li The SleepLib Database, a specialized database for working with multiple sources of Sleep device data.
|
||||
\li A custom designed, high performance and interactive OpenGL Graphing Library.
|
||||
\li and the main Application user interface.
|
||||
\endlist
|
||||
@ -408,7 +408,7 @@ private:
|
||||
|
||||
void PopulatePurgeMenu();
|
||||
|
||||
//! \brief Destroy ALL the CPAP data for the selected machine
|
||||
//! \brief Destroy ALL the CPAP data for the selected device
|
||||
void purgeMachine(Machine *);
|
||||
|
||||
int warnidx;
|
||||
|
@ -2492,7 +2492,7 @@ p, li { white-space: pre-wrap; }
|
||||
</widget>
|
||||
<widget class="QMenu" name="menuPurge_CPAP_Data">
|
||||
<property name="title">
|
||||
<string>Purge ALL Machine Data</string>
|
||||
<string>Purge ALL Device Data</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QMenu" name="menuPurge_Current_Selected_Day">
|
||||
|
@ -110,7 +110,7 @@ QString NewProfile::getIntroHTML()
|
||||
"<body>"
|
||||
"<div align=center><h1>" + tr("Welcome to the Open Source CPAP Analysis Reporter") + "</h1></div>"
|
||||
|
||||
"<p>" + tr("This software is being designed to assist you in reviewing the data produced by your CPAP machines and related equipment.")
|
||||
"<p>" + tr("This software is being designed to assist you in reviewing the data produced by your CPAP Devices and related equipment.")
|
||||
+ "</p>"
|
||||
|
||||
"<p>" + tr("OSCAR has been released freely under the <a href='qrc:/COPYING'>GNU Public License v3</a>, and comes with no warranty, and without ANY claims to fitness for any purpose.")
|
||||
|
@ -212,7 +212,7 @@ void Overview::CreateAllGraphs() {
|
||||
ChannelID code = chan->id();
|
||||
QString name = chan->fullname();
|
||||
if (name.length() > 16) name = chan->label();
|
||||
// qDebug() << "Channel" << name << "type" << chan->type() << "machine type" << chan->machtype();
|
||||
// qDebug() << "Channel" << name << "type" << chan->type() << "device type" << chan->machtype();
|
||||
gGraph *G = createGraph(chan->code(), name, chan->description());
|
||||
if ((chan->type() == schema::FLAG) || (chan->type() == schema::MINOR_FLAG)) {
|
||||
gSummaryChart * sc = new gSummaryChart(chan->code(), chan->machtype()); // gts was MT_CPAP
|
||||
@ -501,7 +501,7 @@ void Overview::ResetGraphOrder(int type)
|
||||
// Process new range selection from combo button
|
||||
void Overview::on_rangeCombo_activated(int index)
|
||||
{
|
||||
ui->dateStart->setMinimumDate(p_profile->FirstDay()); // first and last dates for ANY machine type
|
||||
ui->dateStart->setMinimumDate(p_profile->FirstDay()); // first and last dates for ANY device type
|
||||
ui->dateEnd->setMaximumDate(p_profile->LastDay());
|
||||
|
||||
// Exclude Journal in calculating the last day
|
||||
@ -591,7 +591,7 @@ void Overview::on_rangeCombo_activated(int index)
|
||||
progress->close();
|
||||
delete progress;
|
||||
|
||||
// first and last dates for ANY machine type
|
||||
// first and last dates for ANY device type
|
||||
setRange(start, end);
|
||||
}
|
||||
|
||||
|
@ -1005,7 +1005,7 @@ void OximeterImport::on_saveButton_clicked()
|
||||
calcSPO2Drop(session);
|
||||
calcPulseChange(session);
|
||||
|
||||
qDebug() << "oximod - Setting up machine and session";
|
||||
qDebug() << "oximod - Setting up device and session";
|
||||
|
||||
mach->setModel(oximodule->getModel());
|
||||
mach->setBrand(oximodule->getVendor());
|
||||
@ -1040,9 +1040,9 @@ void OximeterImport::on_saveButton_clicked()
|
||||
|
||||
session->setOpened(true);
|
||||
|
||||
qDebug() << "oximod - Adding session to machine";
|
||||
qDebug() << "oximod - Adding session to device";
|
||||
mach->AddSession(session);
|
||||
qDebug() << "oximod - Saving machine";
|
||||
qDebug() << "oximod - Saving device";
|
||||
mach->Save();
|
||||
mach->SaveSummaryCache();
|
||||
p_profile->StoreMachines();
|
||||
|
@ -345,7 +345,7 @@ border-radius: 0px;</string>
|
||||
<item>
|
||||
<widget class="QStackedWidget" name="stackedWidget">
|
||||
<property name="currentIndex">
|
||||
<number>0</number>
|
||||
<number>1</number>
|
||||
</property>
|
||||
<widget class="QWidget" name="welcomePage">
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
@ -599,17 +599,17 @@ background: qlineargradient( x1:0 y1:0, x2:1 y2:0, stop:0 white, stop:1 #cccccc)
|
||||
</property>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>CMS50Fv3.7+/H/I, CMS50D+v4.6, Pulox PO-400/500</string>
|
||||
<string notr="true">CMS50D+/E/F, Pulox PO-200/300</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>CMS50D+/E/F, Pulox PO-200/300</string>
|
||||
<string notr="true">CMS50Fv3.7+/H/I, CMS50D+v4.6, Pulox PO-400/500</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>ChoiceMMed MD300W1</string>
|
||||
<string notr="true">ChoiceMMed MD300W1</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
@ -1470,7 +1470,7 @@ background: qlineargradient( x1:0 y1:0, x2:1 y2:0, stop:0 white, stop:1 #cccccc)
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>I started this oximeter recording at (or near) the same time as a session on my CPAP machine.</string>
|
||||
<string>I started this oximeter recording at (or near) the same time as a session on my CPAP device.</string>
|
||||
</property>
|
||||
<property name="wordWrap">
|
||||
<bool>true</bool>
|
||||
|
@ -63,15 +63,15 @@ PreferencesDialog::PreferencesDialog(QWidget *parent, Profile *_profile) :
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (QMessageBox::question(this, tr("No CPAP machines detected"),
|
||||
tr("Will you be using a ResMed brand machine?"),
|
||||
if (QMessageBox::question(this, tr("No CPAP devices detected"),
|
||||
tr("Will you be using a ResMed brand device?"),
|
||||
QMessageBox::Yes, QMessageBox::No) == QMessageBox::Yes )
|
||||
haveResMed = true;
|
||||
}
|
||||
|
||||
#ifdef LOCK_RESMED_SESSIONS
|
||||
// Remove access to session splitting options and show ResMed users a notice instead
|
||||
ui->ResMedWarning->setText(tr("<p><b>Please Note:</b> OSCAR's advanced session splitting capabilities are not possible with <b>ResMed</b> machines due to a limitation in the way their settings and summary data is stored, and therefore they have been disabled for this profile.</p><p>On ResMed machines, days will <b>split at noon</b> like in ResMed's commercial software.</p>"));
|
||||
ui->ResMedWarning->setText(tr("<p><b>Please Note:</b> OSCAR's advanced session splitting capabilities are not possible with <b>ResMed</b> devices due to a limitation in the way their settings and summary data is stored, and therefore they have been disabled for this profile.</p><p>On ResMed devices, days will <b>split at noon</b> like in ResMed's commercial software.</p>"));
|
||||
ui->ResMedWarning->setVisible(haveResMed);
|
||||
|
||||
if (haveResMed) {
|
||||
@ -1162,7 +1162,7 @@ void PreferencesDialog::on_createSDBackups_toggled(bool checked)
|
||||
|
||||
if (haveS9 && QMessageBox::question(this,
|
||||
tr("This may not be a good idea"),
|
||||
tr("ResMed S9 machines routinely delete certain data from your SD card older than 7 and 30 days (depending on resolution).") +
|
||||
tr("ResMed S9 devices routinely delete certain data from your SD card older than 7 and 30 days (depending on resolution).") +
|
||||
tr(" If you ever need to reimport this data again (whether in OSCAR or ResScan) this data won't come back.") +
|
||||
tr(" If you need to conserve disk space, please remember to carry out manual backups.") +
|
||||
tr(" Are you sure you want to disable these backups?"),
|
||||
|
@ -63,7 +63,7 @@
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="currentIndex">
|
||||
<number>2</number>
|
||||
<number>6</number>
|
||||
</property>
|
||||
<widget class="QWidget" name="importTab">
|
||||
<attribute name="title">
|
||||
@ -477,9 +477,9 @@ If you've got a new computer with a small solid state disk, this is a good optio
|
||||
<item row="2" column="0">
|
||||
<widget class="QCheckBox" name="createSDBackups">
|
||||
<property name="toolTip">
|
||||
<string>This maintains a backup of SD-card data for ResMed machines,
|
||||
<string>This maintains a backup of SD-card data for ResMed devices,
|
||||
|
||||
ResMed S9 series machines delete high resolution data older than 7 days,
|
||||
ResMed S9 series devices delete high resolution data older than 7 days,
|
||||
and graph data older than 30 days..
|
||||
|
||||
OSCAR can keep a copy of this data if you ever need to reinstall.
|
||||
@ -637,10 +637,10 @@ OSCAR can keep a copy of this data if you ever need to reinstall.
|
||||
<item row="1" column="1">
|
||||
<widget class="QCheckBox" name="warnOnUntestedMachine">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Provide an alert when importing data from any machine model that has not yet been tested by OSCAR developers.</p></body></html></string>
|
||||
<string><html><head/><body><p>Provide an alert when importing data from any device model that has not yet been tested by OSCAR developers.</p></body></html></string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Warn when importing data from an untested machine</string>
|
||||
<string>Warn when importing data from an untested device</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@ -805,7 +805,7 @@ OSCAR can keep a copy of this data if you ever need to reinstall.
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>This calculation requires Total Leaks data to be provided by the CPAP machine. (Eg, PRS1, but not ResMed, which has these already)
|
||||
<string>This calculation requires Total Leaks data to be provided by the CPAP device. (Eg, PRS1, but not ResMed, which has these already)
|
||||
|
||||
The Unintentional Leak calculations used here are linear, they don't model the mask vent curve.
|
||||
|
||||
@ -970,7 +970,7 @@ If you use a few different masks, pick average values instead. It should still b
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Enable/disable experimental event flagging enhancements.
|
||||
It allows detecting borderline events, and some the machine missed.
|
||||
It allows detecting borderline events, and some the device missed.
|
||||
This option must be enabled before import, otherwise a purge is required.</string>
|
||||
</property>
|
||||
<property name="title">
|
||||
@ -1021,10 +1021,10 @@ This option must be enabled before import, otherwise a purge is required.</strin
|
||||
<item row="6" column="0" colspan="4">
|
||||
<widget class="QCheckBox" name="resyncMachineDetectedEvents">
|
||||
<property name="toolTip">
|
||||
<string>This experimental option attempts to use OSCAR's event flagging system to improve machine detected event positioning.</string>
|
||||
<string>This experimental option attempts to use OSCAR's event flagging system to improve device detected event positioning.</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Resync Machine Detected Events (Experimental)</string>
|
||||
<string>Resync Device Detected Events (Experimental)</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@ -1082,7 +1082,7 @@ This option must be enabled before import, otherwise a purge is required.</strin
|
||||
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
|
||||
p, li { white-space: pre-wrap; }
|
||||
</style></head><body style=" font-family:'Sans'; font-size:10pt; font-weight:400; font-style:italic;">
|
||||
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Custom flagging is an experimental method of detecting events missed by the machine. They are <span style=" text-decoration: underline;">not</span> included in AHI.</p></body></html></string>
|
||||
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Custom flagging is an experimental method of detecting events missed by the device. They are <span style=" text-decoration: underline;">not</span> included in AHI.</p></body></html></string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
|
||||
@ -1148,7 +1148,7 @@ A value of 20% works well for detecting apneas. </string>
|
||||
<item row="4" column="0" colspan="4">
|
||||
<widget class="QCheckBox" name="userEventDuplicates">
|
||||
<property name="text">
|
||||
<string>Allow duplicates near machine events.</string>
|
||||
<string>Allow duplicates near device events.</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@ -1196,7 +1196,7 @@ A value of 20% works well for detecting apneas. </string>
|
||||
<item row="3" column="0">
|
||||
<widget class="QCheckBox" name="showUnknownFlags">
|
||||
<property name="toolTip">
|
||||
<string>Show flags for machine detected events that haven't been identified yet.</string>
|
||||
<string>Show flags for device detected events that haven't been identified yet.</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Enable Unknown Events Channels</string>
|
||||
@ -1492,7 +1492,7 @@ as this is the only value available on summary-only days.</string>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string><html><head/><body><p><span style=" font-weight:600;">Note: </span>Due to summary design limitations, ResMed machines do not support changing these settings.</p></body></html></string>
|
||||
<string><html><head/><body><p><span style=" font-weight:600;">Note: </span>Due to summary design limitations, ResMed devices do not support changing these settings.</p></body></html></string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
|
||||
@ -1795,7 +1795,7 @@ p, li { white-space: pre-wrap; }
|
||||
<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans'; font-size:10pt;"><br /></p>
|
||||
<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans'; font-size:10pt;">Live view mode (using a serial cable) is one way to acheive an accurate sync on CMS50 oximeters, but does not counter for CPAP clock drift.</span></p>
|
||||
<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans'; font-size:10pt;"><br /></p>
|
||||
<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans'; font-size:10pt;">If you start your Oximeters recording mode at </span><span style=" font-family:'Sans'; font-size:10pt; font-style:italic;">exactly </span><span style=" font-family:'Sans'; font-size:10pt;">the same time you start your CPAP machine, you can now also achieve sync. </span></p>
|
||||
<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans'; font-size:10pt;">If you start your Oximeters recording mode at </span><span style=" font-family:'Sans'; font-size:10pt; font-style:italic;">exactly </span><span style=" font-family:'Sans'; font-size:10pt;">the same time you start your CPAP device, you can now also achieve sync. </span></p>
|
||||
<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans'; font-size:10pt;"><br /></p>
|
||||
<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans'; font-size:10pt;">The serial import process takes the starting time from last nights first CPAP session. (Remember to import your CPAP data first!)</span></p></body></html></string>
|
||||
</property>
|
||||
@ -2497,10 +2497,10 @@ Mainly affects the importer.</string>
|
||||
<number>30000</number>
|
||||
</property>
|
||||
<property name="singleStep">
|
||||
<number>100</number>
|
||||
<number>1000</number>
|
||||
</property>
|
||||
<property name="pageStep">
|
||||
<number>500</number>
|
||||
<number>5000</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>5000</number>
|
||||
@ -2738,7 +2738,7 @@ Try it and see if you like it.</string>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="includeSerial">
|
||||
<property name="toolTip">
|
||||
<string>Whether to include machine serial number on machine settings changes report</string>
|
||||
<string>Whether to include device serial number on device settings changes report</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Include Serial Number</string>
|
||||
|
@ -125,7 +125,7 @@ void ProfileSelector::updateProfileList()
|
||||
|
||||
Machine * mach = prof->GetMachine(MT_CPAP); // only interested in last cpap machine...
|
||||
if (!mach) {
|
||||
qDebug() << "Couldn't find machine info for" << name;
|
||||
qDebug() << "Couldn't find device info for" << name;
|
||||
}
|
||||
|
||||
model->insertRows(row, 1, QModelIndex());
|
||||
|
@ -30,8 +30,8 @@ extern MainWindow *mainwin;
|
||||
QString htmlReportHeader = ""; // Page header
|
||||
QString htmlReportHeaderPrint = ""; // Page header
|
||||
QString htmlUsage = ""; // CPAP and Oximetry
|
||||
QString htmlMachineSettings = ""; // Machine (formerly Rx) changes
|
||||
QString htmlMachines = ""; // Machines used in this profile
|
||||
QString htmlMachineSettings = ""; // Device (formerly Rx) changes
|
||||
QString htmlMachines = ""; // Devices used in this profile
|
||||
QString htmlReportFooter = ""; // Page footer
|
||||
|
||||
QString resizeHTMLPixmap(QPixmap &pixmap, int width, int height) {
|
||||
@ -529,7 +529,7 @@ void Statistics::updateRXChanges()
|
||||
// Statistics constructor is responsible for creating list of rows that will on the Statistics page
|
||||
// and skeletons of column 1 text that correspond to each calculation type.
|
||||
// Actual column 1 text is combination of skeleton for the row's calculation time and the text of the row.
|
||||
// Also creates "machine" names for machine types.
|
||||
// Also creates "device" names for device types.
|
||||
Statistics::Statistics(QObject *parent) :
|
||||
QObject(parent)
|
||||
{
|
||||
@ -803,7 +803,7 @@ EventDataType calcSA(QDate start, QDate end)
|
||||
return val;
|
||||
}
|
||||
|
||||
// Structure for recording Prescription Changes (now called Machine Settings Changes)
|
||||
// Structure for recording Prescription Changes (now called Device Settings Changes)
|
||||
struct RXChange {
|
||||
RXChange() { highlight = 0; machine = nullptr; }
|
||||
RXChange(const RXChange ©) {
|
||||
@ -888,7 +888,7 @@ const QString heading_color="#ffffff";
|
||||
const QString subheading_color="#e0e0e0";
|
||||
//const int rxthresh = 5;
|
||||
|
||||
// Sort machines by first day of use
|
||||
// Sort devices by first day of use
|
||||
bool machineCompareFirstDay(Machine* left, Machine *right) {
|
||||
return left->FirstDay() > right->FirstDay();
|
||||
}
|
||||
@ -914,7 +914,7 @@ QString Statistics::GenerateMachineList()
|
||||
html += QString("<table class=curved style='page-break-before:auto' "+table_width+">");
|
||||
|
||||
html += "<thead>";
|
||||
html += "<tr bgcolor='"+heading_color+"'><th colspan=7 align=center><font size='+2'>" + tr("Machine Information") + "</font></th></tr>";
|
||||
html += "<tr bgcolor='"+heading_color+"'><th colspan=7 align=center><font size='+2'>" + tr("Device Information") + "</font></th></tr>";
|
||||
|
||||
html += QString("<tr><td><b>%1</b></td><td><b>%2</b></td><td><b>%3</b></td><td><b>%4</b></td><td><b>%5</b></td></tr>")
|
||||
.arg(STR_TR_Brand)
|
||||
@ -931,7 +931,7 @@ QString Statistics::GenerateMachineList()
|
||||
m = mach.at(i);
|
||||
|
||||
if (m->type() == MT_JOURNAL) { continue; }
|
||||
//qDebug() << "Machine" << m->brand() << "series" << m->series() << "model" << m->model() << "model number" << m->modelnumber();
|
||||
//qDebug() << "Device" << m->brand() << "series" << m->series() << "model" << m->model() << "model number" << m->modelnumber();
|
||||
QDate d1 = m->FirstDay();
|
||||
QDate d2 = m->LastDay();
|
||||
QString mn = m->modelnumber();
|
||||
@ -952,7 +952,7 @@ QString Statistics::GenerateMachineList()
|
||||
}
|
||||
QString Statistics::GenerateRXChanges()
|
||||
{
|
||||
// Generate list only if there are CPAP machines
|
||||
// Generate list only if there are CPAP devices
|
||||
QList<Machine *> cpap_machines = p_profile->GetMachines(MT_CPAP);
|
||||
if (cpap_machines.isEmpty())
|
||||
return "";
|
||||
@ -973,7 +973,7 @@ QString Statistics::GenerateRXChanges()
|
||||
QString html = "<div align=center><br>";
|
||||
html += QString("<table class=curved style='page-break-before:always' " + table_width+">");
|
||||
html += "<thead>";
|
||||
html += "<tr bgcolor='"+heading_color+"'><th colspan=9 align=center><font size='+2'>" + tr("Changes to Machine Settings") + "</font></th></tr>";
|
||||
html += "<tr bgcolor='"+heading_color+"'><th colspan=9 align=center><font size='+2'>" + tr("Changes to Device Settings") + "</font></th></tr>";
|
||||
|
||||
// QString extratxt;
|
||||
|
||||
@ -1083,7 +1083,7 @@ QString Statistics::GenerateCPAPUsage()
|
||||
mach.append(cpap_machines);
|
||||
mach.append(oximeters);
|
||||
|
||||
// Go through all CPAP and Oximeter machines and see if any data is present
|
||||
// Go through all CPAP and Oximeter devices and see if any data is present
|
||||
bool havedata = false;
|
||||
for (int i=0; i < mach.size(); ++i) {
|
||||
int daysize = mach[i]->day.size();
|
||||
@ -1378,7 +1378,7 @@ QString Statistics::UpdateRecordsBox()
|
||||
"a:link,a:visited { color: inherit; text-decoration: none; }" //font-weight: normal;
|
||||
"a:hover { background-color: inherit; color: white; text-decoration:none; font-weight: bold; }"
|
||||
"</style>"
|
||||
"<title>Machine Statistics Panel</title>"
|
||||
"<title>Device Statistics Panel</title>"
|
||||
"</head><body>";
|
||||
|
||||
Machine * cpap = p_profile->GetMachine(MT_CPAP);
|
||||
|
@ -83,7 +83,7 @@ struct StatisticsRow {
|
||||
return SC_UNDEFINED;
|
||||
}
|
||||
|
||||
//! \brief Look up machine type
|
||||
//! \brief Look up device type
|
||||
MachineType lookupType(QString type)
|
||||
{
|
||||
if (type.compare("cpap", Qt::CaseInsensitive)==0) {
|
||||
@ -104,7 +104,7 @@ struct StatisticsRow {
|
||||
QString value(QDate start, QDate end);
|
||||
};
|
||||
|
||||
//! \class Prescription (Machine) setting
|
||||
//! \class Prescription (device) setting
|
||||
class RXItem {
|
||||
public:
|
||||
RXItem() {
|
||||
|
@ -54,7 +54,7 @@ void Welcome::refreshPage()
|
||||
ui->S9Warning->setVisible(showCardWarning);
|
||||
|
||||
if (!b) {
|
||||
qDebug() << "No machines in Profile";
|
||||
qDebug() << "No devices in Profile";
|
||||
// sleep(3);
|
||||
ui->cpapIcon->setPixmap(pixmap);
|
||||
}
|
||||
@ -159,7 +159,7 @@ QString Welcome::GenerateCPAPHTML()
|
||||
if (!havecpapdata && !haveoximeterdata) {
|
||||
html += "<p>" + tr("It would be a good idea to check File->Preferences first,") + "<br />" +
|
||||
tr("as there are some options that affect import.")+"</p>" +
|
||||
"<p>" + tr("Note that some preferences are forced when a ResMed machine is detected") + "</p>" +
|
||||
"<p>" + tr("Note that some preferences are forced when a ResMed device is detected") + "</p>" +
|
||||
"<p>" + tr("First import can take a few minutes.") + "</p>";
|
||||
} else {
|
||||
QDate date = p_profile->LastDay(MT_CPAP);
|
||||
@ -192,7 +192,7 @@ QString Welcome::GenerateCPAPHTML()
|
||||
QString timestr = tr("%1 hours, %2 minutes and %3 seconds").arg(hour).arg(minutes).arg(seconds);
|
||||
|
||||
const EventDataType compliance_min = p_profile->cpap->m_complianceHours; // 4.0;
|
||||
if (hours > compliance_min) html += tr("Your machine was on for %1.").arg(timestr)+"<br/>";
|
||||
if (hours > compliance_min) html += tr("Your device was on for %1.").arg(timestr)+"<br/>";
|
||||
else html += tr("<font color = red>You only had the mask on for %1.</font>").arg(timestr)+"<br/>";
|
||||
|
||||
|
||||
@ -254,7 +254,7 @@ QString Welcome::GenerateCPAPHTML()
|
||||
pressSettingChanID = CPAP_Pressure; // DreamStation ventilators report EPAP/IPAP data, but the setting is Pressure
|
||||
EventDataType pressure = day->settings_max(pressSettingChanID);
|
||||
qDebug() << pressSettingChanID << pressure;
|
||||
html += tr("Your CPAP machine used a constant %1 %2 of air")
|
||||
html += tr("Your CPAP device used a constant %1 %2 of air")
|
||||
.arg(pressure)
|
||||
.arg(schema::channel[pressChanID].units());
|
||||
} else if (cpapmode == MODE_APAP) {
|
||||
@ -267,14 +267,14 @@ QString Welcome::GenerateCPAPHTML()
|
||||
// pressSettingChanID = CPAP_IPAP;
|
||||
// EventDataType ipap = day->settings_max(pressSettingChanID);
|
||||
// EventDataType epap = day->settings_min(CPAP_EPAP);
|
||||
html += tr("Your machine used a constant %1-%2 %3 of air.")
|
||||
html += tr("Your device used a constant %1-%2 %3 of air.")
|
||||
.arg(day->validPressure(day->settings_min(CPAP_EPAP)))
|
||||
.arg(day->validPressure(day->settings_max(CPAP_IPAP)))
|
||||
.arg(schema::channel[CPAP_IPAP].units());
|
||||
} else if (cpapmode == MODE_BILEVEL_AUTO_FIXED_PS) {
|
||||
EventDataType ipap = day->percentile(pressChanID, perc/100.0);
|
||||
EventDataType epap = day->percentile(epapDataChanID, perc/100.0);
|
||||
html += tr("Your machine was under %1-%2 %3 for %4% of the time.")
|
||||
html += tr("Your device was under %1-%2 %3 for %4% of the time.")
|
||||
.arg(epap)
|
||||
.arg(ipap)
|
||||
.arg(schema::channel[pressChanID].units())
|
||||
|
@ -577,7 +577,7 @@ p, li { white-space: pre-wrap; }
|
||||
<item>
|
||||
<widget class="QLabel" name="label_6">
|
||||
<property name="text">
|
||||
<string><span style=" font-weight:600;">Warning: </span><span style=" color:#ff0000;">ResMed S9 SDCards need to be locked </span><span style=" font-weight:600; color:#ff0000;">before inserting into your computer.&nbsp;&nbsp;&nbsp;</span><span style=" color:#000000;"><br>Some operating systems write index files to the card without asking, which can render your card unreadable by your cpap machine.</span></p></body></html></string>
|
||||
<string><span style=" font-weight:600;">Warning: </span><span style=" color:#ff0000;">ResMed S9 SDCards need to be locked </span><span style=" font-weight:600; color:#ff0000;">before inserting into your computer.&nbsp;&nbsp;&nbsp;</span><span style=" color:#000000;"><br>Some operating systems write index files to the card without asking, which can render your card unreadable by your cpap device.</span></p></body></html></string>
|
||||
</property>
|
||||
<property name="wordWrap">
|
||||
<bool>false</bool>
|
||||
|
Loading…
Reference in New Issue
Block a user