From 367d8282a9ff91f4f5eb6267b867ebd082e831bb Mon Sep 17 00:00:00 2001 From: LoudSnorer Date: Tue, 14 Mar 2023 16:11:46 -0400 Subject: [PATCH] minimum height for Daily Event Flags Graph. Y-Axis will have non-overlapping labels for each eventType. --- oscar/daily.cpp | 20 +++++++++++++++++++- oscar/daily.h | 1 + 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/oscar/daily.cpp b/oscar/daily.cpp index f3314df5..d9e9a0e4 100644 --- a/oscar/daily.cpp +++ b/oscar/daily.cpp @@ -235,8 +235,10 @@ Daily::Daily(QWidget *parent,gGraphView * shared) // SG->AddLayer(new gDailySummary()); graphlist[STR_GRAPH_SleepFlags] = SF = new gGraph(STR_GRAPH_SleepFlags, GraphView, STR_TR_EventFlags, STR_TR_EventFlags, default_height); + sleepFlags = SF; SF->setPinned(true); + //============================================ // Create graphs from 'interesting' CPAP codes // @@ -2662,17 +2664,33 @@ void Daily::setFlagText () { numOff++; } + int numOn=numTotal; ui->eventsCombo->setItemIcon(0, numOff ? *icon_warning : *icon_up_down); QString flagsText; if (numOff == 0) { flagsText = (QObject::tr("%1 Event Types")+" ").arg(numTotal); ui->eventsCombo->setItemText(lastIndex,STR_HIDE_ALL_EVENTS); } else { - int numOn=numTotal-numOff; + numOn-=numOff; flagsText = QObject::tr("%1 of %2 Event Types").arg(numOn).arg(numTotal); if (numOn==0) ui->eventsCombo->setItemText(lastIndex,STR_SHOW_ALL_EVENTS); } + ui->eventsCombo->setItemText(0, flagsText); + if (numOn==0) numOn=1; // always have an area showing in graph. + float barHeight = QFontMetrics(*defaultfont).capHeight() + QFontMetrics(*defaultfont).descent() ; + float fontHeight = QFontMetrics(*defaultfont).height() ; + + float flagGroupHeight = barHeight * numOn; // space for graphs + // account for ispace above and below events bars + flagGroupHeight += fontHeight *2 ; // for axis font Height & vertical markers + flagGroupHeight += fontHeight ; // top margin + flagGroupHeight += 4 ; // padding + + DEBUGFW Q(sleepFlags->name()) Q(sleepFlags->title()) Q(flagGroupHeight) Q(barHeight) Q(numOn) Q(numOff); + sleepFlags->setMinHeight(flagGroupHeight); // set minimum height so height is enforced. + sleepFlags->setHeight(flagGroupHeight); // set height so height is adjusted when eventtypes are removed from display + } void Daily::showAllGraphs(bool show) { diff --git a/oscar/daily.h b/oscar/daily.h index 5dc319af..89b72912 100644 --- a/oscar/daily.h +++ b/oscar/daily.h @@ -350,6 +350,7 @@ private: QMenu *show_graph_menu; gGraphView *GraphView,*snapGV; + gGraph* sleepFlags; MyScrollBar *scrollbar; QHBoxLayout *layout; QLabel *emptyToggleArea;