diff --git a/sleepyhead/Graphs/gGraph.cpp b/sleepyhead/Graphs/gGraph.cpp index 231af0b5..0203c648 100644 --- a/sleepyhead/Graphs/gGraph.cpp +++ b/sleepyhead/Graphs/gGraph.cpp @@ -249,6 +249,7 @@ void gGraph::setDay(Day *day) m_layers[i]->SetDay(day); } + rmin_y = rmax_y = 0; ResetBounds(); } @@ -509,20 +510,17 @@ void gGraph::ToolTip(QString text, int x, int y, ToolTipAlignment align, int tim void gGraph::roundY(EventDataType &miny, EventDataType &maxy) { - if (zoomY() == 0) { - // AutoScale mode - miny = rmin_y; // MinY(); - maxy = rmax_y; //MaxY(); - // fall through. - } else if (zoomY() == 1) { - miny = rphysmin_y; //physMinY() - maxy = rphysmax_y; //physMaxY(); - return; - } else { + if (zoomY() == 2) { miny = rec_miny; maxy = rec_maxy; - return; + if (maxy > miny) return; + } else if (zoomY() ==1) { + miny = physMinY(); + maxy = physMaxY(); + if (maxy > miny) return; } + miny = MinY(); + maxy = MaxY(); int m, t; bool ymin_good = false, ymax_good = false; @@ -578,7 +576,7 @@ void gGraph::roundY(EventDataType &miny, EventDataType &maxy) if (!ymin_good) { miny = m * 50; } - } else if (maxy >= 5) { + } else if (maxy >= 30) { m = ceil(maxy / 5.0); t = m * 5; @@ -1207,9 +1205,9 @@ EventDataType gGraph::MinY() tmp = (*l)->Miny(); - if (tmp == 0 && tmp == (*l)->Maxy()) { - continue; - } +// if (tmp == 0 && tmp == (*l)->Maxy()) { +// continue; +// } if (first) { val = tmp; @@ -1240,9 +1238,9 @@ EventDataType gGraph::MaxY() } tmp = layer->Maxy(); - if (tmp == 0 && layer->Miny() == 0) { - continue; - } +// if (tmp == 0 && layer->Miny() == 0) { +// continue; +// } if (first) { val = tmp; diff --git a/sleepyhead/Graphs/gGraphView.cpp b/sleepyhead/Graphs/gGraphView.cpp index a58e6594..039f7da9 100644 --- a/sleepyhead/Graphs/gGraphView.cpp +++ b/sleepyhead/Graphs/gGraphView.cpp @@ -39,39 +39,40 @@ extern MainWindow *mainwin; #include -MyLabel::MyLabel(QWidget * parent): -QWidget(parent) -{ +MyLabel::MyLabel(QWidget * parent) + : QWidget(parent) { m_font = QApplication::font(); + time.start(); } MyLabel::~MyLabel() { } void MyLabel::setText(QString text) { m_text = text; - repaint(); + update(); } void MyLabel::setFont(QFont & font) { m_font=font; } +void MyLabel::doRedraw() +{ + update(); +} void MyLabel::setAlignment(Qt::Alignment alignment) { m_alignment = alignment; - repaint(); + doRedraw(); } -void MyLabel::paintEvent(QPaintEvent * event) +void MyLabel::paintEvent(QPaintEvent * /*event*/) { - QRectF rect(event->rect()); QPainter painter(this); painter.setFont(m_font); - painter.drawText(rect, m_alignment, m_text); + painter.drawText(rect(), m_alignment, m_text); } - - gToolTip::gToolTip(gGraphView *graphview) : m_graphview(graphview) { @@ -1288,9 +1289,9 @@ void gGraphView::paintGL() painter.drawText(rec, Qt::AlignHCenter | Qt::AlignBottom, txt); } if (p_profile->appearance->lineCursorMode()) { - emit updateCurrentTime(graphs_drawn ? m_currenttime : 0.0F); + emit updateCurrentTime(graphs_drawn ? m_currenttime : 0.0F); } else { - emit updateRange(graphs_drawn ? m_minx : 0.0F, m_maxx); + emit updateRange(graphs_drawn ? m_minx : 0.0F, m_maxx); } DrawTextQue(painter); diff --git a/sleepyhead/Graphs/gGraphView.h b/sleepyhead/Graphs/gGraphView.h index 989a69a5..3aee6b6e 100644 --- a/sleepyhead/Graphs/gGraphView.h +++ b/sleepyhead/Graphs/gGraphView.h @@ -23,6 +23,7 @@ #include #include #include +#include #ifndef BROKEN_OPENGL_BUILD #include @@ -77,6 +78,7 @@ void setEmptyImage(QString text, QPixmap pixmap); class MyLabel:public QWidget { + Q_OBJECT public: MyLabel(QWidget * parent); virtual ~MyLabel(); @@ -86,11 +88,16 @@ public: void setFont(QFont & font); QFont & font() { return m_font; } - virtual void paintEvent(QPaintEvent * event); + + virtual void paintEvent(QPaintEvent *); QFont m_font; QString m_text; Qt::Alignment m_alignment; + QTime time; +protected slots: + void doRedraw(); + }; class gGraphView; @@ -620,7 +627,7 @@ class gGraphView bool m_blockUpdates; QPoint m_mouse; - qint64 m_currenttime; + double m_currenttime; QTime m_animationStarted; diff --git a/sleepyhead/Graphs/gLineChart.cpp b/sleepyhead/Graphs/gLineChart.cpp index 16ac87ca..cc7aa677 100644 --- a/sleepyhead/Graphs/gLineChart.cpp +++ b/sleepyhead/Graphs/gLineChart.cpp @@ -219,7 +219,7 @@ skipcheck: lob = new gLineOverlayBar(code, chan->defaultColor(), chan->label(), FT_Span); } if (lob != nullptr) { - lob->setOverlayDisplayType(((m_codes[0] == CPAP_FlowRate) || (m_codes[0] == CPAP_MaskPressureHi))? (OverlayDisplayType)p_profile->appearance->overlayType() : ODT_TopAndBottom); + lob->setOverlayDisplayType(((m_codes[0] == CPAP_FlowRate))? (OverlayDisplayType)p_profile->appearance->overlayType() : ODT_TopAndBottom); lob->SetDay(m_day); flags[code] = lob; } @@ -272,7 +272,6 @@ skipcheck: } } } - } EventDataType gLineChart::Miny() { @@ -285,7 +284,7 @@ EventDataType gLineChart::Miny() for (int i=0; i< size; ++i) { ChannelID code = m_codes[i]; - if (!m_enabled[code]) continue; + if (!m_enabled[code] || !m_day->channelExists(code)) continue; tmp = m_day->Min(code); @@ -322,7 +321,7 @@ EventDataType gLineChart::Maxy() for (int i=0; i< size; ++i) { ChannelID code = m_codes[i]; - if (!m_enabled[code]) continue; + if (!m_enabled[code] || !m_day->channelExists(code)) continue; tmp = m_day->Max(code); if (!first) { @@ -426,6 +425,9 @@ void gLineChart::paint(QPainter &painter, gGraph &w, const QRegion ®ion) EventDataType miny = m_physminy; EventDataType maxy = m_physmaxy; + if (m_codes[0] == CPAP_Pressure) { + int i=5; Q_UNUSED(i); + } w.roundY(miny, maxy); diff --git a/sleepyhead/SleepLib/loader_plugins/icon_loader.cpp b/sleepyhead/SleepLib/loader_plugins/icon_loader.cpp index c321846d..409e00c2 100644 --- a/sleepyhead/SleepLib/loader_plugins/icon_loader.cpp +++ b/sleepyhead/SleepLib/loader_plugins/icon_loader.cpp @@ -306,18 +306,13 @@ quint32 convertDate(quint32 timestamp) month = (timestamp >> 5) & 0x0f; year = 2000 + ((timestamp >> 9) & 0x3f); timestamp >>= 15; - -// second = timestamp & 0x3f; -// hour = (timestamp >> 6) & 0x1f; -// minute = (timestamp >> 12) & 0x3f; - second = timestamp & 0x3f; minute = (timestamp >> 6) & 0x3f; - hour = (timestamp >> 12)+1; + hour = (timestamp >> 12); QDateTime dt = QDateTime(QDate(year, month, day), QTime(hour, minute, second),Qt::UTC); - Q_ASSERT(dt.isValid()); +// Q_ASSERT(dt.isValid()); // if ((year == 2013) && (month == 9) && (day == 18)) { // // this is for testing.. set a breakpoint on here and // int i=5; @@ -330,10 +325,10 @@ quint32 convertDate(quint32 timestamp) // 91596 = 00:23:12 WET // 19790 = 23:23:50 WET - return dt.toTime_t(); + return dt.addSecs(-54).toTime_t(); } -quint32 convertFLWDate(quint32 timestamp) +quint32 convertFLWDate(quint32 timestamp) // Bit format: hhhhhmmmmmmssssssYYYYYYMMMMDDDDD { quint16 day, month, hour, minute, second; quint16 year; @@ -342,24 +337,21 @@ quint32 convertFLWDate(quint32 timestamp) month = (timestamp >> 5) & 0x0f; year = 2000 + ((timestamp >> 9) & 0x3f); timestamp >>= 15; - - // Okay, why did I swap the first and last bits of the time field? - // What am I forgetting?? This seems to work properly like this - // Was I looking at older data that worked like this? - second = timestamp & 0x3f; minute = (timestamp >> 6) & 0x3f; - hour = (timestamp >> 12)+1; -// second = timestamp & 0x3f; -// minute = (timestamp >> 6) & 0x3f; -// hour = (timestamp >> 12) & 0x1f; + hour = (timestamp >> 12); + QDateTime dt = QDateTime(QDate(year, month, day), QTime(hour, minute, second), Qt::UTC); - Q_ASSERT(dt.isValid()); + + if(!dt.isValid()){ + dt = QDateTime(QDate(2015,1,1), QTime(0,0,1)); + } +// Q_ASSERT(dt.isValid()); // if ((year == 2013) && (month == 9) && (day == 18)) { // int i=5; // } // 87922 23:23:50 WET - return dt.addSecs(-360).toTime_t(); + return dt.addSecs(-54).toTime_t(); } //QDateTime FPIconLoader::readFPDateTime(quint8 *data) @@ -481,7 +473,6 @@ bool FPIconLoader::OpenFLW(Machine *mach, QString filename) ts = convertFLWDate(t2); if (ts > QDateTime(QDate(2015,1,1), QTime(0,0,0)).toTime_t()) { - ts = convertFLWDate(t2); return false; } @@ -864,7 +855,7 @@ bool FPIconLoader::OpenDetail(Machine *mach, QString filename) sess = Sessions[sessid]; ti = qint64(sessid) * 1000L; sess->really_set_first(ti); - ti -= 360000; + EventList *LK = sess->AddEventList(CPAP_LeakTotal, EVL_Event, 1); EventList *PR = sess->AddEventList(CPAP_Pressure, EVL_Event, 0.1F); EventList *OA = sess->AddEventList(CPAP_Obstructive, EVL_Event); @@ -881,10 +872,10 @@ bool FPIconLoader::OpenDetail(Machine *mach, QString filename) for (int i = 0; i < rec; ++i) { for (int j = 0; j < 3; ++j) { pressure = data[idx]; - PR->AddEvent(ti+360000/2, pressure); + PR->AddEvent(ti+120000, pressure); leak = data[idx + 1]; - LK->AddEvent(ti+360000/2, leak); + LK->AddEvent(ti+120000, leak); a1 = data[idx + 2]; // [0..5] Obstructive flag, [6..7] Unknown a2 = data[idx + 3]; // [0..5] Hypopnea, [6..7] Unknown diff --git a/sleepyhead/daily.cpp b/sleepyhead/daily.cpp index 434baed2..318ffcd8 100644 --- a/sleepyhead/daily.cpp +++ b/sleepyhead/daily.cpp @@ -925,8 +925,8 @@ QString Daily::getSessionInformation(Day * day) .arg(QString("%1h %2m %3s").arg(h,2,10,QChar('0')).arg(m,2,10,QChar('0')).arg(s1,2,10,QChar('0'))) .arg((b ? "on" : "off")) .arg(fd.date().toString(Qt::SystemLocaleShortDate)) - .arg(fd.toString("HH:mm")) - .arg(ld.toString("HH:mm")); + .arg(fd.toString("HH:mm:ss")) + .arg(ld.toString("HH:mm:ss")); } } @@ -1285,8 +1285,8 @@ QString Daily::getSleepTime(Day * day) int s=tt % 60; html+=QString("%1%2%3%4\n") .arg(date.date().toString(Qt::SystemLocaleShortDate)) - .arg(date.toString("HH:mm")) - .arg(date2.toString("HH:mm")) + .arg(date.toString("HH:mm:ss")) + .arg(date2.toString("HH:mm:ss")) .arg(QString().sprintf("%02i:%02i:%02i",h,m,s)); html+="\n"; // html+="
"; diff --git a/sleepyhead/preferencesdialog.ui b/sleepyhead/preferencesdialog.ui index 9caed7fd..3c8b9e51 100644 --- a/sleepyhead/preferencesdialog.ui +++ b/sleepyhead/preferencesdialog.ui @@ -51,7 +51,7 @@ - 2 + 7 @@ -2408,7 +2408,7 @@ p, li { white-space: pre-wrap; } - Top & Bottom Markers + Top Markers