Update the icon in the personal preferences if it's changed elsewhere (the contact...
[adiumx.git] / Source / AIManualSort.m
blob35d05fc32702f44c3ae9f0a4669d6f06690b566a
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 Can the user manually reorder when this sort controller is active?
51  *
52  * By definition, the manual sort controller allows manual sorting
53  */
54 - (BOOL)canSortManually {
55         return YES;
58 /*!
59  * @brief Manual sort
60  */
61 int manualSort(id objectA, id objectB, BOOL groups)
63         //Contacts and Groups in manual order
64         float orderIndexA = [objectA orderIndex];
65         float orderIndexB = [objectB orderIndex];
66         
67         if (orderIndexA > orderIndexB) {
68                 return NSOrderedDescending;
69         } else if (orderIndexA < orderIndexB) {
70                 return NSOrderedAscending;
71         } else {
72                 return [[objectA internalObjectID] caseInsensitiveCompare:[objectB internalObjectID]];
73         }
74         
77 /*!
78  * @brief Sort function
79  */
80 - (sortfunc)sortFunction{
81         return &manualSort;
84 @end