123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558 |
- //---------------------------------------------------------------------------
- #include <vcl.h>
- #pragma hdrstop
- #include <vcl.h>
- #include "AppGlobalF.h"
- #include "ITSSkinF.h"
- #include "ITSUtilF.h"
- #include "FrmVmsOprMainF.h"
- #include "VitzroCommF.h"
- #include "ITSLangTransF.h"
- #pragma hdrstop
- #if 0
- //GDIPLUS - start
- #ifndef ULONG_PTR
- #define ULONG_PTR unsigned long *
- #endif
- #include <math.h>
- #include <map>
- #include <list>
- #include <algorithm>
- using std::min;
- using std::max;
- #include <Gdiplus.h>
- #include <GdiplusBase.h>
- //GDIPLUS - end
- #endif
- #include "VMSFORM0F.h"
- //---------------------------------------------------------------------------
- //---------------------------------------------------------------------------
- #pragma package(smart_init)
- #pragma link "cxContainer"
- #pragma link "cxControls"
- #pragma link "cxEdit"
- #pragma link "cxGraphics"
- #pragma link "cxGroupBox"
- #pragma link "cxLookAndFeelPainters"
- #pragma link "cxLookAndFeels"
- #pragma link "dxSkinBlack"
- #pragma link "dxSkinMcSkin"
- #pragma link "dxSkinsCore"
- #pragma link "ITSVmsDispF"
- #pragma link "dxSkinBlue"
- #pragma link "dxSkinCaramel"
- #pragma link "dxSkinCoffee"
- #pragma link "dxSkinDarkRoom"
- #pragma link "dxSkinDarkSide"
- #pragma link "dxSkinFoggy"
- #pragma link "dxSkinGlassOceans"
- #pragma link "dxSkiniMaginary"
- #pragma link "dxSkinLilian"
- #pragma link "dxSkinLiquidSky"
- #pragma link "dxSkinLondonLiquidSky"
- #pragma link "dxSkinMoneyTwins"
- #pragma link "dxSkinOffice2007Black"
- #pragma link "dxSkinOffice2007Blue"
- #pragma link "dxSkinOffice2007Green"
- #pragma link "dxSkinOffice2007Pink"
- #pragma link "dxSkinOffice2007Silver"
- #pragma link "dxSkinOffice2010Black"
- #pragma link "dxSkinOffice2010Blue"
- #pragma link "dxSkinOffice2010Silver"
- #pragma link "dxSkinSeven"
- #pragma link "dxSkinSharp"
- #pragma link "dxSkinSilver"
- #pragma link "dxSkinStardust"
- #pragma link "cxLabel"
- #pragma resource "*.dfm"
- #define WIDTH_GAP 3
- #define HEIGHT_GAP 3
- //TVMSFORM0 *VMSFORM0 = NULL;
- //---------------------------------------------------------------------------
- __fastcall TVMSFORM0::TVMSFORM0(TComponent* Owner, TVmsCtlr *AVmsObj)
- : TForm(Owner)
- {
- #if 0
- if (g_AppCfg.sLang != "kr")
- {
- lblText1->Caption = "Provide time:";
- lblText2->Caption = "Controller Ping";
- lblText3->Caption = "Web camera Ping";
- }
- #endif
- FVmsObj = AVmsObj;
- FScrollBox = NULL;
- FSelected = false;
- FDisplayMode = 0;
- FZoomRate = 1.0;
- FDispIndex = 0;
- FPlay = false;
- FWndParent = NULL;
- FZoomView = false;
- PnlForm->ParentColor = false;
- PnlForm->Color = clBtnFace;
- FDispW = FVmsObj->WIDTH;
- FDispH = FVmsObj->HEIGHT;
- //PnlName->Caption = "[" + FVmsObj->VMS_CTLR_ID + "] " + FVmsObj->VMS_NM;
- PnlName->Caption = FVmsObj->VMS_NM;
- PnlName->Hint = String(FVmsObj->VMS_CTLR_NMBR) + " [" + FVmsObj->VMS_CTLR_ID + "] \r\n" + FVmsObj->VMS_NM;
- FGapW = 16;
- FGapH = 8;
- PnlForm->Align = alCustom;
- PnlForm->Anchors = TAnchors() >> akLeft >> akTop >> akRight >> akBottom;
- //PnlForm->Locked = true;
- #if 0
- ImgCommError->Parent = ImgCommNormal->Parent;
- ImgCommError->Left = ImgCommNormal->Left;
- ImgCommError->Top = ImgCommNormal->Top;
- ImgCommError->Visible = false;
- ImgCommNormal->Visible= true;
- #else
- ImgState1->Parent = ImgState0->Parent;
- ImgState2->Parent = ImgState0->Parent;
- ImgState1->Left = ImgState0->Left;
- ImgState1->Top = ImgState0->Top;
- ImgState2->Left = ImgState0->Left;
- ImgState2->Top = ImgState0->Top;
- ImgState1->Visible = false;
- ImgState2->Visible = false;
- #endif
- LoadLocalSkin();
- }
- //---------------------------------------------------------------------------
- void __fastcall TVMSFORM0::LoadLocalSkin()
- {
- PnlMain->ParentColor = false;
- PnlMain->Color = clBtnFace;
- PnlForm->ParentColor = false;
- PnlForm->Color = clBlack;
- PnlDoor->ParentColor = false;
- PnlFan->ParentColor = false;
- PnlHeater->ParentColor = false;
- PnlModule->ParentColor = false;
- PnlPower->ParentColor = false;
- PnlTemp->ParentColor = false;
- PnlOprMode->ParentColor = false;
- }
- //---------------------------------------------------------------------------
- void __fastcall TVMSFORM0::FormDestroy(TObject *Sender)
- {
- TmrDisp->Enabled = false;
- }
- //---------------------------------------------------------------------------
- void __fastcall TVMSFORM0::FormShow(TObject *Sender)
- {
- TmrShow->Enabled = true;
- RefreshVmsStatus();
- }
- //---------------------------------------------------------------------------
- void __fastcall TVMSFORM0::SetFormSize(int AFormW)
- {
- AFormW = 288;
- AFormW = 365;
- //AFormW = 384;
- try
- {
- #if 0
- if (AFormW < FVmsObj->WIDTH)
- {
- FZoomRate = (float)AFormW/(float)FVmsObj->WIDTH;
- FDispW = FVmsObj->WIDTH * FZoomRate;
- FDispH = FVmsObj->HEIGHT * FZoomRate;
- }
- else
- {
- FDispW = FVmsObj->WIDTH;
- FDispH = FVmsObj->HEIGHT;
- }
- #else
- if (FVmsObj->VMS_USAG_TYPE_CD == "VUTN") FZoomRate = 0.75;
- else FZoomRate = 0.90;
- FZoomRate = 0.95;
- FDispW = FVmsObj->WIDTH * FZoomRate;
- FDispH = FVmsObj->HEIGHT * FZoomRate;
- #endif
- LockWindowUpdate(Handle);
- int nBaseH = (FDispH+8);
- Width = AFormW + FGapW;
- Height = nBaseH + PnlTitle->Height + PnlBottom->Height + FGapH;
- PnlForm->Width = FDispW + 4;
- PnlForm->Height = FDispH + 4;
- PnFormBack->Width = PnlForm->Width + 4;
- PnFormBack->Height = PnlForm->Height + 4;
- PnlForm->Left = (PnFormBack->Width - PnlForm->Width) / 2;
- PnlForm->Top = (nBaseH - PnlForm->Height) / 2;
- PnlForm->Visible = true;
- ImgForm->Width = FDispW;
- ImgForm->Height= FDispH;
- ImgForm->Picture->Bitmap->Width = ImgForm->Width;
- ImgForm->Picture->Bitmap->Height = ImgForm->Height;
- APP_ImageClear(ImgForm->Canvas, 0, 0, ImgForm->Width, ImgForm->Height, clBlack);
- }
- __finally
- {
- LockWindowUpdate(0);
- }
- }
- //---------------------------------------------------------------------------
- void __fastcall TVMSFORM0::SelectForm(bool ASelect)
- {
- FSelected = ASelect;
- if (ASelect)
- {
- PopupMenu = PopupMenu1;
- PnlMain->ParentColor = false;
- PnlMain->Color = clBtnHighlight;//clBackground;
- this->ParentColor = false;
- this->Color = clRed;
- }
- else
- {
- PopupMenu = NULL;
- PnlMain->ParentColor = false;
- PnlMain->Color = clBtnFace;
- this->ParentColor = true;
- }
- }
- //---------------------------------------------------------------------------
- void __fastcall TVMSFORM0::TmrShowTimer(TObject *Sender)
- {
- TmrShow->Enabled = false;
- PopupMenu = NULL;
- if (!FVmsObj)
- {
- PnlName->Caption = "VMS";
- ImgForm->Visible = false;
- }
- RefreshVmsStatus();
- TmrDisp->Enabled = true;
- }
- //---------------------------------------------------------------------------
- void __fastcall TVMSFORM0::SetPlay(bool APlay)
- {
- FPlay = APlay;
- }
- //---------------------------------------------------------------------------
- void __fastcall TVMSFORM0::TmrDispTimer(TObject *Sender)
- {
- int nDispTime = 1000;
- TCanvas *pCanvas = ImgForm->Canvas;
- try
- {
- TmrDisp->Enabled = false;
- FVmsObj->Lock();
- pCanvas->Lock();
- try {
- if (FVmsObj->VmsMsg->Total == 0)
- {
- PnlSeq->Caption = "0/0";
- ImgForm->Visible = false;
- FDispIndex = -1;
- PnlSvcTime->Caption = " " + FrmLang->lblText1->Caption + " -";//제공시각: -";
- return;
- }
- if (ImgForm->Visible == false) ImgForm->Visible = true;
- if (FDispIndex >= FVmsObj->VmsMsg->Total || FDispIndex >= INT_MAX_VMS_FORM)
- {
- FDispIndex = 0;
- }
- PnlSvcTime->Caption = " " + FrmLang->lblText1->Caption + " " + ITSUtil_FormatStr(FVmsObj->VmsMsg->OFFER_DT, STR_DATETIME);
- #if 1
- nDispTime = FVmsObj->VMS_PHSE_CHNG_CYCL;
- if (nDispTime < 3) nDispTime = 3;
- if (nDispTime > 9) nDispTime = 10;
- nDispTime = nDispTime * 1000;
- #else
- nDispTime = FVmsObj->VmsMsg->PHASE[FDispIndex].DSPL_HH * 1000;
- #endif
- if (FPlay == false)
- {
- return;
- }
- PnlSeq->Caption = String(FDispIndex+1) + "/" + String(FVmsObj->VmsMsg->Total);
- Graphics::TBitmap *pBitmap = FVmsObj->VmsMsg->PHASE[FDispIndex].pVmsBmp;
- if (pBitmap)
- {
- SetStretchBltMode(ImgForm->Canvas->Handle, MAXSTRETCHBLTMODE);//HALFTONE);//MAXSTRETCHBLTMODE)//STRETCH_HALFTONE;
- ImgForm->Canvas->CopyRect(Classes::Rect(0, 0, ImgForm->Width, ImgForm->Height),
- pBitmap->Canvas,
- Classes::Rect(0, 0, pBitmap->Width, pBitmap->Height));
- }
- } catch(...) {}
- }
- __finally
- {
- FVmsObj->UnLock();
- ImgForm->Refresh();
- pCanvas->Unlock();
- FDispIndex++;
- PnlSvcTime->Font->Color = FVmsObj->VmsMsg->OFFER_YN ? clNavy : clRed;
- TmrDisp->Interval = nDispTime;
- TmrDisp->Enabled = true;
- }
- }
- //---------------------------------------------------------------------------
- void __fastcall TVMSFORM0::FormClose(TObject *Sender, TCloseAction &Action)
- {
- TmrDisp->Enabled = false;
- }
- //---------------------------------------------------------------------------
- void __fastcall TVMSFORM0::OnFormClick(TObject *Sender)
- {
- if (FScrollBox) FScrollBox->SetFocus();
- }
- //---------------------------------------------------------------------------
- void __fastcall TVMSFORM0::RefreshVmsMessage()
- {
- TmrDisp->Enabled = false;
- FDispIndex = 0;
- TmrDisp->Interval= 300;
- TmrDisp->Enabled = true;
- }
- //---------------------------------------------------------------------------
- void __fastcall TVMSFORM0::RefreshVmsStatus()
- {
- PnlDoor->Caption = VmsModuleDoor(FVmsObj); //도어
- PnlFan->Caption = VmsModuleFan(FVmsObj); //팬
- PnlHeater->Caption = VmsModuleHeater(FVmsObj); //히터
- PnlModule->Caption = VmsModuleState(FVmsObj); //모듈상태
- PnlPower->Caption = VmsModulePower(FVmsObj); //전원상태
- PnlTemp->Caption = VmsModuleTemp(FVmsObj); //온도
- PnlOprMode->Caption = VmsOperMode(FVmsObj);
- #if 0
- if (FVmsObj->WSTATE.Comm == vms_normal)
- {
- if (!ImgCommNormal->Visible) ImgCommNormal->Visible = true;
- if ( ImgCommError->Visible) ImgCommError->Visible = false;
- }
- else
- {
- if (!ImgCommError->Visible) ImgCommError->Visible = true;
- if (ImgCommNormal->Visible) ImgCommNormal->Visible = false;
- }
- #else
- switch(FVmsObj->RunState)
- {
- case state_normal:
- if (!ImgState0->Visible) ImgState0->Visible = true;
- if ( ImgState1->Visible) ImgState1->Visible = false;
- if ( ImgState2->Visible) ImgState2->Visible = false;
- break;
- case state_module:
- if ( ImgState0->Visible) ImgState0->Visible = false; //false
- if ( ImgState1->Visible) ImgState1->Visible = false;
- if (!ImgState2->Visible) ImgState2->Visible = true; //true
- break;
- default:
- if ( ImgState0->Visible) ImgState0->Visible = false;
- if (!ImgState1->Visible) ImgState1->Visible = true;
- if ( ImgState2->Visible) ImgState2->Visible = false;
- break;
- }
- #endif
- TColor clrState = clLime;
- //운영모드
- #if 0
- if (FVmsObj->OPER_MODE != "A")
- {
- clrState = clYellow;
- }
- #else
- String sVmsMode = PnlOprMode->Caption;
- #if 0
- if (sVmsMode == "자동") clrState = clLime;
- else if (sVmsMode == "고정") clrState = clFuchsia;
- else clrState = clYellow;
- #else
- if (sVmsMode == FrmLang->lblOperA->Caption) clrState = clLime;
- else if (sVmsMode == FrmLang->lblOperF->Caption) clrState = clFuchsia;
- else clrState = clYellow;
- #endif
- #endif
- if (PnlOprMode->Color != clrState) PnlOprMode->Color = clrState;
- if (FVmsObj->WSTATE.Comm != vms_normal)
- {
- PnlDoor->Color = clGray; //도어
- PnlFan->Color = clGray; //팬
- PnlHeater->Color = clGray; //히터
- PnlModule->Color = clGray; //모듈상태
- PnlPower->Color = clGray; //전원상태
- PnlTemp->Color = clGray; //온도
- return;
- }
- //모듈상태
- clrState = clLime;
- if (FVmsObj->WSTATE.ModuleState == vms_error)
- clrState = clRed;
- if (PnlModule->Color != clrState) PnlModule->Color = clrState;
- //전원상태
- clrState = clLime;
- if (FVmsObj->WSTATE.ModulePowerStatus == vms_off)
- clrState = clRed;
- if (PnlPower->Color != clrState) PnlPower->Color = clrState;
- //도어상태
- clrState = clLime;
- if (FVmsObj->WSTATE.DoorStatus == vms_open)
- clrState = clRed;
- if (PnlDoor->Color != clrState) PnlDoor->Color = clrState;
- //팬상태
- clrState = clLime;
- if (FVmsObj->WSTATE.FanStatus == vms_on)
- clrState = clYellow;
- if (PnlFan->Color != clrState) PnlFan->Color = clrState;
- //히터상태
- clrState = clLime;
- if (FVmsObj->WSTATE.HeaterStatus == vms_on)
- clrState = clYellow;
- if (PnlHeater->Color != clrState) PnlHeater->Color = clrState;
- //모듈상태
- clrState = clLime;
- if (FVmsObj->WSTATE.ModuleState == vms_error)
- clrState = clRed;
- if (PnlModule->Color != clrState) PnlModule->Color = clrState;
- //전원상태
- clrState = clLime;
- if (FVmsObj->WSTATE.ModulePowerStatus == vms_on)
- clrState = clYellow;
- if (PnlPower->Color != clrState) PnlPower->Color = clrState;
- //온도
- clrState = clLime;
- if (PnlTemp->Color != clrState) PnlTemp->Color = clrState;
- }
- //---------------------------------------------------------------------------
- void __fastcall TVMSFORM0::PopupMenu1Popup(TObject *Sender)
- {
- MnuVmsInfId->Caption = "[" + FVmsObj->VMS_CTLR_ID + "]";
- MnuCtlrPing->Caption = FrmLang->lblText2->Caption + " - " + FVmsObj->VMS_CTLR_IP;//"제어기 Ping - " + FVmsObj->VMS_CTLR_IP;
- if (FVmsObj->WEB_CMRA_IP == "")
- {
- MnuWebcamPing->Caption = FrmLang->lblText3->Caption;//"웹카메라 Ping";
- MnuWebcamPing->Enabled = false;
- }
- else
- {
- MnuWebcamPing->Caption = FrmLang->lblText3->Caption + " - " + FVmsObj->WEB_CMRA_IP;//"웹카메라 Ping - " + FVmsObj->WEB_CMRA_IP;
- MnuWebcamPing->Enabled = true;
- }
- }
- //---------------------------------------------------------------------------
- void __fastcall TVMSFORM0::MnuNetworkPingClick(TObject *Sender)
- {
- String sIp = FVmsObj->VMS_CTLR_IP;
- TMenuItem *pMenu = (TMenuItem*)Sender;
- if (pMenu->Tag == 1)
- {
- sIp = FVmsObj->WEB_CMRA_IP;
- }
- ITSUtil_NetworkPing(sIp);
- }
- //---------------------------------------------------------------------------
- void __fastcall TVMSFORM0::MnuClick(TObject *Sender)
- {
- if (!FVmsObj) return;
- #if 0
- TMenuItem *pMenu = (TMenuItem*)Sender;
- ST_WMMESSAGE *pWmMsg = new ST_WMMESSAGE;
- pWmMsg->hWnd = (HWND)Handle;
- pWmMsg->pForm = (void*)this;
- pWmMsg->nMsg = D_FORMCALL;
- pWmMsg->sSender = "VMS0000M"; // 동적생성된 폼은 폼의 이름 +_1, +_2, ... 식으로 이름이 바뀐다.
- pWmMsg->sReceiver = String(pMenu->Tag);
- pWmMsg->sMsg = FVmsObj->Id;
- PostMessage(Application->MainForm->Handle, WM_PLUGINFORM, (WPARAM)pWmMsg, 0);
- #endif
- }
- //---------------------------------------------------------------------------
- void __fastcall TVMSFORM0::PnlNameClick(TObject *Sender)
- {
- if (FScrollBox) FScrollBox->SetFocus();
- if (FWndParent)
- {
- POST_MSG(FWndParent, WM_VMS_SELECT, (WPARAM)FVmsObj, (LPARAM)this);
- }
- }
- //---------------------------------------------------------------------------
- void __fastcall TVMSFORM0::PnlNameDblClick(TObject *Sender)
- {
- if (FScrollBox) FScrollBox->SetFocus();
- if (FWndParent)
- {
- POST_MSG(FWndParent, WM_VMS_SELECT_DBLCLICK, (WPARAM)FVmsObj, (LPARAM)this);
- }
- }
- //---------------------------------------------------------------------------
|