1313#include < qt/mempoolconstants.h>
1414#include < qt/mempooldetail.h>
1515#include < qt/platformstyle.h>
16+ #include < qt/mempooltxtables.h>
1617
1718
1819const QSize FONT_RANGE (8 , 24 );
@@ -64,6 +65,7 @@ void MempoolDetail::setPlatformStyle(const PlatformStyle* platform_style)
6465 m_top_layout->addStretch ();
6566 m_top_layout->addWidget (m_temp_widget);
6667
68+ // Mempool Fee Table
6769 m_fee_table_model = new MempoolFeeTableModel (this );
6870
6971 m_fee_table = new QTableView (this );
@@ -87,9 +89,31 @@ void MempoolDetail::setPlatformStyle(const PlatformStyle* platform_style)
8789 m_fee_table_header->resizeSection (MempoolFeeTableModel::TotalSize, 55 );
8890 m_fee_table_header->resizeSection (MempoolFeeTableModel::TotalWeight, 50 );
8991
92+ // Mempool Transaction Table
93+ m_tx_table_model = new MempoolTxTableModel (this );
94+ m_tx_table = new QTableView (this );
95+ m_tx_table->setModel (m_tx_table_model);
96+ m_tx_table->setHorizontalScrollBarPolicy (Qt::ScrollBarAlwaysOff);
97+ m_tx_table->setVerticalScrollBarPolicy (Qt::ScrollBarAlwaysOn);
98+ m_tx_table->setEditTriggers (QAbstractItemView::NoEditTriggers);
99+ m_tx_table->setSelectionBehavior (QAbstractItemView::SelectRows);
100+ m_tx_table->setSelectionMode (QAbstractItemView::SingleSelection);
101+ m_tx_table->setAlternatingRowColors (true );
102+ m_tx_table->setStyleSheet (" QTableView { background-color: transparent; border: 1px solid gray; border-radius: 5px; }" );
103+ m_tx_table->setSortingEnabled (false ); // Sorting not implemented for this model yet
104+ m_tx_table->verticalHeader ()->setVisible (false );
105+ m_tx_table->horizontalHeader ()->setStretchLastSection (true );
106+
107+ QHeaderView* m_tx_table_header = m_tx_table->horizontalHeader ();
108+ m_tx_table_header->resizeSection (MempoolTxTableModel::TxID, 200 );
109+ m_tx_table_header->resizeSection (MempoolTxTableModel::Amount, 100 );
110+ m_tx_table_header->resizeSection (MempoolTxTableModel::Fee, 80 );
111+ m_tx_table_header->resizeSection (MempoolTxTableModel::Status, 80 );
112+
90113 QVBoxLayout* main_layout = new QVBoxLayout (this );
91114 main_layout->addLayout (m_top_layout);
92- main_layout->addWidget (m_fee_table);
115+ main_layout->addWidget (m_tx_table); // Add transaction table first
116+ main_layout->addWidget (m_fee_table); // Then add fee table
93117 setLayout (main_layout);
94118
95119 connect (m_fee_table->selectionModel (), &QItemSelectionModel::currentRowChanged, this , [this ](const QModelIndex& current, const QModelIndex& previous) {
@@ -113,7 +137,9 @@ void MempoolDetail::setClientModel(ClientModel* model)
113137 connect (model, &ClientModel::mempoolFeeHistChanged, this , &MempoolDetail::updateFeeTable);
114138 connect (model, &ClientModel::numBlocksChanged, this , &MempoolDetail::updateFeeTable);
115139 connect (model, &ClientModel::mempoolRangeSelected, this , &MempoolDetail::onRangeSelected);
140+ connect (model, &ClientModel::walletTxChanged, this , &MempoolDetail::updateTxTable); // Connect new signal
116141 MempoolDetail::updateFeeTable ();
142+ MempoolDetail::updateTxTable (); // Initial update for transaction table
117143 }
118144}
119145
@@ -132,6 +158,18 @@ void MempoolDetail::updateFeeTable()
132158 }
133159}
134160
161+ void MempoolDetail::updateTxTable ()
162+ {
163+ if (m_clientmodel) {
164+ QMutexLocker locker (&m_clientmodel->m_mempool_locker );
165+ // Assuming m_wallet_transactions in ClientModel is updated via MempoolStats::onWalletTxChanged
166+ // and ClientModel::walletTxChanged signal is emitted.
167+ // For now, we'll pass the raw set of wallet transactions.
168+ // Further filtering for 'in mempool' status can be done in MempoolTxTableModel if needed.
169+ m_tx_table_model->updateModel (m_clientmodel->m_wallet_transactions );
170+ }
171+ }
172+
135173void MempoolDetail::setFontSize (qreal newSize)
136174{
137175 if (newSize < FONT_RANGE.width () || newSize > FONT_RANGE.height ())
0 commit comments