mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-01-11 12:22:39 -03:00
Merge bitcoin-core/gui#166: refactor: Use enum type as switch argument in *TableModel
1d5d832d5c
qt, refactor: Use enum type as switch argument in TransactionTableModel (Hennadii Stepanov)52f122c11f
qt, refactor: Use enum type as switch argument in PeerTableModel (Hennadii Stepanov)a35223f1cd
qt, refactor: Use enum type as switch argument in BanTableModel (Hennadii Stepanov)ab8a747d1c
qt, refactor: Use enum type as switch argument in AddressTableModel (Hennadii Stepanov) Pull request description: This PR makes code more maintainable by leveraging `-Wswitch` compiler warnings. Only the `RecentRequestsTableModel` is not refactored, because its `enum ColumnIndex` contains additional `NUMBER_OF_COLUMNS` value. No behavior change. ACKs for top commit: hebasto: Do you mind mentioning the _top_ pr commit with your ACK, i.e.,1d5d832d5c
, not ab8a747d1ced9f20ca32f9898418be70670da71a? jarolrod: ACK1d5d832d5c
, tested on macOS 11.1 Qt 5.15.2 leonardojobim: ACK1d5d832d5c
, tested on Ubuntu 20.04 Qt 5.12.8 promag: Code review ACK1d5d832d5c
. Tree-SHA512: 0d474d226a2fa0069495d1aa5ec13b2470708ec7b8a6ab35402236c7bf57cb9939577677a30dfa54f5e3bc0477c6cfffd20ed6f19e4eb394a938569cc9347851
This commit is contained in:
commit
8c21562180
4 changed files with 65 additions and 65 deletions
|
@ -198,42 +198,38 @@ QVariant AddressTableModel::data(const QModelIndex &index, int role) const
|
|||
|
||||
AddressTableEntry *rec = static_cast<AddressTableEntry*>(index.internalPointer());
|
||||
|
||||
if(role == Qt::DisplayRole || role == Qt::EditRole)
|
||||
{
|
||||
switch(index.column())
|
||||
{
|
||||
const auto column = static_cast<ColumnIndex>(index.column());
|
||||
if (role == Qt::DisplayRole || role == Qt::EditRole) {
|
||||
switch (column) {
|
||||
case Label:
|
||||
if(rec->label.isEmpty() && role == Qt::DisplayRole)
|
||||
{
|
||||
if (rec->label.isEmpty() && role == Qt::DisplayRole) {
|
||||
return tr("(no label)");
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
return rec->label;
|
||||
}
|
||||
case Address:
|
||||
return rec->address;
|
||||
}
|
||||
}
|
||||
else if (role == Qt::FontRole)
|
||||
{
|
||||
QFont font;
|
||||
if(index.column() == Address)
|
||||
{
|
||||
font = GUIUtil::fixedPitchFont();
|
||||
}
|
||||
return font;
|
||||
}
|
||||
else if (role == TypeRole)
|
||||
{
|
||||
} // no default case, so the compiler can warn about missing cases
|
||||
assert(false);
|
||||
} else if (role == Qt::FontRole) {
|
||||
switch (column) {
|
||||
case Label:
|
||||
return QFont();
|
||||
case Address:
|
||||
return GUIUtil::fixedPitchFont();
|
||||
} // no default case, so the compiler can warn about missing cases
|
||||
assert(false);
|
||||
} else if (role == TypeRole) {
|
||||
switch(rec->type)
|
||||
{
|
||||
case AddressTableEntry::Sending:
|
||||
return Send;
|
||||
case AddressTableEntry::Receiving:
|
||||
return Receive;
|
||||
default: break;
|
||||
}
|
||||
case AddressTableEntry::Hidden:
|
||||
return {};
|
||||
} // no default case, so the compiler can warn about missing cases
|
||||
assert(false);
|
||||
}
|
||||
return QVariant();
|
||||
}
|
||||
|
|
|
@ -23,15 +23,13 @@ bool BannedNodeLessThan::operator()(const CCombinedBan& left, const CCombinedBan
|
|||
if (order == Qt::DescendingOrder)
|
||||
std::swap(pLeft, pRight);
|
||||
|
||||
switch(column)
|
||||
{
|
||||
switch (static_cast<BanTableModel::ColumnIndex>(column)) {
|
||||
case BanTableModel::Address:
|
||||
return pLeft->subnet.ToString().compare(pRight->subnet.ToString()) < 0;
|
||||
case BanTableModel::Bantime:
|
||||
return pLeft->banEntry.nBanUntil < pRight->banEntry.nBanUntil;
|
||||
}
|
||||
|
||||
return false;
|
||||
} // no default case, so the compiler can warn about missing cases
|
||||
assert(false);
|
||||
}
|
||||
|
||||
// private implementation
|
||||
|
@ -119,16 +117,17 @@ QVariant BanTableModel::data(const QModelIndex &index, int role) const
|
|||
|
||||
CCombinedBan *rec = static_cast<CCombinedBan*>(index.internalPointer());
|
||||
|
||||
const auto column = static_cast<ColumnIndex>(index.column());
|
||||
if (role == Qt::DisplayRole) {
|
||||
switch(index.column())
|
||||
{
|
||||
switch (column) {
|
||||
case Address:
|
||||
return QString::fromStdString(rec->subnet.ToString());
|
||||
case Bantime:
|
||||
QDateTime date = QDateTime::fromMSecsSinceEpoch(0);
|
||||
date = date.addSecs(rec->banEntry.nBanUntil);
|
||||
return QLocale::system().toString(date, QLocale::LongFormat);
|
||||
}
|
||||
} // no default case, so the compiler can warn about missing cases
|
||||
assert(false);
|
||||
}
|
||||
|
||||
return QVariant();
|
||||
|
|
|
@ -23,8 +23,7 @@ bool NodeLessThan::operator()(const CNodeCombinedStats &left, const CNodeCombine
|
|||
if (order == Qt::DescendingOrder)
|
||||
std::swap(pLeft, pRight);
|
||||
|
||||
switch(column)
|
||||
{
|
||||
switch (static_cast<PeerTableModel::ColumnIndex>(column)) {
|
||||
case PeerTableModel::NetNodeId:
|
||||
return pLeft->nodeid < pRight->nodeid;
|
||||
case PeerTableModel::Address:
|
||||
|
@ -41,9 +40,8 @@ bool NodeLessThan::operator()(const CNodeCombinedStats &left, const CNodeCombine
|
|||
return pLeft->nRecvBytes < pRight->nRecvBytes;
|
||||
case PeerTableModel::Subversion:
|
||||
return pLeft->cleanSubVer.compare(pRight->cleanSubVer) < 0;
|
||||
}
|
||||
|
||||
return false;
|
||||
} // no default case, so the compiler can warn about missing cases
|
||||
assert(false);
|
||||
}
|
||||
|
||||
// private implementation
|
||||
|
@ -157,9 +155,9 @@ QVariant PeerTableModel::data(const QModelIndex &index, int role) const
|
|||
|
||||
CNodeCombinedStats *rec = static_cast<CNodeCombinedStats*>(index.internalPointer());
|
||||
|
||||
const auto column = static_cast<ColumnIndex>(index.column());
|
||||
if (role == Qt::DisplayRole) {
|
||||
switch(index.column())
|
||||
{
|
||||
switch (column) {
|
||||
case NetNodeId:
|
||||
return (qint64)rec->nodeStats.nodeid;
|
||||
case Address:
|
||||
|
@ -177,19 +175,24 @@ QVariant PeerTableModel::data(const QModelIndex &index, int role) const
|
|||
return GUIUtil::formatBytes(rec->nodeStats.nRecvBytes);
|
||||
case Subversion:
|
||||
return QString::fromStdString(rec->nodeStats.cleanSubVer);
|
||||
}
|
||||
} // no default case, so the compiler can warn about missing cases
|
||||
assert(false);
|
||||
} else if (role == Qt::TextAlignmentRole) {
|
||||
switch (index.column()) {
|
||||
case ConnectionType:
|
||||
case Network:
|
||||
return QVariant(Qt::AlignCenter);
|
||||
case Ping:
|
||||
case Sent:
|
||||
case Received:
|
||||
return QVariant(Qt::AlignRight | Qt::AlignVCenter);
|
||||
default:
|
||||
return QVariant();
|
||||
}
|
||||
switch (column) {
|
||||
case NetNodeId:
|
||||
case Address:
|
||||
return {};
|
||||
case ConnectionType:
|
||||
case Network:
|
||||
return QVariant(Qt::AlignCenter);
|
||||
case Ping:
|
||||
case Sent:
|
||||
case Received:
|
||||
return QVariant(Qt::AlignRight | Qt::AlignVCenter);
|
||||
case Subversion:
|
||||
return {};
|
||||
} // no default case, so the compiler can warn about missing cases
|
||||
assert(false);
|
||||
} else if (role == StatsRole) {
|
||||
switch (index.column()) {
|
||||
case NetNodeId: return QVariant::fromValue(rec);
|
||||
|
|
|
@ -526,27 +526,30 @@ QVariant TransactionTableModel::data(const QModelIndex &index, int role) const
|
|||
return QVariant();
|
||||
TransactionRecord *rec = static_cast<TransactionRecord*>(index.internalPointer());
|
||||
|
||||
switch(role)
|
||||
{
|
||||
const auto column = static_cast<ColumnIndex>(index.column());
|
||||
switch (role) {
|
||||
case RawDecorationRole:
|
||||
switch(index.column())
|
||||
{
|
||||
switch (column) {
|
||||
case Status:
|
||||
return txStatusDecoration(rec);
|
||||
case Watchonly:
|
||||
return txWatchonlyDecoration(rec);
|
||||
case Date: return {};
|
||||
case Type: return {};
|
||||
case ToAddress:
|
||||
return txAddressDecoration(rec);
|
||||
}
|
||||
break;
|
||||
case Amount: return {};
|
||||
} // no default case, so the compiler can warn about missing cases
|
||||
assert(false);
|
||||
case Qt::DecorationRole:
|
||||
{
|
||||
QIcon icon = qvariant_cast<QIcon>(index.data(RawDecorationRole));
|
||||
return platformStyle->TextColorIcon(icon);
|
||||
}
|
||||
case Qt::DisplayRole:
|
||||
switch(index.column())
|
||||
{
|
||||
switch (column) {
|
||||
case Status: return {};
|
||||
case Watchonly: return {};
|
||||
case Date:
|
||||
return formatTxDate(rec);
|
||||
case Type:
|
||||
|
@ -555,12 +558,11 @@ QVariant TransactionTableModel::data(const QModelIndex &index, int role) const
|
|||
return formatTxToAddress(rec, false);
|
||||
case Amount:
|
||||
return formatTxAmount(rec, true, BitcoinUnits::SeparatorStyle::ALWAYS);
|
||||
}
|
||||
break;
|
||||
} // no default case, so the compiler can warn about missing cases
|
||||
assert(false);
|
||||
case Qt::EditRole:
|
||||
// Edit role is used for sorting, so return the unformatted values
|
||||
switch(index.column())
|
||||
{
|
||||
switch (column) {
|
||||
case Status:
|
||||
return QString::fromStdString(rec->status.sortKey);
|
||||
case Date:
|
||||
|
@ -573,8 +575,8 @@ QVariant TransactionTableModel::data(const QModelIndex &index, int role) const
|
|||
return formatTxToAddress(rec, true);
|
||||
case Amount:
|
||||
return qint64(rec->credit + rec->debit);
|
||||
}
|
||||
break;
|
||||
} // no default case, so the compiler can warn about missing cases
|
||||
assert(false);
|
||||
case Qt::ToolTipRole:
|
||||
return formatTooltip(rec);
|
||||
case Qt::TextAlignmentRole:
|
||||
|
|
Loading…
Reference in a new issue