refactored PathScene into SequenceBrowserWidget
[mussa.git] / qui / seqbrowser / ScrollableSequenceBrowser.cpp
1 #include <QVBoxLayout>
2
3 #include "qui/seqbrowser/ScrollableSequenceBrowser.hpp"
4
5 ScrollableSequenceBrowser::ScrollableSequenceBrowser(QWidget *parent) :
6   QWidget(parent),
7   viewportBar(Qt::Horizontal)
8 {
9   // construct central opengl widget
10   QVBoxLayout *layout = new QVBoxLayout;
11
12   layout->addWidget(&sequence_browser);
13   layout->addWidget(&viewportBar);
14
15   connect(&viewportBar, SIGNAL(valueChanged(int)), 
16           this, SLOT(setViewportCenter(int)));
17   connect(&sequence_browser, SIGNAL(viewportChanged()), 
18           this, SLOT(updateScrollBar()));
19
20   setLayout(layout);
21
22   // sets range & scale
23   updateScrollBar();
24 }
25
26 void ScrollableSequenceBrowser::updateScrollBar()
27 {
28   float max_right = sequence_browser.right();
29   float max_left = sequence_browser.left();
30   float max_range = max_right - max_left;
31   float cur_left = sequence_browser.viewportLeft();
32   float cur_right = sequence_browser.viewportRight();
33   float cur_center = ((cur_right-cur_left)/2)+cur_left;
34   // set range to min
35   thumb = (int)cur_center;
36   viewportBar.setRange((int)max_left, (int)max_right);
37   viewportBar.setValue(thumb);
38 }
39
40 void ScrollableSequenceBrowser::setViewportCenter(int x)
41 {
42   if (x != thumb) {
43     thumb = x;
44     sequence_browser.setViewportCenter(thumb);
45   }
46 }
47