Show error when we failed to parse an input file.
authorMilian Wolff <mail@milianw.de>
Tue, 23 Feb 2016 22:59:56 +0000 (23:59 +0100)
committerMilian Wolff <mail@milianw.de>
Tue, 23 Feb 2016 22:59:56 +0000 (23:59 +0100)
gui/mainwindow.cpp
gui/mainwindow.ui
gui/parser.cpp
gui/parser.h

index d874ed0..b1c043e 100644 (file)
@@ -137,11 +137,20 @@ MainWindow::MainWindow(QWidget* parent)
             m_ui->summary, &QLabel::setText);
     connect(m_parser, &Parser::progressMessageAvailable,
             m_ui->progressLabel, &QLabel::setText);
-    connect(m_parser, &Parser::finished,
-            this, [=] {
+    auto removeProgress = [this] {
         statusBar()->removeWidget(m_ui->progressLabel);
         statusBar()->removeWidget(m_ui->loadingProgress);
+    };
+    connect(m_parser, &Parser::finished,
+            this, removeProgress);
+    connect(m_parser, &Parser::failedToOpen,
+            this, [this, removeProgress] (const QString& failedFile) {
+        removeProgress();
+        m_ui->pages->setCurrentWidget(m_ui->openPage);
+        m_ui->messages->setText(i18n("Failed to parse file %1.", failedFile));
+        m_ui->messages->show();
     });
+    m_ui->messages->hide();
 
     auto bottomUpProxy = new TreeProxy(bottomUpModel);
     bottomUpProxy->setSourceModel(bottomUpModel);
index 6a6e728..4e23005 100644 (file)
    <string>MainWindow</string>
   </property>
   <widget class="QWidget" name="centralwidget">
-   <layout class="QHBoxLayout" name="horizontalLayout_2">
+   <layout class="QVBoxLayout" name="verticalLayout_6">
+    <item>
+     <widget class="KMessageWidget" name="messages">
+      <property name="messageType">
+       <enum>KMessageWidget::Information</enum>
+      </property>
+      <property name="icon">
+       <iconset theme="dialog-error"/>
+      </property>
+     </widget>
+    </item>
     <item>
      <widget class="QStackedWidget" name="pages">
       <widget class="QWidget" name="openPage">
  </widget>
  <customwidgets>
   <customwidget>
+   <class>KMessageWidget</class>
+   <extends>QFrame</extends>
+   <header>kmessagewidget.h</header>
+  </customwidget>
+  <customwidget>
    <class>ChartWidget</class>
    <extends>QWidget</extends>
    <header>chartwidget.h</header>
index 6bbf03e..ffd596d 100644 (file)
@@ -496,7 +496,11 @@ void Parser::parse(const QString& path)
         const auto stdPath = path.toStdString();
         auto data = make_shared<ParserData>();
         emit progressMessageAvailable(i18n("parsing data..."));
-        data->read(stdPath);
+        if (!data->read(stdPath)) {
+            emit failedToOpen(path);
+            return;
+        }
+
         data->updateStringCache();
 
         emit summaryAvailable(generateSummary(*data));
index 7aaace3..22e1eb6 100644 (file)
@@ -47,6 +47,7 @@ signals:
     void temporaryChartDataAvailable(const ChartData& data);
     void sizeHistogramDataAvailable(const HistogramData& data);
     void finished();
+    void failedToOpen(const QString& path);
 };
 
 #endif // PARSER_H