QVariant SpyModel::data(const QModelIndex &index, int role) const { if (!index.isValid()) return QVariant(); SpyItem *item = static_cast<SpyItem*>(index.internalPointer()); switch(role) { case Qt::DecorationRole: // icon { break; } case Qt::DisplayRole: return item->data(index.column()); case Qt::TextAlignmentRole: { break; } case Qt::ForegroundRole: { break; } case Qt::BackgroundColorRole: break; case Qt::ToolTipRole: break; } return QVariant(); }
void SpyFrame::contextMenu(){ QModelIndexList list = treeView->selectionModel()->selectedRows(0); if (list.isEmpty()) return; SpyItem *item = reinterpret_cast<SpyItem*>(list.at(0).internalPointer()); QMenu *m = new QMenu(this); m->addAction(tr("Search")); QAction *ret = m->exec(QCursor::pos()); if (!ret) return; SearchFrame *fr = ArenaWidgetFactory().create<SearchFrame, QWidget*>(this); QString src = item->data(COLUMN_SPY_STRING).toString(); if (item->isTTH){ src.remove(0, 4); fr->searchAlternates(src); } else fr->searchFile(src); }