namespace decoder_selector {
+void QCustomTreeView::currentChanged(const QModelIndex& current,
+ const QModelIndex& previous)
+{
+ QTreeView::currentChanged(current, previous);
+ currentChanged(current);
+}
+
+
SubWindow::SubWindow(Session& session, QWidget* parent) :
SubWindowBase(session, parent),
splitter_(new QSplitter()),
- tree_view_(new QTreeView()),
+ tree_view_(new QCustomTreeView()),
info_box_(new QWidget()),
info_label_header_(new QLabel()),
info_label_body_(new QLabel()),
info_label_body_->setWordWrap(true);
info_label_body_->setText(tr("Select a decoder to see its description here."));
- connect(tree_view_, SIGNAL(clicked(const QModelIndex&)),
- this, SLOT(on_item_clicked(const QModelIndex&)));
- connect(tree_view_, SIGNAL(doubleClicked(const QModelIndex&)),
- this, SLOT(on_item_double_clicked(const QModelIndex&)));
+ connect(tree_view_, SIGNAL(currentChanged(const QModelIndex&)),
+ this, SLOT(on_item_changed(const QModelIndex&)));
+ connect(tree_view_, SIGNAL(activated(const QModelIndex&)),
+ this, SLOT(on_item_activated(const QModelIndex&)));
connect(this, SIGNAL(new_decoders_selected(vector<const srd_decoder*>)),
&session, SLOT(on_new_decoders_selected(vector<const srd_decoder*>)));
return ret_val;
}
-void SubWindow::on_item_clicked(const QModelIndex& index)
+void SubWindow::on_item_changed(const QModelIndex& index)
{
if (!index.isValid())
return;
info_label_footer_->setText(tr("<p align='right'>Tags: %1</p>").arg(tags));
}
-void SubWindow::on_item_double_clicked(const QModelIndex& index)
+void SubWindow::on_item_activated(const QModelIndex& index)
{
if (!index.isValid())
return;
};
+class QCustomTreeView : public QTreeView
+{
+ Q_OBJECT
+
+public:
+ void currentChanged(const QModelIndex& current, const QModelIndex& previous);
+
+Q_SIGNALS:
+ void currentChanged(const QModelIndex& current);
+};
+
class SubWindow : public SubWindowBase
{
Q_OBJECT
void new_decoders_selected(vector<const srd_decoder*> decoders);
public Q_SLOTS:
- void on_item_clicked(const QModelIndex& index);
- void on_item_double_clicked(const QModelIndex& index);
+ void on_item_changed(const QModelIndex& index);
+ void on_item_activated(const QModelIndex& index);
private:
QSplitter* splitter_;
- QTreeView* tree_view_;
+ QCustomTreeView* tree_view_;
QWidget* info_box_;
QLabel* info_label_header_;
QLabel* info_label_body_;