コード例 #1
0
ファイル: PhotoInfoStorage.cpp プロジェクト: mikekov/ExifPro
PhotoInfoPtr PhotoInfoStorage::operator [] (size_t index)
{
	return GetNthItem(index);
}
コード例 #2
0
int CALLBACK CompareSubItem (LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
{
	int nC;
	CaListCtrlColorItemData* lpItem1 = (CaListCtrlColorItemData*)lParam1;
	CaListCtrlColorItemData* lpItem2 = (CaListCtrlColorItemData*)lParam2;
	if (lpItem1 == NULL || lpItem2 == NULL)
		return 0;
	CaTableTransactionItemData* pItem1 = (CaTableTransactionItemData*)lpItem1->m_lUserData;
	CaTableTransactionItemData* pItem2 = (CaTableTransactionItemData*)lpItem2->m_lUserData;

	SORTTABLECOLUMN* pSortCol = (SORTTABLECOLUMN*)lParamSort;
	ASSERT (pSortCol);
	if (!pSortCol)
		return 0;

	SORTPARAMS*   pSr = (SORTPARAMS*)(&pSortCol->m_sortParam);
	BOOL bAsc = pSr? pSr->m_bAsc: TRUE;

	if (pItem1 && pItem2)
	{
		nC = bAsc? 1 : -1;
		if ((pSr->m_nItem > -1) && (pSr->m_nItem < nHeader))
			return nC * pItem1->Compare (pItem2, pSr->m_nItem);
		else
		{
			//
			// Compare on the real column data type:
			CaColumn* pCol = GetNthColumn(pSortCol->m_pListColumn, pSr->m_nItem - (nHeader - 1));
			ASSERT (pCol);
			if (!pCol)
				return 0;

			CStringList& listStr1 = pItem1->GetListData();
			CStringList& listStr2 = pItem2->GetListData();
			CString str1 = GetNthItem(listStr1,  pSr->m_nItem - (nHeader - 1));
			CString str2 = GetNthItem(listStr2, pSr->m_nItem - (nHeader - 1));

			int nDisplayType = INGRESII_GetSqlDisplayType (pCol->GetType());
			switch (nDisplayType)
			{
			case SQLACT_NUMBER:
				{
					long lValue1 = _ttol (str1);
					long lValue2 = _ttol (str2);
					int nCP = (lValue1 > lValue2) ? 1 : (lValue1 < lValue2) ? -1: 0;
					return nC * nCP;
				}
				break;
			case SQLACT_NUMBER_FLOAT:
				{
					double dValue1 = atof (str1);
					double dValue2 = atof (str2);
					int nCP = (dValue1 > dValue2) ? 1 : (dValue1 < dValue2) ? -1: 0;
					return nC * nCP;
				}
				break;
			case SQLACT_TEXT:
				return nC * str1.CollateNoCase (str2);
				break;
			case SQLACT_DATE:
				return nC * IJA_CompareDate (str1, str2, TRUE);
				break;
			}
		}
	}
	else
	{
		nC = pItem1? 1: pItem2? -1: 0;
		return bAsc? nC: (-1)*nC;
	}

	return 0;
}