Index: trunk/BNC/src/rinex/reqcanalyze.cpp
===================================================================
--- trunk/BNC/src/rinex/reqcanalyze.cpp	(revision 4636)
+++ trunk/BNC/src/rinex/reqcanalyze.cpp	(revision 4659)
@@ -52,4 +52,5 @@
 #include "polarplot.h"
 #include "availplot.h"
+#include "zenplot.h"
 
 using namespace std;
@@ -410,4 +411,5 @@
     double  aziDeg  = 0.0;
     double  zenDeg  = 0.0;
+    bool    zenFlag = false;
 
     // Loop over all Epochs within one Chunk of Data
@@ -443,4 +445,5 @@
             aziDeg = azSat * 180.0/M_PI;
             zenDeg = 90.0 - eleSat * 180.0/M_PI;
+            zenFlag = true;
           }
         }
@@ -529,4 +532,8 @@
         _availDataMap[prn]._L2ok << mjdX24;
       }
+    }
+    if (zenFlag) {
+      _availDataMap[prn]._zenTim << mjdX24;
+      _availDataMap[prn]._zenDeg << zenDeg;
     }
 
@@ -566,9 +573,12 @@
   if (dynamic_cast<bncApp*>(qApp)->GUIenabled()) {
 
-    t_availPlot* plot = new t_availPlot(0, &_availDataMap);
-    plot->setTitle(title);
+    t_availPlot* plotA = new t_availPlot(0, &_availDataMap);
+    plotA->setTitle(title);
+
+    t_zenPlot* plotZ = new t_zenPlot(0, &_availDataMap);
+    plotZ->setTitle(title);
 
     QVector<QWidget*> plots;
-    plots << plot;
+    plots << plotA << plotZ;
     t_graphWin* graphWin = new t_graphWin(0, fileName, plots, 0, 0);
     graphWin->show();
Index: trunk/BNC/src/rinex/reqcanalyze.h
===================================================================
--- trunk/BNC/src/rinex/reqcanalyze.h	(revision 4636)
+++ trunk/BNC/src/rinex/reqcanalyze.h	(revision 4659)
@@ -42,4 +42,6 @@
   QVector<double> _L1gap;
   QVector<double> _L2gap;
+  QVector<double> _zenDeg;
+  QVector<double> _zenTim;
 };
 
Index: trunk/BNC/src/rinex/zenplot.cpp
===================================================================
--- trunk/BNC/src/rinex/zenplot.cpp	(revision 4659)
+++ trunk/BNC/src/rinex/zenplot.cpp	(revision 4659)
@@ -0,0 +1,156 @@
+// Part of BNC, a utility for retrieving decoding and
+// converting GNSS data streams from NTRIP broadcasters.
+//
+// Copyright (C) 2007
+// German Federal Agency for Cartography and Geodesy (BKG)
+// http://www.bkg.bund.de
+// Czech Technical University Prague, Department of Geodesy
+// http://www.fsv.cvut.cz
+//
+// Email: euref-ip@bkg.bund.de
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation, version 2.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+/* -------------------------------------------------------------------------
+ * BKG NTRIP Client
+ * -------------------------------------------------------------------------
+ *
+ * Class:      t_zenPlot
+ *
+ * Purpose:    Plot with satellite zenith distances
+ *
+ * Author:     L. Mervart
+ *
+ * Created:    08-Sep-2012
+ *
+ * Changes:    
+ *
+ * -----------------------------------------------------------------------*/
+
+#include <qwt_scale_draw.h>
+#include <qwt_text.h>
+#include <qwt_legend.h>
+
+#include "zenplot.h"
+#include "reqcanalyze.h"
+
+//
+//////////////////////////////////////////////////////////////////////////////
+class t_scaleDrawTime : public QwtScaleDraw {
+ public:
+  t_scaleDrawTime() {}
+  virtual QwtText label(double mjdX24) const {
+    bncTime epoTime; epoTime.setmjd(mjdX24/24.0);
+    return QwtText(epoTime.timestr(0,':').c_str());
+  }
+};
+
+//
+//////////////////////////////////////////////////////////////////////////////
+class t_scaleDrawPrn : public QwtScaleDraw {
+ public:
+  t_scaleDrawPrn() {}
+  virtual QwtText label(double iPrn) const {
+    return _yLabels[iPrn];
+  }
+  QMap<int, QString> _yLabels;
+};
+
+// Constructor
+//////////////////////////////////////////////////////////////////////////////
+t_zenPlot::t_zenPlot(QWidget* parent, QMap<QString, t_availData>* availDataMap) 
+: QwtPlot(parent) {
+
+  setCanvasBackground(QColor(Qt::white));
+
+  // Axes
+  // ----
+  setAxisScaleDraw(QwtPlot::xBottom, new t_scaleDrawTime());
+  setAxisLabelRotation(QwtPlot::xBottom, -10.0);
+  setAxisLabelAlignment(QwtPlot::xBottom, Qt::AlignLeft | Qt::AlignBottom);
+
+  t_scaleDrawPrn* scaleDrawPrn = new t_scaleDrawPrn();
+  setAxisScaleDraw(QwtPlot::yLeft, scaleDrawPrn);
+
+  // Smaller Font for y-Axis
+  // -----------------------
+  QFont yFont = axisFont(QwtPlot::yLeft);
+  yFont.setPointSize(yFont.pointSize()/2);
+  setAxisFont(QwtPlot::yLeft, yFont);
+
+  // Symbols
+  // -------
+  QColor red(220,20,60);
+  QColor green(150,200,50);
+  QColor blue(60,100,200);
+  QwtSymbol symbRed(QwtSymbol::Rect, QBrush(red), QPen(red), QSize(2,1));
+  QwtSymbol symbGreen(QwtSymbol::Rect, QBrush(green), QPen(green), QSize(2,1));
+  QwtSymbol symbBlue (QwtSymbol::Rect, QBrush(blue), QPen(blue), QSize(2,1));
+
+  // Legend
+  // ------
+  QwtLegend* legend = new QwtLegend;
+  insertLegend(legend, QwtPlot::RightLegend);
+
+  // Curves
+  // ------
+  int iC = 0;
+  QMapIterator<QString, t_availData > it(*availDataMap);
+  while (it.hasNext()) {
+    it.next();
+    ++iC;
+    const QString&     prn       = it.key();
+    const t_availData& availData = it.value();
+
+    scaleDrawPrn->_yLabels[iC] = prn;
+
+    // Draw one curve
+    // --------------
+    if (availData._L1ok.size()) {
+      const QVector<double>& xData = availData._zenTim;
+      const QVector<double>& yData = availData._zenDeg;
+      addCurve(prn, symbGreen, xData, yData);
+    }
+  }
+  
+  QList<double> ticks[QwtScaleDiv::NTickTypes];
+  QList<double> &majorTicks = ticks[QwtScaleDiv::MajorTick];
+  QMapIterator<int, QString> itT(scaleDrawPrn->_yLabels);
+  while (itT.hasNext()) {
+    itT.next();
+    majorTicks << double(itT.key());
+  }
+  QwtScaleDiv yScaleDiv(majorTicks.first()-0.5, majorTicks.last()+0.5, ticks );
+  setAxisScaleDiv(QwtPlot::yLeft, yScaleDiv);
+
+  // Important !!!
+  // -------------
+  replot();
+}
+
+// Add Curve
+//////////////////////////////////////////////////////////////////////////////
+QwtPlotCurve* t_zenPlot::addCurve(const QString& name, 
+                                    const QwtSymbol& symbol,
+                                    const QVector<double>& xData,
+                                    const QVector<double>& yData) {
+  QwtPlotCurve* curve = new QwtPlotCurve(name);
+  curve->setSymbol(new QwtSymbol(symbol));
+  curve->setStyle(QwtPlotCurve::NoCurve);
+  curve->setXAxis(QwtPlot::xBottom);
+  curve->setYAxis(QwtPlot::yLeft);
+  curve->setSamples(xData, yData);
+  curve->attach(this);
+  return curve;
+}
Index: trunk/BNC/src/rinex/zenplot.h
===================================================================
--- trunk/BNC/src/rinex/zenplot.h	(revision 4659)
+++ trunk/BNC/src/rinex/zenplot.h	(revision 4659)
@@ -0,0 +1,23 @@
+#ifndef ZENPLOT_H
+#define ZENPLOT_H
+
+#include <QtCore>
+#include <qwt_plot.h>
+#include <qwt_symbol.h>
+#include <qwt_plot_curve.h>
+
+class t_availData;
+
+class t_zenPlot: public QwtPlot {
+ Q_OBJECT
+
+public:
+  t_zenPlot(QWidget* parent, QMap<QString, t_availData>* availDataMap);
+
+private:
+  QwtPlotCurve* addCurve(const QString& name, const QwtSymbol& symbol,
+                         const QVector<double>& xData, 
+                         const QVector<double>& yData);
+};
+
+#endif
