//---------------------------------------------------------------------------

#ifndef FrmCctvCamCtrlFH
#define FrmCctvCamCtrlFH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <DB.hpp>
#include <Menus.hpp>
#include <ExtCtrls.hpp>
#include <ADODB.hpp>
#include <ImgList.hpp>
#include <Graphics.hpp>
#include <ComCtrls.hpp>
//---------------------------------------------------------------------------
#include <OleCtrls.hpp>
#include "CenterCommF.h"
#include "DataTypesF.h"
#include "WindowMsgF.h"
#include "cxButtons.hpp"
#include "cxCalc.hpp"
#include "cxCheckBox.hpp"
#include "cxClasses.hpp"
#include "cxContainer.hpp"
#include "cxControls.hpp"
#include "cxCustomData.hpp"
#include "cxData.hpp"
#include "cxDataStorage.hpp"
#include "cxEdit.hpp"
#include "cxFilter.hpp"
#include "cxGraphics.hpp"
#include "cxGrid.hpp"
#include "cxGridBandedTableView.hpp"
#include "cxGridCustomTableView.hpp"
#include "cxGridCustomView.hpp"
#include "cxGridLevel.hpp"
#include "cxGridTableView.hpp"
#include "cxGroupBox.hpp"
#include "cxLabel.hpp"
#include "cxLookAndFeelPainters.hpp"
#include "cxLookAndFeels.hpp"
#include "cxMaskEdit.hpp"
#include "cxPC.hpp"
#include "cxPCdxBarPopupMenu.hpp"
#include "cxSpinEdit.hpp"
#include "cxStyles.hpp"
#include "cxTextEdit.hpp"
#include "dxSkinBlue.hpp"
#include "dxSkinsCore.hpp"
#include "dxSkinscxPCPainter.hpp"
#include "FFBaseComponent.hpp"
#include "FFBasePlay.hpp"
#include "FFPlay.hpp"
//#include "FRAME_WCamStateListF.h"
#include "IdBaseComponent.hpp"
#include "IdComponent.hpp"
#include "IdIcmpClient.hpp"
#include "IdRawBase.hpp"
#include "IdRawClient.hpp"
#include "ImageBtn.h"
#include "dxSkinBlack.hpp"
#include "dxSkinsForm.hpp"
#include <AppEvnts.hpp>
#include "dxSkinMcSkin.hpp"
#include "IdHTTP.hpp"
#include "IdTCPClient.hpp"
#include "IdTCPConnection.hpp"
#include "IdAuthenticationDigest.hpp"
#include "FRAME_CctvStateListF.h"   /* idhttp 권한 설정을 위해 필요함 */
//---------------------------------------------------------------------------

class TFrmCctvCamCtrl : public TForm
{
__published:	// IDE-managed Components
    TTimer *TmrShow;
    TPanel *PnlTop;
    TPanel *PnlRight;
    TPanel *PnlLeft;
    TPanel *PnlRTop;
    TcxGroupBox *GrpList;
    TcxGroupBox *cxGroupBox1;
    TImageList *ImageList1;
    TPanel *PnlCctv;
    TPanel *Panel2;
    TcxPageControl *PgCam;
    TcxTabSheet *TabRtsp;
    TcxButton *BtnWebCamUrl;
    TIdIcmpClient *IdIcmpClient1;
    TcxLabel *cxLabel9;
    TPanel *PnlCameraBack;
    TPanel *PnlCamConrtol;
    TcxButton *BtnImageSave;
    TPanel *PnlPTZ;
    TImageBtn *BtnUpLeft;
    TImageBtn *BtnUp;
    TImageBtn *BtnUpRight;
    TImageBtn *BtnLeft;
    TImageBtn *BtnHome;
    TImageBtn *BtnRight;
    TImageBtn *BtnDownLeft;
    TImageBtn *BtnDown;
    TImageBtn *BtnDownRight;
    TImageBtn *BtnZoomIn;
    TImageBtn *BtnZoomOut;
    TImageBtn *BtnFocusIn;
    TImageBtn *BtnFocusOut;
    TLabel *Label20;
    TTrackBar *PTZSpeed;
    TPanel *Panel1;
    TPanel *PnlCamera;
    TcxLabel *cxLabel14;
    TcxLabel *lblSelCctv;
    TcxButton *BtnSaveImgFile;
    TcxLabel *cxLabel1;
    TcxLabel *cxLabel2;
    TcxLabel *cxLabel3;
    TcxLabel *cxLabel4;
    TMemo *reMsg;
    TFFPlayer *FFPlayer1;
    TdxSkinController *dxSkinController1;
    TApplicationEvents *ApplicationEvents1;
    TcxButton *BtnStatRefresh;
    TTimer *TmrRefresh;
    TIdHTTP *IdHTTP1;
    TFRAMECctvStateList *FRAMECctvStateList1;
    TImage *ImgDesc03;
    TImage *ImgDesc15;
    TImage *ImgDesc16;
    TImage *ImgDesc17;
    TImage *ImgDesc18;
    TImage *ImgDesc05;
    TcxLabel *cxLabel7;
    TcxTextEdit *Ed_STRM_SESN_NM;
    TcxLabel *cxLabel8;
    TcxTextEdit *Ed_STRM_RTSP_ADDR;
    TcxLabel *cxLabel10;
    TcxTextEdit *Ed_STRM_RTMP_ADDR;
    TcxLabel *cxLabel11;
    TcxTextEdit *Ed_STRM_HTTP_ADDR;
    TcxLabel *cxLabel13;
    TcxTextEdit *Ed_INTR_RTMP_ADDR;
    TcxLabel *cxLabel19;
    TcxTextEdit *EdCmraId;
    TcxTextEdit *EdCmraPswd;
    TImage *ImgDesc01;
    TcxLabel *cxLabel6;
    TcxTextEdit *EdCtlrId;
    TcxTextEdit *EdCtlrNm;
    TcxMaskEdit *EdCtlrIp;
    TcxSpinEdit *Se_CCTV_CTLR_PORT;
    TcxTextEdit *EdTypeNm;
    TIdHTTP *IdHTTP2;
    void __fastcall FormShow(TObject *Sender);
    void __fastcall TmrShowTimer(TObject *Sender);
    void __fastcall FormClose(TObject *Sender, TCloseAction &Action);
    void __fastcall FormActivate(TObject *Sender);
    void __fastcall FormDeactivate(TObject *Sender);
    void __fastcall FRAMECctvStateList1TvListCellDblClick(TcxCustomGridTableView *Sender,
          TcxGridTableDataCellViewInfo *ACellViewInfo, TMouseButton AButton,
          TShiftState AShift, bool &AHandled);
    void __fastcall BtnWebCamUrlClick(TObject *Sender);
    void __fastcall BtnSaveImgFileClick(TObject *Sender);
    void __fastcall reMsgDblClick(TObject *Sender);
    void __fastcall FFPlayer1State(TObject *Sender, TPlayState APlayState);
    void __fastcall BtnStatRefreshClick(TObject *Sender);
    void __fastcall TmrRefreshTimer(TObject *Sender);
    void __fastcall IdHTTP1Authorization(TObject *Sender, TIdAuthentication *Authentication, bool &Handled);
    void __fastcall BtnUpMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y);
    void __fastcall BtnUpMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y);
    void __fastcall EdPresetNameKeyPress(TObject *Sender, wchar_t &Key);
    void __fastcall FRAMECctvStateList1TvList2CellDblClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo,
          TMouseButton AButton, TShiftState AShift, bool &AHandled);
    void __fastcall IdHTTP2Authorization(TObject *Sender, TIdAuthentication *Authentication, bool &Handled);

private:	// User declarations
    void __fastcall CommClose();

public:

    bool __fastcall OpenRtsp();
    void __fastcall CloseRtsp();

public:
    bool         FTmrShow;
    TCctvCtlr   *FSelCtlr;
    TStringList *FSelIds;
    String       FTitle;

    bool   FStrmPlay;
    String FStrmUser;
    String FStrmPswd;
    String FStrmHttp;
    String FStrmAddr;

public:		// User declarations
    __fastcall TFrmCctvCamCtrl(TComponent* Owner);

    void __fastcall LoadLocalSkin();
    void __fastcall DisplayInfo(TCctvCtlr* AObj);

    void __fastcall ClearCheckList();
    int __fastcall GetSelListItems(bool ACommCheck=true);

    void __fastcall ActivateForm(bool AActivate);

    int     FPingType;
    bool    FPingTimeout;
    void __fastcall PingNetwork(String AIp, int APort);
    void __fastcall UpdatePingList();
    void __fastcall RefreshPingList(bool AInit=false);

    void __fastcall ClearPreset();
    void __fastcall InitPreset();
    void __fastcall InitForm();

    void __fastcall OnMainFormMessage(TMessage &Msg);
    void __fastcall OnCctvStateRefreshMessage(TMessage &Msg);

    void __fastcall Ptz_BtnUpMouseDown(int command, String ptzSpeed);
    void __fastcall Ptz_BtnUpMouseUp(int command, String ptzSpeed);

    void __fastcall Truen_BtnUpMouseDown(int command, String ptzSpeed);
    void __fastcall Truen_BtnUpMouseUp(int command, String ptzSpeed);

    void __fastcall Pelco_BtnUpMouseDown(int command, String ptzSpeed);
    void __fastcall Pelco_BtnUpMouseUp(int command, String ptzSpeed);

    void __fastcall ZenoSys_BtnUpMouseDown(int command, String ptzSpeed);
    void __fastcall ZenoSys_BtnUpMouseUp(int command, String ptzSpeed);
    void __fastcall ZenoSys_Request(TBytes controlData);
    void __fastcall Get_Request(String apiUrl);

	BEGIN_MESSAGE_MAP
        MESSAGE_HANDLER(WM_MAINFORM,          TMessage, OnMainFormMessage)
        MESSAGE_HANDLER(WM_VMS_STATE_REFRESH, TMessage, OnCctvStateRefreshMessage)
    END_MESSAGE_MAP(TForm)
};
//---------------------------------------------------------------------------
extern PACKAGE TFrmCctvCamCtrl *FrmCctvCamCtrl;
//---------------------------------------------------------------------------

#endif

