-
Notifications
You must be signed in to change notification settings - Fork 1
/
FileSystemItem.m
83 lines (61 loc) · 1.72 KB
/
FileSystemItem.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
//
// FileSystemItem.m
// XManager
//
// Created by demo on 10.08.11.
// Copyright 2011 __MyCompanyName__. All rights reserved.
//
#import "FileSystemItem.h"
@implementation FileSystemItem
- (id)init {
self = [super init];
if (self) {
isSelected = false;
}
return self;
}
@synthesize fullPath;
@synthesize name;
@synthesize size;
@synthesize date;
@synthesize type;
@synthesize isDir;
@synthesize isSelected;
-(NSComparisonResult) compareByName :(FileSystemItem*)rgh {
if ([self.name isEqualToString:@".."]) {
return NSOrderedAscending;
}
if([rgh.name isEqualToString:@".."]) {
return NSOrderedDescending;
}
// Каталог с каталогом или файл с файлом сравниваем по имени
if ((self.isDir && rgh.isDir) || (!self.isDir && !rgh.isDir)) {
return [self.name compare:rgh.name];
}
if (self.isDir) {
return NSOrderedAscending;
}
return NSOrderedDescending;
}
-(NSComparisonResult) compareBySize:(FileSystemItem *)rgh {
if(self.isDir || rgh.isDir)
return [self compareByName:rgh];
NSInteger ilft = self.size;
NSInteger irgh = rgh.size;
if(ilft < irgh)
return NSOrderedAscending;
if(ilft > irgh)
return NSOrderedDescending;
return NSOrderedSame;
}
-(NSComparisonResult) compareByDate:(FileSystemItem *)rgh {
if(self.isDir || rgh.isDir)
return [self compareByName:rgh];
return [self.date compare:rgh.date];
}
-(NSComparisonResult) compareByType:(FileSystemItem *)rgh {
if(self.isDir || rgh.isDir)
return [self compareByName:rgh];
return [self.type compare:rgh.type];
}
@end