@ -25,14 +25,16 @@ MessagesWidget::MessagesWidget(QWidget *parent) : QWidget(parent) {
view = new MessageView ( this ) ;
model = new MessageListModel ( this ) ;
auto delegate = new MessageBytesDelegate ( view , settings . multiple_lines_bytes ) ;
view - > setItemDelegateForColumn ( 5 , delegate ) ;
view - > setItemDelegate ( delegate ) ;
view - > setModel ( model ) ;
view - > setSortingEnabled ( true ) ;
view - > sortByColumn ( 0 , Qt : : AscendingOrder ) ;
view - > setAllColumnsShowFocus ( true ) ;
view - > setEditTriggers ( QAbstractItemView : : NoEditTriggers ) ;
view - > setItemsExpandable ( false ) ;
view - > setIndentation ( 0 ) ;
view - > setRootIsDecorated ( false ) ;
view - > header ( ) - > setStretchLastSection ( tru e ) ;
view - > header ( ) - > setSectionsMovable ( fals e ) ;
main_layout - > addWidget ( view ) ;
// suppress
@ -48,6 +50,7 @@ MessagesWidget::MessagesWidget(QWidget *parent) : QWidget(parent) {
QObject : : connect ( multiple_lines_bytes , & QCheckBox : : stateChanged , [ = ] ( int state ) {
settings . multiple_lines_bytes = ( state = = Qt : : Checked ) ;
delegate - > setMultipleLines ( settings . multiple_lines_bytes ) ;
view - > setUniformRowHeights ( ! settings . multiple_lines_bytes ) ;
model - > sortMessages ( ) ;
} ) ;
QObject : : connect ( can , & AbstractStream : : msgsReceived , model , & MessageListModel : : msgsReceived ) ;
@ -148,7 +151,7 @@ QVariant MessageListModel::data(const QModelIndex &index, int role) const {
}
}
return QVariant : : fromValue ( colors ) ;
} else if ( role = = BytesRole ) {
} else if ( role = = BytesRole & & index . column ( ) = = 5 ) {
return can_data . dat ;
}
return { } ;
@ -268,9 +271,9 @@ void MessageListModel::reset() {
void MessageView : : drawRow ( QPainter * painter , const QStyleOptionViewItem & option , const QModelIndex & index ) const {
QTreeView : : drawRow ( painter , option , index ) ;
painter - > save ( ) ;
const int gridHint = style ( ) - > styleHint ( QStyle : : SH_Table_GridLineColor , & option , this ) ;
const QColor gridColor = QColor : : fromRgba ( static_cast < QRgb > ( gridHint ) ) ;
QPen old_pen = painter - > pen ( ) ;
painter - > setPen ( gridColor ) ;
painter - > drawLine ( option . rect . left ( ) , option . rect . bottom ( ) , option . rect . right ( ) , option . rect . bottom ( ) ) ;
@ -280,5 +283,12 @@ void MessageView::drawRow(QPainter *painter, const QStyleOptionViewItem &option,
painter - > translate ( header ( ) - > sectionSize ( i ) , 0 ) ;
painter - > drawLine ( 0 , y , 0 , y + option . rect . height ( ) ) ;
}
painter - > restore ( ) ;
painter - > setPen ( old_pen ) ;
painter - > resetTransform ( ) ;
}
void MessageView : : dataChanged ( const QModelIndex & topLeft , const QModelIndex & bottomRight , const QVector < int > & roles ) {
// Bypass the slow call to QTreeView::dataChanged.
// QTreeView::dataChanged will invalidate the height cache and that's what we don't need in MessageView.
QAbstractItemView : : dataChanged ( topLeft , bottomRight , roles ) ;
}