30 #include <QStandardItemModel>
33 #include <SimoxUtility/algorithm/string/string_tools.h>
37 const visionx::imrec::ChannelConfig& channel_config,
38 const visionx::imrec::ChannelPreferences& channel_prefs) :
39 QWidget(parent), m_channel_name{channel_config.name}, m_channel_prefs{channel_prefs}
41 m_widget.setupUi(
this);
43 const QString q_channel_name = QString::fromStdString(channel_config.name);
44 m_widget.channels_config->setTitle(QString{
"Channel: "} + q_channel_name);
45 m_widget.channels_config->setChecked(not channel_config.disabled);
46 m_widget.name->setText(q_channel_name);
50 m_widget.file_format->addItem(QString::fromStdString(reg_entry.hr_name));
52 const QString q_format_str =
54 m_widget.file_format->setCurrentText(q_format_str);
56 update_file_formats(channel_prefs.requiresLossless);
57 set_visible_file_fps(m_widget.file_format->currentText());
59 connect(m_widget.name, SIGNAL(textEdited(QString)),
this, SLOT(channel_name_changed(QString)));
60 connect(m_widget.file_format,
61 SIGNAL(currentTextChanged(QString)),
63 SLOT(file_format_changed(QString)));
65 m_widget.lossless->setChecked(channel_prefs.requiresLossless);
66 connect(m_widget.lossless, SIGNAL(stateChanged(
int)),
this, SLOT(lossless_state_changed(
int)));
76 return m_channel_name;
82 m_widget.channels_config->setTitle(QString::fromStdString(
"Channel: " + new_name));
83 m_channel_name = new_name;
90 ARMARX_WARNING <<
"Invalid name '" << new_name <<
"' for channel (already taken).";
96 update_file_formats(channel_prefs.requiresLossless);
99 visionx::imrec::ChannelConfig
102 imrec::ChannelConfig cc;
103 cc.name = m_channel_name;
104 cc.disabled = disabled or not m_widget.channels_config->isChecked();
108 cc.fps = m_widget.file_fps->value();
113 visionx::ChannelConfigWidget::update_file_formats(
bool require_lossless)
115 QStandardItemModel* model = qobject_cast<QStandardItemModel*>(m_widget.file_format->model());
116 for (
int i = 0; i < m_widget.file_format->count(); ++i)
118 QStandardItem* item = model->item(i);
121 item->setFlags(disabled ? item->flags() & ~Qt::ItemIsEnabled
122 : item->flags() | Qt::ItemIsEnabled);
126 if (require_lossless)
128 const std::string format_str = m_widget.file_format->currentText().toStdString();
132 const QString q_format_str =
134 m_widget.file_format->setCurrentText(q_format_str);
140 visionx::ChannelConfigWidget::set_visible_file_fps(
const QString& q_format_str)
142 const std::string format_str = q_format_str.toStdString();
148 visionx::ChannelConfigWidget::set_visible_file_fps(
bool visible)
150 m_widget.file_fps->setVisible(visible);
151 m_widget.label_file_fps->setVisible(visible);
155 visionx::ChannelConfigWidget::channel_name_changed(
const QString& q_new_name)
157 const std::string new_name = simox::alg::trim_copy(q_new_name.toStdString());
158 const std::string old_name = m_channel_name;
159 if (new_name != old_name)
161 emit channelRenamed(old_name, new_name);
166 visionx::ChannelConfigWidget::lossless_state_changed(
int state)
168 update_file_formats(state == Qt::Checked);
172 visionx::ChannelConfigWidget::file_format_changed(
const QString& new_format_str)
174 set_visible_file_fps(new_format_str);