#include "samplingbar.h"
+#include <pv/dialogs/hwcap.h>
+
namespace pv {
const uint64_t SamplingBar::RecordLengths[11] = {
SamplingBar::SamplingBar(QWidget *parent) :
QToolBar("Sampling Bar", parent),
_device_selector(this),
+ _configure_button(this),
_record_length_selector(this),
_sample_rate_list(this),
+ _icon_green(":/icons/status-green.svg"),
+ _icon_grey(":/icons/status-grey.svg"),
_run_stop_button(this)
{
- connect(&_run_stop_button, SIGNAL(clicked()), this, SIGNAL(run_stop()));
+ connect(&_run_stop_button, SIGNAL(clicked()),
+ this, SIGNAL(run_stop()));
connect(&_device_selector, SIGNAL(currentIndexChanged (int)),
this, SLOT(on_device_selected()));
+ connect(&_configure_button, SIGNAL(clicked()),
+ this, SLOT(configure()));
_sample_rate_value.setDecimals(0);
_sample_rate_value.setSuffix("Hz");
g_free(text);
}
- _run_stop_button.setText("Run");
+ set_sampling(false);
+
+ _configure_button.setIcon(QIcon::fromTheme("configure",
+ QIcon(":/icons/configure.png")));
+
+ _run_stop_button.setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
addWidget(&_device_selector);
+ addWidget(&_configure_button);
addWidget(&_record_length_selector);
_sample_rate_list_action = addWidget(&_sample_rate_list);
_sample_rate_value_action = addWidget(&_sample_rate_value);
struct sr_dev_inst* SamplingBar::get_selected_device() const
{
const int index = _device_selector.currentIndex();
- if(index < 0)
+ if (index < 0)
return NULL;
return (sr_dev_inst*)_device_selector.itemData(
uint64_t SamplingBar::get_record_length() const
{
const int index = _record_length_selector.currentIndex();
- if(index < 0)
+ if (index < 0)
return 0;
return _record_length_selector.itemData(index).value<uint64_t>();
assert(_sample_rate_value_action);
assert(_sample_rate_list_action);
- if(_sample_rate_value_action->isVisible())
+ if (_sample_rate_value_action->isVisible())
return (uint64_t)_sample_rate_value.value();
- else if(_sample_rate_list_action->isVisible())
+ else if (_sample_rate_list_action->isVisible())
{
const int index = _sample_rate_list.currentIndex();
- if(index < 0)
+ if (index < 0)
return 0;
return _sample_rate_list.itemData(index).value<uint64_t>();
return 0;
}
+void SamplingBar::set_sampling(bool sampling)
+{
+ _run_stop_button.setIcon(sampling ? _icon_green : _icon_grey);
+ _run_stop_button.setText(sampling ? "Stop" : "Run");
+}
+
void SamplingBar::update_device_selector()
{
GSList *devices = NULL;
update_sample_rate_selector();
}
+void SamplingBar::configure()
+{
+ sr_dev_inst *const sdi = get_selected_device();
+ assert(sdi);
+
+ pv::dialogs::HwCap dlg(this, sdi);
+ dlg.exec();
+}
+
} // namespace pv