Changeset 10791 in ntrip for trunk/BNC/src/pppWidgets.cpp


Ignore:
Timestamp:
Dec 3, 2025, 5:37:16 PM (10 days ago)
Author:
mervart
Message:

BNC Multifrequency and PPPAR Client (initial version)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/BNC/src/pppWidgets.cpp

    r10638 r10791  
    6565  _rinexNav     = new qtFileChooser(); _rinexNav    ->setObjectName("PPP/rinexNav");     _widgets << _rinexNav;
    6666  _corrMount    = new QLineEdit();     _corrMount   ->setObjectName("PPP/corrMount");    _widgets << _corrMount;
     67  _biasMount    = new QLineEdit();     _biasMount   ->setObjectName("PPP/biasMount");    _widgets << _biasMount;
    6768  _ionoMount    = new QLineEdit();     _ionoMount   ->setObjectName("PPP/ionoMount");    _widgets << _ionoMount;
    6869  _corrFile     = new qtFileChooser(); _corrFile    ->setObjectName("PPP/corrFile");     _widgets << _corrFile;
     70  _biasFile     = new qtFileChooser(); _biasFile    ->setObjectName("PPP/biasFile");     _widgets << _biasFile;
    6971  _ionoFile     = new qtFileChooser(); _ionoFile    ->setObjectName("PPP/ionoFile");     _widgets << _ionoFile;
    7072  _crdFile      = new qtFileChooser(); _crdFile     ->setObjectName("PPP/crdFile");      _widgets << _crdFile;
     
    7274  _blqFile      = new qtFileChooser(); _blqFile     ->setObjectName("PPP/blqFile");      _widgets << _blqFile;
    7375  _logPath      = new QLineEdit();     _logPath     ->setObjectName("PPP/logPath");      _widgets << _logPath;
     76  _logMode      = new QComboBox();     _logMode     ->setObjectName("PPP/logMode");      _widgets << _logMode;
    7477  _nmeaPath     = new QLineEdit();     _nmeaPath    ->setObjectName("PPP/nmeaPath");     _widgets << _nmeaPath;
    7578  _snxtroPath   = new QLineEdit();     _snxtroPath  ->setObjectName("PPP/snxtroPath");   _widgets << _snxtroPath;
    76   _snxtroSampl  = new QComboBox();      _snxtroSampl->setObjectName("PPP/snxtroSampl");  _widgets << _snxtroSampl;
     79  _snxtroSampl  = new QComboBox();     _snxtroSampl ->setObjectName("PPP/snxtroSampl");  _widgets << _snxtroSampl;
    7780  _snxtroIntr   = new QComboBox();     _snxtroIntr  ->setObjectName("PPP/snxtroIntr");   _widgets << _snxtroIntr;
    7881  _snxtroAc     = new QLineEdit();     _snxtroAc    ->setObjectName("PPP/snxtroAc");     _widgets << _snxtroAc;
    7982  _snxtroSolId  = new QLineEdit();     _snxtroSolId ->setObjectName("PPP/snxtroSolId");  _widgets << _snxtroSolId;
    8083  _snxtroSolType= new QLineEdit();     _snxtroSolType->setObjectName("PPP/snxtroSolType");_widgets << _snxtroSolType;
    81   _snxtroCampId = new QLineEdit();     _snxtroCampId ->setObjectName("PPP/snxtroCampId");  _widgets << _snxtroCampId;
     84  _snxtroCampId = new QLineEdit();     _snxtroCampId ->setObjectName("PPP/snxtroCampId");_widgets << _snxtroCampId;
    8285  _staTable     = new QTableWidget();  _staTable    ->setObjectName("PPP/staTable");     _widgets << _staTable;
    8386  _lcGPS        = new QComboBox();     _lcGPS       ->setObjectName("PPP/lcGPS");        _widgets << _lcGPS;
     
    99102  _corrWaitTime = new QSpinBox();      _corrWaitTime->setObjectName("PPP/corrWaitTime"); _widgets << _corrWaitTime;
    100103
     104  _arGPS        = new QCheckBox();     _arGPS       ->setObjectName("PPP/arGPS");        _widgets << _arGPS;
     105  _arGalileo    = new QCheckBox();     _arGalileo   ->setObjectName("PPP/arGalileo");    _widgets << _arGalileo;
     106  _arBDS        = new QCheckBox();     _arBDS       ->setObjectName("PPP/arBDS");        _widgets << _arBDS;
     107  _arMinNumEpo  = new QSpinBox();      _arMinNumEpo ->setObjectName("PPP/arMinNumEpo");  _widgets << _arMinNumEpo;
     108  _arMinNumSat  = new QSpinBox();      _arMinNumSat ->setObjectName("PPP/arMinNumSat");  _widgets << _arMinNumSat;
     109  _arUseYaw     = new QCheckBox();     _arUseYaw    ->setObjectName("PPP/arUseYaw");     _widgets << _arUseYaw;
     110  _arMaxFrac    = new QLineEdit();     _arMaxFrac   ->setObjectName("PPP/arMaxFrac");    _widgets << _arMaxFrac;
     111  _arMaxSig     = new QLineEdit();     _arMaxSig    ->setObjectName("PPP/arMaxSig");     _widgets << _arMaxSig;
     112
    101113  _addStaButton = new QPushButton("Add Station");    _widgets << _addStaButton;
    102114  _delStaButton = new QPushButton("Delete Station"); _widgets << _delStaButton;
     
    116128  connect(_dataSource, SIGNAL(currentIndexChanged(const QString&)), this, SLOT(slotEnableWidgets()));
    117129  connect(_constraints, SIGNAL(currentIndexChanged(const QString&)), this, SLOT(slotEnableWidgets()));
     130  connect(_arGPS, SIGNAL(stateChanged(int)),  this, SLOT(slotEnableWidgets()));
     131  connect(_arGalileo, SIGNAL(stateChanged(int)),  this, SLOT(slotEnableWidgets()));
     132  connect(_arBDS, SIGNAL(stateChanged(int)),  this, SLOT(slotEnableWidgets()));
    118133  connect(_snxtroPath, SIGNAL(textChanged(const QString &)), this, SLOT(slotPPPTextChanged()));
    119134  connect(_snxtroAc, SIGNAL(textChanged(const QString &)), this, SLOT(slotPPPTextChanged()));
     
    122137  connect(_snxtroCampId, SIGNAL(textChanged(const QString &)), this, SLOT(slotPPPTextChanged()));
    123138
     139  _logMode->setEditable(false);
     140  _logMode->addItems(QString("normal,debug,all").split(","));
     141 
    124142  slotEnableWidgets();
    125143
    126   _lcGPS->setEditable(false);
    127 #ifdef USE_PPP_SSR_I
    128   _lcGPS->addItems(QString("P3,P3&L3").split(","));
    129 #else
    130   _lcGPS->addItems(QString("Pi&Li,Pi,P1&L1,P1,P3&L3,P3,L3,no").split(","));
    131 #endif
     144  _lcGPS->setEditable(true);
     145  _lcGPS->addItems(QString("Pi&Li,Pi,P1&L1,P1,P3&L3,P3,L3,no,P125&L125").split(","));
    132146
    133147  _lcGLONASS->setEditable(false);
    134 #ifdef USE_PPP_SSR_I
    135    _lcGLONASS->addItems(QString("no,P3,L3,P3&L3").split(","));
    136 #else
    137148  _lcGLONASS->addItems(QString("Pi&Li,Pi,P1&L1,P1,P3&L3,P3,L3,no").split(","));
    138 #endif
    139 
    140   _lcGalileo->setEditable(false);
    141 #ifdef USE_PPP_SSR_I
    142   _lcGalileo->addItems(QString("no,P3,L3,P3&L3").split(","));
    143 #else
    144   _lcGalileo->addItems(QString("Pi&Li,Pi,P1&L1,P1,P3&L3,P3,L3,no").split(","));
    145 #endif
    146 
    147   _lcBDS->setEditable(false);
    148  #ifdef USE_PPP_SSR_I
    149   _lcBDS->addItems(QString("no,P3,L3,P3&L3").split(","));
    150 #else
    151   _lcBDS->addItems(QString("Pi&Li,Pi,P1&L1,P1,P3&L3,P3,L3,no").split(","));
    152 #endif
    153 
    154 #ifdef USE_PPP
     149
     150  _lcGalileo->setEditable(true);
     151  _lcGalileo->addItems(QString("Pi&Li,Pi,P1&L1,P1,P3&L3,P3,L3,no,P1576&L1576").split(","));
     152
     153  _lcBDS->setEditable(true);
     154  _lcBDS->addItems(QString("Pi&Li,Pi,P1&L1,P1,P3&L3,P3,L3,no,P1576&L1576").split(","));
     155
    155156  _constraints->setEditable(false);
    156157  _constraints->addItems(QString("no,Ionosphere: pseudo-obs").split(","));
    157 #endif
     158
    158159  _snxtroSampl->setEditable(false);
    159160  _snxtroSampl->addItems(QString("1 sec,5 sec,10 sec,30 sec,60 sec,300 sec").split(","));
     
    172173  _minEle->setSuffix(" deg");
    173174
     175  _arMinNumEpo->setMinimum(5);
     176  _arMinNumEpo->setMaximum(60);
     177  _arMinNumEpo->setSingleStep(5);
     178
     179  _arMinNumSat->setMinimum(4);
     180  _arMinNumSat->setMaximum(8);
     181  _arMinNumSat->setSingleStep(1);
     182 
    174183  _corrWaitTime->setMinimum(0);
    175184  _corrWaitTime->setMaximum(20);
     
    210219  // WhatsThis, PPP (3)
    211220  // ------------------
    212 #ifdef USE_PPP
    213221  _staTable->setWhatsThis(tr("<p>Specify values for Sigma and white Noise of the Stations North, East and Height coordinate components in meters. Specify also a Sigma in meters for a priori model based Tropospheric delays and a Sigma in meters per second for the delay's Noise. You can also specify a 'NMEA Port' to output coordinates in NMEA format through an IP port of your local host. Specify a list of signal priorities for the observations that shall be used for PPP.</p>"
    214222                             "<p>'Sigma' is meant to describe the uncertainty of a single coordinate or tropospheric delay estimated for one epoch. 'Noise' is meant to describe the variation of estimates from epoch to epoch.</p><p><ul><li>A Sigma of 100.0 meters may be an appropriate choice e.g. for the initial N/E/H coordinates. However, this value may be significantly smaller (i.e. 0.01) for stations with well-known a priori coordinates.</li><li>A Noise of 100.0 meters for the estimated N/E/H coordinates may also be appropriate considering the potential movement of a rover position.</li><li>A value of 0.1 meters may be an appropriate Sigma for the a priori model based Tropospheric delay estimation.</li><li>Specify a Noise to describe the expected variation of the tropospheric effect over time. Supposing 1Hz observation data, specifying a value of 3e-6 would mean that the tropospheric effect may vary 3600 * 3e-6 = 0.01 meters per hour.</li></ul></p>"
     
    222230                             "<p>But it is recommended to specify it in more detail per individual station, e.g.:</p> <ul>  <li>'G:12&W R:12&P E:1&C E:5&Q C:26&I'</li></ul> "
    223231                             "<p> <i>[key: PPP/staTable]</i></p>"));
    224 #else
    225   _staTable->setWhatsThis(tr("<p>Specify values for Sigma and white Noise of the Stations North, East and Height coordinate components in meters. Specify also a Sigma in meters for a priori model based Tropospheric delays and a Sigma in meters per second for the delay's Noise. You can also specify a 'NMEA Port' to output coordinates in NMEA format through an IP port of your local host.<i>[key: PPP/staTable]</i></p>"));
    226 #endif
     232
    227233  // WhatsThis, PPP (4)
    228234  // ------------------
     
    240246////////////////////////////////////////////////////////////////////////////
    241247t_pppWidgets::~t_pppWidgets() {
    242   delete _dataSource;
    243   delete _rinexObs;
    244   delete _rinexNav;
    245   delete _corrMount;
    246   delete _ionoMount;
    247   delete _corrFile;
    248   delete _ionoFile;
    249   delete _crdFile;
    250   delete _antexFile;
    251   delete _blqFile;
    252   delete _logPath;
    253   delete _nmeaPath;
    254   delete _snxtroPath;
    255   delete _snxtroSampl;
    256   delete _snxtroIntr;
    257   delete _snxtroAc;
    258   delete _snxtroSolId;
    259   delete _snxtroSolType;
    260   delete _snxtroCampId;
    261   for (int iRow = _staTable->rowCount()-1; iRow >=0; iRow--) {
    262     _staTable->removeRow(iRow);
    263   }
    264   delete _staTable;
    265   delete _lcGPS;
    266   delete _lcGLONASS;
    267   delete _lcGalileo;
    268   delete _lcBDS;
    269   delete _constraints;
    270   delete _sigmaC1;
    271   delete _sigmaL1;
    272   delete _sigmaGIM;
    273   delete _maxResC1;
    274   delete _maxResL1;
    275   delete _maxResGIM;
    276   delete _minObs;
    277   delete _minEle;
    278   delete _eleWgtCode;
    279   delete _eleWgtPhase;
    280   delete _seedingTime;
    281   delete _corrWaitTime;
    282   delete _addStaButton;
    283   delete _delStaButton;
    284   delete _plotCoordinates;
    285   delete _mapWinButton;
    286   delete _audioResponse;
    287   delete _mapWinDotSize;
    288   delete _mapWinDotColor;
    289   delete _mapSpeedSlider;
    290248}
    291249
     
    296254  bncSettings settings;
    297255
    298   // ComboBoxes
    299   // ----------
    300   int ii = _dataSource->findText(settings.value(_dataSource->objectName()).toString());
    301   if (ii != -1) {
    302     _dataSource->setCurrentIndex(ii);
    303   }
    304   ii = _lcGPS->findText(settings.value(_lcGPS->objectName()).toString());
    305   if (ii != -1) {
    306     _lcGPS->setCurrentIndex(ii);
    307   }
    308   ii = _lcGLONASS->findText(settings.value(_lcGLONASS->objectName()).toString());
    309   if (ii != -1) {
    310     _lcGLONASS->setCurrentIndex(ii);
    311   }
    312   ii = _lcGalileo->findText(settings.value(_lcGalileo->objectName()).toString());
    313   if (ii != -1) {
    314     _lcGalileo->setCurrentIndex(ii);
    315   }
    316   ii = _lcBDS->findText(settings.value(_lcBDS->objectName()).toString());
    317   if (ii != -1) {
    318     _lcBDS->setCurrentIndex(ii);
    319   }
    320   ii = _constraints->findText(settings.value(_constraints->objectName()).toString());
    321   if (ii != -1) {
    322     _constraints->setCurrentIndex(ii);
    323   }
    324   ii = _snxtroIntr->findText(settings.value(_snxtroIntr->objectName()).toString());
    325   if (ii != -1) {
    326     _snxtroIntr->setCurrentIndex(ii);
    327   }
    328 
    329   // FileChoosers
    330   // ------------
    331   _rinexObs ->setFileName(settings.value(_rinexObs ->objectName()).toString());
    332   _rinexNav ->setFileName(settings.value(_rinexNav ->objectName()).toString());
    333   _corrFile ->setFileName(settings.value(_corrFile ->objectName()).toString());
    334   _ionoFile ->setFileName(settings.value(_ionoFile ->objectName()).toString());
    335   _crdFile  ->setFileName(settings.value(_crdFile  ->objectName()).toString());
    336   _antexFile->setFileName(settings.value(_antexFile->objectName()).toString());
    337   _blqFile->setFileName(settings.value(_blqFile->objectName()).toString());
    338 
    339   // LineEdits
    340   // ---------
    341   _corrMount    ->setText(settings.value(_corrMount     ->objectName()).toString());
    342   _ionoMount    ->setText(settings.value(_ionoMount     ->objectName()).toString());
    343   _logPath      ->setText(settings.value(_logPath       ->objectName()).toString());
    344   _nmeaPath     ->setText(settings.value(_nmeaPath      ->objectName()).toString());
    345   _snxtroPath   ->setText(settings.value(_snxtroPath    ->objectName()).toString());
    346   _snxtroAc     ->setText(settings.value(_snxtroAc      ->objectName()).toString());
    347   _snxtroSolId  ->setText(settings.value(_snxtroSolId   ->objectName()).toString());
    348   _snxtroSolType->setText(settings.value(_snxtroSolType ->objectName()).toString());
    349   _snxtroCampId ->setText(settings.value(_snxtroCampId  ->objectName()).toString());
    350 
    351   if (!settings.value(_sigmaC1->objectName()).toString().isEmpty()) {
    352     _sigmaC1->setText(settings.value(_sigmaC1->objectName()).toString());
    353   }
    354   else {
    355     _sigmaC1->setText("1.0");
    356   }
    357 
    358   if (!settings.value(_sigmaL1->objectName()).toString().isEmpty()) {
    359     _sigmaL1->setText(settings.value(_sigmaL1->objectName()).toString());
    360   }
    361   else {
    362     _sigmaL1->setText("0.01");
    363   }
    364 
    365   if (!settings.value(_sigmaGIM->objectName()).toString().isEmpty()) {
    366     _sigmaGIM->setText(settings.value(_sigmaGIM->objectName()).toString());
    367   }
    368   else {
    369     _sigmaGIM->setText("1.0");
    370   }
    371 
    372   if (!settings.value(_maxResC1->objectName()).toString().isEmpty()) {
    373     _maxResC1->setText(settings.value(_maxResC1->objectName()).toString());
    374   }
    375   else {
    376     _maxResC1->setText("3.0");
    377   }
    378 
    379   if (!settings.value(_maxResL1->objectName()).toString().isEmpty()) {
    380     _maxResL1->setText(settings.value(_maxResL1->objectName()).toString());
    381   }
    382   else {
    383     _maxResL1->setText("0.03");
    384   }
    385 
    386   if (!settings.value(_maxResGIM->objectName()).toString().isEmpty()) {
    387     _maxResGIM->setText(settings.value(_maxResGIM->objectName()).toString());
    388   }
    389   else {
    390     _maxResGIM->setText("3.0");
    391   }
    392 
    393 
    394   if (!settings.value(_seedingTime->objectName()).toString().isEmpty()) {
    395     _seedingTime->setText(settings.value(_seedingTime->objectName()).toString());
    396   }
    397   else {
    398     _seedingTime->setText("0");
    399   }
    400 
    401   // CheckBoxes
    402   // ----------
    403   _eleWgtCode ->setCheckState(Qt::CheckState(settings.value(_eleWgtCode ->objectName()).toInt()));
    404   _eleWgtPhase->setCheckState(Qt::CheckState(settings.value(_eleWgtPhase->objectName()).toInt()));
    405 
    406   // SpinBoxex
    407   // ---------
    408   _minObs->setValue(settings.value(_minObs->objectName()).toInt());
    409   _minEle->setValue(settings.value(_minEle->objectName()).toInt());
    410   _corrWaitTime->setValue(settings.value(_corrWaitTime->objectName()).toInt());
    411 
    412 
    413   ii = _snxtroSampl->findText(settings.value(_snxtroSampl->objectName()).toString());
    414   if (ii != -1) {
    415     _snxtroSampl->setCurrentIndex(ii);
    416   }
    417 
     256  auto setWidgetValue = [settings](QWidget* widget, QString defValue = QString()) {
     257    if      (auto* obj = qobject_cast<QLineEdit*>(widget)) {
     258      QString text = settings.value(obj->objectName()).toString();
     259      if (text.isEmpty() && !defValue.isEmpty()) {
     260        text = defValue;
     261      }
     262      obj->setText(text);
     263    }
     264    else if (auto* obj = qobject_cast<QComboBox*>(widget)) {
     265      QString text = settings.value(obj->objectName()).toString();
     266      int ii = obj->findText(text);
     267      if (ii != -1) {
     268        obj->setCurrentIndex(ii);
     269      }
     270      else if (obj->isEditable()) {
     271        obj->insertItem(0, text);
     272        obj->setCurrentIndex(0);
     273      }
     274    }
     275    else if (auto* obj = qobject_cast<qtFileChooser*>(widget)) {
     276      obj->setFileName(settings.value(obj->objectName()).toString());
     277    }
     278    else if (auto* obj = qobject_cast<QCheckBox*>(widget)) {
     279      obj->setCheckState(Qt::CheckState(settings.value(obj->objectName()).toInt()));
     280    }
     281    else if (auto* obj = qobject_cast<QSpinBox*>(widget)) {
     282      obj->setValue(settings.value(obj->objectName()).toInt());
     283    }
     284    else if (auto* obj = qobject_cast<QSlider*>(widget)) {
     285      int value = settings.value(obj->objectName()).toInt();
     286      if (value == 0) value = obj->maximum();
     287      obj->setSliderPosition(value);
     288    }
     289  };
     290 
     291  QListIterator<QWidget*> iw(_widgets);
     292  while (iw.hasNext()) {
     293    setWidgetValue(iw.next());
     294  }
     295
     296  // Set default values for some widgets
     297  // -----------------------------------
     298  setWidgetValue(_sigmaC1,     "1.0");
     299  setWidgetValue(_sigmaL1,     "0.01");
     300  setWidgetValue(_sigmaGIM,    "1.0");
     301  setWidgetValue(_maxResC1,    "3.0");
     302  setWidgetValue(_maxResL1,    "0.03");
     303  setWidgetValue(_maxResGIM,   "3.0");
     304  setWidgetValue(_seedingTime, "0");
     305   
    418306  // Table with stations
    419307  // -------------------
     
    431319    }
    432320  }
    433 
    434   // Plots and Maps
    435   // --------------
    436   _plotCoordinates ->setText(settings.value(_plotCoordinates->objectName()).toString());
    437   _audioResponse   ->setText(settings.value(_audioResponse->objectName()).toString());
    438   _mapWinDotSize   ->setText(settings.value(_mapWinDotSize->objectName()).toString());
    439 
    440   ii = _mapWinDotColor->findText(settings.value(_mapWinDotColor->objectName()).toString());
    441   if (ii != -1) {
    442     _mapWinDotColor->setCurrentIndex(ii);
    443   }
    444 
    445   int speed = settings.value(_mapSpeedSlider->objectName()).toInt();
    446   if (speed == 0) speed = _mapSpeedSlider->maximum();
    447   _mapSpeedSlider->setSliderPosition(speed);
    448321}
    449322
     
    454327  bncSettings settings;
    455328
    456   settings.setValue(_dataSource  ->objectName(), _dataSource  ->currentText());
    457   settings.setValue(_rinexObs    ->objectName(), _rinexObs    ->fileName());
    458   settings.setValue(_rinexNav    ->objectName(), _rinexNav    ->fileName());
    459   settings.setValue(_corrMount   ->objectName(), _corrMount   ->text());
    460   settings.setValue(_ionoMount   ->objectName(), _ionoMount   ->text());
    461   settings.setValue(_corrFile    ->objectName(), _corrFile    ->fileName());
    462   settings.setValue(_ionoFile    ->objectName(), _ionoFile    ->fileName());
    463   settings.setValue(_crdFile     ->objectName(), _crdFile     ->fileName());
    464   settings.setValue(_antexFile   ->objectName(), _antexFile   ->fileName());
    465   settings.setValue(_blqFile     ->objectName(), _blqFile   ->fileName());
    466   settings.setValue(_logPath     ->objectName(), _logPath     ->text());
    467   settings.setValue(_nmeaPath    ->objectName(), _nmeaPath    ->text());
    468   settings.setValue(_snxtroPath  ->objectName(), _snxtroPath  ->text());
    469   settings.setValue(_snxtroSampl ->objectName(), _snxtroSampl ->currentText());
    470   settings.setValue(_snxtroIntr  ->objectName(), _snxtroIntr  ->currentText());
    471   settings.setValue(_snxtroAc    ->objectName(), _snxtroAc    ->text());
    472   settings.setValue(_snxtroSolId  ->objectName(), _snxtroSolId   ->text());
    473   settings.setValue(_snxtroSolType->objectName(), _snxtroSolType ->text());
    474   settings.setValue(_snxtroCampId ->objectName(), _snxtroCampId  ->text());
    475   settings.setValue(_lcGPS       ->objectName(), _lcGPS       ->currentText());
    476   settings.setValue(_lcGLONASS   ->objectName(), _lcGLONASS   ->currentText());
    477   settings.setValue(_lcGalileo   ->objectName(), _lcGalileo   ->currentText());
    478   settings.setValue(_lcBDS       ->objectName(), _lcBDS       ->currentText());
    479   settings.setValue(_constraints ->objectName(), _constraints ->currentText());
    480   settings.setValue(_sigmaC1     ->objectName(), _sigmaC1     ->text());
    481   settings.setValue(_sigmaL1     ->objectName(), _sigmaL1     ->text());
    482   settings.setValue(_sigmaGIM    ->objectName(), _sigmaGIM    ->text());
    483   settings.setValue(_corrWaitTime->objectName(), _corrWaitTime->value());
    484   settings.setValue(_maxResC1    ->objectName(), _maxResC1    ->text());
    485   settings.setValue(_maxResL1    ->objectName(), _maxResL1    ->text());
    486   settings.setValue(_maxResGIM   ->objectName(), _maxResGIM   ->text());
    487   settings.setValue(_seedingTime ->objectName(), _seedingTime ->text());
    488   settings.setValue(_minObs      ->objectName(), _minObs      ->value());
    489   settings.setValue(_minEle      ->objectName(), _minEle      ->value());
    490   settings.setValue(_eleWgtCode  ->objectName(), _eleWgtCode  ->checkState());
    491   settings.setValue(_eleWgtPhase ->objectName(), _eleWgtPhase ->checkState());
     329  auto storeWidgetValue = [&settings](QWidget* widget) {
     330    if      (auto* obj = qobject_cast<QLineEdit*>(widget)) {
     331      settings.setValue(obj->objectName(), obj->text());
     332    }
     333    else if (auto* obj = qobject_cast<QComboBox*>(widget)) {
     334      settings.setValue(obj->objectName(), obj->currentText());
     335    }
     336    else if (auto* obj = qobject_cast<qtFileChooser*>(widget)) {
     337      settings.setValue(obj->objectName(), obj->fileName());
     338    }
     339    else if (auto* obj = qobject_cast<QCheckBox*>(widget)) {
     340      settings.setValue(obj->objectName(), obj->checkState());
     341    }
     342    else if (auto* obj = qobject_cast<QSpinBox*>(widget)) {
     343      settings.setValue(obj->objectName(), obj->value());
     344    }
     345    else if (auto* obj = qobject_cast<QSlider*>(widget)) {
     346      settings.setValue(obj->objectName(), obj->value());
     347    }
     348  };
     349
     350  QListIterator<QWidget*> it(_widgets);
     351  while (it.hasNext()) {
     352    storeWidgetValue(it.next());
     353  }
    492354
    493355  QStringList staList;
     
    504366  }
    505367  settings.setValue(_staTable->objectName(), staList);
    506 
    507   settings.setValue(_plotCoordinates ->objectName(), _plotCoordinates ->text());
    508   settings.setValue(_audioResponse   ->objectName(), _audioResponse   ->text());
    509   settings.setValue(_mapWinDotSize   ->objectName(), _mapWinDotSize   ->text());
    510   settings.setValue(_mapWinDotColor  ->objectName(), _mapWinDotColor  ->currentText());
    511   settings.setValue(_mapSpeedSlider  ->objectName(), _mapSpeedSlider  ->value());
    512368}
    513369
     
    534390    _rinexNav->setEnabled(false);
    535391    _corrFile->setEnabled(false);
     392    _biasFile->setEnabled(false);
    536393    _ionoFile->setEnabled(false);
    537394  }
    538395  else if (rinexFiles) {
    539396    _corrMount    ->setEnabled(false);
     397    _biasMount    ->setEnabled(false);
    540398    _ionoMount    ->setEnabled(false);
    541399    _audioResponse->setEnabled(false);
     
    543401
    544402  if ( _snxtroPath->text() != "" && !allDisabled) {
    545     _snxtroSampl->setEnabled(true);
    546     _snxtroIntr ->setEnabled(true);
    547     _snxtroAc   ->setEnabled(true);
     403    _snxtroSampl  ->setEnabled(true);
     404    _snxtroIntr   ->setEnabled(true);
     405    _snxtroAc     ->setEnabled(true);
    548406    _snxtroSolId  ->setEnabled(true);
    549     _snxtroSolType ->setEnabled(true);
    550     _snxtroCampId  ->setEnabled(true);
     407    _snxtroSolType->setEnabled(true);
     408    _snxtroCampId ->setEnabled(true);
    551409  }
    552410  else {
    553     _snxtroSampl->setEnabled(false);
    554     _snxtroIntr ->setEnabled(false);
    555     _snxtroAc   ->setEnabled(false);
     411    _snxtroSampl  ->setEnabled(false);
     412    _snxtroIntr   ->setEnabled(false);
     413    _snxtroAc     ->setEnabled(false);
    556414    _snxtroSolId  ->setEnabled(false);
    557     _snxtroSolType ->setEnabled(false);
    558     _snxtroCampId  ->setEnabled(false);
     415    _snxtroSolType->setEnabled(false);
     416    _snxtroCampId ->setEnabled(false);
    559417  }
    560418
     
    568426  }
    569427
     428  bool ar = (_arGPS->checkState()     == Qt::Checked ||
     429             _arGalileo->checkState() == Qt::Checked ||
     430             _arBDS->checkState()     == Qt::Checked);
     431  _arMinNumEpo->setEnabled(ar);
     432  _arMinNumSat->setEnabled(ar);
     433  _arUseYaw   ->setEnabled(ar);
     434  _arMaxFrac  ->setEnabled(ar);
     435  _arMaxSig   ->setEnabled(ar);
     436 
    570437  _dataSource->setEnabled(true);
    571438
     
    629496
    630497  const static QPalette paletteWhite(QColor(255, 255, 255));
    631   const static QPalette paletteGray(QColor(230, 230, 230));
     498  const static QPalette paletteGray (QColor(230, 230, 230));
    632499
    633500  // SNX TRO file sampling
     
    635502  if (sender() == 0 || sender() == _snxtroPath) {
    636503    if ( _snxtroPath->text() != "" ) {
    637       _snxtroSampl->setEnabled(true);
    638       _snxtroIntr ->setEnabled(true);
    639       _snxtroAc   ->setEnabled(true);
     504      _snxtroSampl  ->setEnabled(true);
     505      _snxtroIntr   ->setEnabled(true);
     506      _snxtroAc     ->setEnabled(true);
    640507      _snxtroSolId  ->setEnabled(true);
    641       _snxtroSolType ->setEnabled(true);
    642       _snxtroCampId  ->setEnabled(true);
    643       _snxtroSampl->setPalette(paletteWhite);
    644       _snxtroIntr ->setPalette(paletteWhite);
    645       _snxtroAc   ->setPalette(paletteWhite);
     508      _snxtroSolType->setEnabled(true);
     509      _snxtroCampId ->setEnabled(true);
     510      _snxtroSampl  ->setPalette(paletteWhite);
     511      _snxtroIntr   ->setPalette(paletteWhite);
     512      _snxtroAc     ->setPalette(paletteWhite);
    646513      _snxtroSolId  ->setPalette(paletteWhite);
    647       _snxtroSolType ->setPalette(paletteWhite);
    648       _snxtroCampId  ->setPalette(paletteWhite);
     514      _snxtroSolType->setPalette(paletteWhite);
     515      _snxtroCampId ->setPalette(paletteWhite);
    649516    }
    650517    else {
    651     _snxtroSampl->setEnabled(false);
    652     _snxtroIntr ->setEnabled(false);
    653     _snxtroAc   ->setEnabled(false);
     518    _snxtroSampl  ->setEnabled(false);
     519    _snxtroIntr   ->setEnabled(false);
     520    _snxtroAc     ->setEnabled(false);
    654521    _snxtroSolId  ->setEnabled(false);
    655     _snxtroSolType ->setEnabled(false);
    656     _snxtroCampId  ->setEnabled(false);
    657     _snxtroSampl->setPalette(paletteGray);
    658     _snxtroIntr ->setPalette(paletteGray);
    659     _snxtroAc   ->setPalette(paletteGray);
     522    _snxtroSolType->setEnabled(false);
     523    _snxtroCampId ->setEnabled(false);
     524    _snxtroSampl  ->setPalette(paletteGray);
     525    _snxtroIntr   ->setPalette(paletteGray);
     526    _snxtroAc     ->setPalette(paletteGray);
    660527    _snxtroSolId  ->setPalette(paletteGray);
    661     _snxtroSolType ->setPalette(paletteGray);
    662     _snxtroCampId  ->setPalette(paletteGray);
    663     }
    664   }
    665 
    666 
    667 }
     528    _snxtroSolType->setPalette(paletteGray);
     529    _snxtroCampId ->setPalette(paletteGray);
     530    }
     531  }
     532
     533
     534}
Note: See TracChangeset for help on using the changeset viewer.