From b45e7efed538406dc9d7b5cdd3959ec520eced63 Mon Sep 17 00:00:00 2001 From: Mark Watkins Date: Sun, 17 Aug 2014 22:56:05 +1000 Subject: [PATCH] New Graph QMenu magic and new icons --- sleepyhead/Graphs/MinutesAtPressure.cpp | 101 +++-- sleepyhead/Graphs/MinutesAtPressure.h | 7 +- sleepyhead/Graphs/gFlagsLine.cpp | 20 +- sleepyhead/Graphs/gFlagsLine.h | 7 +- sleepyhead/Graphs/gFooBar.cpp | 5 +- sleepyhead/Graphs/gFooBar.h | 5 +- sleepyhead/Graphs/gGraph.cpp | 69 ++-- sleepyhead/Graphs/gGraph.h | 7 +- sleepyhead/Graphs/gGraphView.cpp | 384 ++++++++++++++---- sleepyhead/Graphs/gGraphView.h | 68 +++- sleepyhead/Graphs/gLineChart.cpp | 339 +++++++++++++--- sleepyhead/Graphs/gLineChart.h | 52 ++- sleepyhead/Graphs/gLineOverlay.cpp | 5 +- sleepyhead/Graphs/gLineOverlay.h | 5 +- sleepyhead/Graphs/gSegmentChart.cpp | 5 +- sleepyhead/Graphs/gSegmentChart.h | 5 +- sleepyhead/Graphs/gSessionTimesChart.cpp | 5 +- sleepyhead/Graphs/gSessionTimesChart.h | 5 +- sleepyhead/Graphs/gStatsLine.cpp | 5 +- sleepyhead/Graphs/gStatsLine.h | 5 +- sleepyhead/Graphs/gSummaryChart.cpp | 7 +- sleepyhead/Graphs/gSummaryChart.h | 5 +- sleepyhead/Graphs/gXAxis.cpp | 5 +- sleepyhead/Graphs/gXAxis.h | 5 +- sleepyhead/Graphs/gYAxis.cpp | 7 +- sleepyhead/Graphs/gYAxis.h | 5 +- sleepyhead/Graphs/gdailysummary.cpp | 174 ++++++-- sleepyhead/Graphs/gdailysummary.h | 14 +- sleepyhead/Graphs/glcommon.cpp | 5 +- sleepyhead/Graphs/glcommon.h | 5 +- sleepyhead/Graphs/gspacer.cpp | 5 +- sleepyhead/Graphs/gspacer.h | 5 +- sleepyhead/Graphs/layer.cpp | 3 +- sleepyhead/Graphs/layer.h | 15 +- sleepyhead/Resources.qrc | 2 + sleepyhead/SleepLib/calcs.cpp | 5 +- sleepyhead/SleepLib/calcs.h | 5 +- sleepyhead/SleepLib/common.cpp | 5 +- sleepyhead/SleepLib/common.h | 5 +- sleepyhead/SleepLib/day.cpp | 49 ++- sleepyhead/SleepLib/day.h | 13 +- sleepyhead/SleepLib/event.cpp | 5 +- sleepyhead/SleepLib/event.h | 5 +- sleepyhead/SleepLib/journal.cpp | 302 ++++++++++++++ sleepyhead/SleepLib/journal.h | 77 ++++ .../SleepLib/loader_plugins/cms50_loader.cpp | 5 +- .../SleepLib/loader_plugins/cms50_loader.h | 5 +- .../SleepLib/loader_plugins/icon_loader.cpp | 5 +- .../SleepLib/loader_plugins/icon_loader.h | 5 +- .../loader_plugins/intellipap_loader.cpp | 4 +- .../loader_plugins/intellipap_loader.h | 5 +- .../loader_plugins/md300w1_loader.cpp | 5 +- .../SleepLib/loader_plugins/md300w1_loader.h | 5 +- .../loader_plugins/mseries_loader.cpp | 5 +- .../SleepLib/loader_plugins/prs1_loader.cpp | 134 ++++-- .../SleepLib/loader_plugins/prs1_loader.h | 10 +- .../SleepLib/loader_plugins/resmed_loader.cpp | 5 +- .../SleepLib/loader_plugins/resmed_loader.h | 5 +- .../loader_plugins/somnopose_loader.cpp | 5 +- .../loader_plugins/somnopose_loader.h | 5 +- .../loader_plugins/weinmann_loader.cpp | 6 +- .../SleepLib/loader_plugins/weinmann_loader.h | 5 +- .../SleepLib/loader_plugins/zeo_loader.cpp | 5 +- .../SleepLib/loader_plugins/zeo_loader.h | 5 +- sleepyhead/SleepLib/machine.cpp | 73 +++- sleepyhead/SleepLib/machine.h | 5 +- sleepyhead/SleepLib/machine_common.cpp | 9 +- sleepyhead/SleepLib/machine_common.h | 7 +- sleepyhead/SleepLib/machine_loader.cpp | 5 +- sleepyhead/SleepLib/machine_loader.h | 5 +- sleepyhead/SleepLib/preferences.cpp | 7 +- sleepyhead/SleepLib/preferences.h | 5 +- sleepyhead/SleepLib/profiles.cpp | 5 +- sleepyhead/SleepLib/profiles.h | 5 +- sleepyhead/SleepLib/schema.cpp | 137 ++++++- sleepyhead/SleepLib/schema.h | 40 +- sleepyhead/SleepLib/serialoximeter.cpp | 5 +- sleepyhead/SleepLib/serialoximeter.h | 5 +- sleepyhead/SleepLib/session.cpp | 6 +- sleepyhead/SleepLib/session.h | 6 +- sleepyhead/UpdaterWindow.cpp | 5 +- sleepyhead/UpdaterWindow.h | 5 +- sleepyhead/common_gui.cpp | 5 +- sleepyhead/common_gui.h | 5 +- sleepyhead/daily.cpp | 96 +++-- sleepyhead/daily.h | 20 +- sleepyhead/daily.ui | 83 +--- sleepyhead/docs/channels.xml | 1 + sleepyhead/exportcsv.cpp | 5 +- sleepyhead/exportcsv.h | 5 +- sleepyhead/icons/edit-find.png | Bin 4909 -> 68710 bytes sleepyhead/icons/eye.png | Bin 0 -> 38699 bytes sleepyhead/icons/help.png | Bin 4362 -> 82459 bytes sleepyhead/icons/overview.png | Bin 5062 -> 50971 bytes sleepyhead/icons/pushpin.png | Bin 0 -> 2050 bytes sleepyhead/icons/sdcard-lock.png | Bin 5562 -> 80327 bytes sleepyhead/icons/sdcard.png | Bin 2463 -> 70943 bytes sleepyhead/logger.cpp | 8 + sleepyhead/main.cpp | 6 +- sleepyhead/mainwindow.cpp | 46 ++- sleepyhead/mainwindow.h | 16 +- sleepyhead/mainwindow.ui | 47 ++- sleepyhead/newprofile.cpp | 5 +- sleepyhead/newprofile.h | 5 +- sleepyhead/overview.cpp | 5 +- sleepyhead/overview.h | 5 +- sleepyhead/oximeterimport.cpp | 8 + sleepyhead/oximeterimport.h | 8 + sleepyhead/preferencesdialog.cpp | 5 +- sleepyhead/preferencesdialog.h | 5 +- sleepyhead/profileselect.cpp | 5 +- sleepyhead/profileselect.h | 5 +- sleepyhead/reports.cpp | 9 +- sleepyhead/reports.h | 5 +- sleepyhead/sessionbar.cpp | 5 +- sleepyhead/sessionbar.h | 5 +- sleepyhead/sleepyhead.pro | 6 +- sleepyhead/statistics.cpp | 5 +- sleepyhead/statistics.h | 5 +- sleepyhead/translation.cpp | 5 +- sleepyhead/translation.h | 5 +- sleepyhead/updateparser.cpp | 5 +- sleepyhead/updateparser.h | 5 +- sleepyhead/welcome.cpp | 15 +- 124 files changed, 1958 insertions(+), 917 deletions(-) create mode 100644 sleepyhead/SleepLib/journal.cpp create mode 100644 sleepyhead/SleepLib/journal.h create mode 100644 sleepyhead/icons/eye.png create mode 100644 sleepyhead/icons/pushpin.png diff --git a/sleepyhead/Graphs/MinutesAtPressure.cpp b/sleepyhead/Graphs/MinutesAtPressure.cpp index 6ef5aa9c..77f692de 100644 --- a/sleepyhead/Graphs/MinutesAtPressure.cpp +++ b/sleepyhead/Graphs/MinutesAtPressure.cpp @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * MinutesAtPressure Graph Implementation +/* MinutesAtPressure Graph Implementation * * Copyright (c) 2011-2014 Mark Watkins * @@ -29,6 +26,7 @@ MinutesAtPressure::MinutesAtPressure() :Layer(NoChannel) m_remap = nullptr; m_minpressure = 3; m_maxpressure = 30; + m_minimum_height = 0; } MinutesAtPressure::~MinutesAtPressure() { @@ -83,7 +81,7 @@ void MinutesAtPressure::SetDay(Day *day) m_minpressure = qMax(float(4), floor(minpressure)); m_maxpressure = ceil(maxpressure); - const int minimum_cells = 16; + const int minimum_cells = 12; int c = m_maxpressure - m_minpressure; @@ -94,8 +92,12 @@ void MinutesAtPressure::SetDay(Day *day) m_maxpressure = m_minpressure + minimum_cells; } + QFontMetrics FM(*defaultfont); + QList chans = day->getSortedMachineChannels(schema::SPAN | schema::FLAG | schema::MINOR_FLAG); + m_minimum_height = (chans.size()+3) * FM.height() - 5; } + m_empty = false; m_recalculating = false; m_lastminx = 0; @@ -103,6 +105,12 @@ void MinutesAtPressure::SetDay(Day *day) m_empty = !m_day || !(m_day->channelExists(CPAP_Pressure) || m_day->channelExists(CPAP_EPAP)); } + int MinutesAtPressure::minimumHeight() +{ + return m_minimum_height; +} + + bool MinutesAtPressure::isEmpty() { @@ -119,10 +127,20 @@ void MinutesAtPressure::paint(QPainter &painter, gGraph &graph, const QRegion &r int cells = m_maxpressure-m_minpressure+1; + int top = rect.top()-10; float width = rect.width(); + float height = rect.height(); float left = rect.left(); float pix = width / float(cells); + + int numchans = chans.size(); + + int cells_high = numchans + 2; + + //height += 10; + float hix = height / cells_high; + m_minx = graph.min_x; m_maxx = graph.max_x; @@ -133,7 +151,6 @@ void MinutesAtPressure::paint(QPainter &painter, gGraph &graph, const QRegion &r m_lastmaxx = m_maxx; QMap::iterator it; - int top = rect.top()+1; painter.setFont(*defaultfont); painter.setPen(Qt::black); @@ -143,55 +160,49 @@ void MinutesAtPressure::paint(QPainter &painter, gGraph &graph, const QRegion &r QMap::iterator times_end = times.end(); QPoint mouse = graph.graphView()->currentMousePos(); - float ypos = top; - QString text = schema::channel[m_presChannel].label(); - QRectF rec(left - gYAxis::Margin, top, gYAxis::Margin,0); - rec = painter.boundingRect(rec, Qt::AlignTop | Qt::AlignRight, text); - rec.moveRight(left-4); - graph.renderText(text, rec, Qt::AlignRight | Qt::AlignVCenter); + int titleWidth = graph.graphView()->titleWidth; + int marginWidth = gYAxis::Margin; + + QString text = schema::channel[m_presChannel].label(); + QRectF rec(titleWidth-4, ypos, marginWidth, hix); + rec.moveRight(left - 4); +// graph.renderText(text, rec, Qt::AlignRight | Qt::AlignVCenter); - //painter.drawText(rec, Qt::AlignRight | Qt::AlignVCenter, text); if (rec.contains(mouse)) { QString text = schema::channel[m_presChannel].description(); graph.ToolTip(text, mouse.x() + 10, mouse.y(), TT_AlignLeft); } - - double tmph = rec.height(); + int w,h; + GetTextExtent(text, w,h); + graph.renderText(text, (left-4) - w, ypos + hix/2.0 + float(h)/2.0); text = STR_UNIT_Minutes; - QRectF rec2(left - gYAxis::Margin, top + rec.height(), gYAxis::Margin, 0); - rec2 = painter.boundingRect(rec2, Qt::AlignTop | Qt::AlignRight, text); - rec2.moveRight(left-4); - //painter.drawText(rec2, Qt::AlignRight | Qt::AlignVCenter, text); - graph.renderText(text, rec2, Qt::AlignRight | Qt::AlignVCenter); + rec = QRectF(titleWidth-4, ypos+hix, marginWidth, hix); + rec.moveRight(left - 4); - tmph += rec2.height(); + GetTextExtent(text, w,h); + graph.renderText(text, (left-4) - w, ypos + hix + hix/2.0 + float(h)/2.0); +// graph.renderText(text, rec, Qt::AlignRight | Qt::AlignVCenter); float xpos = left; for (it = times.begin(); it != times_end; ++it) { QString text = QString::number(it.key()); QString value = QString("%1").arg(float(it.value()) / 60.0, 5, 'f', 1); - QRectF rec(xpos, top, pix-1, 0); - rec = painter.boundingRect(rec, Qt::AlignTop | Qt::AlignLeft, text); - rec = painter.boundingRect(rec, Qt::AlignTop | Qt::AlignLeft, value); - rec.setWidth(pix - 1); + QRectF rec(xpos, top, pix-1, hix); painter.fillRect(rec, QColor("orange")); graph.renderText(text, rec, Qt::AlignCenter); - //painter.drawText(rec, Qt::AlignCenter, text); - rec.moveTop(top + rec.height()); + + rec.moveTop(top + hix); graph.renderText(value, rec, Qt::AlignCenter); - //painter.drawText(rec, Qt::AlignCenter, value); xpos += pix; } - ypos = top + tmph; - left = rect.left(); - - float hh = rec.height(); + ypos += hix * 2; + // left = rect.left(); QHash >::iterator eit; QHash >::iterator ev_end = events.end(); @@ -199,7 +210,6 @@ void MinutesAtPressure::paint(QPainter &painter, gGraph &graph, const QRegion &r int row = 0; - int numchans = chans.size(); for (int i=0; i< numchans; ++i) { ChannelID code = chans.at(i); @@ -214,19 +224,20 @@ void MinutesAtPressure::paint(QPainter &painter, gGraph &graph, const QRegion &r QMap::iterator eit_end = eit.value().end(); QString text = chan.label(); - QRectF rec2(xpos - gYAxis::Margin, ypos, gYAxis::Margin, hh); - rec2 = painter.boundingRect(rec2, Qt::AlignRight | Qt::AlignVCenter, text); - rec2.moveRight(left-4); + rec = QRectF(titleWidth, ypos, marginWidth, hix); + rec.moveRight(xpos - 4); - if (rec2.contains(mouse)) { + if (rec.contains(mouse)) { QString text = chan.fullname(); if (type == schema::SPAN) { text += "\n"+QObject::tr("(% of time)"); } graph.ToolTip(text, mouse.x() + 10, mouse.y(), TT_AlignLeft); } - graph.renderText(text, rec2, Qt::AlignRight | Qt::AlignVCenter); - //painter.drawText(rec2, Qt::AlignRight | Qt::AlignVCenter, text); + + GetTextExtent(text, w,h); + + graph.renderText(text, (left-4) - w, ypos + hix/2.0 + float(h)/2.0); for (it = times.begin(), vit = eit.value().begin(); vit != eit_end; ++vit, ++it) { float minutes = float(it.value()) / 60.0; @@ -241,7 +252,7 @@ void MinutesAtPressure::paint(QPainter &painter, gGraph &graph, const QRegion &r value = (minutes > 0.000001) ? (100/minutes) * (value / 60.0) : 0; } - QRectF rec(xpos, ypos, pix-1, hh); + QRectF rec(xpos, ypos, pix-1, hix); if ((row & 1) == 0) { painter.fillRect(rec, QColor(245,245,255,240)); } @@ -252,7 +263,7 @@ void MinutesAtPressure::paint(QPainter &painter, gGraph &graph, const QRegion &r xpos += pix; } - ypos += hh; + ypos += hix; row++; } @@ -429,8 +440,6 @@ skip: // } - - QMutexLocker timelock(&map->timelock); map->times = times; map->events = events; @@ -457,7 +466,11 @@ void MinutesAtPressure::recalculate(gGraph * graph) QThreadPool * tp = QThreadPool::globalInstance(); // tp->reserveThread(); - while(!tp->tryStart(m_remap)); + if (graph->printing()) { + m_remap->run(); + } else { + while(!tp->tryStart(m_remap)); + } // Start recalculating in another thread, organize a callback to redraw when done.. diff --git a/sleepyhead/Graphs/MinutesAtPressure.h b/sleepyhead/Graphs/MinutesAtPressure.h index f1eca8b8..dcb86b91 100644 --- a/sleepyhead/Graphs/MinutesAtPressure.h +++ b/sleepyhead/Graphs/MinutesAtPressure.h @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * Minutes At Pressure Graph Header +/* Minutes At Pressure Graph Header * * Copyright (c) 2011-2014 Mark Watkins * @@ -42,6 +39,7 @@ public: virtual void SetDay(Day *d); virtual bool isEmpty(); + virtual int minimumHeight(); //! Draw filled rectangles behind Event Flag's, and an outlines around them all, Calls the individual paint for each gFlagLine virtual void paint(QPainter &painter, gGraph &w, const QRegion ®ion); @@ -58,6 +56,7 @@ protected: QMutex mutex; bool m_empty; + int m_minimum_height; qint64 m_lastminx; qint64 m_lastmaxx; diff --git a/sleepyhead/Graphs/gFlagsLine.cpp b/sleepyhead/Graphs/gFlagsLine.cpp index cb49a50e..e009483f 100644 --- a/sleepyhead/Graphs/gFlagsLine.cpp +++ b/sleepyhead/Graphs/gFlagsLine.cpp @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * gFlagsLine Implementation +/* gFlagsLine Implementation * * Copyright (c) 2011-2014 Mark Watkins * @@ -38,6 +35,8 @@ gFlagsGroup::gFlagsGroup() gFlagsGroup::~gFlagsGroup() { } + + qint64 gFlagsGroup::Minx() { if (m_day) { @@ -136,6 +135,13 @@ void gFlagsGroup::SetDay(Day *d) m_barh = 0; } +bool gFlagsGroup::isEmpty() +{ + if (m_day) { + return !(m_day->hasEnabledSessions()) || m_empty; + } + return m_empty; +} void gFlagsGroup::paint(QPainter &painter, gGraph &g, const QRegion ®ion) { @@ -194,9 +200,9 @@ void gFlagsGroup::paint(QPainter &painter, gGraph &g, const QRegion ®ion) bool gFlagsGroup::mouseMoveEvent(QMouseEvent *event, gGraph *graph) { - if (p_profile->appearance->lineCursorMode()) { + //if (p_profile->appearance->lineCursorMode()) { graph->timedRedraw(0); - } + // } if (!p_profile->appearance->graphTooltips()) { return false; @@ -215,7 +221,7 @@ bool gFlagsGroup::mouseMoveEvent(QMouseEvent *event, gGraph *graph) QString ttip = schema::channel[fl->code()].fullname() + "\n" + schema::channel[fl->code()].description(); graph->ToolTip(ttip, event->x()+15, event->y(), TT_AlignLeft); - graph->timedRedraw(30); + graph->timedRedraw(0); } } diff --git a/sleepyhead/Graphs/gFlagsLine.h b/sleepyhead/Graphs/gFlagsLine.h index c0e89b03..025429c4 100644 --- a/sleepyhead/Graphs/gFlagsLine.h +++ b/sleepyhead/Graphs/gFlagsLine.h @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * gFlagsLine Header +/* gFlagsLine Header * * Copyright (c) 2011-2014 Mark Watkins * @@ -90,7 +87,7 @@ class gFlagsGroup: public LayerGroup virtual void SetDay(Day *); //! Returns true if none of the gFlagLine objects contain any data for this day - virtual bool isEmpty() { return m_empty; } + virtual bool isEmpty(); //! Returns the count of visible flag line entries int count() { return lvisible.size(); } diff --git a/sleepyhead/Graphs/gFooBar.cpp b/sleepyhead/Graphs/gFooBar.cpp index 9117fefc..de53aa43 100644 --- a/sleepyhead/Graphs/gFooBar.cpp +++ b/sleepyhead/Graphs/gFooBar.cpp @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * gFooBar Implementation +/* gFooBar Implementation * * Copyright (c) 2011-2014 Mark Watkins * diff --git a/sleepyhead/Graphs/gFooBar.h b/sleepyhead/Graphs/gFooBar.h index 9d8bdb3d..a82f04e0 100644 --- a/sleepyhead/Graphs/gFooBar.h +++ b/sleepyhead/Graphs/gFooBar.h @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * gFooBar Header +/* gFooBar Header * * Copyright (c) 2011-2014 Mark Watkins * diff --git a/sleepyhead/Graphs/gGraph.cpp b/sleepyhead/Graphs/gGraph.cpp index 26ff5ffc..f1760320 100644 --- a/sleepyhead/Graphs/gGraph.cpp +++ b/sleepyhead/Graphs/gGraph.cpp @@ -1,5 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: +/* gGraph Implemntation * * Copyright (c) 2011-2014 Mark Watkins * @@ -265,7 +264,7 @@ void gGraph::renderText(QString text, int x, int y, float angle, QColor color, Q m_graphview->AddTextQue(text, x, y, angle, color, font, antialias); } -void gGraph::renderText(QString text, QRectF rect, int flags, float angle, QColor color, QFont *font, bool antialias) +void gGraph::renderText(QString text, QRectF rect, quint32 flags, float angle, QColor color, QFont *font, bool antialias) { m_graphview->AddTextQue(text, rect, flags, angle, color, font, antialias); } @@ -304,6 +303,7 @@ void gGraph::paint(QPainter &painter, const QRegion ®ion) QString & txt = title(); graphView()->AddTextQue(txt, marginLeft() + title_x + 4, originY + height / 2 - y / 2, 90, Qt::black, mediumfont); + left += title_x; } else { left = 0; } @@ -413,18 +413,15 @@ void gGraph::paint(QPainter &painter, const QRegion ®ion) // quads()->add(originX + m_selection.x() + m_selection.width(), originY + height - bottom, // originX + m_selection.x(), originY + height - bottom, col.rgba()); } + + if (isPinned()) { + painter.drawPixmap(-5, originY-10, m_graphview->pin_icon); + } + } QPixmap gGraph::renderPixmap(int w, int h, bool printing) { - gGraphView *sg = mainwin->snapshotGraph(); - - if (!sg) { - return QPixmap(); - } - - // Pixmap caching screws up font sizes when printing - sg->setUsePixmapCache(false); QFont *_defaultfont = defaultfont; QFont *_mediumfont = mediumfont; @@ -438,54 +435,34 @@ QPixmap gGraph::renderPixmap(int w, int h, bool printing) m_printing = printing; if (printing) { - fa.setPixelSize(30); - fb.setPixelSize(35); - fc.setPixelSize(80); - sg->setPrintScaleX(3); - sg->setPrintScaleY(3); + fa.setPixelSize(28); + fb.setPixelSize(32); + fc.setPixelSize(70); + graphView()->setPrintScaleX(2.5); + graphView()->setPrintScaleY(2.2); } else { - sg->setPrintScaleX(1); - sg->setPrintScaleY(1); + graphView()->setPrintScaleX(1); + graphView()->setPrintScaleY(1); } defaultfont = &fa; mediumfont = &fb; bigfont = &fc; - sg->hideSplitter(); - gGraphView *tgv = m_graphview; - - m_graphview = sg; - - sg->setMinimumSize(w, h); - sg->setMaximumSize(w, h); - sg->setFixedSize(w, h); - - float tmp = height(); - setHeight(h); - sg->trashGraphs(); - sg->addGraph(this); - - sg->setScaleY(1.0); - -// float dpr = sg->devicePixelRatio(); -// sg->setDevicePixelRatio(1); - -// bool b = sg->usePixmapCache(); QPixmap pm(w,h); + graphView()->setUsePixmapCache(false); QPainter painter(&pm); painter.fillRect(0,0,w,h,QBrush(QColor(Qt::white))); - sg->renderGraphs(painter); + QRegion region(0,0,w,h); + paint(painter, region); + DrawTextQue(painter); + graphView()->setUsePixmapCache(p_profile->appearance->usePixmapCaching()); painter.end(); -// sg->setDevicePixelRatio(dpr); - //sg->doneCurrent(); - sg->trashGraphs(); + graphView()->setPrintScaleX(1); + graphView()->setPrintScaleY(1); - m_graphview = tgv; - - setHeight(tmp); defaultfont = _defaultfont; mediumfont = _mediumfont; @@ -840,7 +817,7 @@ void gGraph::mouseMoveEvent(QMouseEvent *event) //if (!nolayer) { // no mouse button if (doredraw) { - m_graphview->timedRedraw(30); + m_graphview->timedRedraw(0); } //} diff --git a/sleepyhead/Graphs/gGraph.h b/sleepyhead/Graphs/gGraph.h index 4c94a53b..f7eb44da 100644 --- a/sleepyhead/Graphs/gGraph.h +++ b/sleepyhead/Graphs/gGraph.h @@ -1,5 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: +/* gGraph Header * * Copyright (c) 2011-2014 Mark Watkins * @@ -127,7 +126,7 @@ class gGraph : public QObject void renderText(QString text, int x, int y, float angle = 0.0, QColor color = Qt::black, QFont *font = defaultfont, bool antialias = true); //! \brief Queues text for gGraphView object to draw it, using given rect. - void renderText(QString text, QRectF rect, int flags = Qt::AlignCenter, float angle = 0.0, QColor color = Qt::black, QFont *font = defaultfont, bool antialias = true); + void renderText(QString text, QRectF rect, quint32 flags = Qt::AlignCenter, float angle = 0.0, QColor color = Qt::black, QFont *font = defaultfont, bool antialias = true); //! \brief Rounds Y scale values to make them look nice.. // Applies the Graph Preference min/max settings. @@ -309,6 +308,8 @@ class gGraph : public QObject inline bool blockSelect() const { return m_block_select; } void setBlockSelect(bool b) { m_block_select = b; } + inline bool printing() const { return m_printing; } + protected: //! \brief Mouse Wheel events virtual void wheelEvent(QWheelEvent *event); diff --git a/sleepyhead/Graphs/gGraphView.cpp b/sleepyhead/Graphs/gGraphView.cpp index 3b1eac8a..472db704 100644 --- a/sleepyhead/Graphs/gGraphView.cpp +++ b/sleepyhead/Graphs/gGraphView.cpp @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * gGraphView Implementation +/* gGraphView Implementation * * Copyright (c) 2011-2014 Mark Watkins * @@ -39,6 +36,41 @@ extern MainWindow *mainwin; extern QLabel *qstatus2; +#include + + +MyLabel::MyLabel(QWidget * parent): +QWidget(parent) +{ + m_font = QApplication::font(); +} +MyLabel::~MyLabel() +{ +} +void MyLabel::setText(QString text) { + m_text = text; + repaint(); +} +void MyLabel::setFont(QFont & font) +{ + m_font=font; +} + +void MyLabel::setAlignment(Qt::Alignment alignment) { + m_alignment = alignment; + repaint(); +} + + +void MyLabel::paintEvent(QPaintEvent * event) +{ + QRectF rect(event->rect()); + QPainter painter(this); + painter.setFont(m_font); + painter.drawText(rect, m_alignment, m_text); +} + + gToolTip::gToolTip(gGraphView *graphview) : m_graphview(graphview) @@ -303,6 +335,7 @@ gGraphView::gGraphView(QWidget *parent, gGraphView *shared) m_blockUpdates = false; use_pixmap_cache = p_profile->appearance->usePixmapCaching(); + pin_graph = nullptr; // pixmapcache.setCacheLimit(10240*2); #if QT_VERSION >= QT_VERSION_CHECK(5,0,0) @@ -314,6 +347,28 @@ gGraphView::gGraphView(QWidget *parent, gGraphView *shared) setAutoFillBackground(false); setAutoBufferSwap(false); #endif + + context_menu = new QMenu(this); + pin_action = context_menu->addAction(QString(), this, SLOT(togglePin())); + pin_icon = QPixmap(":/icons/pushpin.png"); + context_menu->addSeparator(); + + context_menu->addAction(tr("100% zoom level"), this, SLOT(resetZoom())); + context_menu->addAction(tr("Reset Graph Layout"), this, SLOT(resetLayout())); + + context_menu->addSeparator(); + plots_menu = context_menu->addMenu(tr("Plots")); + connect(plots_menu, SIGNAL(triggered(QAction*)), this, SLOT(onPlotsClicked(QAction*))); + lines_menu = context_menu->addMenu(tr("Dotted Lines")); + connect(lines_menu, SIGNAL(triggered(QAction*)), this, SLOT(onLinesClicked(QAction*))); +} + +void gGraphView::togglePin() +{ + if (pin_graph) { + pin_graph->setPinned(!pin_graph->isPinned()); + timedRedraw(0); + } } void gGraphView::closeEvent(QCloseEvent * event) @@ -503,97 +558,99 @@ void gGraphView::DrawTextQue(QPainter &painter) // Render graphs with QPainter or pixmap caching, depending on preferences void gGraphView::DrawTextQue(QPainter &painter) { - // process the text drawing queue - int m_textque_items = m_textque.size(); + { + // process the text drawing queue + int m_textque_items = m_textque.size(); - int h,w; + int h,w; - for (int i = 0; i < m_textque_items; ++i) { - TextQue &q = m_textque[i]; + for (int i = 0; i < m_textque_items; ++i) { + const TextQue &q = m_textque.at(i); - // can do antialiased text via texture cache fine on mac - if (usePixmapCache()) { - // Generate the pixmap cache "key" - QString hstr = QString("%1:%2:%3"). - arg(q.text). - arg(q.color.name()). - arg(q.font->pointSize()); + // can do antialiased text via texture cache fine on mac + if (usePixmapCache()) { + // Generate the pixmap cache "key" + QString hstr = QString("%1:%2:%3"). + arg(q.text). + arg(q.color.name()). + arg(q.font->pointSize()); - QPixmap pm; - const int buf = 8; - if (!QPixmapCache::find(hstr, &pm)) { + QPixmap pm; + const int buf = 8; + if (!QPixmapCache::find(hstr, &pm)) { - QFontMetrics fm(*q.font); - // QRect rect=fm.tightBoundingRect(q.text); - w = fm.width(q.text); - h = fm.height()+buf; + QFontMetrics fm(*q.font); + // QRect rect=fm.tightBoundingRect(q.text); + w = fm.width(q.text); + h = fm.height()+buf; - pm=QPixmap(w, h); - pm.fill(Qt::transparent); + pm=QPixmap(w, h); + pm.fill(Qt::transparent); - QPainter imgpainter(&pm); + QPainter imgpainter(&pm); - imgpainter.setPen(q.color); + imgpainter.setPen(q.color); - imgpainter.setFont(*q.font); + imgpainter.setFont(*q.font); - imgpainter.setRenderHint(QPainter::TextAntialiasing, q.antialias); - imgpainter.drawText(0, h-buf, q.text); - imgpainter.end(); + imgpainter.setRenderHint(QPainter::TextAntialiasing, q.antialias); + imgpainter.drawText(0, h-buf, q.text); + imgpainter.end(); - QPixmapCache::insert(hstr, pm); - strings_drawn_this_frame++; - } else { - //cached - strings_cached_this_frame++; - } - - h = pm.height(); - w = pm.width(); - if (q.angle != 0) { - float xxx = q.x - h - (h / 2); - float yyy = q.y + w / 2; // + buf / 2; - - xxx+=4; - yyy+=4; - - painter.translate(xxx, yyy); - painter.rotate(-q.angle); - painter.drawPixmap(QRect(0, h / 2, w, h), pm); - painter.rotate(+q.angle); - painter.translate(-xxx, -yyy); - } else { - painter.drawPixmap(QRect(q.x - buf / 2 + 4, q.y - h + buf, w, h), pm); - } - } else { - // Just draw the fonts.. - painter.setPen(QColor(q.color)); - painter.setFont(*q.font); - - if (q.angle == 0) { - painter.drawText(q.x, q.y, q.text); + QPixmapCache::insert(hstr, pm); + strings_drawn_this_frame++; + } else { + //cached + strings_cached_this_frame++; + } + + h = pm.height(); + w = pm.width(); + if (q.angle != 0) { + float xxx = q.x - h - (h / 2); + float yyy = q.y + w / 2; // + buf / 2; + + xxx+=4; + yyy+=4; + + painter.translate(xxx, yyy); + painter.rotate(-q.angle); + painter.drawPixmap(QRect(0, h / 2, w, h), pm); + painter.rotate(+q.angle); + painter.translate(-xxx, -yyy); + } else { + QRect r1(q.x - buf / 2 + 4, q.y - h + buf, w, h); + painter.drawPixmap(r1, pm); + } } else { + // Just draw the fonts.. + painter.setPen(QColor(q.color)); painter.setFont(*q.font); - w = painter.fontMetrics().width(q.text); - h = painter.fontMetrics().xHeight() + 2; + if (q.angle == 0) { + painter.drawText(q.x, q.y, q.text); + } else { + painter.setFont(*q.font); + + w = painter.fontMetrics().width(q.text); + h = painter.fontMetrics().xHeight() + 2; + + painter.translate(q.x, q.y); + painter.rotate(-q.angle); + painter.drawText(floor(-w / 2.0)-6, floor(-h / 2.0), q.text); + painter.rotate(+q.angle); + painter.translate(-q.x, -q.y); + } + strings_drawn_this_frame++; - painter.translate(q.x, q.y); - painter.rotate(-q.angle); - painter.drawText(floor(-w / 2.0), floor(-h / 2.0), q.text); - painter.rotate(+q.angle); - painter.translate(-q.x, -q.y); } - strings_drawn_this_frame++; + //q.text.clear(); + //q.text.squeeze(); } - //q.text.clear(); - //q.text.squeeze(); + m_textque.clear(); } - - m_textque.clear(); - //////////////////////////////////////////////////////////////////////// // Text Rectangle Queues.. //////////////////////////////////////////////////////////////////////// @@ -601,7 +658,7 @@ void gGraphView::DrawTextQue(QPainter &painter) float ww, hh; for (int i = 0; i < items; ++i) { - TextQueRect &q = m_textqueRect[i]; + const TextQueRect &q = m_textqueRect.at(i); // can do antialiased text via texture cache fine on mac if (usePixmapCache()) { @@ -612,17 +669,19 @@ void gGraphView::DrawTextQue(QPainter &painter) arg(q.font->pointSize()); QPixmap pm; - const int buf = 8; if (!QPixmapCache::find(hstr, &pm)) { ww = q.rect.width(); hh = q.rect.height(); pm=QPixmap(ww, hh); + + int aaw1 = pm.width(); pm.fill(Qt::transparent); QPainter imgpainter(&pm); + int aaw2 = pm.width(); imgpainter.setPen(q.color); imgpainter.setFont(*q.font); @@ -631,9 +690,11 @@ void gGraphView::DrawTextQue(QPainter &painter) imgpainter.setRenderHint(QPainter::TextAntialiasing, true); QRectF rect(0,0, ww, hh); imgpainter.drawText(rect, q.flags, q.text); + int aaw3 = pm.width(); imgpainter.end(); QPixmapCache::insert(hstr, pm); + int aaw4 = pm.width(); strings_drawn_this_frame++; } else { //cached @@ -655,7 +716,8 @@ void gGraphView::DrawTextQue(QPainter &painter) painter.rotate(+q.angle); painter.translate(-xxx, -yyy); } else { - painter.drawPixmap(QRect(q.rect.x(), q.rect.y(), ww, hh), pm); + //painter.drawPixmap(QPoint(q.rect.x(), q.rect.y()), pm); + painter.drawPixmap(q.rect,pm, QRect(0,0,ww,hh)); } } else { // Just draw the fonts.. @@ -667,8 +729,8 @@ void gGraphView::DrawTextQue(QPainter &painter) } else { painter.setFont(*q.font); - w = painter.fontMetrics().width(q.text); - h = painter.fontMetrics().xHeight() + 2; + ww = painter.fontMetrics().width(q.text); + hh = painter.fontMetrics().xHeight() + 2; painter.translate(q.rect.x(), q.rect.y()); painter.rotate(-q.angle); @@ -689,7 +751,7 @@ void gGraphView::DrawTextQue(QPainter &painter) } #endif -void gGraphView::AddTextQue(const QString &text, QRectF rect, int flags, float angle, QColor color, QFont *font, bool antialias) +void gGraphView::AddTextQue(const QString &text, QRectF rect, quint32 flags, float angle, QColor color, QFont *font, bool antialias) { #ifdef ENABLED_THREADED_DRAWING text_mutex.lock(); @@ -1305,6 +1367,32 @@ void gGraphView::paintGL() redrawtimer->setSingleShot(true); redrawtimer->start(); } + + if (p_profile->appearance->lineCursorMode()) { + emit updateCurrentTime(m_currenttime); + } else { + emit updateRange(m_minx, m_maxx); + } +} + +QString gGraphView::getRangeString() +{ + QString fmt; + + qint64 diff = m_maxx - m_minx; + + if (diff > 86400000) { + } else if (diff > 60000) { + fmt = "HH:mm:ss"; + } else { + fmt = "HH:mm:ss:zzz"; + } + QDateTime st = QDateTime::fromMSecsSinceEpoch(m_minx); + QDateTime et = QDateTime::fromMSecsSinceEpoch(m_maxx); + + QString txt = st.toString(QObject::tr("d MMM [ %1 - %2 ]").arg(fmt).arg(et.toString(fmt))) ; + + return txt; } void gGraphView::leaveEvent(QEvent * event) @@ -1459,7 +1547,7 @@ void gGraphView::mouseMoveEvent(QMouseEvent *event) this->setCursor(Qt::ArrowCursor); } else { m_tooltip->display("Double click title to pin / unpin\nClick and drag to reorder graphs", x + 10, y, TT_AlignLeft); - timedRedraw(30); + timedRedraw(0); this->setCursor(Qt::OpenHandCursor); } @@ -1512,7 +1600,7 @@ void gGraphView::mouseMoveEvent(QMouseEvent *event) this->setCursor(Qt::ArrowCursor); } else { m_tooltip->display("Double click title to pin / unpin\nClick and drag to reorder graphs", x + 10, y, TT_AlignLeft); - timedRedraw(30); + timedRedraw(0); this->setCursor(Qt::OpenHandCursor); } @@ -1588,6 +1676,99 @@ void gGraphView::mouseMoveEvent(QMouseEvent *event) } +Layer * gGraphView::findLayer(gGraph * graph, LayerType type) +{ + for (int i=0; i< graph->layers().size(); i++) { + Layer * l = graph->layers()[i]; + if (l->layerType() == type) { + return l; + } + } + return nullptr; +} + +void gGraphView::populateMenu(gGraph * graph) +{ + // First check for any linechart for this graph.. + gLineChart * lc = dynamic_cast(findLayer(graph,LT_LineChart)); + if (lc) { + lines_menu->clear(); + for (int i=0; i < lc->m_dotlines.size(); i++) { + DottedLine & dot = lc->m_dotlines[i]; + schema::Channel &chan = schema::channel[dot.code]; + + if (dot.available) { + QAction *action = lines_menu->addAction(chan.calc[dot.type].label()); + action->setData(graph->name()); + action->setCheckable(true); + action->setChecked(chan.calc[dot.type].enabled); + } + + } + lines_menu->menuAction()->setVisible(true); + plots_menu->clear(); + for (int i=0; i m_codes.size(); i++) { + ChannelID code = lc->m_codes[i]; + if (lc->m_day && !lc->m_day->channelHasData(code)) continue; + QAction * action = plots_menu->addAction(schema::channel[code].label()); + action->setData(QString("%1|%2").arg(graph->name()).arg(code)); + action->setCheckable(true); + action->setChecked(lc->m_enabled[code]); + } + if (plots_menu->actions().size() > 0) { + plots_menu->menuAction()->setVisible(true); + } + } else { + lines_menu->clear(); + lines_menu->menuAction()->setVisible(false); + plots_menu->clear(); + plots_menu->menuAction()->setVisible(false); + } +} + +void gGraphView::onPlotsClicked(QAction *action) +{ + QString name = action->data().toString().section("|",0,0); + ChannelID code = action->data().toString().section("|",-1).toInt(); + + QHash::iterator it = m_graphsbyname.find(name); + if (it == m_graphsbyname.end()) return; + + gGraph * graph = it.value(); + + gLineChart * lc = dynamic_cast(findLayer(graph, LT_LineChart)); + + if (!lc) return; + + lc->m_enabled[code] = !lc->m_enabled[code]; + graph->min_y = graph->MinY(); + graph->max_y = graph->MaxY(); +// lc->Miny(); +// lc->Maxy(); +} + +void gGraphView::onLinesClicked(QAction *action) +{ + QHash::iterator it = m_graphsbyname.find(action->data().toString()); + if (it == m_graphsbyname.end()) return; + + gGraph * graph = it.value(); + + gLineChart * lc = dynamic_cast(findLayer(graph, LT_LineChart)); + + if (!lc) return; + for (int i=0; im_dotlines.size(); i++) { + DottedLine & dot = lc->m_dotlines[i]; + schema::Channel &chan = schema::channel[dot.code]; + + if (chan.calc[dot.type].label() == action->text()) { + chan.calc[dot.type].enabled = !chan.calc[dot.type].enabled; + dot.enabled = !dot.enabled; + } + } +} + + void gGraphView::mousePressEvent(QMouseEvent *event) { int x = event->x(); @@ -1623,7 +1804,7 @@ void gGraphView::mousePressEvent(QMouseEvent *event) done = true; } else if ((y >= py) && (y < py + h)) { //qDebug() << "Clicked" << i; - if (x < titleWidth + 20) { + if ((event->button() == Qt::LeftButton) && (x < titleWidth + 20)) { // clicked on title to drag graph.. // Note: reorder has to be limited to pinned graphs. m_graph_dragging = true; @@ -1634,9 +1815,15 @@ void gGraphView::mousePressEvent(QMouseEvent *event) m_sizer_point.setX(x); m_sizer_point.setY(py); // point at top of graph.. this->setCursor(Qt::ClosedHandCursor); + done=true; + } else if ((event->button() == Qt::RightButton) && (x < (titleWidth + gYAxis::Margin))) { + this->setCursor(Qt::ArrowCursor); + pin_action->setText(QObject::tr("Unpin %1 Graph").arg(g->title())); + pin_graph = g; + populateMenu(g); + context_menu->popup(event->globalPos()); + done=true; } else if (!g->blockSelect()) { - - if (m_metaselect) { if (m_selected_graph) { m_selected_graph->m_selecting_area = false; @@ -1691,9 +1878,11 @@ void gGraphView::mousePressEvent(QMouseEvent *event) m_sizer_point.setX(x); m_sizer_point.setY(y); //qDebug() << "Sizer clicked" << i; + done=true; } else if ((y >= py) && (y < py + h)) { //qDebug() << "Clicked" << i; - if (x < titleWidth + 20) { // clicked on title to drag graph.. + + if ((event->button() == Qt::LeftButton) && (x < (titleWidth + 20))) { // clicked on title to drag graph.. m_graph_dragging = true; m_tooltip->cancel(); redraw(); @@ -1701,6 +1890,15 @@ void gGraphView::mousePressEvent(QMouseEvent *event) m_sizer_point.setX(x); m_sizer_point.setY(py); // point at top of graph.. this->setCursor(Qt::ClosedHandCursor); + done=true; + } else if ((event->button() == Qt::RightButton) && (x < (titleWidth + gYAxis::Margin))) { + this->setCursor(Qt::ArrowCursor); + pin_action->setText(QObject::tr("Pin %1 Graph").arg(g->title())); + pin_graph = g; + populateMenu(g); + + context_menu->popup(event->globalPos()); + done=true; } else if (!g->blockSelect()) { if (m_metaselect) { if (m_selected_graph) { @@ -1723,7 +1921,16 @@ void gGraphView::mousePressEvent(QMouseEvent *event) } py += h + graphSpacer; + done=true; } + + if (!done) { +// if (event->button() == Qt::RightButton) { +// this->setCursor(Qt::ArrowCursor); +// context_menu->popup(event->globalPos()); +// done=true; +// } + } } void gGraphView::mouseReleaseEvent(QMouseEvent *event) @@ -1844,6 +2051,7 @@ void gGraphView::mouseReleaseEvent(QMouseEvent *event) } } } + timedRedraw(0); } void gGraphView::keyReleaseEvent(QKeyEvent *event) @@ -2127,7 +2335,7 @@ void gGraphView::keyPressEvent(QKeyEvent *event) int bk = (int)event->key()-Qt::Key_0; m_metaselect = false; - timedRedraw(30); + timedRedraw(0); } if (event->key() == Qt::Key_F3) { diff --git a/sleepyhead/Graphs/gGraphView.h b/sleepyhead/Graphs/gGraphView.h index 40d05bec..d8ba102e 100644 --- a/sleepyhead/Graphs/gGraphView.h +++ b/sleepyhead/Graphs/gGraphView.h @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * gGraphView Header +/* gGraphView Header * * Copyright (c) 2011-2014 Mark Watkins * @@ -21,6 +18,7 @@ #include #include #include +#include #ifndef BROKEN_OPENGL_BUILD #include @@ -32,6 +30,24 @@ enum FlagType { FT_Bar, FT_Dot, FT_Span }; +class MyLabel:public QWidget +{ +public: + MyLabel(QWidget * parent); + virtual ~MyLabel(); + + void setText(QString text); + void setAlignment(Qt::Alignment alignment); + + void setFont(QFont & font); + QFont & font() { return m_font; } + virtual void paintEvent(QPaintEvent * event); + + QFont m_font; + QString m_text; + Qt::Alignment m_alignment; +}; + class gGraphView; const int textque_max = 512; @@ -75,8 +91,8 @@ struct TextQue { struct TextQueRect { TextQueRect() { } - TextQueRect(QRectF rect, int flags, QString text, float angle, QColor color, QFont * font, bool antialias): - rect(rect), flags(flags), text(text), angle(angle), color(color), font(font), antialias(antialias) + TextQueRect(QRectF r, quint32 flags, QString text, float angle, QColor color, QFont * font, bool antialias): + rect(r), flags(flags), text(text), angle(angle), color(color), font(font), antialias(antialias) { } TextQueRect(const TextQueRect & copy) { @@ -92,7 +108,7 @@ struct TextQueRect { //! \variable contains the QRect containing the text object QRectF rect; //! \variable Qt alignment flags.. - int flags; + quint32 flags; //! \variable the actual text to draw QString text; //! \variable the angle in degrees for drawing rotated text @@ -221,6 +237,7 @@ class gGraphView :public QGLWidget #endif { + friend class gGraph; Q_OBJECT public: /*! \fn explicit gGraphView(QWidget *parent = 0,gGraphView * shared=0); @@ -329,7 +346,7 @@ class gGraphView void updateSelectionTime(); //! \brief Add the Text information to the Text Drawing Queue (called by gGraphs renderText method) - void AddTextQue(const QString &text, QRectF rect, int flags, float angle = 0.0, + void AddTextQue(const QString &text, QRectF rect, quint32 flags, float angle = 0.0, QColor color = Qt::black, QFont *font = defaultfont, bool antialias = true); //! \brief Add the Text information to the Text Drawing Queue (called by gGraphs renderText method) @@ -360,9 +377,6 @@ class gGraphView //! \brief Called on resize, fits graphs when too few to show, by scaling to fit screen size. Calls updateScrollBar() void updateScale(); // update scale & Scrollbar - //! \brief Resets all contained graphs to have a uniform height. - void resetLayout(); - //! \brief Returns a count of all visible, non-empty Graphs. int visibleGraphs(); @@ -415,12 +429,18 @@ class gGraphView //! \brief The current time the mouse pointer is hovering over inline double currentTime() { return m_currenttime; } - inline QString currentTimeString() { return m_currentTimeString; } + //! \brief Returns a context formatted text string with the currently selected time range + QString getRangeString(); + + Layer * findLayer(gGraph * graph, LayerType type); + + void populateMenu(gGraph *); + QMenu * lines_menu; + QMenu * plots_menu; + inline void setCurrentTime(double time) { m_currenttime = time; - QDateTime dt=QDateTime::fromMSecsSinceEpoch(time); - m_currentTimeString = dt.toString("MMM dd - HH:mm:ss:zzz"); } inline QPoint currentMousePos() const { return m_mouse; } @@ -547,7 +567,6 @@ class gGraphView QPoint m_mouse; qint64 m_currenttime; - QString m_currentTimeString; QTime m_animationStarted; @@ -556,6 +575,14 @@ class gGraphView QPixmapCache pixmapcache; QTime horizScrollTime, vertScrollTime; + QMenu * context_menu; + QAction * pin_action; + QPixmap pin_icon; + gGraph *pin_graph; + + signals: + void updateCurrentTime(double); + void updateRange(double,double); public slots: //! \brief Callback from the ScrollBar, to change scroll position @@ -567,6 +594,17 @@ class gGraphView //! \brief Call UpdateGL unless animation is in progress void redraw(); + //! \brief Resets all contained graphs to have a uniform height. + void resetLayout(); + + void resetZoom() { + ResetBounds(true); + } + + void togglePin(); +protected slots: + void onLinesClicked(QAction *); + void onPlotsClicked(QAction *); }; #endif // GGRAPHVIEW_H diff --git a/sleepyhead/Graphs/gLineChart.cpp b/sleepyhead/Graphs/gLineChart.cpp index 7307fd95..8056bb3e 100644 --- a/sleepyhead/Graphs/gLineChart.cpp +++ b/sleepyhead/Graphs/gLineChart.cpp @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * gLineChart Implementation +/* gLineChart Implementation * * Copyright (c) 2011-2014 Mark Watkins * @@ -23,6 +20,17 @@ #include "Graphs/gLineOverlay.h" #define EXTRA_ASSERTS 1 + +QColor darken(QColor color, float p) +{ + int r = qMin(int(color.red() * p), 255); + int g = qMin(int(color.green() * p), 255); + int b = qMin(int(color.blue() * p), 255); + + + return QColor(r,g,b, color.alpha()); +} + gLineChart::gLineChart(ChannelID code, QColor col, bool square_plot, bool disable_accel) : Layer(code), m_square_plot(square_plot), m_disable_accel(disable_accel) { @@ -31,6 +39,7 @@ gLineChart::gLineChart(ChannelID code, QColor col, bool square_plot, bool disabl m_report_empty = false; lines.reserve(50000); lasttime = 0; + m_layertype = LT_LineChart; } gLineChart::~gLineChart() { @@ -63,6 +72,7 @@ bool gLineChart::isEmpty() return true; } + void gLineChart::SetDay(Day *d) { // Layer::SetDay(d); @@ -183,6 +193,30 @@ skipcheck: flags[code] = lob; } } + m_dotlines.clear(); + + for (int i=0; i< m_codes.size(); i++) { + ChannelID code = m_codes[i]; + schema::Channel & chan = schema::channel[code]; + addDotLine(DottedLine(code, Calc_Max,chan.calc[Calc_Max].enabled)); + if ((code != CPAP_FlowRate) && (code != CPAP_MaskPressure) && (code != CPAP_MaskPressureHi)) { + addDotLine(DottedLine(code, Calc_Perc,chan.calc[Calc_Perc].enabled)); + addDotLine(DottedLine(code, Calc_Middle, chan.calc[Calc_Middle].enabled)); + } + addDotLine(DottedLine(code, Calc_Min, chan.calc[Calc_Min].enabled)); + } + if (m_codes[0] == CPAP_Leak) { + addDotLine(DottedLine(CPAP_Leak, Calc_UpperThresh, schema::channel[CPAP_Leak].calc[Calc_UpperThresh].enabled)); + } else if (m_codes[0] == CPAP_FlowRate) { + addDotLine(DottedLine(CPAP_FlowRate, Calc_Zero, schema::channel[CPAP_FlowRate].calc[Calc_Zero].enabled)); + } + + + if (m_day) { + for (int i=0; i < m_dotlines.size(); i++) { + m_dotlines[i].calc(m_day); + } + } // for (int i=0; i< m_day->size(); ++i) { // Session * sess = m_day->sessions.at(i); @@ -210,7 +244,7 @@ skipcheck: // } // } - QList middles; +/* QList middles; middles.push_back(CPAP_RespRate); middles.push_back(CPAP_TidalVolume); @@ -218,6 +252,8 @@ skipcheck: middles.push_back(CPAP_Ti); middles.push_back(CPAP_Te); + + CPAPMode mode = (CPAPMode)m_day->settings_wavg(CPAP_Mode); float perc = p_profile->general->prefCalcPercentile(); for (int i=0; ipercentile(code, perc / 100.0); chan.setUpperThreshold(f); - chan.setUpperThresholdColor(Qt::black); - m_threshold.push_back(QString("%1% %2 %3").arg(perc, 0, 'f', 0).arg(chan.fullname()).arg(f,0,'f',2)); + chan.setUpperThresholdColor(darken(schema::channel[CPAP_Pressure].defaultColor())); + m_threshold.push_back(QString("%1% %2 %3").arg(perc, 0, 'f', 0).arg(chan.label()).arg(f,0,'f',2)); } else { chan.setUpperThreshold(0); m_threshold.push_back(QString()); @@ -237,8 +273,9 @@ skipcheck: if (mode >= MODE_BILEVEL_AUTO_FIXED_PS) { float f = m_day->percentile(code,perc / 100.0); chan.setUpperThreshold(f); - chan.setUpperThresholdColor(Qt::black); - m_threshold.push_back(QString("%1% %2 %3").arg(perc, 0, 'f', 0).arg(chan.fullname()).arg(f,0,'f',2)); + QColor color = darken(schema::channel[CPAP_IPAP].defaultColor()); + chan.setUpperThresholdColor(color); + m_threshold.push_back(QString("%1% %2").arg(perc, 0, 'f', 0).arg(chan.label()));//.arg(f,0,'f',2)); } else { chan.setUpperThreshold(0); m_threshold.push_back(QString()); @@ -247,41 +284,89 @@ skipcheck: if ((mode >= MODE_BILEVEL_AUTO_FIXED_PS) && (mode != MODE_ASV)) { float f = m_day->percentile(code,perc / 100.0); chan.setUpperThreshold(f); - chan.setUpperThresholdColor(Qt::black); - m_threshold.push_back(QString("%1% %2 %3").arg(perc, 0, 'f', 0).arg(chan.fullname()).arg(f,0,'f',2)); + QColor color = darken(schema::channel[CPAP_EPAP].defaultColor()); + chan.setUpperThresholdColor(color); + m_threshold.push_back(QString("%1% %2").arg(perc, 0, 'f', 0).arg(chan.label()));//.arg(f,0,'f',2)); } else { chan.setUpperThreshold(0); m_threshold.push_back(QString()); } } else if (code == CPAP_Leak) { - m_threshold.push_back(QObject::tr("%1 threshold").arg(chan.fullname())); + m_threshold.push_back(QObject::tr("%1 threshold").arg(chan.label())); } else if (middles.contains(code)) { float f = m_day->calcMiddle(code); chan.setUpperThreshold(f); - chan.setUpperThresholdColor(Qt::black); + chan.setUpperThresholdColor(darken(schema::channel[code].defaultColor())); m_threshold.push_back(m_day->calcMiddleLabel(code)); } else { chan.setUpperThreshold(0); m_threshold.push_back(QString()); } - } + }*/ } EventDataType gLineChart::Miny() { - int m = Layer::Miny(); + int size = m_codes.size(); + if (size == 0) return 0; + if (!m_day) return 0; - if (subtract_offset > 0) { - m -= subtract_offset; + bool first = false; + EventDataType min = 0, tmp; - if (m < 0) { m = 0; } + for (int i=0; i< size; ++i) { + ChannelID code = m_codes[i]; + if (!m_enabled[code]) continue; + + tmp = m_day->Min(code); + + if (!first) { + min = tmp; + } else { + min = qMin(tmp, min); + } } + if (!first) min = 0; - return m; + m_miny = min; + + return min; +// int m = Layer::Miny(); + +// if (subtract_offset > 0) { +// m -= subtract_offset; + +// if (m < 0) { m = 0; } +// } + +// return m; } EventDataType gLineChart::Maxy() { - return Layer::Maxy() - subtract_offset; + int size = m_codes.size(); + if (size == 0) return 0; + if (!m_day) return 0; + + bool first = false; + EventDataType max = 0, tmp; + + for (int i=0; i< size; ++i) { + ChannelID code = m_codes[i]; + if (!m_enabled[code]) continue; + + tmp = m_day->Max(code); + if (!first) { + max = tmp; + first = true; + } else { + max = qMax(tmp, max); + } + } + if (!first) max = 0; + m_maxy = max; + return max; + +// return Layer::Maxy() - subtract_offset; } bool gLineChart::mouseMoveEvent(QMouseEvent *event, gGraph *graph) @@ -308,7 +393,7 @@ QString gLineChart::getMetaString(qint64 time) ChannelID code = m_codes[i]; if (m_day->channelHasData(code)) { val = m_day->lookupValue(code, time, m_square_plot); - lasttext += " "+QString("%1: %2 %3").arg(schema::channel[code].label()).arg(val,0,'f',2).arg(schema::channel[code].units()); + lasttext += " "+QString("%1: %2").arg(schema::channel[code].label()).arg(val,0,'f',2); //.arg(schema::channel[code].units()); if (code == CPAP_IPAP) { ipap = val; @@ -322,7 +407,7 @@ QString gLineChart::getMetaString(qint64 time) } if (addPS) { val = ipap - epap; - lasttext += " "+QString("%1: %2 %3").arg(schema::channel[CPAP_PS].label()).arg(val,0,'f',2).arg(schema::channel[CPAP_PS].units()); + lasttext += " "+QString("%1: %2").arg(schema::channel[CPAP_PS].label()).arg(val,0,'f',2);//.arg(schema::channel[CPAP_PS].units()); } lasttime = time; @@ -381,6 +466,12 @@ void gLineChart::paint(QPainter &painter, gGraph &w, const QRegion ®ion) // the middle of minx and maxy does not have to be the center... + double logX = painter.device()->logicalDpiX(); + double physX = painter.device()->physicalDpiX(); + double ratioX = physX / logX * w.printScaleX(); + double logY = painter.device()->logicalDpiY(); + double physY = painter.device()->physicalDpiY(); + double ratioY = physY / logY * w.printScaleY(); double xx = maxx - minx; double xmult = double(width) / xx; @@ -407,8 +498,11 @@ void gLineChart::paint(QPainter &painter, gGraph &w, const QRegion ®ion) } + bool linecursormode = p_profile->appearance->lineCursorMode(); + //////////////////////////////////////////////////////////////////////// // Display Line Cursor - if (p_profile->appearance->lineCursorMode()) { + //////////////////////////////////////////////////////////////////////// + if (linecursormode) { double time = w.currentTime(); if ((time > minx) && (time < maxx)) { @@ -421,12 +515,13 @@ void gLineChart::paint(QPainter &painter, gGraph &w, const QRegion ®ion) getMetaString(time); } - QString text = w.graphView()->currentTimeString() + lasttext; - - int wid, h; - GetTextExtent(text, wid, h); - w.renderText(text, left + width/2 - wid/2, top-h+5); + if (m_codes[0] != CPAP_FlowRate) { + QString text = lasttext; + int wid, h; + GetTextExtent(text, wid, h); + w.renderText(text, left , top-h+5); //+ width/2 - wid/2 + } } EventDataType lastpx, lastpy; @@ -468,29 +563,66 @@ void gLineChart::paint(QPainter &painter, gGraph &w, const QRegion ®ion) painter.setRenderHint(QPainter::Antialiasing, p_profile->appearance->antiAliasing()); painter.setFont(*defaultfont); + bool showDottedLines = true; + + int dotlinesize = m_dotlines.size(); + + // Unset Dotted lines visible status, so we only draw necessary labels later + for (int i=0; i < dotlinesize; i++) { + DottedLine & dot = m_dotlines[i]; + dot.visible = false; + } for (int gi = 0; gi < m_codes.size(); gi++) { ChannelID code = m_codes[gi]; schema::Channel &chan = schema::channel[code]; - if (chan.upperThreshold() > 0) { - QColor color = chan.upperThresholdColor(); - color.setAlpha(100); - painter.setPen(QPen(QBrush(color),1,Qt::DotLine)); + //////////////////////////////////////////////////////////////////////// + // Draw the Channel Threshold dotted lines, and flow waveform centreline + //////////////////////////////////////////////////////////////////////// + if (showDottedLines) { + for (int i=0; i < dotlinesize; i++) { + DottedLine & dot = m_dotlines[i]; + if ((dot.code != code) || (!dot.enabled) || (!dot.available)) { + continue; + } + schema::Channel & chan = schema::channel[code]; - EventDataType y=top + height + 1 - ((chan.upperThreshold() - miny) * ymult); - painter.drawLine(left + 1, y, left + 1 + width, y); - painter.drawText(left+4, y-2, m_threshold.at(gi)); - } - if (chan.lowerThreshold() > 0) { - QColor color = chan.lowerThresholdColor(); - color.setAlpha(100); - painter.setPen(QPen(QBrush(color),1,Qt::DotLine)); + dot.visible = true; + QColor color = chan.calc[dot.type].color; + color.setAlpha(200); + painter.setPen(QPen(QBrush(color),1.5,Qt::DotLine)); + EventDataType y=top + height + 1 - ((dot.value - miny) * ymult); + painter.drawLine(left + 1, y, left + 1 + width, y); - EventDataType y=top + height + 1 - ((chan.lowerThreshold() - miny) * ymult); - painter.drawLine(left+1, y, left + 1 + width, y); - painter.drawText(left+4, y-2, m_threshold.at(gi)); + } +// if (chan.upperThreshold() > 0) { +// QColor color = chan.upperThresholdColor(); +// color.setAlpha(200); +// painter.setPen(QPen(QBrush(color),1.5,Qt::DotLine)); + +// EventDataType y=top + height + 1 - ((chan.upperThreshold() - miny) * ymult); +// painter.drawLine(left + 1, y, left + 1 + width, y); +// } +// if (chan.lowerThreshold() > 0) { +// QColor color = chan.lowerThresholdColor(); +// color.setAlpha(200); +// painter.setPen(QPen(QBrush(color),1.5 ,Qt::DotLine)); + +// EventDataType y=top + height + 1 - ((chan.lowerThreshold() - miny) * ymult); +// painter.drawLine(left+1, y, left + 1 + width, y); +// } +// if (chan.id() == CPAP_FlowRate) { +// QColor color(Qt::red); +// color.setAlpha(200); +// painter.setPen(QPen(QBrush(color),1.5 ,Qt::DotLine)); + +// EventDataType y=top + height + 1 - ((0 - miny) * ymult); +// painter.drawLine(left+1, y, left + 1 + width, y); +// } } + if (!m_enabled[code]) continue; + lines.clear(); @@ -927,38 +1059,109 @@ void gLineChart::paint(QPainter &painter, gGraph &w, const QRegion ®ion) // Draw Legends on the top line //////////////////////////////////////////////////////////////////// - QFontMetrics fm(*defaultfont); - int bw = fm.width('X'); - int bh = fm.height() / 1.8; - - if ((codepoints > 0)) { QString text = schema::channel[code].label(); - int wid, hi; - GetTextExtent(text, wid, hi); - legendx -= wid; + QRectF rec(0, rect.top()-3, 0,0); + rec = painter.boundingRect(rec, Qt::AlignBottom | Qt::AlignLeft, text); + rec.moveRight(legendx); + legendx -= rec.width(); painter.setClipping(false); - w.renderText(text, legendx, top - 4); - legendx -= bw /2; - painter.fillRect(legendx - bw, top - w.marginTop()-2, bh, w.marginTop()+1, QBrush(chan.defaultColor())); + painter.setPen(Qt::black); + painter.drawText(rec, Qt::AlignBottom | Qt::AlignRight, text); + + painter.setPen(QPen(chan.defaultColor(), 1 * ratioY)); + int linewidth = (10 * ratioX); + int yp = rec.top()+(rec.height()/2); + painter.drawLine(rec.left()-linewidth, yp , rec.left()-(2 * ratioX), yp); + painter.setClipping(true); - legendx -= bw*2; - } - } - - - if (!total_points) { // No Data? - - if (m_report_empty) { - QString msg = QObject::tr("No Waveform Available"); - int x, y; - GetTextExtent(msg, x, y, bigfont); - //DrawText(w,msg,left+(width/2.0)-(x/2.0),scry-w.GetBottomMargin()-height/2.0+y/2.0,0,Qt::gray,bigfont); + legendx -= linewidth + (2*ratioX); } } painter.setClipping(false); + //////////////////////////////////////////////////////////////////// + // Draw Channel Threshold legend markers + //////////////////////////////////////////////////////////////////// + for (int i=0; i < dotlinesize; i++) { + DottedLine & dot = m_dotlines[i]; + if (!dot.visible) continue; + ChannelID code = dot.code; + schema::Channel &chan = schema::channel[code]; + int linewidth = (10 * ratioX); + QRectF rec(0, rect.top()-3, 0,0); + + QString text = chan.calc[dot.type].label(); + rec = painter.boundingRect(rec, Qt::AlignBottom | Qt::AlignLeft, text); + rec.moveRight(legendx); + legendx -= rec.width(); + painter.setPen(Qt::black); + painter.drawText(rec, Qt::AlignBottom | Qt::AlignRight, text); + + QColor color = chan.calc[dot.type].color; + color.setAlpha(200); + painter.setPen(QPen(QBrush(color),1 * ratioY,Qt::DotLine)); + + int yp = rec.top()+(rec.height()/2); + painter.drawLine(rec.left()-linewidth, yp , rec.left()-(2 * ratioX), yp); + legendx -= linewidth + (2*ratioX); + + + } +// for (int gi = 0; gi < m_codes.size(); gi++) { +// ChannelID code = m_codes[gi]; +// schema::Channel &chan = schema::channel[code]; + +// int linewidth = (10 * ratioX); +// QRectF rec(0, rect.top()-3, 0,0); +// if (chan.upperThreshold() > 0) { +// QString text = m_threshold.at(gi); +// rec = painter.boundingRect(rec, Qt::AlignBottom | Qt::AlignLeft, text); +// rec.moveRight(legendx); +// legendx -= rec.width(); +// painter.setPen(Qt::black); +// painter.drawText(rec, Qt::AlignBottom | Qt::AlignRight, text); + +// QColor color = chan.upperThresholdColor(); +// color.setAlpha(200); +// painter.setPen(QPen(QBrush(color),1 * ratioY,Qt::DotLine)); + +// int yp = rec.top()+(rec.height()/2); +// painter.drawLine(rec.left()-linewidth, yp , rec.left()-(2 * ratioX), yp); +// legendx -= linewidth + (2*ratioX); +// } +// if (chan.lowerThreshold() > 0) { +// QString text = m_threshold.at(gi); +// rec = painter.boundingRect(rec, Qt::AlignBottom | Qt::AlignLeft, text); +// rec.moveRight(legendx); +// legendx -= rec.width(); +// painter.setPen(Qt::black); +// painter.drawText(rec, Qt::AlignBottom | Qt::AlignRight, text); + +// QColor color = chan.lowerThresholdColor(); +// color.setAlpha(200); +// painter.setPen(QPen(QBrush(color),1,Qt::DotLine)); + +// int yp = rec.top()+(rec.height()/2); +// painter.drawLine(rec.left()-linewidth, yp , rec.left()-(2 * ratioX), yp); +// legendx -= linewidth + (2*ratioX); +// } + +// } + painter.setClipping(true); + + if (!total_points) { // No Data? + // if (m_report_empty) { + QString msg = QObject::tr("Plots Disabled"); + int x, y; + GetTextExtent(msg, x, y, bigfont); + w.renderText(msg, rect, Qt::AlignCenter, 0, Qt::gray, bigfont); +// DrawText(w,msg,left+(width/2.0)-(x/2.0),rect.top()-w.GetBottomMargin()-height/2.0+y/2.0,0,Qt::gray,bigfont); +// } + } + + painter.setClipping(false); // Calculate combined session times within selected area... double first, last; @@ -1032,8 +1235,12 @@ void gLineChart::paint(QPainter &painter, gGraph &w, const QRegion ®ion) QObject::tr("AHI %1").arg(f,0,'f',2);// +" " + // QObject::tr("Events %1").arg(cnt) + " " + // QObject::tr("Hours %1").arg(hours,0,'f',2); + + if (linecursormode) txt+=lasttext; + w.renderText(txt,left,top-4); } + painter.setRenderHint(QPainter::Antialiasing, false); } diff --git a/sleepyhead/Graphs/gLineChart.h b/sleepyhead/Graphs/gLineChart.h index f5bc0f90..93840236 100644 --- a/sleepyhead/Graphs/gLineChart.h +++ b/sleepyhead/Graphs/gLineChart.h @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * gLineChart Header +/* gLineChart Header * * Copyright (c) 2011-2014 Mark Watkins * @@ -20,11 +17,55 @@ #include "SleepLib/day.h" #include "Graphs/gLineOverlay.h" +enum DottedLineCalc { + DLC_Zero, DLC_Min, DLC_Mid, DLC_Perc, DLC_Max, DLC_UpperThresh, DLC_LowerThresh +}; + +QColor darken(QColor color, float p = 0.5); + +struct DottedLine { +public: + DottedLine() { + code = NoChannel; + type = Calc_Zero; + value = 0; + enabled = true; + visible = false; + available = false; + } + DottedLine(const DottedLine & copy) { + code = copy.code; + type = copy.type; + value = copy.value; + available = copy.available; + enabled = copy.enabled; + visible = copy.visible; + } + DottedLine(ChannelID code, ChannelCalcType type, bool enabled = true, bool available = false): + code(code), type(type), enabled(enabled), available(available) {} + + EventDataType calc(Day * day) { + Q_ASSERT(day != nullptr); + + available = day->channelExists(code); + value = day->calc(code, type); + return value; + } + + ChannelID code; + ChannelCalcType type; + EventDataType value; + bool enabled; + bool visible; + bool available; +}; + /*! \class gLineChart \brief Draws a 2D linechart from all Session data in a day. EVL_Waveforms typed EventLists are accelerated. */ class gLineChart: public Layer { + friend class gGraphView; public: /*! \brief Creates a new 2D gLineChart Layer \param code The Channel that gets drawn by this layer @@ -81,6 +122,9 @@ class gLineChart: public Layer QString getMetaString(qint64 time); + void addDotLine(DottedLine dot) { m_dotlines.append(dot); } + QList m_dotlines; + protected: //! \brief Mouse moved over this layers area (shows the hover-over tooltips here) virtual bool mouseMoveEvent(QMouseEvent *event, gGraph *graph); diff --git a/sleepyhead/Graphs/gLineOverlay.cpp b/sleepyhead/Graphs/gLineOverlay.cpp index da98f758..153f6046 100644 --- a/sleepyhead/Graphs/gLineOverlay.cpp +++ b/sleepyhead/Graphs/gLineOverlay.cpp @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * gLineOverlayBar Implementation +/* gLineOverlayBar Implementation * * Copyright (c) 2011-2014 Mark Watkins * diff --git a/sleepyhead/Graphs/gLineOverlay.h b/sleepyhead/Graphs/gLineOverlay.h index a9ad2aed..83d23d39 100644 --- a/sleepyhead/Graphs/gLineOverlay.h +++ b/sleepyhead/Graphs/gLineOverlay.h @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * gLineOverlayBar Header +/* gLineOverlayBar Header * * Copyright (c) 2011-2014 Mark Watkins * diff --git a/sleepyhead/Graphs/gSegmentChart.cpp b/sleepyhead/Graphs/gSegmentChart.cpp index 5f18b9c6..71f928a3 100644 --- a/sleepyhead/Graphs/gSegmentChart.cpp +++ b/sleepyhead/Graphs/gSegmentChart.cpp @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * gSegmentChart Implementation +/* gSegmentChart Implementation * * Copyright (c) 2011-2014 Mark Watkins * diff --git a/sleepyhead/Graphs/gSegmentChart.h b/sleepyhead/Graphs/gSegmentChart.h index 1a69434f..251d9dc1 100644 --- a/sleepyhead/Graphs/gSegmentChart.h +++ b/sleepyhead/Graphs/gSegmentChart.h @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * gSegmentChart Header +/* gSegmentChart Header * * Copyright (c) 2011-2014 Mark Watkins * diff --git a/sleepyhead/Graphs/gSessionTimesChart.cpp b/sleepyhead/Graphs/gSessionTimesChart.cpp index bfd3b216..84d3a02a 100644 --- a/sleepyhead/Graphs/gSessionTimesChart.cpp +++ b/sleepyhead/Graphs/gSessionTimesChart.cpp @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * gSessionTimesChart Implementation +/* gSessionTimesChart Implementation * * Copyright (c) 2011-2014 Mark Watkins * diff --git a/sleepyhead/Graphs/gSessionTimesChart.h b/sleepyhead/Graphs/gSessionTimesChart.h index 4429d9d2..ae12b204 100644 --- a/sleepyhead/Graphs/gSessionTimesChart.h +++ b/sleepyhead/Graphs/gSessionTimesChart.h @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * gSessionTimesChart Header +/* gSessionTimesChart Header * * Copyright (c) 2011-2014 Mark Watkins * diff --git a/sleepyhead/Graphs/gStatsLine.cpp b/sleepyhead/Graphs/gStatsLine.cpp index 6398db50..59665fc6 100644 --- a/sleepyhead/Graphs/gStatsLine.cpp +++ b/sleepyhead/Graphs/gStatsLine.cpp @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * gStatsLine Implementation +/* gStatsLine Implementation * * Copyright (c) 2011 Mark Watkins * diff --git a/sleepyhead/Graphs/gStatsLine.h b/sleepyhead/Graphs/gStatsLine.h index dd5afa82..7e5a5b51 100644 --- a/sleepyhead/Graphs/gStatsLine.h +++ b/sleepyhead/Graphs/gStatsLine.h @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * gStatsLine +/* gStatsLine * * Copyright (c) 2011-2014 Mark Watkins * diff --git a/sleepyhead/Graphs/gSummaryChart.cpp b/sleepyhead/Graphs/gSummaryChart.cpp index df0df9f0..d81027ea 100644 --- a/sleepyhead/Graphs/gSummaryChart.cpp +++ b/sleepyhead/Graphs/gSummaryChart.cpp @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * gSummaryChart Implementation +/* gSummaryChart Implementation * * Copyright (c) 2011-2014 Mark Watkins * @@ -28,7 +25,7 @@ SummaryChart::SummaryChart(QString label, GraphType type) d1.setTimeSpec(Qt::UTC); tz_offset = d2.secsTo(d1); tz_hours = tz_offset / 3600.0; - + m_layertype = LT_SummaryChart; } SummaryChart::~SummaryChart() { diff --git a/sleepyhead/Graphs/gSummaryChart.h b/sleepyhead/Graphs/gSummaryChart.h index f452ba99..8e1b4615 100644 --- a/sleepyhead/Graphs/gSummaryChart.h +++ b/sleepyhead/Graphs/gSummaryChart.h @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * gBarChart Header +/* gSummaryChart Header * * Copyright (c) 2011-2014 Mark Watkins * diff --git a/sleepyhead/Graphs/gXAxis.cpp b/sleepyhead/Graphs/gXAxis.cpp index 583b74ec..396c16d3 100644 --- a/sleepyhead/Graphs/gXAxis.cpp +++ b/sleepyhead/Graphs/gXAxis.cpp @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * gXAxis Implementation +/* gXAxis Implementation * * Copyright (c) 2011-2014 Mark Watkins * diff --git a/sleepyhead/Graphs/gXAxis.h b/sleepyhead/Graphs/gXAxis.h index 990a549d..e07dabae 100644 --- a/sleepyhead/Graphs/gXAxis.h +++ b/sleepyhead/Graphs/gXAxis.h @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * gXAxis Header +/* gXAxis Header * * Copyright (c) 2011-2014 Mark Watkins * diff --git a/sleepyhead/Graphs/gYAxis.cpp b/sleepyhead/Graphs/gYAxis.cpp index f24f1a40..1138930a 100644 --- a/sleepyhead/Graphs/gYAxis.cpp +++ b/sleepyhead/Graphs/gYAxis.cpp @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * gYAxis Implementation +/* gYAxis Implementation * * Copyright (c) 2011-2014 Mark Watkins * @@ -397,6 +394,8 @@ bool gYAxis::mouseMoveEvent(QMouseEvent *event, gGraph *graph) return false; } + graph->timedRedraw(0); + int x = event->x(); int y = event->y(); diff --git a/sleepyhead/Graphs/gYAxis.h b/sleepyhead/Graphs/gYAxis.h index 4224f801..59f80854 100644 --- a/sleepyhead/Graphs/gYAxis.h +++ b/sleepyhead/Graphs/gYAxis.h @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * gYAxis Header +/* gYAxis Header * * Copyright (c) 2011-2014 Mark Watkins * diff --git a/sleepyhead/Graphs/gdailysummary.cpp b/sleepyhead/Graphs/gdailysummary.cpp index 2561bb0b..2ab67831 100644 --- a/sleepyhead/Graphs/gdailysummary.cpp +++ b/sleepyhead/Graphs/gdailysummary.cpp @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * gDailySummary Graph Implementation +/* gDailySummary Graph Implementation * * Copyright (c) 2011-2014 Mark Watkins * @@ -95,36 +92,71 @@ void gDailySummary::SetDay(Day *day) if (y > flag_height) flag_height = y; } - info_labels.clear(); - info_values.clear(); + info.clear(); + info_background.clear(); + settings.clear(); ahi = day->calcAHI(); - QDateTime dt = QDateTime::fromMSecsSinceEpoch(day->first()); - info_labels.append(QObject::tr("Date")); - info_values.append(dt.date().toString(Qt::LocaleDate)); - info_labels.append(QObject::tr("Sleep")); - info_values.append(dt.time().toString()); - QDateTime wake = QDateTime::fromMSecsSinceEpoch(day->last()); - info_labels.append(QObject::tr("Wake")); - info_values.append(wake.time().toString()); + CPAPMode mode = (CPAPMode)round(day->settings_wavg(CPAP_Mode)); + + info.append(QObject::tr("%1: %2").arg(STR_TR_AHI).arg(day->calcAHI(),0,'f',2)); + info_background.append(QColor("orange")); + + settings.append(day->machine->brand()+ " " + day->machine->series()); + settings.append(day->machine->model()+ " " + day->machine->modelnumber()); + settings.append(schema::channel[CPAP_Mode].option(mode)); + + if (mode == MODE_CPAP) { + EventDataType p = round(day->settings_max(CPAP_Pressure)); + settings.append(QString("Fixed %1%2").arg(p,0,'f',2).arg(schema::channel[CPAP_Pressure].units())); + } else if (mode == MODE_APAP) { + EventDataType min = round(day->settings_min(CPAP_PressureMin)); + EventDataType max = round(day->settings_max(CPAP_PressureMax)); + settings.append(QString("Min Pressure %1%2").arg(min,0,'f',2).arg(schema::channel[CPAP_Pressure].units())); + settings.append(QString("Max Pressure %1%2").arg(max,0,'f',2).arg(schema::channel[CPAP_Pressure].units())); + } else if (mode == MODE_BILEVEL_AUTO_FIXED_PS) { + EventDataType min = round(day->settings_min(CPAP_EPAPLo)); + EventDataType max = round(day->settings_max(CPAP_IPAPHi)); + EventDataType ps = round(day->settings_max(CPAP_PS)); + settings.append(QString("Min EPAP %1%2").arg(min,0,'f',2).arg(schema::channel[CPAP_Pressure].units())); + settings.append(QString("Max IPAP %1%2").arg(max,0,'f',2).arg(schema::channel[CPAP_Pressure].units())); + settings.append(QString("PS %1%2").arg(ps,0,'f',2).arg(schema::channel[CPAP_Pressure].units())); + } else if (mode == MODE_BILEVEL_FIXED) { + EventDataType min = round(day->settings_min(CPAP_EPAP)); + EventDataType max = round(day->settings_max(CPAP_IPAP)); + settings.append(QString("EPAP %1%2").arg(min,0,'f',2).arg(schema::channel[CPAP_Pressure].units())); + settings.append(QString("IPAP %1%2").arg(max,0,'f',2).arg(schema::channel[CPAP_Pressure].units())); + } else if (mode == MODE_BILEVEL_AUTO_VARIABLE_PS) { + EventDataType min = round(day->settings_min(CPAP_EPAPLo)); + EventDataType max = round(day->settings_max(CPAP_IPAPHi)); + EventDataType ps = round(day->settings_max(CPAP_PSMin)); + EventDataType pshi = round(day->settings_max(CPAP_PSMax)); + settings.append(QString("Min EPAP %1%2").arg(min,0,'f',2).arg(schema::channel[CPAP_Pressure].units())); + settings.append(QString("Max IPAP %1%2").arg(max,0,'f',2).arg(schema::channel[CPAP_Pressure].units())); + settings.append(QString("PS %1-%2%3").arg(ps,0,'f',2).arg(pshi,0,'f',2).arg(schema::channel[CPAP_Pressure].units())); + } else if (mode == MODE_ASV) { + EventDataType min = round(day->settings_min(CPAP_EPAP)); + EventDataType ps = round(day->settings_max(CPAP_PSMin)); + EventDataType pshi = round(day->settings_max(CPAP_PSMax)); + settings.append(QString("EPAP %1%2").arg(min,0,'f',2).arg(schema::channel[CPAP_Pressure].units())); + settings.append(QString("PS %1-%2%3").arg(ps,0,'f',2).arg(pshi,0,'f',2).arg(schema::channel[CPAP_Pressure].units())); + } + settings.append(QObject::tr("Relief: %1").arg(day->getPressureRelief())); + int secs = hours * 3600.0; int h = secs / 3600; int m = secs / 60 % 60; int s = secs % 60; - info_labels.append(QObject::tr("Hours")); - info_values.append(QString().sprintf("%ih, %im, %is",h,m,s)); + info.append(QObject::tr("Hours: %1h, %2m, %3s").arg(h).arg(m).arg(s)); + info_background.append(QColor("light blue")); - info_value_width = info_label_width = info_height = 0; + info_width = info_height = 0; - for (int i=0; i < info_labels.size(); ++i) { - GetTextExtent(info_labels.at(i), x, y, mediumfont); + for (int i=0; i < info.size(); ++i) { + GetTextExtent(info.at(i), x, y, mediumfont); if (y > info_height) info_height = y; - if (x > info_label_width) info_label_width = x; - - GetTextExtent(info_values.at(i), x, y, mediumfont); - if (y > info_height) info_height = y; - if (x > info_value_width) info_value_width = x; + if (x > info_width) info_width = x; } m_minimum_height = flag_values.size() * flag_height; @@ -186,19 +218,90 @@ void gDailySummary::paint(QPainter &painter, gGraph &w, const QRegion ®ion) float row = top + 10; float column = left+10; - rect1 = QRectF(column - 10, row -5, 0, 0); painter.setFont(*mediumfont); - QString txt = QString::number(ahi, 'f', 2); - QString ahi = QString("%1: %2").arg(STR_TR_AHI).arg(txt); - rect1 = painter.boundingRect(rect1, Qt::AlignTop || Qt::AlignLeft, ahi); - rect1.setWidth(rect1.width()*2); - rect1.setHeight(rect1.height() * 1.5); - painter.fillRect(rect1, QColor("orange")); - painter.setPen(Qt::black); - painter.drawText(rect1, Qt::AlignCenter, ahi); - painter.drawRoundedRect(rect1, 5, 5); - column += rect1.width() + 10; + size = info.size(); + float xpos = left + 10;; + float ypos = top + 10; + double maxwidth = 0 ; + + for (int i=0; i< info.size(); ++i) { + rect1 = QRectF(xpos, ypos, 0, 0); + QString txt = info.at(i); + + rect1 = painter.boundingRect(rect1, Qt::AlignTop || Qt::AlignLeft, txt); + rect1.setHeight(rect1.height() * 1.25); + + maxwidth = qMax(rect1.width(), maxwidth); + ypos += rect1.height() + 5; + } + painter.setFont(*defaultfont); + float tpos = ypos+5; + for (int i=0; i< settings.size(); ++i) { + rect1 = QRectF(xpos, tpos, 0, 0); + QString txt = settings.at(i); + + rect1 = painter.boundingRect(rect1, Qt::AlignTop || Qt::AlignLeft, txt); + rect1.setHeight(rect1.height() * 1.25); + + maxwidth = qMax(rect1.width(), maxwidth); + tpos += rect1.height(); + } + + maxwidth *= 1.1; + + QRectF rect3 = QRectF(xpos, tpos, 0, 0); + QString machinfo = QObject::tr("Machine Information"); + + rect3 = painter.boundingRect(rect1, Qt::AlignTop || Qt::AlignLeft, machinfo); + maxwidth = qMax(rect1.width(), maxwidth); + + painter.drawRect(QRect(xpos, ypos + rect3.height()+4, maxwidth, tpos-ypos)); + ypos = top + 10; + + painter.setFont(*mediumfont); + for (int i=0; i< info.size(); ++i) { + rect1 = QRectF(xpos, ypos, 0, 0); + QString txt = info.at(i); + + rect1 = painter.boundingRect(rect1, Qt::AlignTop || Qt::AlignLeft, txt); + rect1.setWidth(maxwidth); + rect1.setHeight(rect1.height() * 1.25); + painter.fillRect(rect1, QColor(info_background.at(i))); + painter.setPen(Qt::black); + painter.drawText(rect1, Qt::AlignCenter, txt); + painter.drawRoundedRect(rect1, 5, 5); + ypos += rect1.height() + 5; + } + + rect3.moveTop(ypos+1); + rect3.setWidth(maxwidth); + QFont ffont = *defaultfont; + ffont.setBold(true); + painter.setFont(ffont); + + painter.drawText(rect3, Qt::AlignCenter, machinfo); + + painter.setFont(*defaultfont); + ypos += 6 + rect3.height(); + + + for (int i=0; i< settings.size(); ++i) { + rect1 = QRectF(xpos, ypos, 0, 0); + QString txt = settings.at(i); + + rect1 = painter.boundingRect(rect1, Qt::AlignTop || Qt::AlignLeft, txt); + rect1.setWidth(maxwidth); + rect1.setHeight(rect1.height() * 1.25); +// painter.fillRect(rect1, QColor("orange")); + painter.setPen(Qt::black); + painter.drawText(rect1, Qt::AlignCenter, txt); +// painter.drawRoundedRect(rect1, 5, 5); + ypos += rect1.height(); + } + + + column += rect1.width() + 15; size = flag_values.size(); int vis = 0; @@ -331,6 +434,7 @@ bool gDailySummary::mouseReleaseEvent(QMouseEvent *event, gGraph *graph) bool gDailySummary::mouseMoveEvent(QMouseEvent *event, gGraph *graph) { + graph->timedRedraw(0); Q_UNUSED(event) Q_UNUSED(graph) return true; diff --git a/sleepyhead/Graphs/gdailysummary.h b/sleepyhead/Graphs/gdailysummary.h index c87c00ad..d5e2a20c 100644 --- a/sleepyhead/Graphs/gdailysummary.h +++ b/sleepyhead/Graphs/gdailysummary.h @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * gDailySummary Graph Header +/* gDailySummary Graph Header * * Copyright (c) 2011-2014 Mark Watkins * @@ -46,8 +43,10 @@ protected: QList pie_labels; EventDataType pie_total; - QList info_labels; - QList info_values; + QList settings; + QList info; + QList info_background; + QList info_foreground; float flag_height; float flag_label_width; @@ -56,8 +55,7 @@ protected: double ahi; int info_height; - int info_label_width; - int info_value_width; + int info_width; int m_minimum_height; bool m_empty; diff --git a/sleepyhead/Graphs/glcommon.cpp b/sleepyhead/Graphs/glcommon.cpp index 4a316af4..2cc151c8 100644 --- a/sleepyhead/Graphs/glcommon.cpp +++ b/sleepyhead/Graphs/glcommon.cpp @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * glcommon GL code & font stuff +/* glcommon GL code & font stuff * * Copyright (c) 2011-2014 Mark Watkins * diff --git a/sleepyhead/Graphs/glcommon.h b/sleepyhead/Graphs/glcommon.h index 1aa83636..d761d1c5 100644 --- a/sleepyhead/Graphs/glcommon.h +++ b/sleepyhead/Graphs/glcommon.h @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * glcommon GL code & font stuff Header +/* glcommon GL code & font stuff Header * * Copyright (c) 2011-2014 Mark Watkins * diff --git a/sleepyhead/Graphs/gspacer.cpp b/sleepyhead/Graphs/gspacer.cpp index 47c2029e..5ef652bb 100644 --- a/sleepyhead/Graphs/gspacer.cpp +++ b/sleepyhead/Graphs/gspacer.cpp @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * graph spacer Implementation +/* graph spacer Implementation * * Copyright (c) 2011-2014 Mark Watkins * diff --git a/sleepyhead/Graphs/gspacer.h b/sleepyhead/Graphs/gspacer.h index 231068d4..5efe4608 100644 --- a/sleepyhead/Graphs/gspacer.h +++ b/sleepyhead/Graphs/gspacer.h @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * graph spacer Header +/* graph spacer Header * * Copyright (c) 2011-2014 Mark Watkins * diff --git a/sleepyhead/Graphs/layer.cpp b/sleepyhead/Graphs/layer.cpp index 142bb9b6..d5a3501c 100644 --- a/sleepyhead/Graphs/layer.cpp +++ b/sleepyhead/Graphs/layer.cpp @@ -1,5 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: +/* Graph Layer Implementation * * Copyright (c) 2011-2014 Mark Watkins * diff --git a/sleepyhead/Graphs/layer.h b/sleepyhead/Graphs/layer.h index 6a7e90e5..0d00971e 100644 --- a/sleepyhead/Graphs/layer.h +++ b/sleepyhead/Graphs/layer.h @@ -1,5 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: +/* Graph Layer Implementation * * Copyright (c) 2011-2014 Mark Watkins * @@ -27,6 +26,8 @@ enum LayerPosition { LayerLeft, LayerRight, LayerTop, LayerBottom, LayerCenter, enum ToolTipAlignment { TT_AlignCenter, TT_AlignLeft, TT_AlignRight }; +enum LayerType { LT_Other = 0, LT_LineChart, LT_SummaryChart }; + /*! \class Layer \brief The base component for all individual Graph layers */ @@ -49,10 +50,11 @@ class Layer m_X(0), m_Y(0), m_order(0), m_position(LayerCenter), - m_recalculating(false) + m_recalculating(false), + m_layertype(LT_Other) { } - virtual void recalculate(gGraph * graph) { Q_UNUSED(graph)}; + virtual void recalculate(gGraph * graph) { Q_UNUSED(graph)} virtual ~Layer(); //! \brief This gets called on day selection, allowing this layer to precalculate any drawing data @@ -61,7 +63,9 @@ class Layer //! \brief Set the ChannelID used in this layer virtual void SetCode(ChannelID c) { m_code = c; } //! \brief Return the ChannelID used in this layer - const ChannelID &code() { return m_code; } + const ChannelID & code() { return m_code; } + + const LayerType & layerType() { return m_layertype; } //! \brief returns true if this layer contains no data. virtual bool isEmpty(); @@ -174,6 +178,7 @@ class Layer QRect m_rect; bool m_mouseover; volatile bool m_recalculating; + LayerType m_layertype; public: // //! \brief A vector containing all this layers custom drawing buffers diff --git a/sleepyhead/Resources.qrc b/sleepyhead/Resources.qrc index d615103b..d0189be0 100644 --- a/sleepyhead/Resources.qrc +++ b/sleepyhead/Resources.qrc @@ -49,5 +49,7 @@ icons/cms50f.png icons/rms9.png icons/intellipap.png + icons/pushpin.png + icons/eye.png diff --git a/sleepyhead/SleepLib/calcs.cpp b/sleepyhead/SleepLib/calcs.cpp index 6ab8cb3e..0385461e 100644 --- a/sleepyhead/SleepLib/calcs.cpp +++ b/sleepyhead/SleepLib/calcs.cpp @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * Custom CPAP/Oximetry Calculations Header +/* Custom CPAP/Oximetry Calculations Header * * Copyright (c) 2011-2014 Mark Watkins * diff --git a/sleepyhead/SleepLib/calcs.h b/sleepyhead/SleepLib/calcs.h index 6218c16e..b4eba75a 100644 --- a/sleepyhead/SleepLib/calcs.h +++ b/sleepyhead/SleepLib/calcs.h @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * Custom CPAP/Oximetry Calculations Header +/* Custom CPAP/Oximetry Calculations Header * * Copyright (c) 2011-2014 Mark Watkins * diff --git a/sleepyhead/SleepLib/common.cpp b/sleepyhead/SleepLib/common.cpp index 2281c341..ceadaefb 100644 --- a/sleepyhead/SleepLib/common.cpp +++ b/sleepyhead/SleepLib/common.cpp @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * SleepLib Common Functions +/* SleepLib Common Functions * * Copyright (c) 2011-2014 Mark Watkins * diff --git a/sleepyhead/SleepLib/common.h b/sleepyhead/SleepLib/common.h index 15f0752e..89e0f967 100644 --- a/sleepyhead/SleepLib/common.h +++ b/sleepyhead/SleepLib/common.h @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * Common code +/* Common code and junk * * Copyright (c) 2011-2014 Mark Watkins * diff --git a/sleepyhead/SleepLib/day.cpp b/sleepyhead/SleepLib/day.cpp index 75aefaae..46ad8ebe 100644 --- a/sleepyhead/SleepLib/day.cpp +++ b/sleepyhead/SleepLib/day.cpp @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * SleepLib Day Class Implementation +/* SleepLib Day Class Implementation * * Copyright (c) 2011-2014 Mark Watkins * @@ -80,24 +77,22 @@ QString Day::calcMiddleLabel(ChannelID code) { int c = p_profile->general->prefCalcMiddle(); if (c == 0) { - return QObject::tr("%1 %2").arg(STR_TR_Median).arg(schema::channel[code].fullname()); + return QObject::tr("%1 %2").arg(STR_TR_Median).arg(schema::channel[code].label()); } else if (c == 1) { - return QObject::tr("%1 %2").arg(STR_TR_Average).arg(schema::channel[code].fullname()); + return QObject::tr("%1 %2").arg(STR_TR_Average).arg(schema::channel[code].label()); } else { - return QObject::tr("%1 %2").arg(STR_TR_Average).arg(schema::channel[code].fullname()); + return QObject::tr("%1 %2").arg(STR_TR_Average).arg(schema::channel[code].label()); } } QString Day::calcMaxLabel(ChannelID code) { - return QObject::tr("%1 %2").arg(p_profile->general->prefCalcMax() ? QObject::tr("Peak") : QObject::tr("Maximum")).arg(schema::channel[code].fullname()); + return QObject::tr("%1 %2").arg(p_profile->general->prefCalcMax() ? QObject::tr("Peak") : STR_TR_Max).arg(schema::channel[code].label()); } QString Day::calcPercentileLabel(ChannelID code) { - return QObject::tr("%1% %2").arg(p_profile->general->prefCalcPercentile(),0, 'f').arg(schema::channel[code].fullname()); + return QObject::tr("%1% %2").arg(p_profile->general->prefCalcPercentile(),0, 'f',0).arg(schema::channel[code].label()); } - - EventDataType Day::countInsideSpan(ChannelID span, ChannelID code) { QList::iterator end = sessions.end(); @@ -1098,3 +1093,35 @@ QString Day::getPressureSettings() return STR_TR_Unknown; } + + +EventDataType Day::calc(ChannelID code, ChannelCalcType type) +{ + EventDataType value; + + switch(type) { + case Calc_Min: + value = Min(code); + break; + case Calc_Middle: + value = calcMiddle(code); + break; + case Calc_Perc: + value = calcPercentile(code); + break; + case Calc_Max: + value = calcMax(code); + break; + case Calc_UpperThresh: + value = schema::channel[code].upperThreshold(); + break; + case Calc_LowerThresh: + value = schema::channel[code].lowerThreshold(); + break; + case Calc_Zero: + default: + value = 0; + break; + }; + return value; +} diff --git a/sleepyhead/SleepLib/day.h b/sleepyhead/SleepLib/day.h index 4dac9c4d..1e78f9b4 100644 --- a/sleepyhead/SleepLib/day.h +++ b/sleepyhead/SleepLib/day.h @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * SleepLib Day Class Header +/* SleepLib Day Class Header * * Copyright (c) 2011-2014 Mark Watkins * @@ -235,9 +232,11 @@ class Day EventDataType calcMiddle(ChannelID code); EventDataType calcMax(ChannelID code); EventDataType calcPercentile(ChannelID code); - QString calcMiddleLabel(ChannelID code); - QString calcMaxLabel(ChannelID code); - QString calcPercentileLabel(ChannelID code); + static QString calcMiddleLabel(ChannelID code); + static QString calcMaxLabel(ChannelID code); + static QString calcPercentileLabel(ChannelID code); + + EventDataType calc(ChannelID code, ChannelCalcType type); QList sessions; diff --git a/sleepyhead/SleepLib/event.cpp b/sleepyhead/SleepLib/event.cpp index 9dcb0dab..c8ee20f0 100644 --- a/sleepyhead/SleepLib/event.cpp +++ b/sleepyhead/SleepLib/event.cpp @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * SleepLib Event Class Implementation +/* SleepLib Event Class Implementation * * Copyright (c) 2011-2014 Mark Watkins * diff --git a/sleepyhead/SleepLib/event.h b/sleepyhead/SleepLib/event.h index 0133a388..a805943f 100644 --- a/sleepyhead/SleepLib/event.h +++ b/sleepyhead/SleepLib/event.h @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * SleepLib Event Class Header +/* SleepLib Event Class Header * * Copyright (c) 2011-2014 Mark Watkins * diff --git a/sleepyhead/SleepLib/journal.cpp b/sleepyhead/SleepLib/journal.cpp new file mode 100644 index 00000000..39527f1c --- /dev/null +++ b/sleepyhead/SleepLib/journal.cpp @@ -0,0 +1,302 @@ +/* SleepLib Journal Implementation + * + * Copyright (c) 2011-2014 Mark Watkins + * + * This file is subject to the terms and conditions of the GNU General Public + * License. See the file COPYING in the main directory of the Linux + * distribution for more details. */ + + +#include "journal.h" +#include "machine_common.h" +#include +#include +#include +#include +#include +#include + +const int journal_data_version = 1; + +JournalEntry::JournalEntry(QDate date) +{ + Machine * jmach = p_profile->GetMachine(MT_JOURNAL); + if (!jmach) { + MachineInfo info(MT_JOURNAL,0, "Journal", QObject::tr("Journal Data"), QString(), QString(), QString(), QObject::tr("SleepyHead"), QDateTime::currentDateTime(), journal_data_version); + + // Using machine ID 1 rather than a random number, so in future, if profile.xml gets screwed up they'll get their data back.. + // TODO: Perhaps search for unlinked journal folders here to save some anger and frustration? :P + + MachineID machid = 1; + QString path = p_profile->Get("{" + STR_GEN_DataFolder + "}"); + QDir dir(path); + QStringList filters; + filters << "Journal_*"; + QStringList dirs = dir.entryList(filters,QDir::Dirs); + int journals = dirs.size(); + if (journals > 0) { + QString tmp = dirs[0].section("_", -1); + bool ok; + machid = tmp.toUInt(&ok, 16); + if (!ok) { + QMessageBox::warning(nullptr, STR_MessageBox_Warning, + QObject::tr("SleepyHead found an old Journal folder, but it looks like it's been renamed:")+"\n\n"+ + QString("%1").arg(dirs[0])+ + QObject::tr("SleepyHead will not touch this folder, and will create a new one instead.")+"\n\n"+ + QObject::tr("Please be careful when playing in SleepyHead's profile folders :-P"), QMessageBox::Ok); + + // User renamed the folder.. report this + machid = 1; + } + if (journals > 1) { + QMessageBox::warning(nullptr, STR_MessageBox_Warning, + QObject::tr("For some reason, sleepyHead couldn't find a journal object record in your profile, but did find multiple Journal data folders.")+"\n\n"+ + QObject::tr("SleepyHead picked only the first one of these, and will use it in future:")+"\n\n"+ + QString("%1").arg(dirs[0])+ + QObject::tr("If your old data is missing, copy the contents of all the other Journal_XXXXXXX folders to this one manually."), QMessageBox::Ok); + // more then one.. report this. + } + } + jmach = MachineLoader::CreateMachine(info, machid); + } + + m_date = date; + session = nullptr; + day = p_profile->GetDay(date, MT_JOURNAL); + if (!day) { + session = day->sessions[0]; + } else { + // Doesn't exist.. create a new one.. + session = new Session(jmach,0); + qint64 st,et; + QDateTime dt(date,QTime(22,0)); // 10pm localtime + st=qint64(dt.toTime_t())*1000L; + et=st+3600000L; + session->set_first(st); + session->set_last(et); + + // Let it live in memory...but not on disk unless data is changed... + jmach->AddSession(session); + } +} +JournalEntry::~JournalEntry() +{ + if (session && session->IsChanged()) { + Save(); + } +} + + +bool JournalEntry::Save() +{ + if (session && session->IsChanged()) { + qDebug() << "Saving journal session for" << m_date; + + // just need to write bookmarks, the rest are already stored in the session + QVariantList start; + QVariantList end; + QStringList notes; + + int size = bookmarks.size(); + for (int i=0; isettings[Bookmark_Start] = start; + session->settings[Bookmark_End] = end; + session->settings[Bookmark_Notes] = notes; + + QString path = session->machine()->getDataPath(); + QString filename = path + "/" + QString().sprintf("%08lx", session->session()) + ".000"; + + session->settings[LastUpdated] = QDateTime::currentDateTime().toTime_t(); + + session->StoreSummary(filename); + return true; + } + return false; +} + +QString JournalEntry::notes() +{ + QHash::iterator it; + if (session && ((it=session->settings.find(Journal_Notes)) != session->settings.end())) { + return it.value().toString(); + } + return QString(); +} +void JournalEntry::setNotes(QString notes) +{ + if (!session) return; + session->settings[Journal_Notes] = notes; + session->SetChanged(true); +} +EventDataType JournalEntry::weight() +{ + QHash::iterator it; + if (session && ((it = session->settings.find(Journal_Weight)) != session->settings.end())) { + return it.value().toFloat(); + } + return 0; +} +void JournalEntry::setWeight(EventDataType weight) +{ + if (!session) return; + session->settings[Journal_Weight] = weight; + session->SetChanged(true); +} +int JournalEntry::zombie() +{ + QHash::iterator it; + if (session && ((it = session->settings.find(Journal_ZombieMeter)) != session->settings.end())) { + return it.value().toFloat(); + } + return 0; +} +void JournalEntry::setZombie(int zombie) +{ + if (!session) return; + session->settings[Journal_ZombieMeter] = zombie; + session->SetChanged(true); +} + +QList & JournalEntry::getBookmarks() +{ + bookmarks.clear(); + if (!session || !session->settings.contains(Bookmark_Start)) { + return bookmarks; + } + + QVariantList start=session->settings[Bookmark_Start].toList(); + QVariantList end=session->settings[Bookmark_End].toList(); + QStringList notes=session->settings[Bookmark_Notes].toStringList(); + + int size = start.size(); + for (int i=0; i < size; ++i) { + bookmarks.append(Bookmark(start.at(i).toLongLong(), end.at(i).toLongLong(), notes.at(i))); + } + return bookmarks; +} + +void JournalEntry::addBookmark(qint64 start, qint64 end, QString note) +{ + bookmarks.append(Bookmark(start,end,note)); + session->SetChanged(true); +} + +void JournalEntry::delBookmark(qint64 start, qint64 end) +{ + bool removed; + do { + removed = false; + int size = bookmarks.size(); + for (int i=0; iSetChanged(true); // make sure it gets saved later.. + removed=true; + break; + } + } + } while (removed); // clean up any stupid duplicates just in case.. :P + // if I wanted to be nice above, I could add the note string to the search as well.. + // (some users might be suprised to see the lot go with the same start and end index) +} + +void BackupJournal(QString filename) +{ + QDomDocument doc("SleepyHead Journal"); + + QDomElement droot = doc.createElement(STR_AppName); + doc.appendChild(droot); + + QDomElement root = doc.createElement("Journal"); + root.setAttribute("username", p_profile->user->userName()); + droot.appendChild(root); + + + QDate first = p_profile->FirstDay(MT_JOURNAL); + QDate last = p_profile->LastDay(MT_JOURNAL); + + QDate date = first.addDays(-1); + do { + date = date.addDays(1); + + Day * journal = p_profile->GetDay(date, MT_JOURNAL); + if (!journal) continue; + Session * sess = journal->sessions[0]; + if (!sess) continue; + QDomElement day = doc.createElement("day"); + day.setAttribute("date", date.toString()); + + //notes.setAttribute("date", date.toString()); + + if (journal->settingExists(Journal_Notes)) { + QString notedata = sess->settings[Journal_Notes].toString(); + QDomElement notes = doc.createElement("note"); + notes.appendChild(doc.createCDATASection(notedata)); + day.appendChild(notes); + } + if (journal->settingExists(Journal_Weight)) { + EventDataType weight = sess->settings[Journal_Weight].toFloat(); + day.setAttribute("weight", weight); + } + if (journal->settingExists(Journal_ZombieMeter)) { + int zombie = sess->settings[Journal_ZombieMeter].toInt(); + day.setAttribute("zombie", zombie); + } + if (journal->settingExists(LastUpdated)) { + QDateTime dt = sess->settings[LastUpdated].toDateTime(); + day.setAttribute("lastupdated", dt.toTime_t()); + } + if (journal->settingExists(Bookmark_Start)) { + QVariantList start=sess->settings[Bookmark_Start].toList(); + QVariantList end=sess->settings[Bookmark_End].toList(); + QStringList notes=sess->settings[Bookmark_Notes].toStringList(); + QDomElement bookmarks = doc.createElement("bookmarks"); + + int size = start.size(); + for (int i=0; i< size; i++) { + QDomElement bookmark = doc.createElement("bookmark"); + bookmark.setAttribute("start",start.at(i).toString()); + bookmark.setAttribute("end",end.at(i).toString()); + bookmark.setAttribute("notes",notes.at(i)); + bookmarks.appendChild(bookmark); + } + day.appendChild(bookmarks); + } + root.appendChild(day); + + } while (date <= last); + QFile file(filename); + + if (!file.open(QIODevice::WriteOnly)) { + return; + } + + QTextStream ts(&file); + ts << doc.toString(); + file.close(); +} + +DayController::DayController() +{ + journal = nullptr; + cpap = nullptr; + oximeter = nullptr; +} +DayController::~DayController() +{ + delete journal; +} + +void DayController::setDate(QDate date) +{ + if (journal) { + delete journal; + } + journal = new JournalEntry(date); +} diff --git a/sleepyhead/SleepLib/journal.h b/sleepyhead/SleepLib/journal.h new file mode 100644 index 00000000..edbf1d64 --- /dev/null +++ b/sleepyhead/SleepLib/journal.h @@ -0,0 +1,77 @@ +/* SleepLib Journal Implementation + * + * Copyright (c) 2011-2014 Mark Watkins + * + * This file is subject to the terms and conditions of the GNU General Public + * License. See the file COPYING in the main directory of the Linux + * distribution for more details. */ + + +#ifndef JOURNAL_H +#define JOURNAL_H + +#include "SleepLib/profiles.h" + +void BackupJournal(QString filename); + +class Bookmark { +public: + Bookmark() { + start = end = 0; + } + Bookmark(const Bookmark & copy) { + start = copy.start; + end = copy.end; + notes = copy.notes; + } + Bookmark(qint64 start, qint64 end, QString notes): + start(start), end(end), notes(notes) {} + + qint64 start; + qint64 end; + QString notes; +}; + +class JournalEntry +{ +public: + JournalEntry(QDate date); + ~JournalEntry(); + bool Save(); + + QString notes(); + void setNotes(QString notes); + + EventDataType weight(); + void setWeight(EventDataType weight); + int zombie(); + void setZombie(int zombie); + + QList & getBookmarks(); + void addBookmark(qint64 start, qint64 end, QString note); + void delBookmark(qint64 start, qint64 end); + + +protected: + QDate m_date; + QList bookmarks; + Day * day; + Session * session; + bool newsession; +}; + +class DayController +{ + DayController(); + ~DayController(); + + void setDate(QDate date); + + QDate m_date; + JournalEntry * journal; + Day * cpap; + Day * oximeter; + +}; + +#endif // JOURNAL_H diff --git a/sleepyhead/SleepLib/loader_plugins/cms50_loader.cpp b/sleepyhead/SleepLib/loader_plugins/cms50_loader.cpp index fab29605..17641c48 100644 --- a/sleepyhead/SleepLib/loader_plugins/cms50_loader.cpp +++ b/sleepyhead/SleepLib/loader_plugins/cms50_loader.cpp @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * SleepLib CMS50X Loader Implementation +/* SleepLib CMS50X Loader Implementation * * Copyright (c) 2011 Mark Watkins * diff --git a/sleepyhead/SleepLib/loader_plugins/cms50_loader.h b/sleepyhead/SleepLib/loader_plugins/cms50_loader.h index 63e78471..2228d88c 100644 --- a/sleepyhead/SleepLib/loader_plugins/cms50_loader.h +++ b/sleepyhead/SleepLib/loader_plugins/cms50_loader.h @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * SleepLib CMS50X Loader Header +/* SleepLib CMS50X Loader Header * * Copyright (c) 2011-2014 Mark Watkins * diff --git a/sleepyhead/SleepLib/loader_plugins/icon_loader.cpp b/sleepyhead/SleepLib/loader_plugins/icon_loader.cpp index b30bd857..c321846d 100644 --- a/sleepyhead/SleepLib/loader_plugins/icon_loader.cpp +++ b/sleepyhead/SleepLib/loader_plugins/icon_loader.cpp @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * SleepLib Fisher & Paykel Icon Loader Implementation +/* SleepLib Fisher & Paykel Icon Loader Implementation * * Copyright (c) 2011 Mark Watkins * diff --git a/sleepyhead/SleepLib/loader_plugins/icon_loader.h b/sleepyhead/SleepLib/loader_plugins/icon_loader.h index 0df79246..06a91dae 100644 --- a/sleepyhead/SleepLib/loader_plugins/icon_loader.h +++ b/sleepyhead/SleepLib/loader_plugins/icon_loader.h @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * SleepLib Fisher & Paykel Icon Loader Implementation +/* SleepLib Fisher & Paykel Icon Loader Implementation * * Copyright (c) 2011-2014 Mark Watkins * diff --git a/sleepyhead/SleepLib/loader_plugins/intellipap_loader.cpp b/sleepyhead/SleepLib/loader_plugins/intellipap_loader.cpp index 9adc6285..450865b4 100644 --- a/sleepyhead/SleepLib/loader_plugins/intellipap_loader.cpp +++ b/sleepyhead/SleepLib/loader_plugins/intellipap_loader.cpp @@ -1,7 +1,5 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: +/* SleepLib (DeVilbiss) Intellipap Loader Implementation * - * SleepLib (DeVilbiss) Intellipap Loader Implementation * Notes: Intellipap requires the SmartLink attachment to access this data. * * Copyright (c) 2011-2014 Mark Watkins diff --git a/sleepyhead/SleepLib/loader_plugins/intellipap_loader.h b/sleepyhead/SleepLib/loader_plugins/intellipap_loader.h index 4e3eb8e2..108bdb9d 100644 --- a/sleepyhead/SleepLib/loader_plugins/intellipap_loader.h +++ b/sleepyhead/SleepLib/loader_plugins/intellipap_loader.h @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * Intellipap Loader Header +/* Intellipap Loader Header * * Copyright (c) 2011-2014 Mark Watkins * diff --git a/sleepyhead/SleepLib/loader_plugins/md300w1_loader.cpp b/sleepyhead/SleepLib/loader_plugins/md300w1_loader.cpp index 1a523df2..bac71949 100644 --- a/sleepyhead/SleepLib/loader_plugins/md300w1_loader.cpp +++ b/sleepyhead/SleepLib/loader_plugins/md300w1_loader.cpp @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * SleepLib ChoiceMMed MD300W1 Oximeter Loader Implementation +/* SleepLib ChoiceMMed MD300W1 Oximeter Loader Implementation * * Copyright (c) 2011-2014 Mark Watkins * diff --git a/sleepyhead/SleepLib/loader_plugins/md300w1_loader.h b/sleepyhead/SleepLib/loader_plugins/md300w1_loader.h index b5befb1f..91b82408 100644 --- a/sleepyhead/SleepLib/loader_plugins/md300w1_loader.h +++ b/sleepyhead/SleepLib/loader_plugins/md300w1_loader.h @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * SleepLib ChoiceMMed MD300W1 Oximeter Loader Header +/* SleepLib ChoiceMMed MD300W1 Oximeter Loader Header * * Copyright (c) 2011-2014 Mark Watkins * diff --git a/sleepyhead/SleepLib/loader_plugins/mseries_loader.cpp b/sleepyhead/SleepLib/loader_plugins/mseries_loader.cpp index e51deb92..3e1c4072 100644 --- a/sleepyhead/SleepLib/loader_plugins/mseries_loader.cpp +++ b/sleepyhead/SleepLib/loader_plugins/mseries_loader.cpp @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * SleepLib RemStar M-Series Loader Implementation +/* SleepLib RemStar M-Series Loader Implementation * * Copyright (c) 2011 Mark Watkins * diff --git a/sleepyhead/SleepLib/loader_plugins/prs1_loader.cpp b/sleepyhead/SleepLib/loader_plugins/prs1_loader.cpp index d3800813..0ea35521 100644 --- a/sleepyhead/SleepLib/loader_plugins/prs1_loader.cpp +++ b/sleepyhead/SleepLib/loader_plugins/prs1_loader.cpp @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * SleepLib PRS1 Loader Implementation +/* SleepLib PRS1 Loader Implementation * * Copyright (c) 2011-2014 Mark Watkins * @@ -1194,12 +1191,6 @@ bool PRS1Import::ParseSummaryF0() // Tubing lock has no setting byte -// int SysOneResistance = (data[0x0a] & 7); -// bool SysOneResistanceOn = (data[0x0a] & 0x40) ? true : false; -// bool SysOneResistanceLock = (data[0x0a] & 0x80) ? true : false; -// int humidifier = (data[0x09] & 7); -// bool autoOn = (data[0x0b] & 0x40) ? true : false; //? - // Menu Options session->settings[PRS1_SysLock] = (bool) (data[0x0a] & 0x80); // System One Resistance Lock Setting session->settings[PRS1_SysOneResistSet] = (int)data[0x0a] & 7; // SYstem One Resistance setting value @@ -1249,9 +1240,7 @@ bool PRS1Import::ParseSummaryF0() session->settings[PRS1_FlexMode] = (int)flexmode; session->settings[PRS1_FlexLevel] = (int)flexlevel; - int duration = data[0x14] | data[0x15] << 8; - - session->set_last(qint64(summary->timestamp+duration) * 1000L); + summary_duration = data[0x14] | data[0x15] << 8; return true; } @@ -1347,11 +1336,7 @@ bool PRS1Import::ParseSummaryF0V4() session->settings[PRS1_HumidLevel] = (int)(data[0x0b] & 7); // Humidifier Value -// int duration = data[0x14] | data[0x15] << 8; - -// session->set_last(qint64(summary->timestamp+duration) * 1000L); - - + summary_duration = data[0x14] | data[0x15] << 8; return true; } @@ -1375,7 +1360,7 @@ bool PRS1Import::ParseSummaryF3() return true; } -bool PRS1Import::ParseSummaryF5() +bool PRS1Import::ParseSummaryF5V0() { const unsigned char * data = (unsigned char *)summary->m_data.constData(); @@ -1387,15 +1372,6 @@ bool PRS1Import::ParseSummaryF5() CPAPMode cpapmode = MODE_UNKNOWN; -// switch (data[0x01]) { // PRS1 mode // 0 = CPAP, 2 = APAP -// case 0x00: -// cpapmode = MODE_CPAP; -// break; -// case 0x01: -// cpapmode = MODE_ASV; -// break; -// } - int imin_epap = data[0x3]; int imax_epap = data[0x4]; int imin_ps = data[0x5]; @@ -1465,15 +1441,96 @@ bool PRS1Import::ParseSummaryF5() session->settings[PRS1_HeatedTubing] = (bool)(data[0x0d] & 0x10); // Heated Hose?? session->settings[PRS1_HumidLevel] = (int)(data[0x0d] & 7); // Humidifier Value - - - int duration=data[0x18] | data[0x19] << 8; - session->set_last(qint64(summary->timestamp+duration) * 1000L); + summary_duration = data[0x18] | data[0x19] << 8; return true; - } +bool PRS1Import::ParseSummaryF5V1() +{ + const unsigned char * data = (unsigned char *)summary->m_data.constData(); + + if (data[0x00] > 0) { + return false; + } + + session->set_first(qint64(summary->timestamp) * 1000L); + + CPAPMode cpapmode = MODE_UNKNOWN; + + int imin_epap = data[0x3]; + int imax_epap = data[0x4]; + int imin_ps = data[0x5]; + int imax_ps = data[0x6]; + int imax_pressure = data[0x2]; + + cpapmode = MODE_ASV_VARIABLE_EPAP; + + session->settings[CPAP_Mode] = (int)cpapmode; + + if (cpapmode == MODE_CPAP) { + session->settings[CPAP_Pressure] = imin_epap/10.0f; + + } else if (cpapmode == MODE_BILEVEL_FIXED) { + session->settings[CPAP_EPAP] = imin_epap/10.0f; + session->settings[CPAP_IPAP] = imax_epap/10.0f; + + } else if (cpapmode == MODE_ASV_VARIABLE_EPAP) { + int imax_ipap = imax_epap + imax_ps; + int imin_ipap = imin_epap + imin_ps; + + session->settings[CPAP_EPAPLo] = imin_epap / 10.0f; + session->settings[CPAP_EPAPHi] = imax_epap / 10.0f; + session->settings[CPAP_IPAPLo] = imin_ipap / 10.0f; + session->settings[CPAP_IPAPHi] = imax_pressure / 10.0f; + session->settings[CPAP_PSMin] = imin_ps / 10.0f; + session->settings[CPAP_PSMax] = imax_ps / 10.0f; + } + + quint8 flex = data[0x0c]; + + int flexlevel = flex & 0x03; + FlexMode flexmode = FLEX_Unknown; + + flex &= 0xf8; + bool split = false; + + if (flex & 0x40) { // This bit defines the Flex setting for the CPAP component of the Split night + split = true; + } + if (flex & 0x80) { // CFlex bit + if (flex & 0x10) { + flexmode = FLEX_RiseTime; + } else if (flex & 8) { // Plus bit + if (split || (cpapmode == MODE_CPAP)) { + flexmode = FLEX_CFlexPlus; + } else if (cpapmode == MODE_APAP) { + flexmode = FLEX_AFlex; + } + } else { + // CFlex bits refer to Rise Time on BiLevel machines + flexmode = (cpapmode >= MODE_BILEVEL_FIXED) ? FLEX_BiFlex : FLEX_CFlex; + } + } else flexmode = FLEX_None; + + session->settings[PRS1_FlexMode] = (int)flexmode; + session->settings[PRS1_FlexLevel] = (int)flexlevel; + + + int ramp_time = data[0x0a]; + EventDataType ramp_pressure = float(data[0x0b]) / 10.0; + + session->settings[CPAP_RampTime] = (int)ramp_time; + session->settings[CPAP_RampPressure] = ramp_pressure; + + session->settings[PRS1_HumidStatus] = (bool)(data[0x0d] & 0x80); // Humidifier Connected + session->settings[PRS1_HeatedTubing] = (bool)(data[0x0d] & 0x10); // Heated Hose?? + session->settings[PRS1_HumidLevel] = (int)(data[0x0d] & 7); // Humidifier Value + + summary_duration = data[0x18] | data[0x19] << 8; + + return true; +} bool PRS1Import::ParseSummary() @@ -1508,9 +1565,15 @@ bool PRS1Import::ParseSummary() case 3: return ParseSummaryF3(); case 5: - return ParseSummaryF5(); + if (summary->familyVersion == 0) { + return ParseSummaryF5V0(); + } else { + return ParseSummaryF5V1(); + } } + // Else machine is unsupported + const unsigned char * data = (unsigned char *)summary->m_data.constData(); ////////////////////////////////////////////////////////////////////////////////////////// @@ -1782,7 +1845,8 @@ void PRS1Import::run() if (session->last() < session->first()) { // if last isn't set, duration couldn't be gained from summary, parsing events or waveforms.. // This session is dodgy, so kill it - session->really_set_last(session->first()); + session->setSummaryOnly(true); + session->really_set_last(session->first()+(qint64(summary_duration) * 1000L)); } session->SetChanged(true); diff --git a/sleepyhead/SleepLib/loader_plugins/prs1_loader.h b/sleepyhead/SleepLib/loader_plugins/prs1_loader.h index 11290309..ea8f1d36 100644 --- a/sleepyhead/SleepLib/loader_plugins/prs1_loader.h +++ b/sleepyhead/SleepLib/loader_plugins/prs1_loader.h @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * SleepLib PRS1 Loader Header +/* SleepLib PRS1 Loader Header * * Copyright (c) 2011-2014 Mark Watkins * @@ -122,7 +119,8 @@ public: bool ParseSummaryF0(); bool ParseSummaryF0V4(); bool ParseSummaryF3(); - bool ParseSummaryF5(); + bool ParseSummaryF5V0(); + bool ParseSummaryF5V1(); //! \brief Parse a single data chunk from a .002 file containing event data for a standard system one machine @@ -136,6 +134,8 @@ protected: PRS1Loader * loader; SessionID sessionid; Machine * mach; + + int summary_duration; }; /*! \class PRS1Loader diff --git a/sleepyhead/SleepLib/loader_plugins/resmed_loader.cpp b/sleepyhead/SleepLib/loader_plugins/resmed_loader.cpp index 60cb0589..fb08a225 100644 --- a/sleepyhead/SleepLib/loader_plugins/resmed_loader.cpp +++ b/sleepyhead/SleepLib/loader_plugins/resmed_loader.cpp @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * SleepLib ResMed Loader Implementation +/* SleepLib ResMed Loader Implementation * * Copyright (c) 2011-2014 Mark Watkins * diff --git a/sleepyhead/SleepLib/loader_plugins/resmed_loader.h b/sleepyhead/SleepLib/loader_plugins/resmed_loader.h index 94591660..0d2dbe70 100644 --- a/sleepyhead/SleepLib/loader_plugins/resmed_loader.h +++ b/sleepyhead/SleepLib/loader_plugins/resmed_loader.h @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * SleepLib RESMED Loader Header +/* SleepLib RESMED Loader Header * * Copyright (c) 2011-2014 Mark Watkins * diff --git a/sleepyhead/SleepLib/loader_plugins/somnopose_loader.cpp b/sleepyhead/SleepLib/loader_plugins/somnopose_loader.cpp index 6bdea22f..853cba67 100644 --- a/sleepyhead/SleepLib/loader_plugins/somnopose_loader.cpp +++ b/sleepyhead/SleepLib/loader_plugins/somnopose_loader.cpp @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * SleepLib Somnopose Loader Implementation +/* SleepLib Somnopose Loader Implementation * * Copyright (c) 2011-2014 Mark Watkins * diff --git a/sleepyhead/SleepLib/loader_plugins/somnopose_loader.h b/sleepyhead/SleepLib/loader_plugins/somnopose_loader.h index 63e0956b..ae5f74b0 100644 --- a/sleepyhead/SleepLib/loader_plugins/somnopose_loader.h +++ b/sleepyhead/SleepLib/loader_plugins/somnopose_loader.h @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * SleepLib Somnopose Loader Header +/* SleepLib Somnopose Loader Header * * Copyright (c) 2011-2014 Mark Watkins * diff --git a/sleepyhead/SleepLib/loader_plugins/weinmann_loader.cpp b/sleepyhead/SleepLib/loader_plugins/weinmann_loader.cpp index 96125db6..9d3c9335 100644 --- a/sleepyhead/SleepLib/loader_plugins/weinmann_loader.cpp +++ b/sleepyhead/SleepLib/loader_plugins/weinmann_loader.cpp @@ -1,8 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * SleepLib (DeVilbiss) Weinmann Loader Implementation - * Notes: Weinmann requires the SmartLink attachment to access this data. +/* SleepLib Weinmann SOMNOsoft/Balance Loader Implementation * * Copyright (c) 2011-2014 Mark Watkins * diff --git a/sleepyhead/SleepLib/loader_plugins/weinmann_loader.h b/sleepyhead/SleepLib/loader_plugins/weinmann_loader.h index b837ffc3..bbd86262 100644 --- a/sleepyhead/SleepLib/loader_plugins/weinmann_loader.h +++ b/sleepyhead/SleepLib/loader_plugins/weinmann_loader.h @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * Weiman Loader Header +/* SleepLib Weinmann SOMNOsoft/Balance Loader Header * * Copyright (c) 2011-2014 Mark Watkins * diff --git a/sleepyhead/SleepLib/loader_plugins/zeo_loader.cpp b/sleepyhead/SleepLib/loader_plugins/zeo_loader.cpp index 0cd10518..a3c1604e 100644 --- a/sleepyhead/SleepLib/loader_plugins/zeo_loader.cpp +++ b/sleepyhead/SleepLib/loader_plugins/zeo_loader.cpp @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * SleepLib ZEO Loader Implementation +/* SleepLib ZEO Loader Implementation * * Copyright (c) 2011 Mark Watkins * diff --git a/sleepyhead/SleepLib/loader_plugins/zeo_loader.h b/sleepyhead/SleepLib/loader_plugins/zeo_loader.h index 85160e93..6f6cfb94 100644 --- a/sleepyhead/SleepLib/loader_plugins/zeo_loader.h +++ b/sleepyhead/SleepLib/loader_plugins/zeo_loader.h @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * SleepLib ZEO Loader Header +/* SleepLib ZEO Loader Header * * Copyright (c) 2011-2014 Mark Watkins * diff --git a/sleepyhead/SleepLib/machine.cpp b/sleepyhead/SleepLib/machine.cpp index db33e174..d17446e6 100644 --- a/sleepyhead/SleepLib/machine.cpp +++ b/sleepyhead/SleepLib/machine.cpp @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * SleepLib Machine Class Implementation +/* SleepLib Machine Class Implementation * * Copyright (c) 2011-2014 Mark Watkins * @@ -11,12 +8,18 @@ #include #include -#include #include #include #include #include +#include +#include +#include +#include +#include +#include "mainwindow.h" + #include #include "machine.h" @@ -390,17 +393,68 @@ const QString Machine::getBackupPath() return p_profile->Get("{" + STR_GEN_DataFolder + "}/" + info.loadername + "_" + (info.serial.isEmpty() ? hexid() : info.serial) + "/Backup/"); } +class ProgressDialog:public QDialog { +public: + explicit ProgressDialog(QWidget * parent); + virtual ~ProgressDialog(); + + void setMessage(QString msg) { waitmsg->setText(msg); } + void setPixmap(QPixmap &pixmap) { imglabel->setPixmap(pixmap); } + QProgressBar * progress; + +protected: + QLabel * waitmsg; + QHBoxLayout *hlayout; + QLabel * imglabel; + QVBoxLayout * vlayout; + +}; +ProgressDialog::ProgressDialog(QWidget * parent): + QDialog(parent, Qt::SplashScreen) +{ + waitmsg = new QLabel(QObject::tr("PLease Wait...")); + hlayout = new QHBoxLayout; + + imglabel = new QLabel(this); + + vlayout = new QVBoxLayout; + progress = new QProgressBar(this); + this->setLayout(vlayout); + vlayout->addLayout(hlayout); + hlayout->addWidget(imglabel); + hlayout->addWidget(waitmsg,1,Qt::AlignCenter); + vlayout->addWidget(progress,1); + progress->setMaximum(100); + + +} +ProgressDialog::~ProgressDialog() +{ +} + + bool Machine::Load() { QString path = getDataPath(); QDir dir(path); - qDebug() << "Loading " << QDir::toNativeSeparators(path); + qDebug() << "Loading Database" << QDir::toNativeSeparators(path); if (!dir.exists() || !dir.isReadable()) { return false; } + ProgressDialog * popup = new ProgressDialog(nullptr); + QPixmap image(getCPAPPixmap(info.loadername)); + if (!image.isNull()) { + image = image.scaled(64,64); + popup->setPixmap(image); + } + popup->setMessage(QObject::tr("Loading %1 data...").arg(info.brand)); + popup->show(); + + QProgressBar * progress = popup->progress; + dir.setFilter(QDir::Files | QDir::Hidden | QDir::NoSymLinks); dir.setSorting(QDir::Name); @@ -438,7 +492,7 @@ bool Machine::Load() for (s = sessfiles.begin(); s != sessfiles.end(); s++) { if ((++cnt % 50) == 0) { // This is slow.. :-/ - if (qprogress) { qprogress->setValue((float(cnt) / float(size) * 100.0)); } + if (progress) { progress->setValue((float(cnt) / float(size) * 100.0)); } QApplication::processEvents(); } @@ -455,7 +509,10 @@ bool Machine::Load() } } - if (qprogress) { qprogress->setValue(100); } + if (progress) { progress->setValue(100); } + QApplication::processEvents(); + popup->hide(); + delete popup; return true; } diff --git a/sleepyhead/SleepLib/machine.h b/sleepyhead/SleepLib/machine.h index b44d2e23..04f70808 100644 --- a/sleepyhead/SleepLib/machine.h +++ b/sleepyhead/SleepLib/machine.h @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * SleepLib Machine Class Header +/* SleepLib Machine Class Header * * Copyright (c) 2011-2014 Mark Watkins * diff --git a/sleepyhead/SleepLib/machine_common.cpp b/sleepyhead/SleepLib/machine_common.cpp index 5188df0e..8dbb4901 100644 --- a/sleepyhead/SleepLib/machine_common.cpp +++ b/sleepyhead/SleepLib/machine_common.cpp @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * SleepLib Common Machine Stuff +/* SleepLib Common Machine Stuff * * Copyright (c) 2011-2014 Mark Watkins * @@ -39,8 +36,8 @@ ChannelID PRS1_00, PRS1_01, PRS1_08, PRS1_0A, PRS1_0B, PRS1_0C, PRS1_0E, PRS1_0F ChannelID OXI_Pulse, OXI_SPO2, OXI_PulseChange, OXI_SPO2Drop, OXI_Plethy; -ChannelID Journal_Notes, Journal_Weight, Journal_BMI, Journal_ZombieMeter, Bookmark_Start, - Bookmark_End, Bookmark_Notes; +ChannelID Journal_Notes, Journal_Weight, Journal_BMI, Journal_ZombieMeter, LastUpdated, + Bookmark_Start, Bookmark_End, Bookmark_Notes; ChannelID ZEO_SleepStage, ZEO_ZQ, ZEO_TotalZ, ZEO_TimeToZ, ZEO_TimeInWake, ZEO_TimeInREM, diff --git a/sleepyhead/SleepLib/machine_common.h b/sleepyhead/SleepLib/machine_common.h index 97106d0b..c4f43252 100644 --- a/sleepyhead/SleepLib/machine_common.h +++ b/sleepyhead/SleepLib/machine_common.h @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * SleepLib Common Machine Header +/* SleepLib Common Machine Header * * Copyright (c) 2011-2014 Mark Watkins * @@ -163,7 +160,7 @@ extern ChannelID INTELLIPAP_Unknown1, INTELLIPAP_Unknown2; extern ChannelID OXI_Pulse, OXI_SPO2, OXI_PulseChange, OXI_SPO2Drop, OXI_Plethy; extern ChannelID Journal_Notes, Journal_Weight, Journal_BMI, Journal_ZombieMeter, Bookmark_Start, - Bookmark_End, Bookmark_Notes; + Bookmark_End, Bookmark_Notes, LastUpdated; extern ChannelID ZEO_SleepStage, ZEO_ZQ, ZEO_TotalZ, ZEO_TimeToZ, ZEO_TimeInWake, ZEO_TimeInREM, ZEO_TimeInLight, ZEO_TimeInDeep, ZEO_Awakenings, diff --git a/sleepyhead/SleepLib/machine_loader.cpp b/sleepyhead/SleepLib/machine_loader.cpp index 04c44b96..683d9bdd 100644 --- a/sleepyhead/SleepLib/machine_loader.cpp +++ b/sleepyhead/SleepLib/machine_loader.cpp @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * SleepLib Machine Loader Class Implementation +/* SleepLib Machine Loader Class Implementation * * Copyright (c) 2011-2014 Mark Watkins * diff --git a/sleepyhead/SleepLib/machine_loader.h b/sleepyhead/SleepLib/machine_loader.h index 32cbdb9c..009213d6 100644 --- a/sleepyhead/SleepLib/machine_loader.h +++ b/sleepyhead/SleepLib/machine_loader.h @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * SleepLib MachineLoader Base Class Header +/* SleepLib MachineLoader Base Class Header * * Copyright (c) 2011 Mark Watkins * diff --git a/sleepyhead/SleepLib/preferences.cpp b/sleepyhead/SleepLib/preferences.cpp index 84efb2cb..864614b7 100644 --- a/sleepyhead/SleepLib/preferences.cpp +++ b/sleepyhead/SleepLib/preferences.cpp @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * SleepLib Preferences Implementation +/* SleepLib Preferences Implementation * * Copyright (c) 2011-2014 Mark Watkins * @@ -181,7 +178,7 @@ bool Preferences::Open(QString filename) QDomDocument doc(p_name); QFile file(p_filename); - qDebug() << "Scanning " << QDir::toNativeSeparators(p_filename); + qDebug() << "Reading " << QDir::toNativeSeparators(p_filename); if (!file.open(QIODevice::ReadOnly)) { qWarning() << "Could not open" << QDir::toNativeSeparators(p_filename); diff --git a/sleepyhead/SleepLib/preferences.h b/sleepyhead/SleepLib/preferences.h index 26a06229..1848bffd 100644 --- a/sleepyhead/SleepLib/preferences.h +++ b/sleepyhead/SleepLib/preferences.h @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * SleepLib Preferences Header +/* SleepLib Preferences Header * * Copyright (c) 2011 Mark Watkins * diff --git a/sleepyhead/SleepLib/profiles.cpp b/sleepyhead/SleepLib/profiles.cpp index fe414d33..37d1ef5b 100644 --- a/sleepyhead/SleepLib/profiles.cpp +++ b/sleepyhead/SleepLib/profiles.cpp @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * SleepLib Profiles Implementation +/* SleepLib Profiles Implementation * * Copyright (c) 2011-2014 Mark Watkins * diff --git a/sleepyhead/SleepLib/profiles.h b/sleepyhead/SleepLib/profiles.h index 32e2d63e..f5937d8a 100644 --- a/sleepyhead/SleepLib/profiles.h +++ b/sleepyhead/SleepLib/profiles.h @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * SleepLib Profiles Header +/* SleepLib Profiles Header * * Copyright (c) 2011 Mark Watkins * diff --git a/sleepyhead/SleepLib/schema.cpp b/sleepyhead/SleepLib/schema.cpp index 2b67685a..c98ac8fc 100644 --- a/sleepyhead/SleepLib/schema.cpp +++ b/sleepyhead/SleepLib/schema.cpp @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * Schema Implementation (Parse Channel XML data) +/* Channel / Schema Implementation * * Copyright (c) 2011-2014 Mark Watkins * @@ -23,6 +20,27 @@ #include "SleepLib/profiles.h" +QColor adjustcolor(QColor color, float ar=1.0, float ag=1.0, float ab=1.0) +{ + int r = color.red(); + int g = color.green(); + int b = color.blue(); + + r += rand() & 64; + g += rand() & 64; + b += rand() & 64; + + r = qMin(int(r * ar), 255); + g = qMin(int(g * ag), 255); + b = qMin(int(b * ab), 255); + + return QColor(r,g,b, color.alpha()); +} + + +QColor darken(QColor color, float p); + + namespace schema { @@ -410,7 +428,7 @@ void init() ch->addOption(0, STR_TR_Unknown); ch->addOption(1, STR_TR_CPAP); - ch->addOption(2, STR_TR_APAP); + ch->addOption(2, QObject::tr("APAP (Variable)")); ch->addOption(3, QObject::tr("Fixed Bi-Level")); ch->addOption(4, QObject::tr("Auto Bi-Level (Fixed PS)")); ch->addOption(5, QObject::tr("Auto Bi-Level (Variable PS)")); @@ -498,6 +516,7 @@ void init() 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(); @@ -530,7 +549,6 @@ void resetChannels() } } - Channel::Channel(ChannelID id, ChanType type, ScopeType scope, QString code, QString fullname, QString description, QString label, QString unit, DataType datatype, QColor color, int link): m_id(id), @@ -551,6 +569,16 @@ Channel::Channel(ChannelID id, ChanType type, ScopeType scope, QString code, QSt m_enabled(true), m_order(255) { + if (type == WAVEFORM) { + calc[Calc_Min] = ChannelCalc(id, Calc_Min, adjustcolor(color, 0.25, 1, 1.3), false); + calc[Calc_Middle] = ChannelCalc(id, Calc_Middle, adjustcolor(color, 1.3, 1, 1), false); + calc[Calc_Perc] = ChannelCalc(id, Calc_Perc, adjustcolor(color, 1.1, 1.2, 1), false); + calc[Calc_Max] = ChannelCalc(id, Calc_Max, adjustcolor(color, 0.5, 1.2, 1), false); + + calc[Calc_Zero] = ChannelCalc(id, Calc_Zero, Qt::red, false); + calc[Calc_LowerThresh] = ChannelCalc(id, Calc_LowerThresh, Qt::blue, false); + calc[Calc_UpperThresh] = ChannelCalc(id, Calc_UpperThresh, Qt::red, false); + } } bool Channel::isNull() { @@ -792,10 +820,103 @@ void ChannelList::add(QString group, Channel *chan) bool ChannelList::Save(QString filename) { - Q_UNUSED(filename) - return false; + if (filename.isEmpty()) { + filename = p_profile->Get("{DataFolder}/") + "channels.xml"; + } + + QDomDocument doc("channels"); + + QDomElement droot = doc.createElement(STR_AppName); + doc.appendChild(droot); + + QDomElement root = doc.createElement("channels"); + droot.appendChild(root); + + QHash >::iterator git; + QHash >::iterator groups_end = groups.end(); + + for (git = groups.begin(); git != groups_end; ++git) { + QHash & chanlist = git.value(); + QHash::iterator it; + QHash::iterator chend = chanlist.end(); + + QDomElement grp = doc.createElement("group"); + grp.setAttribute("name", git.key()); + root.appendChild(grp); + + for (it =chanlist.begin(); it!= chend; ++it) { + Channel * chan = it.value(); + QDomElement cn = doc.createElement("channel"); + cn.setAttribute("id", chan->id()); + cn.setAttribute("code", it.key()); + cn.setAttribute("label", chan->label()); + cn.setAttribute("name", chan->fullname()); + cn.setAttribute("description", chan->description()); + cn.setAttribute("color", chan->defaultColor().name()); + cn.setAttribute("upper", chan->upperThreshold()); + cn.setAttribute("lower", chan->lowerThreshold()); + cn.setAttribute("order", chan->order()); + cn.setAttribute("type", chan->type()); + cn.setAttribute("datatype", chan->datatype()); + QHash::iterator op; + for (op = chan->m_options.begin(); op!=chan->m_options.end(); ++op) { + QDomElement c2 = doc.createElement("option"); + c2.setAttribute("key", op.key()); + c2.setAttribute("value", op.value()); + cn.appendChild(c2); + } + + //cn.appendChild(doc.createTextNode(i.value().toDateTime().toString("yyyy-MM-dd HH:mm:ss"))); + grp.appendChild(cn); + } + + } + + + QFile file(filename); + + if (!file.open(QIODevice::WriteOnly)) { + return false; + } + + QTextStream ts(&file); + ts << doc.toString(); + file.close(); + + return true; } } +QString ChannelCalc::label() +{ + QString lab = schema::channel[code].label(); + QString m_label; + switch(type) { + case Calc_Min: + m_label = QString("%1 %2").arg(STR_TR_Min).arg(lab); + break; + case Calc_Middle: + m_label = Day::calcMiddleLabel(code); + break; + case Calc_Perc: + m_label = Day::calcPercentileLabel(code); + break; + case Calc_Max: + m_label = Day::calcMaxLabel(code); + break; + case Calc_Zero: + m_label = QObject::tr("Zero"); + break; + case Calc_UpperThresh: + m_label = QString("%1 %2").arg(lab).arg(QObject::tr("Threshold")); + break; + case Calc_LowerThresh: + m_label = QString("%1 %2").arg(lab).arg(QObject::tr("Threshold")); + break; + } + return m_label; + +} + //typedef schema::Channel * ChannelID; diff --git a/sleepyhead/SleepLib/schema.h b/sleepyhead/SleepLib/schema.h index 3d2907c1..7e82c27b 100644 --- a/sleepyhead/SleepLib/schema.h +++ b/sleepyhead/SleepLib/schema.h @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * Schema Header (Parse Channel XML data) +/* Schema Header (Parse Channel XML data) * * Copyright (c) 2011-2014 Mark Watkins * @@ -27,6 +24,35 @@ const quint32 XGrid = 16; const quint32 YGrid = 32; } +enum ChannelCalcType { + Calc_Zero, Calc_Min, Calc_Middle, Calc_Perc, Calc_Max, Calc_UpperThresh, Calc_LowerThresh +}; + +struct ChannelCalc { +public: + ChannelCalc() { + code = 0; + enabled = false; + color = Qt::black; + type = Calc_Zero; + } + ChannelCalc(const ChannelCalc & copy) { + code = copy.code; + color = copy.color; + enabled = copy.enabled; + type = copy.type; + } + ChannelCalc(ChannelID code, ChannelCalcType type, QColor color, bool enabled): + code(code), type(type), color(color), enabled(enabled) {} + + QString label(); + + ChannelID code; + ChannelCalcType type; + QColor color; + bool enabled; +}; + namespace schema { void resetChannels(); @@ -112,6 +138,9 @@ class Channel inline bool enabled() const { return m_enabled; } void setEnabled(bool value) { m_enabled = value; } + + QHash calc; + protected: int m_id; ChanType m_type; @@ -132,6 +161,7 @@ class Channel QColor m_upperThresholdColor; QColor m_lowerThresholdColor; + bool m_enabled; short m_order; }; @@ -149,7 +179,7 @@ class ChannelList bool Load(QString filename); //! \brief Stores Channel list to XML file specified by filename - bool Save(QString filename); + bool Save(QString filename = QString()); void add(QString group, Channel *chan); diff --git a/sleepyhead/SleepLib/serialoximeter.cpp b/sleepyhead/SleepLib/serialoximeter.cpp index 87fd4e87..ce7fbb32 100644 --- a/sleepyhead/SleepLib/serialoximeter.cpp +++ b/sleepyhead/SleepLib/serialoximeter.cpp @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * SleepLib Machine Loader Class Implementation +/* SleepLib Machine Loader Class Implementation * * Copyright (c) 2011-2014 Mark Watkins * diff --git a/sleepyhead/SleepLib/serialoximeter.h b/sleepyhead/SleepLib/serialoximeter.h index b55fdf26..728add61 100644 --- a/sleepyhead/SleepLib/serialoximeter.h +++ b/sleepyhead/SleepLib/serialoximeter.h @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * SleepLib MachineLoader Base Class Header +/* SleepLib MachineLoader Base Class Header * * Copyright (c) 2011-2014 Mark Watkins * diff --git a/sleepyhead/SleepLib/session.cpp b/sleepyhead/SleepLib/session.cpp index cb3019fe..790c7be4 100644 --- a/sleepyhead/SleepLib/session.cpp +++ b/sleepyhead/SleepLib/session.cpp @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * SleepLib Session Implementation +/* SleepLib Session Implementation * This stuff contains the base calculation smarts * * Copyright (c) 2011-2014 Mark Watkins @@ -1018,6 +1015,7 @@ EventDataType Session::SearchValue(ChannelID code, qint64 time, bool square) qint64 t2 = i2 * el->rate(); c = EventDataType(t2 - t1); + if (c == 0) return 0; d = EventDataType(t2 - tt); e = d/c; diff --git a/sleepyhead/SleepLib/session.h b/sleepyhead/SleepLib/session.h index 8c2b05f7..b3c81acf 100644 --- a/sleepyhead/SleepLib/session.h +++ b/sleepyhead/SleepLib/session.h @@ -1,8 +1,6 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: +/* SleepLib Session Header * - * SleepLib Session Header - * This stuff contains the base calculation smarts + * This stuff contains the session calculation smarts * * Copyright (c) 2011-2014 Mark Watkins * diff --git a/sleepyhead/UpdaterWindow.cpp b/sleepyhead/UpdaterWindow.cpp index 09d03c8a..755bb8f1 100644 --- a/sleepyhead/UpdaterWindow.cpp +++ b/sleepyhead/UpdaterWindow.cpp @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * UpdaterWindow +/* UpdaterWindow * * Copyright (c) 2011-2014 Mark Watkins * diff --git a/sleepyhead/UpdaterWindow.h b/sleepyhead/UpdaterWindow.h index fb28b1d8..621beab5 100644 --- a/sleepyhead/UpdaterWindow.h +++ b/sleepyhead/UpdaterWindow.h @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * UpdaterWindow +/* UpdaterWindow * * Copyright (c) 2011-2014 Mark Watkins * diff --git a/sleepyhead/common_gui.cpp b/sleepyhead/common_gui.cpp index cbc746a1..b7921023 100644 --- a/sleepyhead/common_gui.cpp +++ b/sleepyhead/common_gui.cpp @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * Common GUI Functions Implementation +/* Common GUI Functions Implementation * * Copyright (c) 2011-2014 Mark Watkins * diff --git a/sleepyhead/common_gui.h b/sleepyhead/common_gui.h index 7ad6acab..a6b6019e 100644 --- a/sleepyhead/common_gui.h +++ b/sleepyhead/common_gui.h @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * Common GUI Functions Header +/* Common GUI Functions Header * * Copyright (c) 2011-2014 Mark Watkins * diff --git a/sleepyhead/daily.cpp b/sleepyhead/daily.cpp index 7701ef83..e6caf2a2 100644 --- a/sleepyhead/daily.cpp +++ b/sleepyhead/daily.cpp @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * Daily Panel +/* Daily Panel * * Copyright (c) 2011-2014 Mark Watkins * @@ -90,9 +87,15 @@ Daily::Daily(QWidget *parent,gGraphView * shared) layout->setMargin(0); layout->setContentsMargins(0,0,0,0); - dateDisplay=new QLabel("",this); + dateDisplay=new MyLabel(this); dateDisplay->setAlignment(Qt::AlignCenter); - dateDisplay->setTextFormat(Qt::RichText); + QFont font = dateDisplay->font(); + font.setPointSizeF(font.pointSizeF()*1.3F); + dateDisplay->setFont(font); + QPalette palette = dateDisplay->palette(); + palette.setColor(QPalette::Base, Qt::blue); + dateDisplay->setPalette(palette); + //dateDisplay->setTextFormat(Qt::RichText); ui->sessionBarLayout->addWidget(dateDisplay,1); // const bool sessbar_under_graphs=false; @@ -152,10 +155,10 @@ Daily::Daily(QWidget *parent,gGraphView * shared) const QString STR_GRAPH_DailySummary = "DailySummary"; const QString STR_GRAPH_TAP = "TimeAtPressure"; -// gGraph * SG; -// graphlist[STR_GRAPH_DailySummary] = SG = new gGraph(STR_GRAPH_DailySummary, GraphView, QObject::tr("Summary"), QObject::tr("Summary of this daily information"), default_height); -// SG->AddLayer(new gFlagsLabelArea(nullptr),LayerLeft,gYAxis::Margin); -// SG->AddLayer(AddCPAP(new gDailySummary())); + gGraph * SG; + graphlist[STR_GRAPH_DailySummary] = SG = new gGraph(STR_GRAPH_DailySummary, GraphView, QObject::tr("Summary"), QObject::tr("Summary of this daily information"), default_height); + SG->AddLayer(new gLabelArea(nullptr),LayerLeft,gYAxis::Margin); + SG->AddLayer(AddCPAP(new gDailySummary())); graphlist[STR_GRAPH_SleepFlags] = SF = new gGraph(STR_GRAPH_SleepFlags, GraphView, STR_TR_EventFlags, STR_TR_EventFlags, default_height); SF->setPinned(true); @@ -283,7 +286,7 @@ Daily::Daily(QWidget *parent,gGraphView * shared) gLineChart *l; l=new gLineChart(CPAP_FlowRate,COLOR_Black,false,false); - gLineOverlaySummary *los=new gLineOverlaySummary(tr("Selection AHI"),5,-4); + //gLineOverlaySummary *los=new gLineOverlaySummary(tr("Selection AHI"),5,-4); AddCPAP(l); gGraph *FRW = graphlist[schema::channel[CPAP_FlowRate].code()]; @@ -477,6 +480,9 @@ Daily::Daily(QWidget *parent,gGraphView * shared) GraphView->resetLayout(); GraphView->LoadSettings("Daily"); + + connect(GraphView, SIGNAL(updateCurrentTime(double)), this, SLOT(on_LineCursorUpdate(double))); + connect(GraphView, SIGNAL(updateRange(double,double)), this, SLOT(on_RangeUpdate(double,double))); } @@ -942,18 +948,12 @@ QString Daily::getSessionInformation(Day * cpap, Day * oxi, Day * stage, Day * p bool corrupted_waveform=false; QString tooltip; - html+=QString("" - ""+STR_TR_On+"" - ""+STR_TR_Date+"" - ""+STR_TR_Start+"" - ""+STR_TR_End+"" - ""+tr("Duration")+""); QList::iterator di; QString type; for (di=list.begin();di!=list.end();di++) { Day * day=*di; - html+=""; + html+=""; switch (day->machine_type()) { case MT_CPAP: type="cpap"; html+=tr("CPAP Sessions"); @@ -974,6 +974,12 @@ QString Daily::getSessionInformation(Day * cpap, Day * oxi, Day * stage, Day * p break; } html+="\n"; + html+=QString("" + ""+STR_TR_On+"" + ""+STR_TR_Date+"" + ""+STR_TR_Start+"" + ""+STR_TR_End+"" + ""+tr("Duration")+""); for (QList::iterator s=day->begin();s!=day->end();++s) { if ((day->machine_type()==MT_CPAP) && @@ -986,12 +992,12 @@ QString Daily::getSessionInformation(Day * cpap, Day * oxi, Day * stage, Day * p int h=len/3600; int m=(len/60) % 60; int s1=len % 60; - tooltip=day->machine->loaderName()+QString(":#%1").arg((*s)->session(),8,10,QChar('0')); + //tooltip=day->machine->loaderName()+QString(":#%1").arg((*s)->session(),8,10,QChar('0')); -#define DEBUG_SESSIONS -#ifdef DEBUG_SESSIONS - tooltip += " "+QString::number(len)+"s"; -#endif +//#define DEBUG_SESSIONS +//#ifdef DEBUG_SESSIONS +// tooltip += " "+QString::number(len)+"s"; +//#endif // tooltip needs to lookup language.. :-/ Session *sess=*s; @@ -999,16 +1005,19 @@ QString Daily::getSessionInformation(Day * cpap, Day * oxi, Day * stage, Day * p sess->settings[SESSION_ENABLED]=true; } bool b=sess->settings[SESSION_ENABLED].toBool(); - html+=QString("" + html+=QString("" + "" + "" "" "" "" "" - "" - "") + "" + "
%2
" "%5%6%7%3%2
%3
" + ) .arg((*s)->session()) - .arg(tooltip) + .arg(QObject::tr("%1 Session #%2").arg((*s)->machine()->loaderName()).arg((*s)->session(),8,10,QChar('0'))) .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)) @@ -1836,6 +1845,7 @@ void Daily::Unload(QDate date) } } if (journal->IsChanged()) { + journal->settings[LastUpdated]=QDateTime::currentDateTime(); // blah.. was updating overview graphs here.. Was too slow. } Machine *jm=p_profile->GetMachine(MT_JOURNAL); @@ -2017,6 +2027,26 @@ void Daily::RedrawGraphs() GraphView->redraw(); } +void Daily::on_LineCursorUpdate(double time) +{ + QDateTime dt = QDateTime::fromMSecsSinceEpoch(time); + QString txt = dt.toString("MMM dd HH:mm:ss:zzz"); + dateDisplay->setText(txt); +} + +void Daily::on_RangeUpdate(double minx, double maxx) +{ +// static qint64 last_minx = 0; +// static qint64 last_maxx = 0; + + //if ((last_minx != minx) || (last_maxx != maxx)) { + dateDisplay->setText(GraphView->getRangeString()); + //} +// last_minx=minx; +// last_maxx=maxx; +} + + void Daily::on_treeWidget_itemClicked(QTreeWidgetItem *item, int column) { Q_UNUSED(column); @@ -2242,6 +2272,7 @@ void Daily::update_Bookmarks() journal->settings[Bookmark_Start]=start; journal->settings[Bookmark_End]=end; journal->settings[Bookmark_Notes]=notes; + journal->settings[LastUpdated]=QDateTime::currentDateTime(); journal->SetChanged(true); BookmarksChanged=true; mainwin->updateFavourites(); @@ -2478,17 +2509,6 @@ void Daily::updateGraphCombo() updateCube(); } -void Daily::on_zoomFullyOut_clicked() -{ - GraphView->ResetBounds(true); - GraphView->redraw(); -} - -void Daily::on_resetLayoutButton_clicked() -{ - GraphView->resetLayout(); -} - void Daily::on_eventsCombo_activated(int index) { if (index<0) diff --git a/sleepyhead/daily.h b/sleepyhead/daily.h index 29fc23e5..80d8e252 100644 --- a/sleepyhead/daily.h +++ b/sleepyhead/daily.h @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * Daily GUI Headers +/* Daily GUI Headers * * Copyright (c) 2011-2014 Mark Watkins * @@ -146,6 +143,12 @@ public: void hideSpaceHogs(); void showSpaceHogs(); + QLabel * getDateDisplay(); + +public slots: + void on_LineCursorUpdate(double time); + void on_RangeUpdate(double minx, double maxx); + private slots: void on_ReloadDay(); @@ -245,10 +248,6 @@ private slots: void on_toggleGraphs_clicked(bool checked); - void on_zoomFullyOut_clicked(); - - void on_resetLayoutButton_clicked(); - /*! \fn on_weightSpinBox_editingFinished(); \brief Called when weight has changed.. Updates the BMI dislpay and journal objects. @@ -274,6 +273,8 @@ private slots: void on_toggleEvents_clicked(bool checked); + + protected: virtual void closeEvent(QCloseEvent *); virtual void showEvent(QShowEvent *); @@ -312,6 +313,7 @@ private: void updateCube(); void updateGraphCombo(); + QString getSessionInformation(Day *cpap, Day *oxi, Day *stage, Day *posit); QString getMachineSettings(Day *cpap); QString getStatisticsInfo(Day *cpap, Day *oxi, Day *pos); @@ -353,7 +355,7 @@ private: QIcon * icon_off; SessionBar * sessbar; - QLabel * dateDisplay; + MyLabel * dateDisplay; MyWebView * webView; Day * lastcpapday; diff --git a/sleepyhead/daily.ui b/sleepyhead/daily.ui index ab61bf02..ff39e822 100644 --- a/sleepyhead/daily.ui +++ b/sleepyhead/daily.ui @@ -6,7 +6,7 @@ 0 0 - 942 + 1211 666 @@ -842,7 +842,7 @@ QToolButton:pressed { true - 1 + 2 true @@ -1450,67 +1450,6 @@ QSlider::handle:horizontal { 0 - - - - Zoom fully out - - - QToolButton { - background: transparent; - border-radius: 8px; - border: 2px solid transparent; -} - -QToolButton:hover { - border: 2px solid #456789; -} - -QToolButton:pressed { - border: 2px solid #456789; - background-color: #89abcd; -} - - - 100% - - - true - - - - - - - Reset the graph heights to uniform sizes - - - QToolButton { - background: transparent; - border-radius: 8px; - border: 2px solid transparent; -} - -QToolButton:hover { - border: 2px solid #456789; -} - -QToolButton:pressed { - border: 2px solid #456789; - background-color: #89abcd; -} - - - Reset - - - true - - - Qt::NoArrow - - - @@ -1530,7 +1469,7 @@ QToolButton:pressed { } - ... + Flags true @@ -1538,6 +1477,9 @@ QToolButton:pressed { true + + Qt::ToolButtonTextBesideIcon + false @@ -1547,15 +1489,12 @@ QToolButton:pressed { - - - Flags: + + + 12 - - - @@ -1582,13 +1521,13 @@ QToolButton:pressed { } - + Graphs true - Qt::ToolButtonIconOnly + Qt::ToolButtonTextBesideIcon false diff --git a/sleepyhead/docs/channels.xml b/sleepyhead/docs/channels.xml index 19922600..90eb4641 100644 --- a/sleepyhead/docs/channels.xml +++ b/sleepyhead/docs/channels.xml @@ -68,6 +68,7 @@ Important: One id code per item, DO NOT CHANGE ID NUMBERS!!! + diff --git a/sleepyhead/exportcsv.cpp b/sleepyhead/exportcsv.cpp index 2b330f7d..3a9afb65 100644 --- a/sleepyhead/exportcsv.cpp +++ b/sleepyhead/exportcsv.cpp @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * ExportCSV module implementation +/* ExportCSV module implementation * * Copyright (c) 2011-2014 Mark Watkins * diff --git a/sleepyhead/exportcsv.h b/sleepyhead/exportcsv.h index cda20949..dc9737fa 100644 --- a/sleepyhead/exportcsv.h +++ b/sleepyhead/exportcsv.h @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * ExportCSV Module Header +/* ExportCSV Module Header * * Copyright (c) 2011-2014 Mark Watkins * diff --git a/sleepyhead/icons/edit-find.png b/sleepyhead/icons/edit-find.png index d945887fb566ace2ba18fd31bb411a778540cea7..385c67354a70f84e20172867e4fe4063a0ac6480 100644 GIT binary patch literal 68710 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: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 F{{!&>-A4cb literal 4909 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 literal 0 HcmV?d00001 diff --git a/sleepyhead/icons/help.png b/sleepyhead/icons/help.png index 10b8d03b3397fd2d856d4ab7ac625b52176a1f81..4ce1ae1a4630d636bbac97054f24e6c478fc7b1d 100644 GIT binary patch literal 82459 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
mY0 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 >R4dTlgf6l;?iv6#TKeTiy?8 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 RJ^;u+6NCHYj0LyI{{bnsHB0~i literal 4362 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 EfR%3tR-8P8N2Ldi70C!YxXS$A(1_M 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 literal 5062 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 diff --git a/sleepyhead/icons/pushpin.png b/sleepyhead/icons/pushpin.png new file mode 100644 index 0000000000000000000000000000000000000000..623ab1a004a5488ed4dc9c8cccd8e66c1d33c9fa GIT binary patch literal 2050 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 IM6N<$f}UK#1ONa4 diff --git a/sleepyhead/icons/sdcard.png b/sleepyhead/icons/sdcard.png index 7eab2b2650da1facc71ede5bced08080c1e790ae..59f2ddb699efadaf19c848055bd13abcf842642b 100644 GIT binary patch literal 70943 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


P;ssvm| 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 K!k|*08uuUI%!`)* literal 2463 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 + * + * This file is subject to the terms and conditions of the GNU General Public + * License. See the file COPYING in the main directory of the Linux + * distribution for more details. */ + #include "logger.h" QThreadPool * otherThreadPool = NULL; diff --git a/sleepyhead/main.cpp b/sleepyhead/main.cpp index e2bb1900..72d32452 100644 --- a/sleepyhead/main.cpp +++ b/sleepyhead/main.cpp @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * Main +/* SleepyHead Main * * Copyright (c) 2011-2014 Mark Watkins * @@ -77,7 +74,6 @@ void setOrders() { schema::channel[CPAP_UserFlag2].setOrder(257); } - void release_notes() { QDialog relnotes; diff --git a/sleepyhead/mainwindow.cpp b/sleepyhead/mainwindow.cpp index c9ac945f..db098d30 100644 --- a/sleepyhead/mainwindow.cpp +++ b/sleepyhead/mainwindow.cpp @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * MainWindow Implementation +/* SleepyHead MainWindow Implementation * * Copyright (c) 2011-2014 Mark Watkins * @@ -318,12 +315,15 @@ MainWindow::MainWindow(QWidget *parent) : // Translators, these are only temporary messages, don't bother unless you really want to.. - warnmsg.push_back(tr("Warning: This pre-release build is meant for beta testers only. Please do NOT share outside the SleepyHead Testing Forum.")); - warnmsg.push_back(tr("Please report bugs for this build to the SleepyHead Testing Forum, but first, check the release thread to ensure you are running the latest version.")); + warnmsg.push_back(tr("Warning: This is a pre-release build, and may at times show unstable behaviour. It is intended for testing purposes.")); + warnmsg.push_back(tr("If you experience CPAP chart/data errors after upgrading to a new version, try rebuilding your CPAP database from the Data menu.")); + warnmsg.push_back(tr("Make sure your keep your SleepyHead data folder backed up when trying testing versions.")); + warnmsg.push_back(tr("Please ensure you are running the latest version before reporting any bugs.")); warnmsg.push_back(tr("When reporting bugs, please make sure to supply the SleepyHead version number, operating system details and CPAP machine model.")); - warnmsg.push_back(tr("Warning: This reports this software generates are not fit for compliance or medical diagnostic purposes.")); + warnmsg.push_back(tr("Make sure your willing and able to supply a .zip of your CPAP data or a crash report before you think about filing a bug report.")); + warnmsg.push_back(tr("Think twice before filing a bug report that already exists, PLEASE search first, as your likely not the first one to notice it!")); + warnmsg.push_back(tr("This red message line is intentional, and will not be a feature in the final version...")); warnmsg.push_back(tr("")); - warnmsg.push_back(tr("These messages are only a temporary feature. Some people thought they were an error.")); wtimer.setParent(this); warnidx = 0; @@ -465,6 +465,7 @@ void loadChannels() void MainWindow::closeEvent(QCloseEvent * event) { saveChannels(); + schema::channel.Save(); if (daily) { daily->close(); @@ -618,19 +619,20 @@ void MainWindow::Startup() PopulatePurgeMenu(); - SnapshotGraph = new gGraphView(this, daily->graphView()); +// SnapshotGraph = new gGraphView(this, daily->graphView()); - // Snapshot graphs mess up with pixmap cache - SnapshotGraph->setUsePixmapCache(false); +// // Snapshot graphs mess up with pixmap cache +// SnapshotGraph->setUsePixmapCache(false); - // SnapshotGraph->setFormat(daily->graphView()->format()); - //SnapshotGraph->setMaximumSize(1024,512); - //SnapshotGraph->setMinimumSize(1024,512); - SnapshotGraph->hide(); +// // SnapshotGraph->setFormat(daily->graphView()->format()); +// //SnapshotGraph->setMaximumSize(1024,512); +// //SnapshotGraph->setMinimumSize(1024,512); +// SnapshotGraph->hide(); overview = new Overview(ui->tabWidget, daily->graphView()); ui->tabWidget->insertTab(3, overview, STR_TR_Overview); + // GenerateStatistics(); ui->statStartDate->setDate(p_profile->FirstDay()); @@ -2650,3 +2652,17 @@ void MainWindow::on_actionDaily_Calendar_toggled(bool visible) { getDaily()->setCalendarVisible(visible); } + +void MainWindow::on_actionExport_Journal_triggered() +{ + QString folder; +#if QT_VERSION < QT_VERSION_CHECK(5,0,0) + folder = QDesktopServices::storageLocation(QDesktopServices::DocumentsLocation); +#else + folder = QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation); +#endif + folder += QDir::separator() + tr("%1's Journal").arg(p_profile->user->userName()) + ".xml"; + + QString filename = QFileDialog::getSaveFileName(this, tr("Choose where to save journal"), folder, tr("XML Files (*.xml)")); + +} diff --git a/sleepyhead/mainwindow.h b/sleepyhead/mainwindow.h index 5b951e92..39f06afc 100644 --- a/sleepyhead/mainwindow.h +++ b/sleepyhead/mainwindow.h @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * MainWindow Headers +/* SleepyHead MainWindow Headers * * Copyright (c) 2011-2014 Mark Watkins * @@ -24,6 +21,7 @@ #include "preferencesdialog.h" extern Profile *profile; +QString getCPAPPixmap(QString mach_class); namespace Ui { class MainWindow; @@ -108,9 +106,9 @@ class MainWindow : public QMainWindow */ void Notify(QString s, QString title = "", int ms = 5000); - /*! \fn gGraphView *snapshotGraph() - \brief Returns the current snapshotGraph object used by the report printing system */ - gGraphView *snapshotGraph() { return SnapshotGraph; } +// /*! \fn gGraphView *snapshotGraph() +// \brief Returns the current snapshotGraph object used by the report printing system */ +// gGraphView *snapshotGraph() { return SnapshotGraph; } //! \brief Returns the Daily Tab object Daily *getDaily() { return daily; } @@ -327,6 +325,8 @@ class MainWindow : public QMainWindow void on_actionDaily_Calendar_toggled(bool arg1); + void on_actionExport_Journal_triggered(); + private: void importCPAPBackups(); void finishCPAPImport(); @@ -343,7 +343,7 @@ private: QTime logtime; QSystemTrayIcon *systray; QMenu *systraymenu; - gGraphView *SnapshotGraph; +// gGraphView *SnapshotGraph; QString bookmarkFilter; bool m_restartRequired; volatile bool m_inRecalculation; diff --git a/sleepyhead/mainwindow.ui b/sleepyhead/mainwindow.ui index d2c19353..66689551 100644 --- a/sleepyhead/mainwindow.ui +++ b/sleepyhead/mainwindow.ui @@ -6,8 +6,8 @@ 0 0 - 975 - 735 + 1005 + 849 @@ -1498,7 +1498,7 @@ QToolBox::tab:selected { 0 0 180 - 596 + 710 @@ -1634,12 +1634,12 @@ border: 2px solid #56789a; border-radius: 30px; - :/icons/go-home.png:/icons/go-home.png + :/icons/eye.png:/icons/eye.png - 48 - 48 + 64 + 64 @@ -1688,8 +1688,8 @@ border: 2px solid #56789a; border-radius: 30px; - 48 - 48 + 64 + 64 @@ -1732,8 +1732,8 @@ border: 2px solid #56789a; border-radius: 30px; - 48 - 48 + 64 + 64 @@ -1776,8 +1776,8 @@ border: 2px solid #56789a; border-radius: 30px; - 48 - 48 + 64 + 64 @@ -1826,8 +1826,8 @@ border: 2px solid #56789a; border-radius: 30px; - 48 - 48 + 64 + 64 @@ -1876,8 +1876,8 @@ border: 2px solid #56789a; border-radius: 30px; - 48 - 48 + 64 + 64 @@ -1912,7 +1912,7 @@ border: 2px solid #56789a; border-radius: 30px; 0 0 180 - 596 + 710 @@ -3060,7 +3060,7 @@ border-radius: 10px; 0 0 180 - 596 + 710 @@ -3121,7 +3121,7 @@ border-radius: 10px; 0 0 - 975 + 1005 22 @@ -3142,6 +3142,8 @@ border-radius: 10px; + + @@ -3361,7 +3363,7 @@ border-radius: 10px; - Exp&ort + Exp&ort Data @@ -3511,6 +3513,11 @@ border-radius: 10px; F9 + + + Backup &Journal + + diff --git a/sleepyhead/newprofile.cpp b/sleepyhead/newprofile.cpp index e472629b..c4b64f1b 100644 --- a/sleepyhead/newprofile.cpp +++ b/sleepyhead/newprofile.cpp @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * Create New Profile Implementation +/* Create New Profile Implementation * * Copyright (c) 2011-2014 Mark Watkins * diff --git a/sleepyhead/newprofile.h b/sleepyhead/newprofile.h index b37a30b5..74c30adb 100644 --- a/sleepyhead/newprofile.h +++ b/sleepyhead/newprofile.h @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * Create New Profile Header +/* Create New Profile Header * * Copyright (c) 2011-2014 Mark Watkins * diff --git a/sleepyhead/overview.cpp b/sleepyhead/overview.cpp index 59136e89..bb4a7c01 100644 --- a/sleepyhead/overview.cpp +++ b/sleepyhead/overview.cpp @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * Overview GUI Implementation +/* Overview GUI Implementation * * Copyright (c) 2011-2014 Mark Watkins * diff --git a/sleepyhead/overview.h b/sleepyhead/overview.h index f30ea517..2655b9af 100644 --- a/sleepyhead/overview.h +++ b/sleepyhead/overview.h @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * Overview GUI Headers +/* Overview GUI Headers * * Copyright (c) 2011-2014 Mark Watkins * diff --git a/sleepyhead/oximeterimport.cpp b/sleepyhead/oximeterimport.cpp index 0fd6102e..8bf2aba5 100644 --- a/sleepyhead/oximeterimport.cpp +++ b/sleepyhead/oximeterimport.cpp @@ -1,3 +1,11 @@ +/* Oximeter Import Wizard Implementation + * + * Copyright (c) 2011-2014 Mark Watkins + * + * This file is subject to the terms and conditions of the GNU General Public + * License. See the file COPYING in the main directory of the Linux + * distribution for more details. */ + #include #include #include diff --git a/sleepyhead/oximeterimport.h b/sleepyhead/oximeterimport.h index d1f45cca..6c2a008f 100644 --- a/sleepyhead/oximeterimport.h +++ b/sleepyhead/oximeterimport.h @@ -1,3 +1,11 @@ +/* Oximeter Import Wizard Header + * + * Copyright (c) 2011-2014 Mark Watkins + * + * This file is subject to the terms and conditions of the GNU General Public + * License. See the file COPYING in the main directory of the Linux + * distribution for more details. */ + #ifndef OXIMETERIMPORT_H #define OXIMETERIMPORT_H diff --git a/sleepyhead/preferencesdialog.cpp b/sleepyhead/preferencesdialog.cpp index 7749fab4..4990c4eb 100644 --- a/sleepyhead/preferencesdialog.cpp +++ b/sleepyhead/preferencesdialog.cpp @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * Preferences Dialog +/* SleepyHead Preferences Dialog Implementation * * Copyright (c) 2011-2014 Mark Watkins * diff --git a/sleepyhead/preferencesdialog.h b/sleepyhead/preferencesdialog.h index db13fe10..bc99de38 100644 --- a/sleepyhead/preferencesdialog.h +++ b/sleepyhead/preferencesdialog.h @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * SleepyHead Preferences Dialog GUI Headers +/* SleepyHead Preferences Dialog Headers * * Copyright (c) 2011-2014 Mark Watkins * diff --git a/sleepyhead/profileselect.cpp b/sleepyhead/profileselect.cpp index 140e7234..a6920c16 100644 --- a/sleepyhead/profileselect.cpp +++ b/sleepyhead/profileselect.cpp @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * Profile Select Implementation (Login Screen) +/* Profile Select Implementation (Login Screen) * * Copyright (c) 2011-2014 Mark Watkins * diff --git a/sleepyhead/profileselect.h b/sleepyhead/profileselect.h index 6158938d..14010575 100644 --- a/sleepyhead/profileselect.h +++ b/sleepyhead/profileselect.h @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * Profile Select Header (Login Screen) +/* Profile Select Header (Login Screen) * * Copyright (c) 2011-2014 Mark Watkins * diff --git a/sleepyhead/reports.cpp b/sleepyhead/reports.cpp index 3bd58dab..b517fe2d 100644 --- a/sleepyhead/reports.cpp +++ b/sleepyhead/reports.cpp @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * Reports/Printing Module +/* Reports/Printing Module * * Copyright (c) 2011 Mark Watkins * @@ -607,11 +604,7 @@ void Report::PrintReport(gGraphView *gv, QString name, QDate date) //painter.beginNativePainting(); //g->showTitle(false); int hhh = full_graph_height - normal_height; -#if QT_VERSION >= QT_VERSION_CHECK(5,0,0) QPixmap pm2 = g->renderPixmap(virt_width, hhh, 1); -#else - QPixmap pm2 = g->renderPixmap(virt_width, hhh, 1); -#endif QImage pm = pm2.toImage(); //fscale); pm2.detach(); //g->showTitle(true); diff --git a/sleepyhead/reports.h b/sleepyhead/reports.h index 681a17b8..0c81b129 100644 --- a/sleepyhead/reports.h +++ b/sleepyhead/reports.h @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * Reports Header +/* Reports Header * * Copyright (c) 2011-2014 Mark Watkins * diff --git a/sleepyhead/sessionbar.cpp b/sleepyhead/sessionbar.cpp index d6f93483..db842d55 100644 --- a/sleepyhead/sessionbar.cpp +++ b/sleepyhead/sessionbar.cpp @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * SessionBar +/* SessionBar Graph Implementation * * Copyright (c) 2011 Mark Watkins * diff --git a/sleepyhead/sessionbar.h b/sleepyhead/sessionbar.h index 4d702423..67f85aeb 100644 --- a/sleepyhead/sessionbar.h +++ b/sleepyhead/sessionbar.h @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * SessionBar +/* SessionBar Graph Header * * Copyright (c) 2011-2014 Mark Watkins * diff --git a/sleepyhead/sleepyhead.pro b/sleepyhead/sleepyhead.pro index 68f56b62..467fe4cf 100644 --- a/sleepyhead/sleepyhead.pro +++ b/sleepyhead/sleepyhead.pro @@ -180,7 +180,8 @@ SOURCES += \ SleepLib/machine_common.cpp \ SleepLib/loader_plugins/weinmann_loader.cpp \ Graphs/gdailysummary.cpp \ - Graphs/MinutesAtPressure.cpp + Graphs/MinutesAtPressure.cpp \ + SleepLib/journal.cpp HEADERS += \ common_gui.h \ @@ -238,7 +239,8 @@ HEADERS += \ logger.h \ SleepLib/loader_plugins/weinmann_loader.h \ Graphs/gdailysummary.h \ - Graphs/MinutesAtPressure.h + Graphs/MinutesAtPressure.h \ + SleepLib/journal.h FORMS += \ daily.ui \ diff --git a/sleepyhead/statistics.cpp b/sleepyhead/statistics.cpp index 9980efdf..9f2a62b8 100644 --- a/sleepyhead/statistics.cpp +++ b/sleepyhead/statistics.cpp @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * Statistics Report Generator +/* Statistics Report Generator Implementation * * Copyright (c) 2011 Mark Watkins * diff --git a/sleepyhead/statistics.h b/sleepyhead/statistics.h index b333de02..bc28f67b 100644 --- a/sleepyhead/statistics.h +++ b/sleepyhead/statistics.h @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * Summary Header +/* Statistics Report Generator Header * * Copyright (c) 2011-2014 Mark Watkins * diff --git a/sleepyhead/translation.cpp b/sleepyhead/translation.cpp index bc8022ab..73e97bec 100644 --- a/sleepyhead/translation.cpp +++ b/sleepyhead/translation.cpp @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * Multilingual Support files +/* Multilingual Support files * * Copyright (c) 2011-2014 Mark Watkins * diff --git a/sleepyhead/translation.h b/sleepyhead/translation.h index 6391f422..89b9dbca 100644 --- a/sleepyhead/translation.h +++ b/sleepyhead/translation.h @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * Multilingual Support header +/* Multilingual Support header * * Copyright (c) 2011-2014 Mark Watkins * diff --git a/sleepyhead/updateparser.cpp b/sleepyhead/updateparser.cpp index dfeb518c..17186eda 100644 --- a/sleepyhead/updateparser.cpp +++ b/sleepyhead/updateparser.cpp @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * UpdateParser +/* UpdateParser Implementation (Autoupdater component) * * Copyright (c) 2011-2014 Mark Watkins * diff --git a/sleepyhead/updateparser.h b/sleepyhead/updateparser.h index 613310a9..a5c5aafe 100644 --- a/sleepyhead/updateparser.h +++ b/sleepyhead/updateparser.h @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * UpdateParser +/* UpdateParser Header (Autoupdater component) * * Copyright (c) 2011-2014 Mark Watkins * diff --git a/sleepyhead/welcome.cpp b/sleepyhead/welcome.cpp index 8d909222..49714f47 100644 --- a/sleepyhead/welcome.cpp +++ b/sleepyhead/welcome.cpp @@ -1,7 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * vim: set ts=8 sts=4 et sw=4 tw=99: - * - * Welcome Page +/* Welcome Page Implementation * * Copyright (c) 2011-2014 Mark Watkins * @@ -168,7 +165,7 @@ QString GenerateWelcomeHTML() int hour = hours; QString timestr = QObject::tr("%1 hours, %2 minutes and %3 seconds").arg(hour).arg(minutes).arg(seconds); - if (hours > 4) html += QObject::tr("You slept for %1.").arg(timestr)+"
"; + if (hours > 4) html += QObject::tr("You machine was on for %1.").arg(timestr)+"
"; else html += QObject::tr("You only had the mask on for %1.").arg(timestr)+"
"; @@ -235,11 +232,13 @@ QString GenerateWelcomeHTML() } html += QString("
")+ "" - "" + "" "" - "" + QObject::tr("

Certain operating systems write index files to the card without asking, which can render your card unreadable by your cpap machine.")+"

"+ + QObject::tr("

As a second line of protection, ALWAYS UNMOUNT the data card properly before removing it!

")+ + "" + "" "" "
"+QObject::tr("Very Important Warning")+"
"+QObject::tr("Very Important Warning")+"
"+ QObject::tr("

ALWAYS write protect CPAP SDCards before inserting them into your computer.")+"

"+ - QObject::tr("Certain operating systems write index files to the card without asking, which can render your card unreadable by your cpap machine.")+"
" "
"