int Model::CompareFolderNamesFirst(const Model *compareModel) const { if (compareModel == NULL) return -1; const Model *resolvedCompareModel = compareModel->ResolveIfLink(); const Model *resolvedMe = ResolveIfLink(); if (resolvedMe->IsVolume()) { if (!resolvedCompareModel->IsVolume()) return -1; } else if (resolvedCompareModel->IsVolume()) return 1; if (resolvedMe->IsDirectory()) { if (!resolvedCompareModel->IsDirectory()) return -1; } else if (resolvedCompareModel->IsDirectory()) return 1; return strcasecmp(Name(), compareModel->Name()); }
int Model::CompareFolderNamesFirst(const Model* compareModel) const { if (compareModel == NULL) return -1; const Model* resolvedCompareModel = compareModel->ResolveIfLink(); const Model* resolvedMe = ResolveIfLink(); bool meIsDirOrVolume = resolvedMe->IsDirectory() || resolvedMe->IsVolume() || resolvedMe->IsVirtualDirectory(); bool otherIsDirOrVolume = resolvedCompareModel->IsDirectory() || resolvedCompareModel->IsVolume() || resolvedCompareModel->IsVirtualDirectory(); if (meIsDirOrVolume) { if (!otherIsDirOrVolume) return -1; } else if (otherIsDirOrVolume) return 1; return NaturalCompare(Name(), compareModel->Name()); }