minimum height for Daily Event Flags Graph. Y-Axis will have non-overlapping labels for each eventType.

This commit is contained in:
LoudSnorer 2023-03-14 16:11:46 -04:00
parent fbb3312566
commit 367d8282a9
2 changed files with 20 additions and 1 deletions

View File

@ -235,8 +235,10 @@ Daily::Daily(QWidget *parent,gGraphView * shared)
// SG->AddLayer(new gDailySummary()); // SG->AddLayer(new gDailySummary());
graphlist[STR_GRAPH_SleepFlags] = SF = new gGraph(STR_GRAPH_SleepFlags, GraphView, STR_TR_EventFlags, STR_TR_EventFlags, default_height); graphlist[STR_GRAPH_SleepFlags] = SF = new gGraph(STR_GRAPH_SleepFlags, GraphView, STR_TR_EventFlags, STR_TR_EventFlags, default_height);
sleepFlags = SF;
SF->setPinned(true); SF->setPinned(true);
//============================================ //============================================
// Create graphs from 'interesting' CPAP codes // Create graphs from 'interesting' CPAP codes
// //
@ -2662,17 +2664,33 @@ void Daily::setFlagText () {
numOff++; numOff++;
} }
int numOn=numTotal;
ui->eventsCombo->setItemIcon(0, numOff ? *icon_warning : *icon_up_down); ui->eventsCombo->setItemIcon(0, numOff ? *icon_warning : *icon_up_down);
QString flagsText; QString flagsText;
if (numOff == 0) { if (numOff == 0) {
flagsText = (QObject::tr("%1 Event Types")+" ").arg(numTotal); flagsText = (QObject::tr("%1 Event Types")+" ").arg(numTotal);
ui->eventsCombo->setItemText(lastIndex,STR_HIDE_ALL_EVENTS); ui->eventsCombo->setItemText(lastIndex,STR_HIDE_ALL_EVENTS);
} else { } else {
int numOn=numTotal-numOff; numOn-=numOff;
flagsText = QObject::tr("%1 of %2 Event Types").arg(numOn).arg(numTotal); flagsText = QObject::tr("%1 of %2 Event Types").arg(numOn).arg(numTotal);
if (numOn==0) ui->eventsCombo->setItemText(lastIndex,STR_SHOW_ALL_EVENTS); if (numOn==0) ui->eventsCombo->setItemText(lastIndex,STR_SHOW_ALL_EVENTS);
} }
ui->eventsCombo->setItemText(0, flagsText); 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) { void Daily::showAllGraphs(bool show) {

View File

@ -350,6 +350,7 @@ private:
QMenu *show_graph_menu; QMenu *show_graph_menu;
gGraphView *GraphView,*snapGV; gGraphView *GraphView,*snapGV;
gGraph* sleepFlags;
MyScrollBar *scrollbar; MyScrollBar *scrollbar;
QHBoxLayout *layout; QHBoxLayout *layout;
QLabel *emptyToggleArea; QLabel *emptyToggleArea;