4 #include "TimeSlider.h"
5 #include "TimeSlider.moc"
7 TimeSlider::TimeSlider(QWidget
* parent
) : QWidget(parent
) {
8 setLayout(new QHBoxLayout());
9 display
= new QLineEdit("00:00.000");
10 display
->setSizePolicy(QSizePolicy::Preferred
, QSizePolicy::Fixed
);
11 connect(display
, SIGNAL(returnPressed()), SLOT(update_slider()));
12 layout()->addWidget(display
);
14 slider
= new QSlider();
15 slider
->setOrientation(Qt::Horizontal
);
16 slider
->setSizePolicy(QSizePolicy::MinimumExpanding
, QSizePolicy::Fixed
);
17 slider
->setInvertedControls(true);
18 slider
->setSingleStep(100);
19 slider
->setPageStep(5000);
20 slider
->setMaximum(1000);
21 connect(slider
, SIGNAL(valueChanged(int)), SLOT(update_display(int)));
22 layout()->addWidget(slider
);
25 TimeSlider::~TimeSlider() {
29 void TimeSlider::set_range(const Timestamp
& from
, const Timestamp
& to
) {
30 slider
->setMaximum(from
.ms_until(to
));
33 void TimeSlider::update_display(int new_value
) {
34 if(new_value
< 0) return;
36 string
.sprintf("%02i:%02i.%03i", (new_value
/ 1000) / 60, (new_value
/ 1000) % 60, new_value
% 1000);
37 display
->setText(string
);
40 void TimeSlider::update_slider() {
41 QString string
= display
->text();
42 QByteArray input
= string
.toAscii();
44 QString minutes
, seconds
, milliseconds
;
45 for(; i
< string
.size(); i
++) {
46 if(isdigit(input
[i
])) {
50 else if(input
[i
] == ':') break;
53 if(input
[i
] != ':') return;
55 for(; i
< string
.size(); i
++) {
56 if(isdigit(input
[i
])) {
60 else if(input
[i
] == '.') break;
63 if(i
!= string
.size()) {
64 if(input
[i
] != '.') return;
66 for(; i
< string
.size(); i
++) {
67 if(isdigit(input
[i
])) {
68 milliseconds
+= input
[i
];
75 QTextStream
stream(&milliseconds
);
78 stream
.setString(&seconds
);
81 stream
.setString(&minutes
);
84 slider
->setValue(value
);