예제 #1
0
        /* -----[ FormPlane의 생성자입니다. ]----- */
        public FormPlane()
        {
            InitializeComponent();
            /** api에서 공항 목록, 항공사 목록 불러오기 **/
            airlines = apiLeave.getAirlineList();
            airports = apiLeave.getAirportList();

            /** 출발 공항, 도착 공항 버튼들 채우고, 최소화한 상태로 초기화 **/
            fillAirportButtons();
            fillAirlineButtons();
            DisablePanel(pnlDetails);
            pnlDetails.Width = 0;
            pnlDetails.BringToFront();

            /** FormPlane의 결과 화면 초기화
             * [초기값]
             * 출발공항 : 김포
             * 도착공항 : 제주
             * 가는날/오는날 : 오늘
             *      항공사 : 대한항공
             **/
            currentAirLine.항공사명 = "대한항공";
            updateChecker       = new ResultContentState();
            updateResultArea(ResultContentState.Dep_Old | ResultContentState.Arr_Old | ResultContentState.returnDate_Old | ResultContentState.leaveDate_Old | ResultContentState.airline_Old);
        }
예제 #2
0
        /* 항공사 이름 버튼의 클릭에 대한 동작 */
        private void btnAirlineName_Click(object sender, EventArgs e)
        {
            /** 버튼 활성화
            **/
            Button btn = sender as Button;

            ActivateButton(tpnlAirlines, btn);

            /** 항공사 업데이트 여부르 판단
             *      결과 화면의 항공사 정보와 다른 항공사를 선택했을 경우
             *      업데이트 플래그 추가
             **/
            if (currentAirLine.항공사명 != btn.Text)
            {
                updateChecker |= ResultContentState.airline_Old;
            }
        }
예제 #3
0
        /* 공항 이름 버튼의 클릭에 대한 동작 */
        private void btnAirportName_Click(object sender, EventArgs e)
        {
            /**결과 화면 상단의 문자열에서 출발 공항과 도착 공항의 이름을 추출
            **/
            string l_Dep = btnLeaveInfo.Text.Substring(0, 2),
                   r_Dep = btnReturnInfo.Text.Substring(0, 2);

            /** 출발지/도착지의 업데이트 여부를 판단
             *      1. 지금 누른 버튼이 출발공항일 때
             *              - 결과 화면의 출발지와 다른 버튼을 눌렀을 경우
             *              - 업데이트 플래그 추가
             *      2. 도착공항일 때
             *              -	결과 화면의 도착지와 다른 버튼을 눌렀을 경우
             *              - 업데이트 플래그 추가
             **/
            Button btn = sender as Button;

            if (isButtonActivated(btnOptions_Departure))                //"출발지" 버튼이 활성화되어 있는 상태면
            {
                ActivateButton(tpnlDepAirports, btn);
                if (l_Dep != btn.Text)
                {
                    updateChecker |= ResultContentState.Dep_Old;
                }

                /** TextBox에 공항 이름 추가, 색상 검정으로 변경
                **/
                txtDepAirport_Name.Text      = btn.Text;
                txtDepAirport_Name.ForeColor = Color.Black;
            }
            else
            {
                ActivateButton(tpnlArrAirports, btn);
                if (r_Dep != btn.Text)
                {
                    updateChecker |= ResultContentState.Arr_Old;
                }

                /** TextBox에 공항 이름 추가, 색상 검정으로 변경
                **/
                txtArrAirport_Name.Text      = btn.Text;
                txtArrAirport_Name.ForeColor = Color.Black;
            }
        }
예제 #4
0
        /* -----[ 결과 화면의 조작 및 업데이트에 관련된 함수입니다. ]----- */

        /* 결과 화면 영역의 내용을 사용자가 설정한 대로 업데이트하는 함수 */
        private void updateResultArea(ResultContentState contentState)
        {
            //결과 화면 상단부의 항공권 조건 정보를 표시
            btnLeaveInfo.Text = txtDepAirport_Name.Text + "   ->   " + txtArrAirport_Name.Text + "\n\n"
                                + dtpLeaveDate.Value.ToString("yyyy 년  M 월  d 일");
            btnReturnInfo.Text = txtArrAirport_Name.Text + "   ->   " + txtDepAirport_Name.Text + "\n\n"
                                 + dtpReturnDate.Value.ToString("yyyy 년  M 월  d 일");

            //최신 상태인 경우
            if (contentState == ResultContentState.upToDate)
            {
                return;                                                                 //	0
            }
            //출발지 정보 업데이트가 필요한 상태일 경우
            if (contentState.HasFlag(ResultContentState.Dep_Old))               //	1
            {
                apiLeave.depAirportId             = apiReturn.arrAirportId
                                                  = airports.Find(x => x.공항이름.Contains(txtDepAirport_Name.Text)).공항ID;
            }
            //도착지 정보 업데이트가 필요한 상태일 경우
            if (contentState.HasFlag(ResultContentState.Arr_Old))               //	2
            {
                apiLeave.arrAirportId             = apiReturn.depAirportId
                                                  = airports.Find(x => x.공항이름.Contains(txtArrAirport_Name.Text)).공항ID;
            }
            //출발 날짜 정보 업데이트가 필요한 상태일 경우
            if (contentState.HasFlag(ResultContentState.leaveDate_Old))                 //	4
            {
                apiLeave.depPlandTime = dtpLeaveDate.Value.ToString("yyyyMMdd");
            }
            //귀환 날짜 정보 업데이트가 필요한 상태일 경우
            if (contentState.HasFlag(ResultContentState.returnDate_Old))                //	8
            {
                apiReturn.depPlandTime = dtpReturnDate.Value.ToString("yyyyMMdd");
            }
            //항공사 정보 업데이트가 필요한 상태일 경우
            if (contentState.HasFlag(ResultContentState.airline_Old))               //	16
            {
                foreach (Button btn in tpnlAirlines.Controls)
                {
                    if (isButtonActivated(btn))
                    {
                        currentAirLine.항공사명 = btn.Text;
                        leaves.Clear();
                        returns.Clear();
                        break;
                    }
                }
            }
            //1. 날짜, 공항, 항공사 업데이트가 아예 필요 없을 때
            //2. 날짜, 공항 목록 업데이트가 아예 필요 없고, 항공사만 업데이트 해야할 때
            //3. 다 업데이트 해야할 때
            if (currentAirLine.항공사명 == "< 전체 선택하기 >")
            {
                foreach (Airline al in airlines)
                {
                    apiLeave.airlineId = apiReturn.airlineId = al.항공사ID;
                    leaves.AddRange(apiLeave.getFlightInfo().ToList());
                    returns.AddRange(apiReturn.getFlightInfo().ToList());
                }
            }
            else
            {
                apiLeave.airlineId             = apiReturn.airlineId
                                               = airlines.Find(x => x.항공사명.Equals(currentAirLine.항공사명)).항공사ID;
                leaves  = apiLeave.getFlightInfo().ToList();
                returns = apiReturn.getFlightInfo().ToList();
            }

            fillListView(lvwLeaveFlights, leaves);
            fillListView(lvwReturnFlights, returns);

            btnLeaveTotal.Text
                = "총  "
                  + (lvwLeaveFlights.Items[0].Text != "항공편 없음" ? lvwLeaveFlights.Items.Count : 0)
                  + "  개의  결과";
            btnReturnTotal.Text
                = "총  "
                  + (lvwLeaveFlights.Items[0].Text != "항공편 없음" ? lvwReturnFlights.Items.Count : 0)
                  + "  개의  결과";

            return;
        }