/***************************************************************************
                          knutpanelmeter.h  -  description
                             -------------------
    begin                : Út b?e 16 2004
    copyright            : (C) 2004 by Daniel Prynych
    email                : Daniel.Prynych@alo.cz
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   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; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 ***************************************************************************/

#ifndef KNUTPANELMETER_H
#define KNUTPANELMETER_H

#include "kanalog.h"
#include "knutvardata.h"


//#include <qwidget.h>
#include <qscrollview.h>
//#include <qlabel.h>
//#include <qfont.h>


  struct analogPanelsRecord {
    int scaleEnd[knc::NumberOfVars];
    int scaleStart[knc::NumberOfVars];
    KAnalog* upsAnalogs[knc::NumberOfVars];
    };

class QLabel;
class QFont;

/**
  *@author Daniel Prynych
  */
class KNutPanelMeter : public QScrollView  {
   Q_OBJECT
public:
   
/**
 * Konstruktor
 *
 * Param taPanelPalette je paleta pozadi subpanelu MERAKU !!!
 * @param tActiveUpsInfo ukazatel na data o aktivni UPS
 * @param tSettingData ukazatel na zakladni data programu (barvy pozadi, mezikruzi, rucicky ... ,fonty atd )
 * @param tAnalogRecords ukazatel na tridu ktera pracuje s daty o upsekach
 *
 * @since  0.2
 **/
  KNutPanelMeter(QPalette taPanelPalette, struct upsInfo* tActiveUpsInfo,SettingDataDef* tSettingData, KNutVarData* tAnalogRecords, QWidget *parent=0, const char *name=0);

/**
 * Destruktor
 *
 * @since  0.1
 **/
  ~KNutPanelMeter();

/**
 * Zrusi analogove panely vcetne uvoneni pameti.
 *
 * @since  0.1
 **/
  void deActivateAnalogs (void);


/**
 * Vytvori a inicializuje analogove panely.
 *
 * @since  0.1
 **/
  void activateAnalogs (void);

/**
 * Rozmisti analogove panely po hlavnim panelu a spocte jeho rozmery.
 *
 * @param showPanels je true jsou rozsviceny (show) subpanely
 * @since  0.2
 **/
  void setSize (bool showPanels = false);


/**
 * Prekresli zmenu rozsahu pro dany analogovy panel (jenom jeden)
 * Pokud panel nepodporuje zmeny rozsahu neprovede nic.
 * Zmenu rozsahu podporuji nasledujici panely: Current,BattVolt,BattCurrent
 *
 * @param panelNumber je cislo analogoveho panelu.
 * @param value je hodnota na kterou je panel nastaven.
 *
 * @since  0.1
 **/
  void repaintScaleAnalogPanel (int panelNumber, float value);

/**
 * Prekresli rucicku pro dany analogovy panel.
 *
 * @param panelNumber je cislo analogoveho panelu.
 * @param value je hodnota na kterou je panel nastaven.
 *
 * @since  0.1
 **/
  void repaintAnalogFinger (int panelNumber, float value);


/**
 * Prekresli a prebarvi analogove panely.
 * Podle nastaveni prekresuje rozsah panelu pro frequency a nepeti na zakldade soucasneho nastaveni.
 *
 * @param repaintFrequencyPanels urcuje ze ma prekreslit panely ktere zobrazuji vstupni frequency.
 * @param repaintVoltagePanels urcuje ze ma prekreslit panely ktere zobrazuji vstupni a vystupni napeti.
 * @param repaintAllPanels urcuje ze ma prebarvit vsechny prvky panelu.
 *
 * @since  0.1
 **/
  void repaintAnalogPanels (bool repaintFrequencyPanels, bool repaintVoltagePanels, bool repaintAllPanels);

/**
  * Nastavi hodnotu vsech panelu na nulu
 *
 * @since  0.1
 **/
   void zeroingPanels (void);

/**
 * Prebarvi pozadi analogovych panelu.
 *
 * @param taPanelPalette je hodnota nove palety pro pozadi
 *
 * @since  0.1
 **/
  void setAnalogBG(QPalette taPanelPalette);

  

/**
 * Vraci soucasnou velikost panelu.
 *
 * @since  0.1
 **/
  virtual QSize sizeHint (void);

public slots:
  
  /**
   * Nastavy novy font ve vsech panelech.
   *
   * @since  0.1
   **/
  void slotSetPanelsFont(QFont newFont);

  
private:
/************ private const *****************/

  static const int SpacePanels = 2; // vzdalenost mezi meraky, length between panels

  static const int MaxBattVolt = 350;   //   max battery.voltage
  static const int MaxCurrent = 50;    //     max output.current
  static const int MaxBattCurrent = 50;   //  max battery.current
/*********** private vars *******************/  

  QLabel* analogArea;

  struct analogPanelsRecord* analogPanels;
  
  struct upsInfo* activeUpsInfo; // hodnoty pro vybrane ups
  SettingDataDef* settingData;  // v teto strukture jsou ulozeny promene ktere nastavuji konfiguraci

  KNutVarData* analogRecords;

  QPalette aPanelPalette;

  int widthArea;
  int heightArea;
};

#endif


syntax highlighted by Code2HTML, v. 0.9.1