[commit] r2673 - trunk/GME/GMEActiveBrowser

GMESRC Repository Notifications gme-commit at list.isis.vanderbilt.edu
Tue May 9 13:49:18 CDT 2017


Author: ksmyth
Date: Tue May  9 13:49:17 2017
New Revision: 2673

Log:
TreeBrowser: when sorting by name, tiebreak by RelID

Modified:
   trunk/GME/GMEActiveBrowser/AggregateOptions.h
   trunk/GME/GMEActiveBrowser/AggregateTreeCtrl.cpp

Modified: trunk/GME/GMEActiveBrowser/AggregateOptions.h
==============================================================================
--- trunk/GME/GMEActiveBrowser/AggregateOptions.h	Fri May  5 16:54:15 2017	(r2672)
+++ trunk/GME/GMEActiveBrowser/AggregateOptions.h	Tue May  9 13:49:17 2017	(r2673)
@@ -5,9 +5,7 @@
 #if !defined(AFX_AGGREGATEOPTIONS_H__F55D03CE_8EDB_422E_905B_67B46C9E5895__INCLUDED_)
 #define AFX_AGGREGATEOPTIONS_H__F55D03CE_8EDB_422E_905B_67B46C9E5895__INCLUDED_
 
-#if _MSC_VER > 1000
 #pragma once
-#endif // _MSC_VER > 1000
 
 enum eSortOptions{SORT_BYNAME,SORT_BYTYPE,SORT_BYCREATION};
 

Modified: trunk/GME/GMEActiveBrowser/AggregateTreeCtrl.cpp
==============================================================================
--- trunk/GME/GMEActiveBrowser/AggregateTreeCtrl.cpp	Fri May  5 16:54:15 2017	(r2672)
+++ trunk/GME/GMEActiveBrowser/AggregateTreeCtrl.cpp	Tue May  9 13:49:17 2017	(r2673)
@@ -483,7 +483,29 @@
 }
 
 
+static int SortRelID(CAggregateTreeCtrl* pTreeCtrl, HTREEITEM hItem1, HTREEITEM hItem2)
+{
+	CAggregateMgaObjectProxy MgaObjectProxyItem1;
+	CAggregateMgaObjectProxy MgaObjectProxyItem2;
+
+	if (
+		pTreeCtrl->m_MgaMap.LookupObjectProxy(hItem1, MgaObjectProxyItem1) &&
+		pTreeCtrl->m_MgaMap.LookupObjectProxy(hItem2, MgaObjectProxyItem2))
+	{
+		CComQIPtr<IMgaObject>ccpItem1(MgaObjectProxyItem1.m_pMgaObject);
+		CComQIPtr<IMgaObject>ccpItem2(MgaObjectProxyItem2.m_pMgaObject);
+
+		if (ccpItem1 && ccpItem2)
+		{
+			// Query the RelativeID
+			long lRelID1, lRelID2;
+			COMTHROW(ccpItem1->get_RelID(&lRelID1));
+			COMTHROW(ccpItem2->get_RelID(&lRelID2));
 
+			return lRelID1 - lRelID2;
+		}
+	}
+}
 
 
 int CAggregateTreeCtrl::ItemCompareProc(LPARAM lParamItem1, LPARAM lParamItem2, LPARAM lParamSort)
@@ -504,7 +526,13 @@
 			{
 				CString strItem1 = pTreeCtrl->GetItemText(hItem1);
 				CString strItem2 = pTreeCtrl->GetItemText(hItem2);
-				return -_tcscmp(strItem2, strItem1);
+				int nameDiff = -_tcscmp(strItem2, strItem1);
+				if (nameDiff != 0)
+				{
+					return nameDiff;
+				}
+				return SortRelID(pTreeCtrl, hItem1, hItem2);
+
 			}break;
 		case SORT_BYTYPE:
 			{
@@ -519,7 +547,11 @@
 					{
 						CString strItem1 = pTreeCtrl->GetItemText(hItem1);
 						CString strItem2 = pTreeCtrl->GetItemText(hItem2);
-						return -_tcscmp(strItem2, strItem1);
+						int nameDiff = -_tcscmp(strItem2, strItem1);
+						if (nameDiff != 0) {
+							return nameDiff;
+						}
+						return SortRelID(pTreeCtrl, hItem1, hItem2);
 
 					}
 
@@ -544,40 +576,7 @@
 
 			}break;
 		case SORT_BYCREATION:
-			{
-				
-				CAggregateMgaObjectProxy MgaObjectProxyItem1;
-				CAggregateMgaObjectProxy MgaObjectProxyItem2;
-
-				if(
-					pTreeCtrl->m_MgaMap.LookupObjectProxy(hItem1,MgaObjectProxyItem1) &&
-					pTreeCtrl->m_MgaMap.LookupObjectProxy(hItem2,MgaObjectProxyItem2))
-				{
-					CComQIPtr<IMgaObject>ccpItem1(MgaObjectProxyItem1.m_pMgaObject);
-					CComQIPtr<IMgaObject>ccpItem2(MgaObjectProxyItem2.m_pMgaObject);
-
-					if(ccpItem1 &&ccpItem2)
-					{						
-						// Query the RelativeID
-						long lRelID1,lRelID2;
-						COMTHROW(ccpItem1->get_RelID(&lRelID1));
-						COMTHROW(ccpItem2->get_RelID(&lRelID2));																	
-						
-						return lRelID1-lRelID2;
-					}
-					else // Unsuccessful query of the objects
-					{
-						return 0;
-					}
-
-				}
-				else
-				{
-					// For dummy elements that are not in the map it does not matter
-					return 0;
-				}
-
-			}break;
+			return SortRelID(pTreeCtrl, hItem1, hItem2);
 	}
 	return 0;
 }


More information about the gme-commit mailing list