]> git.cworth.org Git - apitrace/blobdiff - gui/mainwindow.cpp
Don't clear the trace when the file selection has been cancelled.
[apitrace] / gui / mainwindow.cpp
index 64802efc1393caee03f4ea94ffff80fd3169a0a9..877c93d41b5fc1259882cc2d70d80e7966be9032 100644 (file)
@@ -74,9 +74,9 @@ void MainWindow::openTrace()
             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)
@@ -86,9 +86,7 @@ void MainWindow::loadTrace(const QString &fileName)
                              tr("File '%1' doesn't exist.").arg(fileName));
         return;
     }
-    qDebug()<< "Loading  : " <<fileName;
 
-    m_progressBar->setValue(0);
     newTraceFile(fileName);
 }
 
@@ -177,6 +175,9 @@ void MainWindow::replayStop()
 
 void MainWindow::newTraceFile(const QString &fileName)
 {
+    qDebug()<< "Loading  : " <<fileName;
+
+    m_progressBar->setValue(0);
     m_trace->setFileName(fileName);
 
     if (fileName.isEmpty()) {
@@ -260,12 +261,12 @@ void MainWindow::replayTrace(bool dumpState)
         } 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;
@@ -825,7 +826,7 @@ void MainWindow::slotSearchNext(const QString &str,
     else {
         Q_ASSERT(event->type() == ApiTraceCall::Frame);
         ApiTraceFrame *frame = static_cast<ApiTraceFrame*>(event);
-        call = frame->calls.value(0);
+        call = frame->call(0);
     }
 
     if (!call) {
@@ -876,7 +877,7 @@ void MainWindow::slotSearchPrev(const QString &str,
     else {
         Q_ASSERT(event->type() == ApiTraceCall::Frame);
         ApiTraceFrame *frame = static_cast<ApiTraceFrame*>(event);
-        call = frame->calls.value(0);
+        call = frame->call(0);
     }
 
     if (!call) {
@@ -982,14 +983,15 @@ void MainWindow::slotSaved()
 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()) {
@@ -1003,12 +1005,13 @@ void MainWindow::slotGoFrameStart()
 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;
@@ -1017,7 +1020,7 @@ void MainWindow::slotGoFrameEnd()
             m_ui.callView->setCurrentIndex(idx);
             break;
         }
-    } while (itr != frame->calls.constBegin());
+    } while (itr != calls.constBegin());
 }
 
 ApiTraceFrame * MainWindow::currentFrame() const