Changeset 551 for trunk/dll/sortcnr.c
- Timestamp:
- Feb 28, 2007, 2:33:51 AM (19 years ago)
- File:
-
- 1 edited
-
trunk/dll/sortcnr.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/dll/sortcnr.c
r157 r551 26 26 #pragma alloc_text(SORTCNR,SortCnr,SortTreeCnr,SortDirCnr,SortCollectorCnr) 27 27 28 29 SHORT APIENTRY SortTreeCnr (PMINIRECORDCORE p1,PMINIRECORDCORE p2, 30 PVOID pStorage) 28 SHORT APIENTRY SortTreeCnr(PMINIRECORDCORE p1, PMINIRECORDCORE p2, 29 PVOID pStorage) 31 30 { 32 return SortCnr(p1, p2,((pStorage) ? (INT)pStorage : TreesortFlags));31 return SortCnr(p1, p2, ((pStorage) ? (INT) pStorage : TreesortFlags)); 33 32 } 34 33 34 SHORT APIENTRY SortDirCnr(PMINIRECORDCORE p1, PMINIRECORDCORE p2, 35 PVOID pStorage) 36 { 37 DIRCNRDATA *dcd = WinQueryWindowPtr(((PCNRITEM) p1)->hwndCnr, 0); 35 38 36 SHORT APIENTRY SortDirCnr (PMINIRECORDCORE p1,PMINIRECORDCORE p2, 37 PVOID pStorage) 38 { 39 DIRCNRDATA *dcd = WinQueryWindowPtr(((PCNRITEM)p1)->hwndCnr,0); 40 41 return SortCnr(p1,p2,((pStorage) ? (INT)pStorage : 42 (dcd && dcd->size == sizeof(DIRCNRDATA)) ? 43 dcd->sortFlags : sortFlags)); 39 return SortCnr(p1, p2, ((pStorage) ? (INT) pStorage : 40 (dcd && dcd->size == sizeof(DIRCNRDATA)) ? 41 dcd->sortFlags : sortFlags)); 44 42 } 45 43 46 47 SHORT APIENTRY SortCollectorCnr (PMINIRECORDCORE p1,PMINIRECORDCORE p2, 48 PVOID pStorage) 44 SHORT APIENTRY SortCollectorCnr(PMINIRECORDCORE p1, PMINIRECORDCORE p2, 45 PVOID pStorage) 49 46 { 50 return SortCnr(p1, p2,((pStorage) ? (INT)pStorage : CollectorsortFlags));47 return SortCnr(p1, p2, ((pStorage) ? (INT) pStorage : CollectorsortFlags)); 51 48 } 52 49 50 SHORT SortCnr(PMINIRECORDCORE pRec1, PMINIRECORDCORE pRec2, INT SortFlags) 51 { 52 PCNRITEM pCI1 = (PCNRITEM) pRec1; 53 PCNRITEM pCI2 = (PCNRITEM) pRec2; 54 SHORT ret = 0; 55 CHAR *pch1, *pch2; 53 56 54 SHORT SortCnr (PMINIRECORDCORE pRec1,PMINIRECORDCORE pRec2,INT SortFlags) 55 { 56 PCNRITEM pCI1 = (PCNRITEM)pRec1; 57 PCNRITEM pCI2 = (PCNRITEM)pRec2; 58 SHORT ret = 0; 59 CHAR *pch1,*pch2; 60 61 if(SortFlags & SORT_NOSORT) 57 if (SortFlags & SORT_NOSORT) 62 58 return 0; 63 if(SortFlags && pCI1->szFileName[3] && pCI2->szFileName[3]) { 64 if(SortFlags & SORT_DIRSFIRST) { 65 if((pCI1->attrFile & FILE_DIRECTORY) != (pCI2->attrFile & FILE_DIRECTORY)) 59 if (SortFlags && pCI1->szFileName[3] && pCI2->szFileName[3]) { 60 if (SortFlags & SORT_DIRSFIRST) { 61 if ((pCI1->attrFile & FILE_DIRECTORY) != 62 (pCI2->attrFile & FILE_DIRECTORY)) 66 63 return (pCI1->attrFile & FILE_DIRECTORY) ? -1 : 1; 67 64 } 68 else if(SortFlags & SORT_DIRSLAST) { 69 if((pCI1->attrFile & FILE_DIRECTORY) != (pCI2->attrFile & FILE_DIRECTORY)) 65 else if (SortFlags & SORT_DIRSLAST) { 66 if ((pCI1->attrFile & FILE_DIRECTORY) != 67 (pCI2->attrFile & FILE_DIRECTORY)) 70 68 return (pCI1->attrFile & FILE_DIRECTORY) ? 1 : -1; 71 69 } 72 switch (SortFlags & (~(SORT_DIRSFIRST | SORT_DIRSLAST | SORT_REVERSE))) {73 case SORT_SUBJECT:74 if(*pCI1->szSubject && *pCI2->szSubject)75 ret = stricmp(pCI1->szSubject,pCI2->szSubject);76 else {77 ret = (*pCI2->szSubject) ? 1 : (*pCI1->szSubject) ? -1 : 0;78 if(ret && (SortFlags & SORT_REVERSE))79 ret = (ret > 0) ? -1 : 1;80 }81 break;70 switch (SortFlags & (~(SORT_DIRSFIRST | SORT_DIRSLAST | SORT_REVERSE))) { 71 case SORT_SUBJECT: 72 if (*pCI1->szSubject && *pCI2->szSubject) 73 ret = stricmp(pCI1->szSubject, pCI2->szSubject); 74 else { 75 ret = (*pCI2->szSubject) ? 1 : (*pCI1->szSubject) ? -1 : 0; 76 if (ret && (SortFlags & SORT_REVERSE)) 77 ret = (ret > 0) ? -1 : 1; 78 } 79 break; 82 80 83 case SORT_FILENAME:84 pch1 = strrchr(pCI1->szFileName,'\\');85 pch2 = strrchr(pCI2->szFileName,'\\');86 if(!pch1)87 pch1 = NullStr;88 if(!pch2)89 pch2 = NullStr;90 ret = stricmp(pch1,pch2);91 break;81 case SORT_FILENAME: 82 pch1 = strrchr(pCI1->szFileName, '\\'); 83 pch2 = strrchr(pCI2->szFileName, '\\'); 84 if (!pch1) 85 pch1 = NullStr; 86 if (!pch2) 87 pch2 = NullStr; 88 ret = stricmp(pch1, pch2); 89 break; 92 90 93 case SORT_FIRSTEXTENSION:94 pch1 = strrchr(pCI1->szFileName,'\\');95 pch2 = strrchr(pCI2->szFileName,'\\');96 if(!pch1)97 pch1 = pCI1->szFileName;98 if(!pch2)99 pch2 = pCI2->szFileName;100 pch1 = strchr(pch1,'.');101 pch2 = strchr(pch2,'.');102 if(!pch1)103 pch1 = NullStr;104 if(!pch2)105 pch2 = NullStr;106 ret = stricmp(pch1,pch2);107 break;91 case SORT_FIRSTEXTENSION: 92 pch1 = strrchr(pCI1->szFileName, '\\'); 93 pch2 = strrchr(pCI2->szFileName, '\\'); 94 if (!pch1) 95 pch1 = pCI1->szFileName; 96 if (!pch2) 97 pch2 = pCI2->szFileName; 98 pch1 = strchr(pch1, '.'); 99 pch2 = strchr(pch2, '.'); 100 if (!pch1) 101 pch1 = NullStr; 102 if (!pch2) 103 pch2 = NullStr; 104 ret = stricmp(pch1, pch2); 105 break; 108 106 109 case SORT_LASTEXTENSION:110 pch1 = strrchr(pCI1->szFileName,'\\');111 pch2 = strrchr(pCI2->szFileName,'\\');112 if(!pch1)113 pch1 = pCI1->szFileName;114 if(!pch2)115 pch2 = pCI2->szFileName;116 pch1 = strrchr(pch1,'.');117 pch2 = strrchr(pch2,'.');118 if(!pch1)119 pch1 = NullStr;120 if(!pch2)121 pch2 = NullStr;122 ret = stricmp(pch1,pch2);123 break;107 case SORT_LASTEXTENSION: 108 pch1 = strrchr(pCI1->szFileName, '\\'); 109 pch2 = strrchr(pCI2->szFileName, '\\'); 110 if (!pch1) 111 pch1 = pCI1->szFileName; 112 if (!pch2) 113 pch2 = pCI2->szFileName; 114 pch1 = strrchr(pch1, '.'); 115 pch2 = strrchr(pch2, '.'); 116 if (!pch1) 117 pch1 = NullStr; 118 if (!pch2) 119 pch2 = NullStr; 120 ret = stricmp(pch1, pch2); 121 break; 124 122 125 case SORT_SIZE: 126 ret = (pCI1->cbFile < pCI2->cbFile) ? 1 : (pCI1->cbFile == pCI2->cbFile) ? 127 0 : -1; 128 if(!ret) 129 ret = (pCI1->easize < pCI2->easize) ? 1 : (pCI1->easize == pCI2->easize) ? 130 0 : -1; 131 break; 123 case SORT_SIZE: 124 ret = 125 (pCI1->cbFile < pCI2->cbFile) ? 1 : (pCI1->cbFile == 126 pCI2->cbFile) ? 0 : -1; 127 if (!ret) 128 ret = 129 (pCI1->easize < pCI2->easize) ? 1 : (pCI1->easize == 130 pCI2->easize) ? 0 : -1; 131 break; 132 132 133 case SORT_EASIZE: 134 ret = (pCI1->easize < pCI2->easize) ? 1 : (pCI1->easize == pCI2->easize) ? 135 0 : -1; 136 if(!ret) 137 ret = (pCI1->cbFile < pCI2->cbFile) ? 1 : (pCI1->cbFile == pCI2->cbFile) ? 138 0 : -1; 139 break; 133 case SORT_EASIZE: 134 ret = 135 (pCI1->easize < pCI2->easize) ? 1 : (pCI1->easize == 136 pCI2->easize) ? 0 : -1; 137 if (!ret) 138 ret = 139 (pCI1->cbFile < pCI2->cbFile) ? 1 : (pCI1->cbFile == 140 pCI2->cbFile) ? 0 : -1; 141 break; 140 142 141 case SORT_LWDATE:142 ret = (pCI1->date.year < pCI2->date.year) ? 1 :143 (pCI1->date.year > pCI2->date.year) ? -1 :144 (pCI1->date.month < pCI2->date.month) ? 1 :145 (pCI1->date.month > pCI2->date.month) ? -1 :146 (pCI1->date.day < pCI2->date.day) ? 1 :147 (pCI1->date.day > pCI2->date.day) ? -1 :148 (pCI1->time.hours < pCI2->time.hours) ? 1 :149 (pCI1->time.hours > pCI2->time.hours) ? -1 :150 (pCI1->time.minutes < pCI2->time.minutes) ? 1 :151 (pCI1->time.minutes > pCI2->time.minutes) ? -1 :152 (pCI1->time.seconds < pCI2->time.seconds) ? 1 :153 (pCI1->time.seconds > pCI2->time.seconds) ? -1 : 0;154 break;143 case SORT_LWDATE: 144 ret = (pCI1->date.year < pCI2->date.year) ? 1 : 145 (pCI1->date.year > pCI2->date.year) ? -1 : 146 (pCI1->date.month < pCI2->date.month) ? 1 : 147 (pCI1->date.month > pCI2->date.month) ? -1 : 148 (pCI1->date.day < pCI2->date.day) ? 1 : 149 (pCI1->date.day > pCI2->date.day) ? -1 : 150 (pCI1->time.hours < pCI2->time.hours) ? 1 : 151 (pCI1->time.hours > pCI2->time.hours) ? -1 : 152 (pCI1->time.minutes < pCI2->time.minutes) ? 1 : 153 (pCI1->time.minutes > pCI2->time.minutes) ? -1 : 154 (pCI1->time.seconds < pCI2->time.seconds) ? 1 : 155 (pCI1->time.seconds > pCI2->time.seconds) ? -1 : 0; 156 break; 155 157 156 case SORT_LADATE:157 ret = (pCI1->ladate.year < pCI2->ladate.year) ? 1 :158 (pCI1->ladate.year > pCI2->ladate.year) ? -1 :159 (pCI1->ladate.month < pCI2->ladate.month) ? 1 :160 (pCI1->ladate.month > pCI2->ladate.month) ? -1 :161 (pCI1->ladate.day < pCI2->ladate.day) ? 1 :162 (pCI1->ladate.day > pCI2->ladate.day) ? -1 :163 (pCI1->latime.hours < pCI2->latime.hours) ? 1 :164 (pCI1->latime.hours > pCI2->latime.hours) ? -1 :165 (pCI1->latime.minutes < pCI2->latime.minutes) ? 1 :166 (pCI1->latime.minutes > pCI2->latime.minutes) ? -1 :167 (pCI1->latime.seconds < pCI2->latime.seconds) ? 1 :168 (pCI1->latime.seconds > pCI2->latime.seconds) ? -1 : 0;169 break;158 case SORT_LADATE: 159 ret = (pCI1->ladate.year < pCI2->ladate.year) ? 1 : 160 (pCI1->ladate.year > pCI2->ladate.year) ? -1 : 161 (pCI1->ladate.month < pCI2->ladate.month) ? 1 : 162 (pCI1->ladate.month > pCI2->ladate.month) ? -1 : 163 (pCI1->ladate.day < pCI2->ladate.day) ? 1 : 164 (pCI1->ladate.day > pCI2->ladate.day) ? -1 : 165 (pCI1->latime.hours < pCI2->latime.hours) ? 1 : 166 (pCI1->latime.hours > pCI2->latime.hours) ? -1 : 167 (pCI1->latime.minutes < pCI2->latime.minutes) ? 1 : 168 (pCI1->latime.minutes > pCI2->latime.minutes) ? -1 : 169 (pCI1->latime.seconds < pCI2->latime.seconds) ? 1 : 170 (pCI1->latime.seconds > pCI2->latime.seconds) ? -1 : 0; 171 break; 170 172 171 case SORT_CRDATE:172 ret = (pCI1->crdate.year < pCI2->crdate.year) ? 1 :173 (pCI1->crdate.year > pCI2->crdate.year) ? -1 :174 (pCI1->crdate.month < pCI2->crdate.month) ? 1 :175 (pCI1->crdate.month > pCI2->crdate.month) ? -1 :176 (pCI1->crdate.day < pCI2->crdate.day) ? 1 :177 (pCI1->crdate.day > pCI2->crdate.day) ? -1 :178 (pCI1->crtime.hours < pCI2->crtime.hours) ? 1 :179 (pCI1->crtime.hours > pCI2->crtime.hours) ? -1 :180 (pCI1->crtime.minutes < pCI2->crtime.minutes) ? 1 :181 (pCI1->crtime.minutes > pCI2->crtime.minutes) ? -1 :182 (pCI1->crtime.seconds < pCI2->crtime.seconds) ? 1 :183 (pCI1->crtime.seconds > pCI2->crtime.seconds) ? -1 : 0;184 break;173 case SORT_CRDATE: 174 ret = (pCI1->crdate.year < pCI2->crdate.year) ? 1 : 175 (pCI1->crdate.year > pCI2->crdate.year) ? -1 : 176 (pCI1->crdate.month < pCI2->crdate.month) ? 1 : 177 (pCI1->crdate.month > pCI2->crdate.month) ? -1 : 178 (pCI1->crdate.day < pCI2->crdate.day) ? 1 : 179 (pCI1->crdate.day > pCI2->crdate.day) ? -1 : 180 (pCI1->crtime.hours < pCI2->crtime.hours) ? 1 : 181 (pCI1->crtime.hours > pCI2->crtime.hours) ? -1 : 182 (pCI1->crtime.minutes < pCI2->crtime.minutes) ? 1 : 183 (pCI1->crtime.minutes > pCI2->crtime.minutes) ? -1 : 184 (pCI1->crtime.seconds < pCI2->crtime.seconds) ? 1 : 185 (pCI1->crtime.seconds > pCI2->crtime.seconds) ? -1 : 0; 186 break; 185 187 } 186 188 187 if (!ret)188 ret = (SHORT) stricmp(pCI1->szFileName,pCI2->szFileName);189 if (!ret) 190 ret = (SHORT) stricmp(pCI1->szFileName, pCI2->szFileName); 189 191 190 if (ret && (SortFlags & SORT_REVERSE))192 if (ret && (SortFlags & SORT_REVERSE)) 191 193 ret = (ret > 0) ? -1 : 1; 192 194 193 195 return ret; 194 196 } 195 return (SHORT) stricmp(pCI1->szFileName,pCI2->szFileName);197 return (SHORT) stricmp(pCI1->szFileName, pCI2->szFileName); 196 198 }
Note:
See TracChangeset
for help on using the changeset viewer.
