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

#ifndef FrmWebCamCtrlFH
#define FrmWebCamCtrlFH
//---------------------------------------------------------------------------
#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 "CDSWCamCtlrF.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"   /* idhttp 권한 설정을 위해 필요함 */
//---------------------------------------------------------------------------

class TFrmWebCamCtrl : 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 *PnlBottome;
    TPanel *Panel1;
    TPanel *PnlCamera;
    TcxLabel *cxLabel14;
    TcxPageControl *PgControl;
    TcxTabSheet *TabPing;
    TcxGrid *CxPing;
    TcxGridBandedTableView *TvPing;
    TcxGridBandedColumn *ColumnSel;
    TcxGridBandedColumn *Col01;
    TcxGridBandedColumn *Col02;
    TcxGridBandedColumn *Col03;
    TcxGridBandedColumn *Col04;
    TcxGridBandedColumn *Col05;
    TcxGridBandedColumn *Col06;
    TcxGridBandedColumn *Col07;
    TcxGridBandedColumn *Col08;
    TcxGridBandedColumn *Col09;
    TcxGridBandedColumn *Col10;
    TcxGridBandedColumn *Col11;
    TcxGridBandedColumn *Col12;
    TcxGridBandedColumn *Col99;
    TcxGridLevel *GlPing;
    TPanel *PnlPing;
    TImage *ImgDesc99;
    TLabel *Label39;
    TLabel *Label40;
    TLabel *Label41;
    TLabel *Label42;
    TImage *ImgDesc98;
    TcxButton *BtnAllSelect0;
    TcxButton *BtnAllClear0;
    TcxButton *BtnReverse0;
    TcxSpinEdit *EdPingTimeout;
    TcxButton *BtnNwkPing;
    TcxButton *BtnNwkPingClear;
    TcxSpinEdit *EdPingPort;
    TcxButton *BtnAllSelect;
    TcxButton *BtnAllClear;
    TcxButton *BtnReverse;
    TcxLabel *lblSelCctv;
    TcxButton *BtnSaveImgFile;
    TcxLabel *cxLabel1;
    TcxLabel *cxLabel2;
    TcxTabSheet *TabPreset;
    TPanel *PnlPreset;
    TcxGrid *CxPreset;
    TcxGridTableView *TvPreset;
    TcxGridColumn *ColPresetNo;
    TcxGridColumn *ColPresetName;
    TcxGridColumn *ColPresetPan;
    TcxGridColumn *ColPresetTilt;
    TcxGridColumn *ColPresetZoom;
    TcxGridColumn *ColPresetFocus;
    TcxGridColumn *ColPresetAngle;
    TcxGridColumn *ColPresetDefault;
    TcxGridColumn *ColPresetDb;
    TcxGridLevel *GlPreset;
    TcxButton *BtnCctvPreset;
    TcxButton *BtnCctvPresetDel;
    TcxTextEdit *EdPresetName;
    TLabel *Label19;
    TImage *ImgDesc21;
    TLabel *Label18;
    TImage *ImgDesc20;
    TcxButton *BtnCctvPresetSet;
    TcxLabel *cxLabel3;
    TcxTextEdit *EdPresetNo;
    TcxLabel *cxLabel4;
    TcxSpinEdit *SePresetNo;
    TcxCheckBox *ChkCctvPresetDef;
    TFRAMEWCamStateList *FRAMEWCamStateList1;
    TMemo *reMsg;
    TFFPlayer *FFPlayer1;
    TdxSkinController *dxSkinController1;
    TApplicationEvents *ApplicationEvents1;
    TcxButton *BtnStatRefresh;
    TTimer *TmrRefresh;
    TIdHTTP *IdHTTP1;
    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 BtnAllSelectClick(TObject *Sender);
    void __fastcall FRAMEWCamStateList1TvListCellDblClick(TcxCustomGridTableView *Sender,
          TcxGridTableDataCellViewInfo *ACellViewInfo, TMouseButton AButton,
          TShiftState AShift, bool &AHandled);
    void __fastcall BtnWebCamUrlClick(TObject *Sender);
    void __fastcall PgControlPageChanging(TObject *Sender, TcxTabSheet *NewPage,
          bool &AllowChange);
    void __fastcall BtnNwkPingClick(TObject *Sender);
    void __fastcall BtnNwkPingClearClick(TObject *Sender);
    void __fastcall Col04CustomDrawCell(TcxCustomGridTableView *Sender, TcxCanvas *ACanvas,
          TcxGridTableDataCellViewInfo *AViewInfo, bool &ADone);
    void __fastcall IdIcmpClient1Reply(TComponent *ASender, const TReplyStatus *AReplyStatus);
    void __fastcall Col08CustomDrawCell(TcxCustomGridTableView *Sender, TcxCanvas *ACanvas,
          TcxGridTableDataCellViewInfo *AViewInfo, bool &ADone);
    void __fastcall TvPingCellDblClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo,
          TMouseButton AButton, TShiftState AShift,
          bool &AHandled);
    void __fastcall BtnSaveImgFileClick(TObject *Sender);
    void __fastcall BtnCctvPresetClick(TObject *Sender);
    void __fastcall BtnCctvPresetSetClick(TObject *Sender);
    void __fastcall BtnCctvPresetDelClick(TObject *Sender);
    void __fastcall TvPresetCellDblClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo, TMouseButton AButton,
          TShiftState AShift, bool &AHandled);
    void __fastcall SePresetNoPropertiesEditValueChanged(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);

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

public:

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

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

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

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

    void __fastcall LoadLocalSkin();
    void __fastcall DisplayInfo();

    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 OnMainFormMessage(TMessage &Msg);
    void __fastcall OnCctvStateRefreshMessage(TMessage &Msg);
	BEGIN_MESSAGE_MAP
        MESSAGE_HANDLER(WM_MAINFORM,          TMessage, OnMainFormMessage)
        MESSAGE_HANDLER(WM_VMS_STATE_REFRESH, TMessage, OnCctvStateRefreshMessage)
    END_MESSAGE_MAP(TForm)
};
//---------------------------------------------------------------------------
extern PACKAGE TFrmWebCamCtrl *FrmWebCamCtrl;
//---------------------------------------------------------------------------

#endif

