There can be only one (filename convention)
[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(PathScene *scene, QWidget *parent) :
16   QWidget(parent),
17   scene(scene),
18   viewportBar(Qt::Horizontal)
19 {
20   QVBoxLayout *layout = new QVBoxLayout;
21
22   layout->addWidget(scene);
23   layout->addWidget(&viewportBar);
24
25   connect(&viewportBar, SIGNAL(valueChanged(int)), this, SLOT(setViewportX(int)));
26   connect(scene, SIGNAL(viewportChanged()), this, SLOT(updateScrollBar()));
27   setLayout(layout);
28
29   // sets range & scale
30   updateScrollBar();
31 }
32
33 void PathWidget::updateScrollBar()
34 {
35   float max_right = scene->right();
36   float max_left = scene->left();
37   float max_range = max_right - max_left;
38   float cur_left = scene->viewportLeft();
39   float cur_right = scene->viewportRight();
40   float cur_center = ((cur_right-cur_left)/2)+cur_left;
41   // set range to min
42   thumb = (int)cur_center;
43   viewportBar.setRange((int)max_left, (int)max_right);
44   viewportBar.setValue(thumb);
45 }
46
47 void PathWidget::setViewportX(int x)
48 {
49   if (x != thumb) {
50     thumb = x;
51     scene->setViewportX(thumb);
52   }
53 }