public override int Compare(int xDataIndex, int yDataIndex) { ListSortDirection lastSortDirection = ListSortDirection.Ascending; if (m_sortDescriptionInfos != null) { int result = 0; int count = m_sortDescriptionInfos.Length; for (int i = 0; i < count; i++) { SortDescriptionInfo sortDescriptionInfo = m_sortDescriptionInfos[i]; lastSortDirection = sortDescriptionInfo.SortDirection; if (sortDescriptionInfo.Property == null) { continue; } IComparer sortComparer = sortDescriptionInfo.SortComparer; DataStore dataStore = sortDescriptionInfo.DataStore; if (sortComparer != null) { result = sortComparer.Compare(dataStore.GetData(xDataIndex), dataStore.GetData(yDataIndex)); } else { result = dataStore.Compare(xDataIndex, yDataIndex); } if (result != 0) { if (lastSortDirection == ListSortDirection.Descending) { result = -result; } return(result); } } } if (lastSortDirection == ListSortDirection.Descending) { return(yDataIndex - xDataIndex); } return(xDataIndex - yDataIndex); }
public bool IsReverseOf(SortDescriptionInfo sortDescriptionInfo) { if (sortDescriptionInfo.m_property == m_property) { switch (sortDescriptionInfo.m_direction) { case ListSortDirection.Ascending: return(m_direction == ListSortDirection.Descending); case ListSortDirection.Descending: return(m_direction == ListSortDirection.Ascending); } } return(false); }
public override bool Equals(object obj) { SortDescriptionInfo sortDescriptionInfo = obj as SortDescriptionInfo; if (sortDescriptionInfo == null) { return(false); } if ((sortDescriptionInfo.m_direction == m_direction) && (sortDescriptionInfo.m_property == m_property)) { return(true); } return(false); }