/* ** GeneralContainer+Additions.m ** ** Copyright (c) 2004 ** ** Author: Yen-Ju Chen ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "GeneralContainer+Additions.h" #include "LibrarySource.h" @interface NSDictionary (TypeComparison) - (NSComparisonResult) ascendingCompareType: (NSDictionary *) dictionary; - (NSComparisonResult) descendingCompareType: (NSDictionary *) dictionary; @end @implementation NSDictionary (TypeComparison) - (NSComparisonResult) ascendingCompareType: (NSDictionary *) dictionary { LibrarySource *librarySource = [LibrarySource sharedSource]; unsigned int u1 = [[self objectForKey: UniqueNumberKey] unsignedIntValue]; unsigned int u2 = [[dictionary objectForKey: UniqueNumberKey] unsignedIntValue]; unsigned int i1 = [librarySource indexOfUniqueNumber: u1]; unsigned int i2 = [librarySource indexOfUniqueNumber: u2]; NSString *type1 = [librarySource typeStringOfItemAtIndex: i1]; NSString *type2 = [librarySource typeStringOfItemAtIndex: i2]; return [type1 caseInsensitiveCompare: type2]; } - (NSComparisonResult) descendingCompareType: (NSDictionary *) dictionary { if ([self ascendingCompareType: dictionary] == NSOrderedAscending) return NSOrderedDescending; else return NSOrderedAscending; } @end @implementation GeneralContainer (MyLibraryAdditions) - (void) sortType: (NSComparisonResult) order { if (order == NSOrderedAscending) [container sortUsingSelector: @selector(ascendingCompareType:)]; else [container sortUsingSelector: @selector(descendingCompareType:)]; } @end