+
+void SamplingBar::update_sample_rate_selector()
+{
+ const sr_dev_inst *const sdi = get_selected_device();
+ const struct sr_samplerates *samplerates;
+
+ assert(_sample_rate_value_action);
+ assert(_sample_rate_list_action);
+
+ if (sr_info_get(sdi->driver, SR_DI_SAMPLERATES,
+ (const void **)&samplerates, sdi) != SR_OK)
+ return;
+
+ _sample_rate_list_action->setVisible(false);
+ _sample_rate_value_action->setVisible(false);
+
+ if (samplerates->step)
+ {
+ _sample_rate_value.setRange(
+ samplerates->low, samplerates->high);
+ _sample_rate_value.setSingleStep(samplerates->step);
+ _sample_rate_value_action->setVisible(true);
+ }
+ else
+ {
+ _sample_rate_list.clear();
+ for (const uint64_t *rate = samplerates->list;
+ *rate; rate++)
+ _sample_rate_list.addItem(
+ sr_samplerate_string(*rate),
+ qVariantFromValue(*rate));
+ _sample_rate_list.show();
+ _sample_rate_list_action->setVisible(true);
+ }
+}
+
+void SamplingBar::on_device_selected()
+{
+ update_sample_rate_selector();
+}