diff --git a/src/backend/datasources/LiveDataSource.cpp b/src/backend/datasources/LiveDataSource.cpp --- a/src/backend/datasources/LiveDataSource.cpp +++ b/src/backend/datasources/LiveDataSource.cpp @@ -249,6 +249,7 @@ } void LiveDataSource::setFilter(AbstractFileFilter* f) { + delete m_filter; m_filter = f; } @@ -497,7 +498,7 @@ */ void LiveDataSource::read() { DEBUG("\nLiveDataSource::read()"); - if (m_filter == nullptr) + if (!m_filter) return; //initialize the device (file, socket, serial port) when calling this function for the first time @@ -565,16 +566,16 @@ switch (m_fileType) { case AbstractFileFilter::Ascii: if (m_readingType == LiveDataSource::ReadingType::WholeFile) { - dynamic_cast(m_filter)->readFromLiveDevice(*m_file, this, 0); + static_cast(m_filter)->readFromLiveDevice(*m_file, this, 0); } else { - bytes = dynamic_cast(m_filter)->readFromLiveDevice(*m_file, this, m_bytesRead); + bytes = static_cast(m_filter)->readFromLiveDevice(*m_file, this, m_bytesRead); m_bytesRead += bytes; DEBUG("Read " << bytes << " bytes, in total: " << m_bytesRead); } break; case AbstractFileFilter::Binary: //TODO: not implemented yet - // bytes = dynamic_cast(m_filter)->readFromLiveDevice(*m_file, this, m_bytesRead); + // bytes = qSharedPointerCast(m_filter)->readFromLiveDevice(*m_file, this, m_bytesRead); // m_bytesRead += bytes; //TODO: other types not implemented yet case AbstractFileFilter::Image: @@ -602,7 +603,7 @@ // reading data here if (m_fileType == AbstractFileFilter::Ascii) - dynamic_cast(m_filter)->readFromLiveDeviceNotFile(*m_device, this); + static_cast(m_filter)->readFromLiveDeviceNotFile(*m_device, this); break; case LocalSocket: DEBUG(" Reading from local socket. state before abort = " << m_localSocket->state()); @@ -618,7 +619,7 @@ // reading data here if (m_fileType == AbstractFileFilter::Ascii) - dynamic_cast(m_filter)->readFromLiveDeviceNotFile(*m_device, this); + static_cast(m_filter)->readFromLiveDeviceNotFile(*m_device, this); break; case MQTT: break; @@ -635,7 +636,7 @@ DEBUG(" REMAINING TIME = " << m_updateTimer->remainingTime()); if (m_fileType == AbstractFileFilter::Ascii) - dynamic_cast(m_filter)->readFromLiveDeviceNotFile(*m_device, this); + static_cast(m_filter)->readFromLiveDeviceNotFile(*m_device, this); //TODO: not implemented yet // else if (m_fileType == AbstractFileFilter::Binary) @@ -957,7 +958,7 @@ } } else if (reader->name() == "asciiFilter") { - m_filter = new AsciiFilter(); + setFilter(new AsciiFilter); if (!m_filter->load(reader)) return false; } else if (reader->name() == "column") { diff --git a/src/backend/datasources/filters/AbstractFileFilter.h b/src/backend/datasources/filters/AbstractFileFilter.h --- a/src/backend/datasources/filters/AbstractFileFilter.h +++ b/src/backend/datasources/filters/AbstractFileFilter.h @@ -47,7 +47,7 @@ enum FileType {Ascii, Binary, Image, HDF5, NETCDF, FITS, JSON, ROOT, NgspiceRawAscii, NgspiceRawBinary}; enum ImportMode {Append, Prepend, Replace}; - AbstractFileFilter() {} + explicit AbstractFileFilter(FileType type) : m_type(type) {} ~AbstractFileFilter() override = default; static bool isNan(QString); @@ -65,8 +65,13 @@ virtual void save(QXmlStreamWriter*) const = 0; virtual bool load(XmlStreamReader*) = 0; + constexpr FileType type() const { return m_type; } + signals: void completed(int) const; //!< int ranging from 0 to 100 notifies about the status of a read/write process + +protected: + const FileType m_type; }; #endif diff --git a/src/backend/datasources/filters/AsciiFilter.cpp b/src/backend/datasources/filters/AsciiFilter.cpp --- a/src/backend/datasources/filters/AsciiFilter.cpp +++ b/src/backend/datasources/filters/AsciiFilter.cpp @@ -57,7 +57,7 @@ \ingroup datasources */ -AsciiFilter::AsciiFilter() : AbstractFileFilter(), d(new AsciiFilterPrivate(this)) {} +AsciiFilter::AsciiFilter() : AbstractFileFilter(Ascii), d(new AsciiFilterPrivate(this)) {} AsciiFilter::~AsciiFilter() = default; diff --git a/src/backend/datasources/filters/BinaryFilter.cpp b/src/backend/datasources/filters/BinaryFilter.cpp --- a/src/backend/datasources/filters/BinaryFilter.cpp +++ b/src/backend/datasources/filters/BinaryFilter.cpp @@ -41,7 +41,7 @@ \ingroup datasources */ -BinaryFilter::BinaryFilter():AbstractFileFilter(), d(new BinaryFilterPrivate(this)) {} +BinaryFilter::BinaryFilter():AbstractFileFilter(Binary), d(new BinaryFilterPrivate(this)) {} BinaryFilter::~BinaryFilter() = default; diff --git a/src/backend/datasources/filters/FITSFilter.cpp b/src/backend/datasources/filters/FITSFilter.cpp --- a/src/backend/datasources/filters/FITSFilter.cpp +++ b/src/backend/datasources/filters/FITSFilter.cpp @@ -46,7 +46,7 @@ * \since 2.2.0 * \ingroup datasources */ -FITSFilter::FITSFilter():AbstractFileFilter(), d(new FITSFilterPrivate(this)) {} +FITSFilter::FITSFilter():AbstractFileFilter(FITS), d(new FITSFilterPrivate(this)) {} FITSFilter::~FITSFilter() = default; diff --git a/src/backend/datasources/filters/HDF5Filter.cpp b/src/backend/datasources/filters/HDF5Filter.cpp --- a/src/backend/datasources/filters/HDF5Filter.cpp +++ b/src/backend/datasources/filters/HDF5Filter.cpp @@ -47,7 +47,7 @@ \ingroup datasources */ -HDF5Filter::HDF5Filter():AbstractFileFilter(), d(new HDF5FilterPrivate(this)) {} +HDF5Filter::HDF5Filter():AbstractFileFilter(HDF5), d(new HDF5FilterPrivate(this)) {} HDF5Filter::~HDF5Filter() = default; diff --git a/src/backend/datasources/filters/ImageFilter.cpp b/src/backend/datasources/filters/ImageFilter.cpp --- a/src/backend/datasources/filters/ImageFilter.cpp +++ b/src/backend/datasources/filters/ImageFilter.cpp @@ -38,7 +38,7 @@ \ingroup datasources */ -ImageFilter::ImageFilter():AbstractFileFilter(), d(new ImageFilterPrivate(this)) {} +ImageFilter::ImageFilter():AbstractFileFilter(Image), d(new ImageFilterPrivate(this)) {} ImageFilter::~ImageFilter() = default; diff --git a/src/backend/datasources/filters/JsonFilter.cpp b/src/backend/datasources/filters/JsonFilter.cpp --- a/src/backend/datasources/filters/JsonFilter.cpp +++ b/src/backend/datasources/filters/JsonFilter.cpp @@ -46,7 +46,7 @@ \ingroup datasources */ -JsonFilter::JsonFilter() : AbstractFileFilter(), d(new JsonFilterPrivate(this)) {} +JsonFilter::JsonFilter() : AbstractFileFilter(JSON), d(new JsonFilterPrivate(this)) {} JsonFilter::~JsonFilter() = default; diff --git a/src/backend/datasources/filters/NetCDFFilter.cpp b/src/backend/datasources/filters/NetCDFFilter.cpp --- a/src/backend/datasources/filters/NetCDFFilter.cpp +++ b/src/backend/datasources/filters/NetCDFFilter.cpp @@ -39,7 +39,7 @@ \ingroup datasources */ -NetCDFFilter::NetCDFFilter():AbstractFileFilter(), d(new NetCDFFilterPrivate(this)) {} +NetCDFFilter::NetCDFFilter():AbstractFileFilter(NETCDF), d(new NetCDFFilterPrivate(this)) {} NetCDFFilter::~NetCDFFilter() = default; diff --git a/src/backend/datasources/filters/NgspiceRawAsciiFilter.cpp b/src/backend/datasources/filters/NgspiceRawAsciiFilter.cpp --- a/src/backend/datasources/filters/NgspiceRawAsciiFilter.cpp +++ b/src/backend/datasources/filters/NgspiceRawAsciiFilter.cpp @@ -37,7 +37,7 @@ \ingroup datasources */ -NgspiceRawAsciiFilter::NgspiceRawAsciiFilter() : AbstractFileFilter(), d(new NgspiceRawAsciiFilterPrivate(this)) {} +NgspiceRawAsciiFilter::NgspiceRawAsciiFilter() : AbstractFileFilter(NgspiceRawAscii), d(new NgspiceRawAsciiFilterPrivate(this)) {} NgspiceRawAsciiFilter::~NgspiceRawAsciiFilter() = default; diff --git a/src/backend/datasources/filters/NgspiceRawBinaryFilter.cpp b/src/backend/datasources/filters/NgspiceRawBinaryFilter.cpp --- a/src/backend/datasources/filters/NgspiceRawBinaryFilter.cpp +++ b/src/backend/datasources/filters/NgspiceRawBinaryFilter.cpp @@ -38,7 +38,7 @@ \ingroup datasources */ -NgspiceRawBinaryFilter::NgspiceRawBinaryFilter() : AbstractFileFilter(), d(new NgspiceRawBinaryFilterPrivate(this)) {} +NgspiceRawBinaryFilter::NgspiceRawBinaryFilter() : AbstractFileFilter(NgspiceRawBinary), d(new NgspiceRawBinaryFilterPrivate(this)) {} NgspiceRawBinaryFilter::~NgspiceRawBinaryFilter() = default; diff --git a/src/backend/datasources/filters/ROOTFilter.cpp b/src/backend/datasources/filters/ROOTFilter.cpp --- a/src/backend/datasources/filters/ROOTFilter.cpp +++ b/src/backend/datasources/filters/ROOTFilter.cpp @@ -47,7 +47,7 @@ #include #include -ROOTFilter::ROOTFilter():AbstractFileFilter(), d(new ROOTFilterPrivate) {} +ROOTFilter::ROOTFilter():AbstractFileFilter(ROOT), d(new ROOTFilterPrivate) {} ROOTFilter::~ROOTFilter() = default; diff --git a/src/kdefrontend/datasources/FITSOptionsWidget.cpp b/src/kdefrontend/datasources/FITSOptionsWidget.cpp --- a/src/kdefrontend/datasources/FITSOptionsWidget.cpp +++ b/src/kdefrontend/datasources/FITSOptionsWidget.cpp @@ -60,7 +60,7 @@ return name; } -void FITSOptionsWidget::updateContent(FITSFilter *filter, const QString& fileName) { +void FITSOptionsWidget::updateContent(FITSFilter* filter, const QString& fileName) { DEBUG("FITSOptionsWidget::updateContent() file name = " << fileName.toStdString()); ui.twExtensions->clear(); filter->parseExtensions(fileName, ui.twExtensions, true); @@ -110,7 +110,7 @@ } if (!selectedExtension.isEmpty()) { - auto* filter = dynamic_cast(m_fileWidget->currentFileFilter()); + auto filter = static_cast(m_fileWidget->currentFileFilter()); bool readFitsTableToMatrix; const QVector importedStrings = filter->readChdu(selectedExtension, &readFitsTableToMatrix, ui.sbPreviewLines->value()); emit m_fileWidget->checkedFitsTableToMatrix(readFitsTableToMatrix); diff --git a/src/kdefrontend/datasources/HDF5OptionsWidget.cpp b/src/kdefrontend/datasources/HDF5OptionsWidget.cpp --- a/src/kdefrontend/datasources/HDF5OptionsWidget.cpp +++ b/src/kdefrontend/datasources/HDF5OptionsWidget.cpp @@ -60,7 +60,7 @@ ui.twPreview->clear(); } -void HDF5OptionsWidget::updateContent(HDF5Filter *filter, const QString& fileName) { +void HDF5OptionsWidget::updateContent(HDF5Filter* filter, const QString& fileName) { ui.twContent->clear(); QTreeWidgetItem *rootItem = ui.twContent->invisibleRootItem(); filter->parse(fileName, rootItem); diff --git a/src/kdefrontend/datasources/ImportFileDialog.cpp b/src/kdefrontend/datasources/ImportFileDialog.cpp --- a/src/kdefrontend/datasources/ImportFileDialog.cpp +++ b/src/kdefrontend/datasources/ImportFileDialog.cpp @@ -200,13 +200,13 @@ } QString fileName = m_importFileWidget->fileName(); - AbstractFileFilter* filter = m_importFileWidget->currentFileFilter(); + auto filter = m_importFileWidget->currentFileFilter(); auto mode = AbstractFileFilter::ImportMode(cbPosition->currentIndex()); //show a progress bar in the status bar auto* progressBar = new QProgressBar(); progressBar->setRange(0, 100); - connect(filter, SIGNAL(completed(int)), progressBar, SLOT(setValue(int))); + connect(filter, &AbstractFileFilter::completed, progressBar, &QProgressBar::setValue); statusBar->clearMessage(); statusBar->addWidget(progressBar, 1); @@ -279,13 +279,13 @@ for (int i = 0; i < nrNames; ++i) { switch (fileType) { case AbstractFileFilter::HDF5: - ((HDF5Filter*) filter)->setCurrentDataSetName(names[i]); + static_cast(filter)->setCurrentDataSetName(names[i]); break; case AbstractFileFilter::NETCDF: - ((NetCDFFilter*) filter)->setCurrentVarName(names[i]); + static_cast(filter)->setCurrentVarName(names[i]); break; case AbstractFileFilter::ROOT: - ((ROOTFilter*) filter)->setCurrentHistogram(names[i]); + static_cast(filter)->setCurrentHistogram(names[i]); break; case AbstractFileFilter::Ascii: case AbstractFileFilter::Binary: @@ -321,7 +321,6 @@ RESET_CURSOR; statusBar->removeWidget(progressBar); - delete filter; } void ImportFileDialog::toggleOptions() { diff --git a/src/kdefrontend/datasources/ImportFileWidget.h b/src/kdefrontend/datasources/ImportFileWidget.h --- a/src/kdefrontend/datasources/ImportFileWidget.h +++ b/src/kdefrontend/datasources/ImportFileWidget.h @@ -99,6 +99,8 @@ std::unique_ptr m_jsonOptionsWidget; std::unique_ptr m_rootOptionsWidget; + mutable std::unique_ptr m_currentFilter; + QTableWidget* m_twPreview; const QString& m_fileName; bool m_fileEmpty; diff --git a/src/kdefrontend/datasources/ImportFileWidget.cpp b/src/kdefrontend/datasources/ImportFileWidget.cpp --- a/src/kdefrontend/datasources/ImportFileWidget.cpp +++ b/src/kdefrontend/datasources/ImportFileWidget.cpp @@ -474,7 +474,8 @@ source->setComment( ui.leFileName->text() ); source->setFileType(fileType); - source->setFilter(this->currentFileFilter()); + currentFileFilter(); + source->setFilter(m_currentFilter.release()); // pass ownership of the filter to the LiveDataSource source->setSourceType(sourceType); source->setReadingType(readingType); @@ -526,7 +527,8 @@ MQTTClient::ReadingType readingType = static_cast(ui.cbReadingType->currentIndex()); client->setComment( ui.leFileName->text() ); - client->setFilter(static_cast(currentFileFilter())); + currentFileFilter(); + client->setFilter(static_cast(m_currentFilter.release())); // pass ownership of the filter to MQTTClient client->setReadingType(readingType); @@ -584,12 +586,15 @@ AbstractFileFilter* ImportFileWidget::currentFileFilter() const { DEBUG("ImportFileWidget::currentFileFilter()"); AbstractFileFilter::FileType fileType = currentFileType(); + if (m_currentFilter && m_currentFilter->type() != fileType) + m_currentFilter.reset(); switch (fileType) { case AbstractFileFilter::Ascii: { DEBUG(" ASCII"); - //TODO std::unique_ptr filter(new AsciiFilter()); - auto* filter = new AsciiFilter(); + if (!m_currentFilter) + m_currentFilter.reset(new AsciiFilter); + auto filter = static_cast(m_currentFilter.get()); if (ui.cbFilter->currentIndex() == 0) //"automatic" filter->setAutoModeEnabled(true); @@ -606,12 +611,14 @@ filter->setStartColumn( ui.sbStartColumn->value()); filter->setEndColumn( ui.sbEndColumn->value()); - return filter; + break; } case AbstractFileFilter::Binary: { DEBUG(" Binary"); - auto* filter = new BinaryFilter(); - if (ui.cbFilter->currentIndex() == 0) //"automatic" + if (!m_currentFilter) + m_currentFilter.reset(new BinaryFilter); + auto filter = static_cast(m_currentFilter.get()); + if ( ui.cbFilter->currentIndex() == 0 ) //"automatic" filter->setAutoModeEnabled(true); else if (ui.cbFilter->currentIndex() == 1) { //"custom" filter->setAutoModeEnabled(false); @@ -625,23 +632,27 @@ filter->setStartRow(ui.sbStartRow->value()); filter->setEndRow(ui.sbEndRow->value()); - return filter; + break; } case AbstractFileFilter::Image: { DEBUG(" Image"); - auto* filter = new ImageFilter(); + if (!m_currentFilter) + m_currentFilter.reset(new ImageFilter); + auto filter = static_cast(m_currentFilter.get()); filter->setImportFormat(m_imageOptionsWidget->currentFormat()); filter->setStartRow( ui.sbStartRow->value() ); filter->setEndRow( ui.sbEndRow->value() ); filter->setStartColumn( ui.sbStartColumn->value() ); filter->setEndColumn( ui.sbEndColumn->value() ); - return filter; + break; } case AbstractFileFilter::HDF5: { DEBUG("ImportFileWidget::currentFileFilter(): HDF5"); - auto* filter = new HDF5Filter(); + if (!m_currentFilter) + m_currentFilter.reset(new HDF5Filter); + auto filter = static_cast(m_currentFilter.get()); QStringList names = selectedHDF5Names(); QDEBUG("ImportFileWidget::currentFileFilter(): selected HDF5 names =" << names); if (!names.isEmpty()) @@ -652,71 +663,87 @@ filter->setEndColumn( ui.sbEndColumn->value() ); DEBUG("ImportFileWidget::currentFileFilter(): OK"); - return filter; + break; } case AbstractFileFilter::NETCDF: { DEBUG(" NETCDF"); - auto* filter = new NetCDFFilter(); + if (!m_currentFilter) + m_currentFilter.reset(new NetCDFFilter); + auto filter = static_cast(m_currentFilter.get()); if (!selectedNetCDFNames().isEmpty()) filter->setCurrentVarName(selectedNetCDFNames()[0]); filter->setStartRow( ui.sbStartRow->value() ); filter->setEndRow( ui.sbEndRow->value() ); filter->setStartColumn( ui.sbStartColumn->value() ); filter->setEndColumn( ui.sbEndColumn->value() ); - return filter; + break; } case AbstractFileFilter::FITS: { DEBUG(" FITS"); - auto* filter = new FITSFilter(); + if (!m_currentFilter) + m_currentFilter.reset(new FITSFilter); + auto filter = static_cast(m_currentFilter.get()); filter->setStartRow( ui.sbStartRow->value()); filter->setEndRow( ui.sbEndRow->value() ); filter->setStartColumn( ui.sbStartColumn->value()); filter->setEndColumn( ui.sbEndColumn->value()); - return filter; + + break; } case AbstractFileFilter::JSON: { DEBUG(" JSON"); - auto* filter = new JsonFilter(); + if (!m_currentFilter) + m_currentFilter.reset(new JsonFilter); + auto filter = static_cast(m_currentFilter.get()); m_jsonOptionsWidget->applyFilterSettings(filter, ui.tvJson->currentIndex()); filter->setStartRow( ui.sbStartRow->value() ); filter->setEndRow( ui.sbEndRow->value() ); filter->setStartColumn( ui.sbStartColumn->value()); filter->setEndColumn( ui.sbEndColumn->value()); - return filter; + + break; } case AbstractFileFilter::ROOT: { DEBUG(" ROOT"); - auto* filter = new ROOTFilter(); + if (!m_currentFilter) + m_currentFilter.reset(new ROOTFilter); + auto filter = static_cast(m_currentFilter.get()); QStringList names = selectedROOTNames(); if (!names.isEmpty()) filter->setCurrentHistogram(names.first()); filter->setStartBin( m_rootOptionsWidget->startBin() ); filter->setEndBin( m_rootOptionsWidget->endBin() ); filter->setColumns( m_rootOptionsWidget->columns() ); - return filter; + break; } case AbstractFileFilter::NgspiceRawAscii: { DEBUG(" NgspiceRawAscii"); - auto* filter = new NgspiceRawAsciiFilter(); + if (!m_currentFilter) + m_currentFilter.reset(new NgspiceRawAsciiFilter); + auto filter = static_cast(m_currentFilter.get()); filter->setStartRow( ui.sbStartRow->value() ); filter->setEndRow( ui.sbEndRow->value() ); - return filter; + + break; } case AbstractFileFilter::NgspiceRawBinary: { DEBUG(" NgspiceRawBinary"); - auto* filter = new NgspiceRawBinaryFilter(); + if (!m_currentFilter) + m_currentFilter.reset(new NgspiceRawBinaryFilter); + auto filter = static_cast(m_currentFilter.get()); filter->setStartRow( ui.sbStartRow->value() ); filter->setEndRow( ui.sbEndRow->value() ); - return filter; + + break; } } - return nullptr; + return m_currentFilter.get(); } /*! @@ -1723,7 +1750,7 @@ case AbstractFileFilter::Ascii: { ui.tePreview->clear(); - auto* filter = static_cast(this->currentFileFilter()); + auto filter = static_cast(currentFileFilter()); DEBUG("Data Source Type: " << ENUM_TO_STRING(LiveDataSource, SourceType, sourceType)); switch (sourceType) { @@ -1837,7 +1864,7 @@ } case AbstractFileFilter::Binary: { ui.tePreview->clear(); - auto* filter = (BinaryFilter*)this->currentFileFilter(); + auto filter = static_cast(currentFileFilter()); importedStrings = filter->preview(fileName, lines); break; } @@ -1852,23 +1879,23 @@ } case AbstractFileFilter::HDF5: { DEBUG("ImportFileWidget::refreshPreview: HDF5"); - auto* filter = (HDF5Filter*)this->currentFileFilter(); + auto filter = static_cast(currentFileFilter()); lines = m_hdf5OptionsWidget->lines(); importedStrings = filter->readCurrentDataSet(fileName, nullptr, ok, AbstractFileFilter::Replace, lines); tmpTableWidget = m_hdf5OptionsWidget->previewWidget(); break; } case AbstractFileFilter::NETCDF: { - auto* filter = (NetCDFFilter*)this->currentFileFilter(); + auto filter = static_cast(currentFileFilter()); lines = m_netcdfOptionsWidget->lines(); importedStrings = filter->readCurrentVar(fileName, nullptr, AbstractFileFilter::Replace, lines); tmpTableWidget = m_netcdfOptionsWidget->previewWidget(); break; } case AbstractFileFilter::FITS: { - auto* filter = (FITSFilter*)this->currentFileFilter(); + auto filter = static_cast(currentFileFilter()); lines = m_fitsOptionsWidget->lines(); QString extensionName = m_fitsOptionsWidget->extensionName(&ok); @@ -1888,7 +1915,7 @@ case AbstractFileFilter::JSON: { ui.tePreview->clear(); m_jsonOptionsWidget->loadDocument(fileName); - auto* filter = (JsonFilter*)this->currentFileFilter(); + auto filter = static_cast(currentFileFilter()); m_jsonOptionsWidget->applyFilterSettings(filter, ui.tvJson->currentIndex()); importedStrings = filter->preview(fileName); @@ -1898,7 +1925,7 @@ break; } case AbstractFileFilter::ROOT: { - auto* filter = (ROOTFilter*)this->currentFileFilter(); + auto filter = static_cast(currentFileFilter()); lines = m_rootOptionsWidget->lines(); m_rootOptionsWidget->setNBins(filter->binsInCurrentHistogram(fileName)); @@ -1917,15 +1944,15 @@ } case AbstractFileFilter::NgspiceRawAscii: { ui.tePreview->clear(); - auto* filter = (NgspiceRawAsciiFilter*)this->currentFileFilter(); + auto filter = static_cast(currentFileFilter()); importedStrings = filter->preview(fileName, lines); vectorNameList = filter->vectorNames(); columnModes = filter->columnModes(); break; } case AbstractFileFilter::NgspiceRawBinary: { ui.tePreview->clear(); - auto* filter = (NgspiceRawBinaryFilter*)this->currentFileFilter(); + auto filter = static_cast(currentFileFilter()); importedStrings = filter->preview(fileName, lines); vectorNameList = filter->vectorNames(); columnModes = filter->columnModes(); @@ -1991,21 +2018,21 @@ void ImportFileWidget::updateContent(const QString& fileName, AbstractFileFilter::FileType fileType) { DEBUG("ImportFileWidget::updateContent()"); initOptionsWidget(fileType); - if (auto* filter = currentFileFilter()) { + if (auto filter = currentFileFilter()) { switch (fileType) { case AbstractFileFilter::HDF5: - m_hdf5OptionsWidget->updateContent((HDF5Filter*)filter, fileName); + m_hdf5OptionsWidget->updateContent(static_cast(filter), fileName); break; case AbstractFileFilter::NETCDF: - m_netcdfOptionsWidget->updateContent((NetCDFFilter*)filter, fileName); + m_netcdfOptionsWidget->updateContent(static_cast(filter), fileName); break; case AbstractFileFilter::FITS: #ifdef HAVE_FITS - m_fitsOptionsWidget->updateContent((FITSFilter*)filter, fileName); + m_fitsOptionsWidget->updateContent(static_cast(filter), fileName); #endif break; case AbstractFileFilter::ROOT: - m_rootOptionsWidget->updateContent((ROOTFilter*)filter, fileName); + m_rootOptionsWidget->updateContent(static_cast(filter), fileName); break; case AbstractFileFilter::Ascii: case AbstractFileFilter::Binary: diff --git a/src/kdefrontend/datasources/NetCDFOptionsWidget.cpp b/src/kdefrontend/datasources/NetCDFOptionsWidget.cpp --- a/src/kdefrontend/datasources/NetCDFOptionsWidget.cpp +++ b/src/kdefrontend/datasources/NetCDFOptionsWidget.cpp @@ -86,7 +86,7 @@ m_fileWidget->refreshPreview(); else if (item->data(1, Qt::DisplayRole).toString().contains("attribute")) { // reads attributes (only for preview) - auto* filter = (NetCDFFilter*)m_fileWidget->currentFileFilter(); + auto filter = static_cast(m_fileWidget->currentFileFilter()); QString fileName = m_fileWidget->ui.leFileName->text(); QString name = item->data(0, Qt::DisplayRole).toString(); QString varName = item->data(1, Qt::DisplayRole).toString().split(' ')[0];