Medical Imaging Interaction Toolkit  2018.4.99-389bf124
Medical Imaging Interaction Toolkit
QmitkNavigationDataPlayerControlWidget.cpp
Go to the documentation of this file.
1 /*============================================================================
2 
3 The Medical Imaging Interaction Toolkit (MITK)
4 
5 Copyright (c) German Cancer Research Center (DKFZ)
6 All rights reserved.
7 
8 Use of this source code is governed by a 3-clause BSD license that can be
9 found in the LICENSE file.
10 
11 ============================================================================*/
12 
14 #include "ui_QmitkNavigationDataPlayerControlWidget.h"
15 
16 #include <QTimer>
17 
19  QWidget(parent),
20  m_UpdateTimer(new QTimer(this)),
22 {
23  ui->setupUi(this);
24 
25  connect(m_UpdateTimer, SIGNAL(timeout()), this, SLOT(OnUpdate()));
26 }
27 
29 {
30  delete ui;
31 }
32 
33 void QmitkNavigationDataPlayerControlWidget::SetPlayer(mitk::NavigationDataPlayer::Pointer player)
34 {
35  m_Player = player;
36 
37  ui->samplePositionHorizontalSlider->setMaximum(player->GetNumberOfSnapshots()-1);
38 }
39 
41 {
42  m_UpdateTimer->stop();
43  m_Player->StopPlaying();
44 
45  ui->playPushButton->setChecked(false);
46 
47  this->ResetPlayerDisplay();
48 }
49 
51 {
52  switch ( m_Player->GetCurrentPlayerState() )
53  {
55  {
56  m_Player->StartPlaying();
57  if ( ! m_UpdateTimer->isActive() ) { m_UpdateTimer->start(10); }
58  if ( ! ui->playPushButton->isChecked() ) { ui->playPushButton->setChecked(true); }
59  break;
60  }
62  {
63  m_Player->Resume();
64  break;
65  }
67  {
68  m_Player->Pause();
69  break;
70  }
71  }
72 }
73 
75 {
76  this->OnStop();
77  this->OnPlayPause();
78 }
79 
81 {
82  m_Player->Update();
83 
84  int msc = static_cast<int>(m_Player->GetTimeStampSinceStart());
85 
86  // calculation for playing time display
87  int ms = msc % 1000;
88  msc = (msc - ms) / 1000;
89  int s = msc % 60;
90  int min = (msc-s) / 60;
91 
92  // set lcd numbers
93  ui->msecLCDNumber->display(ms);
94  ui->secLCDNumber->display(s);
95  ui->minLCDNumber->display(min);
96 
97  ui->samplePositionHorizontalSlider->setValue(static_cast<int>(m_Player->GetCurrentSnapshotNumber()));
98 
99  emit SignalUpdate();
100 
101  if ( m_Player->GetCurrentPlayerState() == mitk::NavigationDataPlayer::PlayerStopped )
102  {
103  m_UpdateTimer->stop();
104  ui->playPushButton->setChecked(false);
105 
106  emit SignalEndReached();
107  }
108 }
109 
110 void QmitkNavigationDataPlayerControlWidget::ResetPlayerDisplay()
111 {
112  // set lcd numbers
113  ui->msecLCDNumber->display(0);
114  ui->secLCDNumber->display(0);
115  ui->minLCDNumber->display(0);
116 
117  ui->samplePositionHorizontalSlider->setValue(0);
118 }
void SetPlayer(mitk::NavigationDataPlayer::Pointer player)
static T min(T x, T y)
Definition: svm.cpp:53