mirror of
https://gitlab.com/pholy/OSCAR-code.git
synced 2025-04-05 10:40:42 +00:00
More color and flag consistency cleanups
This commit is contained in:
parent
df122db7a4
commit
ce2ac29cd0
@ -78,11 +78,13 @@ void gFlagsGroup::SetDay(Day *d)
|
||||
schema::channel[CPAP_VSnore].setOrder(7);
|
||||
schema::channel[CPAP_VSnore2].setOrder(8);
|
||||
schema::channel[CPAP_ExP].setOrder(6);
|
||||
schema::channel[CPAP_UserFlag1].setOrder(256);
|
||||
schema::channel[CPAP_UserFlag2].setOrder(257);
|
||||
|
||||
|
||||
availableChans.clear();
|
||||
availableChans.append(d->machine->availableChannels(schema::FLAG));
|
||||
availableChans.append(d->machine->availableChannels(schema::SPAN));
|
||||
quint32 z = schema::FLAG | schema::SPAN;
|
||||
if (p_profile->general->showUnknownFlags()) z |= schema::UNKNOWN;
|
||||
availableChans = d->getSortedMachineChannels(z);
|
||||
|
||||
m_rebuild_cpap = (availableChans.size() == 0);
|
||||
|
||||
@ -99,33 +101,22 @@ void gFlagsGroup::SetDay(Day *d)
|
||||
schema::Channel * chan = &schema::channel[code];
|
||||
|
||||
if (chan->type() == schema::FLAG) {
|
||||
chans[code] = chan;
|
||||
availableChans.push_back(code);
|
||||
} else if (chan->type() == schema::MINOR_FLAG) {
|
||||
// chans[code] = chan;
|
||||
availableChans.push_back(code);
|
||||
} else if (chan->type() == schema::SPAN) {
|
||||
chans[code] = chan;
|
||||
availableChans.push_back(code);
|
||||
} else if (chan->type() == schema::UNKNOWN) {
|
||||
availableChans.push_back(code);
|
||||
}
|
||||
}
|
||||
}
|
||||
availableChans = chans.keys();
|
||||
}
|
||||
|
||||
QMultiMap<int, ChannelID> order;
|
||||
|
||||
lvisible.clear();
|
||||
for (int i=0; i < availableChans.size(); ++i) {
|
||||
ChannelID code = availableChans.at(i);
|
||||
order.insert(schema::channel[code].order(), code);
|
||||
}
|
||||
|
||||
QMultiMap<int, ChannelID>::iterator it;
|
||||
|
||||
for (int i=0;i <lvisible.size(); i++) {
|
||||
delete lvisible.at(i);
|
||||
}
|
||||
lvisible.clear();
|
||||
|
||||
for (it = order.begin(); it != order.end(); ++it) {
|
||||
ChannelID code = it.value();
|
||||
// const schema::Channel & chan = schema::channel[code];
|
||||
|
||||
gFlagsLine * fl = new gFlagsLine(code);
|
||||
@ -355,35 +346,7 @@ void gFlagsLine::paint(QPainter &painter, gGraph &w, const QRegion ®ion)
|
||||
|
||||
np -= idx;
|
||||
|
||||
if (chan.type() == schema::FLAG) {
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// Draw Event Flag Bars
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
for (int i = 0; i < np; i++) {
|
||||
X = start + *tptr++;
|
||||
|
||||
if (X > maxx) {
|
||||
break;
|
||||
}
|
||||
|
||||
x1 = (X - minx) * xmult + left;
|
||||
|
||||
if (!hover && QRect(x1-3, bartop-2, 6, bottom-bartop+4).contains(w.graphView()->currentMousePos())) {
|
||||
hover = true;
|
||||
painter.setPen(QPen(Qt::red,1));
|
||||
|
||||
painter.drawRect(x1-2, bartop-2, 4, bottom-bartop+4);
|
||||
int x,y;
|
||||
QString lab = QString("%1 (%2)").arg(schema::channel[m_code].fullname()).arg(*dptr);
|
||||
GetTextExtent(lab, x, y);
|
||||
|
||||
w.ToolTip(lab, x1 - 10, bartop + (3 * w.printScaleY()), TT_AlignRight, p_profile->general->tooltipTimeout());
|
||||
}
|
||||
|
||||
vlines.append(QLine(x1, bartop, x1, bottom));
|
||||
}
|
||||
} else if (chan.type() == schema::SPAN) {
|
||||
if (chan.type() == schema::SPAN) {
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// Draw Event Flag Spans
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
@ -416,6 +379,35 @@ void gFlagsLine::paint(QPainter &painter, gGraph &w, const QRegion ®ion)
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
} else { //if (chan.type() == schema::FLAG) {
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// Draw Event Flag Bars
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
for (int i = 0; i < np; i++) {
|
||||
X = start + *tptr++;
|
||||
|
||||
if (X > maxx) {
|
||||
break;
|
||||
}
|
||||
|
||||
x1 = (X - minx) * xmult + left;
|
||||
|
||||
if (!hover && QRect(x1-3, bartop-2, 6, bottom-bartop+4).contains(w.graphView()->currentMousePos())) {
|
||||
hover = true;
|
||||
painter.setPen(QPen(Qt::red,1));
|
||||
|
||||
painter.drawRect(x1-2, bartop-2, 4, bottom-bartop+4);
|
||||
int x,y;
|
||||
QString lab = QString("%1 (%2)").arg(schema::channel[m_code].fullname()).arg(*dptr);
|
||||
GetTextExtent(lab, x, y);
|
||||
|
||||
w.ToolTip(lab, x1 - 10, bartop + (3 * w.printScaleY()), TT_AlignRight, p_profile->general->tooltipTimeout());
|
||||
}
|
||||
|
||||
vlines.append(QLine(x1, bartop, x1, bottom));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -405,6 +405,11 @@ void gGraphView::dumpInfo()
|
||||
case schema::WAVEFORM:
|
||||
text = "WAVEFORM: ";
|
||||
break;
|
||||
case schema::UNKNOWN:
|
||||
text = "UNKNOWN: ";
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
QStringList str;
|
||||
for (int i=0; i< lit.value().size(); ++i) {
|
||||
|
@ -158,20 +158,19 @@ skipcheck:
|
||||
|
||||
flags.clear();
|
||||
|
||||
for (int i=0; i< m_day->size(); ++i) {
|
||||
Session * sess = m_day->sessions.at(i);
|
||||
QHash<ChannelID, QVector<EventList *> >::iterator it;
|
||||
for (it = sess->eventlist.begin(); it != sess->eventlist.end(); ++it) {
|
||||
ChannelID code = it.key();
|
||||
quint32 z = schema::FLAG | schema::MINOR_FLAG | schema::SPAN;
|
||||
if (p_profile->general->showUnknownFlags()) z |= schema::UNKNOWN;
|
||||
QList<ChannelID> available = m_day->getSortedMachineChannels(z);
|
||||
|
||||
if (flags.contains(code)) continue;
|
||||
for (int i=0; i < available.size(); ++i) {
|
||||
ChannelID code = available.at(i);
|
||||
|
||||
schema::Channel * chan = &schema::channel[code];
|
||||
gLineOverlayBar * lob = nullptr;
|
||||
|
||||
if (chan->type() == schema::FLAG) {
|
||||
lob = new gLineOverlayBar(code, chan->defaultColor(), chan->label(), FT_Bar);
|
||||
} else if (chan->type() == schema::MINOR_FLAG) {
|
||||
} else if ((chan->type() == schema::MINOR_FLAG) || (chan->type() == schema::UNKNOWN)) {
|
||||
lob = new gLineOverlayBar(code, chan->defaultColor(), chan->label(), FT_Dot);
|
||||
} else if (chan->type() == schema::SPAN) {
|
||||
lob = new gLineOverlayBar(code, chan->defaultColor(), chan->label(), FT_Span);
|
||||
@ -182,7 +181,32 @@ skipcheck:
|
||||
flags[code] = lob;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// for (int i=0; i< m_day->size(); ++i) {
|
||||
// Session * sess = m_day->sessions.at(i);
|
||||
// QHash<ChannelID, QVector<EventList *> >::iterator it;
|
||||
// for (it = sess->eventlist.begin(); it != sess->eventlist.end(); ++it) {
|
||||
// ChannelID code = it.key();
|
||||
|
||||
// if (flags.contains(code)) continue;
|
||||
|
||||
// schema::Channel * chan = &schema::channel[code];
|
||||
// gLineOverlayBar * lob = nullptr;
|
||||
|
||||
// if (chan->type() == schema::FLAG) {
|
||||
// lob = new gLineOverlayBar(code, chan->defaultColor(), chan->label(), FT_Bar);
|
||||
// } else if (chan->type() == schema::MINOR_FLAG) {
|
||||
// lob = new gLineOverlayBar(code, chan->defaultColor(), chan->label(), FT_Dot);
|
||||
// } else if (chan->type() == schema::SPAN) {
|
||||
// lob = new gLineOverlayBar(code, chan->defaultColor(), chan->label(), FT_Span);
|
||||
// }
|
||||
// if (lob != nullptr) {
|
||||
// lob->setOverlayDisplayType((m_codes[0] == CPAP_FlowRate) ? (OverlayDisplayType)p_profile->appearance->overlayType() : ODT_TopAndBottom);
|
||||
// lob->SetDay(m_day);
|
||||
// flags[code] = lob;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
}
|
||||
EventDataType gLineChart::Miny()
|
||||
{
|
||||
|
@ -900,6 +900,27 @@ void Day::CloseEvents()
|
||||
}
|
||||
}
|
||||
|
||||
QList<ChannelID> Day::getSortedMachineChannels(quint32 chantype)
|
||||
{
|
||||
QList<ChannelID> available = machine->availableChannels(chantype);
|
||||
|
||||
QMultiMap<int, ChannelID> order;
|
||||
|
||||
for (int i=0; i < available.size(); ++i) {
|
||||
ChannelID code = available.at(i);
|
||||
order.insert(schema::channel[code].order(), code);
|
||||
}
|
||||
|
||||
QMultiMap<int, ChannelID>::iterator it;
|
||||
|
||||
QList<ChannelID> channels;
|
||||
for (it = order.begin(); it != order.end(); ++it) {
|
||||
ChannelID code = it.value();
|
||||
channels.append(code);
|
||||
}
|
||||
return channels;
|
||||
}
|
||||
|
||||
qint64 Day::first()
|
||||
{
|
||||
qint64 date = 0;
|
||||
|
@ -176,8 +176,11 @@ class Day
|
||||
//! \brief Returns true if this day contains the supplied settings Channel id
|
||||
bool settingExists(ChannelID id);
|
||||
|
||||
//! \brief Removes a session from this day
|
||||
bool removeSession(Session *sess);
|
||||
|
||||
//! \brief Returns a list of channels of supplied types, according to channel orders
|
||||
QList<ChannelID> getSortedMachineChannels(quint32 chantype);
|
||||
|
||||
// Some ugly CPAP specific stuff
|
||||
QString getCPAPMode();
|
||||
|
@ -874,7 +874,7 @@ bool PRS1Import::ParseF0Events()
|
||||
EventList *FL = session->AddEventList(CPAP_FlowLimit, EVL_Event);
|
||||
EventList *VS = session->AddEventList(CPAP_VSnore, EVL_Event);
|
||||
EventList *VS2 = session->AddEventList(CPAP_VSnore2, EVL_Event);
|
||||
EventList *T1 = session->AddEventList(CPAP_Test1, EVL_Event, 0.1);
|
||||
//EventList *T1 = session->AddEventList(CPAP_Test1, EVL_Event, 0.1);
|
||||
|
||||
Code[12] = session->AddEventList(PRS1_0B, EVL_Event);
|
||||
Code[17] = session->AddEventList(PRS1_0E, EVL_Event);
|
||||
@ -2137,7 +2137,7 @@ void PRS1Loader::initChannels()
|
||||
QString unknownname=QObject::tr("PRS1_%1");
|
||||
QString unknownshort=QObject::tr("PRS1_%1");
|
||||
|
||||
channel.add(GRP_CPAP, new Channel(PRS1_00 = 0x1150, MINOR_FLAG, SESSION,
|
||||
channel.add(GRP_CPAP, new Channel(PRS1_00 = 0x1150, UNKNOWN, SESSION,
|
||||
"PRS1_00",
|
||||
QString(unknownname).arg(0,2,16,QChar('0')),
|
||||
QString(unknowndesc).arg(0,2,16,QChar('0')),
|
||||
@ -2145,7 +2145,7 @@ void PRS1Loader::initChannels()
|
||||
STR_UNIT_Unknown,
|
||||
DEFAULT, QColor("black")));
|
||||
|
||||
channel.add(GRP_CPAP, new Channel(PRS1_01 = 0x1151, MINOR_FLAG, SESSION,
|
||||
channel.add(GRP_CPAP, new Channel(PRS1_01 = 0x1151, UNKNOWN, SESSION,
|
||||
"PRS1_01",
|
||||
QString(unknownname).arg(1,2,16,QChar('0')),
|
||||
QString(unknowndesc).arg(1,2,16,QChar('0')),
|
||||
@ -2153,7 +2153,7 @@ void PRS1Loader::initChannels()
|
||||
STR_UNIT_Unknown,
|
||||
DEFAULT, QColor("black")));
|
||||
|
||||
channel.add(GRP_CPAP, new Channel(PRS1_08 = 0x1152, MINOR_FLAG, SESSION,
|
||||
channel.add(GRP_CPAP, new Channel(PRS1_08 = 0x1152, UNKNOWN, SESSION,
|
||||
"PRS1_08",
|
||||
QString(unknownname).arg(8,2,16,QChar('0')),
|
||||
QString(unknowndesc).arg(8,2,16,QChar('0')),
|
||||
@ -2161,41 +2161,41 @@ void PRS1Loader::initChannels()
|
||||
STR_UNIT_Unknown,
|
||||
DEFAULT, QColor("black")));
|
||||
|
||||
channel.add(GRP_CPAP, new Channel(PRS1_0A = 0x1154, MINOR_FLAG, SESSION,
|
||||
channel.add(GRP_CPAP, new Channel(PRS1_0A = 0x1154, UNKNOWN, SESSION,
|
||||
"PRS1_0A",
|
||||
QString(unknownname).arg(0xa,2,16,QChar('0')),
|
||||
QString(unknowndesc).arg(0xa,2,16,QChar('0')),
|
||||
QString(unknownshort).arg(0xa,2,16,QChar('0')),
|
||||
STR_UNIT_Unknown,
|
||||
DEFAULT, QColor("black")));
|
||||
channel.add(GRP_CPAP, new Channel(PRS1_0B = 0x1155, MINOR_FLAG, SESSION,
|
||||
channel.add(GRP_CPAP, new Channel(PRS1_0B = 0x1155, UNKNOWN, SESSION,
|
||||
"PRS1_0B",
|
||||
QString(unknownname).arg(0xb,2,16,QChar('0')),
|
||||
QString(unknowndesc).arg(0xb,2,16,QChar('0')),
|
||||
QString(unknownshort).arg(0xb,2,16,QChar('0')),
|
||||
STR_UNIT_Unknown,
|
||||
DEFAULT, QColor("black")));
|
||||
channel.add(GRP_CPAP, new Channel(PRS1_0C = 0x1156, MINOR_FLAG, SESSION,
|
||||
channel.add(GRP_CPAP, new Channel(PRS1_0C = 0x1156, UNKNOWN, SESSION,
|
||||
"PRS1_0C",
|
||||
QString(unknownname).arg(0xc,2,16,QChar('0')),
|
||||
QString(unknowndesc).arg(0xc,2,16,QChar('0')),
|
||||
QString(unknownshort).arg(0xc,2,16,QChar('0')),
|
||||
STR_UNIT_Unknown,
|
||||
DEFAULT, QColor("black")));
|
||||
channel.add(GRP_CPAP, new Channel(PRS1_0E = 0x1157, MINOR_FLAG, SESSION,
|
||||
channel.add(GRP_CPAP, new Channel(PRS1_0E = 0x1157, UNKNOWN, SESSION,
|
||||
"PRS1_0E",
|
||||
QString(unknownname).arg(0xe,2,16,QChar('0')),
|
||||
QString(unknowndesc).arg(0xe,2,16,QChar('0')),
|
||||
QString(unknownshort).arg(0xe,2,16,QChar('0')),
|
||||
STR_UNIT_Unknown,
|
||||
DEFAULT, QColor("black")));
|
||||
channel.add(GRP_CPAP, new Channel(PRS1_12 = 0x1159, MINOR_FLAG, SESSION,
|
||||
"PRS1_12",
|
||||
QString(unknownname).arg(0x12,2,16,QChar('0')),
|
||||
QString(unknowndesc).arg(0x12,2,16,QChar('0')),
|
||||
QString(unknownshort).arg(0x12,2,16,QChar('0')),
|
||||
STR_UNIT_Unknown,
|
||||
DEFAULT, QColor("black")));
|
||||
// channel.add(GRP_CPAP, new Channel(PRS1_12 = 0x1159, UNKNOWN, SESSION,
|
||||
// "PRS1_12",
|
||||
// QString(unknownname).arg(0x12,2,16,QChar('0')),
|
||||
// QString(unknowndesc).arg(0x12,2,16,QChar('0')),
|
||||
// QString(unknownshort).arg(0x12,2,16,QChar('0')),
|
||||
// STR_UNIT_Unknown,
|
||||
// DEFAULT, QColor("black")));
|
||||
|
||||
|
||||
channel.add(GRP_CPAP, new Channel(PRS1_TimedBreath = 0x1180, MINOR_FLAG, SESSION,
|
||||
|
@ -670,7 +670,7 @@ bool Machine::Save()
|
||||
return true;
|
||||
}
|
||||
|
||||
QList<ChannelID> Machine::availableChannels(schema::ChanType chantype)
|
||||
QList<ChannelID> Machine::availableChannels(quint32 chantype)
|
||||
{
|
||||
QHash<ChannelID, int> chanhash;
|
||||
|
||||
@ -687,7 +687,7 @@ QList<ChannelID> Machine::availableChannels(schema::ChanType chantype)
|
||||
for (int i=0; i < size; ++i) {
|
||||
ChannelID code = sess->availableChannels().at(i);
|
||||
const schema::Channel & chan = schema::channel[code];
|
||||
if (chan.type() == chantype) {
|
||||
if (chan.type() & chantype) {
|
||||
chanhash[code]++;
|
||||
}
|
||||
}
|
||||
|
@ -194,7 +194,7 @@ class Machine
|
||||
|
||||
void setLoaderName(QString value);
|
||||
|
||||
QList<ChannelID> availableChannels(schema::ChanType chantype);
|
||||
QList<ChannelID> availableChannels(quint32 chantype);
|
||||
|
||||
MachineLoader * loader() { return m_loader; }
|
||||
|
||||
|
@ -329,6 +329,7 @@ const QString STR_US_PrefCalcPercentile = "PrefCalcPercentile";
|
||||
const QString STR_US_PrefCalcMax = "PrefCalcMax";
|
||||
const QString STR_US_TooltipTimeout = "TooltipTimeout";
|
||||
const QString STR_US_ScrollDampening = "ScrollDampening";
|
||||
const QString STR_US_ShowUnknownFlags = "ShowUnknownFlags";
|
||||
const QString STR_US_StatReportMode = "StatReportMode";
|
||||
|
||||
// Parent class for subclasses that manipulate the profile.
|
||||
@ -763,6 +764,7 @@ class UserSettings : public ProfileSettings
|
||||
initPref(STR_US_TooltipTimeout, (int)2500);
|
||||
initPref(STR_US_ScrollDampening, (int)50);
|
||||
initPref(STR_US_StatReportMode, 0);
|
||||
initPref(STR_US_ShowUnknownFlags, false);
|
||||
}
|
||||
|
||||
UnitSystem unitSystem() const { return (UnitSystem)getPref(STR_US_UnitSystem).toInt(); }
|
||||
@ -779,6 +781,7 @@ class UserSettings : public ProfileSettings
|
||||
int tooltipTimeout() const { return getPref(STR_US_TooltipTimeout).toInt(); }
|
||||
int scrollDampening() const { return getPref(STR_US_ScrollDampening).toInt(); }
|
||||
int statReportMode() const { return getPref(STR_US_StatReportMode).toInt(); }
|
||||
bool showUnknownFlags() const { return getPref(STR_US_ShowUnknownFlags).toBool(); }
|
||||
|
||||
void setUnitSystem(UnitSystem us) { setPref(STR_US_UnitSystem, (int)us); }
|
||||
void setEventWindowSize(double size) { setPref(STR_US_EventWindowSize, size); }
|
||||
@ -794,6 +797,7 @@ class UserSettings : public ProfileSettings
|
||||
void setTooltipTimeout(int i) { setPref(STR_US_TooltipTimeout, i); }
|
||||
void setScrollDampening(int i) { setPref(STR_US_ScrollDampening, i); }
|
||||
void setStatReportMode(int i) { setPref(STR_US_StatReportMode, i); }
|
||||
void setShowUnknownFlags(bool b) { setPref(STR_US_ShowUnknownFlags, b); }
|
||||
};
|
||||
|
||||
//! \brief Returns a count of all files & directories in a supplied folder
|
||||
|
@ -391,12 +391,12 @@ void init()
|
||||
QObject::tr("Upright angle in degrees"), QObject::tr("Inclination"), STR_UNIT_Degrees,
|
||||
DEFAULT, QColor("dark magenta")));
|
||||
|
||||
schema::channel.add(GRP_CPAP, new Channel(RMS9_MaskOnTime = 0x1025, SETTING, SESSION,
|
||||
schema::channel.add(GRP_CPAP, new Channel(RMS9_MaskOnTime = 0x1025, DATA, SESSION,
|
||||
"MaskOnTime", QObject::tr("Mask On Time"),
|
||||
QObject::tr("Time started according to str.edf"), QObject::tr("Mask On Time"), STR_UNIT_Unknown,
|
||||
DEFAULT, Qt::black));
|
||||
|
||||
schema::channel.add(GRP_CPAP, new Channel(CPAP_SummaryOnly = 0x1026, SETTING, SESSION,
|
||||
schema::channel.add(GRP_CPAP, new Channel(CPAP_SummaryOnly = 0x1026, DATA, SESSION,
|
||||
"SummaryOnly", QObject::tr("Summary Only"),
|
||||
QObject::tr("CPAP Session contains summary data only"), QObject::tr("Summary Only"), STR_UNIT_Unknown,
|
||||
DEFAULT, Qt::black));
|
||||
|
@ -41,6 +41,7 @@ enum ChanType {
|
||||
MINOR_FLAG = 8,
|
||||
SPAN = 16,
|
||||
WAVEFORM = 32,
|
||||
UNKNOWN = 64,
|
||||
|
||||
ALL = 0xFFFF
|
||||
};
|
||||
|
@ -1285,6 +1285,10 @@ QString Daily::getEventBreakdown(Day * cpap)
|
||||
return html;
|
||||
}
|
||||
|
||||
float brightness(QColor color) {
|
||||
return color.redF()*0.299 + color.greenF()*0.587 + color.blueF()*0.114;
|
||||
}
|
||||
|
||||
QString Daily::getSleepTime(Day * cpap, Day * oxi)
|
||||
{
|
||||
QString html;
|
||||
@ -1317,6 +1321,7 @@ QString Daily::getSleepTime(Day * cpap, Day * oxi)
|
||||
}
|
||||
|
||||
|
||||
|
||||
void Daily::Load(QDate date)
|
||||
{
|
||||
dateDisplay->setText("<i>"+date.toString(Qt::SystemLocaleLongDate)+"</i>");
|
||||
@ -1401,28 +1406,17 @@ void Daily::Load(QDate date)
|
||||
ui->eventsCombo->clear();
|
||||
|
||||
if (cpap) {
|
||||
QMap<QString, schema::Channel *> flags;
|
||||
for (int i=0; i< cpap->size(); ++i) {
|
||||
Session * sess = cpap->sessions.at(i);
|
||||
QHash<ChannelID, QVector<EventList *> >::iterator it;
|
||||
for (it = sess->eventlist.begin(); it != sess->eventlist.end(); ++it) {
|
||||
ChannelID code = it.key();
|
||||
schema::Channel * chan = &schema::channel[code];
|
||||
const QString & str = chan->label();
|
||||
if (flags.contains(str)) continue;
|
||||
quint32 chans = schema::SPAN | schema::FLAG | schema::MINOR_FLAG;
|
||||
if (p_profile->general->showUnknownFlags()) chans |= schema::UNKNOWN;
|
||||
|
||||
if ((chan->type() == schema::FLAG) || (chan->type() == schema::MINOR_FLAG) || (chan->type() == schema::SPAN)) {
|
||||
flags[str] = chan;
|
||||
}
|
||||
}
|
||||
}
|
||||
QList<ChannelID> available = cpap->getSortedMachineChannels(chans);
|
||||
|
||||
for (int i=0; i < available.size(); ++i) {
|
||||
ChannelID code = available.at(i);
|
||||
schema::Channel & chan = schema::channel[code];
|
||||
ui->eventsCombo->addItem(chan.enabled() ? *icon_on : * icon_off, chan.label(), code);
|
||||
ui->eventsCombo->setItemData(i, chan.fullname(), Qt::ToolTipRole);
|
||||
|
||||
QMap<QString, schema::Channel *>::iterator fit;
|
||||
int c = 0;
|
||||
for (fit = flags.begin(); fit != flags.end(); ++fit) {
|
||||
ui->eventsCombo->addItem(fit.value()->enabled() ? *icon_on : * icon_off, fit.key(), fit.value()->id());
|
||||
ui->eventsCombo->setItemData(c, fit.value()->fullname(), Qt::ToolTipRole);
|
||||
c++;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1464,46 +1458,52 @@ void Daily::Load(QDate date)
|
||||
html+=getCPAPInformation(cpap);
|
||||
html+=getSleepTime(cpap,oxi);
|
||||
|
||||
struct ChannelInfo {
|
||||
ChannelID id;
|
||||
QColor color;
|
||||
QColor color2;
|
||||
EventDataType value;
|
||||
};
|
||||
ChannelInfo chans[]={
|
||||
{ CPAP_Hypopnea, COLOR_Hypopnea, Qt::white, hi=(cpap->count(CPAP_ExP)+cpap->count(CPAP_Hypopnea))/hours },
|
||||
{ CPAP_Obstructive, COLOR_Obstructive, Qt::black, oai=cpap->count(CPAP_Obstructive)/hours },
|
||||
{ CPAP_Apnea, COLOR_Apnea, Qt::black, uai=cpap->count(CPAP_Apnea)/hours },
|
||||
{ CPAP_ClearAirway, COLOR_ClearAirway, Qt::black, cai=cpap->count(CPAP_ClearAirway)/hours },
|
||||
{ CPAP_NRI, COLOR_NRI, Qt::black, nri=cpap->count(CPAP_NRI)/hours },
|
||||
{ CPAP_FlowLimit, COLOR_FlowLimit, Qt::white, fli=cpap->count(CPAP_FlowLimit)/hours },
|
||||
{ CPAP_SensAwake, COLOR_SensAwake, Qt::black, sai=cpap->count(CPAP_SensAwake)/hours },
|
||||
{ CPAP_ExP, COLOR_ExP, Qt::black, exp=cpap->count(CPAP_ExP)/hours },
|
||||
{ CPAP_RERA, COLOR_RERA, Qt::black, rei=cpap->count(CPAP_RERA)/hours },
|
||||
{ CPAP_VSnore, COLOR_VibratorySnore, Qt::black, vs=cpap->count(CPAP_VSnore)/cpap->hours() },
|
||||
{ CPAP_VSnore2, COLOR_VibratorySnore, Qt::black, vs2=cpap->count(CPAP_VSnore2)/cpap->hours() },
|
||||
{ CPAP_LeakFlag, COLOR_LeakFlag, Qt::black, lki=cpap->count(CPAP_LeakFlag)/hours },
|
||||
{ CPAP_LargeLeak, COLOR_LargeLeak, Qt::black, lk2=(100.0/cpap->hours())*(cpap->sum(CPAP_LargeLeak)/3600.0) },
|
||||
{ CPAP_CSR, COLOR_CSR, Qt::black, csr=(100.0/cpap->hours())*(cpap->sum(CPAP_CSR)/3600.0) },
|
||||
{ CPAP_UserFlag1, COLOR_UserFlag1, Qt::black, uf1=cpap->count(CPAP_UserFlag1)/hours },
|
||||
{ CPAP_UserFlag2, COLOR_UserFlag2, Qt::black, uf2=cpap->count(CPAP_UserFlag2)/hours },
|
||||
|
||||
};
|
||||
int numchans=sizeof(chans)/sizeof(ChannelInfo);
|
||||
|
||||
html+="<table cellspacing=0 cellpadding=0 border=0 width='100%'>\n";
|
||||
for (int i=0;i<numchans;i++) {
|
||||
if (!cpap->channelHasData(chans[i].id))
|
||||
continue;
|
||||
if ((cpap->machine->loaderName() == STR_MACH_PRS1) && (chans[i].id == CPAP_VSnore))
|
||||
continue;
|
||||
html+=QString("<tr><td align='left' bgcolor='%1'><b><font color='%2'><a href='event=%5'>%3</a></font></b></td><td width=20% bgcolor='%1'><b><font color='%2'>%4</font></b></td></tr>\n")
|
||||
.arg(chans[i].color.name()).arg(chans[i].color2.name()).arg(schema::channel[chans[i].id].fullname()).arg(chans[i].value,0,'f',2).arg(chans[i].id);
|
||||
|
||||
// keep in case tooltips are needed
|
||||
//html+=QString("<tr><td align='left' bgcolor='%1'><b><font color='%2'><a class=info href='event=%6'>%3<span>%4</span></a></font></b></td><td width=20% bgcolor='%1'><b><font color='%2'>%5</font></b></td></tr>\n")
|
||||
// .arg(chans[i].color.name()).arg(chans[i].color2.name()).arg(chans[i].name).arg(schema::channel[chans[i].id].description()).arg(chans[i].value,0,'f',2).arg(chans[i].id);
|
||||
|
||||
quint32 zchans = schema::SPAN | schema::FLAG;
|
||||
bool show_minors = true;
|
||||
if (p_profile->general->showUnknownFlags()) zchans |= schema::UNKNOWN;
|
||||
|
||||
if (show_minors) zchans |= schema::MINOR_FLAG;
|
||||
QList<ChannelID> available = cpap->getSortedMachineChannels(zchans);
|
||||
|
||||
for (int i=0; i < available.size(); ++i) {
|
||||
ChannelID code = available.at(i);
|
||||
schema::Channel & chan = schema::channel[code];
|
||||
if (!chan.enabled()) continue;
|
||||
QString data;
|
||||
if (chan.type() == schema::SPAN) {
|
||||
EventDataType val = (100.0 / hours)*(cpap->sum(code)/3600.0);
|
||||
data = QString("%1%").arg(val,0,'f',2);
|
||||
} else if (chan.type() == schema::FLAG) {
|
||||
EventDataType val = vs=cpap->count(code) / hours;
|
||||
data = QString("%1").arg(val,0,'f',2);
|
||||
} else if (chan.type() == schema::MINOR_FLAG) {
|
||||
EventDataType val = vs=cpap->count(code) / hours;
|
||||
data = QString("%1").arg(val,0,'f',2);
|
||||
} else if (chan.type() == schema::UNKNOWN) {
|
||||
EventDataType val = vs=cpap->count(code) / hours;
|
||||
data = QString("%1").arg(val,0,'f',2);
|
||||
}
|
||||
QColor altcolor = (brightness(chan.defaultColor()) < 0.3) ? Qt::white : Qt::black; // pick a contrasting color
|
||||
html+=QString("<tr><td align='left' bgcolor='%1'><b><font color='%2'><a href='event=%5'>%3</a></font></b></td><td width=20% bgcolor='%1'><b><font color='%2'>%4</font></b></td></tr>\n")
|
||||
.arg(chan.defaultColor().name()).arg(altcolor.name()).arg(chan.fullname()).arg(data).arg(code);
|
||||
}
|
||||
|
||||
|
||||
// for (int i=0;i<numchans;i++) {
|
||||
// if (!cpap->channelHasData(chans[i].id))
|
||||
// continue;
|
||||
// if ((cpap->machine->loaderName() == STR_MACH_PRS1) && (chans[i].id == CPAP_VSnore))
|
||||
// continue;
|
||||
// html+=QString("<tr><td align='left' bgcolor='%1'><b><font color='%2'><a href='event=%5'>%3</a></font></b></td><td width=20% bgcolor='%1'><b><font color='%2'>%4</font></b></td></tr>\n")
|
||||
// .arg(schema::channel[chans[i].id].defaultColor().name()).arg(chans[i].color2.name()).arg(schema::channel[chans[i].id].fullname()).arg(chans[i].value,0,'f',2).arg(chans[i].id);
|
||||
|
||||
// // keep in case tooltips are needed
|
||||
// //html+=QString("<tr><td align='left' bgcolor='%1'><b><font color='%2'><a class=info href='event=%6'>%3<span>%4</span></a></font></b></td><td width=20% bgcolor='%1'><b><font color='%2'>%5</font></b></td></tr>\n")
|
||||
// // .arg(chans[i].color.name()).arg(chans[i].color2.name()).arg(chans[i].name).arg(schema::channel[chans[i].id].description()).arg(chans[i].value,0,'f',2).arg(chans[i].id);
|
||||
// }
|
||||
html+="</table>";
|
||||
|
||||
html+="<table cellspacing=0 cellpadding=0 border=0 width='100%'>\n";
|
||||
|
@ -189,6 +189,7 @@ PreferencesDialog::PreferencesDialog(QWidget *parent, Profile *_profile) :
|
||||
ui->clockDrift->setValue(profile->cpap->clockDrift());
|
||||
|
||||
ui->skipEmptyDays->setChecked(profile->general->skipEmptyDays());
|
||||
ui->showUnknownFlags->setChecked(profile->general->showUnknownFlags());
|
||||
ui->enableMultithreading->setChecked(profile->session->multithreading());
|
||||
ui->cacheSessionData->setChecked(profile->session->cacheSessions());
|
||||
ui->animationsAndTransitionsCheckbox->setChecked(profile->appearance->animations());
|
||||
@ -312,6 +313,10 @@ void PreferencesDialog::InitChanInfo()
|
||||
hdr->setEditable(false);
|
||||
chanModel->appendRow(hdr);
|
||||
|
||||
toplevel[schema::UNKNOWN] = hdr = new QStandardItem(tr("Unknown Channels"));
|
||||
hdr->setEditable(false);
|
||||
chanModel->appendRow(hdr);
|
||||
|
||||
ui->chanView->setAlternatingRowColors(true);
|
||||
|
||||
// ui->graphView->setFirstColumnSpanned(0,daily->index(),true); // Crashes on windows.. Why do I need this again?
|
||||
@ -468,6 +473,7 @@ bool PreferencesDialog::Save()
|
||||
profile->general->setTooltipTimeout(ui->tooltipTimeoutSlider->value() * 50);
|
||||
profile->general->setScrollDampening(ui->scrollDampeningSlider->value() * 10);
|
||||
|
||||
profile->general->setShowUnknownFlags(ui->showUnknownFlags->isChecked());
|
||||
profile->session->setMultithreading(ui->enableMultithreading->isChecked());
|
||||
profile->session->setCacheSessions(ui->cacheSessionData->isChecked());
|
||||
profile->cpap->setMaskDescription(ui->maskDescription->text());
|
||||
|
@ -51,7 +51,7 @@
|
||||
<item>
|
||||
<widget class="QTabWidget" name="tabWidget">
|
||||
<property name="currentIndex">
|
||||
<number>1</number>
|
||||
<number>5</number>
|
||||
</property>
|
||||
<widget class="QWidget" name="importTab">
|
||||
<attribute name="title">
|
||||
@ -1750,6 +1750,16 @@ as this is the only value available on summary-only days.</string>
|
||||
<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">
|
||||
@ -1771,13 +1781,13 @@ Mainly affects the importer.</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QCheckBox" name="skipLoginScreen">
|
||||
<item row="5" column="1">
|
||||
<widget class="QCheckBox" name="showUnknownFlags">
|
||||
<property name="toolTip">
|
||||
<string>Bypass the login screen and load the most recent User Profile</string>
|
||||
<string>Show flags for machine detected events that haven't been identified yet.</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Skip Login Screen</string>
|
||||
<string>Show Unknown Flags</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
|
Loading…
Reference in New Issue
Block a user