1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
#include "DialogResults.h"
#include "edb.h"
namespace BinarySearcherPlugin {
/**
* @brief DialogResults::DialogResults
* @param parent
* @param f
*/
DialogResults::DialogResults(QWidget *parent, Qt::WindowFlags f)
: QDialog(parent, f) {
ui.setupUi(this);
}
/**
* follows the found item in the appropriate view
*
* @brief DialogResults::on_listWidget_itemDoubleClicked
* @param item
*/
void DialogResults::on_listWidget_itemDoubleClicked(QListWidgetItem *item) {
const edb::address_t addr = item->data(Qt::UserRole).toULongLong();
switch (static_cast<RegionType>(item->data(Qt::UserRole + 1).toInt())) {
case RegionType::Code:
edb::v1::jump_to_address(addr);
break;
case RegionType::Stack:
edb::v1::dump_stack(addr, true);
break;
case RegionType::Data:
edb::v1::dump_data(addr);
break;
}
}
/**
* @brief DialogResults::addResult
* @param address
*/
void DialogResults::addResult(RegionType region, edb::address_t address) {
auto item = new QListWidgetItem(edb::v1::format_pointer(address));
item->setData(Qt::UserRole, address.toQVariant());
item->setData(Qt::UserRole + 1, static_cast<int>(region));
ui.listWidget->addItem(item);
}
/**
* @brief DialogResults::resultCount
* @return
*/
int DialogResults::resultCount() const {
return ui.listWidget->count();
}
}
|