Merged [13645] and [13646]: Fixed one of the longest-standing Adium bugs: The Color...
[adiumx.git] / Source / AIManualSort.m
blobef10ce1bc03347f53a51303a603ce7371512336b
1 /* 
2  * Adium is the legal property of its developers, whose names are listed in the copyright file included
3  * with this source distribution.
4  * 
5  * This program is free software; you can redistribute it and/or modify it under the terms of the GNU
6  * General Public License as published by the Free Software Foundation; either version 2 of the License,
7  * or (at your option) any later version.
8  * 
9  * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
10  * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General
11  * Public License for more details.
12  * 
13  * You should have received a copy of the GNU General Public License along with this program; if not,
14  * write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
15  */
17 #import "AIManualSort.h"
18 #import <Adium/AIListObject.h>
20 /*!
21  * @class AIManualSort
22  * @brief AISortController to sort only by manual ordering
23  */
24 @implementation AIManualSort
26 /*!
27  * @brief Non-localized identifier
28  */
29 - (NSString *)identifier{
30     return(@"ManualSort");
33 /*!
34  * @brief Localized display name
35  */
36 - (NSString *)displayName{
37     return(AILocalizedString(@"Sort Contacts Manually",nil));
40 /*!
41  * @brief Always sort groups to the top?
42  *
43  * For manual sorting, groups get sorted like any other object
44  */
45 - (BOOL)alwaysSortGroupsToTopByDefault{
46         return(NO);
49 /*!
50  * @brief Manual sort
51  */
52 int manualSort(id objectA, id objectB, BOOL groups)
54         //Contacts and Groups in manual order
55         float orderIndexA = [objectA orderIndex];
56         float orderIndexB = [objectB orderIndex];
57         
58         if(orderIndexA > orderIndexB){
59                 return(NSOrderedDescending);
60         }else if (orderIndexA < orderIndexB){
61                 return(NSOrderedAscending);
62         }else{
63                 return([[objectA internalObjectID] caseInsensitiveCompare:[objectB internalObjectID]]);
64         }
65         
68 /*!
69  * @brief Sort function
70  */
71 - (sortfunc)sortFunction{
72         return(&manualSort);
75 @end