QDir::homePath(),
tr("Trace Files (*.trace)"));
- qDebug()<< "File name : " <<fileName;
-
- newTraceFile(fileName);
+ if (!fileName.isEmpty() && QFile::exists(fileName)) {
+ newTraceFile(fileName);
+ }
}
void MainWindow::loadTrace(const QString &fileName)
tr("File '%1' doesn't exist.").arg(fileName));
return;
}
- qDebug()<< "Loading : " <<fileName;
- m_progressBar->setValue(0);
newTraceFile(fileName);
}
void MainWindow::newTraceFile(const QString &fileName)
{
+ qDebug()<< "Loading : " <<fileName;
+
+ m_progressBar->setValue(0);
m_trace->setFileName(fileName);
if (fileName.isEmpty()) {
} else if (m_selectedEvent->type() == ApiTraceEvent::Frame) {
ApiTraceFrame *frame =
static_cast<ApiTraceFrame*>(m_selectedEvent);
- if (frame->calls.isEmpty()) {
+ if (frame->isEmpty()) {
//XXX i guess we could still get the current state
qDebug()<<"tried to get a state for an empty frame";
return;
}
- index = frame->calls.first()->index();
+ index = frame->calls().first()->index();
} else {
qDebug()<<"Unknown event type";
return;
MainWindow::~MainWindow()
{
+ delete m_trace;
+ m_trace = 0;
+
+ delete m_proxyModel;
+ delete m_model;
}
static void
QVariant var = item->data(0, Qt::UserRole);
QImage img = var.value<QImage>();
ImageViewer *viewer = new ImageViewer(this);
+
+ QString title;
+ if (currentCall()) {
+ title = tr("QApiTrace - Surface at %1 (%2)")
+ .arg(currentCall()->name())
+ .arg(currentCall()->index());
+ } else {
+ title = tr("QApiTrace - Surface Viewer");
+ }
+ viewer->setWindowTitle(title);
viewer->setAttribute(Qt::WA_DeleteOnClose, true);
viewer->setImage(img);
QRect screenRect = QApplication::desktop()->availableGeometry();
m_proxyModel = new ApiTraceFilter();
m_proxyModel->setSourceModel(m_model);
m_ui.callView->setModel(m_proxyModel);
- m_ui.callView->setItemDelegate(new ApiCallDelegate);
+ m_ui.callView->setItemDelegate(
+ new ApiCallDelegate(m_ui.callView));
m_ui.callView->resizeColumnToContents(0);
m_ui.callView->header()->swapSections(0, 1);
m_ui.callView->setColumnWidth(1, 42);
m_searchWidget->show();
}
-void MainWindow::slotSearchNext(const QString &str, Qt::CaseSensitivity sensitivity)
+void MainWindow::slotSearchNext(const QString &str,
+ Qt::CaseSensitivity sensitivity)
{
QModelIndex index = m_ui.callView->currentIndex();
ApiTraceEvent *event = 0;
else {
Q_ASSERT(event->type() == ApiTraceCall::Frame);
ApiTraceFrame *frame = static_cast<ApiTraceFrame*>(event);
- call = frame->calls.value(0);
+ call = frame->call(0);
}
if (!call) {
for (int i = callNum + 1; i < calls.count(); ++i) {
ApiTraceCall *testCall = calls[i];
- QString txt = testCall->filterText();
- if (txt.contains(str, sensitivity)) {
- QModelIndex index = m_proxyModel->indexForCall(testCall);
- /* if it's not valid it means that the proxy model has already
- * filtered it out */
- if (index.isValid()) {
+ QModelIndex index = m_proxyModel->indexForCall(testCall);
+ /* if it's not valid it means that the proxy model has already
+ * filtered it out */
+ if (index.isValid()) {
+ QString txt = testCall->filterText();
+ if (txt.contains(str, sensitivity)) {
m_ui.callView->setCurrentIndex(index);
m_searchWidget->setFound(true);
return;
m_searchWidget->setFound(false);
}
-void MainWindow::slotSearchPrev(const QString &str, Qt::CaseSensitivity sensitivity)
+void MainWindow::slotSearchPrev(const QString &str,
+ Qt::CaseSensitivity sensitivity)
{
QModelIndex index = m_ui.callView->currentIndex();
ApiTraceEvent *event = 0;
else {
Q_ASSERT(event->type() == ApiTraceCall::Frame);
ApiTraceFrame *frame = static_cast<ApiTraceFrame*>(event);
- call = frame->calls.value(0);
+ call = frame->call(0);
}
if (!call) {
for (int i = callNum - 1; i >= 0; --i) {
ApiTraceCall *testCall = calls[i];
- QString txt = testCall->filterText();
- if (txt.contains(str, sensitivity)) {
- QModelIndex index = m_proxyModel->indexForCall(testCall);
- /* if it's not valid it means that the proxy model has already
- * filtered it out */
- if (index.isValid()) {
+ QModelIndex index = m_proxyModel->indexForCall(testCall);
+ /* if it's not valid it means that the proxy model has already
+ * filtered it out */
+ if (index.isValid()) {
+ QString txt = testCall->filterText();
+ if (txt.contains(str, sensitivity)) {
m_ui.callView->setCurrentIndex(index);
m_searchWidget->setFound(true);
return;
void MainWindow::slotGoFrameStart()
{
ApiTraceFrame *frame = currentFrame();
- if (!frame || frame->calls.isEmpty()) {
+ if (!frame || frame->isEmpty()) {
return;
}
QList<ApiTraceCall*>::const_iterator itr;
+ QList<ApiTraceCall*> calls = frame->calls();
- itr = frame->calls.constBegin();
- while (itr != frame->calls.constEnd()) {
+ itr = calls.constBegin();
+ while (itr != calls.constEnd()) {
ApiTraceCall *call = *itr;
QModelIndex idx = m_proxyModel->indexForCall(call);
if (idx.isValid()) {
void MainWindow::slotGoFrameEnd()
{
ApiTraceFrame *frame = currentFrame();
- if (!frame || frame->calls.isEmpty()) {
+ if (!frame || frame->isEmpty()) {
return;
}
QList<ApiTraceCall*>::const_iterator itr;
+ QList<ApiTraceCall*> calls = frame->calls();
- itr = frame->calls.constEnd();
+ itr = calls.constEnd();
do {
--itr;
ApiTraceCall *call = *itr;
m_ui.callView->setCurrentIndex(idx);
break;
}
- } while (itr != frame->calls.constBegin());
+ } while (itr != calls.constBegin());
}
ApiTraceFrame * MainWindow::currentFrame() const
}
}
+ApiTraceCall * MainWindow::currentCall() const
+{
+ if (m_selectedEvent &&
+ m_selectedEvent->type() == ApiTraceEvent::Call) {
+ return static_cast<ApiTraceCall*>(m_selectedEvent);
+ }
+ return NULL;
+}
+
#include "mainwindow.moc"