1414#include < QCheckBox>
1515#include < QString>
1616#include < QStringList>
17- #include < QSettings>
1817#include < QMessageBox>
1918
2019Q_PLUGIN_METADATA (IID " nl.lumc.H510XLoader" )
@@ -47,23 +46,12 @@ namespace
4746 // Alphabetic list of keys used to access settings from QSettings.
4847 namespace Keys
4948 {
50- const QLatin1String conversionIndexKey (" conversionIndex" );
51- const QLatin1String transformValueKey (" transformValue" );
52- const QLatin1String storageValueKey (" storageValue" );
53- const QLatin1String fileNameKey (" fileName" );
54- const QLatin1String normalizeKey (" normalize" );
55- const QLatin1String selectedNameFilterKey (" selectedNameFilter" );
56-
57- }
58-
59- // Call the specified function on the specified value, if it is valid.
60- template <typename TFunction>
61- void IfValid (const QVariant& value, const TFunction& function)
62- {
63- if (value.isValid ())
64- {
65- function (value);
66- }
49+ const QString conversionIndexKey (" conversionIndex" );
50+ const QString transformValueKey (" transformValue" );
51+ const QString storageValueKey (" storageValue" );
52+ const QString fileNameKey (" fileName" );
53+ const QString normalizeKey (" normalize" );
54+ const QString selectedNameFilterKey (" selectedNameFilter" );
6755 }
6856
6957} // Unnamed namespace
@@ -74,8 +62,8 @@ namespace
7462// =============================================================================
7563
7664H510XLoader::H510XLoader (PluginFactory* factory)
77- : LoaderPlugin(factory)
78-
65+ : LoaderPlugin(factory),
66+ _fileDialog()
7967{
8068
8169}
@@ -87,15 +75,13 @@ H510XLoader::~H510XLoader(void)
8775
8876void H510XLoader::init ()
8977{
90-
9178 QStringList fileTypeOptions;
9279
9380 fileTypeOptions.append (" 10X (*.h5)" );
9481
9582 _fileDialog.setOption (QFileDialog::DontUseNativeDialog);
9683 _fileDialog.setFileMode (QFileDialog::ExistingFiles);
9784 _fileDialog.setNameFilters (fileTypeOptions);
98-
9985}
10086
10187void H510XLoader::loadData ()
@@ -107,7 +93,6 @@ void H510XLoader::loadData()
10793 };
10894 LockGuard lockGuard (Hdf5Lock ());
10995
110- QSettings settings (QString::fromLatin1 (" HDPS" ), QString::fromLatin1 (" Plugins/H510XLoader" ));
11196 QGridLayout* fileDialogLayout = dynamic_cast <QGridLayout*>(_fileDialog.layout ());
11297
11398 int rowCount = fileDialogLayout->rowCount ();
@@ -125,58 +110,54 @@ void H510XLoader::loadData()
125110 storageTypeComboBox->addItem (dataTypeList[i], i);
126111 }
127112
128- storageTypeComboBox->setCurrentIndex ([&settings ]
113+ storageTypeComboBox->setCurrentIndex ([this ]
129114 {
130- const auto value = settings.value (Keys::storageValueKey);
131- if (value.isValid ())return value.toInt ();
132- return 0 ;
115+ const auto value = getSetting (Keys::storageValueKey, 0 );
116+ return value.toInt ();
133117 }());
134118
135119 fileDialogLayout->addWidget (storageTypeLabel, rowCount, 0 );
136120 fileDialogLayout->addWidget (storageTypeComboBox, rowCount, 1 );
137121
138-
139122 TRANSFORM ::Control transform (fileDialogLayout);
140123
141-
142- IfValid (settings.value (Keys::conversionIndexKey), [&transform, &settings](const QVariant& value)
124+ const auto conversionIndexSetting = getSetting (Keys::conversionIndexKey, QVariant ());
125+ if (conversionIndexSetting.isValid ())
126+ {
127+ TRANSFORM ::Index index = static_cast <TRANSFORM ::Index>(conversionIndexSetting.toInt ());
128+ if (index == TRANSFORM ::ARCSIN5 )
143129 {
144- TRANSFORM ::Index index = static_cast <TRANSFORM ::Index>(value.toInt ());
145- if (index == TRANSFORM ::ARCSIN5 )
146- {
147- IfValid (settings.value (Keys::transformValueKey), [&transform, index](const QVariant& value)
148- {
149- TRANSFORM ::Type transform_type;
150- transform_type.first = index;
151- transform_type.second = value.toDouble ();
152- transform.set (transform_type);
153- });
154- }
155- else
130+ const auto transformValueSetting = getSetting (Keys::transformValueKey, QVariant ());
131+
132+ if (transformValueSetting.isValid ())
156133 {
157- TRANSFORM ::Type type_pair ;
158- type_pair .first = index;
159- type_pair .second = 1 . 0f ;
160- transform.set (type_pair );
134+ TRANSFORM ::Type transform_type ;
135+ transform_type .first = index;
136+ transform_type .second = transformValueSetting. toDouble () ;
137+ transform.set (transform_type );
161138 }
139+ }
140+ else
141+ {
142+ TRANSFORM ::Type type_pair;
143+ type_pair.first = index;
144+ type_pair.second = 1 .0f ;
145+ transform.set (type_pair);
146+ }
147+ }
162148
163- });
149+ const auto selectedNameFilterSetting = getSetting (Keys::selectedNameFilterKey, QVariant ());
150+ if (selectedNameFilterSetting.isValid ())
151+ _fileDialog.selectNameFilter (selectedNameFilterSetting.toString ());
164152
165- QFileDialog& fileDialogRef = _fileDialog;
166- IfValid (settings.value (Keys::selectedNameFilterKey), [&fileDialogRef](const QVariant& value)
167- {
168- fileDialogRef.selectNameFilter (value.toString ());
169- });
170- IfValid (settings.value (Keys::fileNameKey), [&fileDialogRef](const QVariant& value)
171- {
172- fileDialogRef.selectFile (value.toString ());
173- });
153+ const auto fileNameSetting = getSetting (Keys::fileNameKey, QVariant ());
154+ if (fileNameSetting.isValid ())
155+ _fileDialog.selectFile (fileNameSetting.toString ());
174156
175157 // keeping storageTypeComboBox for now since we probably should implement this functionality
176158 storageTypeComboBox->setVisible (false );
177159 storageTypeLabel->setVisible (false );
178160
179-
180161 transform.setVisible (true );
181162 transform.setTransform (0 );
182163
@@ -190,17 +171,14 @@ void H510XLoader::loadData()
190171 }
191172 const QString firstFileName = fileNames.constFirst ();
192173
193- bool result = true ;
194174 QString selectedNameFilter = _fileDialog.selectedNameFilter ();
195175 const TRANSFORM ::Type transform_setting = transform.get ();
196176
197-
198- settings.setValue (Keys::conversionIndexKey, transform_setting.first );
199- settings.setValue (Keys::storageValueKey, storageTypeComboBox->currentIndex ());
200- settings.setValue (Keys::transformValueKey, transform_setting.second );
201- settings.setValue (Keys::fileNameKey, firstFileName);
202- settings.setValue (Keys::selectedNameFilterKey, selectedNameFilter);
203-
177+ setSetting (Keys::conversionIndexKey, transform_setting.first );
178+ setSetting (Keys::storageValueKey, storageTypeComboBox->currentIndex ());
179+ setSetting (Keys::transformValueKey, transform_setting.second );
180+ setSetting (Keys::fileNameKey, firstFileName);
181+ setSetting (Keys::selectedNameFilterKey, selectedNameFilter);
204182
205183 for (const auto & fileName : fileNames)
206184 {
0 commit comments