1 #include "gotofiltermodel.h"
2 
GotoFilterModel(QObject * parent)3 GotoFilterModel::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)10 void GotoFilterModel::setDisassembler(const REDasm::DisassemblerPtr &disassembler) { static_cast<GotoModel*>(this->sourceModel())->setDisassembler(disassembler); }
11 
filterAcceptsRow(int sourcerow,const QModelIndex & sourceparent) const12 bool 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