root / pithos-macos / PithosNode.m @ 3812626f
History | View | Annotate | Download (3.9 kB)
1 | d8d08dc1 | Miltiadis Vasilakis | // |
---|---|---|---|
2 | d8d08dc1 | Miltiadis Vasilakis | // PithosNode.m |
3 | d8d08dc1 | Miltiadis Vasilakis | // pithos-macos |
4 | d8d08dc1 | Miltiadis Vasilakis | // |
5 | e5fdf4d9 | Miltiadis Vasilakis | // Copyright 2011 GRNET S.A. All rights reserved. |
6 | d8d08dc1 | Miltiadis Vasilakis | // |
7 | e5fdf4d9 | Miltiadis Vasilakis | // Redistribution and use in source and binary forms, with or |
8 | e5fdf4d9 | Miltiadis Vasilakis | // without modification, are permitted provided that the following |
9 | e5fdf4d9 | Miltiadis Vasilakis | // conditions are met: |
10 | e5fdf4d9 | Miltiadis Vasilakis | // |
11 | e5fdf4d9 | Miltiadis Vasilakis | // 1. Redistributions of source code must retain the above |
12 | e5fdf4d9 | Miltiadis Vasilakis | // copyright notice, this list of conditions and the following |
13 | e5fdf4d9 | Miltiadis Vasilakis | // disclaimer. |
14 | e5fdf4d9 | Miltiadis Vasilakis | // |
15 | e5fdf4d9 | Miltiadis Vasilakis | // 2. Redistributions in binary form must reproduce the above |
16 | e5fdf4d9 | Miltiadis Vasilakis | // copyright notice, this list of conditions and the following |
17 | e5fdf4d9 | Miltiadis Vasilakis | // disclaimer in the documentation and/or other materials |
18 | e5fdf4d9 | Miltiadis Vasilakis | // provided with the distribution. |
19 | e5fdf4d9 | Miltiadis Vasilakis | // |
20 | e5fdf4d9 | Miltiadis Vasilakis | // THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS |
21 | e5fdf4d9 | Miltiadis Vasilakis | // OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
22 | e5fdf4d9 | Miltiadis Vasilakis | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
23 | e5fdf4d9 | Miltiadis Vasilakis | // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR |
24 | e5fdf4d9 | Miltiadis Vasilakis | // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
25 | e5fdf4d9 | Miltiadis Vasilakis | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
26 | e5fdf4d9 | Miltiadis Vasilakis | // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF |
27 | e5fdf4d9 | Miltiadis Vasilakis | // USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED |
28 | e5fdf4d9 | Miltiadis Vasilakis | // AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
29 | e5fdf4d9 | Miltiadis Vasilakis | // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN |
30 | e5fdf4d9 | Miltiadis Vasilakis | // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
31 | e5fdf4d9 | Miltiadis Vasilakis | // POSSIBILITY OF SUCH DAMAGE. |
32 | e5fdf4d9 | Miltiadis Vasilakis | // |
33 | e5fdf4d9 | Miltiadis Vasilakis | // The views and conclusions contained in the software and |
34 | e5fdf4d9 | Miltiadis Vasilakis | // documentation are those of the authors and should not be |
35 | e5fdf4d9 | Miltiadis Vasilakis | // interpreted as representing official policies, either expressed |
36 | e5fdf4d9 | Miltiadis Vasilakis | // or implied, of GRNET S.A. |
37 | d8d08dc1 | Miltiadis Vasilakis | |
38 | d8d08dc1 | Miltiadis Vasilakis | #import "PithosNode.h" |
39 | 2d9996a2 | Miltiadis Vasilakis | #import "PithosNodeInfoController.h" |
40 | 90fadc45 | Miltiadis Vasilakis | #import "ASIDownloadCache.h" |
41 | d8d08dc1 | Miltiadis Vasilakis | |
42 | d8d08dc1 | Miltiadis Vasilakis | @implementation PithosNode |
43 | 90fadc45 | Miltiadis Vasilakis | @synthesize forcedRefresh, parent, shared, sharingAccount, displayName, isLeafItem, icon; |
44 | 4ae10a2b | Miltiadis Vasilakis | @dynamic url, children, pithosContainer, pithosObject; |
45 | e5fdf4d9 | Miltiadis Vasilakis | |
46 | e5fdf4d9 | Miltiadis Vasilakis | #pragma mark - |
47 | e5fdf4d9 | Miltiadis Vasilakis | #pragma mark Object Lifecycle |
48 | d8d08dc1 | Miltiadis Vasilakis | |
49 | e5fdf4d9 | Miltiadis Vasilakis | - (id)init { |
50 | e5fdf4d9 | Miltiadis Vasilakis | if ((self == [super init])) { |
51 | 605c8932 | Miltiadis Vasilakis | freshness = PithosNodeStateRefreshNeeded; |
52 | 90fadc45 | Miltiadis Vasilakis | forcedRefresh = NO; |
53 | 4ae10a2b | Miltiadis Vasilakis | shared = NO; |
54 | e5fdf4d9 | Miltiadis Vasilakis | isLeafItem = NO; |
55 | d8d08dc1 | Miltiadis Vasilakis | } |
56 | d8d08dc1 | Miltiadis Vasilakis | return self; |
57 | d8d08dc1 | Miltiadis Vasilakis | } |
58 | d8d08dc1 | Miltiadis Vasilakis | |
59 | e5fdf4d9 | Miltiadis Vasilakis | - (void)dealloc { |
60 | 2d9996a2 | Miltiadis Vasilakis | [pithosNodeInfoController release]; |
61 | af3b9f06 | Miltiadis Vasilakis | [sharingAccount release]; |
62 | 155f0dfd | Miltiadis Vasilakis | [icon release]; |
63 | e5fdf4d9 | Miltiadis Vasilakis | [displayName release]; |
64 | 605c8932 | Miltiadis Vasilakis | [newChildren release]; |
65 | e5fdf4d9 | Miltiadis Vasilakis | [children release]; |
66 | e5fdf4d9 | Miltiadis Vasilakis | [url release]; |
67 | d8d08dc1 | Miltiadis Vasilakis | [super dealloc]; |
68 | d8d08dc1 | Miltiadis Vasilakis | } |
69 | d8d08dc1 | Miltiadis Vasilakis | |
70 | e5fdf4d9 | Miltiadis Vasilakis | - (BOOL)isEqual:(id)anObject { |
71 | 605c8932 | Miltiadis Vasilakis | return ([anObject isKindOfClass:[self class]] && [((PithosNode *)anObject).url isEqual:self.url]); |
72 | e5fdf4d9 | Miltiadis Vasilakis | } |
73 | e5fdf4d9 | Miltiadis Vasilakis | |
74 | e5fdf4d9 | Miltiadis Vasilakis | - (NSUInteger)hash { |
75 | e5fdf4d9 | Miltiadis Vasilakis | return self.url.hash; |
76 | e5fdf4d9 | Miltiadis Vasilakis | } |
77 | e5fdf4d9 | Miltiadis Vasilakis | |
78 | 2d9996a2 | Miltiadis Vasilakis | #pragma mark - |
79 | af3b9f06 | Miltiadis Vasilakis | #pragma mark Properties |
80 | af3b9f06 | Miltiadis Vasilakis | |
81 | af3b9f06 | Miltiadis Vasilakis | - (void)setShared:(BOOL)aShared { |
82 | af3b9f06 | Miltiadis Vasilakis | if (shared != aShared) { |
83 | af3b9f06 | Miltiadis Vasilakis | shared = aShared; |
84 | af3b9f06 | Miltiadis Vasilakis | [url release]; |
85 | af3b9f06 | Miltiadis Vasilakis | url = nil; |
86 | af3b9f06 | Miltiadis Vasilakis | } |
87 | af3b9f06 | Miltiadis Vasilakis | } |
88 | af3b9f06 | Miltiadis Vasilakis | |
89 | af3b9f06 | Miltiadis Vasilakis | - (void)setSharingAccount:(NSString *)aSharingAccount { |
90 | af3b9f06 | Miltiadis Vasilakis | if (![sharingAccount isEqualToString:aSharingAccount]) { |
91 | af3b9f06 | Miltiadis Vasilakis | [sharingAccount release]; |
92 | af3b9f06 | Miltiadis Vasilakis | sharingAccount = [aSharingAccount retain]; |
93 | af3b9f06 | Miltiadis Vasilakis | [url release]; |
94 | af3b9f06 | Miltiadis Vasilakis | url = nil; |
95 | af3b9f06 | Miltiadis Vasilakis | } |
96 | af3b9f06 | Miltiadis Vasilakis | } |
97 | af3b9f06 | Miltiadis Vasilakis | |
98 | af3b9f06 | Miltiadis Vasilakis | #pragma mark - |
99 | 2d9996a2 | Miltiadis Vasilakis | #pragma mark Actions |
100 | 2d9996a2 | Miltiadis Vasilakis | |
101 | e5fdf4d9 | Miltiadis Vasilakis | - (void)invalidateChildren { |
102 | 605c8932 | Miltiadis Vasilakis | if (freshness == PithosNodeStateFresh) |
103 | 605c8932 | Miltiadis Vasilakis | freshness = PithosNodeStateRefreshNeeded; |
104 | 605c8932 | Miltiadis Vasilakis | } |
105 | 605c8932 | Miltiadis Vasilakis | |
106 | 605c8932 | Miltiadis Vasilakis | - (void)invalidateChildrenRecursive { |
107 | 605c8932 | Miltiadis Vasilakis | if (freshness == PithosNodeStateFresh) { |
108 | 605c8932 | Miltiadis Vasilakis | for (PithosNode *child in children) { |
109 | 605c8932 | Miltiadis Vasilakis | [child invalidateChildrenRecursive]; |
110 | 605c8932 | Miltiadis Vasilakis | } |
111 | 605c8932 | Miltiadis Vasilakis | freshness = PithosNodeStateRefreshNeeded; |
112 | e5fdf4d9 | Miltiadis Vasilakis | } |
113 | e5fdf4d9 | Miltiadis Vasilakis | } |
114 | e5fdf4d9 | Miltiadis Vasilakis | |
115 | 4ae10a2b | Miltiadis Vasilakis | - (void)refresh { |
116 | 4ae10a2b | Miltiadis Vasilakis | [self invalidateChildren]; |
117 | 4ae10a2b | Miltiadis Vasilakis | self.children; |
118 | 4ae10a2b | Miltiadis Vasilakis | } |
119 | 4ae10a2b | Miltiadis Vasilakis | |
120 | 90fadc45 | Miltiadis Vasilakis | - (void)forceRefresh { |
121 | 90fadc45 | Miltiadis Vasilakis | forcedRefresh = YES; |
122 | 90fadc45 | Miltiadis Vasilakis | [self refresh]; |
123 | 90fadc45 | Miltiadis Vasilakis | } |
124 | 90fadc45 | Miltiadis Vasilakis | |
125 | 2d9996a2 | Miltiadis Vasilakis | - (void)showPithosNodeInfo:(id)sender { |
126 | 515cd8db | Miltiadis Vasilakis | // Abstract method |
127 | 2d9996a2 | Miltiadis Vasilakis | } |
128 | 2d9996a2 | Miltiadis Vasilakis | |
129 | 2d9996a2 | Miltiadis Vasilakis | - (void)pithosNodeInfoWillClose:(id)sender { |
130 | 2d9996a2 | Miltiadis Vasilakis | if (pithosNodeInfoController) { |
131 | 2d9996a2 | Miltiadis Vasilakis | [pithosNodeInfoController release]; |
132 | 2d9996a2 | Miltiadis Vasilakis | pithosNodeInfoController = nil; |
133 | 2d9996a2 | Miltiadis Vasilakis | } |
134 | 2d9996a2 | Miltiadis Vasilakis | } |
135 | 2d9996a2 | Miltiadis Vasilakis | |
136 | 6a9b9f40 | Miltiadis Vasilakis | - (void)pithosNodeWillBeRemoved { |
137 | 6a9b9f40 | Miltiadis Vasilakis | if (pithosNodeInfoController) { |
138 | 6a9b9f40 | Miltiadis Vasilakis | pithosNodeInfoController.node = nil; |
139 | 6a9b9f40 | Miltiadis Vasilakis | [[pithosNodeInfoController window] close]; |
140 | 6a9b9f40 | Miltiadis Vasilakis | } |
141 | 6a9b9f40 | Miltiadis Vasilakis | for (PithosNode *child in children) { |
142 | 6a9b9f40 | Miltiadis Vasilakis | [child pithosNodeWillBeRemoved]; |
143 | 6a9b9f40 | Miltiadis Vasilakis | } |
144 | 6a9b9f40 | Miltiadis Vasilakis | } |
145 | 6a9b9f40 | Miltiadis Vasilakis | |
146 | e5fdf4d9 | Miltiadis Vasilakis | @end |