From 48b862a8eb91276895a79b6d5d6c9269df8e7e85 Mon Sep 17 00:00:00 2001 From: jsiegle <jsiegle@mit.edu> Date: Fri, 24 Jan 2014 19:16:16 -0500 Subject: [PATCH] Allow control panel to collapse gracefully --- Source/UI/ControlPanel.cpp | 25 ++++++++---- Source/UI/UIComponent.cpp | 79 +++++++++++++++++++++++--------------- 2 files changed, 64 insertions(+), 40 deletions(-) diff --git a/Source/UI/ControlPanel.cpp b/Source/UI/ControlPanel.cpp index 9f47aa296..e5cae99e0 100755 --- a/Source/UI/ControlPanel.cpp +++ b/Source/UI/ControlPanel.cpp @@ -525,7 +525,7 @@ void ControlPanel::resized() if (playButton != 0) { - if (w > 350) + if (w > 330) playButton->setBounds(w-h*10,5,h-5,h-10);\ else playButton->setBounds(5,5,h-5,h-10);\ @@ -533,7 +533,7 @@ void ControlPanel::resized() if (recordButton != 0) { - if (w > 350) + if (w > 330) recordButton->setBounds(w-h*9,5,h-5,h-10); else recordButton->setBounds(5+h,5,h-5,h-10); @@ -541,18 +541,27 @@ void ControlPanel::resized() if (masterClock != 0) { - if (w > 350) + if (w > 330) masterClock->setBounds(w-h*7-15,0,h*7-15,h); else masterClock->setBounds(5+h*2+15,0,h*7-15,h); } + int offset1 = 750 - getWidth(); + if (offset1 > h) + offset1 = h; + + int offset2 = 570 - getWidth(); + if (offset2 > h) + offset2 = h; + if (cpuMeter != 0) { + if (getWidth() < 750 && getWidth() >= 570) - cpuMeter->setBounds(8,h/4+h,h*3,h/2); + cpuMeter->setBounds(8,h/4+offset1,h*3,h/2); else if (getWidth() < 570) - cpuMeter->setBounds(8,h/4+h*2,h*3,h/2); + cpuMeter->setBounds(8,h/4+offset1+offset2,h*3,h/2); else cpuMeter->setBounds(8,h/4,h*3,h/2); } @@ -560,9 +569,9 @@ void ControlPanel::resized() if (diskMeter != 0) { if (getWidth() < 750 && getWidth() >= 570) - diskMeter->setBounds(16+h*3,h/4+h,h*3,h/2); + diskMeter->setBounds(16+h*3,h/4+offset1,h*3,h/2); else if (getWidth() < 570) - diskMeter->setBounds(16+h*3,h/4+h*2,h*3,h/2); + diskMeter->setBounds(16+h*3,h/4+offset1+offset2,h*3,h/2); else diskMeter->setBounds(16+h*3,h/4,h*3,h/2); @@ -573,7 +582,7 @@ void ControlPanel::resized() if (getWidth() < 750 && getWidth() >= 570) audioEditor->setBounds(w-526,5,h*8,h-10); else if (getWidth() < 570) - audioEditor->setBounds(8,5+h,h*8,h-10); + audioEditor->setBounds(8,5+offset2,h*8,h-10); else audioEditor->setBounds(h*7,5,h*8,h-10); } diff --git a/Source/UI/UIComponent.cpp b/Source/UI/UIComponent.cpp index d32282cbb..d3e3b4ae2 100755 --- a/Source/UI/UIComponent.cpp +++ b/Source/UI/UIComponent.cpp @@ -120,14 +120,22 @@ void UIComponent::resized() { editorViewportButton->setBounds(w-230, h-40, 225, 35); - if (h < 400) - editorViewportButton->setVisible(false); - else - editorViewportButton->setVisible(true); + if (h < 300 && editorViewportButton->isOpen()) + editorViewportButton->toggleState(); + + if (h < 200) + editorViewportButton->setBounds(w-230,h-40+200-h,225,35); + //else + // editorViewportButton->setVisible(true); } if (editorViewport != 0) { + //if (h < 400) + // editorViewport->setVisible(false); + //else + // editorViewport->setVisible(true); + if (editorViewportButton->isOpen() && !editorViewport->isVisible()) editorViewport->setVisible(true); else if (!editorViewportButton->isOpen() && editorViewport->isVisible()) @@ -135,10 +143,7 @@ void UIComponent::resized() editorViewport->setBounds(6,h-190,w-11,150); - if (h < 400) - editorViewport->setVisible(false); - else - editorViewport->setVisible(true); + } if (controlPanel != 0) @@ -149,18 +154,28 @@ void UIComponent::resized() int leftBound; if (w >= 460){ - leftBound = 210; + leftBound = 202; } else { - leftBound = w-250; + leftBound = w-258; controlPanelWidth = w-leftBound; } if (controlPanelWidth < 750) - addHeight += 32; + { + addHeight = 750-controlPanelWidth; + + if (addHeight > 32) + addHeight = 32; + } if (controlPanelWidth < 570) - addHeight += 32; + { + addHeight = 32 + 570-controlPanelWidth; + + if (addHeight > 64) + addHeight = 64; + } if (controlPanel->isOpen()) controlPanel->setBounds(leftBound,6,controlPanelWidth,64+addHeight); @@ -168,6 +183,20 @@ void UIComponent::resized() controlPanel->setBounds(leftBound,6,controlPanelWidth,32+addHeight); } + if (processorList != 0) + { + if (processorList->isOpen()) + if (editorViewportButton->isOpen()) + processorList->setBounds(5,5,195,h-200); + else + processorList->setBounds(5,5,195,h-50); + else + processorList->setBounds(5,5,195,34); + + if (w < 460) + processorList->setBounds(5-460+getWidth(),5,195,processorList->getHeight()); + } + if (dataViewport != 0) { int left, top, width, height; @@ -175,7 +204,7 @@ void UIComponent::resized() top = 40; if (processorList->isOpen()) - left = 202; + left = processorList->getX()+processorList->getWidth()+2; else left = 6; @@ -197,29 +226,15 @@ void UIComponent::resized() } - if (processorList != 0) - { - if (processorList->isOpen()) - if (editorViewportButton->isOpen()) - processorList->setBounds(5,5,195,h-200); - else - processorList->setBounds(5,5,195,h-50); - else - processorList->setBounds(5,5,195,34); - - if (w < 460) - processorList->setVisible(false); - else - processorList->setVisible(true); - } + if (messageCenter != 0) { messageCenter->setBounds(6,h-35,w-241,30); - if (h < 400) - messageCenter->setVisible(false); - else - messageCenter->setVisible(true); + if (h < 200) + messageCenter->setBounds(6,h-35+200-h,w-241,30); + // else + // messageCenter->setVisible(true); } // for debugging qpurposes: -- GitLab