Profile default values were not being set

This commit is contained in:
Mark Watkins 2012-01-13 08:46:06 +10:00
parent 24581ea38d
commit ebb8e823dd
5 changed files with 364 additions and 254 deletions

View File

@ -57,13 +57,13 @@ Profile::Profile(QString path)
p_filename=p_path+p_name+xmlext;
machlist.clear();
doctor=new DoctorInfo(this);
user=new UserInfo(this);
cpap=new CPAPSettings(this);
oxi=new OxiSettings(this);
appearance=new AppearanceSettings(this);
session=new SessionSettings(this);
general=new UserSettings(this);
doctor=NULL;
user=NULL;
cpap=NULL;
oxi=NULL;
appearance=NULL;
session=NULL;
general=NULL;
}
bool Profile::Save(QString filename)
{
@ -84,6 +84,20 @@ Profile::~Profile()
delete i.value();
}
}
bool Profile::Open(QString filename)
{
bool b=Preferences::Open(filename);
doctor=new DoctorInfo(this);
user=new UserInfo(this);
cpap=new CPAPSettings(this);
oxi=new OxiSettings(this);
appearance=new AppearanceSettings(this);
session=new SessionSettings(this);
general=new UserSettings(this);
return b;
}
void Profile::DataFormatError(Machine *m)
{
QString msg=QObject::tr("Software changes have been made that require the reimporting of the following machines data:\n\n");
@ -867,87 +881,3 @@ QDate Profile::LastGoodDay(MachineType mt)
} while (d>=f);
return f; //m_first;
}
// DoctorInfo Strings
const char * STR_DI_Name="DoctorName";
const char * STR_DI_Phone="DoctorPhone";
const char * STR_DI_Email="DoctorEmail";
const char * STR_DI_Practice="DoctorPractice";
const char * STR_DI_Address="DoctorAddress";
const char * STR_DI_PatientID="DoctorPatientID";
// UserInfo Strings
const char * STR_UI_DOB="DOB";
const char * STR_UI_FirstName="FirstName";
const char * STR_UI_LastName="LastName";
const char * STR_UI_UserName="UserName";
const char * STR_UI_Password="Password";
const char * STR_UI_Address="Address";
const char * STR_UI_Phone="Phone";
const char * STR_UI_EmailAddress="EmailAddress";
const char * STR_UI_Country="Country";
const char * STR_UI_Height="Height";
const char * STR_UI_Gender="Gender";
const char * STR_UI_TimeZone="TimeZone";
const char * STR_UI_Language="Language";
const char * STR_UI_DST="DST";
// OxiSettings Strings
const char * STR_OS_EnableOximetry="EnableOximetry";
const char * STR_OS_SyncOximetry="SyncOximetry";
const char * STR_OS_OximeterType="OximeterType";
const char * STR_OS_OxiDiscardThreshold="OxiDiscardThreshold";
const char * STR_OS_SPO2DropDuration="SPO2DropDuration";
const char * STR_OS_SPO2DropPercentage="SPO2DropPercentage";
const char * STR_OS_PulseChangeDuration="PulseChangeDuration";
const char * STR_OS_PulseChangeBPM="PulseChangeBPM";
// CPAPSettings Strings
const char * STR_CS_ComplianceHours="ComplianceHours";
const char * STR_CS_ShowCompliance="ShowCompliance";
const char * STR_CS_ShowLeaksMode="ShowLeaksMode";
const char * STR_CS_MaskStartDate="MaskStartDate";
const char * STR_CS_MaskDescription="MaskDescription";
const char * STR_CS_MaskType="MaskType";
const char * STR_CS_PrescribedMode="CPAPPrescribedMode";
const char * STR_CS_PrescribedMinPressure="CPAPPrescribedMinPressure";
const char * STR_CS_PrescribedMaxPressure="CPAPPrescribedMaxPressure";
const char * STR_CS_UntreatedAHI="UntreatedAHI";
const char * STR_CS_Notes="CPAPNotes";
const char * STR_CS_DateDiagnosed="DateDiagnosed";
const char * STR_CS_UserEventFlagging="UserEventFlagging";
const char * STR_CS_UserFlowRestriction="UserFlowRestriction";
const char * STR_CS_UserEventDuration="UserEventDuration";
const char * STR_CS_UserEventDuplicates="UserEventDuplicates";
const char * STR_CS_AHIWindow="AHIWindow";
const char * STR_CS_AHIReset="AHIReset";
// ImportSettings Strings
const char * STR_IS_DaySplitTime="DaySplitTime";
const char * STR_IS_CacheSessions="MemoryHog";
const char * STR_IS_CombineCloseSessions="CombineCloserSessions";
const char * STR_IS_IgnoreShorterSessions="IgnoreShorterSessions";
const char * STR_IS_Multithreading="EnableMultithreading";
const char * STR_IS_BackupCardData="BackupCardData";
const char * STR_IS_CompressBackupData="CompressBackupData";
const char * STR_IS_CompressSessionData="CompressSessionData";
// AppearanceSettings Strings
const char * STR_AS_GraphHeight="GraphHeight";
const char * STR_AS_AntiAliasing="UseAntiAliasing";
const char * STR_AS_GraphSnapshots="EnableGraphSnapshots";
const char * STR_AS_Animations="AnimationsAndTransitions";
const char * STR_AS_SquareWave="SquareWavePlots";
const char * STR_AS_OverlayType="OverlayType";
// UserSettings Strings
const char * STR_US_UnitSystem="UnitSystem";
const char * STR_US_EventWindowSize="EventWindowSize";
const char * STR_US_SkipEmptyDays="SkipEmptyDays";
const char * STR_US_RebuildCache="RebuildCache";
const char * STR_US_ShowDebug="ShowDebug";
const char * STR_US_LinkGroups="LinkGroups";
const char * STR_US_CalculateRDI="CalculateRDI";
const char * STR_US_ShowSerialNumbers="ShowSerialNumbers";

View File

@ -50,6 +50,8 @@ public:
Profile();
virtual ~Profile();
virtual bool Open(QString filename="");
//! \brief Save Profile object (This is an extension to Preference::Save(..))
virtual bool Save(QString filename="");
@ -151,12 +153,91 @@ extern Profile * p_profile;
#define LAYOUT (*p_layout)
#define PROFILE (*p_profile)
extern const char * STR_DI_Name;
extern const char * STR_DI_Phone;
extern const char * STR_DI_Email;
extern const char * STR_DI_Practice;
extern const char * STR_DI_Address;
extern const char * STR_DI_PatientID;
// DoctorInfo Strings
const QString STR_DI_Name="DoctorName";
const QString STR_DI_Phone="DoctorPhone";
const QString STR_DI_Email="DoctorEmail";
const QString STR_DI_Practice="DoctorPractice";
const QString STR_DI_Address="DoctorAddress";
const QString STR_DI_PatientID="DoctorPatientID";
// UserInfo Strings
const QString STR_UI_DOB="DOB";
const QString STR_UI_FirstName="FirstName";
const QString STR_UI_LastName="LastName";
const QString STR_UI_UserName="UserName";
const QString STR_UI_Password="Password";
const QString STR_UI_Address="Address";
const QString STR_UI_Phone="Phone";
const QString STR_UI_EmailAddress="EmailAddress";
const QString STR_UI_Country="Country";
const QString STR_UI_Height="Height";
const QString STR_UI_Gender="Gender";
const QString STR_UI_TimeZone="TimeZone";
const QString STR_UI_Language="Language";
const QString STR_UI_DST="DST";
// OxiSettings Strings
const QString STR_OS_EnableOximetry="EnableOximetry";
const QString STR_OS_SyncOximetry="SyncOximetry";
const QString STR_OS_OximeterType="OximeterType";
const QString STR_OS_OxiDiscardThreshold="OxiDiscardThreshold";
const QString STR_OS_SPO2DropDuration="SPO2DropDuration";
const QString STR_OS_SPO2DropPercentage="SPO2DropPercentage";
const QString STR_OS_PulseChangeDuration="PulseChangeDuration";
const QString STR_OS_PulseChangeBPM="PulseChangeBPM";
// CPAPSettings Strings
const QString STR_CS_ComplianceHours="ComplianceHours";
const QString STR_CS_ShowCompliance="ShowCompliance";
const QString STR_CS_ShowLeaksMode="ShowLeaksMode";
const QString STR_CS_MaskStartDate="MaskStartDate";
const QString STR_CS_MaskDescription="MaskDescription";
const QString STR_CS_MaskType="MaskType";
const QString STR_CS_PrescribedMode="CPAPPrescribedMode";
const QString STR_CS_PrescribedMinPressure="CPAPPrescribedMinPressure";
const QString STR_CS_PrescribedMaxPressure="CPAPPrescribedMaxPressure";
const QString STR_CS_UntreatedAHI="UntreatedAHI";
const QString STR_CS_Notes="CPAPNotes";
const QString STR_CS_DateDiagnosed="DateDiagnosed";
const QString STR_CS_UserEventFlagging="UserEventFlagging";
const QString STR_CS_UserFlowRestriction="UserFlowRestriction";
const QString STR_CS_UserEventDuration="UserEventDuration";
const QString STR_CS_UserEventDuplicates="UserEventDuplicates";
const QString STR_CS_AHIWindow="AHIWindow";
const QString STR_CS_AHIReset="AHIReset";
// ImportSettings Strings
const QString STR_IS_DaySplitTime="DaySplitTime";
const QString STR_IS_CacheSessions="MemoryHog";
const QString STR_IS_CombineCloseSessions="CombineCloserSessions";
const QString STR_IS_IgnoreShorterSessions="IgnoreShorterSessions";
const QString STR_IS_Multithreading="EnableMultithreading";
const QString STR_IS_BackupCardData="BackupCardData";
const QString STR_IS_CompressBackupData="CompressBackupData";
const QString STR_IS_CompressSessionData="CompressSessionData";
// AppearanceSettings Strings
const QString STR_AS_GraphHeight="GraphHeight";
const QString STR_AS_AntiAliasing="UseAntiAliasing";
const QString STR_AS_GraphSnapshots="EnableGraphSnapshots";
const QString STR_AS_Animations="AnimationsAndTransitions";
const QString STR_AS_SquareWave="SquareWavePlots";
const QString STR_AS_OverlayType="OverlayType";
// UserSettings Strings
const QString STR_US_UnitSystem="UnitSystem";
const QString STR_US_EventWindowSize="EventWindowSize";
const QString STR_US_SkipEmptyDays="SkipEmptyDays";
const QString STR_US_RebuildCache="RebuildCache";
const QString STR_US_ShowDebug="ShowDebug";
const QString STR_US_LinkGroups="LinkGroups";
const QString STR_US_CalculateRDI="CalculateRDI";
const QString STR_US_ShowSerialNumbers="ShowSerialNumbers";
const QString STR_US_PrefCalcMiddle="PrefCalcMiddle";
const QString STR_US_PrefCalcPercentile="PrefCalcPercentile";
const QString STR_US_PrefCalcMax="PrefCalcMax";
class DoctorInfo
{
@ -190,20 +271,6 @@ public:
Profile *m_profile;
};
extern const char * STR_UI_DOB;
extern const char * STR_UI_FirstName;
extern const char * STR_UI_LastName;
extern const char * STR_UI_UserName;
extern const char * STR_UI_Password;
extern const char * STR_UI_Address;
extern const char * STR_UI_Phone;
extern const char * STR_UI_EmailAddress;
extern const char * STR_UI_Country;
extern const char * STR_UI_Height;
extern const char * STR_UI_Gender;
extern const char * STR_UI_TimeZone;
extern const char * STR_UI_Language;
extern const char * STR_UI_DST;
/*! \class UserInfo
\brief Profile Options relating to the User Information
@ -278,14 +345,6 @@ public:
Profile *m_profile;
};
extern const char * STR_OS_EnableOximetry;
extern const char * STR_OS_SyncOximetry;
extern const char * STR_OS_OximeterType;
extern const char * STR_OS_OxiDiscardThreshold;
extern const char * STR_OS_SPO2DropDuration;
extern const char * STR_OS_SPO2DropPercentage;
extern const char * STR_OS_PulseChangeDuration;
extern const char * STR_OS_PulseChangeBPM;
/*! \class OxiSettings
\brief Profile Options relating to the Oximetry settings
@ -330,25 +389,6 @@ public:
Profile *m_profile;
};
extern const char * STR_CS_ComplianceHours;
extern const char * STR_CS_ShowCompliance;
extern const char * STR_CS_ShowLeaksMode;
extern const char * STR_CS_MaskStartDate;
extern const char * STR_CS_MaskDescription;
extern const char * STR_CS_MaskType;
extern const char * STR_CS_PrescribedMode;
extern const char * STR_CS_PrescribedMinPressure;
extern const char * STR_CS_PrescribedMaxPressure;
extern const char * STR_CS_UntreatedAHI;
extern const char * STR_CS_Notes;
extern const char * STR_CS_DateDiagnosed;
extern const char * STR_CS_UserEventFlagging;
extern const char * STR_CS_UserFlowRestriction;
extern const char * STR_CS_UserEventDuration;
extern const char * STR_CS_UserEventDuplicates;
extern const char * STR_CS_AHIWindow;
extern const char * STR_CS_AHIReset;
/*! \class CPAPSettings
\brief Profile Options relating to the CPAP settings
*/
@ -426,15 +466,6 @@ public:
Profile *m_profile;
};
extern const char * STR_IS_DaySplitTime;
extern const char * STR_IS_CacheSessions;
extern const char * STR_IS_CombineCloseSessions;
extern const char * STR_IS_IgnoreShorterSessions;
extern const char * STR_IS_Multithreading;
extern const char * STR_IS_BackupCardData;
extern const char * STR_IS_CompressBackupData;
extern const char * STR_IS_CompressSessionData;
/*! \class ImportSettings
\brief Profile Options relating to the Import process
*/
@ -478,13 +509,6 @@ public:
Profile *m_profile;
};
extern const char * STR_AS_GraphHeight;
extern const char * STR_AS_AntiAliasing;
extern const char * STR_AS_GraphSnapshots;
extern const char * STR_AS_Animations;
extern const char * STR_AS_SquareWave;
extern const char * STR_AS_OverlayType;
/*! \class AppearanceSettings
\brief Profile Options relating to Visual Appearance
*/
@ -534,15 +558,6 @@ public:
Profile *m_profile;
};
extern const char * STR_US_UnitSystem;
extern const char * STR_US_EventWindowSize;
extern const char * STR_US_SkipEmptyDays;
extern const char * STR_US_RebuildCache;
extern const char * STR_US_ShowDebug;
extern const char * STR_US_LinkGroups;
extern const char * STR_US_CalculateRDI;
extern const char * STR_US_ShowSerialNumbers;
/*! \class UserSettings
\brief Profile Options relating to General User Settings
*/
@ -560,6 +575,9 @@ public:
if (!m_profile->contains(STR_US_LinkGroups)) (*m_profile)[STR_US_LinkGroups]=true; // can't remember..
if (!m_profile->contains(STR_US_CalculateRDI)) (*m_profile)[STR_US_CalculateRDI]=false;
if (!m_profile->contains(STR_US_ShowSerialNumbers)) (*m_profile)[STR_US_ShowSerialNumbers]=false;
if (!m_profile->contains(STR_US_PrefCalcMiddle)) (*m_profile)[STR_US_PrefCalcMiddle]=(int)0;
if (!m_profile->contains(STR_US_PrefCalcPercentile)) (*m_profile)[STR_US_PrefCalcPercentile]=(double)95.0;
if (!m_profile->contains(STR_US_PrefCalcMax)) (*m_profile)[STR_US_PrefCalcMax]=(int)0;
}
~UserSettings() {}
@ -573,6 +591,10 @@ public:
bool linkGroups() { return (*m_profile)[STR_US_LinkGroups].toBool(); }
bool calculateRDI() { return (*m_profile)[STR_US_CalculateRDI].toBool(); }
bool showSerialNumbers() { return (*m_profile)[STR_US_ShowSerialNumbers].toBool(); }
int prefCalcMiddle() { return (*m_profile)[STR_US_PrefCalcMiddle].toInt(); }
double prefCalcPercentile() { return (*m_profile)[STR_US_PrefCalcPercentile].toDouble(); }
int prefCalcMax() { return (*m_profile)[STR_US_PrefCalcMax].toInt(); }
void setUnitSystem(UnitSystem us) { (*m_profile)[STR_US_UnitSystem]=(int)us; }
void setEventWindowSize(double size) { (*m_profile)[STR_US_EventWindowSize]=size; }
@ -582,6 +604,9 @@ public:
void setLinkGroups(bool link) { (*m_profile)[STR_US_LinkGroups]=link; }
void setCalculateRDI(bool rdi) { (*m_profile)[STR_US_CalculateRDI]=rdi; }
void setShowSerialNumbers(bool enabled) { (*m_profile)[STR_US_ShowSerialNumbers]=enabled; }
void setPrefCalcMiddle(int i) { (*m_profile)[STR_US_PrefCalcMiddle]=i; }
void setPrefCalcPercentile(double p) { (*m_profile)[STR_US_PrefCalcPercentile]=p; }
void setPrefCalcMax(int i) { (*m_profile)[STR_US_PrefCalcMax]=i; }
Profile *m_profile;
};

View File

@ -9,9 +9,10 @@
<list>
<li>Auto-Updater test for Windows & Mac Platforms</li>
<li>Adds Total Leaks Overview chart for PRS1 Users.</li>
<li>Preliminary ZEO CSV Support</li>
<li>Preliminary ZEO CSV Support, and simple SleepStage line graph</li>
<li>Fixes Overview AHI chart showing "No Data" on 0.00 days.</li>
<li>Fixes crash after using Preferences before importing first data.</li>
<li>Fixes first minute of Resp. Rate & Minute Vent calcs not showing data. (You will have to Data->Advanced->Purge CPAP Data and then reimport if you want this, as recalc won't do it)</li>
</list>
<p><b>Would you like to help test breaky stuff?</b></p>
<p>Advanced users who are willing, can now help test future updates, so we can hopefully avoid unleashing unintentonally buggy versions on everyone else.</p>

View File

@ -168,6 +168,12 @@ PreferencesDialog::PreferencesDialog(QWidget *parent,Profile * _profile) :
ui->complianceGroupbox->setChecked(profile->cpap->showComplianceInfo());
ui->complianceHours->setValue(profile->cpap->complianceHours());
ui->prefCalcMiddle->setCurrentIndex(profile->general->prefCalcMiddle());
ui->prefCalcMax->setCurrentIndex(profile->general->prefCalcMax());
float f=profile->general->prefCalcPercentile();
ui->prefCalcPercentile->setValue(f);
bool bcd=profile->session->backupCardData();
ui->createSDBackups->setChecked(bcd);
ui->compressSDBackups->setEnabled(bcd);
@ -298,6 +304,12 @@ bool PreferencesDialog::Save()
//recalc_events=true;
needs_restart=true;
}
if ((profile->general->prefCalcMiddle()!=ui->prefCalcMiddle->currentIndex())
|| (profile->general->prefCalcMax()!=ui->prefCalcMax->currentIndex())
|| (profile->general->prefCalcPercentile()!=ui->prefCalcPercentile->value())) {
needs_restart=true;
}
if (profile->cpap->userEventFlagging() &&
(profile->cpap->userEventDuration()!=ui->apneaDuration->value() ||
profile->cpap->userEventDuplicates()!=ui->userEventDuplicates->isChecked() ||
@ -343,6 +355,9 @@ bool PreferencesDialog::Save()
profile->cpap->setMaskStartDate(ui->startedUsingMask->date());
profile->appearance->setGraphHeight(ui->graphHeight->value());
profile->general->setPrefCalcMiddle(ui->prefCalcMiddle->currentIndex());
profile->general->setPrefCalcMax(ui->prefCalcMax->currentIndex());
profile->general->setPrefCalcPercentile(ui->prefCalcPercentile->value());
profile->general->setCalculateRDI(ui->AddRERAtoAHI->isChecked());
profile->session->setBackupCardData(ui->createSDBackups->isChecked());

View File

@ -608,11 +608,8 @@ p, li { white-space: pre-wrap; }
</widget>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout_13">
<property name="spacing">
<number>4</number>
</property>
<item>
<layout class="QGridLayout" name="gridLayout_11">
<item row="1" column="0" colspan="3">
<widget class="QCheckBox" name="AddRERAtoAHI">
<property name="font">
<font>
@ -628,7 +625,7 @@ p, li { white-space: pre-wrap; }
</property>
</widget>
</item>
<item>
<item row="2" column="0" colspan="3">
<widget class="QGroupBox" name="complianceGroupbox">
<property name="toolTip">
<string>Don't show any compliance information</string>
@ -694,7 +691,7 @@ p, li { white-space: pre-wrap; }
</layout>
</widget>
</item>
<item>
<item row="3" column="0" colspan="3">
<widget class="QGroupBox" name="customEventGroupbox">
<property name="toolTip">
<string>Enable/disable experimental event flagging enhancements.
@ -830,7 +827,7 @@ p, li { white-space: pre-wrap; }
</layout>
</widget>
</item>
<item>
<item row="4" column="0" colspan="3">
<widget class="QGroupBox" name="ahiGraphGroupbox">
<property name="title">
<string>AHI/Hour Graph Settings</string>
@ -894,7 +891,7 @@ Defaults to 60 minutes.. Highly recommend it's left at this value.</string>
</layout>
</widget>
</item>
<item>
<item row="5" column="0">
<spacer name="verticalSpacer_7">
<property name="orientation">
<enum>Qt::Vertical</enum>
@ -1299,7 +1296,7 @@ p, li { white-space: pre-wrap; }
<attribute name="title">
<string>&amp;General</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_7">
<layout class="QVBoxLayout" name="verticalLayout_6">
<property name="spacing">
<number>4</number>
</property>
@ -1307,7 +1304,7 @@ p, li { white-space: pre-wrap; }
<number>4</number>
</property>
<item>
<widget class="QGroupBox" name="groupBox_2">
<widget class="QGroupBox" name="GeneralSettings">
<property name="title">
<string>General Settings</string>
</property>
@ -1318,16 +1315,6 @@ p, li { white-space: pre-wrap; }
<property name="spacing">
<number>4</number>
</property>
<item row="1" column="0">
<widget class="QCheckBox" name="skipLoginScreen">
<property name="toolTip">
<string>Bypass the login screen and load the most recent User Profile</string>
</property>
<property name="text">
<string>Skip Login Screen</string>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QCheckBox" name="skipEmptyDays">
<property name="toolTip">
@ -1349,91 +1336,225 @@ Mainly affects the importer.</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QCheckBox" name="skipLoginScreen">
<property name="toolTip">
<string>Bypass the login screen and load the most recent User Profile</string>
</property>
<property name="text">
<string>Skip Login Screen</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<spacer name="verticalSpacer_3">
<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>
<widget class="Line" name="line_3">
<widget class="Line" name="line_7">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox_3">
<property name="title">
<string>Import Locations</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_10">
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>4</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QListView" name="importListWidget">
<property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set>
<layout class="QHBoxLayout" name="horizontalLayout_14">
<item>
<widget class="QGroupBox" name="PreferredCalcs">
<property name="toolTip">
<string>Changes to the following settings needs a restart, but not a recalc.</string>
</property>
<property name="title">
<string>Preferred Calculation Methods</string>
</property>
<layout class="QGridLayout" name="gridLayout_12">
<property name="leftMargin">
<number>0</number>
</property>
</widget>
</item>
<item>
<widget class="QWidget" name="widget" native="true">
<layout class="QVBoxLayout" name="verticalLayout_9">
<item>
<widget class="QPushButton" name="addImportLocation">
<property name="topMargin">
<number>4</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<property name="spacing">
<number>4</number>
</property>
<item row="0" column="0">
<widget class="QLabel" name="label_37">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Middle Calculations</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_42">
<property name="text">
<string>Upper Percentile</string>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QSpinBox" name="prefCalcPercentile">
<property name="toolTip">
<string>For consistancy, ResMed users should use 95% here,
as this is the only value available on summary-only days.</string>
</property>
<property name="suffix">
<string notr="true">%</string>
</property>
<property name="minimum">
<number>1</number>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QComboBox" name="prefCalcMiddle">
<property name="toolTip">
<string>Median is recommended for ResMed users.</string>
</property>
<item>
<property name="text">
<string>Add</string>
<string>Median</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="removeImportLocation">
</item>
<item>
<property name="text">
<string>Remove</string>
<string>Weighted Average</string>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer_5">
<property name="orientation">
<enum>Qt::Vertical</enum>
</item>
<item>
<property name="text">
<string>Normal Average</string>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</item>
</widget>
</item>
<item row="2" column="2">
<widget class="QComboBox" name="prefCalcMax">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>140</width>
<height>0</height>
</size>
</property>
<property name="toolTip">
<string>ResMed users probably should use 99th Percentile for visual consistency.</string>
</property>
<item>
<property name="text">
<string>True Maximum</string>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
</layout>
</item>
<item>
<property name="text">
<string>99% Percentile</string>
</property>
</item>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_43">
<property name="text">
<string>Maximum Calcs</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="Line" name="line_6">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</widget>
</item>
<item>
<widget class="QGroupBox" name="ImportLocations">
<property name="title">
<string>Import Locations</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_10">
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>4</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QListView" name="importListWidget">
<property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set>
</property>
</widget>
</item>
<item>
<widget class="QWidget" name="widget" native="true">
<layout class="QVBoxLayout" name="verticalLayout_9">
<item>
<widget class="QPushButton" name="addImportLocation">
<property name="text">
<string>Add</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="removeImportLocation">
<property name="text">
<string>Remove</string>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer_5">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</item>
<item>
<widget class="Line" name="line_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item>
@ -1617,15 +1738,33 @@ p, li { white-space: pre-wrap; }
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Allow experimental and test builds (Advanced users only please.)</string>
<string>I want to try experimental and test builds (Advanced users only please.)</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<spacer name="verticalSpacer_3">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<widget class="QWidget" name="tab">
<attribute name="title">
<string>Page</string>
</attribute>
</widget>
<widget class="QWidget" name="appearanceTab">
<attribute name="title">
<string>&amp;Appearance</string>