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