-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathdynamic_scrollbar.cpp
More file actions
49 lines (43 loc) · 980 Bytes
/
dynamic_scrollbar.cpp
File metadata and controls
49 lines (43 loc) · 980 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include "dynamic_scrollbar.h"
#include <QStyle>
#include <QStyleOptionSlider>
#include "debug.h"
dynamic_scrollbar::dynamic_scrollbar(QWidget *parent) :
QScrollBar(parent)
{
setStyle(scroll_style);
toggle_mode(false);
connect(this, &dynamic_scrollbar::sliderReleased, this, &dynamic_scrollbar::reset_slider);
connect(this, &dynamic_scrollbar::sliderPressed, this, &dynamic_scrollbar::send_auto_scroll);
}
void dynamic_scrollbar::set_range(int value)
{
int old = maximum();
setRange(0, value);
if(mode && value != old){
setValue(height() / 2);
}
}
void dynamic_scrollbar::toggle_mode(bool m)
{
mode = m;
scroll_style->toggle(mode);
setPageStep(mode ? 0 : original_pagestep);
if(mode){
setRange(0, height());
setValue(height() / 2);
}
}
void dynamic_scrollbar::reset_slider()
{
if(mode){
setValue(height() / 2);
emit auto_scroll_action(false);
}
}
void dynamic_scrollbar::send_auto_scroll()
{
if(mode){
emit auto_scroll_action(true);
}
}