1 #include "gotofiltermodel.h" 2 GotoFilterModel(QObject * parent)3GotoFilterModel::GotoFilterModel(QObject *parent) : QSortFilterProxyModel(parent) 4 { 5 this->setFilterKeyColumn(-1); 6 this->setFilterCaseSensitivity(Qt::CaseInsensitive); 7 this->setSourceModel(new GotoModel(this)); 8 } 9 setDisassembler(const REDasm::DisassemblerPtr & disassembler)10void GotoFilterModel::setDisassembler(const REDasm::DisassemblerPtr &disassembler) { static_cast<GotoModel*>(this->sourceModel())->setDisassembler(disassembler); } 11 filterAcceptsRow(int sourcerow,const QModelIndex & sourceparent) const12bool GotoFilterModel::filterAcceptsRow(int sourcerow, const QModelIndex &sourceparent) const 13 { 14 const REDasm::ListingItem* item = reinterpret_cast<const REDasm::ListingItem*>(this->sourceModel()->index(sourcerow, 0, sourceparent).internalPointer()); 15 16 if(!item) 17 return false; 18 19 switch(item->type) 20 { 21 case REDasm::ListingItem::SegmentItem: 22 case REDasm::ListingItem::FunctionItem: 23 case REDasm::ListingItem::SymbolItem: 24 case REDasm::ListingItem::TypeItem: 25 return QSortFilterProxyModel::filterAcceptsRow(sourcerow, sourceparent); 26 27 default: 28 break; 29 } 30 31 return false; 32 } 33