using System; using System.Collections.Generic; using System.Collections; using System.Linq; using System.Text; using System.Windows.Forms; using Janus.Windows.EditControls; using System.Drawing; using System.Data.SqlClient; using System.IO; using System.Data; using System.Media; using System.Timers; namespace IControls_FireManager { // 전역 변수 및 함수는 여기 클래스에서 전담한다 public static class _Data { // Program public static string Program_Version; // Project public static string Project_Name; public static string Project_Path; public static string Project_ExcelOpenCheck; // 1 : 체크함, 0 : 체크안함 public static string Project_MapGroupIDTypeNumber; // cyim 2016.04.01 : 6자리 혹은 4자리로 맵아이디와 그룹아이디 지정할수 있도록함 // Korea public static string Language; // Database public static string DB_IP; public static string DB_ID; public static string DB_PassWord; public static string DB_FullPath; // STYLE public static Janus.Windows.UI.Dock.PanelVisualStyle Style_PanelVisualStyle; public static Janus.Windows.UI.VisualStyle Style_VisualStyle; public static Janus.Windows.Ribbon.Office2007ColorScheme Style_Office2007ColorScheme; // 데이타베이스 접속상태 public static bool DB_Connection_Open_Ok = false; public static bool DB_Connection_FailLogOnce = false; // HashTable // 수신기 정보 해쉬테이블 public static Hashtable HASH_RECEIVER = new Hashtable(); // 수신기 정보 해쉬테이블 키 리스트 public static ArrayList LIST_RECEIVER_ID = new ArrayList(); // 맵디자이너중 리스트뷰의 아이템 패널(기기타입)에 아이콘을 추가하기 위해서 사용되는 해쉬테이블 public static Hashtable HASH_XMLDEVTYPE = new Hashtable(); // 맵디자이너중 리스트뷰의 아이템 패널(기기타입)에 아이콘을 추가하기 위해서 사용되는 해쉬테이블 키 리스트 public static ArrayList LIST_XMLDEVTYPE_ID = new ArrayList(); // _Receiver.xml 제거 : cyim 2012.8.29 -> 복구 2013.5.27 //// Read Receiver Xml 전용 해쉬테이블 //public static Hashtable HASH_XMLRECEIVER = new Hashtable(); //// Read Receiver Xml 전용 해쉬테이블 키 리스트 public static ArrayList LIST_XMLRECEIVER_ID = new ArrayList(); // 엑셀에서 포인트 정보를 읽은 결과를 저장하는 리스트 public static ArrayList List_ExcelPoint = new ArrayList(); // 엑셀에서 연동 그룹 정보를 읽은 결과를 저장하는 리스트 public static ArrayList List_ExcelGroup = new ArrayList(); // 엑셀에서 연동 맵 정보를 읽은 결과를 저장하는 리스트 public static ArrayList List_ExcelMap = new ArrayList(); // 엑셀에서 읽은 정보를 토대로 재생성되는 위치 정보, 디바이스 타입, IO 보드, 이벤트 타입 클래스 public static Hashtable HASH_CodePosition = new Hashtable(); public static ArrayList LIST_CodePosition_NAME = new ArrayList(); public static ArrayList LIST_CodeDeviceType = new ArrayList(); public static ArrayList LIST_CodeIOBoard = new ArrayList(); public static ArrayList LIST_CodeEventType = new ArrayList(); public static ArrayList LIST_CodeAnalogLevel_Smoke = new ArrayList(); // cyim 2016.07.27 : 아날로그 감지기 레벨 감지기 타입별 설정 기능 public static ArrayList LIST_CodeAnalogLevel_Heat = new ArrayList(); public static ArrayList LIST_CodeFireDayTime = new ArrayList(); // XML 데이타를 저장하였는지 최종 확인 (저장직전 해당 수신기 아이디가 리스트 형태로 저장됨) public static ArrayList LIST_XmlDBNotSave_Receiver = new ArrayList(); // 프로젝트 저장하였는지 최종 확인 public static bool ProJect_Save_Complete = true; // 진행바 팝업창 마지막 문구 public static string Result_Text = _Text.CompleteInform; // 메뉴를 클릭하여 활성화된 폼 public static Form MenuActivedForm = null; // 특별히 엑티브 레포트 뷰어는 메뉴 혹은 다른 형태로 생성될 가능성이 많으므로 여러개를 띄우지 않도록 처리 public static bool ActiveReportViewer_Enable = false; // 디바이스 입출력 포인트 출력용 해쉬테이블 (입력 및 출력 포인트 모두 저장 : 키는 수신기 아이디) public static Hashtable Hash_ImportPoint = new Hashtable(); // 1회성 데이타 (이전 데이타 저장용) public static string Temp_DeviceName = null; public static string Temp_Position = null; public static string Temp_GroupName = null; // 엑셀 연동과 같이 속도가 오래걸리는 경우 버튼을 2번눌러서 문제가 발생할수가 있다. public static bool Enable_Button = true; // 화면 캡쳐 진행중 public static bool Enable_Capture = false; // true : 캡쳐진행중 // 수신기 ID public static int INIT_RECEIVER_ID = 1; // 정렬 인터페이스 public static _Sort.StringNumbering Sort_StringNumbering = new _Sort.StringNumbering(); public static _Sort.CircuitStringNumbering Sort_CircuitNo = new _Sort.CircuitStringNumbering(); // cyim 2016.04.01 : 입력 및 출력회로 정렬 기능 // cyim 2016.12.05 : 만약 프로젝트를 열다가 중간에 예외 처리 및 강제 저장 옵션이 발동되었다면 경고 폼 출력 public static bool Receiver_Model_TempSetting = false; // 강제로 임시 모델 셋팅을 했다고 알려주는 체크 변수 // cyim 2016.12.15 : 모바일앱용 사용자 관리 // 시스템사용자 정보 해쉬테이블 public static Hashtable HASH_USER = new Hashtable(); // 시스템사용자 정보 해쉬테이블 키 리스트 public static ArrayList LIST_USER_KEY = new ArrayList(); // 수신기 ID 생성 public static int CREATE_RECEIVER_ID() { // 리스트에서 조회해서 없는 값으로 대체 // if (LIST_RECEIVER_ID.Contains(RECEIVER_ID.ToString()) == false) // { // RECEIVER_ID++; // } // else // { while (LIST_RECEIVER_ID.Contains(INIT_RECEIVER_ID.ToString()) == true) { INIT_RECEIVER_ID++; } // } return INIT_RECEIVER_ID; } // 페이지 ID 생성 public static string CREATE_PAGE_ID(string RECEIVER_ID, string Page_Name) { return RECEIVER_ID + _Text.Minus + Page_Name; } // 해당 수신기아이디에 페이지 이름이 있는지 없는지 조회 (NodeText) public static bool Check_Receiver_In_PageName(string RECEIVER_ID, string Page_Name) { foreach (string PAGE_ID in ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).LIST_PAGE_ID) { if (((_Page)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).HASH_PAGE[PAGE_ID]).Receiver_ID == RECEIVER_ID && ((_Page)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).HASH_PAGE[PAGE_ID]).NodeText == Page_Name ) return true; } return false; } // Device 사용 // GridEX_GroupList의 레코드를 선택했을 때, Group_ID를 저장 public static string Group_ID = null; // GridEX_MapList의 레코드를 선택했을 때, Map_ID를 저장 public static string Map_No = null; // 데이타베이스 경로 재지정 (null 이면 temp 폴더에 DB 이며, 수신기 아이디가 있다면 해당 DB 이다) public static void DataBaseFilePath_Set(string RECEIVER_ID) { if (RECEIVER_ID != null) { // 수신기 폴더명 string ReiceiverFolderName = _Text.DEFAULT_FOLDER_RECEIVER_PREFIX + RECEIVER_ID; _Data.DB_FullPath = _Data.Project_Path + "\\" + _Data.Project_Name + "\\" + ReiceiverFolderName + "\\" + _Text.DEFAULT_FOLDER_DB + "\\" + _Text.DEFAULT_DB_FILENAME; } else { _Data.DB_FullPath = _Data.Project_Path + "\\" + _Data.Project_Name + "\\" + _Text.DEFALUT_FOLDER_TEMP + "\\" + _Text.DEFAULT_DB_FILENAME; } } // 데이타베이스 경로 얻기 (null 이면 temp 폴더에 DB 이며, 수신기 아이디가 있다면 해당 DB 이다) public static string DataBaseFilePath_Get(string RECEIVER_ID) { if (RECEIVER_ID != null) { // 수신기 폴더명 string ReiceiverFolderName = _Text.DEFAULT_FOLDER_RECEIVER_PREFIX + RECEIVER_ID; return _Data.Project_Path + "\\" + _Data.Project_Name + "\\" + ReiceiverFolderName + "\\" + _Text.DEFAULT_FOLDER_DB + "\\" + _Text.DEFAULT_DB_FILENAME; } else { return _Data.DB_FullPath = _Data.Project_Path + "\\" + _Data.Project_Name + "\\" + _Text.DEFALUT_FOLDER_TEMP + "\\" + _Text.DEFAULT_DB_FILENAME; } } // 점프필드에는 널값이 들어가면 수신기UI 가 에러처리됨 - 2013.6.18 // 또한 디바이스 아이콘의 정보가 널값이라면 디바이스 조회창 색상을 바꾼다 public static string Get_Verify_ID(string ID) { if (ID == null || ID.Trim().Length == 0 || ID == _Text.None) return "0"; return ID; } // TB_EVENT_TYPE 내용이 없다면 에러처리됨 - 2013.8.12 public static bool Check_Verify_EVENT_TYPE() { DataRowCollection DB_TABLE_EVENT_TYPE = _Db.ExecuteRead_SqlDataAdapter(_Sql.Get_TableRecordCount("TB_EVENT_TYPE")); if (DB_TABLE_EVENT_TYPE != null) { foreach (DataRow Record in DB_TABLE_EVENT_TYPE) if (Int32.Parse(Record[0].ToString()) > 0) return true; } return false; } // 소방설정프로그램에서는 LOOP 대신 채널 및 계통이라는 용어를 사용한다 // LOOP 0 -> CH1 , LOOP 1 -> CH2 public static string UI_CH_TO_LOOP(string Data) { string TempCh = null; if (Data == "CH1") TempCh = "0"; else if (Data == "CH2") TempCh = "1"; else if (Data == "CH3") TempCh = "2"; else if (Data == "CH4") TempCh = "3"; else TempCh = ""; return TempCh; } } }