summaryrefslogtreecommitdiffstats
path: root/src/knutmainwindow.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/knutmainwindow.cpp')
-rw-r--r--src/knutmainwindow.cpp813
1 files changed, 813 insertions, 0 deletions
diff --git a/src/knutmainwindow.cpp b/src/knutmainwindow.cpp
new file mode 100644
index 0000000..c5aaf16
--- /dev/null
+++ b/src/knutmainwindow.cpp
@@ -0,0 +1,813 @@
+/***************************************************************************
+ knutmainwindow.cpp - description
+ -------------------
+ begin : Po cen 16 2003
+ copyright : (C) 2003 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. *
+ * *
+ ***************************************************************************/
+
+
+#include "knutmainwindow.h"
+#include "knutvardata.h"
+
+#include <kmessagebox.h>
+#include <kstdaction.h>
+#include <kconfig.h>
+#include <ksimpleconfig.h>
+#include <kstatusbar.h>
+#include <kkeydialog.h>
+#include <kprogress.h>
+
+
+#include <qfont.h>
+#include <qpalette.h>
+#include <qbrush.h>
+#include <qcolor.h>
+#include <qstring.h>
+#include <qscrollview.h>
+#include <qlayout.h>
+#include <qiconset.h>
+#include <qstring.h>
+#include <qstringlist.h>
+#include <qlabel.h>
+#include <qsplitter.h>
+//#include <qprogressbar.h>
+
+
+
+
+#include <math.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#include <iostream>
+
+
+
+extern const char *nameUpsVars1[];
+extern const char *nameUpsVars2[];
+
+const char *descrOfConnection = I18N_NOOP("test of conection from 5");
+
+
+
+KNutMainWindow::KNutMainWindow(QStringList *tListKNutEvent, KNutVarData::upsInfoDef* tActiveUpsInfo, KNutVarData::SettingDataDef* tSettingData, KNutUpsData* tUpsRecords, KNutVarData* tAnalogRecords, QWidget* parent, const char *name) : KMainWindow(parent, name),
+ m_listKNutEvent(tListKNutEvent), m_activeUpsInfo(tActiveUpsInfo),m_settingData (tSettingData),
+ m_upsRecords(tUpsRecords), m_analogRecords (tAnalogRecords) {
+
+
+
+ m_settingData->activatedMainWindow=true; //information about state of mainWindow
+
+ initVars();
+ initStatusBar();
+ initAction();
+// createGUI ("/home/dan/Projekty/knutclient/src/knutclientui.rc"); // pred distribuci nezapomenout odstranit retezec
+ // createGUI vytvori zakladni strukturu podle souboru knutclientui.rc
+ createGUI ();
+ initToolBar ();
+
+
+ m_descriptionAction->setChecked(m_settingData->useDescription);
+
+ //sets input frequency and input voltage
+ //nastavime vstupni frekvenci a vstupni napeti
+ m_analogRecords->setFrequency(m_settingData->inputFrequency);
+ m_analogRecords->setVoltage(m_settingData->inputVoltage);
+
+ //sets palette for analog panels
+ // nastavime paletu pro analogove panely
+ if (m_settingData->customBAnalogColor) {
+ m_aPanelPalette.setColor(QPalette::Active,QColorGroup::Background,m_settingData->aPanelBackgroundColor);
+ m_aPanelPalette.setColor(QPalette::Inactive,QColorGroup::Background,m_settingData->aPanelBackgroundColor);
+ }
+
+ if (m_settingData->customBColor) {
+ m_areaPalette.setColor(QPalette::Active,QColorGroup::Background,m_settingData->mainBackgroundColor);
+ m_areaPalette.setColor(QPalette::Inactive,QColorGroup::Background,m_settingData->mainBackgroundColor);
+ }
+
+
+ // makes main area // Vytvorime hlavni plochu
+ m_area = new QLabel (this);
+ setCentralWidget (m_area);
+
+ QHBoxLayout* mainLayout = new QHBoxLayout(m_area);
+ m_mainSplit = new QSplitter(Qt::Horizontal,m_area);
+ m_mainSplit->setOpaqueResize(true);
+
+ mainLayout->addWidget(m_mainSplit);
+ if (m_settingData->customBPanelColor) {
+ m_mPanelPalette.setColor(QPalette::Active,QColorGroup::Background,m_settingData->mPanelBackgroundColor);
+ m_mPanelPalette.setColor(QPalette::Inactive,QColorGroup::Background,m_settingData->mPanelBackgroundColor);
+ }
+
+ QScrollView* panelSV = new QScrollView(m_mainSplit,"panelSV");
+ if (m_settingData->customFont)
+ m_frontPanel = new KNutFrontPanel (&m_mPanelPalette,m_mainSplit,m_settingData->panelFlags,&(m_settingData->mPanelFont),"FrontPanel");
+ else
+ m_frontPanel = new KNutFrontPanel (&m_mPanelPalette,m_mainSplit,m_settingData->panelFlags,&(m_settingData->systemFont),"FrontPanel");
+ panelSV->addChild(m_frontPanel);
+ panelSV->setResizePolicy ( QScrollView::AutoOneFit ) ;
+ m_mainSplit->setResizeMode (panelSV,QSplitter::FollowSizeHint);
+
+ m_panelMeter = new KNutPanelMeter(m_aPanelPalette,m_activeUpsInfo,m_settingData,m_analogRecords,m_mainSplit);
+ m_mainSplit->setResizeMode (m_panelMeter,QSplitter::Stretch );
+
+ m_area->setPalette(m_areaPalette);
+ m_panelMeter->setPalette(m_areaPalette);
+
+ // sets Combo a actives connections to meter panels
+ // Nastavime COMBO a pripadne aktivujeme spojeni na merici panely
+ int activeUpsNameIndex = activeMainCombo ();
+ if (activeUpsNameIndex != -1) toolBar(0)->getCombo(1)->setCurrentItem( activeUpsNameIndex );
+
+ showUpsData();
+ setGeometry (m_settingData->x,m_settingData->y,m_settingData->width,m_settingData->height);
+ show();
+
+
+ //message has to include into status bar after showing window,
+ // only for KDE relase < 3.0.0
+
+ // jinak se nastavi minimalni velikost ne mensi nez delka aktivni zpravy.
+
+ initStatusBarMessage();
+ }
+
+
+
+void KNutMainWindow::addComboStatusItem (const QString text, const QString name) {
+ if (m_infoCombo->count() >= (int)knc::maxCountKNutEvent) m_infoCombo->removeItem(0);
+ if (m_listKNutEvent->count() > knc::maxCountKNutEvent) m_listKNutEvent->remove(m_listKNutEvent->begin());
+
+ QString dateTime(QDate::currentDate().toString());
+ dateTime +=" " + QTime::currentTime().toString();
+ if (name.isEmpty()) {
+ m_infoCombo->insertItem(dateTime+" "+text);
+ m_listKNutEvent->append(dateTime+" "+text);
+ }
+ else {
+ m_infoCombo->insertItem(dateTime+" "+name+" : "+text);
+ m_listKNutEvent->append(dateTime+" "+name+" : "+text);
+ }
+ m_infoCombo->setCurrentItem(m_infoCombo->count()-1);
+ if (m_listKNutEvent->count() > knc::maxCountKNutEvent) m_listKNutEvent->remove(m_listKNutEvent->begin());
+ }
+
+
+KNutMainWindow::~KNutMainWindow(void) {
+
+ m_settingData->height = height();
+ m_settingData->width = width();
+ m_settingData->y = y();
+ m_settingData->x = x();
+
+ delete m_frontPanel;
+ delete m_panelMeter;
+ }
+
+
+void KNutMainWindow::setConfig (unsigned int changeSetting) {
+
+
+//qDebug ("KNutMainWindow::setConfig");
+ KNutVarData::VarStrucDef analogMemberData;
+ bool repaintVoltagePanels = false;
+ bool repaintFrequencyPanels = false;
+ bool repaintAllPanels = false;
+ bool repaintOAPanels = false;
+
+ // Main Setting
+
+ // Nastavime zmenu barvy pozadi
+ // sets background color
+ if (changeSetting & KNutPrefDlg::ChangeCustomBColor) {
+ if (!m_settingData->customBColor) { // nastavime barvu pozadi podle systemu
+ m_area->setPalette (m_mainPalette); // we set background color based on system
+ m_panelMeter->setPalette (m_mainPalette);
+ repaint();
+ }
+ else {
+ m_areaPalette.setColor(QPalette::Active,QColorGroup::Background,m_settingData->mainBackgroundColor);
+ m_areaPalette.setColor(QPalette::Inactive,QColorGroup::Background,m_settingData->mainBackgroundColor);
+ m_area->setPalette (m_areaPalette);
+ m_panelMeter->setPalette (m_areaPalette);
+ repaint();
+ }
+ }
+ else {
+ if (changeSetting & KNutPrefDlg::ChangeMBColor ) {
+ m_areaPalette.setColor(QPalette::Active,QColorGroup::Background,m_settingData->mainBackgroundColor);
+ m_areaPalette.setColor(QPalette::Inactive,QColorGroup::Background,m_settingData->mainBackgroundColor);
+ m_area->setPalette (m_areaPalette);
+ m_panelMeter->setPalette (m_areaPalette);
+ repaint();
+ }
+ }
+
+ // Sets background for panels
+ // sets frequence
+ // sets voltage
+ // XFer is switch-on and one exist for this UPS
+
+
+ if ((changeSetting & KNutPrefDlg::ChangeXFer) || // je provedena nejaka zmena na napeti nebo frekvence
+ (changeSetting & KNutPrefDlg::ChangeVoltage) || (changeSetting & KNutPrefDlg::ChangeFrequency)) {
+
+ if ((changeSetting & KNutPrefDlg::ChangeXFer) && (m_settingData->lowHighXfer) && (m_existLowHighXfer)) {
+ // xfer was activated
+ if (changeSetting & KNutPrefDlg::ChangeXFer) {
+ if (abs((int)(230 - (m_lowXfer + (m_highXfer - m_lowXfer) /2))) > abs((int)(120 - (m_lowXfer + (m_highXfer - m_lowXfer) /2)))) {
+ m_analogRecords->setVoltage(120);
+ m_analogRecords->setFrequency(60);
+ }
+ else {
+ m_analogRecords->setVoltage(230);
+ m_analogRecords->setFrequency(50);
+ }
+ m_analogRecords->setXfer(m_lowXfer,m_highXfer);
+ repaintVoltagePanels = true;
+ repaintFrequencyPanels = true;
+ }
+ }
+ else {
+ // XFER neni aktivovano nebo je nepodporuje UPS
+ // XFER isn;t activated or XFER isn't supported by UPS
+ if ((changeSetting & KNutPrefDlg::ChangeVoltage) || ((changeSetting & KNutPrefDlg::ChangeXFer))) {
+ // byla aktivovana zmena napeti nebo zmena xfer a zaroven ho ups podporuje
+ m_analogRecords->setVoltage(m_settingData->inputVoltage);
+ repaintVoltagePanels=true;
+ }
+ if ((changeSetting & KNutPrefDlg::ChangeFrequency) || ((changeSetting & KNutPrefDlg::ChangeXFer))) {
+ // byla aktivovana zmena napeti nebo zmena xfer a zaroven ho ups podporuje
+ m_analogRecords->setFrequency(m_settingData->inputFrequency);
+ repaintFrequencyPanels=true;
+ }
+ }
+ }
+
+ // Analog setting
+ // now DigitalProcesing of pointer
+ if (changeSetting & KNutPrefDlg::ChangeTypeOfDigProcessing) { //type of digital processing was changed
+ m_panelMeter->changeAnalogPanelsDigProcessing(); //paint pointers with new digotal processing
+ }
+
+ if ((changeSetting & KNutPrefDlg::ChangeCustomAPanelBColor) || // barva panelu je zmenena, panel color is changed
+ (changeSetting & KNutPrefDlg::ChangeAPBColor)) {
+ if (m_settingData->customBAnalogColor) {
+ m_aPanelPalette.setColor(QPalette::Active,QColorGroup::Background,m_settingData->aPanelBackgroundColor);
+ m_aPanelPalette.setColor(QPalette::Inactive,QColorGroup::Background,m_settingData->aPanelBackgroundColor);
+ repaintAllPanels=true;
+ m_panelMeter->setAnalogBG(m_aPanelPalette);
+ }
+ else {
+ m_aPanelPalette = m_mainPalette;
+ repaintAllPanels=true;
+ m_panelMeter->setAnalogBG(m_aPanelPalette);
+ }
+ }
+
+ if ((changeSetting & KNutPrefDlg::ChangeCustomAPanelOColor) || // je provedena zmena barvy panelu
+ (changeSetting & KNutPrefDlg::ChangeAPOColor)) {
+ if (m_settingData->customOAnalogColor) {
+ repaintAllPanels=true;
+ repaintOAPanels=true;
+ }
+ else {
+ repaintAllPanels=true;
+ repaintOAPanels=true;
+ }
+ }
+ // regeneration of panel uses for setting Main and setting Analog
+ // pregenerovani panelu slozi pro setting Main a setting Analog
+ m_panelMeter->repaintAnalogPanels (repaintFrequencyPanels, repaintVoltagePanels, repaintAllPanels);
+
+ if (m_activeUpsInfo->record.name != "") {
+ m_panelMeter->setSize();
+ m_mainSplit->refresh();
+ }
+
+ // UPS Setting
+ if (changeSetting & KNutPrefDlg::ChangeUpsSetting ) activeMainCombo();
+ else {
+ if (changeSetting & KNutPrefDlg::ChangeUpsCount) activeMainCombo();
+ }
+
+ // Main Panel Setting
+ // change of background color
+ // zmena barvy pozadi;
+ if (changeSetting & KNutPrefDlg::ChangeCustomMPanelBColor) {
+ if (!m_settingData->customBPanelColor) { // nastavime barvu pozadi podle systemu
+ m_frontPanel->setPalette (m_mainPalette);
+ }
+ else {
+ m_mPanelPalette.setColor(QPalette::Active,QColorGroup::Background,m_settingData->mPanelBackgroundColor);
+ m_mPanelPalette.setColor(QPalette::Inactive,QColorGroup::Background,m_settingData->mPanelBackgroundColor);
+ m_frontPanel->setPalette (m_mPanelPalette);
+ }
+ }
+ else {
+ if (changeSetting & KNutPrefDlg::ChangeMPBColor ) {
+ m_mPanelPalette.setColor(QPalette::Active,QColorGroup::Background,m_settingData->mPanelBackgroundColor);
+ m_mPanelPalette.setColor(QPalette::Inactive,QColorGroup::Background,m_settingData->mPanelBackgroundColor);
+ m_frontPanel->setPalette (m_mPanelPalette);
+ }
+ }
+
+ if (changeSetting & KNutPrefDlg::ChangeMainPanelSetting ) {
+ if (m_settingData->panelFlags != m_frontPanel->getPanelFlags()) {
+ m_frontPanel->setPanelFlags(m_settingData->panelFlags);
+ //aktivujema a presuneme prvky panelu
+ // activates and moves items of panel
+ m_frontPanel->paintPanel();
+ }
+ }
+
+ // Font panel setting
+ if (changeSetting & KNutPrefDlg::ChangeAnalogFont ) {
+ QFont newAnalogFont;
+ if (m_settingData->customFont) {
+ newAnalogFont=m_settingData->aPanelFont;
+ }
+ else {
+ newAnalogFont=m_settingData->systemFont;
+ }
+
+ m_panelMeter->slotSetPanelsFont(newAnalogFont);
+ }
+ if (changeSetting & KNutPrefDlg::ChangePanelFont ) {
+ QFont newPanelFont;
+ if (m_settingData->customFont) {
+ m_frontPanel->slotSetPanelFont(m_settingData->mPanelFont);
+ }
+ else {
+ m_frontPanel->slotSetPanelFont(m_settingData->systemFont);
+ }
+ }
+ }
+
+
+
+
+void KNutMainWindow::showUpsData (void) {
+
+//qDebug ("KNutMainWindow::showUpsData start");
+
+
+ if ((m_activeUpsInfo->upsNet != 0L) && (!m_activeUpsInfo->netError) &&
+ (m_activeUpsInfo->upsDriverState == knc::connected)) {
+ int runtimeVal;
+ QString nutStringVar;
+ bool okFloat;
+// activeUpsInfo->oldStatus=KNutNet::initStatus;
+
+ // Nastaveni nemenych dat jsou precteny pouze jednou, predpoklada se jejich nemenost
+ // setting of unchange data, ones are reading only one.
+ nutStringVar = m_activeUpsInfo->upsNet->readStringVar(m_activeUpsInfo->lowxferVar);
+ switch (m_activeUpsInfo->nutVariables) {
+ case 1:
+ m_manufacturer = m_activeUpsInfo->upsNet->readStringVar("MFR");
+ m_upsModel = m_activeUpsInfo->upsNet->readStringVar("MODEL");
+ m_serial = m_activeUpsInfo->upsNet->readStringVar("SERIAL");
+ m_firmrev = m_activeUpsInfo->upsNet->readStringVar("FIRMREV");
+ break;
+ case 2:
+ m_manufacturer = m_activeUpsInfo->upsNet->readStringVar("ups.mfr");
+ m_upsModel = m_activeUpsInfo->upsNet->readStringVar("ups.model");
+ m_serial = m_activeUpsInfo->upsNet->readStringVar("ups.serial");
+ m_firmrev = m_activeUpsInfo->upsNet->readStringVar("ups.firmware");
+ break;
+ }
+ QString allUpsName = m_manufacturer + " " + m_upsModel;
+ m_frontPanel->setAllNameUps (allUpsName);
+ m_frontPanel->setMFRUps (m_manufacturer);
+ m_frontPanel->setNameUps (m_upsModel);
+ m_frontPanel->setSerialUps (m_serial);
+ m_frontPanel->setFirmRevUps (m_firmrev);
+ // try if LOWXFER and HIGHXFER or our values are existed
+ //Zjistime zda existuji LOWXFER a HIGHXFER pripadne jeji hodnoty
+
+ if (nutStringVar.isNull()) {
+ m_lowXfer =-1;
+ m_highXfer=-1;
+ m_existLowHighXfer = false;
+ }
+ else {
+ m_lowXfer = atof(nutStringVar);
+ nutStringVar = m_activeUpsInfo->upsNet->readStringVar(m_activeUpsInfo->highxferVar);
+ if (nutStringVar.isEmpty()) {
+ m_highXfer = -1;
+ m_existLowHighXfer = false;
+ }
+ else {
+ m_highXfer = atof(nutStringVar);
+ m_existLowHighXfer = true;
+ }
+ }
+ int upsStatus=0;
+ if ((upsStatus = m_activeUpsInfo->upsNet->readStatus ()) != -1)
+ m_frontPanel->setPanel(upsStatus);
+
+ if ( !m_activeUpsInfo->upsNet->existName(m_activeUpsInfo->runtimeVar)) {
+ nutStringVar = m_activeUpsInfo->upsNet->readStringVar(m_activeUpsInfo->runtimeVar);
+ if (nutStringVar.isEmpty()) runtimeVal=knc::numberVarError;
+ else {
+ runtimeVal=(int)nutStringVar.toFloat(&okFloat);
+ if (!okFloat) runtimeVal = knc::numberVarError;
+ }
+ }
+ else runtimeVal=knc::numberVarError;
+ m_frontPanel->setRuntime(runtimeVal);
+
+ m_panelMeter->deActivateAnalogs();
+
+ // pokud je pouzito XFER nastavime hodnoty
+ // when XFER is used we set values
+ if (m_settingData->lowHighXfer) {
+ // xfer je nastaveno
+ // xfer is seted
+ if (m_existLowHighXfer) {
+ if (abs((int)(230 - (m_lowXfer + (m_highXfer - m_lowXfer) /2))) > abs((int)(120 - (m_lowXfer + (m_highXfer - m_lowXfer) /2)))) {
+ m_analogRecords->setVoltage(120);
+ m_analogRecords->setFrequency(60);
+ }
+ else {
+ m_analogRecords->setVoltage(230);
+ m_analogRecords->setFrequency(50);
+ }
+ m_analogRecords->setXfer(m_lowXfer,m_highXfer);
+ }
+ }
+
+//qDebug ("KNutMainWindow::showUpsData 1");
+ m_panelMeter->activateAnalogs(); // makes panel and makes background of panel
+ repaintAnalogs(false);
+//qDebug ("KNutMainWindow::showUpsData 2");
+ m_panelMeter->setSize(true);
+//qDebug ("KNutMainWindow::showUpsData 3");
+ m_mainSplit->refresh();
+ // doesn't repaint analog pointers, because pointers will be repainted twice
+//qDebug ("KNutMainWindow::showUpsData 4");
+// repaintAnalogs(false); // don't make this
+//qDebug ("KNutMainWindow::showUpsData 5");
+ }
+ else {
+ cleanPanels();
+ }
+ }
+
+
+void KNutMainWindow::zeroingPanels (void) {
+
+ m_panelMeter->zeroingPanels();
+ m_frontPanel->setRuntime(knc::numberVarError);
+ m_frontPanel->setPanel(0);
+ }
+
+
+void KNutMainWindow::hideUpsData (void) {
+ m_frontPanel->cleanPanel();
+ }
+
+void KNutMainWindow::setCombo (QString name) {
+ if (toolBar(0)->getCombo(1)->currentText() != name) toolBar(0)->getCombo(1)->setCurrentText(name);
+ }
+
+void KNutMainWindow::repaintPanel (void) {
+ QString nutStringVar;
+
+ if (m_activeUpsInfo->upsNet == 0) return;
+ if (!m_activeUpsInfo->upsNet->existName(m_activeUpsInfo->runtimeVar)) {
+ nutStringVar = m_activeUpsInfo->upsNet->readStringVar(m_activeUpsInfo->runtimeVar);
+ if (nutStringVar.isEmpty()) m_frontPanel->setRuntime(0);
+ else m_frontPanel->setRuntime( nutStringVar.toInt());
+ }
+ else m_frontPanel->setRuntime(knc::numberVarError);
+ // precteme status a nastavime zarovky panelu
+ int status = m_activeUpsInfo->upsNet->readStatus();
+ m_frontPanel->setPanel(status);
+ }
+
+
+/// je volan vzdy po timeoutu
+/// this function is called after timeout always
+void KNutMainWindow::repaintAnalogs ( bool run ) {
+//qDebug ("KNutMainWindow::repaintAnalogs");
+
+
+ QString nutStringVar;
+ float numVar;
+ bool newRange = false;
+
+ if ((m_settingData->lowHighXfer) && (m_existLowHighXfer)) {
+ QString nutStringVar;
+
+ nutStringVar = m_activeUpsInfo->upsNet->readStringVar(m_activeUpsInfo->lowxferVar);
+ if (! nutStringVar.isEmpty()) {
+ float helpLowXfer = nutStringVar.toFloat();
+ nutStringVar = m_activeUpsInfo->upsNet->readStringVar(m_activeUpsInfo->highxferVar);
+ if (! nutStringVar.isEmpty()) {
+ float helpHighXfer = nutStringVar.toFloat();
+ if ((helpLowXfer != m_lowXfer) || (helpHighXfer != m_highXfer)) {
+ m_lowXfer=helpLowXfer;
+ m_highXfer=helpHighXfer;
+ m_analogRecords->setXfer(m_lowXfer,m_highXfer);
+ newRange = true;
+ }
+ }
+ }
+ }
+
+//qDebug ("KNutMainWindow::repaintAnalogs 1");
+
+ for (int i=0; i< knc::NumberOfVars; i++) {
+ if (m_activeUpsInfo->record.upsVarCode[i] != 0) { // jistota pokud by nam to nekde propadlo
+ switch (m_activeUpsInfo->nutVariables) {
+ case 1:
+ nutStringVar = m_activeUpsInfo->upsNet->readStringVar ((char *)nameUpsVars1[m_activeUpsInfo->record.upsVarCode[i]]);
+ break;
+ case 2:
+ nutStringVar = m_activeUpsInfo->upsNet->readStringVar ((char *)nameUpsVars2[m_activeUpsInfo->record.upsVarCode[i]]);
+ break;
+ }
+//qDebug ("KNutMainWindow::repaintAnalogs 2 ");
+
+ if (nutStringVar.isEmpty()) numVar=0;
+ else numVar = nutStringVar.toFloat();
+
+ m_panelMeter->repaintScaleAnalogPanel (i, numVar);
+ if (newRange) m_panelMeter->repaintAnalogPanels (true, true, false); //freq volt
+ m_panelMeter->repaintAnalogPointer(i,numVar,run);
+ }
+ } // end for
+//qDebug ("KNutMainWindow::repaintAnalogs 3 ");
+ }
+
+
+
+void KNutMainWindow::cleanPanels (void) {
+
+ m_frontPanel->cleanPanel();
+ m_panelMeter->deActivateAnalogs();
+ m_panelMeter->setSize(false);
+ m_mainSplit->refresh();
+ }
+
+void KNutMainWindow::startConnectPB ( const int count ) {
+ m_connectProggresBar->setTotalSteps(count);
+ m_connectProggresBar->setProgress(1);
+ m_connectProggresBar->show();
+ }
+
+
+void KNutMainWindow::setProgressConnectPB ( const int progress ) {
+ m_connectProggresBar->setProgress(progress);
+ }
+
+
+void KNutMainWindow::hideConnectPB ( void ) {
+ m_connectProggresBar->setProgress(0);
+ m_connectProggresBar->hide();
+ }
+
+
+/*********************************************************************************************/
+/* */
+/* PRIVATE SLOTS */
+/* */
+/*********************************************************************************************/
+
+
+//this SLOT is for older KDE only
+void KNutMainWindow::slotShowToolBar(void) {
+
+ if(toolBar("mainToolBar")->isVisible()) toolBar("mainToolBar")->hide();
+ else toolBar("mainToolBar")->show();
+ }
+
+
+void KNutMainWindow::slotShowStatusBar(void) {
+
+ if(statusBar()->isVisible()) {
+ statusBar()->hide();
+ }
+ else {
+ statusBar()->show();
+ }
+ }
+
+void KNutMainWindow::slotDescription(void) {
+
+ if (m_descriptionAction->isChecked()) {
+ if (!m_activeUpsInfo->upsNet->isDescription()) m_activeUpsInfo->upsNet->getDescription();
+ m_settingData->useDescription=true;
+ }
+ else m_settingData->useDescription=false;
+ emit saveConf();
+ }
+
+
+void KNutMainWindow::slotPrintUPSVars(void) {
+
+ emit showUPSVars();
+}
+
+
+void KNutMainWindow::slotInstComms(void) {
+
+ emit makeInstComms();
+ }
+
+void KNutMainWindow::slotRWVars(void) {
+
+ emit makeRWVars();
+ }
+
+void KNutMainWindow::slotRefreshConnection(void) {
+
+ emit makeRefreshConnection();
+ }
+
+
+void KNutMainWindow::slotChangeRWVars ( QString ) {
+ }
+
+
+
+void KNutMainWindow::closeEvent( QCloseEvent *e ){
+
+ m_settingData->activatedMainWindow=false; //information about state of mainWindow
+ e->accept();
+ }
+
+
+
+void KNutMainWindow::slotConfigureKeys() {
+
+ KKeyDialog::configure( actionCollection(), this );
+ }
+
+
+void KNutMainWindow::slotCloseKnutClient (void) {
+ if (m_settingData->areYouSure) {
+ if (KMessageBox::warningYesNo (0,i18n("Are you sure ?")) == 3)
+ emit endApplication();
+ }
+ else emit endApplication();
+ }
+
+
+
+
+ void KNutMainWindow::slotChangeUPS (const QString &name) {
+ emit UPSChanged (name);
+ }
+
+
+void KNutMainWindow::slotPreferencesUps() {
+ emit preferenceUps();
+ }
+
+
+/*********************************************************************************************/
+/* */
+/* PRIVATE FUNCTIONS */
+/* */
+/*********************************************************************************************/
+
+
+
+void KNutMainWindow::initStatusBar ( void ) {
+ // sets main message if statusbar
+ // nastavime hlavni hlaseni v statusbaru
+
+ // QString progressString("%v ");// += descrOfConnection;
+// progressString.append(descrOfConnection);
+
+ m_progressFormatString.append("%v ");
+ m_progressFormatString.append(descrOfConnection);
+ m_infoCombo = new KComboBox (statusBar(),"infoCombo");
+ m_infoCombo->setMaxCount(knc::maxCountKNutEvent+1); // nastavime maximalni pocet polozek v Combu
+ // pro rezervu pridame jeste jednu
+//sets maximal if items in Combo
+ statusBar()->addWidget(m_infoCombo,10,false);
+
+ m_connectProggresBar = new KProgress(statusBar(),"connectProgressBar");
+ statusBar()->addWidget(m_connectProggresBar,5,false);
+ m_connectProggresBar->setProgress(0);
+// m_connectProggresBar->setFormat("%v test of conection from 5");
+ m_connectProggresBar->setFormat(m_progressFormatString);
+ m_connectProggresBar->hide();
+ }
+
+
+void KNutMainWindow::initStatusBarMessage ( void ) {
+ // loads data into comboBox
+ QStringList::iterator it;
+
+ for ( it = m_listKNutEvent->begin(); it != m_listKNutEvent->end(); ++it ) {
+ m_infoCombo->insertItem((*it));
+ }
+ statusBar()-> setItemAlignment(0,Qt::AlignHCenter|Qt::AlignVCenter);
+ m_infoCombo->setCurrentItem(m_infoCombo->count()-1);
+ }
+
+
+void KNutMainWindow::initToolBar ( void ) {
+
+ QLabel *upsNazev = new QLabel ("UPS : ",toolBar("mainToolBar"));
+ // upsNazev is connected on toolBaar, dosn't need to call desctructor
+ toolBar ("mainToolBar")->insertWidget (0,upsNazev->sizeHint().width(),upsNazev);
+ toolBar ("mainToolBar")->insertCombo("",1,false, SIGNAL (activated (const QString &)),this,SLOT (slotChangeUPS (const QString &)));
+ // bude se pouze vybirat-------------------^^^
+ KComboBox *combo = toolBar("mainToolBar")->getCombo(1);
+ combo->clear();
+ toolBar("mainToolBar")->setBarPos (KToolBar::Top);
+ //sets toolbarr no movable / nastavime toolBar nepresouvatelny
+ setToolBarsMovable(false);
+ }
+
+
+void KNutMainWindow::initAction ( void ) {
+
+ // KAction and KStdAction must be to make before command createGUI, function initToolBar is runed after create GUI
+ m_quit = KStdAction::quit (this, SLOT (slotCloseKnutClient()), actionCollection());
+ m_quit->setStatusText(i18n("Quits the application"));
+
+ m_preferencesUps = KStdAction::preferences (this, SLOT (slotPreferencesUps()), actionCollection(),"options_configure");
+ new KAction(i18n("&Showing UPS variables and commands"),0,this,SLOT(slotPrintUPSVars()),actionCollection(),"printupsvars");
+ new KAction(i18n("&Running instant commands"),0,this,SLOT(slotInstComms()),actionCollection(),"instcomms");
+ new KAction(i18n("Setting R&W variables"),0,this,SLOT(slotRWVars()),actionCollection(),"rwvars");
+
+///////////////////
+// KStdAction::showToolbar (this, SLOT (slotShowToolBar()), actionCollection());
+// setStandardToolBarMenuEnabled(true); since KDE version 3.1
+
+// since version 3.1
+ #if defined (KDE_VERSION_MAJOR)
+ #if KDE_VERSION_MAJOR >= 3
+ #if defined (KDE_VERSION_MINOR)
+ #if KDE_VERSION_MINOR >= 1
+ setStandardToolBarMenuEnabled(true);
+ #else
+ KStdAction::showToolbar (this, SLOT (slotShowToolBar()), actionCollection());
+ #endif
+ #else
+ KStdAction::showToolbar (this, SLOT (slotShowToolBar()), actionCollection());
+ #endif
+ #else
+ KStdAction::showToolbar (this, SLOT (slotShowToolBar()), actionCollection());
+ #endif
+ #else
+ KStdAction::showToolbar (this, SLOT (slotShowToolBar()), actionCollection());
+ #endif
+
+
+ KStdAction::showStatusbar (this, SLOT (slotShowStatusBar()), actionCollection());
+
+ m_descriptionAction = new KToggleAction(i18n("&Using descriptions"),0,this,SLOT(slotDescription()),actionCollection(),"use_description");
+
+ KStdAction::keyBindings( this, SLOT(slotConfigureKeys()),actionCollection());
+ new KAction (i18n("Reconnect"),"reload",Key_F5,this,SLOT(slotRefreshConnection()),actionCollection(),"reconnect");
+ }
+
+void KNutMainWindow::initVars ( void ) {
+
+ //m_activeUpsIndex = -1;
+
+ //nastavime fonty
+ // sets fonts
+ m_mainPalette= kapp->palette();
+ m_areaPalette=m_mainPalette;
+ m_mPanelPalette=m_mainPalette;
+ m_aPanelPalette=m_mainPalette;
+ }
+
+
+int KNutMainWindow::activeMainCombo (void) {
+ int activeUpsNameIndex = -1; // zadne upsName neni aktivni , any upsName is not active
+ KComboBox *combo = toolBar(0)->getCombo(1);
+
+ //naplnime comboBox
+ //loads comboBox
+ combo->clear();
+ for (int i=0; i < m_upsRecords->getCount (); i++) {
+ combo->insertItem (m_upsRecords->getName(i));
+ // ulozime si poradove cislo jmena aktivniho ups
+ // save serial number of active usp name
+ if ((m_upsRecords->getName(i)) == m_activeUpsInfo->record.name) activeUpsNameIndex = i;
+ }
+ return activeUpsNameIndex;
+ }
+
+#include "knutmainwindow.moc"