You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
knutclient/src/knutpanelmeter.h

212 lines
5.6 KiB

/***************************************************************************
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 "knutanalog.h"
#include "knutvardata.h"
//#include <tqwidget.h>
#include <tqscrollview.h>
class TQLabel;
class TQFont;
/**
*@author Daniel Prynych
*/
class KNutPanelMeter : public TQScrollView {
Q_OBJECT
public:
/**
* Konstruktor
*
* Param taPanelPalette je paleta pozadi subpanelu MERAKU !!!
* @param activeUpsInfo ukazatel na data o aktivni UPS
* @param settingData ukazatel na zakladni data programu (barvy pozadi, mezikruzi, rucicky ... ,fonty atd )
* @param analogRecords ukazatel na tridu ktera pracuje s daty o upsekach
*
* @since 0.2
**/
KNutPanelMeter(TQPalette aPanelPalette, KNutVarData::upsInfoDef* activeUpsInfo, KNutVarData::SettingDataDef* settingData, KNutVarData* analogRecords, TQWidget *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);
/**
* Paints pointer for selected analog panel
* Prekresli rucicku pro vybrany analogovy panel.
*
* @param panelNumber is number of analog panel.
* @param value is value of settimg amalog panel.
* @param run = TRUE makes immediately repaint of panel
* @param panelNumber je cislo analogoveho panelu.
* @param value je hodnota na kterou je panel nastaven.
* @param run = TRUE provede okamzite prekresleni
*
* @since 0.2
**/
void repaintAnalogPointer (int panelNumber, float value, bool run = true);
/**
* Repaints analog panels
* Repainting range of panel for frequency and voltage, based on current setting.
* Prekresli a prebarvi analogove panely.
* Prekresuje rozsah panelu pro frekvenci a nepeti na zaklade 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);
/**
* Changes type of digital processing of pointer and repaints it.
* Zmeni zpusob digitalniho zpracovani rucucky a prekresli ji
*
* @since 0.1
**/
void changeAnalogPanelsDigProcessing (void);
/**
* Sets value of panels to zero
* Nastavi hodnotu vsech panelu na nulu
*
* @since 0.1
**/
void zeroingPanels (void);
/**
* Repaints backgroud of analog panels
* Prebarvi pozadi analogovych panelu.
*
* @param taPanelPalette je hodnota nove palety pro pozadi
*
* @since 0.1
**/
void setAnalogBG(TQPalette aPanelPalette);
/**
* Vraci soucasnou velikost panelu.
*
* @since 0.1
**/
virtual TQSize sizeHint (void);
public slots:
/**
* Sets new font for all panels
* Nastavy novy font ve vsech panelech.
*
* @since 0.1
**/
void slotSetPanelsFont(TQFont 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 struct ************************/
struct analogPanelRecordsDef {
int scaleEnd[knc::NumberOfVars];
int scaleStart[knc::NumberOfVars];
KNutAnalog* upsAnalogs[knc::NumberOfVars];
};
/*********** private vars *******************/
TQLabel* m_analogArea;
analogPanelRecordsDef* m_analogPanels;
KNutVarData::upsInfoDef* m_activeUpsInfo; // values for selected ups -- hodnoty pro vybrane ups
KNutVarData::SettingDataDef* m_settingData; // v teto strukture jsou ulozeny promene ktere nastavuji konfiguraci
KNutVarData* m_analogRecords;
TQPalette m_aPanelPalette;
int m_widthArea;
int m_heightArea;
};
#endif