make the path view independent of type of connection
[mussa.git] / qui / PathWidget.cpp
1 #include <iostream>
2
3 #include <QVBoxLayout>
4 #include <QWidget>
5
6 #include "qui/PathScene.hpp"
7 #include "qui/PathWidget.hpp"
8
9 #include <math.h>
10 using namespace std;
11
12 // whats the maximum reasonable range for a scrollbar
13 const float max_scrollbar_range = 100000;
14
15 PathWidget::PathWidget(QWidget *parent) :
16   QWidget(parent),
17   viewportBar(Qt::Horizontal)
18 {
19   QVBoxLayout *layout = new QVBoxLayout;
20
21   layout->addWidget(&scene);
22   layout->addWidget(&viewportBar);
23
24   connect(&viewportBar, SIGNAL(valueChanged(int)), 
25           this, SLOT(setViewportX(int)));
26   connect(&scene, SIGNAL(viewportChanged()), 
27           this, SLOT(updateScrollBar()));
28   setLayout(layout);
29
30   // sets range & scale
31   updateScrollBar();
32 }
33
34 void PathWidget::updateScrollBar()
35 {
36   float max_right = scene.right();
37   float max_left = scene.left();
38   float max_range = max_right - max_left;
39   float cur_left = scene.viewportLeft();
40   float cur_right = scene.viewportRight();
41   float cur_center = ((cur_right-cur_left)/2)+cur_left;
42   // set range to min
43   thumb = (int)cur_center;
44   viewportBar.setRange((int)max_left, (int)max_right);
45   viewportBar.setValue(thumb);
46 }
47
48 void PathWidget::setViewportCenter(int x)
49 {
50   if (x != thumb) {
51     thumb = x;
52     scene.setViewportCenter(thumb);
53   }
54 }