Statistics
| Branch: | Tag: | Revision:

root / pithos-macos / PithosPreferencesController.m @ d8426ffb

History | View | Annotate | Download (10.2 kB)

1 589a14ca Miltiadis Vasilakis
//
2 589a14ca Miltiadis Vasilakis
//  PithosPreferencesController.m
3 589a14ca Miltiadis Vasilakis
//  pithos-macos
4 589a14ca Miltiadis Vasilakis
//
5 d8426ffb Miltiadis Vasilakis
// Copyright 2011-2012 GRNET S.A. All rights reserved.
6 589a14ca Miltiadis Vasilakis
//
7 589a14ca Miltiadis Vasilakis
// Redistribution and use in source and binary forms, with or
8 589a14ca Miltiadis Vasilakis
// without modification, are permitted provided that the following
9 589a14ca Miltiadis Vasilakis
// conditions are met:
10 589a14ca Miltiadis Vasilakis
// 
11 589a14ca Miltiadis Vasilakis
//   1. Redistributions of source code must retain the above
12 589a14ca Miltiadis Vasilakis
//      copyright notice, this list of conditions and the following
13 589a14ca Miltiadis Vasilakis
//      disclaimer.
14 589a14ca Miltiadis Vasilakis
// 
15 589a14ca Miltiadis Vasilakis
//   2. Redistributions in binary form must reproduce the above
16 589a14ca Miltiadis Vasilakis
//      copyright notice, this list of conditions and the following
17 589a14ca Miltiadis Vasilakis
//      disclaimer in the documentation and/or other materials
18 589a14ca Miltiadis Vasilakis
//      provided with the distribution.
19 589a14ca Miltiadis Vasilakis
// 
20 589a14ca Miltiadis Vasilakis
// THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
21 589a14ca Miltiadis Vasilakis
// OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
22 589a14ca Miltiadis Vasilakis
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23 589a14ca Miltiadis Vasilakis
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
24 589a14ca Miltiadis Vasilakis
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25 589a14ca Miltiadis Vasilakis
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26 589a14ca Miltiadis Vasilakis
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
27 589a14ca Miltiadis Vasilakis
// USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
28 589a14ca Miltiadis Vasilakis
// AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29 589a14ca Miltiadis Vasilakis
// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
30 589a14ca Miltiadis Vasilakis
// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31 589a14ca Miltiadis Vasilakis
// POSSIBILITY OF SUCH DAMAGE.
32 589a14ca Miltiadis Vasilakis
// 
33 589a14ca Miltiadis Vasilakis
// The views and conclusions contained in the software and
34 589a14ca Miltiadis Vasilakis
// documentation are those of the authors and should not be
35 589a14ca Miltiadis Vasilakis
// interpreted as representing official policies, either expressed
36 589a14ca Miltiadis Vasilakis
// or implied, of GRNET S.A.
37 589a14ca Miltiadis Vasilakis
38 589a14ca Miltiadis Vasilakis
#import "PithosPreferencesController.h"
39 470e6f81 Miltiadis Vasilakis
#import "PithosBrowserController.h"
40 470e6f81 Miltiadis Vasilakis
#import "PithosAccountNode.h"
41 d8426ffb Miltiadis Vasilakis
#import "PithosAccount.h"
42 589a14ca Miltiadis Vasilakis
#import "pithos_macosAppDelegate.h"
43 589a14ca Miltiadis Vasilakis
44 589a14ca Miltiadis Vasilakis
@implementation PithosPreferencesController
45 d8426ffb Miltiadis Vasilakis
@synthesize pithosBrowserController, selectedPithosAccount;
46 d8426ffb Miltiadis Vasilakis
@synthesize accountsArrayController;
47 d8426ffb Miltiadis Vasilakis
@synthesize accountRemoveEnable;
48 d8426ffb Miltiadis Vasilakis
@synthesize serverURL, authUser, authToken, manual, loginEnable, loginCancelEnable;
49 470e6f81 Miltiadis Vasilakis
@synthesize groupsDictionaryController, selectedGroupMembersDictionaryController;
50 d8426ffb Miltiadis Vasilakis
@synthesize syncActive, syncDirectoryPath, syncApplyEnable, syncCancelEnable;
51 470e6f81 Miltiadis Vasilakis
52 470e6f81 Miltiadis Vasilakis
#pragma mark -
53 470e6f81 Miltiadis Vasilakis
#pragma mark Object Lifecycle
54 589a14ca Miltiadis Vasilakis
55 589a14ca Miltiadis Vasilakis
- (id)init {
56 589a14ca Miltiadis Vasilakis
    return [super initWithWindowNibName:@"PithosPreferencesController"];
57 589a14ca Miltiadis Vasilakis
}
58 589a14ca Miltiadis Vasilakis
59 589a14ca Miltiadis Vasilakis
- (void)windowDidLoad {
60 589a14ca Miltiadis Vasilakis
    [super windowDidLoad];
61 589a14ca Miltiadis Vasilakis
    
62 589a14ca Miltiadis Vasilakis
    NSWindow *window = [self window];
63 589a14ca Miltiadis Vasilakis
    [window setHidesOnDeactivate:NO];
64 589a14ca Miltiadis Vasilakis
    [window setExcludedFromWindowsMenu:YES];
65 589a14ca Miltiadis Vasilakis
    
66 d8426ffb Miltiadis Vasilakis
//	// Select the first tab when the window is loaded for the first time.
67 d8426ffb Miltiadis Vasilakis
//	[[window valueForKeyPath:@"toolbar"] setSelectedItemIdentifier:@"0"];
68 470e6f81 Miltiadis Vasilakis
69 470e6f81 Miltiadis Vasilakis
    [groupsDictionaryController setInitialKey:@"group"];
70 470e6f81 Miltiadis Vasilakis
    [groupsDictionaryController setInitialValue:@"user"];
71 470e6f81 Miltiadis Vasilakis
    [selectedGroupMembersDictionaryController setInitialKey:@"user"];
72 470e6f81 Miltiadis Vasilakis
    [selectedGroupMembersDictionaryController setInitialValue:@""];
73 470e6f81 Miltiadis Vasilakis
74 2d9996a2 Miltiadis Vasilakis
    [window setDelegate:self];
75 d8426ffb Miltiadis Vasilakis
    
76 d8426ffb Miltiadis Vasilakis
    self.selectedPithosAccount = [[accountsArrayController selectedObjects] objectAtIndex:0];
77 d8426ffb Miltiadis Vasilakis
    [accountsArrayController addObserver:self forKeyPath:@"selection" options:NSKeyValueObservingOptionNew context:NULL];
78 589a14ca Miltiadis Vasilakis
}
79 589a14ca Miltiadis Vasilakis
80 d8426ffb Miltiadis Vasilakis
- (BOOL)windowShouldClose:(id)sender {
81 d8426ffb Miltiadis Vasilakis
    return [(pithos_macosAppDelegate *)[[NSApplication sharedApplication] delegate] activated];
82 589a14ca Miltiadis Vasilakis
}
83 589a14ca Miltiadis Vasilakis
84 d8426ffb Miltiadis Vasilakis
//- (void)windowWillClose:(NSNotification *)notification {
85 d8426ffb Miltiadis Vasilakis
//}
86 d8426ffb Miltiadis Vasilakis
87 d8426ffb Miltiadis Vasilakis
//- (IBAction)toolbarItemSelected:(id)sender {
88 d8426ffb Miltiadis Vasilakis
//}
89 d8426ffb Miltiadis Vasilakis
90 d8426ffb Miltiadis Vasilakis
#pragma mark -
91 d8426ffb Miltiadis Vasilakis
#pragma Observers
92 d8426ffb Miltiadis Vasilakis
93 d8426ffb Miltiadis Vasilakis
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
94 d8426ffb Miltiadis Vasilakis
    if ([object isEqualTo:accountsArrayController] && 
95 d8426ffb Miltiadis Vasilakis
        [keyPath isEqualToString:@"selection"] && 
96 d8426ffb Miltiadis Vasilakis
        [[accountsArrayController selectedObjects] count]) {
97 d8426ffb Miltiadis Vasilakis
        self.selectedPithosAccount = [[accountsArrayController selectedObjects] objectAtIndex:0];
98 d8426ffb Miltiadis Vasilakis
    }
99 d8426ffb Miltiadis Vasilakis
}
100 d8426ffb Miltiadis Vasilakis
101 d8426ffb Miltiadis Vasilakis
#pragma mark -
102 d8426ffb Miltiadis Vasilakis
#pragma Update
103 d8426ffb Miltiadis Vasilakis
104 d8426ffb Miltiadis Vasilakis
- (void)updateAccounts {
105 d8426ffb Miltiadis Vasilakis
    pithos_macosAppDelegate *delegate = (pithos_macosAppDelegate *)[[NSApplication sharedApplication] delegate];
106 d8426ffb Miltiadis Vasilakis
    self.accountRemoveEnable = (delegate.activated && ([delegate.pithosAccounts count] > 1));
107 d8426ffb Miltiadis Vasilakis
}
108 d8426ffb Miltiadis Vasilakis
109 d8426ffb Miltiadis Vasilakis
- (void)updateLogin {
110 d8426ffb Miltiadis Vasilakis
    self.loginEnable = ([selectedPithosAccount urlIsValid:serverURL] && (!manual || ([authUser length] && [authToken length])));
111 d8426ffb Miltiadis Vasilakis
    self.loginCancelEnable = (![selectedPithosAccount.serverURL isEqualToString:serverURL] || 
112 d8426ffb Miltiadis Vasilakis
                              (selectedPithosAccount.authUser && ![selectedPithosAccount.authUser isEqualToString:authUser]) || 
113 d8426ffb Miltiadis Vasilakis
                              (selectedPithosAccount.authToken && ![selectedPithosAccount.authToken isEqualToString:authToken]));
114 d8426ffb Miltiadis Vasilakis
}
115 d8426ffb Miltiadis Vasilakis
116 d8426ffb Miltiadis Vasilakis
- (void)updateSync {
117 d8426ffb Miltiadis Vasilakis
    BOOL isDirectory;
118 d8426ffb Miltiadis Vasilakis
    self.syncApplyEnable = (selectedPithosAccount.active && 
119 d8426ffb Miltiadis Vasilakis
                            ((selectedPithosAccount.syncActive != syncActive) || 
120 d8426ffb Miltiadis Vasilakis
                             (![selectedPithosAccount.syncDirectoryPath isEqualToString:syncDirectoryPath] && 
121 d8426ffb Miltiadis Vasilakis
                              (![[NSFileManager defaultManager] fileExistsAtPath:syncDirectoryPath isDirectory:&isDirectory] || 
122 d8426ffb Miltiadis Vasilakis
                               isDirectory))));
123 d8426ffb Miltiadis Vasilakis
    self.syncCancelEnable = (selectedPithosAccount.active && 
124 d8426ffb Miltiadis Vasilakis
                             ((selectedPithosAccount.syncActive != syncActive) || 
125 d8426ffb Miltiadis Vasilakis
                              ![selectedPithosAccount.syncDirectoryPath isEqualToString:syncDirectoryPath]));
126 589a14ca Miltiadis Vasilakis
}
127 589a14ca Miltiadis Vasilakis
128 589a14ca Miltiadis Vasilakis
#pragma mark -
129 dbfd951b Miltiadis Vasilakis
#pragma Properties
130 589a14ca Miltiadis Vasilakis
131 d8426ffb Miltiadis Vasilakis
- (void)setSelectedPithosAccount:(PithosAccount *)aSelectedPithosAccount {
132 d8426ffb Miltiadis Vasilakis
    if (aSelectedPithosAccount && ![aSelectedPithosAccount isEqualTo:selectedPithosAccount]) {
133 d8426ffb Miltiadis Vasilakis
        [selectedPithosAccount release];
134 d8426ffb Miltiadis Vasilakis
        selectedPithosAccount = [aSelectedPithosAccount retain];
135 d8426ffb Miltiadis Vasilakis
        
136 d8426ffb Miltiadis Vasilakis
        [self updateAccounts];
137 d8426ffb Miltiadis Vasilakis
        [self loginCancel:self];
138 d8426ffb Miltiadis Vasilakis
        [self syncCancel:self];
139 d8426ffb Miltiadis Vasilakis
        [self groupsRevert:self];
140 d8426ffb Miltiadis Vasilakis
    }
141 d8426ffb Miltiadis Vasilakis
}
142 d8426ffb Miltiadis Vasilakis
143 d8426ffb Miltiadis Vasilakis
#pragma Login Properties
144 d8426ffb Miltiadis Vasilakis
145 d8426ffb Miltiadis Vasilakis
- (void)setServerURL:(NSString *)aServerURL {
146 d8426ffb Miltiadis Vasilakis
    [serverURL release];
147 d8426ffb Miltiadis Vasilakis
    serverURL = [aServerURL copy];
148 d8426ffb Miltiadis Vasilakis
    [self updateLogin];
149 d8426ffb Miltiadis Vasilakis
}
150 d8426ffb Miltiadis Vasilakis
151 d8426ffb Miltiadis Vasilakis
- (void)setAuthUser:(NSString *)anAuthUser {
152 d8426ffb Miltiadis Vasilakis
    [authUser release];
153 d8426ffb Miltiadis Vasilakis
    authUser = [anAuthUser copy];
154 d8426ffb Miltiadis Vasilakis
    [self updateLogin];
155 d8426ffb Miltiadis Vasilakis
}
156 d8426ffb Miltiadis Vasilakis
157 d8426ffb Miltiadis Vasilakis
- (void)setAuthToken:(NSString *)anAuthToken {
158 d8426ffb Miltiadis Vasilakis
    [authToken release];
159 d8426ffb Miltiadis Vasilakis
    authToken = [anAuthToken copy];
160 d8426ffb Miltiadis Vasilakis
    [self updateLogin];
161 d8426ffb Miltiadis Vasilakis
}
162 d8426ffb Miltiadis Vasilakis
163 dbfd951b Miltiadis Vasilakis
- (void)setManual:(BOOL)aManual {
164 dbfd951b Miltiadis Vasilakis
    manual = aManual;
165 d8426ffb Miltiadis Vasilakis
    [self updateLogin];
166 dbfd951b Miltiadis Vasilakis
    if (!manual) {
167 d8426ffb Miltiadis Vasilakis
        self.authUser = [[selectedPithosAccount.authUser copy] autorelease];
168 d8426ffb Miltiadis Vasilakis
        self.authToken = [[selectedPithosAccount.authToken copy] autorelease];
169 dbfd951b Miltiadis Vasilakis
    }
170 74314fd6 Miltiadis Vasilakis
}
171 74314fd6 Miltiadis Vasilakis
172 d8426ffb Miltiadis Vasilakis
#pragma Sync Properties
173 d8426ffb Miltiadis Vasilakis
174 d8426ffb Miltiadis Vasilakis
- (void)setSyncActive:(BOOL)aSyncActive {
175 d8426ffb Miltiadis Vasilakis
    syncActive = aSyncActive;
176 d8426ffb Miltiadis Vasilakis
    [self updateSync];
177 d8426ffb Miltiadis Vasilakis
}
178 d8426ffb Miltiadis Vasilakis
179 d8426ffb Miltiadis Vasilakis
- (void)setSyncDirectoryPath:(NSString *)aSyncDirectoryPath {
180 d8426ffb Miltiadis Vasilakis
    [syncDirectoryPath release];
181 d8426ffb Miltiadis Vasilakis
    syncDirectoryPath = [aSyncDirectoryPath copy];
182 d8426ffb Miltiadis Vasilakis
    [self updateSync];
183 d8426ffb Miltiadis Vasilakis
}
184 d8426ffb Miltiadis Vasilakis
185 dbfd951b Miltiadis Vasilakis
#pragma mark -
186 d8426ffb Miltiadis Vasilakis
#pragma Actions
187 d8426ffb Miltiadis Vasilakis
188 d8426ffb Miltiadis Vasilakis
- (IBAction)addAccount:(id)sender {
189 d8426ffb Miltiadis Vasilakis
    [accountsArrayController addObject:[PithosAccount pithosAccount]];
190 d8426ffb Miltiadis Vasilakis
    [self updateAccounts];
191 d8426ffb Miltiadis Vasilakis
    pithos_macosAppDelegate *delegate = (pithos_macosAppDelegate *)[[NSApplication sharedApplication] delegate];
192 d8426ffb Miltiadis Vasilakis
    [delegate.pithosAccountsDictionary setObject:selectedPithosAccount forKey:selectedPithosAccount.name];
193 d8426ffb Miltiadis Vasilakis
    [delegate savePithosAccounts:self];
194 d8426ffb Miltiadis Vasilakis
}
195 d8426ffb Miltiadis Vasilakis
196 d8426ffb Miltiadis Vasilakis
- (IBAction)removeAccount:(id)sender {
197 d8426ffb Miltiadis Vasilakis
    [self updateAccounts];
198 d8426ffb Miltiadis Vasilakis
    if (!accountRemoveEnable)
199 d8426ffb Miltiadis Vasilakis
        return;
200 d8426ffb Miltiadis Vasilakis
    PithosAccount *removedPithosAccount = [selectedPithosAccount retain];
201 d8426ffb Miltiadis Vasilakis
    pithos_macosAppDelegate *delegate = (pithos_macosAppDelegate *)[[NSApplication sharedApplication] delegate];
202 d8426ffb Miltiadis Vasilakis
    if ([delegate.currentPithosAccount isEqualTo:removedPithosAccount] && [delegate.pithosBrowserController operationsPending]) {
203 d8426ffb Miltiadis Vasilakis
        NSAlert *alert = [[[NSAlert alloc] init] autorelease];
204 d8426ffb Miltiadis Vasilakis
        [alert setMessageText:@"Operations Pending"];
205 d8426ffb Miltiadis Vasilakis
        [alert setInformativeText:@"There are pending operations in the browser, do you want to remove the account and cancel them?"];
206 d8426ffb Miltiadis Vasilakis
        [alert addButtonWithTitle:@"OK"];
207 d8426ffb Miltiadis Vasilakis
        [alert addButtonWithTitle:@"Cancel"];
208 d8426ffb Miltiadis Vasilakis
        NSInteger choice = [alert runModal];
209 d8426ffb Miltiadis Vasilakis
        if (choice == NSAlertSecondButtonReturn) {
210 d8426ffb Miltiadis Vasilakis
            [removedPithosAccount release];
211 d8426ffb Miltiadis Vasilakis
            return;
212 d8426ffb Miltiadis Vasilakis
        }
213 d8426ffb Miltiadis Vasilakis
    }
214 d8426ffb Miltiadis Vasilakis
    [accountsArrayController removeObject:selectedPithosAccount];
215 d8426ffb Miltiadis Vasilakis
    [delegate.pithosAccountsDictionary removeObjectForKey:removedPithosAccount.name];
216 d8426ffb Miltiadis Vasilakis
    [delegate removedPithosAccount:removedPithosAccount];
217 d8426ffb Miltiadis Vasilakis
    [delegate savePithosAccounts:self];
218 d8426ffb Miltiadis Vasilakis
    [removedPithosAccount release];
219 d8426ffb Miltiadis Vasilakis
    [self updateAccounts];
220 d8426ffb Miltiadis Vasilakis
}
221 d8426ffb Miltiadis Vasilakis
222 d8426ffb Miltiadis Vasilakis
#pragma Login Actions
223 dbfd951b Miltiadis Vasilakis
224 d8426ffb Miltiadis Vasilakis
- (IBAction)login:(id)sender {
225 d8426ffb Miltiadis Vasilakis
    if (!manual) {
226 d8426ffb Miltiadis Vasilakis
        [selectedPithosAccount loginWithServerURL:serverURL];
227 dbfd951b Miltiadis Vasilakis
    } else {
228 d8426ffb Miltiadis Vasilakis
        [selectedPithosAccount authenticateWithServerURL:serverURL authUser:authUser authToken:authToken];
229 d8426ffb Miltiadis Vasilakis
        self.manual = NO;
230 d8426ffb Miltiadis Vasilakis
        pithos_macosAppDelegate *delegate = (pithos_macosAppDelegate *)[[NSApplication sharedApplication] delegate];
231 d8426ffb Miltiadis Vasilakis
        [delegate savePithosAccounts:self];
232 d8426ffb Miltiadis Vasilakis
        if (!delegate.activated) {
233 d8426ffb Miltiadis Vasilakis
            delegate.activated = YES;
234 d8426ffb Miltiadis Vasilakis
            [delegate showPithosBrowser:self];
235 d8426ffb Miltiadis Vasilakis
        }
236 d8426ffb Miltiadis Vasilakis
        if ([selectedPithosAccount isEqualTo:delegate.currentPithosAccount])
237 d8426ffb Miltiadis Vasilakis
            delegate.pithosBrowserController.pithos = selectedPithosAccount.pithos;
238 dbfd951b Miltiadis Vasilakis
    }
239 589a14ca Miltiadis Vasilakis
}
240 589a14ca Miltiadis Vasilakis
241 d8426ffb Miltiadis Vasilakis
- (IBAction)loginCancel:(id)server {
242 d8426ffb Miltiadis Vasilakis
    self.serverURL = [[selectedPithosAccount.serverURL copy] autorelease];
243 d8426ffb Miltiadis Vasilakis
    self.authUser = [[selectedPithosAccount.authUser copy] autorelease];
244 d8426ffb Miltiadis Vasilakis
    self.authToken = [[selectedPithosAccount.authToken copy] autorelease];
245 d8426ffb Miltiadis Vasilakis
}
246 d8426ffb Miltiadis Vasilakis
247 d8426ffb Miltiadis Vasilakis
#pragma Sync Actions
248 d8426ffb Miltiadis Vasilakis
249 d8426ffb Miltiadis Vasilakis
- (IBAction)syncApply:(id)sender {
250 d8426ffb Miltiadis Vasilakis
    [selectedPithosAccount updateSyncWithSyncActive:syncActive syncDirectoryPath:syncDirectoryPath];
251 d8426ffb Miltiadis Vasilakis
    [self updateSync];
252 d8426ffb Miltiadis Vasilakis
    pithos_macosAppDelegate *delegate = (pithos_macosAppDelegate *)[[NSApplication sharedApplication] delegate];
253 d8426ffb Miltiadis Vasilakis
    [delegate savePithosAccounts:self];
254 d8426ffb Miltiadis Vasilakis
}
255 d8426ffb Miltiadis Vasilakis
256 d8426ffb Miltiadis Vasilakis
- (IBAction)syncCancel:(id)sender {
257 d8426ffb Miltiadis Vasilakis
    self.syncActive = selectedPithosAccount.syncActive;
258 d8426ffb Miltiadis Vasilakis
    self.syncDirectoryPath = [[selectedPithosAccount.syncDirectoryPath copy] autorelease];
259 d8426ffb Miltiadis Vasilakis
}
260 d8426ffb Miltiadis Vasilakis
261 470e6f81 Miltiadis Vasilakis
#pragma mark Groups Actions
262 470e6f81 Miltiadis Vasilakis
263 d8426ffb Miltiadis Vasilakis
- (IBAction)groupsApply:(id)sender {
264 470e6f81 Miltiadis Vasilakis
    [[self window] makeFirstResponder:nil];
265 d8426ffb Miltiadis Vasilakis
    if (selectedPithosAccount.active)
266 d8426ffb Miltiadis Vasilakis
        [selectedPithosAccount.accountNode applyInfo];
267 d8426ffb Miltiadis Vasilakis
}
268 d8426ffb Miltiadis Vasilakis
269 d8426ffb Miltiadis Vasilakis
- (IBAction)groupsRevert:(id)sender {
270 d8426ffb Miltiadis Vasilakis
    if (selectedPithosAccount.active && selectedPithosAccount.accountNode)
271 d8426ffb Miltiadis Vasilakis
        [selectedPithosAccount.accountNode refreshInfo];
272 470e6f81 Miltiadis Vasilakis
}
273 470e6f81 Miltiadis Vasilakis
274 589a14ca Miltiadis Vasilakis
@end