diff --git a/DSView/pv/dock/protocoldock.cpp b/DSView/pv/dock/protocoldock.cpp index eeb58903c..a6917a56a 100644 --- a/DSView/pv/dock/protocoldock.cpp +++ b/DSView/pv/dock/protocoldock.cpp @@ -140,6 +140,9 @@ ProtocolDock::ProtocolDock(QWidget *parent, view::View &view, SigSession *sessio _bot_set_button->setFlat(true); _bot_save_button = new QPushButton(bot_panel); _bot_save_button->setFlat(true); + _auto_scroll_button = new QPushButton(bot_panel); + _auto_scroll_button->setFlat(true); + _auto_scroll_button->setCheckable(true); _dn_nav_button = new QPushButton(bot_panel); _dn_nav_button->setFlat(true); _bot_title_label = new QLabel(bot_panel); @@ -149,6 +152,7 @@ ProtocolDock::ProtocolDock(QWidget *parent, view::View &view, SigSession *sessio bot_title_layout->addWidget(_bot_set_button); bot_title_layout->addWidget(_bot_save_button); bot_title_layout->addWidget(_bot_title_label, 1); + bot_title_layout->addWidget(_auto_scroll_button); bot_title_layout->addWidget(_dn_nav_button); _pre_button = new QPushButton(bot_panel); @@ -206,6 +210,7 @@ ProtocolDock::ProtocolDock(QWidget *parent, view::View &view, SigSession *sessio retranslateUi(); + connect(_auto_scroll_button, SIGNAL(clicked()),this, SLOT(auto_scroll())); connect(_dn_nav_button, SIGNAL(clicked()),this, SLOT(nav_table_view())); connect(_bot_save_button, SIGNAL(clicked()),this, SLOT(export_table_view())); connect(_bot_set_button, SIGNAL(clicked()),this, SLOT(set_model())); @@ -260,6 +265,7 @@ void ProtocolDock::reStyle() _del_all_button->setIcon(QIcon(iconPath+"/del.svg")); _bot_set_button->setIcon(QIcon(iconPath+"/gear.svg")); _bot_save_button->setIcon(QIcon(iconPath+"/save.svg")); + _auto_scroll_button->setIcon(QIcon(iconPath+"/loop.svg")); _dn_nav_button->setIcon(QIcon(iconPath+"/nav.svg")); _pre_button->setIcon(QIcon(iconPath+"/pre.svg")); _nxt_button->setIcon(QIcon(iconPath+"/next.svg")); @@ -522,6 +528,8 @@ void ProtocolDock::update_model() _model_proxy.setSourceModel(decoder_model); search_done(); resize_table_view(decoder_model); + + auto_scroll(); } void ProtocolDock::resize_table_view(data::DecoderModel* decoder_model) @@ -620,6 +628,14 @@ void ProtocolDock::export_table_view() protocolexp_dlg->exec(); } +void ProtocolDock::auto_scroll() +{ + if (_auto_scroll_button->isChecked()) { + _table_view->scrollToBottom(); + _table_view->clearSelection(); + } +} + void ProtocolDock::nav_table_view() { uint64_t row_index = 0; diff --git a/DSView/pv/dock/protocoldock.h b/DSView/pv/dock/protocoldock.h index adbaa233e..5c2578975 100644 --- a/DSView/pv/dock/protocoldock.h +++ b/DSView/pv/dock/protocoldock.h @@ -132,6 +132,7 @@ private slots: void set_model(); void export_table_view(); void nav_table_view(); + void auto_scroll(); void item_clicked(const QModelIndex &index); void column_resize(int index, int old_size, int new_size); void search_pre(); @@ -164,6 +165,7 @@ private slots: QPushButton *_bot_set_button; QPushButton *_bot_save_button; + QPushButton *_auto_scroll_button; QPushButton *_dn_nav_button; QPushButton *_ann_search_button; std::vector _decoderInfoList;