This commit is contained in:
Arie Klerk 2016-03-18 08:25:06 +01:00
commit 88fa34af9f
16 changed files with 473 additions and 352 deletions

View File

@ -221,6 +221,7 @@ void MinutesAtPressure::paint(QPainter &painter, gGraph &graph, const QRegion &r
double p0, p1, p2, p3;
QString label;
double s2;
int widest_YAxis = 0;
int mouseOverKey = 0;
@ -280,7 +281,7 @@ void MinutesAtPressure::paint(QPainter &painter, gGraph &graph, const QRegion &r
} else {
str.chop(1);// +=QObject::tr("No Data Here");
}
graph.ToolTip(str, mouse.x(), mouse.y(), TT_AlignLeft);
graph.ToolTip(str, mouse.x(), mouse.y(), TT_AlignRight);
}
@ -314,14 +315,17 @@ void MinutesAtPressure::paint(QPainter &painter, gGraph &graph, const QRegion &r
// Plot IPAP Time at Pressure
////////////////////////////////////////////////////////////////////
xp=left;
double lastyp = bottom - (double(ipap.times[min-1]) * ystep);
s2 = double(ipap.times[qMax(0, min-1)]/60.0);
if (s2 < 0) s2=0;
double lastyp = bottom - (s2 * ystep);
for (int i=min; i<max; ++i) {
p0 = ipap.times[i-1] / 60.0;
p1 = ipap.times[i]/ 60.0;
p2 = ipap.times[i+1]/ 60.0;
p3 = ipap.times[i+2]/ 60.0;
yp = bottom - (double(p1) * ystep);
yp = bottom - qMax((double(p1) * ystep),0.0);
if (i == mouseOverKey) {
painter.setPen(QPen(Qt::black));
@ -332,25 +336,26 @@ void MinutesAtPressure::paint(QPainter &painter, gGraph &graph, const QRegion &r
painter.drawLine(xp, lastyp, xp+xstep, yp);
lastyp = yp;
xp += xstep;
double s2 = qMax(CatmullRomSpline(p0, p1, p2, p3, 0.2),0.0f);
s2 = qMax(CatmullRomSpline(p0, p1, p2, p3, 0.2), 0.0f);
yp = qMax(double(bottom-height), (bottom - (s2 * ystep)));
painter.drawLine(xp, lastyp, xp+xstep, yp);
lastyp = yp;
xp += xstep;
s2 = qMax(CatmullRomSpline(p0, p1, p2, p3, 0.4),0.0f);
s2 = qMax(CatmullRomSpline(p0, p1, p2, p3, 0.4), 0.0f);
yp = qMax(double(bottom-height), (bottom - (s2 * ystep)));
painter.drawLine(xp, lastyp, xp+xstep, yp);
lastyp = yp;
xp += xstep;
s2 = qMax(CatmullRomSpline(p0, p1, p2, p3, 0.6),0.0f);
s2 = qMax(CatmullRomSpline(p0, p1, p2, p3, 0.6), 0.0f);
yp = qMax(double(bottom-height), (bottom - (s2 * ystep)));
painter.drawLine(xp, lastyp, xp+xstep, yp);
xp+=xstep;
lastyp = yp;
s2 = qMax(CatmullRomSpline(p0, p1, p2, p3, 0.8),0.0f);
s2 = qMax(CatmullRomSpline(p0, p1, p2, p3, 0.8), 0.0f);
if (s2 < 0) s2=0;
yp = qMax(double(bottom-height), (bottom - (s2 * ystep)));
painter.drawLine(xp, lastyp, xp+xstep, yp);
xp+=xstep;
@ -412,36 +417,37 @@ void MinutesAtPressure::paint(QPainter &painter, gGraph &graph, const QRegion &r
xp = left;
lastyp = bottom - (double(ipap.events[ch][min-1]) * estep);
s2 = ipap.events[ch][qMax(min-1,0)];
lastyp = bottom - (s2 * estep);
for (int i=min; i<max; ++i) {
p0 = ipap.events[ch][i-1];
p1 = ipap.events[ch][i];
p2 = ipap.events[ch][i+1];
p3 = ipap.events[ch][i+1];
yp = bottom - (double(p1) * estep);
yp = bottom - qMax((double(p1) * estep),0.0);
painter.drawLine(xp, lastyp, xp+xstep, yp);
lastyp = yp;
xp += xstep;
double s2 = qMax(CatmullRomSpline(p0, p1, p2, p3, 0.2),0.0f);
s2 = qMax(CatmullRomSpline(p0, p1, p2, p3, 0.2), 0.0f);
yp = qMax(double(bottom-height), double(bottom - (s2 * estep)));
painter.drawLine(xp, lastyp, xp+xstep, yp);
lastyp = yp;
xp += xstep;
s2 = qMax(CatmullRomSpline(p0, p1, p2, p3, 0.4),0.0f);
s2 = qMax(CatmullRomSpline(p0, p1, p2, p3, 0.4), 0.0f);
yp = qMax(double(bottom-height), double(bottom - (s2 * estep)));
painter.drawLine(xp, lastyp, xp+xstep, yp);
lastyp = yp;
xp += xstep;
s2 = qMax(CatmullRomSpline(p0, p1, p2, p3, 0.6),0.0f);
s2 = qMax(CatmullRomSpline(p0, p1, p2, p3, 0.6), 0.0f);
yp = qMax(double(bottom-height), double(bottom - (s2 * estep)));
painter.drawLine(xp, lastyp, xp+xstep, yp);
xp+=xstep;
lastyp = yp;
s2 = qMax(CatmullRomSpline(p0, p1, p2, p3, 0.8),0.0f);
s2 = qMax(CatmullRomSpline(p0, p1, p2, p3, 0.8), 0.0f);
yp = qMax(double(bottom-height), double(bottom - (s2 * estep)));
painter.drawLine(xp, lastyp, xp+xstep, yp);
xp+=xstep;
@ -477,25 +483,25 @@ void MinutesAtPressure::paint(QPainter &painter, gGraph &graph, const QRegion &r
lastyp = yp;
xp += xstep;
double s2 = qMax(CatmullRomSpline(p0, p1, p2, p3, 0.2),0.0f);
s2 = qMax(CatmullRomSpline(p0, p1, p2, p3, 0.2), 0.0f);
yp = qMax(double(bottom-height), (bottom - (s2 * estep)));
painter.drawLine(xp, lastyp, xp+xstep, yp);
lastyp = yp;
xp += xstep;
s2 = qMax(CatmullRomSpline(p0, p1, p2, p3, 0.4),0.0f);
s2 = qMax(CatmullRomSpline(p0, p1, p2, p3, 0.4), 0.0f);
yp = qMax(double(bottom-height), (bottom - (s2 * estep)));
painter.drawLine(xp, lastyp, xp+xstep, yp);
lastyp = yp;
xp += xstep;
s2 = qMax(CatmullRomSpline(p0, p1, p2, p3, 0.6),0.0f);
s2 = qMax(CatmullRomSpline(p0, p1, p2, p3, 0.6), 0.0f);
yp = qMax(double(bottom-height), (bottom - (s2 * estep)));
painter.drawLine(xp, lastyp, xp+xstep, yp);
xp+=xstep;
lastyp = yp;
s2 = qMax(CatmullRomSpline(p0, p1, p2, p3, 0.8),0.0f);
s2 = qMax(CatmullRomSpline(p0, p1, p2, p3, 0.8), 0.0f);
yp = qMax(double(bottom-height), (bottom - (s2 * estep)));
painter.drawLine(xp, lastyp, xp+xstep, yp);
xp+=xstep;
@ -510,7 +516,8 @@ void MinutesAtPressure::paint(QPainter &painter, gGraph &graph, const QRegion &r
if (epap.min_pressure) {
painter.setPen(QPen(echan.defaultColor(), p_profile->appearance->lineThickness()));
xp=left, lastyp = bottom - (double(epap.times[min]) * ystep);
s2 = double(epap.times[qMax(min,0)]/60.0);
xp=left, lastyp = bottom - (s2 * ystep);
for (int i=min; i<max; ++i) {
p0 = epap.times[i-1]/60.0;
p1 = epap.times[i]/60.0;
@ -523,30 +530,30 @@ void MinutesAtPressure::paint(QPainter &painter, gGraph &graph, const QRegion &r
painter.setPen(QPen(echan.defaultColor(), p_profile->appearance->lineThickness()));
}
yp = bottom - (double(p1) * ystep);
yp = bottom - qMax((double(p1) * ystep), 0.0);
painter.drawLine(xp, lastyp, xp+xstep, yp);
lastyp = yp;
xp += xstep;
double s2 = qMax(CatmullRomSpline(p0, p1, p2, p3, 0.2),0.0f);
s2 = qMax(CatmullRomSpline(p0, p1, p2, p3, 0.2), 0.0f);
yp = qMax(double(bottom-height), (bottom - (s2 * ystep)));
painter.drawLine(xp, lastyp, xp+xstep, yp);
lastyp = yp;
xp += xstep;
s2 = qMax(CatmullRomSpline(p0, p1, p2, p3, 0.4),0.0f);
s2 = qMax(CatmullRomSpline(p0, p1, p2, p3, 0.4), 0.0f);
yp = qMax(double(bottom-height), (bottom - (s2 * ystep)));
painter.drawLine(xp, lastyp, xp+xstep, yp);
lastyp = yp;
xp += xstep;
s2 = qMax(CatmullRomSpline(p0, p1, p2, p3, 0.6),0.0f);
s2 = qMax(CatmullRomSpline(p0, p1, p2, p3, 0.6), 0.0f);
yp = qMax(double(bottom-height), (bottom - (s2 * ystep)));
painter.drawLine(xp, lastyp, xp+xstep, yp);
xp+=xstep;
lastyp = yp;
s2 = qMax(CatmullRomSpline(p0, p1, p2, p3, 0.8),0.0f);
s2 = qMax(CatmullRomSpline(p0, p1, p2, p3, 0.8), 0.0f);
yp = qMax(double(bottom-height), (bottom - (s2 * ystep)));
painter.drawLine(xp, lastyp, xp+xstep, yp);
xp+=xstep;

View File

@ -482,6 +482,6 @@ int gXAxisPressure::minimumHeight()
#endif
}
void gXAxisPressure::paint(QPainter &painter, gGraph &graph, const QRegion &region)
void gXAxisPressure::paint(QPainter & /*painter*/, gGraph &/*graph*/, const QRegion &/*region*/)
{
}

View File

@ -129,6 +129,10 @@ QString STR_UNIT_CMH2O;
QString STR_UNIT_Hours;
QString STR_UNIT_Minutes;
QString STR_UNIT_Seconds;
QString STR_UNIT_h;
QString STR_UNIT_m;
QString STR_UNIT_s;
QString STR_UNIT_ms;
QString STR_UNIT_BPM; // Beats per Minute
QString STR_UNIT_LPM; // Litres per Minute
QString STR_UNIT_ml; // MilliLitres
@ -325,6 +329,10 @@ void initializeStrings()
STR_UNIT_Hours = QObject::tr("Hours");
STR_UNIT_Minutes = QObject::tr("Minutes");
STR_UNIT_Seconds = QObject::tr("Seconds");
STR_UNIT_h = QObject::tr("h"); // hours shortform
STR_UNIT_m = QObject::tr("m"); // minutes shortform
STR_UNIT_s = QObject::tr("s"); // seconds shortform
STR_UNIT_ms = QObject::tr("ms"); // milliseconds
STR_UNIT_EventsPerHour = QObject::tr("Events/hr"); // Events per hour
STR_UNIT_Percentage = QObject::tr("%");
STR_UNIT_Hz = QObject::tr("Hz"); // Hertz

View File

@ -123,7 +123,6 @@ const QString STR_GEN_UpdatesAutoCheck = "Updates_AutoCheck";
const QString STR_GEN_UpdateCheckFrequency = "Updates_CheckFrequency";
const QString STR_GEN_DataFolder = "DataFolder";
const QString STR_PREF_AllowEventRenaming = "AllowEventRenaming";
const QString STR_PREF_AllowEarlyUpdates = "AllowEarlyUpdates";
const QString STR_PREF_ReimportBackup = "ReimportBackup";
const QString STR_PREF_LastCPAPPath = "LastCPAPPath";
@ -159,6 +158,10 @@ extern QString STR_UNIT_CMH2O;
extern QString STR_UNIT_Hours;
extern QString STR_UNIT_Minutes;
extern QString STR_UNIT_Seconds;
extern QString STR_UNIT_h; // (h)ours, (m)inutes, (s)econds
extern QString STR_UNIT_m;
extern QString STR_UNIT_s;
extern QString STR_UNIT_ms;
extern QString STR_UNIT_BPM; // Beats per Minute
extern QString STR_UNIT_LPM; // Litres per Minute
extern QString STR_UNIT_ml; // millilitres

View File

@ -2102,6 +2102,8 @@ bool PRS1Import::ParseSummaryF5V2()
CPAPMode cpapmode = MODE_UNKNOWN;
summary_duration = data[0x18] | data[0x19] << 8;
return true;
}
bool PRS1Import::ParseSummaryF0V6()

View File

@ -3340,8 +3340,6 @@ void ResmedLoader::initChannels()
chan->addOption(10, QObject::tr("???"));
chan->addOption(11, QObject::tr("Auto for Her"));
channel.add(GRP_CPAP, chan = new Channel(RMS9_EPR = 0xe201, SETTING, MT_CPAP, SESSION,
"EPR", QObject::tr("EPR"),
QObject::tr("ResMed Exhale Pressure Relief"),

View File

@ -174,6 +174,8 @@ extern ChannelID POS_Orientation, POS_Inclination;
const QString GRP_CPAP = "CPAP";
const QString GRP_POS = "POS";
const QString GRP_OXI = "OXI";
const QString GRP_JOURNAL = "JOURNAL";
const QString GRP_SLEEP = "SLEEP";
#endif // MACHINE_COMMON_H

View File

@ -106,6 +106,7 @@ void init()
DataTypes["datetime"] = DATETIME;
DataTypes["time"] = TIME;
// 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")) {
QMessageBox::critical(0, STR_MessageBox_Error,
QObject::tr("Couldn't parse Channels.xml, this build is seriously borked, no choice but to abort!!"),
@ -472,6 +473,136 @@ void init()
ch->addOption(7, QObject::tr("ASV (Variable EPAP)"));
ch->addOption(8, QObject::tr("AVAPS"));
// <channel id="0x0800" class="data" name="BPSys" details="Blood Pressure Systolic" label="BPS" unit="mmHg" color="red"/>
// <channel id="0x0801" class="data" name="BPDia" details="Blood Pressure Diastolic" label="BPD" unit="mmHg" color="blue"/>
// <channel id="0x0802" class="data" name="Glucose" details="Blood Glucose" label="BGL" unit="mmol/L" color="black"/>
// <channel id="0x0803" class="data" scope="!day" name="Weight" details="Weight" label="Weight" unit="Kg" color="black"/>
schema::channel.add(GRP_JOURNAL, ch = new Channel(Journal_Weight = 0x0803, DATA, MT_JOURNAL, DAY,
"Weight", QObject::tr("Weight"),
QObject::tr("Weight"),
QObject::tr("Weight"), STR_UNIT_KG,
DOUBLE, Qt::black));
// Kids grow... but that adds a whole nother layer of complexity.
// <channel id="0x0804" class="data" scope="!day" name="Height" details="Height" label="Height" unit="cm" color="blue"/>
schema::channel.add(GRP_JOURNAL, ch = new Channel(0x0804, DATA, MT_JOURNAL, DAY,
"Height", QObject::tr("Height"),
QObject::tr("Physical Height"),
QObject::tr("Height"), STR_UNIT_CM,
DOUBLE, Qt::black));
// <channel id="0x0805" class="data" name="BookmarkNotes" details="Session Bookmark Notes" label="Bookmark Notes" unit="text" color="orange"/>
schema::channel.add(GRP_JOURNAL, ch = new Channel(0x0805, DATA, MT_JOURNAL, DAY,
"BookmarkNotes", QObject::tr("Notes"),
QObject::tr("Bookmark Notes"),
QObject::tr("Notes"), QString(),
STRING, Qt::black));
// <channel id="0x0806" class="data" name="BMI" details="Body Mass Index" label="BMI" unit="kg/m2" color="orange"/>
schema::channel.add(GRP_JOURNAL, ch = new Channel(Journal_BMI = 0x0806, DATA, MT_JOURNAL, DAY,
"BMI", QObject::tr("BMI"),
QObject::tr("Body Mass Index"),
QObject::tr("BMI"), QString(),
DOUBLE, Qt::black));
// <channel id="0x0807" class="data" name="ZombieMeter" details="How good you feel." label="Alive" unit="0-10" color="orange"/>
schema::channel.add(GRP_JOURNAL, ch = new Channel(Journal_ZombieMeter = 0x0807, DATA, MT_JOURNAL, DAY,
"ZombieMeter", QObject::tr("Zombie"),
QObject::tr("How you feel (0 = like crap, 10 = unstoppable)"),
QObject::tr("Zombie"), QString(),
DOUBLE, Qt::black));
// <channel id="0x0808" class="data" name="BookmarkStart" details="Session Bookmark Start" label="Bookmark Start" unit="duration" color="orange"/>
schema::channel.add(GRP_JOURNAL, ch = new Channel(0x0808, DATA, MT_JOURNAL, DAY,
"BookmarkStart", QObject::tr("Start"),
QObject::tr("Bookmark Start"),
QObject::tr("Start"), QString(),
INTEGER, Qt::black));
// <channel id="0x0809" class="data" name="BookmarkEnd" details="Session Bookmark End" label="Bookmark End" unit="duration" color="orange"/>
schema::channel.add(GRP_JOURNAL, ch = new Channel(0x0809, DATA, MT_JOURNAL, DAY,
"BookmarkEnd", QObject::tr("End"),
QObject::tr("Bookmark End"),
QObject::tr("End"), QString(),
DOUBLE, Qt::black));
// <channel id="0x080a" class="data" scope="!day" name="LastUpdated" details="Last Updated" label="Last Updated" unit="timestamp" color="orange"/>
schema::channel.add(GRP_JOURNAL, ch = new Channel(0x080a, DATA, MT_JOURNAL, DAY,
"LastUpdated", QObject::tr("Last Updated"),
QObject::tr("Last Updated"),
QObject::tr("Last Updated"), QString(),
DATETIME, Qt::black));
// <channel id="0xd000" class="data" scope="!day" unique="true" name="Journal" details="Journal Notes" label="Journal" type="richtext"/>
schema::channel.add(GRP_JOURNAL, ch = new Channel(Journal_Notes = 0xd000, DATA, MT_JOURNAL, DAY,
"Journal", QObject::tr("Journal Notes"),
QObject::tr("Journal Notes"),
QObject::tr("Journal"), QString(),
RICHTEXT, Qt::black));
// <channel id="0x2000" class="data" name="SleepStage" details="Sleep Stage" label="Sleep Stage" unit="1=Awake 2=REM 3=Light Sleep 4=Deep Sleep" color="dark grey"/>
schema::channel.add(GRP_SLEEP, ch = new Channel(ZEO_SleepStage = 0x2000, WAVEFORM, MT_SLEEPSTAGE, SESSION,
"SleepStage", QObject::tr("Sleep Stage"),
QObject::tr("1=Awake 2=REM 3=Light Sleep 4=Deep Sleep"),
QObject::tr("Sleep Stage"), QString(),
INTEGER, Qt::darkGray));
// <channel id="0x2001" class="data" name="ZeoBW" details="Zeo Brainwave" label="ZeoWave" color="black"/>
schema::channel.add(GRP_SLEEP, ch = new Channel(0x2001, WAVEFORM, MT_SLEEPSTAGE, SESSION,
"ZeoBW", QObject::tr("Brain Wave"),
QObject::tr("Brain Wave"),
QObject::tr("BrainWave"), QString(),
INTEGER, Qt::black));
// <channel id="0x2002" class="data" name="Awakenings" details="Awakenings" label="Awakenings" color="black"/>
schema::channel.add(GRP_SLEEP, ch = new Channel(ZEO_Awakenings = 0x2002, DATA, MT_SLEEPSTAGE, SESSION,
"Awakenings", QObject::tr("Awakenings"),
QObject::tr("Number of Awakenings"),
QObject::tr("Awakenings"), QString(),
INTEGER, Qt::black));
// <channel id="0x2003" class="data" name="MorningFeel" details="ZEO Morning Feel" label="Morning Feel" color="black"/>
schema::channel.add(GRP_SLEEP, ch = new Channel(ZEO_MorningFeel= 0x2003, DATA, MT_SLEEPSTAGE, SESSION,
"MorningFeel", QObject::tr("Morning Feel"),
QObject::tr("How you felt in the morning"),
QObject::tr("Morning Feel"), QString(),
INTEGER, Qt::black));
// <channel id="0x2004" class="data" name="TimeInWake" details="Time In Wake" label="Time In Wake" color="red"/>
schema::channel.add(GRP_SLEEP, ch = new Channel(ZEO_TimeInWake = 0x2004, DATA, MT_SLEEPSTAGE, SESSION,
"TimeInWake", QObject::tr("Time Awake"),
QObject::tr("Time spent awake"),
QObject::tr("Time Awake"), STR_UNIT_Minutes,
INTEGER, Qt::black));
// <channel id="0x2005" class="data" name="TimeInREM" details="Time In REM Sleep" label="Time In REM" color="green"/>
schema::channel.add(GRP_SLEEP, ch = new Channel(ZEO_TimeInREM = 0x2005, DATA, MT_SLEEPSTAGE, SESSION,
"TimeInREM", QObject::tr("Time In REM Sleep"),
QObject::tr("Time spent in REM Sleep"),
QObject::tr("Time in REM Sleep"), STR_UNIT_Minutes,
INTEGER, Qt::black));
// <channel id="0x2006" class="data" name="TimeInLight" details="Time In Light Sleep" label="Time In Light" color="blue"/>
schema::channel.add(GRP_SLEEP, ch = new Channel(ZEO_TimeInLight = 0x2006, DATA, MT_SLEEPSTAGE, SESSION,
"TimeInLight", QObject::tr("Time In Light Sleep"),
QObject::tr("Time spent in light sleep"),
QObject::tr("Time in Light Sleep"), STR_UNIT_Minutes,
INTEGER, Qt::black));
// <channel id="0x2007" class="data" name="TimeInDeep" details="Time In Deep Sleep" label="Time In Deep" color="magenta"/>
schema::channel.add(GRP_SLEEP, ch = new Channel(ZEO_TimeInDeep= 0x2007, DATA, MT_SLEEPSTAGE, SESSION,
"TimeInDeep", QObject::tr("Time In Deep Sleep"),
QObject::tr("Time spent in deep sleep"),
QObject::tr("Time in Deep Sleep"), STR_UNIT_Minutes,
INTEGER, Qt::black));
// <channel id="0x2008" class="data" name="TimeToZ" details="Time To Sleep" label="Time To Z" color="magenta"/>
schema::channel.add(GRP_SLEEP, ch = new Channel(ZEO_TimeInDeep= 0x2008, DATA, MT_SLEEPSTAGE, SESSION,
"TimeToZ", QObject::tr("Time to Sleep"),
QObject::tr("Time taken to get to sleep"),
QObject::tr("Time to Sleep"), STR_UNIT_Minutes,
INTEGER, Qt::black));
// <channel id="0x2009" class="data" name="ZeoZQ" details="ZEO ZQ" label="ZEO ZQ" color="magenta"/>
schema::channel.add(GRP_SLEEP, ch = new Channel(ZEO_ZQ=0x2009, DATA, MT_SLEEPSTAGE, SESSION,
"ZeoZQ", QObject::tr("Zeo ZQ"),
QObject::tr("Zeo sleep quality measurement"),
QObject::tr("ZEO ZQ"), QString(),
INTEGER, Qt::black));
// <channel id="0x1200" class="setting" scope="!session" name="PAPMode" details="PAP Mode" label="PAP Mode" type="integer">
// <option id="0" value="CPAP"/>
@ -482,6 +613,25 @@ void init()
// <option id="5" value="ASV Auto EPAP"/>
// </channel>
// <channel id="0x1201" class="setting" scope="!session" name="PresRelType" details="Pressure Relief" label="Pres. Relief" type="integer">
// <Option id="0" value=""/>
// <Option id="1" value="None"/>
// <Option id="2" value="C-Flex"/>
// <Option id="3" value="C-Flex+"/>
// <Option id="4" value="A-Flex"/>
// <Option id="5" value="Bi-Flex"/>
// <Option id="6" value="EPR"/>
// <Option id="7" value="SmartFlex"/>
// <Option id="8" value="Easy-Breathe"/>
// </channel>
// <channel id="0x1202" class="setting" scope="!session" name="PresRelMode" details="Pressure Relief Mode" label="Pres. Rel. Mode" type="integer">
// <Option id="0" value=""/>
// <Option id="1" value="Ramp"/>
// <Option id="2" value="Full Time"/>
// </channel>
// <channel id="0x1203" class="setting" scope="!session" name="PresRelSet" details="Pressure Relief Setting" label="Pressure Relief" type="integer"/>
NoChannel = 0;
// CPAP_IPAP=schema::channel["IPAP"].id();
@ -549,24 +699,24 @@ void init()
// OXI_Plethy=schema::channel["Plethy"].id();
// CPAP_AHI=schema::channel["AHI"].id();
// CPAP_RDI=schema::channel["RDI"].id();
Journal_Notes = schema::channel["Journal"].id();
Journal_Weight = schema::channel["Weight"].id();
Journal_BMI = schema::channel["BMI"].id();
Journal_ZombieMeter = schema::channel["ZombieMeter"].id();
LastUpdated = schema::channel["LastUpdated"].id();
Bookmark_Start = schema::channel["BookmarkStart"].id();
Bookmark_End = schema::channel["BookmarkEnd"].id();
Bookmark_Notes = schema::channel["BookmarkNotes"].id();
// Journal_Notes = schema::channel["Journal"].id();
// Journal_Weight = schema::channel["Weight"].id();
// Journal_BMI = schema::channel["BMI"].id();
// Journal_ZombieMeter = schema::channel["ZombieMeter"].id();
// LastUpdated = schema::channel["LastUpdated"].id();
// Bookmark_Start = schema::channel["BookmarkStart"].id();
// Bookmark_End = schema::channel["BookmarkEnd"].id();
// Bookmark_Notes = schema::channel["BookmarkNotes"].id();
ZEO_SleepStage = schema::channel["SleepStage"].id();
ZEO_ZQ = schema::channel["ZeoZQ"].id();
ZEO_Awakenings = schema::channel["Awakenings"].id();
ZEO_MorningFeel = schema::channel["MorningFeel"].id();
ZEO_TimeInWake = schema::channel["TimeInWake"].id();
ZEO_TimeInREM = schema::channel["TimeInREM"].id();
ZEO_TimeInLight = schema::channel["TimeInLight"].id();
ZEO_TimeInDeep = schema::channel["TimeInDeep"].id();
ZEO_TimeToZ = schema::channel["TimeToZ"].id();
// ZEO_SleepStage = schema::channel["SleepStage"].id();
// ZEO_ZQ = schema::channel["ZeoZQ"].id();
// ZEO_Awakenings = schema::channel["Awakenings"].id();
// ZEO_MorningFeel = schema::channel["MorningFeel"].id();
// ZEO_TimeInWake = schema::channel["TimeInWake"].id();
// ZEO_TimeInREM = schema::channel["TimeInREM"].id();
// ZEO_TimeInLight = schema::channel["TimeInLight"].id();
// ZEO_TimeInDeep = schema::channel["TimeInDeep"].id();
// ZEO_TimeToZ = schema::channel["TimeToZ"].id();
schema::channel[CPAP_Leak].setShowInOverview(true);
schema::channel[CPAP_RespRate].setShowInOverview(true);
@ -753,7 +903,7 @@ bool ChannelList::Load(QString filename)
scope = Scopes[scopestr];
// if (PREF[STR_PREF_AllowEventRenaming].toBool()) {
// if (PREF[STR_PREF_ResetEventNames].toBool()) {
name = e.attribute("name", "");
details = e.attribute("details", "");
label = e.attribute("label", "");
@ -843,17 +993,6 @@ bool ChannelList::Load(QString filename)
return true;
}
void ChannelList::resetStrings()
{
QHash<ChannelID, Channel *>::iterator it;
QHash<ChannelID, Channel *>::iterator it_end = channels.end();
for (it = channels.begin(); it != it_end; ++it) {
Channel * chan = it.value();
chan->resetStrings();
}
}
void ChannelList::add(QString group, Channel *chan)
{
Q_ASSERT(chan != nullptr);

View File

@ -129,11 +129,6 @@ class Channel
void setOrder(short order) { m_order = order; }
void setShowInOverview(bool b) { m_showInOverview = b; }
void resetStrings() {
m_fullname = default_fullname;
m_label = default_label;
m_description = default_description;
}
QString option(int i) {
if (m_options.contains(i)) {
@ -226,8 +221,6 @@ class ChannelList
}
}
void resetStrings();
//! \brief Channel List indexed by integer ID
QHash<ChannelID, Channel *> channels;

View File

@ -24,52 +24,13 @@ Important: One id code per item, DO NOT CHANGE ID NUMBERS!!!
<channel id="0x1167" class="data" name="IntUnk1" details="Unknown 1" label="Unknown 1" unit="?" color="dark green"/>
<channel id="0x1168" class="data" name="IntUnk2" details="Unknown 2" label="Unknown 2" unit="?" color="dark green"/>
<channel id="0x1201" class="setting" scope="!session" name="PresRelType" details="Pressure Relief" label="Pres. Relief" type="integer">
<Option id="0" value=""/>
<Option id="1" value="None"/>
<Option id="2" value="C-Flex"/>
<Option id="3" value="C-Flex+"/>
<Option id="4" value="A-Flex"/>
<Option id="5" value="Bi-Flex"/>
<Option id="6" value="EPR"/>
<Option id="7" value="SmartFlex"/>
<Option id="8" value="Easy-Breathe"/>
</channel>
<channel id="0x1202" class="setting" scope="!session" name="PresRelMode" details="Pressure Relief Mode" label="Pres. Rel. Mode" type="integer">
<Option id="0" value=""/>
<Option id="1" value="Ramp"/>
<Option id="2" value="Full Time"/>
</channel>
<channel id="0x1203" class="setting" scope="!session" name="PresRelSet" details="Pressure Relief Setting" label="Pressure Relief" type="integer"/>
</group>
<group name="OXI">
</group>
<group name="SLEEP">
<channel id="0x2000" class="data" name="SleepStage" details="Sleep Stage" label="Sleep Stage" unit="1=Awake 2=REM 3=Light Sleep 4=Deep Sleep" color="dark grey"/>
<channel id="0x2001" class="data" name="ZeoBW" details="Zeo Brainwave" label="ZeoWave" color="black"/>
<channel id="0x2002" class="data" name="Awakenings" details="Awakenings" label="Awakenings" color="black"/>
<channel id="0x2003" class="data" name="MorningFeel" details="ZEO Morning Feel" label="Morning Feel" color="black"/>
<channel id="0x2004" class="data" name="TimeInWake" details="Time In Wake" label="Time In Wake" color="red"/>
<channel id="0x2005" class="data" name="TimeInREM" details="Time In REM Sleep" label="Time In REM" color="green"/>
<channel id="0x2006" class="data" name="TimeInLight" details="Time In Light Sleep" label="Time In Light" color="blue"/>
<channel id="0x2007" class="data" name="TimeInDeep" details="Time In Deep Sleep" label="Time In Deep" color="magenta"/>
<channel id="0x2008" class="data" name="TimeToZ" details="Time To Sleep" label="Time To Z" color="magenta"/>
<channel id="0x2009" class="data" name="ZeoZQ" details="ZEO ZQ" label="ZEO ZQ" color="magenta"/>
</group>
<group name="GENERAL">
<channel id="0x0800" class="data" name="BPSys" details="Blood Pressure Systolic" label="BPS" unit="mmHg" color="red"/>
<channel id="0x0801" class="data" name="BPDia" details="Blood Pressure Diastolic" label="BPD" unit="mmHg" color="blue"/>
<channel id="0x0802" class="data" name="Glucose" details="Blood Glucose" label="BGL" unit="mmol/L" color="black"/>
<channel id="0x0803" class="data" scope="!day" name="Weight" details="Weight" label="Weight" unit="Kg" color="black"/>
<channel id="0x0804" class="data" scope="!day" name="Height" details="Height" label="Height" unit="cm" color="blue"/>
<channel id="0x0805" class="data" name="BookmarkNotes" details="Session Bookmark Notes" label="Bookmark Notes" unit="text" color="orange"/>
<channel id="0x0806" class="data" name="BMI" details="Body Mass Index" label="BMI" unit="kg/m2" color="orange"/>
<channel id="0x0807" class="data" name="ZombieMeter" details="How good you feel." label="Alive" unit="0-10" color="orange"/>
<channel id="0x0808" class="data" name="BookmarkStart" details="Session Bookmark Start" label="Bookmark Start" unit="duration" color="orange"/>
<channel id="0x0809" class="data" name="BookmarkEnd" details="Session Bookmark End" label="Bookmark End" unit="duration" color="orange"/>
<channel id="0x080a" class="data" scope="!day" name="LastUpdated" details="Last Updated" label="Last Updated" unit="timestamp" color="orange"/>
<channel id="0xd000" class="data" scope="!day" unique="true" name="Journal" details="Journal Notes" label="Journal" type="richtext"/>
</group>
<group name="PRS1">
<!-- PRS1 Settings -->

View File

@ -224,10 +224,12 @@ int main(int argc, char *argv[])
initializeStrings(); // Important, call this AFTER translator is installed.
a.setApplicationName(STR_TR_SleepyHead);
if (settings.value(LangSetting, "").toString() == lastlanguage) {
// don't reset if they selected the same language again
changing_language = false;
}
// Do reset strings if they selected the same langauge again..
// if (settings.value(LangSetting, "").toString() == lastlanguage) {
// // don't reset if they selected the same language again
// changing_language = false;
// }
////////////////////////////////////////////////////////////////////////////////////////////
// OpenGL Detection
@ -402,8 +404,6 @@ retry_directory:
PREF.init(STR_GEN_UpdateCheckFrequency, 7); // days
PREF.init(STR_PREF_AllowEarlyUpdates, false);
PREF.init(STR_PREF_AllowEventRenaming, true);
////////////////////////////////////////////////////////////////////////////////////////////
// Check when last checked for updates..
////////////////////////////////////////////////////////////////////////////////////////////
@ -502,13 +502,7 @@ retry_directory:
MainWindow w;
mainwin = &w;
loadChannels();
if (changing_language) {
qDebug() << "Resetting Channel strings to defaults for language change";
schema::channel.resetStrings();
}
loadChannels(changing_language);
// if (check_updates) { mainwin->CheckForUpdates(); }

View File

@ -403,7 +403,7 @@ void saveChannels()
}
void loadChannels()
void loadChannels(bool changing_language)
{
QString filename = p_profile->Get("{DataFolder}/") + "channels.dat";
QFile f(filename);
@ -478,7 +478,9 @@ void loadChannels()
chan->setDefaultColor(color);
// Don't import channel descriptions if event renaming is turned off. (helps pick up new translations)
if (PREF[STR_PREF_AllowEventRenaming].toBool()) {
if (changing_language) {
// Nothing
} else {
chan->setFullname(fullname);
chan->setLabel(label);
chan->setDescription(description);
@ -2567,9 +2569,12 @@ void MainWindow::on_actionHelp_Support_SleepyHead_Development_triggered()
void MainWindow::on_actionChange_Language_triggered()
{
//QSettings *settings = new QSettings(getDeveloperName(), getAppName());
//settings->remove("Settings/Language");
//delete settings;
// Pop up a message box asking if you would like to reset Channel event/waveform names
// Sorry Translators who frequently language hop, this is an extra step, but this one is for the users. :/
if (QMessageBox::question(this,STR_MessageBox_Warning,tr("Changing the language will reset custom Event and Waveform names/labels/descriptions.")+"\n\n"+tr("Are you sure you want to do this?"), QMessageBox::Yes, QMessageBox::No) == QMessageBox::No) {
return;
}
p_profile->Save();
PREF.Save();

View File

@ -66,7 +66,7 @@ class Daily;
class Report;
class Overview;
void loadChannels();
void loadChannels(bool changing_language=false);
void saveChannels();

View File

@ -864,7 +864,7 @@
</font>
</property>
<property name="text">
<string>TextLabel</string>
<string/>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>

View File

@ -173,14 +173,12 @@ PreferencesDialog::PreferencesDialog(QWidget *parent, Profile *_profile) :
float f = profile->general->prefCalcPercentile();
ui->prefCalcPercentile->setValue(f);
ui->tooltipTimeoutSlider->setValue(profile->general->tooltipTimeout() / 50);
ui->tooltipMS->display(profile->general->tooltipTimeout());
ui->tooltipTimeoutSlider->setValue(profile->general->tooltipTimeout());
on_tooltipTimeoutSlider_valueChanged(ui->tooltipTimeoutSlider->value());
//ui->tooltipMS->display(profile->general->tooltipTimeout());
ui->scrollDampeningSlider->setValue(profile->general->scrollDampening() / 10);
if (profile->general->scrollDampening() > 0) {
ui->scrollDampDisplay->display(profile->general->scrollDampening());
} else { ui->scrollDampDisplay->display(STR_TR_Off); }
on_scrollDampeningSlider_valueChanged(ui->scrollDampeningSlider->value());
bool bcd = profile->session->backupCardData();
ui->createSDBackups->setChecked(bcd);
@ -201,8 +199,6 @@ PreferencesDialog::PreferencesDialog(QWidget *parent, Profile *_profile) :
RefreshLastChecked();
} else { ui->updateLastChecked->setText("Never"); }
ui->allowEventRenaming->setChecked(PREF[STR_PREF_AllowEventRenaming].toBool());
ui->overlayFlagsCombo->setCurrentIndex(profile->appearance->overlayType());
ui->overviewLinecharts->setCurrentIndex(profile->appearance->overviewLinechartMode());
@ -725,7 +721,7 @@ bool PreferencesDialog::Save()
profile->general->setSkipEmptyDays(ui->skipEmptyDays->isChecked());
profile->general->setTooltipTimeout(ui->tooltipTimeoutSlider->value() * 50);
profile->general->setTooltipTimeout(ui->tooltipTimeoutSlider->value());
profile->general->setScrollDampening(ui->scrollDampeningSlider->value() * 10);
profile->general->setShowUnknownFlags(ui->showUnknownFlags->isChecked());
@ -805,7 +801,6 @@ bool PreferencesDialog::Save()
PREF[STR_GEN_UpdatesAutoCheck] = ui->automaticallyCheckUpdates->isChecked();
PREF[STR_GEN_UpdateCheckFrequency] = ui->updateCheckEvery->value();
PREF[STR_PREF_AllowEarlyUpdates] = ui->allowEarlyUpdates->isChecked();
PREF[STR_PREF_AllowEventRenaming] = ui->allowEventRenaming->isChecked();
PREF["Fonts_Application_Name"] = ui->applicationFont->currentText();
@ -1071,13 +1066,13 @@ void PreferencesDialog::on_okButton_clicked()
void PreferencesDialog::on_scrollDampeningSlider_valueChanged(int value)
{
if (value > 0) {
ui->scrollDampDisplay->display(value * 10);
} else { ui->scrollDampDisplay->display(STR_TR_Off); }
ui->scrollDampDisplay->setText(QString("%1%2").arg(value * 10).arg(STR_UNIT_ms));
} else { ui->scrollDampDisplay->setText(STR_TR_Off); }
}
void PreferencesDialog::on_tooltipTimeoutSlider_valueChanged(int value)
{
ui->tooltipMS->display(value * 50);
ui->tooltipTimeoutDisplay->setText(QString("%1%2").arg(double(value)/1000.0,0,'f',1).arg(STR_UNIT_s));
}
void PreferencesDialog::on_resetChannelDefaults_clicked()

View File

@ -57,7 +57,7 @@
</sizepolicy>
</property>
<property name="currentIndex">
<number>4</number>
<number>6</number>
</property>
<widget class="QWidget" name="importTab">
<attribute name="title">
@ -1244,13 +1244,6 @@ Defaults to 60 minutes.. Highly recommend it's left at this value.</string>
</item>
</widget>
</item>
<item row="3" column="2" colspan="2">
<widget class="QCheckBox" name="allowEventRenaming">
<property name="text">
<string>Allow Event Renaming</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
@ -2153,215 +2146,6 @@ p, li { white-space: pre-wrap; }
<string>Graph Settings</string>
</property>
<layout class="QGridLayout" name="gridLayout_5">
<item row="2" column="1" colspan="2">
<widget class="QComboBox" name="overviewLinecharts">
<item>
<property name="text">
<string>Bar Tops</string>
</property>
</item>
<item>
<property name="text">
<string>Line Chart</string>
</property>
</item>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_47">
<property name="text">
<string>Overview Linecharts</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="7" column="1">
<spacer name="verticalSpacer">
<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="6" column="1" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout_16">
<item>
<widget class="QSlider" name="scrollDampeningSlider">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;This makes scrolling when zoomed in easier on sensitive bidirectional TouchPads&lt;/p&gt;&lt;p&gt;50ms is recommended value.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="maximum">
<number>25</number>
</property>
<property name="singleStep">
<number>1</number>
</property>
<property name="pageStep">
<number>5</number>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="invertedAppearance">
<bool>false</bool>
</property>
<property name="tickPosition">
<enum>QSlider::TicksBelow</enum>
</property>
<property name="tickInterval">
<number>1</number>
</property>
</widget>
</item>
<item>
<widget class="QLCDNumber" name="scrollDampDisplay">
<property name="toolTip">
<string>milliseconds</string>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="digitCount">
<number>3</number>
</property>
<property name="segmentStyle">
<enum>QLCDNumber::Flat</enum>
</property>
</widget>
</item>
</layout>
</item>
<item row="5" column="1" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout_17">
<item>
<widget class="QSlider" name="tooltipTimeoutSlider">
<property name="toolTip">
<string>How long you want the tooltips to stay visible.</string>
</property>
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>150</number>
</property>
<property name="singleStep">
<number>10</number>
</property>
<property name="pageStep">
<number>50</number>
</property>
<property name="value">
<number>1</number>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="tickPosition">
<enum>QSlider::TicksBelow</enum>
</property>
<property name="tickInterval">
<number>10</number>
</property>
</widget>
</item>
<item>
<widget class="QLCDNumber" name="tooltipMS">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="digitCount">
<number>5</number>
</property>
<property name="segmentStyle">
<enum>QLCDNumber::Flat</enum>
</property>
</widget>
</item>
</layout>
</item>
<item row="6" column="0">
<widget class="QLabel" name="label_46">
<property name="text">
<string>Scroll Dampening</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_45">
<property name="text">
<string>Tooltip Timeout</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QSpinBox" name="graphHeight">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>Default display height of graphs in pixels</string>
</property>
<property name="minimum">
<number>50</number>
</property>
<property name="maximum">
<number>600</number>
</property>
<property name="singleStep">
<number>10</number>
</property>
<property name="value">
<number>180</number>
</property>
</widget>
</item>
<item row="3" column="2">
<widget class="QCheckBox" name="graphTooltips">
<property name="text">
<string>Graph Tooltips</string>
</property>
</widget>
</item>
<item row="0" column="1" colspan="2">
<widget class="QComboBox" name="overlayFlagsCombo">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>The visual method of displaying waveform overlay flags.
</string>
</property>
<item>
<property name="text">
<string>Standard Bars</string>
</property>
</item>
<item>
<property name="text">
<string>Top Markers</string>
</property>
</item>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_26">
<property name="text">
@ -2398,6 +2182,30 @@ p, li { white-space: pre-wrap; }
</property>
</widget>
</item>
<item row="0" column="1" colspan="2">
<widget class="QComboBox" name="overlayFlagsCombo">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>The visual method of displaying waveform overlay flags.
</string>
</property>
<item>
<property name="text">
<string>Standard Bars</string>
</property>
</item>
<item>
<property name="text">
<string>Top Markers</string>
</property>
</item>
</widget>
</item>
<item row="4" column="1" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout_10">
<item>
@ -2424,6 +2232,212 @@ p, li { white-space: pre-wrap; }
</item>
</layout>
</item>
<item row="6" column="0">
<widget class="QLabel" name="label_46">
<property name="text">
<string>Scroll Dampening</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="5" column="1" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout_17">
<item>
<widget class="QSlider" name="tooltipTimeoutSlider">
<property name="toolTip">
<string>How long you want the tooltips to stay visible.</string>
</property>
<property name="minimum">
<number>1000</number>
</property>
<property name="maximum">
<number>30000</number>
</property>
<property name="singleStep">
<number>100</number>
</property>
<property name="pageStep">
<number>500</number>
</property>
<property name="value">
<number>5000</number>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="tickPosition">
<enum>QSlider::TicksBelow</enum>
</property>
<property name="tickInterval">
<number>1000</number>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="tooltipTimeoutDisplay">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>60</width>
<height>0</height>
</size>
</property>
<property name="frameShape">
<enum>QFrame::Box</enum>
</property>
<property name="text">
<string notr="true">TextLabel</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
</layout>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_45">
<property name="text">
<string>Tooltip Timeout</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="6" column="1" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout_16">
<item>
<widget class="QSlider" name="scrollDampeningSlider">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;This makes scrolling when zoomed in easier on sensitive bidirectional TouchPads&lt;/p&gt;&lt;p&gt;50ms is recommended value.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="maximum">
<number>25</number>
</property>
<property name="singleStep">
<number>1</number>
</property>
<property name="pageStep">
<number>5</number>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="invertedAppearance">
<bool>false</bool>
</property>
<property name="tickPosition">
<enum>QSlider::TicksBelow</enum>
</property>
<property name="tickInterval">
<number>1</number>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="scrollDampDisplay">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>60</width>
<height>0</height>
</size>
</property>
<property name="frameShape">
<enum>QFrame::Box</enum>
</property>
<property name="text">
<string notr="true">TextLabel</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
</layout>
</item>
<item row="3" column="1">
<widget class="QSpinBox" name="graphHeight">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>Default display height of graphs in pixels</string>
</property>
<property name="minimum">
<number>50</number>
</property>
<property name="maximum">
<number>600</number>
</property>
<property name="singleStep">
<number>10</number>
</property>
<property name="value">
<number>180</number>
</property>
</widget>
</item>
<item row="3" column="2">
<widget class="QCheckBox" name="graphTooltips">
<property name="text">
<string>Graph Tooltips</string>
</property>
</widget>
</item>
<item row="2" column="1" colspan="2">
<widget class="QComboBox" name="overviewLinecharts">
<item>
<property name="text">
<string>Bar Tops</string>
</property>
</item>
<item>
<property name="text">
<string>Line Chart</string>
</property>
</item>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_47">
<property name="text">
<string>Overview Linecharts</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="7" column="1">
<spacer name="verticalSpacer">
<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>