PhotoInfoPtr PhotoInfoStorage::operator [] (size_t index) { return GetNthItem(index); }
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; }