Statistics
| Branch: | Tag: | Revision:

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