ab4ce603b1a65ac938c1b0d11eef186becf64b74
[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   // enble keyboard input
26   viewportBar.setFocusPolicy(Qt::StrongFocus);
27 }
28
29 void ScrollableSequenceBrowser::updateScrollBar()
30 {
31   thumb = (int)sequence_browser.viewportCenter();
32   viewportBar.setRange((int)sequence_browser.left(), 
33                        (int)sequence_browser.right());
34   viewportBar.setValue(thumb);
35   viewportBar.setPageStep(static_cast<int>(sequence_browser.viewportWidth()));
36   int step_size = static_cast<int>(sequence_browser.zoom());
37   step_size = step_size > 1 ? step_size : 1;
38   viewportBar.setSingleStep(static_cast<int>( step_size ));
39 }
40
41 void ScrollableSequenceBrowser::setViewportCenter(int x)
42 {
43   if (x != thumb) {
44     thumb = x;
45     sequence_browser.setViewportCenter(thumb);
46   }
47 }
48