| 406 | } |
| 407 | |
| 408 | void SidepanelReplay::onPlayUpdate() |
| 409 | { |
| 410 | if( !ui->pushButtonPlay->isChecked() || _transitions.empty() ) |
| 411 | { |
| 412 | return; |
| 413 | } |
| 414 | |
| 415 | using namespace std::chrono; |
| 416 | const int LAST_ROW = _transitions.size()-1; |
| 417 | |
| 418 | _next_row = std::max(0, _next_row); |
| 419 | _next_row = std::min(LAST_ROW, _next_row); |
| 420 | |
| 421 | const double TIME_DIFFERENCE_THRESHOLD = 0.01; |
| 422 | |
| 423 | // move forward as long as timestamp difference is small. |
| 424 | while( _next_row < LAST_ROW -1 && |
| 425 | (_transitions[_next_row+1].timestamp - _transitions[_next_row].timestamp) < TIME_DIFFERENCE_THRESHOLD ) |
| 426 | { |
| 427 | _next_row++; |
| 428 | } |
| 429 | |
| 430 | onRowChanged( _next_row ); |
| 431 | updatedSpinAndSlider( _next_row ); |
| 432 | ui->tableView->scrollTo( _table_model->index(_next_row,0), QAbstractItemView::EnsureVisible ); |
| 433 | |
| 434 | if( _next_row == LAST_ROW) |
| 435 | { |
| 436 | ui->pushButtonPlay->setChecked(false); |
| 437 | return; |
| 438 | } |
| 439 | |
| 440 | const double prev_time = _transitions[_next_row].timestamp; |
| 441 | const double next_time = _transitions[_next_row+1].timestamp; |
| 442 | int delay_relative = (next_time - prev_time) * 1000; |
| 443 | |
| 444 | _next_row++; |
| 445 | //qDebug() << "delay_relative " << delay_relative << " next_row " << _next_row << "\n"; |
| 446 | |
| 447 | _play_timer->start(delay_relative); |
| 448 | } |
| 449 | |
| 450 | void SidepanelReplay::on_lineEditFilter_textChanged(const QString &filter_text) |
| 451 | { |
nothing calls this directly
no outgoing calls
no test coverage detected