kwave  18.07.70
Kwave::RecordDialog Class Reference

#include <RecordDialog.h>

Inheritance diagram for Kwave::RecordDialog:
Inheritance graph
Collaboration diagram for Kwave::RecordDialog:
Collaboration graph

Public Types

enum  Mode { SETTINGS_DEFAULT = 0, SETTINGS_FORMAT, SETTINGS_SOURCE, START_RECORDING }
 

Public Slots

void setDevice (const QString &device)
 
void setFileFilter (const QString &filter)
 
void setRecordedSamples (sample_index_t samples_recorded)
 
void message (const QString &message)
 

Signals

void sigMethodChanged (Kwave::record_method_t method)
 
void sigDeviceChanged (const QString &device)
 
void sigTracksChanged (unsigned int tracks)
 
void sampleRateChanged (double rate)
 
void sigCompressionChanged (Kwave::Compression::Type compression)
 
void sigBitsPerSampleChanged (unsigned int bits)
 
void sigSampleFormatChanged (Kwave::SampleFormat::Format sample_format)
 
void sigBuffersChanged ()
 
void sigRecordTimeChanged (int limit)
 
void sigTriggerChanged (bool enabled)
 
void sigPreRecordingChanged (bool enabled)
 

Public Member Functions

 RecordDialog (QWidget *parent, QStringList &params, Kwave::RecordController *controller, Mode mode)
 
virtual ~RecordDialog ()
 
Kwave::RecordParamsparams ()
 
void setMethod (Kwave::record_method_t method)
 
void setSupportedDevices (QStringList devices)
 
void setSupportedTracks (unsigned int min, unsigned int max)
 
void setTracks (unsigned int tracks)
 
void setSupportedSampleRates (const QList< double > &rates)
 
void setSampleRate (double new_rate)
 
void setSupportedCompressions (const QList< Kwave::Compression::Type > &comps)
 
void setCompression (int compression)
 
void setSupportedBits (const QList< unsigned int > &bits)
 
void setBitsPerSample (unsigned int bits)
 
QString rate2string (double rate) const
 
void setSupportedSampleFormats (const QList< Kwave::SampleFormat::Format > &formats)
 
void setSampleFormat (Kwave::SampleFormat::Format sample_format)
 
void updateBufferState (unsigned int count, unsigned int total)
 
void updateEffects (unsigned int track, Kwave::SampleArray &buffer)
 
void showDevicePage ()
 

Private Slots

void methodSelected (int index)
 
void sourceBufferCountChanged (int value)
 
void sourceBufferSizeChanged (int value)
 
void selectRecordDevice ()
 
void listEntrySelected (QTreeWidgetItem *current, QTreeWidgetItem *previous)
 
void listItemExpanded (QTreeWidgetItem *item)
 
void updateListSelection ()
 
void tracksChanged (int tracks)
 
void sampleRateChanged (const QString &rate)
 
void compressionChanged (int index)
 
void bitsPerSampleChanged (int bits)
 
void sampleFormatChanged (int index)
 
void setState (Kwave::RecordState state)
 
void updateBufferProgressBar ()
 
void preRecordingChecked (bool enabled)
 
void preRecordingTimeChanged (int time)
 
void recordTimeChecked (bool limited)
 
void recordTimeChanged (int record_time)
 
void startTimeChecked (bool enabled)
 
void startTimeChanged (const QDateTime &datetime)
 
void triggerChecked (bool enabled)
 
void triggerChanged (int trigger)
 
void invokeHelp ()
 

Private Member Functions

double string2rate (const QString &rate) const
 
void updateRecordButton ()
 

Private Attributes

Kwave::RecordTypesMap m_methods_map
 
QString m_file_filter
 
QMap< QTreeWidgetItem *, QString > m_devices_list_map
 
Kwave::RecordState m_state
 
Kwave::RecordParams m_params
 
QList< unsigned int > m_supported_resolutions
 
unsigned int m_buffer_progress_count
 
unsigned int m_buffer_progress_total
 
QTimer m_buffer_progress_timer
 
bool m_record_enabled
 
sample_index_t m_samples_recorded
 
bool m_enable_setDevice
 
Kwave::StatusWidgetm_state_icon_widget
 
struct {
   QLabel *   m_state
 
   QLabel *   m_time
 
   QLabel *   m_sample_rate
 
   QLabel *   m_bits_per_sample
 
   QLabel *   m_tracks
 
m_status_bar
 

Detailed Description

Definition at line 49 of file RecordDialog.h.

Member Enumeration Documentation

◆ Mode

Enumerator
SETTINGS_DEFAULT 

default page (setup, tab 0)

SETTINGS_FORMAT 

format settings

SETTINGS_SOURCE 

source settings

START_RECORDING 

directly start recording!

Definition at line 55 of file RecordDialog.h.

Constructor & Destructor Documentation

◆ RecordDialog()

Kwave::RecordDialog::RecordDialog ( QWidget *  parent,
QStringList &  params,
Kwave::RecordController controller,
Mode  mode 
)

Constructor

Definition at line 90 of file RecordDialog.cpp.

References _, bitsPerSampleChanged(), Kwave::RecordParams::buffer_count, Kwave::RecordParams::buffer_size, compressionChanged(), Kwave::connect(), Kwave::TypesMap< IDX, DATA >::count(), Kwave::TypesMap< IDX, DATA >::description(), Kwave::RecordParams::fromList(), invokeHelp(), listEntrySelected(), listItemExpanded(), m_buffer_progress_timer, m_methods_map, m_params, m_state_icon_widget, m_status_bar, methodSelected(), preRecordingChecked(), preRecordingTimeChanged(), Kwave::REC_EMPTY, recordTimeChanged(), recordTimeChecked(), sampleFormatChanged(), sampleRateChanged(), selectRecordDevice(), setDevice(), setState(), SETTINGS_DEFAULT, SETTINGS_FORMAT, SETTINGS_SOURCE, sourceBufferCountChanged(), sourceBufferSizeChanged(), START_RECORDING, Kwave::RecordParams::start_time, Kwave::RecordParams::start_time_enabled, startTimeChanged(), startTimeChecked(), STD_SETUP, STD_SETUP_SLIDER, tracksChanged(), triggerChanged(), triggerChecked(), updateBufferProgressBar(), and updateListSelection().

93  :QDialog(parent), Ui::RecordDlg(), m_methods_map(),
99  m_enable_setDevice(true), m_state_icon_widget(Q_NULLPTR)
100 {
101  m_status_bar.m_state = Q_NULLPTR;
102  m_status_bar.m_time = Q_NULLPTR;
103  m_status_bar.m_sample_rate = Q_NULLPTR;
104  m_status_bar.m_bits_per_sample = Q_NULLPTR;
105  m_status_bar.m_tracks = Q_NULLPTR;
106 
107  setupUi(this);
108 
109  /* get initial parameters */
111 
112  /* set the icons of the record control buttons */
113  btNew->setIcon( QIcon::fromTheme(_("document-new")));
114  btStop->setIcon( QIcon::fromTheme(_("kwave_player_stop")));
115  btPause->setIcon( QIcon::fromTheme(_("kwave_player_pause")));
116  btRecord->setIcon(QIcon::fromTheme(_("kwave_player_record")));
117 
118  // fill the combo box with playback methods
119  unsigned int index=0;
120  for (index = 0; index < m_methods_map.count(); ++index) {
121  cbMethod->addItem(m_methods_map.description(index, true));
122  }
123  cbMethod->setEnabled(cbMethod->count() > 1);
124 
125  /* --- set up all controls with their default/startup values --- */
126 
127  // pre-record
128  STD_SETUP_SLIDER(pre_record_enabled, pre_record_time, RecordPre);
129  connect(chkRecordPre, SIGNAL(toggled(bool)),
130  this, SLOT(preRecordingChecked(bool)));
131  connect(sbRecordPre, SIGNAL(valueChanged(int)),
132  this, SLOT(preRecordingTimeChanged(int)));
133 
134  // record time (duration)
135  STD_SETUP(record_time_limited, record_time, RecordTime);
136 
137  // start time (date & time)
138  chkRecordStartTime->setChecked(m_params.start_time_enabled);
139  startTime->setDateTime(m_params.start_time);
140 
141  // record trigger
142  STD_SETUP_SLIDER(record_trigger_enabled, record_trigger, RecordTrigger);
143 
144  // amplification
145  STD_SETUP_SLIDER(amplification_enabled, amplification, LevelAmplify);
146 
147  // AGC
148  STD_SETUP_SLIDER(agc_enabled, agc_decay, LevelAGC);
149 
150  // fade in
151  STD_SETUP(fade_in_enabled, fade_in_time, LevelFadeIn);
152 
153  // fade out
154  STD_SETUP(fade_out_enabled, fade_out_time, LevelFadeOut);
155 
156  // sample rate, bits per sample, track
157  // -> will be initialized later, by the plugin
158 
159  // number of buffers
160  slSourceBufferCount->setValue(m_params.buffer_count);
161 
162  // power of buffer size
163  slSourceBufferSize->setValue(m_params.buffer_size);
165 
166  // after this point all controls have their initial values
167 
168  /* --- connect some missing low level GUI functionality --- */
169 
170  connect(cbMethod, SIGNAL(activated(int)),
171  this, SLOT(methodSelected(int)));
172 
173  // record buffer size and count
174  slSourceBufferCount->setValue(m_params.buffer_count);
175  slSourceBufferSize->setValue(m_params.buffer_size);
176  connect(slSourceBufferSize, SIGNAL(valueChanged(int)),
177  this, SLOT(sourceBufferSizeChanged(int)));
178  connect(slSourceBufferCount, SIGNAL(valueChanged(int)),
179  this, SLOT(sourceBufferCountChanged(int)));
180 
181  // device treeview
182  connect(listDevices,
183  SIGNAL(currentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)),
184  SLOT(listEntrySelected(QTreeWidgetItem*,QTreeWidgetItem*)));
185  connect(listDevices, SIGNAL(itemExpanded(QTreeWidgetItem*)),
186  SLOT(listItemExpanded(QTreeWidgetItem*)));
187  connect(listDevices, SIGNAL(focusLost()),
188  SLOT(updateListSelection()));
189 
190  // "select device..." button
191  connect(btSourceSelect, SIGNAL(clicked()),
192  this, SLOT(selectRecordDevice()));
193  connect(cbDevice, SIGNAL(activated(QString)),
194  this, SLOT(setDevice(QString)));
195 
196  // setup controls
197  connect(chkRecordTime, SIGNAL(toggled(bool)),
198  this, SLOT(recordTimeChecked(bool)));
199  connect(sbRecordTime, SIGNAL(valueChanged(int)),
200  this, SLOT(recordTimeChanged(int)));
201 
202  connect(chkRecordStartTime, SIGNAL(toggled(bool)),
203  this, SLOT(startTimeChecked(bool)));
204  connect(startTime, SIGNAL(dateTimeChanged(QDateTime)),
205  this, SLOT(startTimeChanged(QDateTime)));
206 
207  connect(chkRecordTrigger, SIGNAL(toggled(bool)),
208  this, SLOT(triggerChecked(bool)));
209  connect(sbRecordTrigger, SIGNAL(valueChanged(int)),
210  this, SLOT(triggerChanged(int)));
211 
212  connect(cbFormatSampleRate, SIGNAL(editTextChanged(QString)),
213  this, SLOT(sampleRateChanged(QString)));
214  connect(cbFormatSampleRate, SIGNAL(activated(QString)),
215  this, SLOT(sampleRateChanged(QString)));
216 
217  connect(sbFormatTracks, SIGNAL(valueChanged(int)),
218  this, SLOT(tracksChanged(int)));
219 
220  connect(cbFormatCompression, SIGNAL(activated(int)),
221  this, SLOT(compressionChanged(int)));
222 
223  connect(sbFormatResolution, SIGNAL(valueChanged(int)),
224  this, SLOT(bitsPerSampleChanged(int)));
225 
226  connect(cbFormatSampleFormat, SIGNAL(activated(int)),
227  this, SLOT(sampleFormatChanged(int)));
228 
229  // connect the buttons to the record controller
230  connect(btNew, SIGNAL(clicked()),
231  controller, SLOT(actionReset()));
232  connect(btStop, SIGNAL(clicked()),
233  controller, SLOT(actionStop()));
234  connect(btPause, SIGNAL(clicked()),
235  controller, SLOT(actionPause()));
236  connect(btRecord, SIGNAL(clicked()),
237  controller, SLOT(actionStart()));
238 
239  // stop recording when the window gets closed
240  connect(this, SIGNAL(rejected()), controller, SLOT(actionStop()));
241  connect(this, SIGNAL(accepted()), controller, SLOT(actionStop()));
242 
243  // connect the notifications/commands of the record controller
244  connect(controller, SIGNAL(stateChanged(Kwave::RecordState)),
245  this, SLOT(setState(Kwave::RecordState)));
246 
247  // timer for updating the buffer progress bar
248  connect(&m_buffer_progress_timer, SIGNAL(timeout()),
249  this, SLOT(updateBufferProgressBar()));
250 
251  // help button
252  connect(buttonBox->button(QDialogButtonBox::Help), SIGNAL(clicked()),
253  this, SLOT(invokeHelp()));
254 
255  // status bar
257  Q_ASSERT(m_state_icon_widget);
258  if (!m_state_icon_widget) return;
259 
260  m_state_icon_widget->setFixedSize(16, 16);
261  lbl_state->addWidget(m_state_icon_widget);
262 
263  m_status_bar.m_state = new (std::nothrow) QLabel(_(" "));
264  Q_ASSERT(m_status_bar.m_state);
265  if (!m_status_bar.m_state) return;
266  m_status_bar.m_state->setAlignment(Qt::AlignLeft | Qt::AlignVCenter);
267  lbl_state->addWidget(m_status_bar.m_state);
268 
269  m_status_bar.m_time = new (std::nothrow) QLabel(_(" "));
270  Q_ASSERT(m_status_bar.m_time);
271  if (!m_status_bar.m_time) return;
272  m_status_bar.m_time->setAlignment(Qt::AlignLeft | Qt::AlignVCenter);
273  lbl_state->addWidget(m_status_bar.m_time);
274 
275  m_status_bar.m_sample_rate = new (std::nothrow) QLabel(_(" "));
276  Q_ASSERT(m_status_bar.m_sample_rate);
277  if (!m_status_bar.m_sample_rate) return;
278  m_status_bar.m_sample_rate->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
279  lbl_state->addWidget(m_status_bar.m_sample_rate);
280 
281  m_status_bar.m_bits_per_sample = new (std::nothrow) QLabel(_(" "));
282  Q_ASSERT(m_status_bar.m_bits_per_sample);
283  if (!m_status_bar.m_bits_per_sample) return;
284  m_status_bar.m_bits_per_sample->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
285  lbl_state->addWidget(m_status_bar.m_bits_per_sample);
286 
287  m_status_bar.m_tracks = new (std::nothrow) QLabel(_(" "));
288  Q_ASSERT(m_status_bar.m_tracks);
289  if (!m_status_bar.m_tracks) return;
290  m_status_bar.m_tracks->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
291  lbl_state->addWidget(m_status_bar.m_tracks);
292 
293  m_state_icon_widget->setFixedSize(16, lbl_state->childrenRect().height());
294 
295  // set the initial state of the dialog to "Reset/Empty"
297 
298  // disable the "level" tab, it is not implemented yet
299  tabRecord->setCurrentIndex(1);
300  QWidget *page = tabRecord->currentWidget();
301  tabRecord->setCurrentIndex(0);
302  if (page) delete page;
303 
304  // add the "Done" button manually, otherwise it would have "Cancel" semantic
305  QPushButton *bt_done =
306  buttonBox->addButton(i18n("&Done"), QDialogButtonBox::AcceptRole);
307  Q_ASSERT(bt_done);
308  if (!bt_done) return;
309  connect(bt_done, SIGNAL(clicked(bool)), this, SLOT(accept()));
310 
311  switch (mode)
312  {
314  tabRecord->setCurrentIndex(1);
315  break;
317  tabRecord->setCurrentIndex(2);
318  break;
319  case Kwave::RecordDialog::START_RECORDING: /* FALLTHROUGH */
320  case Kwave::RecordDialog::SETTINGS_DEFAULT: /* FALLTHROUGH */
321  default:
322  tabRecord->setCurrentIndex(0);
323  // set the focus onto the "Record" button
324  btRecord->setFocus();
325  break;
326  }
327 }
void bitsPerSampleChanged(int bits)
void recordTimeChecked(bool limited)
void setState(Kwave::RecordState state)
unsigned int count() const
Definition: TypesMap.h:81
struct Kwave::RecordDialog::@16 m_status_bar
Kwave::StatusWidget * m_state_icon_widget
Definition: RecordDialog.h:349
QString description(IDX type, bool localized) const
Definition: TypesMap.h:128
void sourceBufferSizeChanged(int value)
QMap< QTreeWidgetItem *, QString > m_devices_list_map
Definition: RecordDialog.h:315
QTimer m_buffer_progress_timer
Definition: RecordDialog.h:333
sample_index_t m_samples_recorded
Definition: RecordDialog.h:343
void preRecordingTimeChanged(int time)
Kwave::RecordParams m_params
Definition: RecordDialog.h:321
void tracksChanged(int tracks)
bool connect(Kwave::StreamObject &source, const char *output, Kwave::StreamObject &sink, const char *input)
Definition: Connect.cpp:48
Kwave::RecordTypesMap m_methods_map
Definition: RecordDialog.h:309
unsigned int m_buffer_progress_total
Definition: RecordDialog.h:330
#define STD_SETUP(enabled, property, control)
void preRecordingChecked(bool enabled)
void sampleFormatChanged(int index)
void startTimeChecked(bool enabled)
void listItemExpanded(QTreeWidgetItem *item)
unsigned int m_buffer_progress_count
Definition: RecordDialog.h:327
QList< unsigned int > m_supported_resolutions
Definition: RecordDialog.h:324
void triggerChanged(int trigger)
void sampleRateChanged(double rate)
void listEntrySelected(QTreeWidgetItem *current, QTreeWidgetItem *previous)
Kwave::RecordParams & params()
void sourceBufferCountChanged(int value)
void triggerChecked(bool enabled)
#define _(m)
Definition: memcpy.c:66
void setDevice(const QString &device)
QDateTime start_time
Definition: RecordParams.h:84
#define STD_SETUP_SLIDER(enabled, property, control)
void startTimeChanged(const QDateTime &datetime)
unsigned int buffer_count
Definition: RecordParams.h:108
void compressionChanged(int index)
virtual int fromList(const QStringList &list)
Kwave::RecordState m_state
Definition: RecordDialog.h:318
RecordState
Definition: RecordState.h:25
void methodSelected(int index)
void recordTimeChanged(int record_time)
unsigned int buffer_size
Definition: RecordParams.h:109
Here is the call graph for this function:

◆ ~RecordDialog()

Kwave::RecordDialog::~RecordDialog ( )
virtual

Destructor

Definition at line 330 of file RecordDialog.cpp.

References updateBufferState().

331 {
332  updateBufferState(0,0);
333 }
void updateBufferState(unsigned int count, unsigned int total)
Here is the call graph for this function:

Member Function Documentation

◆ bitsPerSampleChanged

void Kwave::RecordDialog::bitsPerSampleChanged ( int  bits)
privateslot

called when the resolution in bits per sample has changed

Definition at line 890 of file RecordDialog.cpp.

References Kwave::RecordParams::bits_per_sample, m_params, m_supported_resolutions, and sigBitsPerSampleChanged().

Referenced by RecordDialog().

891 {
892  if (bits < 1) return; // no device
893  int last = m_params.bits_per_sample;
894  if (bits == last) return;
895 
896  // round up or down to the next supported resolution in bits per sample
897  if (!m_supported_resolutions.isEmpty()) {
898  if (bits > last) {
899  // step up to the next supported value
900  QListIterator<unsigned int> it(m_supported_resolutions);
901  while (it.hasNext()) {
902  bits = it.next();
903  if (bits > last) break;
904  }
905  if (bits < last) bits = m_supported_resolutions.last();
906  } else {
907  // step down to the next supported value
908  QListIterator<unsigned int> it(m_supported_resolutions);
909  it.toBack();
910  while (it.hasPrevious()) {
911  bits = it.previous();
912  if (bits < last) break;
913  }
914  if (bits > last) bits = m_supported_resolutions.first();
915  }
916  }
917 
918  m_params.bits_per_sample = bits;
919 
920  if (sbFormatResolution && (bits != sbFormatResolution->value()))
921  sbFormatResolution->setValue(bits);
922 
923  emit sigBitsPerSampleChanged(bits);
924 }
unsigned int bits_per_sample
Definition: RecordParams.h:105
Kwave::RecordParams m_params
Definition: RecordDialog.h:321
void sigBitsPerSampleChanged(unsigned int bits)
QList< unsigned int > m_supported_resolutions
Definition: RecordDialog.h:324
Here is the caller graph for this function:

◆ compressionChanged

void Kwave::RecordDialog::compressionChanged ( int  index)
privateslot

called when a new compression type has been set

Definition at line 846 of file RecordDialog.cpp.

References Kwave::RecordParams::compression, Kwave::Compression::fromInt(), m_params, and sigCompressionChanged().

Referenced by RecordDialog().

847 {
849  cbFormatCompression->itemData(index).toInt());
850  if (compression != m_params.compression)
851  emit sigCompressionChanged(compression);
852 }
static Kwave::Compression::Type fromInt(int i)
Definition: Compression.cpp:78
Kwave::RecordParams m_params
Definition: RecordDialog.h:321
Kwave::Compression::Type compression
Definition: RecordParams.h:104
void sigCompressionChanged(Kwave::Compression::Type compression)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ invokeHelp

void Kwave::RecordDialog::invokeHelp ( )
privateslot

invoke the online help

Definition at line 1345 of file RecordDialog.cpp.

References _.

Referenced by RecordDialog().

1346 {
1347  KHelpClient::invokeHelp(_("recording"));
1348 }
#define _(m)
Definition: memcpy.c:66
Here is the caller graph for this function:

◆ listEntrySelected

void Kwave::RecordDialog::listEntrySelected ( QTreeWidgetItem *  current,
QTreeWidgetItem *  previous 
)
privateslot

selection in the device list view has changed

Definition at line 511 of file RecordDialog.cpp.

References m_devices_list_map, and setDevice().

Referenced by RecordDialog().

513 {
514  Q_ASSERT(listDevices);
515  Q_UNUSED(previous);
516  if (!current || !listDevices) return;
517 
518  if (m_devices_list_map.contains(current))
519  setDevice(m_devices_list_map[current]);
520 }
QMap< QTreeWidgetItem *, QString > m_devices_list_map
Definition: RecordDialog.h:315
void setDevice(const QString &device)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ listItemExpanded

void Kwave::RecordDialog::listItemExpanded ( QTreeWidgetItem *  item)
privateslot

selection in the device list view has changed

Definition at line 523 of file RecordDialog.cpp.

References updateListSelection().

Referenced by RecordDialog().

524 {
525  Q_UNUSED(item);
527 }
Here is the call graph for this function:
Here is the caller graph for this function:

◆ message

void Kwave::RecordDialog::message ( const QString &  message)
slot

show a message in the status bar

Definition at line 1351 of file RecordDialog.cpp.

Referenced by Kwave::RecordPlugin::notice().

1352 {
1353  if (lbl_state) lbl_state->showMessage(message, 3000);
1354 }
void message(const QString &message)
Here is the caller graph for this function:

◆ methodSelected

void Kwave::RecordDialog::methodSelected ( int  index)
privateslot

called when a new recording method has been selected from the combo box

Parameters
indexthe position within the combo box

Definition at line 350 of file RecordDialog.cpp.

References Kwave::TypesMap< IDX, DATA >::data(), m_methods_map, m_params, Kwave::RecordParams::method, Kwave::RECORD_INVALID, Kwave::RECORD_NONE, setMethod(), and sigMethodChanged().

Referenced by RecordDialog().

351 {
352  Kwave::record_method_t method = m_methods_map.data(index);
353 // qDebug("RecordDialog::methodSelected(%d) - %d", index, (int)method);
354 
355  Q_ASSERT(method > Kwave::RECORD_NONE);
356  Q_ASSERT(method < Kwave::RECORD_INVALID);
357  if (method <= Kwave::RECORD_NONE) return;
358  if (method >= Kwave::RECORD_INVALID) return;
359 
360  if (method != m_params.method) {
361  setMethod(method);
362  emit sigMethodChanged(method);
363  }
364 }
DATA data(IDX type) const
Definition: TypesMap.h:110
Kwave::RecordParams m_params
Definition: RecordDialog.h:321
Kwave::RecordTypesMap m_methods_map
Definition: RecordDialog.h:309
record_method_t
Definition: RecordParams.h:37
void setMethod(Kwave::record_method_t method)
void sigMethodChanged(Kwave::record_method_t method)
Kwave::record_method_t method
Definition: RecordParams.h:75
Here is the call graph for this function:
Here is the caller graph for this function:

◆ params()

◆ preRecordingChecked

void Kwave::RecordDialog::preRecordingChecked ( bool  enabled)
privateslot

prerecording has been enabled/disabled

Definition at line 1227 of file RecordDialog.cpp.

References m_params, Kwave::RecordParams::pre_record_enabled, and sigPreRecordingChanged().

Referenced by RecordDialog().

1228 {
1229  m_params.pre_record_enabled = enabled;
1230  emit sigPreRecordingChanged(enabled);
1231 }
Kwave::RecordParams m_params
Definition: RecordDialog.h:321
void sigPreRecordingChanged(bool enabled)
Here is the caller graph for this function:

◆ preRecordingTimeChanged

void Kwave::RecordDialog::preRecordingTimeChanged ( int  time)
privateslot

the prerecording time has been changed

Definition at line 1234 of file RecordDialog.cpp.

References m_params, and Kwave::RecordParams::pre_record_time.

Referenced by RecordDialog().

1235 {
1236  m_params.pre_record_time = time;
1237 }
unsigned int pre_record_time
Definition: RecordParams.h:78
Kwave::RecordParams m_params
Definition: RecordDialog.h:321
Here is the caller graph for this function:

◆ rate2string()

QString Kwave::RecordDialog::rate2string ( double  rate) const

Convert a sample rate into a string, using current locale settings. Trailing zeroes and thousands separators are removed, the precision is set to three digits.

Parameters
ratesample rate [samples/second]
Returns
the rate formatted as string

Definition at line 642 of file RecordDialog.cpp.

References _.

Referenced by Kwave::RecordPlugin::changeSampleRate(), setSampleRate(), and setSupportedSampleRates().

643 {
644  QLocale locale;
645  const QString dot = locale.decimalPoint();
646  const QString tsep = locale.groupSeparator();
647 
648  // format number with 3 digits
649  QString s = locale.toString(rate, 'f', 3);
650 
651  // remove thousands separator (looks ugly)
652  s.remove(tsep);
653 
654  // remove trailing zeroes
655  while (s.endsWith(_("0"))) s.remove(s.length()-1, 1);
656 
657  // remove decimal point if necessary
658  if (s.endsWith(dot)) s.remove(s.length()-1, 1);
659 
660  return s;
661 }
#define _(m)
Definition: memcpy.c:66
Here is the caller graph for this function:

◆ recordTimeChanged

void Kwave::RecordDialog::recordTimeChanged ( int  record_time)
privateslot

record time has been changed

Definition at line 1247 of file RecordDialog.cpp.

References m_params, Kwave::RecordParams::record_time, sigRecordTimeChanged(), and updateRecordButton().

Referenced by RecordDialog().

1248 {
1249  m_params.record_time = limit;
1250  emit sigRecordTimeChanged(chkRecordTime->isChecked() ?
1251  limit : -1);
1253 }
Kwave::RecordParams m_params
Definition: RecordDialog.h:321
unsigned int record_time
Definition: RecordParams.h:81
void sigRecordTimeChanged(int limit)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ recordTimeChecked

void Kwave::RecordDialog::recordTimeChecked ( bool  limited)
privateslot

record time has been enabled/disabled

Definition at line 1240 of file RecordDialog.cpp.

References m_params, Kwave::RecordParams::record_time_limited, and sigRecordTimeChanged().

Referenced by RecordDialog().

1241 {
1242  m_params.record_time_limited = limited;
1243  emit sigRecordTimeChanged(limited ? sbRecordTime->value() : -1);
1244 }
Kwave::RecordParams m_params
Definition: RecordDialog.h:321
void sigRecordTimeChanged(int limit)
Here is the caller graph for this function:

◆ sampleFormatChanged

void Kwave::RecordDialog::sampleFormatChanged ( int  index)
privateslot

called when a new sample format has been selected

Definition at line 969 of file RecordDialog.cpp.

References Kwave::SampleFormat::fromInt(), m_params, Kwave::RecordParams::sample_format, and sigSampleFormatChanged().

Referenced by RecordDialog().

970 {
971  Q_ASSERT(cbFormatSampleFormat);
972  if (!cbFormatSampleFormat) return;
973 
974  Kwave::SampleFormat format;
975  format.fromInt(cbFormatSampleFormat->itemData(index).toInt());
976 
977  if (format == m_params.sample_format) return;
978 
979  emit sigSampleFormatChanged(format);
980 }
Kwave::RecordParams m_params
Definition: RecordDialog.h:321
void sigSampleFormatChanged(Kwave::SampleFormat::Format sample_format)
Kwave::SampleFormat::Format sample_format
Definition: RecordParams.h:106
Here is the call graph for this function:
Here is the caller graph for this function:

◆ sampleRateChanged [1/2]

void Kwave::RecordDialog::sampleRateChanged ( double  rate)
signal

emitted when a new sample rate has been selected

Referenced by RecordDialog(), and sampleRateChanged().

Here is the caller graph for this function:

◆ sampleRateChanged [2/2]

void Kwave::RecordDialog::sampleRateChanged ( const QString &  rate)
privateslot

called when another sample rate has been selected

Definition at line 791 of file RecordDialog.cpp.

References m_params, Kwave::RecordParams::sample_rate, sampleRateChanged(), and string2rate().

792 {
793  if (!rate.length()) return; // no rate selected, combo box clear
794  double sample_rate = string2rate(rate);
795  if (qFuzzyCompare(sample_rate, m_params.sample_rate)) return;
796 
797  m_params.sample_rate = sample_rate;
798  emit sampleRateChanged(sample_rate);
799 }
Kwave::RecordParams m_params
Definition: RecordDialog.h:321
void sampleRateChanged(double rate)
double string2rate(const QString &rate) const
Here is the call graph for this function:

◆ selectRecordDevice

void Kwave::RecordDialog::selectRecordDevice ( )
privateslot

show a "file open" dialog for selecting a record device

Definition at line 612 of file RecordDialog.cpp.

References _, Kwave::RecordParams::device_name, m_enable_setDevice, m_params, Kwave::FileDialog::OpenFile, Kwave::FileDialog::selectUrl(), and sigDeviceChanged().

Referenced by RecordDialog().

613 {
614  if (!m_enable_setDevice) return;
615 
616  QString filter;
617  filter += _("dsp*|") + i18n("OSS record device (dsp*)");
618  filter += _("\nadsp*|") + i18n("ALSA record device (adsp*)");
619  filter += _("\n*|") + i18n("Any device (*)");
620 
621  QPointer<Kwave::FileDialog> dlg = new(std::nothrow) Kwave::FileDialog(
622  _("kfiledialog:///kwave_record_device"),
623  Kwave::FileDialog::OpenFile, filter, this,
624  QUrl(_("file:/dev"))
625  );
626  if (!dlg) return;
627  dlg->setWindowTitle(i18n("Select Record Device"));
628  if (!m_params.device_name.startsWith(_("#")))
629  dlg->selectUrl(QUrl(_("file:") + m_params.device_name));
630  else
631  dlg->selectUrl(QUrl(_("file:/dev/*")));
632  if (dlg->exec() == QDialog::Accepted) {
633  // selected new device
634  QString new_device = dlg->selectedUrl().path();
635  if (new_device != m_params.device_name)
636  emit sigDeviceChanged(new_device);
637  }
638  delete dlg;
639 }
void selectUrl(const QUrl &url)
Definition: FileDialog.cpp:271
void sigDeviceChanged(const QString &device)
Kwave::RecordParams m_params
Definition: RecordDialog.h:321
#define _(m)
Definition: memcpy.c:66
Here is the call graph for this function:
Here is the caller graph for this function:

◆ setBitsPerSample()

void Kwave::RecordDialog::setBitsPerSample ( unsigned int  bits)

sets a new resolution in bits per sample

Definition at line 871 of file RecordDialog.cpp.

References Kwave::RecordParams::bits_per_sample, m_params, m_status_bar, and m_supported_resolutions.

Referenced by Kwave::RecordPlugin::changeBitsPerSample().

872 {
873  Q_ASSERT(sbFormatResolution);
874  Q_ASSERT(m_status_bar.m_bits_per_sample);
875  if (!sbFormatResolution || !m_status_bar.m_bits_per_sample) return;
876 
877  if (!bits ) {
878  sbFormatResolution->setEnabled(false);
879  return;
880  } else {
881  sbFormatResolution->setEnabled(m_supported_resolutions.count() > 1);
882  m_params.bits_per_sample = bits;
883  }
884 
885  m_status_bar.m_bits_per_sample->setText(i18n("%1 bit", bits));
886  sbFormatResolution->setValue(bits);
887 }
unsigned int bits_per_sample
Definition: RecordParams.h:105
struct Kwave::RecordDialog::@16 m_status_bar
Kwave::RecordParams m_params
Definition: RecordDialog.h:321
QList< unsigned int > m_supported_resolutions
Definition: RecordDialog.h:324
Here is the caller graph for this function:

◆ setCompression()

void Kwave::RecordDialog::setCompression ( int  compression)

sets a new compression type

Parameters
compressiontype of the compression, numeric
See also
Kwave::Compression

Definition at line 827 of file RecordDialog.cpp.

References Kwave::RecordParams::compression, Kwave::Compression::fromInt(), m_params, and Kwave::Compression::name().

Referenced by Kwave::RecordPlugin::changeCompression().

828 {
829  Q_ASSERT(cbFormatCompression);
830  if (!cbFormatCompression) return;
831 
832  if (compression < 0) {
833  cbFormatCompression->setEnabled(false);
834  return;
835  } else {
836  bool have_choice = (cbFormatCompression->count() > 1);
837  cbFormatCompression->setEnabled(have_choice);
839  }
840 
841  const Kwave::Compression comp(Kwave::Compression::fromInt(compression));
842  cbFormatCompression->setCurrentItem(comp.name(), true);
843 }
static Kwave::Compression::Type fromInt(int i)
Definition: Compression.cpp:78
Kwave::RecordParams m_params
Definition: RecordDialog.h:321
Kwave::Compression::Type compression
Definition: RecordParams.h:104
Here is the call graph for this function:
Here is the caller graph for this function:

◆ setDevice

void Kwave::RecordDialog::setDevice ( const QString &  device)
slot

selects a new record device

Definition at line 537 of file RecordDialog.cpp.

References Kwave::RecordParams::device_name, m_devices_list_map, m_params, and sigDeviceChanged().

Referenced by listEntrySelected(), RecordDialog(), Kwave::RecordPlugin::setDevice(), and updateListSelection().

538 {
539  Q_ASSERT(cbDevice);
540  Q_ASSERT(listDevices);
541  if (!cbDevice || !listDevices) return;
542 
543  bool device_changed = (device != m_params.device_name);
544  m_params.device_name = device;
545 // qDebug("RecordDialog::setDevice(%s)", device.local8Bit().data());
546 
547  if (listDevices->isEnabled()) {
548  // treeview mode
549  QTreeWidgetItem *node = m_devices_list_map.key(device, Q_NULLPTR);
550  if (node) {
551  node->setSelected(true);
552  listDevices->scrollToItem(node);
553  listDevices->setCurrentItem(node);
554  }
555  } else if (cbDevice->isEditable() && device.length()) {
556  // user defined device name
557  if (!device.isEmpty() && (cbDevice->currentText() != device)) {
558  cbDevice->setCurrentIndex(cbDevice->findText(device));
559  cbDevice->setEditText(device);
560  }
561  } else {
562  // just take one from the list
563  if (cbDevice->findText(device) >= 0) {
564  cbDevice->setCurrentIndex(cbDevice->findText(device));
565  } else if (cbDevice->count()) {
566  cbDevice->setCurrentIndex(0);
567  }
568  }
569 
570  if (device_changed) emit sigDeviceChanged(device);
571 }
void sigDeviceChanged(const QString &device)
QMap< QTreeWidgetItem *, QString > m_devices_list_map
Definition: RecordDialog.h:315
Kwave::RecordParams m_params
Definition: RecordDialog.h:321
Here is the caller graph for this function:

◆ setFileFilter

void Kwave::RecordDialog::setFileFilter ( const QString &  filter)
slot

set the file filter used for the "Select..." dialog

Definition at line 605 of file RecordDialog.cpp.

References m_file_filter.

Referenced by Kwave::RecordPlugin::setMethod().

606 {
607  m_file_filter = filter;
608  if (btSourceSelect) btSourceSelect->setEnabled(m_file_filter.length());
609 }
Here is the caller graph for this function:

◆ setMethod()

void Kwave::RecordDialog::setMethod ( Kwave::record_method_t  method)

selects a new recording method

Definition at line 342 of file RecordDialog.cpp.

References Kwave::TypesMap< IDX, DATA >::findFromData(), m_methods_map, m_params, and Kwave::RecordParams::method.

Referenced by methodSelected(), and Kwave::RecordPlugin::setMethod().

343 {
344  m_params.method = method;
345  cbMethod->setCurrentIndex(m_methods_map.findFromData(
346  m_params.method));
347 }
Kwave::RecordParams m_params
Definition: RecordDialog.h:321
Kwave::RecordTypesMap m_methods_map
Definition: RecordDialog.h:309
Kwave::record_method_t method
Definition: RecordParams.h:75
IDX findFromData(const DATA &data) const
Definition: TypesMap.h:89
Here is the call graph for this function:
Here is the caller graph for this function:

◆ setRecordedSamples

void Kwave::RecordDialog::setRecordedSamples ( sample_index_t  samples_recorded)
slot

updates the number of recorded samples

Definition at line 1323 of file RecordDialog.cpp.

References m_samples_recorded, and updateRecordButton().

1324 {
1325  // if (!m_params.record_time_limited) return; // not of interest
1326  m_samples_recorded = samples_recorded;
1328 }
sample_index_t m_samples_recorded
Definition: RecordDialog.h:343
Here is the call graph for this function:

◆ setSampleFormat()

void Kwave::RecordDialog::setSampleFormat ( Kwave::SampleFormat::Format  sample_format)

sets a new sample format

Parameters
sample_formatformat of the samples, like signed/unsigned
See also
SampleFormat

Definition at line 948 of file RecordDialog.cpp.

References m_params, Kwave::RecordParams::sample_format, Kwave::toInt(), and Kwave::SampleFormat::Unknown.

Referenced by Kwave::RecordPlugin::changeSampleFormat().

950 {
951  Q_ASSERT(cbFormatSampleFormat);
952  if (!cbFormatSampleFormat) return;
953 
954  if (sample_format == Kwave::SampleFormat::Unknown) {
955  cbFormatSampleFormat->setEnabled(false);
956  return;
957  } else {
958  bool have_choice = (cbFormatSampleFormat->count() > 1);
959  cbFormatSampleFormat->setEnabled(have_choice);
960  m_params.sample_format = sample_format;
961  }
962 
963  int cb_index = cbFormatSampleFormat->findData(
964  Kwave::SampleFormat(sample_format).toInt());
965  cbFormatSampleFormat->setCurrentIndex(cb_index);
966 }
Kwave::RecordParams m_params
Definition: RecordDialog.h:321
int toInt(T x)
Definition: Utils.h:127
Kwave::SampleFormat::Format sample_format
Definition: RecordParams.h:106
Here is the call graph for this function:
Here is the caller graph for this function:

◆ setSampleRate()

void Kwave::RecordDialog::setSampleRate ( double  new_rate)

sets a new sample rate

Parameters
new_ratethe new sample rate [samples/second]

Definition at line 769 of file RecordDialog.cpp.

References m_params, m_status_bar, rate2string(), and Kwave::RecordParams::sample_rate.

Referenced by Kwave::RecordPlugin::changeSampleRate().

770 {
771  Q_ASSERT(cbFormatSampleRate);
772  Q_ASSERT(m_status_bar.m_sample_rate);
773  if (!cbFormatSampleRate || !m_status_bar.m_sample_rate) return;
774 
775  if (new_rate <= 0) {
776  cbFormatSampleRate->setEnabled(false);
777  return;
778  } else {
779  bool have_choice = (cbFormatSampleRate->count() > 1);
780  cbFormatSampleRate->setEnabled(have_choice);
781  m_params.sample_rate = new_rate;
782  }
783 
784  QString rate;
785  rate = rate2string(new_rate);
786  cbFormatSampleRate->setCurrentItem(rate, true);
787  m_status_bar.m_sample_rate->setText(i18n("%1 Hz", rate));
788 }
struct Kwave::RecordDialog::@16 m_status_bar
QString rate2string(double rate) const
Kwave::RecordParams m_params
Definition: RecordDialog.h:321
Here is the call graph for this function:
Here is the caller graph for this function:

◆ setState

void Kwave::RecordDialog::setState ( Kwave::RecordState  state)
privateslot

sets a new state of the dialog, enable/disable controls etc...

Definition at line 983 of file RecordDialog.cpp.

References _, Kwave::RecordParams::device_name, m_params, m_record_enabled, m_state, m_state_icon_widget, m_status_bar, Kwave::REC_BUFFERING, Kwave::REC_DONE, Kwave::REC_EMPTY, Kwave::REC_PAUSED, Kwave::REC_PRERECORDING, Kwave::REC_RECORDING, Kwave::REC_UNINITIALIZED, Kwave::REC_WAITING_FOR_TRIGGER, Kwave::StatusWidget::setPixmaps(), and updateRecordButton().

Referenced by RecordDialog().

984 {
985  Q_ASSERT(m_status_bar.m_state);
986  if (!m_status_bar.m_state) return;
987 
988  bool enable_new = false;
989  bool enable_pause = false;
990  bool enable_stop = false;
991  bool enable_record = false;
992  bool enable_settings = false;
993  bool enable_trigger = false;
994  QString state_text = _("");
995  QVector<QPixmap> pixmaps;
996  unsigned int animation_time = 500;
997 
998  m_state = state;
999  switch (state) {
1001  state_text = i18n("Please check the source device settings...");
1002  enable_new = true;
1003  enable_pause = false;
1004  enable_stop = false;
1005  enable_record = false;
1006  enable_settings = true;
1007  enable_trigger = true;
1008  pixmaps.push_back(QPixmap(stop_hand_xpm));
1009  pixmaps.push_back(QPixmap(ledred_xpm));
1010  m_status_bar.m_time->setText(_(""));
1011  break;
1012  case Kwave::REC_EMPTY:
1013  state_text = i18n("(empty)");
1014  enable_new = true;
1015  enable_pause = false;
1016  enable_stop = false;
1017  enable_record = m_params.device_name.length();
1018  enable_settings = true;
1019  enable_trigger = true;
1020  pixmaps.push_back(QPixmap(ledgreen_xpm));
1021  m_status_bar.m_time->setText(_(""));
1022  break;
1023  case Kwave::REC_BUFFERING:
1024  state_text = i18n("Buffering...");
1025  enable_new = true; /* throw away current FIFO content */
1026  enable_pause = false;
1027  enable_stop = true;
1028  enable_record = true; /* acts as "trigger now" */
1029  enable_settings = false;
1030  enable_trigger = true;
1031  pixmaps.push_back(QPixmap(ledgreen_xpm));
1032  pixmaps.push_back(QPixmap(ledlightgreen_xpm));
1033  break;
1035  state_text = i18n("Prerecording...");
1036  enable_new = false;
1037  enable_pause = false;
1038  enable_stop = true;
1039  enable_record = true;
1040  enable_settings = false;
1041  enable_trigger = true;
1042  pixmaps.push_back(QPixmap(ledgreen_xpm));
1043  pixmaps.push_back(QPixmap(ledlightgreen_xpm));
1044  break;
1046  state_text = i18n("Waiting for trigger...");
1047  enable_new = false;
1048  enable_pause = false;
1049  enable_stop = true;
1050  enable_record = true; /* acts as "trigger now" */
1051  enable_settings = false;
1052  enable_trigger = true;
1053  pixmaps.push_back(QPixmap(ledgreen_xpm));
1054  pixmaps.push_back(QPixmap(ledlightgreen_xpm));
1055  break;
1056  case Kwave::REC_RECORDING:
1057  state_text = i18n("Recording...");
1058  enable_new = false;
1059  enable_pause = true;
1060  enable_stop = true;
1061  enable_record = false;
1062  enable_settings = false;
1063  enable_trigger = false;
1064  pixmaps.push_back(QPixmap(walk_r1_xpm));
1065  pixmaps.push_back(QPixmap(walk_r2_xpm));
1066  pixmaps.push_back(QPixmap(walk_r3_xpm));
1067  pixmaps.push_back(QPixmap(walk_r4_xpm));
1068  pixmaps.push_back(QPixmap(walk_r5_xpm));
1069  pixmaps.push_back(QPixmap(walk_r6_xpm));
1070  pixmaps.push_back(QPixmap(walk_r7_xpm));
1071  pixmaps.push_back(QPixmap(walk_r8_xpm));
1072  animation_time = 100;
1073  break;
1074  case Kwave::REC_PAUSED:
1075  state_text = i18n("Paused");
1076  enable_new = true; /* start again */
1077  enable_pause = true; /* used for "continue" */
1078  enable_stop = true;
1079  enable_record = true; /* used for "continue" */
1080  enable_settings = false;
1081  enable_trigger = false;
1082  pixmaps.push_back(QPixmap(ledgreen_xpm));
1083  pixmaps.push_back(QPixmap(ledyellow_xpm));
1084  break;
1085  case Kwave::REC_DONE:
1086  state_text = i18n("Done");
1087  enable_new = true;
1088  enable_pause = false;
1089  enable_stop = false;
1090  enable_record = true;
1091  enable_settings = true;
1092  enable_trigger = true;
1093  pixmaps.push_back(QPixmap(ok_xpm));
1094  break;
1095  }
1096  m_status_bar.m_state->setText(state_text);
1097  m_state_icon_widget->setPixmaps(pixmaps, animation_time);
1098 
1099  // enable/disable the record control buttons
1100  btNew->setEnabled(enable_new);
1101  btPause->setEnabled(enable_pause);
1102  btStop->setEnabled(enable_stop);
1103  m_record_enabled = enable_record;
1105 
1106  // enable disable all controls (groups) for setup
1107  chkRecordPre->setEnabled(enable_settings);
1108  sbRecordPre->setEnabled(enable_settings &&
1109  chkRecordPre->isChecked());
1110  slRecordPre->setEnabled(enable_settings &&
1111  chkRecordPre->isChecked());
1112 
1113  chkRecordStartTime->setEnabled(enable_settings);
1114  chkRecordTime->setEnabled(enable_settings);
1115  sbRecordTime->setEnabled(enable_settings &&
1116  chkRecordTime->isChecked());
1117  chkRecordTrigger->setEnabled(enable_settings);
1118 
1119  // it is not really necessary to disable these ;-)
1120  sbRecordTrigger->setEnabled(enable_trigger &&
1121  chkRecordTrigger->isChecked());
1122  slRecordTrigger->setEnabled(enable_trigger &&
1123  chkRecordTrigger->isChecked());
1124  startTime->setEnabled(enable_settings &&
1125  chkRecordStartTime->isChecked());
1126 
1127  grpFormat->setEnabled(enable_settings);
1128  grpSource->setEnabled(enable_settings);
1129 
1130 }
void setPixmaps(const QVector< QPixmap > &pixmaps, unsigned int speed=150)
struct Kwave::RecordDialog::@16 m_status_bar
Kwave::StatusWidget * m_state_icon_widget
Definition: RecordDialog.h:349
Kwave::RecordParams m_params
Definition: RecordDialog.h:321
#define _(m)
Definition: memcpy.c:66
Kwave::RecordState m_state
Definition: RecordDialog.h:318
Here is the call graph for this function:
Here is the caller graph for this function:

◆ setSupportedBits()

void Kwave::RecordDialog::setSupportedBits ( const QList< unsigned int > &  bits)

sets a list of supported number of bits per sample

Definition at line 855 of file RecordDialog.cpp.

References m_supported_resolutions.

Referenced by Kwave::RecordPlugin::changeBitsPerSample().

856 {
857  Q_ASSERT(sbFormatResolution);
858  if (!sbFormatResolution) return;
859 
861  if (bits.count()) {
862  sbFormatResolution->setMinimum(bits.first());
863  sbFormatResolution->setMaximum(bits.last());
864  }
865 
866  // enable only if there is a choice
867  sbFormatResolution->setEnabled(bits.count() > 1);
868 }
QList< unsigned int > m_supported_resolutions
Definition: RecordDialog.h:324
Here is the caller graph for this function:

◆ setSupportedCompressions()

void Kwave::RecordDialog::setSupportedCompressions ( const QList< Kwave::Compression::Type > &  comps)

sets the list of supported compressions

Parameters
compslist of supported compressions, can be empty

Definition at line 802 of file RecordDialog.cpp.

References Kwave::Compression::name(), Kwave::Compression::NONE, and Kwave::Compression::toInt().

Referenced by Kwave::RecordPlugin::changeCompression().

805 {
806  Q_ASSERT(cbFormatCompression);
807  if (!cbFormatCompression) return;
808 
809  cbFormatCompression->clear();
810 
811  if (comps.isEmpty()) {
812  // no compressions -> add "none" manually
814  cbFormatCompression->addItem(comp.name());
815  } else {
816  foreach (Kwave::Compression::Type c, comps) {
817  const Kwave::Compression comp(c);
818  cbFormatCompression->addItem(comp.name(), comp.toInt());
819  }
820  }
821 
822  bool have_choice = (cbFormatCompression->count() > 1);
823  cbFormatCompression->setEnabled(have_choice);
824 }
Here is the call graph for this function:
Here is the caller graph for this function:

◆ setSupportedDevices()

void Kwave::RecordDialog::setSupportedDevices ( QStringList  devices)

Sets the list of supported devices, just entries for the device selection combo box.

Definition at line 367 of file RecordDialog.cpp.

References _, Kwave::RecordParams::device_name, m_devices_list_map, m_enable_setDevice, and m_params.

Referenced by Kwave::RecordPlugin::setMethod().

368 {
369 // qDebug("RecordDialog::setSupportedDevices(QStringList devices)");
370  Q_ASSERT(cbDevice);
371  Q_ASSERT(listDevices);
372  if (!cbDevice || !listDevices) return;
373  QString current_device = m_params.device_name;
374 
375  // disable all that noisy stuff that comes from modifying the
376  // device controls...
377  m_enable_setDevice = false;
378 
379  KIconLoader *icon_loader = KIconLoader::global();
380 
381  cbDevice->clearEditText();
382  cbDevice->clear();
383  listDevices->clear();
384 
385  if (devices.contains(_("#EDIT#"))) {
386  devices.removeAll(_("#EDIT#"));
387  cbDevice->setEditable(true);
388  } else {
389  cbDevice->setEditable(false);
390  }
391 
392  if (devices.contains(_("#SELECT#"))) {
393  devices.removeAll(_("#SELECT#"));
394  btSourceSelect->setEnabled(true);
395  btSourceSelect->show();
396  } else {
397  btSourceSelect->setEnabled(false);
398  btSourceSelect->hide();
399  }
400 
401  if (devices.contains(_("#TREE#"))) {
402  // treeview mode
403  devices.removeAll(_("#TREE#"));
404  listDevices->setEnabled(true);
405  cbDevice->setEnabled(false);
406  cbDevice->hide();
407  m_devices_list_map.clear();
408 
409  // build a tree with all nodes in the list
410  foreach (QString dev_id, devices) {
411  QTreeWidgetItem *parent = Q_NULLPTR;
412 
413  QStringList list = dev_id.split(_("||"), QString::KeepEmptyParts);
414  foreach (QString token, list) {
415  QTreeWidgetItem *item = Q_NULLPTR;
416 
417  // split the icon name from the token
418  QString icon_name;
419  int pos = token.indexOf(QLatin1Char('|'));
420  if (pos > 0) {
421  icon_name = token.mid(pos+1);
422  token = token.left(pos);
423  }
424 
425  // find the first item with the same text
426  // and the same root
427  if (parent) {
428  for (int i = 0; i < parent->childCount(); i++) {
429  QTreeWidgetItem *node = parent->child(i);
430  if (node && node->text(0) == token) {
431  item = node;
432  break;
433  }
434  }
435  } else {
436  QList<QTreeWidgetItem *> matches =
437  listDevices->findItems(token, Qt::MatchExactly);
438  if (matches.count())
439  item = matches.takeFirst();
440  }
441 
442  if (item) {
443  // already in the list
444  parent = item;
445  } else if (parent) {
446  // new leaf, add to the parent
447  item = new QTreeWidgetItem(parent);
448  Q_ASSERT(item);
449  if (item) {
450  item->setText(0, token);
451  m_devices_list_map.insert(item, dev_id);
452  }
453 
454  parent->setExpanded(true);
455  parent->setFlags(parent->flags() &
456  ~(Qt::ItemIsUserCheckable | Qt::ItemIsSelectable));
457  if (m_devices_list_map.contains(parent)) {
458  // make the parent not selectable
459  m_devices_list_map.remove(parent);
460  }
461  } else {
462  // new root node
463  item = new QTreeWidgetItem(listDevices);
464  Q_ASSERT(item);
465  if (item) {
466  item->setText(0, token);
467  m_devices_list_map.insert(item, dev_id);
468  }
469  }
470 
471  if (item && icon_name.length() && icon_loader) {
472  QIcon icon = icon_loader->loadIcon(
473  icon_name, KIconLoader::User);
474  item->setIcon(0, icon);
475  }
476 
477  // use the current item as parent for the next pass
478  parent = item;
479  }
480  }
481  } else {
482  // combo box mode
483  cbDevice->addItems(devices);
484  cbDevice->show();
485  listDevices->setEnabled(false);
486 
487  if (devices.contains(current_device)) {
488  // current device is in the list
489  cbDevice->setCurrentIndex(cbDevice->findText(current_device));
490  } else {
491  if (cbDevice->isEditable() && current_device.length()) {
492  // user defined device name
493  cbDevice->setEditText(current_device);
494  } else if (devices.count()) {
495  // one or more other possibilities -> take the first one
496  cbDevice->setCurrentIndex(0);
497  } else {
498  // empty list of possibilities
499  cbDevice->clearEditText();
500  cbDevice->clear();
501  }
502  }
503  cbDevice->setEnabled(devices.count() > 1);
504  }
505 
506  // enable changes in the device controls again
507  m_enable_setDevice = true;
508 }
QMap< QTreeWidgetItem *, QString > m_devices_list_map
Definition: RecordDialog.h:315
Kwave::RecordParams m_params
Definition: RecordDialog.h:321
#define _(m)
Definition: memcpy.c:66
Here is the caller graph for this function:

◆ setSupportedSampleFormats()

void Kwave::RecordDialog::setSupportedSampleFormats ( const QList< Kwave::SampleFormat::Format > &  formats)

sets the list of supported sample formats

Parameters
formatslist of supported sample formats, must not be empty

Definition at line 927 of file RecordDialog.cpp.

References Kwave::TypesMap< IDX, DATA >::description(), Kwave::TypesMap< IDX, DATA >::findFromData(), and Kwave::SampleFormat::toInt().

Referenced by Kwave::RecordPlugin::changeSampleFormat().

929 {
930  Q_ASSERT(cbFormatSampleFormat);
931  if (!cbFormatSampleFormat) return;
932 
933  cbFormatSampleFormat->clear();
935  foreach (Kwave::SampleFormat::Format format, formats) {
936  int index = types.findFromData(format);
937  cbFormatSampleFormat->addItem(
938  types.description(index, true),
939  Kwave::SampleFormat(format).toInt()
940  );
941  }
942 
943  bool have_choice = (cbFormatSampleFormat->count() > 1);
944  cbFormatSampleFormat->setEnabled(have_choice);
945 }
QString description(IDX type, bool localized) const
Definition: TypesMap.h:128
int toInt() const
Definition: SampleFormat.h:70
IDX findFromData(const DATA &data) const
Definition: TypesMap.h:89
Here is the call graph for this function:
Here is the caller graph for this function:

◆ setSupportedSampleRates()

void Kwave::RecordDialog::setSupportedSampleRates ( const QList< double > &  rates)

sets the list of supported sample rates

Definition at line 748 of file RecordDialog.cpp.

References rate2string().

Referenced by Kwave::RecordPlugin::changeSampleRate().

749 {
750  Q_ASSERT(cbFormatSampleRate);
751  if (!cbFormatSampleRate) return;
752 
753  cbFormatSampleRate->clearEditText();
754  cbFormatSampleRate->setEditable(false);
755  cbFormatSampleRate->clear();
756 
757  foreach (double r, rates) {
758  QString rate = rate2string(r);
759  Q_ASSERT(rate.length());
760  if (!rate.length()) continue; // string was zero?
761  cbFormatSampleRate->addItem(rate);
762  }
763 
764  bool have_choice = (cbFormatSampleRate->count() > 1);
765  cbFormatSampleRate->setEnabled(have_choice);
766 }
QString rate2string(double rate) const
Here is the call graph for this function:
Here is the caller graph for this function:

◆ setSupportedTracks()

void Kwave::RecordDialog::setSupportedTracks ( unsigned int  min,
unsigned int  max 
)

sets the range of supported tracks

Definition at line 678 of file RecordDialog.cpp.

Referenced by Kwave::RecordPlugin::changeTracks().

680 {
681  Q_ASSERT(sbFormatTracks);
682  if (!sbFormatTracks) return;
683 
684  if ((min == max) || (!max)) {
685  sbFormatTracks->setEnabled(false);
686  return;
687  } else
688  sbFormatTracks->setEnabled(true);
689 
690  if (sbFormatTracks->value() < sbFormatTracks->minimum()) {
691  sbFormatTracks->setMaximum(max);
692  sbFormatTracks->setMinimum(min);
693  } else {
694  sbFormatTracks->setMinimum(min);
695  sbFormatTracks->setMaximum(max);
696  }
697 
698 }
Here is the caller graph for this function:

◆ setTracks()

void Kwave::RecordDialog::setTracks ( unsigned int  tracks)

sets a new number of tracks

Definition at line 701 of file RecordDialog.cpp.

References _, m_params, m_status_bar, and Kwave::RecordParams::tracks.

Referenced by Kwave::RecordPlugin::changeTracks().

702 {
703 // qDebug("+++ RecordDialog::setTracks(%u)", tracks);
704  Q_ASSERT(sbFormatTracks);
705  Q_ASSERT(m_status_bar.m_tracks);
706  if (!sbFormatTracks || !m_status_bar.m_tracks) return;
707  if (!tracks) return;
708 
709  m_params.tracks = tracks;
710  QString tracks_str;
711 
712  switch (tracks) {
713  case 1:
714  tracks_str = i18n("Mono");
715  break;
716  case 2:
717  tracks_str = i18n("Stereo");
718  break;
719  case 4:
720  tracks_str = i18n("Quadro");
721  break;
722  default:
723  tracks_str = _("");
724  }
725 
726  if (tracks_str.length()) {
727  lblTracksVerbose->setText(_("(") + tracks_str + _(")"));
728  m_status_bar.m_tracks->setText(tracks_str);
729  } else {
730  lblTracksVerbose->setText(_(""));
731  m_status_bar.m_tracks->setText(i18n("%1 tracks", tracks));
732  }
733 
734  sbFormatTracks->setValue(tracks);
735 }
struct Kwave::RecordDialog::@16 m_status_bar
Kwave::RecordParams m_params
Definition: RecordDialog.h:321
unsigned int tracks
Definition: RecordParams.h:102
#define _(m)
Definition: memcpy.c:66
Here is the caller graph for this function:

◆ showDevicePage()

void Kwave::RecordDialog::showDevicePage ( )

Show the "source" device tab, usually if the setup was not successful.

Definition at line 1357 of file RecordDialog.cpp.

Referenced by Kwave::RecordPlugin::setDevice().

1358 {
1359  if (tabRecord) tabRecord->setCurrentIndex(2);
1360 }
Here is the caller graph for this function:

◆ sigBitsPerSampleChanged

void Kwave::RecordDialog::sigBitsPerSampleChanged ( unsigned int  bits)
signal

emitted when the resoluton in bits per sample changed

Referenced by bitsPerSampleChanged().

Here is the caller graph for this function:

◆ sigBuffersChanged

void Kwave::RecordDialog::sigBuffersChanged ( )
signal

emitted when the number and/or size of buffers has changed

Referenced by sourceBufferCountChanged(), and sourceBufferSizeChanged().

Here is the caller graph for this function:

◆ sigCompressionChanged

void Kwave::RecordDialog::sigCompressionChanged ( Kwave::Compression::Type  compression)
signal

emitted when the compression has changed

Referenced by compressionChanged().

Here is the caller graph for this function:

◆ sigDeviceChanged

void Kwave::RecordDialog::sigDeviceChanged ( const QString &  device)
signal

emitted when a new record device has been selected

Referenced by selectRecordDevice(), and setDevice().

Here is the caller graph for this function:

◆ sigMethodChanged

void Kwave::RecordDialog::sigMethodChanged ( Kwave::record_method_t  method)
signal

emits changes in the currently selected record method

Referenced by methodSelected().

Here is the caller graph for this function:

◆ sigPreRecordingChanged

void Kwave::RecordDialog::sigPreRecordingChanged ( bool  enabled)
signal

emitted when the prerecording has been enabled/disabled

Referenced by preRecordingChecked().

Here is the caller graph for this function:

◆ sigRecordTimeChanged

void Kwave::RecordDialog::sigRecordTimeChanged ( int  limit)
signal

emitted when the record time has been changed

Referenced by recordTimeChanged(), and recordTimeChecked().

Here is the caller graph for this function:

◆ sigSampleFormatChanged

void Kwave::RecordDialog::sigSampleFormatChanged ( Kwave::SampleFormat::Format  sample_format)
signal

emitted when the sample format has changed

Referenced by sampleFormatChanged().

Here is the caller graph for this function:

◆ sigTracksChanged

void Kwave::RecordDialog::sigTracksChanged ( unsigned int  tracks)
signal

emitted when the number of tracks has changed

Referenced by tracksChanged().

Here is the caller graph for this function:

◆ sigTriggerChanged

void Kwave::RecordDialog::sigTriggerChanged ( bool  enabled)
signal

emitted when the record trigger has been enabled/disabled

Referenced by startTimeChecked(), and triggerChecked().

Here is the caller graph for this function:

◆ sourceBufferCountChanged

void Kwave::RecordDialog::sourceBufferCountChanged ( int  value)
privateslot

updates the record buffer count

Definition at line 574 of file RecordDialog.cpp.

References Kwave::RecordParams::buffer_count, m_params, and sigBuffersChanged().

Referenced by RecordDialog().

575 {
576  Q_ASSERT(value >= 4);
577  Q_ASSERT(value <= 64);
578  if (value < 4) value = 4;
579  if (value > 64) value = 64;
580 
581  // take the value into our struct
582  m_params.buffer_count = value;
583  emit sigBuffersChanged();
584 }
Kwave::RecordParams m_params
Definition: RecordDialog.h:321
unsigned int buffer_count
Definition: RecordParams.h:108
Here is the caller graph for this function:

◆ sourceBufferSizeChanged

void Kwave::RecordDialog::sourceBufferSizeChanged ( int  value)
privateslot

updates the record buffer size

Definition at line 587 of file RecordDialog.cpp.

References Kwave::RecordParams::buffer_size, m_params, and sigBuffersChanged().

Referenced by RecordDialog().

588 {
589  Q_ASSERT(value >= 10);
590  Q_ASSERT(value <= 18);
591  if (value < 10) value = 10;
592  if (value > 18) value = 18;
593 
594  // take the value into our struct
595  m_params.buffer_size = value;
596 
597  // update the text
598  unsigned int buffer_size = (1 << value);
599  txtSourceBuffer->setText(i18n("%1 samples", buffer_size));
600 
601  emit sigBuffersChanged();
602 }
Kwave::RecordParams m_params
Definition: RecordDialog.h:321
unsigned int buffer_size
Definition: RecordParams.h:109
Here is the caller graph for this function:

◆ startTimeChanged

void Kwave::RecordDialog::startTimeChanged ( const QDateTime &  datetime)
privateslot

start time has been changed

Definition at line 1263 of file RecordDialog.cpp.

References m_params, and Kwave::RecordParams::start_time.

Referenced by RecordDialog().

1264 {
1265  m_params.start_time = datetime;
1266 
1267  // force seconds to zero
1268  QTime t = m_params.start_time.time();
1269  t.setHMS(t.hour(), t.minute(), 0, 0);
1270  m_params.start_time.setTime(t);
1271 }
Kwave::RecordParams m_params
Definition: RecordDialog.h:321
QDateTime start_time
Definition: RecordParams.h:84
Here is the caller graph for this function:

◆ startTimeChecked

void Kwave::RecordDialog::startTimeChecked ( bool  enabled)
privateslot

start time has been enabled/disabled

Definition at line 1256 of file RecordDialog.cpp.

References m_params, Kwave::RecordParams::record_trigger_enabled, sigTriggerChanged(), and Kwave::RecordParams::start_time_enabled.

Referenced by RecordDialog().

1257 {
1258  m_params.start_time_enabled = enabled;
1260 }
Kwave::RecordParams m_params
Definition: RecordDialog.h:321
void sigTriggerChanged(bool enabled)
Here is the caller graph for this function:

◆ string2rate()

double Kwave::RecordDialog::string2rate ( const QString &  rate) const
private

Convert a formated sample rate string back to a numeric sample rate (the opposite of rate2string() )

Parameters
ratethe sample rate, formatted as string
Returns
the numeric sample rate [samples/second]

Definition at line 664 of file RecordDialog.cpp.

Referenced by sampleRateChanged().

665 {
666  QLocale locale;
667  const QString s = rate;
668  double r;
669  bool ok;
670  r = locale.toDouble(rate, &ok);
671  Q_ASSERT(ok);
672  if (!ok) return s.toDouble();
673 
674  return r;
675 }
Here is the caller graph for this function:

◆ tracksChanged

void Kwave::RecordDialog::tracksChanged ( int  tracks)
privateslot

forwards a sigTracksChanged signal

Definition at line 738 of file RecordDialog.cpp.

References m_params, sigTracksChanged(), Kwave::toInt(), and Kwave::RecordParams::tracks.

Referenced by RecordDialog().

739 {
740  if (tracks < 1) return; // no device
741  if (tracks == Kwave::toInt(m_params.tracks)) return;
742 
743  m_params.tracks = tracks;
744  emit sigTracksChanged(tracks);
745 }
Kwave::RecordParams m_params
Definition: RecordDialog.h:321
void sigTracksChanged(unsigned int tracks)
int toInt(T x)
Definition: Utils.h:127
unsigned int tracks
Definition: RecordParams.h:102
Here is the call graph for this function:
Here is the caller graph for this function:

◆ triggerChanged

void Kwave::RecordDialog::triggerChanged ( int  trigger)
privateslot

record trigger has changed

Definition at line 1281 of file RecordDialog.cpp.

References m_params, and Kwave::RecordParams::record_trigger.

Referenced by RecordDialog().

1282 {
1283  m_params.record_trigger = trigger;
1284 }
Kwave::RecordParams m_params
Definition: RecordDialog.h:321
unsigned int record_trigger
Definition: RecordParams.h:87
Here is the caller graph for this function:

◆ triggerChecked

void Kwave::RecordDialog::triggerChecked ( bool  enabled)
privateslot

record trigger has been enabled/disabled

Definition at line 1274 of file RecordDialog.cpp.

References m_params, Kwave::RecordParams::record_trigger_enabled, sigTriggerChanged(), and Kwave::RecordParams::start_time_enabled.

Referenced by RecordDialog().

1275 {
1276  m_params.record_trigger_enabled = enabled;
1278 }
Kwave::RecordParams m_params
Definition: RecordDialog.h:321
void sigTriggerChanged(bool enabled)
Here is the caller graph for this function:

◆ updateBufferProgressBar

void Kwave::RecordDialog::updateBufferProgressBar ( )
privateslot

updates the buffer progress bar

Definition at line 1287 of file RecordDialog.cpp.

References m_buffer_progress_count, m_buffer_progress_timer, and m_buffer_progress_total.

Referenced by RecordDialog(), and updateBufferState().

1288 {
1289  unsigned int count = m_buffer_progress_count;
1290  unsigned int total = m_buffer_progress_total;
1291 // qDebug("RecordDialog::updateBufferProgressBar(): %u/%u",
1292 // count, total);
1293 
1294  /*
1295  * @note: QProgressBar has a bug when handling small numbers,
1296  * therefore we multiply everything by 100
1297  */
1298  progress_bar->setTextVisible(true);
1299  progress_bar->setMinimum(0);
1300  progress_bar->setMaximum(100 * total);
1301  progress_bar->setValue(100 * count);
1302 
1303  m_buffer_progress_timer.setSingleShot(true);
1304  m_buffer_progress_timer.setInterval(100);
1305  m_buffer_progress_timer.start();
1306 }
QTimer m_buffer_progress_timer
Definition: RecordDialog.h:333
unsigned int m_buffer_progress_total
Definition: RecordDialog.h:330
unsigned int m_buffer_progress_count
Definition: RecordDialog.h:327
Here is the caller graph for this function:

◆ updateBufferState()

void Kwave::RecordDialog::updateBufferState ( unsigned int  count,
unsigned int  total 
)

updates the progress bar with the buffer fill state.

Parameters
countnumber of filled/available buffers
totalmaximum amount of buffers

Definition at line 1133 of file RecordDialog.cpp.

References _, m_buffer_progress_count, m_buffer_progress_timer, m_buffer_progress_total, m_params, m_samples_recorded, m_state, m_status_bar, Kwave::ms2string(), Kwave::REC_BUFFERING, Kwave::REC_DONE, Kwave::REC_EMPTY, Kwave::REC_PAUSED, Kwave::REC_PRERECORDING, Kwave::REC_RECORDING, Kwave::REC_UNINITIALIZED, Kwave::REC_WAITING_FOR_TRIGGER, Kwave::RecordParams::sample_rate, Kwave::samples2string(), Kwave::RecordParams::start_time, Kwave::RecordParams::start_time_enabled, Kwave::toInt(), and updateBufferProgressBar().

Referenced by Kwave::RecordPlugin::stateChanged(), Kwave::RecordPlugin::updateBufferProgressBar(), and ~RecordDialog().

1135 {
1136  Q_ASSERT(progress_bar);
1137  Q_ASSERT(m_status_bar.m_state);
1138  if (!progress_bar || !m_status_bar.m_state) return;
1139 
1140  if (total == 0) {
1141  // we are done: stop update timer and reset buffer percentage
1142  m_buffer_progress_timer.stop();
1145  progress_bar->setTextVisible(false);
1146  progress_bar->setMinimum(0);
1147  progress_bar->setMaximum(100);
1148  progress_bar->setValue(0);
1149  progress_bar->reset();
1150  } else {
1151  m_buffer_progress_count = count;
1152  m_buffer_progress_total = total;
1153 
1154  if (!m_buffer_progress_timer.isActive())
1156  }
1157 
1158  // update recording time
1159  QString txt;
1160  switch (m_state) {
1162  case Kwave::REC_EMPTY:
1163  case Kwave::REC_BUFFERING:
1165  txt = _("");
1166  break;
1168  txt = _("");
1169  QString state_text;
1170  QDateTime now = QDateTime::currentDateTime();
1171  QDateTime t_start = m_params.start_time;
1172 
1173  if (m_params.start_time_enabled && (now < t_start)) {
1174  // waiting for start time to come...
1175 
1176  int s = Kwave::toInt(now.secsTo(t_start));
1177  int m = s / 60;
1178  s %= 60;
1179  int h = m / 60;
1180  m %= 60;
1181  int d = h / 24;
1182  h %= 24;
1183 
1184  QString days = (d) ?
1185  i18np("one day ", "%1 days ", d) : _("");
1186  QString hours = (h) ?
1187  i18np("one hour ", "%1 hours ", h) : _("");
1188  QString minutes = (m) ?
1189  i18np("one minute ", "%1 minutes ", m) : _("");
1190  QString seconds =
1191  (d | h | m) ?
1192  i18np("and %1 second", "and %1 seconds", s) :
1193  i18np("%1 second", "%1 seconds", s);
1194 
1195  state_text = i18nc(
1196  "%1=days; %2=hours; %3=minutes; %4=seconds",
1197  "Waiting for start in %1%2%3%4...",
1198  days, hours, minutes, seconds);
1199  } else {
1200  // waiting for trigger...
1201  state_text = i18n("Waiting for trigger...");
1202  }
1203  m_status_bar.m_state->setText(state_text);
1204 
1205  break;
1206  }
1207  case Kwave::REC_RECORDING:
1208  case Kwave::REC_PAUSED:
1209  case Kwave::REC_DONE: {
1210  if (m_samples_recorded > 1) {
1211  double rate = m_params.sample_rate;
1212  double ms = (rate > 0) ?
1213  ((static_cast<double>(m_samples_recorded) / rate) * 1E3)
1214  : 0;
1215  txt = _(" ") +
1216  i18n("Length: %1", Kwave::ms2string(ms)) +
1217  _(" ") + i18n("(%1 samples)",
1219  } else txt = _("");
1220  break;
1221  }
1222  }
1223  m_status_bar.m_time->setText(txt);
1224 }
struct Kwave::RecordDialog::@16 m_status_bar
QString Q_DECL_EXPORT ms2string(double ms, int precision=6)
Definition: Utils.cpp:66
QString Q_DECL_EXPORT samples2string(sample_index_t samples)
Definition: Utils.cpp:98
QTimer m_buffer_progress_timer
Definition: RecordDialog.h:333
sample_index_t m_samples_recorded
Definition: RecordDialog.h:343
Kwave::RecordParams m_params
Definition: RecordDialog.h:321
unsigned int m_buffer_progress_total
Definition: RecordDialog.h:330
int toInt(T x)
Definition: Utils.h:127
unsigned int m_buffer_progress_count
Definition: RecordDialog.h:327
#define _(m)
Definition: memcpy.c:66
QDateTime start_time
Definition: RecordParams.h:84
Kwave::RecordState m_state
Definition: RecordDialog.h:318
Here is the call graph for this function:
Here is the caller graph for this function:

◆ updateEffects()

void Kwave::RecordDialog::updateEffects ( unsigned int  track,
Kwave::SampleArray buffer 
)

updates all enabled visual effects

Parameters
trackindex of the track that is updated
bufferarray with Kwave sample data

Definition at line 1309 of file RecordDialog.cpp.

References m_params, Kwave::RecordParams::sample_rate, Kwave::SampleArray::size(), and Kwave::RecordParams::tracks.

Referenced by Kwave::RecordPlugin::processBuffer().

1311 {
1312  if (!buffer.size()) return;
1313 
1314  if (level_meter) {
1315  level_meter->setTracks(m_params.tracks);
1316  level_meter->setSampleRate(m_params.sample_rate);
1317  level_meter->updateTrack(track, buffer);
1318  }
1319 
1320 }
Kwave::RecordParams m_params
Definition: RecordDialog.h:321
unsigned int tracks
Definition: RecordParams.h:102
unsigned int size() const
Here is the call graph for this function:
Here is the caller graph for this function:

◆ updateListSelection

void Kwave::RecordDialog::updateListSelection ( )
privateslot

updates/fixes the device selection when the tree view has lost focus, to avoid that nothing is selected

Definition at line 530 of file RecordDialog.cpp.

References Kwave::RecordParams::device_name, m_params, and setDevice().

Referenced by listItemExpanded(), and RecordDialog().

531 {
532  // set the current device again, otherwise nothing will be selected
534 }
Kwave::RecordParams m_params
Definition: RecordDialog.h:321
void setDevice(const QString &device)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ updateRecordButton()

void Kwave::RecordDialog::updateRecordButton ( )
private

enabled or disables the record button by evaluating m_record_enabled and m_seconds_recording

Definition at line 1331 of file RecordDialog.cpp.

References m_params, m_record_enabled, m_samples_recorded, Kwave::RecordParams::record_time, Kwave::RecordParams::record_time_limited, and Kwave::RecordParams::sample_rate.

Referenced by recordTimeChanged(), setRecordedSamples(), and setState().

1332 {
1333  bool old_enable = btRecord->isEnabled();
1334  bool new_enable;
1335 
1336  // enabled if not disabled by status and also not limited or
1337  // less than the limit has been recorded
1338  new_enable = m_record_enabled && (!m_params.record_time_limited ||
1340 
1341  if (new_enable != old_enable) btRecord->setEnabled(new_enable);
1342 }
sample_index_t m_samples_recorded
Definition: RecordDialog.h:343
Kwave::RecordParams m_params
Definition: RecordDialog.h:321
unsigned int record_time
Definition: RecordParams.h:81
Here is the caller graph for this function:

Member Data Documentation

◆ m_bits_per_sample

QLabel* Kwave::RecordDialog::m_bits_per_sample

status bar id: number of tracks

Definition at line 355 of file RecordDialog.h.

◆ m_buffer_progress_count

unsigned int Kwave::RecordDialog::m_buffer_progress_count
private

accumulated current buffer progress

Definition at line 327 of file RecordDialog.h.

Referenced by updateBufferProgressBar(), and updateBufferState().

◆ m_buffer_progress_timer

QTimer Kwave::RecordDialog::m_buffer_progress_timer
private

timer for slowly updating the buffer progress bar

Definition at line 333 of file RecordDialog.h.

Referenced by RecordDialog(), updateBufferProgressBar(), and updateBufferState().

◆ m_buffer_progress_total

unsigned int Kwave::RecordDialog::m_buffer_progress_total
private

accumulated total buffer progress

Definition at line 330 of file RecordDialog.h.

Referenced by updateBufferProgressBar(), and updateBufferState().

◆ m_devices_list_map

QMap<QTreeWidgetItem *, QString> Kwave::RecordDialog::m_devices_list_map
private

map for items in the list view

Definition at line 315 of file RecordDialog.h.

Referenced by listEntrySelected(), setDevice(), and setSupportedDevices().

◆ m_enable_setDevice

bool Kwave::RecordDialog::m_enable_setDevice
private

if false, do nothing in setDevice

Definition at line 346 of file RecordDialog.h.

Referenced by selectRecordDevice(), and setSupportedDevices().

◆ m_file_filter

QString Kwave::RecordDialog::m_file_filter
private

file filter for the "Select..." dialog (optional)

Definition at line 312 of file RecordDialog.h.

Referenced by setFileFilter().

◆ m_methods_map

Kwave::RecordTypesMap Kwave::RecordDialog::m_methods_map
private

map of playback methods/types

Definition at line 309 of file RecordDialog.h.

Referenced by methodSelected(), RecordDialog(), and setMethod().

◆ m_params

◆ m_record_enabled

bool Kwave::RecordDialog::m_record_enabled
private

determines if recording is to be enabled by the current state

Definition at line 336 of file RecordDialog.h.

Referenced by setState(), and updateRecordButton().

◆ m_sample_rate

QLabel* Kwave::RecordDialog::m_sample_rate

status bar id: sample rate

Definition at line 354 of file RecordDialog.h.

◆ m_samples_recorded

sample_index_t Kwave::RecordDialog::m_samples_recorded
private

holds the recorded samples for comparing with the recording time limit, for determining if recording should be enabled or not. Also used in status bar for displaying the recorded time.

Definition at line 343 of file RecordDialog.h.

Referenced by setRecordedSamples(), updateBufferState(), and updateRecordButton().

◆ m_state [1/2]

Kwave::RecordState Kwave::RecordDialog::m_state
private

state of the record plugin

Definition at line 318 of file RecordDialog.h.

Referenced by setState(), and updateBufferState().

◆ m_state [2/2]

QLabel* Kwave::RecordDialog::m_state

status bar id: state text

Definition at line 352 of file RecordDialog.h.

◆ m_state_icon_widget

Kwave::StatusWidget* Kwave::RecordDialog::m_state_icon_widget
private

widget with a icon in the status bar

Definition at line 349 of file RecordDialog.h.

Referenced by RecordDialog(), and setState().

◆ m_status_bar

struct { ... } Kwave::RecordDialog::m_status_bar

◆ m_supported_resolutions

QList<unsigned int> Kwave::RecordDialog::m_supported_resolutions
private

a list with supported bits per sample

Definition at line 324 of file RecordDialog.h.

Referenced by bitsPerSampleChanged(), setBitsPerSample(), and setSupportedBits().

◆ m_time

QLabel* Kwave::RecordDialog::m_time

status bar id: recorded time

Definition at line 353 of file RecordDialog.h.

◆ m_tracks

QLabel* Kwave::RecordDialog::m_tracks

status bar id: number of tracks

Definition at line 356 of file RecordDialog.h.


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