Index: trunk/BNC/src/rinex/reqcanalyze.cpp
===================================================================
--- trunk/BNC/src/rinex/reqcanalyze.cpp	(revision 8556)
+++ trunk/BNC/src/rinex/reqcanalyze.cpp	(revision 8557)
@@ -49,5 +49,4 @@
 #include "bncutils.h"
 #include "graphwin.h"
-#include "polarplot.h"
 #include "availplot.h"
 #include "eleplot.h"
@@ -76,9 +75,9 @@
   analyzePlotSignals();
 
-  connect(this, SIGNAL(dspSkyPlot(const QString&, const QString&, QVector<t_polarPoint*>*,
-                                  const QString&, QVector<t_polarPoint*>*,
+  qRegisterMetaType< QVector<t_skyPlotData> >("QVector<t_skyPlotData>");
+
+  connect(this, SIGNAL(dspSkyPlot(const QString&, QVector<t_skyPlotData>,
                                   const QByteArray&, double)),
-          this, SLOT(slotDspSkyPlot(const QString&, const QString&, QVector<t_polarPoint*>*,
-                                    const QString&, QVector<t_polarPoint*>*,
+          this, SLOT(slotDspSkyPlot(const QString&, QVector<t_skyPlotData>,
                                     const QByteArray&, double)));
 
@@ -535,59 +534,34 @@
 void t_reqcAnalyze::preparePlotData(const t_rnxObsFile* obsFile) {
 
-  QString mp1Title = "Multipath\n";
-  QString mp2Title = "Multipath\n";
-  QString sn1Title = "Signal-to-Noise Ratio\n";
-  QString sn2Title = "Signal-to-Noise Ratio\n";
-
-  for(QMap<char, QVector<char> >::iterator it = _signalTypes.begin();
-      it != _signalTypes.end(); it++) {
-      mp1Title += QString(it.key()) + ":" + it.value()[0] + " ";
-      sn1Title += QString(it.key()) + ":" + it.value()[0] + " ";
-      mp2Title += QString(it.key()) + ":" + it.value()[1] + " ";
-      sn2Title += QString(it.key()) + ":" + it.value()[1] + " ";
-  }
-
-  QVector<t_polarPoint*>* dataMP1  = new QVector<t_polarPoint*>;
-  QVector<t_polarPoint*>* dataMP2  = new QVector<t_polarPoint*>;
-  QVector<t_polarPoint*>* dataSNR1 = new QVector<t_polarPoint*>;
-  QVector<t_polarPoint*>* dataSNR2 = new QVector<t_polarPoint*>;
-
-  // Loop over all observations
-  // --------------------------
-  for (int iEpo = 0; iEpo < _qcFile._qcEpo.size(); iEpo++) {
-    t_qcEpo& qcEpo = _qcFile._qcEpo[iEpo];
-    QMapIterator<t_prn, t_qcSat> it(qcEpo._qcSat);
-    while (it.hasNext()) {
-      it.next();
-      const t_prn&   prn   = it.key();
-      const t_qcSat& qcSat = it.value();
-      if (qcSat._eleSet) {
-
-        QString frqType[2];
-
-        for (int iFrq = 0; iFrq < qcSat._qcFrq.size(); iFrq++) {
-          const t_qcFrq& qcFrq = qcSat._qcFrq[iFrq];
-
-          for (int ii = 0; ii < 2; ii++) {
-            if (frqType[ii].isEmpty()) {
-              QMapIterator<char, QVector<char> > it(_signalTypes);
-              while (it.hasNext()) {
-                it.next();
-                if (it.key() == prn.system()) {
-                  if (QString(it.value()[ii]) == qcFrq._rnxType2ch.left(1)) {
-                    frqType[ii] = qcFrq._rnxType2ch;
-                    break;
-                  }
-                }
+  QVector<t_skyPlotData> skyPlotDataMP;
+  QVector<t_skyPlotData> skyPlotDataSN;
+
+  for(QMap<char, QVector<char> >::iterator it1 = _signalTypes.begin();
+      it1 != _signalTypes.end(); it1++) {
+
+    for (int ii = 0; ii < it1.value().size(); ii++) {
+
+      skyPlotDataMP.append(t_skyPlotData());  t_skyPlotData& dataMP = skyPlotDataMP.last();
+      skyPlotDataSN.append(t_skyPlotData());  t_skyPlotData& dataSN = skyPlotDataSN.last();
+
+      dataMP._title = "Multipath\n"             + QString(it1.key()) + ":" + it1.value()[ii] + " ";
+      dataSN._title = "Signal-to-Noise Ratio\n" + QString(it1.key()) + ":" + it1.value()[ii] + " ";
+
+      // Loop over all observations
+      // --------------------------
+      for (int iEpo = 0; iEpo < _qcFile._qcEpo.size(); iEpo++) {
+        t_qcEpo& qcEpo = _qcFile._qcEpo[iEpo];
+        QMapIterator<t_prn, t_qcSat> it2(qcEpo._qcSat);
+        while (it2.hasNext()) {
+          it2.next();
+          const t_qcSat& qcSat = it2.value();
+          if (qcSat._eleSet) {
+            for (int iFrq = 0; iFrq < qcSat._qcFrq.size(); iFrq++) {
+              const t_qcFrq& qcFrq = qcSat._qcFrq[iFrq];
+              if (QString(it1.value()[ii]) == qcFrq._rnxType2ch.left(1)) {
+                dataMP._data << (new t_polarPoint(qcSat._azDeg, 90.0 - qcSat._eleDeg, qcFrq._stdMP));
+                dataSN._data << (new t_polarPoint(qcSat._azDeg, 90.0 - qcSat._eleDeg, qcFrq._SNR));
               }
             }
-          }
-          if      (qcFrq._rnxType2ch == frqType[0]) {
-            (*dataSNR1) << (new t_polarPoint(qcSat._azDeg, 90.0 - qcSat._eleDeg, qcFrq._SNR));
-            (*dataMP1)  << (new t_polarPoint(qcSat._azDeg, 90.0 - qcSat._eleDeg, qcFrq._stdMP));
-          }
-          else if (qcFrq._rnxType2ch == frqType[1]) {
-            (*dataSNR2) << (new t_polarPoint(qcSat._azDeg, 90.0 - qcSat._eleDeg, qcFrq._SNR));
-            (*dataMP2)  << (new t_polarPoint(qcSat._azDeg, 90.0 - qcSat._eleDeg, qcFrq._stdMP));
           }
         }
@@ -601,41 +575,25 @@
     QFileInfo  fileInfo(obsFile->fileName());
     QByteArray title = fileInfo.fileName().toLatin1();
-    emit dspSkyPlot(obsFile->fileName(), mp1Title,  dataMP1,  mp2Title,  dataMP2,  "Meters",  2.0);
-    emit dspSkyPlot(obsFile->fileName(), sn1Title, dataSNR1, sn2Title, dataSNR2, "dbHz",   54.0);
+    emit dspSkyPlot(obsFile->fileName(), skyPlotDataMP, "Meters",  2.0);
+    emit dspSkyPlot(obsFile->fileName(), skyPlotDataSN, "dbHz",   54.0);
     emit dspAvailPlot(obsFile->fileName(), title);
   }
-  else {
-    for (int ii = 0; ii < dataMP1->size(); ii++) {
-      delete dataMP1->at(ii);
-    }
-    delete dataMP1;
-    for (int ii = 0; ii < dataMP2->size(); ii++) {
-      delete dataMP2->at(ii);
-    }
-    delete dataMP2;
-    for (int ii = 0; ii < dataSNR1->size(); ii++) {
-      delete dataSNR1->at(ii);
-    }
-    delete dataSNR1;
-    for (int ii = 0; ii < dataSNR2->size(); ii++) {
-      delete dataSNR2->at(ii);
-    }
-    delete dataSNR2;
-  }
-}
-
-//
-////////////////////////////////////////////////////////////////////////////
-void t_reqcAnalyze::slotDspSkyPlot(const QString& fileName, const QString& title1,
-                                   QVector<t_polarPoint*>* data1, const QString& title2,
-                                   QVector<t_polarPoint*>* data2, const QByteArray& scaleTitle,
-                                   double maxValue) {
+}
+
+//
+////////////////////////////////////////////////////////////////////////////
+void t_reqcAnalyze::slotDspSkyPlot(const QString& fileName,
+                                   QVector<t_skyPlotData> skyPlotData,
+                                   const QByteArray& scaleTitle, double maxValue) {
 
   if (BNC_CORE->GUIenabled()) {
 
     if (maxValue == 0.0) {
-      if (data1) {
-        for (int ii = 0; ii < data1->size(); ii++) {
-          double val = data1->at(ii)->_value;
+      QVectorIterator<t_skyPlotData> it(skyPlotData);
+      while (it.hasNext()) {
+        const t_skyPlotData&          plotData = it.next();
+        const QVector<t_polarPoint*>& data     = plotData._data;
+        for (int ii = 0; ii < data.size(); ii++) {
+          double val = data.at(ii)->_value;
           if (maxValue < val) {
             maxValue = val;
@@ -643,12 +601,4 @@
         }
       }
-      if (data2) {
-        for (int ii = 0; ii < data2->size(); ii++) {
-          double val = data2->at(ii)->_value;
-          if (maxValue < val) {
-            maxValue = val;
-          }
-        }
-      }
     }
 
@@ -656,17 +606,13 @@
 
     QVector<QWidget*> plots;
-    if (data1) {
-      QwtText title(title1);
+    QMutableVectorIterator<t_skyPlotData> it(skyPlotData);
+    while (it.hasNext()) {
+      t_skyPlotData&          plotData = it.next();
+      QVector<t_polarPoint*>& data     = plotData._data;
+      QwtText title(plotData._title);
       QFont font = title.font(); font.setPointSize(font.pointSize()-1); title.setFont(font);
-      t_polarPlot* plot1 = new t_polarPlot(title, scaleInterval, BNC_CORE->mainWindow());
-      plot1->addCurve(data1);
-      plots << plot1;
-    }
-    if (data2) {
-      QwtText title(title2);
-      QFont font = title.font(); font.setPointSize(font.pointSize()-1); title.setFont(font);
-      t_polarPlot* plot2 = new t_polarPlot(title, scaleInterval, BNC_CORE->mainWindow());
-      plot2->addCurve(data2);
-      plots << plot2;
+      t_polarPlot* plot = new t_polarPlot(title, scaleInterval, BNC_CORE->mainWindow());
+      plot->addCurve(&data);
+      plots << plot;
     }
 
Index: trunk/BNC/src/rinex/reqcanalyze.h
===================================================================
--- trunk/BNC/src/rinex/reqcanalyze.h	(revision 8556)
+++ trunk/BNC/src/rinex/reqcanalyze.h	(revision 8557)
@@ -31,6 +31,5 @@
 #include "ephemeris.h"
 #include "satObs.h"
-
-class t_polarPoint;
+#include "polarplot.h"
 
 class t_plotData {
@@ -58,8 +57,21 @@
   ~t_reqcAnalyze();
 
+  class t_skyPlotData {
+   public:
+    t_skyPlotData() {}
+    ~t_skyPlotData() {}
+    void clear() {
+      for (int ii = 0; ii < _data.size(); ii++) {
+        delete _data.at(ii);
+      }
+    }
+    QString                _title;
+    QVector<t_polarPoint*> _data;
+  };
+
  signals:
   void finished();
-  void dspSkyPlot(const QString&, const QString&, QVector<t_polarPoint*>*,
-                  const QString&, QVector<t_polarPoint*>*, const QByteArray&, double);
+  void dspSkyPlot(const QString&, QVector<t_skyPlotData> skyPlotData,
+                  const QByteArray&, double);
   void dspAvailPlot(const QString&, const QByteArray&);
 
@@ -158,7 +170,6 @@
 
  private slots:
-  void   slotDspSkyPlot(const QString& fileName, const QString& title1,
-                    QVector<t_polarPoint*>* data1, const QString& title2,
-                    QVector<t_polarPoint*>* data2, const QByteArray& scaleTitle, double maxValue);
+  void   slotDspSkyPlot(const QString& fileName, QVector<t_skyPlotData> skyPlotData,
+                        const QByteArray& scaleTitle, double maxValue);
 
   void   slotDspAvailPlot(const QString& fileName, const QByteArray& title);
