kwave  18.07.70
Kwave::SelectTimeWidget Class Reference

#include <SelectTimeWidget.h>

Inheritance diagram for Kwave::SelectTimeWidget:
Inheritance graph
Collaboration diagram for Kwave::SelectTimeWidget:
Collaboration graph

Public Types

enum  Mode { byTime = 0, bySamples, byPercents }
 

Public Slots

void setOffset (sample_index_t offset)
 

Signals

void valueChanged (sample_index_t samples)
 

Public Member Functions

 SelectTimeWidget (QWidget *widget)
 
virtual void init (Mode mode, quint64 range, double sample_rate, sample_index_t offset, sample_index_t signal_length)
 
virtual ~SelectTimeWidget ()
 
void setMode (Mode new_mode)
 
Mode mode () const
 
quint64 time () const
 
sample_index_t samples () const
 
virtual void setTitle (const QString title)
 

Static Public Member Functions

static sample_index_t timeToSamples (Mode mode, quint64 time, double rate, sample_index_t length)
 
static quint64 samplesToTime (Mode mode, sample_index_t time, double rate, sample_index_t length)
 

Private Slots

void modeChanged (bool checked)
 
void timeChanged (int)
 
void checkNewSampleEdit ()
 
void samplesChanged (int)
 
void percentsChanged (int p)
 

Private Member Functions

void connect ()
 
void disconnect ()
 

Private Attributes

Mode m_mode
 
quint64 m_range
 
double m_rate
 
sample_index_t m_offset
 
sample_index_t m_length
 
QTimer m_timer
 

Detailed Description

widget for selecting a time or range

Definition at line 37 of file SelectTimeWidget.h.

Member Enumeration Documentation

◆ Mode

possible mode of the selection

Enumerator
byTime 

range in milliseconds

bySamples 

number of samples

byPercents 

percentage of whole signal

Definition at line 44 of file SelectTimeWidget.h.

Constructor & Destructor Documentation

◆ SelectTimeWidget()

Kwave::SelectTimeWidget::SelectTimeWidget ( QWidget *  widget)
explicit

Constructor

Parameters
widgetpointer to the parent widget

Definition at line 34 of file SelectTimeWidget.cpp.

References modeChanged().

35  :QGroupBox(widget), Ui::SelectTimeWidgetBase(),
36  m_mode(bySamples), m_range(0), m_rate(1.0), m_offset(0), m_length(0),
37  m_timer(this)
38 {
39  setupUi(this);
40  modeChanged(true);
41 }
void modeChanged(bool checked)
Here is the call graph for this function:

◆ ~SelectTimeWidget()

Kwave::SelectTimeWidget::~SelectTimeWidget ( )
virtual

Destructor

Definition at line 144 of file SelectTimeWidget.cpp.

145 {
146 }

Member Function Documentation

◆ checkNewSampleEdit

void Kwave::SelectTimeWidget::checkNewSampleEdit ( )
privateslot

checks for new values in the sample edit field

Definition at line 326 of file SelectTimeWidget.cpp.

References samplesChanged().

Referenced by connect(), and disconnect().

327 {
328  static int last_samples = -1;
329  if (edSamples->value() != last_samples) {
330  last_samples = edSamples->value();
331  samplesChanged(last_samples);
332  }
333 }
Here is the call graph for this function:
Here is the caller graph for this function:

◆ connect()

void Kwave::SelectTimeWidget::connect ( )
private

connects all widgets for getting informed about changes

Definition at line 149 of file SelectTimeWidget.cpp.

References checkNewSampleEdit(), Kwave::connect(), m_timer, samplesChanged(), timeChanged(), and valueChanged().

Referenced by init(), percentsChanged(), samplesChanged(), setOffset(), and timeChanged().

150 {
151  // connect the time controls
152  QObject::connect(sbMilliseconds, SIGNAL(valueChanged(int)),
153  this, SLOT(timeChanged(int)));
154  QObject::connect(sbSeconds, SIGNAL(valueChanged(int)),
155  this, SLOT(timeChanged(int)));
156  QObject::connect(sbMinutes, SIGNAL(valueChanged(int)),
157  this, SLOT(timeChanged(int)));
158  QObject::connect(sbHours, SIGNAL(valueChanged(int)),
159  this, SLOT(timeChanged(int)));
160 
161  // connect sample count control
162  QObject::connect(edSamples, SIGNAL(valueChanged(int)),
163  this, SLOT(samplesChanged(int)));
164 
165  // connect the timer for the sample edit
166  QObject::connect(&m_timer, SIGNAL(timeout()),
167  this, SLOT(checkNewSampleEdit()));
168 
169 }
void valueChanged(sample_index_t samples)
bool connect(Kwave::StreamObject &source, const char *output, Kwave::StreamObject &sink, const char *input)
Definition: Connect.cpp:48
Here is the call graph for this function:
Here is the caller graph for this function:

◆ disconnect()

void Kwave::SelectTimeWidget::disconnect ( )
private

disconnect all widgets for avoiding recursion

Definition at line 172 of file SelectTimeWidget.cpp.

References checkNewSampleEdit(), m_timer, samplesChanged(), timeChanged(), and valueChanged().

Referenced by percentsChanged(), samplesChanged(), setOffset(), and timeChanged().

173 {
174  // disconnect the time controls
175  QObject::disconnect(sbMilliseconds, SIGNAL(valueChanged(int)),
176  this, SLOT(timeChanged(int)));
177  QObject::disconnect(sbSeconds, SIGNAL(valueChanged(int)),
178  this, SLOT(timeChanged(int)));
179  QObject::disconnect(sbMinutes, SIGNAL(valueChanged(int)),
180  this, SLOT(timeChanged(int)));
181  QObject::disconnect(sbHours, SIGNAL(valueChanged(int)),
182  this, SLOT(timeChanged(int)));
183 
184  // disconnect sample count control
185  QObject::disconnect(edSamples, SIGNAL(valueChanged(int)),
186  this, SLOT(samplesChanged(int)));
187 
188  // disconnect the timer for the sample edit
189  QObject::disconnect(&m_timer, SIGNAL(timeout()),
190  this, SLOT(checkNewSampleEdit()));
191 
192 }
void valueChanged(sample_index_t samples)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ init()

void Kwave::SelectTimeWidget::init ( Mode  mode,
quint64  range,
double  sample_rate,
sample_index_t  offset,
sample_index_t  signal_length 
)
virtual

Constructor

Parameters
modeselectionMode: byTime, bySamples, byPercents
rangelength of the selection in ms, samples or percent
sample_ratenumber of samples per second, needed for converting between samples and time
offsetstart of the selection [samples]
signal_lengthlength of the signal in samples, needed for converting samples to percentage

Definition at line 44 of file SelectTimeWidget.cpp.

References byPercents, bySamples, byTime, Kwave::connect(), connect(), m_length, m_mode, m_offset, m_range, m_rate, mode(), modeChanged(), percentsChanged(), samples(), samplesChanged(), setMode(), timeChanged(), Kwave::toInt(), and valueChanged().

47 {
48  m_mode = mode;
49  m_range = range;
50  m_rate = sample_rate;
51  m_offset = offset;
52  m_length = signal_length;
53 
54  Q_ASSERT(m_rate > 0);
55  Q_ASSERT(m_length);
56  Q_ASSERT(rbTime);
57  Q_ASSERT(rbSamples);
58  Q_ASSERT(rbPercents);
59  Q_ASSERT(m_offset < m_length);
60  if (m_rate <= 0) m_rate = 1.0;
61  if (!m_length) m_length = 1;
62 
63  // limit the length if necessary
64  if ((m_length - m_offset) > INT_MAX)
65  m_length = m_offset + INT_MAX;
66 
67  // set range of selection by sample
68  edSamples->setRange(0, Kwave::toInt(m_length - m_offset));
69  edSamples->setSingleStep(1);
70 
71  // set range of time controls
72  {
73  quint64 t = static_cast<quint64>((m_length * 1E3) / m_rate);
74  sbMilliseconds->setMaximum(Kwave::toInt(qMax(t, quint64(999))));
75  t /= 1000;
76  sbSeconds->setMaximum(Kwave::toInt(qMax(t, quint64(59))));
77  t /= 60;
78  sbMinutes->setMaximum(Kwave::toInt(qMax(t, quint64(59))));
79  t /= 60;
80  sbHours->setMaximum(Kwave::toInt(t));
81  }
82 
83  // activate the current mode
84  setMode(mode);
85  m_range = range;
86 
87  // set initial values
88  switch (m_mode) {
89  case byTime: {
90  quint64 t = m_range;
91  sbMilliseconds->setValue(Kwave::toInt(t % 1000));
92  t /= 1000;
93  sbSeconds->setValue(Kwave::toInt(t % 60));
94  t /= 60;
95  sbMinutes->setValue(Kwave::toInt(t % 60));
96  t /= 60;
97  sbHours->setValue(Kwave::toInt(t));
98  break;
99  }
100  case bySamples: {
101  quint64 samples = qMin<quint64>(m_range, INT_MAX);
102  edSamples->setValue(Kwave::toInt(samples));
103  break;
104  }
105  case byPercents: {
106  sbPercents->setValue(Kwave::toInt(m_range));
107  break;
108  }
109  }
110 
111  // connect mode controls
112  QObject::connect(rbTime, SIGNAL(toggled(bool)),
113  this, SLOT(modeChanged(bool)));
114  QObject::connect(rbSamples,SIGNAL(toggled(bool)),
115  this, SLOT(modeChanged(bool)));
116  QObject::connect(rbPercents,SIGNAL(toggled(bool)),
117  this, SLOT(modeChanged(bool)));
118 
119  connect();
120 
121  // connect percentage control
122  QObject::connect(sbPercents, SIGNAL(valueChanged(int)),
123  this, SLOT(percentsChanged(int)));
124 
125  // update all controls
126  switch (m_mode) {
127  case byTime:
128  timeChanged(0);
129  break;
130  case bySamples:
131  samplesChanged(0);
132  break;
133  case byPercents:
134  percentsChanged(Kwave::toInt(m_range));
135  break;
136  }
137 
138  adjustSize();
139  setMinimumSize(sizeHint());
140  modeChanged(true);
141 }
sample_index_t samples() const
void valueChanged(sample_index_t samples)
bool connect(Kwave::StreamObject &source, const char *output, Kwave::StreamObject &sink, const char *input)
Definition: Connect.cpp:48
void modeChanged(bool checked)
int toInt(T x)
Definition: Utils.h:127
void setMode(Mode new_mode)
Here is the call graph for this function:

◆ mode()

Mode Kwave::SelectTimeWidget::mode ( ) const
inline

Returns the current selection mode (byTime, bySamples, byPercents)

Definition at line 76 of file SelectTimeWidget.h.

Referenced by init().

76 { return m_mode; }
Here is the caller graph for this function:

◆ modeChanged

void Kwave::SelectTimeWidget::modeChanged ( bool  checked)
privateslot

called whenever one of the radio buttons changed it's state

Definition at line 222 of file SelectTimeWidget.cpp.

References byPercents, bySamples, byTime, m_mode, m_timer, percentsChanged(), samplesChanged(), and timeChanged().

Referenced by init(), and SelectTimeWidget().

223 {
224  if (!checked) return; // ignore disabling of radio buttons
225 
226  if (rbTime->isChecked()) {
227  m_mode = byTime;
228  rbSamples->setChecked(false);
229  rbPercents->setChecked(false);
230  timeChanged(0); // (sets m_range)
231  }
232 
233  if (rbSamples->isChecked()) {
234  m_mode = bySamples;
235  rbTime->setChecked(false);
236  rbPercents->setChecked(false);
237  samplesChanged(0); // (sets m_range)
238 
239  if (rbTime->isChecked()) {
240  m_timer.stop();
241  } else {
242  // activate the sample edit timer
243  m_timer.setSingleShot(false);
244  m_timer.start(100);
245  }
246 
247  }
248 
249  if (rbPercents->isChecked()) {
250  m_mode = byPercents;
251  rbTime->setChecked(false);
252  rbSamples->setChecked(false);
253  percentsChanged(sbPercents->value()); // (sets m_range)
254  }
255 
256 }
Here is the call graph for this function:
Here is the caller graph for this function:

◆ percentsChanged

void Kwave::SelectTimeWidget::percentsChanged ( int  p)
privateslot

called when percentage changed

Definition at line 373 of file SelectTimeWidget.cpp.

References byPercents, byTime, connect(), disconnect(), m_length, m_mode, m_offset, m_range, m_rate, samples(), samplesToTime(), timeToSamples(), Kwave::toInt(), and valueChanged().

Referenced by init(), and modeChanged().

374 {
375  if (m_mode != byPercents) return;
376  disconnect();
377 
378  // limit to rest of signal
379  int max_percents = 100;
380  if (m_length)
381  max_percents = Kwave::toInt(
382  (100U * static_cast<quint64>(m_length - m_offset)) /
383  static_cast<quint64>(m_length));
384  if (p > max_percents) p = max_percents;
385 
386  // update in byPercents mode [0...100]
387  m_range = p;
388 
389  if (slidePercents->value() != p) slidePercents->setValue(p);
390  if (sbPercents->value() != p) sbPercents->setValue(p);
391 
392  // update the other widgets
394  edSamples->setValue(Kwave::toInt(samples));
395 
396  quint64 t = samplesToTime(byTime, samples, m_rate, m_length);
397  sbMilliseconds->setValue(Kwave::toInt(t % 1000));
398  t /= 1000;
399  sbSeconds->setValue(Kwave::toInt(t % 60));
400  t /= 60;
401  sbMinutes->setValue(Kwave::toInt(t % 60));
402  t /= 60;
403  sbHours->setValue(Kwave::toInt(t));
404 
405  emit valueChanged(samples); // emit the change
406  connect();
407 }
sample_index_t samples() const
quint64 sample_index_t
Definition: Sample.h:28
void valueChanged(sample_index_t samples)
static quint64 samplesToTime(Mode mode, sample_index_t time, double rate, sample_index_t length)
static sample_index_t timeToSamples(Mode mode, quint64 time, double rate, sample_index_t length)
int toInt(T x)
Definition: Utils.h:127
Here is the call graph for this function:
Here is the caller graph for this function:

◆ samples()

sample_index_t Kwave::SelectTimeWidget::samples ( ) const

Returns the time in units of samples

Definition at line 458 of file SelectTimeWidget.cpp.

Referenced by init(), percentsChanged(), samplesChanged(), samplesToTime(), setOffset(), and timeChanged().

459 {
460  return (edSamples) ? edSamples->value() : 0;
461 }
Here is the caller graph for this function:

◆ samplesChanged

void Kwave::SelectTimeWidget::samplesChanged ( int  )
privateslot

called when sample count has changed

Definition at line 336 of file SelectTimeWidget.cpp.

References byPercents, bySamples, byTime, connect(), disconnect(), m_length, m_mode, m_offset, m_range, m_rate, m_timer, samples(), samplesToTime(), Kwave::toInt(), and valueChanged().

Referenced by checkNewSampleEdit(), connect(), disconnect(), init(), and modeChanged().

337 {
338  if (m_mode != bySamples) return;
339  disconnect();
340 
341  sample_index_t max_samples = m_length - m_offset;
342  sample_index_t samples = edSamples->value();
343 
344  // limit the current value
345  if (samples > max_samples) samples = max_samples;
346 
347  // update the other widgets
348  quint64 t = samplesToTime(byTime, samples, m_rate, m_length);
349  sbMilliseconds->setValue(Kwave::toInt(t % 1000));
350  t /= 1000;
351  sbSeconds->setValue(Kwave::toInt(t % 60));
352  t /= 60;
353  sbMinutes->setValue(Kwave::toInt(t % 60));
354  t /= 60;
355  sbHours->setValue(Kwave::toInt(t));
356 
357  quint64 percents = samplesToTime(byPercents, samples, m_rate, m_length);
358  sbPercents->setValue(Kwave::toInt(percents));
359 
360  // update in samples mode
361  m_range = samples;
362 
363  // re-activate the sample edit timer
364  m_timer.stop();
365  m_timer.setSingleShot(false);
366  m_timer.start(100);
367 
368  emit valueChanged(samples); // emit the change
369  connect();
370 }
sample_index_t samples() const
quint64 sample_index_t
Definition: Sample.h:28
void valueChanged(sample_index_t samples)
static quint64 samplesToTime(Mode mode, sample_index_t time, double rate, sample_index_t length)
int toInt(T x)
Definition: Utils.h:127
Here is the call graph for this function:
Here is the caller graph for this function:

◆ samplesToTime()

quint64 Kwave::SelectTimeWidget::samplesToTime ( Mode  mode,
sample_index_t  time,
double  rate,
sample_index_t  length 
)
static

Conversion from samples into time

Parameters
modetime mode (byTime, bySamples, byPercents)
timeposition in samples
ratenumber of samples per second
lengthsignal length
Returns
time converted to the given mode

Definition at line 491 of file SelectTimeWidget.cpp.

References byPercents, bySamples, byTime, samples(), and time().

Referenced by percentsChanged(), samplesChanged(), setOffset(), and timeChanged().

493 {
494  quint64 time = 0;
495 
496  switch (mode) {
498  // convert from samples to ms
499  time = static_cast<quint64>(
500  rint(static_cast<double>(samples) * 1E3 / rate));
501  break;
503  // simple case -> already in samples
504  time = samples;
505  break;
507  // by percentage of whole signal
508  time = static_cast<quint64>(100.0 *
509  static_cast<double>(samples) /
510  static_cast<double>(length));
511  break;
512  }
513 
514  return time;
515 }
sample_index_t samples() const
Here is the call graph for this function:
Here is the caller graph for this function:

◆ setMode()

void Kwave::SelectTimeWidget::setMode ( Mode  new_mode)

Sets a new selection mode

Definition at line 195 of file SelectTimeWidget.cpp.

References byPercents, bySamples, byTime, and m_mode.

Referenced by init().

196 {
197  // enable the selected mode
198  switch (new_mode) {
199  case byTime:
200  rbTime->setChecked(true);
201  Q_ASSERT(rbTime->isChecked());
202  Q_ASSERT(!rbSamples->isChecked());
203  Q_ASSERT(!rbPercents->isChecked());
204  break;
205  case bySamples:
206  rbSamples->setChecked(true);
207  Q_ASSERT(!rbTime->isChecked());
208  Q_ASSERT(rbSamples->isChecked());
209  Q_ASSERT(!rbPercents->isChecked());
210  break;
211  case byPercents:
212  rbPercents->setChecked(true);
213  Q_ASSERT(!rbTime->isChecked());
214  Q_ASSERT(!rbSamples->isChecked());
215  Q_ASSERT(rbPercents->isChecked());
216  break;
217  }
218  m_mode = new_mode;
219 }
Here is the caller graph for this function:

◆ setOffset

void Kwave::SelectTimeWidget::setOffset ( sample_index_t  offset)
slot

Sets/updates the start offset from which the selection starts. The current selection length will be reduced to fit in the available range.

Parameters
offsetindex of the first selected sample

Definition at line 416 of file SelectTimeWidget.cpp.

References bySamples, connect(), disconnect(), m_length, m_offset, m_rate, samples(), samplesToTime(), and Kwave::toInt().

417 {
418  m_offset = offset;
419  sample_index_t max_samples = m_length - m_offset;
420  sample_index_t samples = edSamples->value();
421 
422  // the range of the sample edit should always get updated
423  if (max_samples > INT_MAX)
424  max_samples = INT_MAX; // limit the length to INT_MAX
425  edSamples->setRange(0, Kwave::toInt(max_samples));
426  edSamples->setSingleStep(1);
427 
428  // no range conflict -> nothing to do
429  if (samples <= max_samples) return;
430 
431  // limit the length to the rest
432  samples = max_samples;
433 
434  // update all widgets
435  disconnect();
436 
437  quint64 t = samplesToTime(bySamples, samples, m_rate, m_length);
438  sbMilliseconds->setValue(Kwave::toInt(t % 1000));
439  t /= 1000;
440  sbSeconds->setValue(Kwave::toInt(t % 60));
441  t /= 60;
442  sbMinutes->setValue(Kwave::toInt(t % 60));
443  t /= 60;
444  sbHours->setValue(Kwave::toInt(t));
445 
446  Q_ASSERT(samples <= INT_MAX);
447  if (samples > INT_MAX) samples = INT_MAX;
448  edSamples->setValue(Kwave::toInt(samples));
449 
450  double percents = 100.0 * static_cast<double>(samples) /
451  static_cast<double>(m_length);
452  sbPercents->setValue(Kwave::toInt(percents));
453 
454  connect();
455 }
sample_index_t samples() const
quint64 sample_index_t
Definition: Sample.h:28
static quint64 samplesToTime(Mode mode, sample_index_t time, double rate, sample_index_t length)
int toInt(T x)
Definition: Utils.h:127
Here is the call graph for this function:

◆ setTitle()

void Kwave::SelectTimeWidget::setTitle ( const QString  title)
virtual

Sets the title of the, shown in the frame around the controls

Definition at line 410 of file SelectTimeWidget.cpp.

411 {
412  QGroupBox::setTitle(title);
413 }

◆ time()

quint64 Kwave::SelectTimeWidget::time ( ) const
inline

Returns the number of ms, samples or percents

Definition at line 79 of file SelectTimeWidget.h.

References Kwave::connect().

Referenced by samplesToTime(), and timeToSamples().

79 { return m_range; }
Here is the call graph for this function:
Here is the caller graph for this function:

◆ timeChanged

void Kwave::SelectTimeWidget::timeChanged ( int  )
privateslot

called whenever one of the time controls changed their value

Definition at line 259 of file SelectTimeWidget.cpp.

References byPercents, byTime, connect(), disconnect(), m_length, m_mode, m_offset, m_range, m_rate, samples(), samplesToTime(), timeToSamples(), Kwave::toInt(), and valueChanged().

Referenced by connect(), disconnect(), init(), and modeChanged().

260 {
261  if (m_mode != byTime) return;
262  disconnect();
263 
264  // get current time and correct wrap-overs
265  int milliseconds = sbMilliseconds->value();
266  int seconds = sbSeconds->value();
267  int minutes = sbMinutes->value();
268  int hours = sbHours->value();
269 
270  if (milliseconds < 0) {
271  milliseconds = 999;
272  seconds--;
273  }
274  if (seconds < 0) {
275  seconds = 59;
276  minutes--;
277  }
278  if (minutes < 0) {
279  minutes = 59;
280  hours--;
281  }
282  if (hours < 0) {
283  hours = 0;
284  minutes = 0;
285  seconds = 0;
286  milliseconds = 0;
287  }
288  Q_ASSERT((hours >= 0) && (minutes >= 0) && (seconds >= 0) &&
289  (milliseconds >= 0));
290 
291  quint64 ms = milliseconds +
292  (seconds + (minutes + (hours * 60)) * 60) * 1000;
293 
294  // limit time
295  quint64 max_ms = static_cast<quint64>(
296  ceil(((m_length - m_offset) * 1E3) / m_rate));
297  if (ms > max_ms) ms = max_ms;
298  quint64 t = ms;
299 
300  milliseconds = Kwave::toInt(t % 1000L);
301  t /= 1000L;
302  seconds = Kwave::toInt(t % 60L);
303  t /= 60L;
304  minutes = Kwave::toInt(t % 60L);
305  hours = Kwave::toInt(t / 60L);
306 
307  sbMilliseconds->setValue(milliseconds);
308  sbSeconds->setValue(seconds);
309  sbMinutes->setValue(minutes);
310  sbHours->setValue(hours);
311 
312  // update the other widgets
314  edSamples->setValue(Kwave::toInt(samples));
315  quint64 percents = samplesToTime(byPercents, samples, m_rate, m_length);
316  sbPercents->setValue(Kwave::toInt(percents));
317 
318  // set range in byTime mode [ms]
319  m_range = ms;
320 
321  emit valueChanged(samples); // emit the change
322  connect();
323 }
sample_index_t samples() const
quint64 sample_index_t
Definition: Sample.h:28
void valueChanged(sample_index_t samples)
static quint64 samplesToTime(Mode mode, sample_index_t time, double rate, sample_index_t length)
static sample_index_t timeToSamples(Mode mode, quint64 time, double rate, sample_index_t length)
int toInt(T x)
Definition: Utils.h:127
Here is the call graph for this function:
Here is the caller graph for this function:

◆ timeToSamples()

sample_index_t Kwave::SelectTimeWidget::timeToSamples ( Mode  mode,
quint64  time,
double  rate,
sample_index_t  length 
)
static

Conversion from time into samples

Parameters
modetime mode (byTime, bySamples, byPercents)
timea time, given in ms, samples or percents
ratenumber of samples per second
lengthsignal length
Returns
time converted to samples

Definition at line 464 of file SelectTimeWidget.cpp.

References byPercents, bySamples, byTime, and time().

Referenced by percentsChanged(), Kwave::ZeroPlugin::run(), Kwave::GotoPluginBase::start(), Kwave::SelectRangePlugin::start(), and timeChanged().

467 {
468  sample_index_t pos = 0;
469  switch (mode) {
471  // convert from ms to samples
472  pos = static_cast<sample_index_t>(ceil(
473  static_cast<double>(time) * (rate * 1E-3)));
474  break;
476  // simple case -> already in samples
477  pos = time;
478  break;
480  // by percentage of whole signal
481  pos = static_cast<unsigned int>(rint(
482  static_cast<double>(length * (time / 100.0))));
483  break;
484  }
485 
486  if (pos > INT_MAX) pos = INT_MAX;
487  return pos;
488 }
quint64 sample_index_t
Definition: Sample.h:28
Here is the call graph for this function:
Here is the caller graph for this function:

◆ valueChanged

void Kwave::SelectTimeWidget::valueChanged ( sample_index_t  samples)
signal

Emitted when the value has been changed

Referenced by connect(), disconnect(), init(), percentsChanged(), samplesChanged(), and timeChanged().

Here is the caller graph for this function:

Member Data Documentation

◆ m_length

sample_index_t Kwave::SelectTimeWidget::m_length
private

length of the whole signal [samples]

Definition at line 164 of file SelectTimeWidget.h.

Referenced by init(), percentsChanged(), samplesChanged(), setOffset(), and timeChanged().

◆ m_mode

Mode Kwave::SelectTimeWidget::m_mode
private

selectionMode: byTime, bySamples or byPercent

Definition at line 152 of file SelectTimeWidget.h.

Referenced by init(), modeChanged(), percentsChanged(), samplesChanged(), setMode(), and timeChanged().

◆ m_offset

sample_index_t Kwave::SelectTimeWidget::m_offset
private

start offset of the selection [samples]

Definition at line 161 of file SelectTimeWidget.h.

Referenced by init(), percentsChanged(), samplesChanged(), setOffset(), and timeChanged().

◆ m_range

quint64 Kwave::SelectTimeWidget::m_range
private

selected range in ms, samples or percent

Definition at line 155 of file SelectTimeWidget.h.

Referenced by init(), percentsChanged(), samplesChanged(), and timeChanged().

◆ m_rate

double Kwave::SelectTimeWidget::m_rate
private

sample rate [samples/second]

Definition at line 158 of file SelectTimeWidget.h.

Referenced by init(), percentsChanged(), samplesChanged(), setOffset(), and timeChanged().

◆ m_timer

QTimer Kwave::SelectTimeWidget::m_timer
private

timer that checks for changes in the sample edit

Definition at line 167 of file SelectTimeWidget.h.

Referenced by connect(), disconnect(), modeChanged(), and samplesChanged().


The documentation for this class was generated from the following files: