void CDlgPerformanceTakeoff::OnDelItem()
{
	ASSERT(::IsWindow(m_wndListCtrl.m_hWnd));

	POSITION pos = m_wndListCtrl.GetFirstSelectedItemPosition();
	if (pos != NULL)
	{
		while (pos)
		{
			int nItem = m_wndListCtrl.GetNextSelectedItem(pos);
			std::vector<PerformTakeOff>::iterator iter
				= m_pCompsiteACTakeoffs->GetTakeoffs().begin()+ nItem;
			try
			{
				m_pCompsiteACTakeoffs->DeletePerformTakeOff(*iter);
				m_pCompsiteACTakeoffs->GetTakeoffs().erase(iter);
				m_wndListCtrl.DeleteItemEx(nItem);
				UpdateToolBarState();
			}
			catch (_com_error& e)
			{
				AfxMessageBox((LPCSTR)e.Description());
			}
		}
	}
	GetDlgItem(IDC_SAVE)->EnableWindow(TRUE);
}
BOOL CDlgWingspanAdjacancyConstraints::OnInitDialog()
{
	CDialog::OnInitDialog();
	SetWindowText(_T("Wingspan Adjacency Constraints"));

	// TODO:  Add extra initialization here
	GetDlgItem(IDC_BUTTON_SAVE)->EnableWindow(FALSE);
	//list
	DWORD dwStyle = m_wndListCtrl.GetExtendedStyle();
	dwStyle |= LVS_EX_FULLROWSELECT|LVS_EX_HEADERDRAGDROP|LVS_EX_GRIDLINES;
	m_wndListCtrl.SetExtendedStyle(dwStyle);

	//load data for taxiway adjacency
	m_vData.LoadData(m_nProjID);
	// set the layout of child controls
	RefreshLayout();

	// init the list control
	InitListControl();

	// set the toolbar button state
	UpdateToolBarState();

	GetAllTaxiway();

	FillListControl();

	return TRUE;  // return TRUE unless you set the focus to a control
	// EXCEPTION: OCX Property Pages should return FALSE
}
void CDlgWingspanAdjacancyConstraints::OnLvnItemchangedList(NMHDR *pNMHDR, LRESULT *pResult)
{	
	LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
	UpdateToolBarState();

	int nSelItem = GetSelectedListItem();
	if (nSelItem < 0)
		return;
	CWingspanAdjacencyConstraints *pConstraint = (CWingspanAdjacencyConstraints *)m_wndListCtrl.GetItemData(nSelItem);
	if (pConstraint ==  NULL)
		return;




	{
		CStringList lstFirstNode;
		GetNodeListByTaxiway(pConstraint->m_firstaxiway.m_pTaxiway,lstFirstNode);

		LVCOLDROPLIST* pDroplistFrom =  m_wndListCtrl.GetColumnStyle(1);
		LVCOLDROPLIST* pDroplistTo =  m_wndListCtrl.GetColumnStyle(2);
		if(pDroplistFrom && pDroplistTo)
		{
			pDroplistFrom->List.RemoveAll();
			pDroplistTo->List.RemoveAll();
			POSITION pos;
			for( pos = lstFirstNode.GetHeadPosition(); pos;)
			{
				pDroplistFrom->List.AddTail(lstFirstNode.GetAt(pos));
				pDroplistTo->List.AddTail(lstFirstNode.GetAt(pos));
				lstFirstNode.GetNext( pos );
			}
		}
	}


	{	
		CStringList lstSecondNode;	
		GetNodeListByTaxiway(pConstraint->m_secondTaxiway.m_pTaxiway,lstSecondNode);
		LVCOLDROPLIST* pDroplistFrom =  m_wndListCtrl.GetColumnStyle(7);
		LVCOLDROPLIST* pDroplistTo =  m_wndListCtrl.GetColumnStyle(8);
		if(pDroplistFrom && pDroplistTo)
		{
			pDroplistFrom->List.RemoveAll();
			pDroplistTo->List.RemoveAll();
			POSITION pos;
			for( pos = lstSecondNode.GetHeadPosition(); pos;)
			{
				pDroplistFrom->List.AddTail(lstSecondNode.GetAt(pos));
				pDroplistTo->List.AddTail(lstSecondNode.GetAt(pos));
				lstSecondNode.GetNext( pos );
			}
		}
	}


}
void CFeedIcoItemListCtrl::OnLvnItemchanged(NMHDR *pNMHDR, LRESULT *pResult)
{
	LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
	// TODO: 在此添加控件通知处理程序代码
	*pResult = 0;

	// 更新工具条
	CDownloadTabWnd & wd = theApp.emuledlg->m_mainTabWnd.m_dlgDownload.m_DownloadTabWnd;
	UpdateToolBarState(wd.m_Toolbar);
}
void CDlgPerformanceTakeoff::OnListItemChanged(int nItem, int nSubItem)
{
	CString strCurVal = m_wndListCtrl.GetItemText(nItem, nSubItem);
	double dCurVal = atof(strCurVal.GetBuffer(0));	
	PerformTakeOff &takeOff = m_pCompsiteACTakeoffs->GetTakeoffs().at(nItem);
	
	switch(nSubItem) {
	case  1:
		takeOff.m_nMinAcceleration = dCurVal;
		break;
	case  2:
		takeOff.m_nMaxAcceleration = dCurVal;
		break;
	case  3:
		takeOff.m_nMinLiftOff = dCurVal;
		break;
	case  4:
		takeOff.m_nMaxLiftOff = dCurVal;
		break;
	case  5:
		takeOff.m_nMinPositionTime = dCurVal;
		break;
	case  6:
		takeOff.m_nMaxPositionTime = dCurVal;
		break;
	case  7:
		takeOff.m_minTakeOffRoll = dCurVal;
		break;
	case  8:
		takeOff.m_maxTakeOffRoll = dCurVal;
		break;
	case  9:
		takeOff.m_fuelBurn = dCurVal;
		break;
	case  10:
		takeOff.m_cost = dCurVal;
		break;
	
	default:
		break;
	}

	try
	{
		m_pCompsiteACTakeoffs->UpdatePerformTakeOff(takeOff);				
		GetDlgItem(IDC_SAVE)->EnableWindow(TRUE);
	}
	catch (_com_error& e)
	{
		AfxMessageBox((LPCSTR)e.Description());
	}

	UpdateToolBarState();
}
void CDlgWingspanAdjacancyConstraints::OnCmdDeleteItem()
{
	int nSelItem = GetSelectedListItem();
	if (nSelItem < 0)
		return;
	CWingspanAdjacencyConstraints *pConstraint = (CWingspanAdjacencyConstraints *)m_wndListCtrl.GetItemData(nSelItem);
	if(pConstraint)
	{
		m_vData.DelItem(pConstraint);
	}
	m_wndListCtrl.DeleteItemEx(nSelItem);

	UpdateToolBarState();
	GetDlgItem(IDC_BUTTON_SAVE)->EnableWindow();
}
void CDlgPerformanceTakeoff::OnNECItemChanged(int nItem, int nNewNECTableID)
{
	//PerformTakeOff& tf = m_pCompsiteACTakeoffs->GetTakeoffs().at(nItem);
	//tf.m_nNECID = nNewNECTableID;

	//try
	//{
	//	m_pCompsiteACTakeoffs->UpdatePerformTakeOff(tf);			
	//	GetDlgItem(IDC_SAVE)->EnableWindow(TRUE);
	//}
	//catch (_com_error& e)
	//{
	//	AfxMessageBox((LPCSTR)e.Description());
	//}

	UpdateToolBarState();
}
BOOL CFeedIcoItemListCtrl::OnCommand(WPARAM wParam, LPARAM lParam)
{
	// TODO: 在此添加专用代码和/或调用基类

	if (  /*LOWORD(wParam) == MP_STOP
		||*/LOWORD(wParam) == MP_DOWNLOAD_ALL
		||LOWORD(wParam) == MP_OPEN
		||LOWORD(wParam) == MP_OPENFOLDER
		||LOWORD(wParam) == MP_RESUME
		||LOWORD(wParam) == MP_PAUSE
		||LOWORD(wParam) == MP_CANCEL
		||LOWORD(wParam) == MP_OPTIONS)
	{
		POSITION Pos = this->GetFirstSelectedItemPosition();
		if (Pos == NULL)
		{
			return 0;
		}
		int nIndex = this->GetNextSelectedItem(Pos);

		if( CRssFeed* pFeed = this->GetFeed(nIndex) )
		{
			if ( LOWORD(wParam) == MP_OPENFOLDER)
			{
				if( CRssFeed* pFeed = this->GetFeed(nIndex) )
				{
					if(PathFileExists(pFeed->m_strSaveDir))
						ShellExecute(NULL, _T("open"), _T("explorer.exe"), pFeed->m_strSaveDir, NULL, SW_SHOW);
				}
			}

			if ( LOWORD(wParam) == MP_DOWNLOAD_ALL )
			{
				((CRssFeedWnd*)GetParent())->DownloadAllItem(nIndex);
			}
			if ( LOWORD(wParam) == MP_RESUME )
			{
				((CRssFeedWnd*)GetParent())->ResumeAllItem(nIndex);
			}
			if ( LOWORD(wParam) == MP_PAUSE)
			{
				for ( CRssFeed::ItemIterator it = pFeed->GetItemIterBegin();
					it != pFeed->GetItemIterEnd();
					++it
					)
				{
					CPartFile* pPartFile = it->second.GetPartFile();
					if (pPartFile != NULL)
					{
						if (pPartFile->CanPauseFile())
							pPartFile->PauseFile();		
					}
				}
			}

			if ( LOWORD(wParam) == MP_CANCEL)
			{
				::SendMessage(CGlobalVariable::s_wndRssCtrl->GetSafeHwnd(), WM_COMMAND, wParam, lParam);
			}

			if ( LOWORD(wParam) == MP_OPTIONS)
			{
				CDlgFeedConfig dlgFeedConfig(*pFeed);
				if ( dlgFeedConfig.DoModal() == IDOK )
				{
					// 保存设置
					pFeed->SetUpdateInterval(dlgFeedConfig.m_uUpdateInterval);
					pFeed->SetAutoDownload(dlgFeedConfig.m_uAutoDownload);
					CGlobalVariable::s_wndRssCtrl->SaveFeed(*pFeed);
					//RedrawItems(nIndex, nIndex);
				}
			}

			CDownloadTabWnd & wd = theApp.emuledlg->m_mainTabWnd.m_dlgDownload.m_DownloadTabWnd;
			UpdateToolBarState(wd.m_Toolbar);

			return 0;
		}
	}

	::SendMessage(CGlobalVariable::s_wndRssCtrl->GetSafeHwnd(), WM_COMMAND, wParam, lParam);
	
	return CListCtrl::OnCommand(wParam, lParam);
}