Statistics
| Branch: | Tag: | Revision:

root / Classes / UploadGenericFileViewController.m @ 7db1712d

History | View | Annotate | Download (12.3 kB)

1 700184fb Miltiadis Vasilakis
//
2 700184fb Miltiadis Vasilakis
//  UploadGenericFileViewController.m
3 700184fb Miltiadis Vasilakis
//  OpenStack
4 700184fb Miltiadis Vasilakis
//
5 700184fb Miltiadis Vasilakis
//  Created by Mike Mayo on 1/6/11.
6 700184fb Miltiadis Vasilakis
//  Copyright 2011 __MyCompanyName__. All rights reserved.
7 700184fb Miltiadis Vasilakis
//
8 700184fb Miltiadis Vasilakis
9 700184fb Miltiadis Vasilakis
#import "UploadGenericFileViewController.h"
10 700184fb Miltiadis Vasilakis
#import "OpenStackAccount.h"
11 700184fb Miltiadis Vasilakis
#import "AccountManager.h"
12 700184fb Miltiadis Vasilakis
#import "Container.h"
13 700184fb Miltiadis Vasilakis
#import "Folder.h"
14 700184fb Miltiadis Vasilakis
#import "FolderViewController.h"
15 700184fb Miltiadis Vasilakis
#import "ActivityIndicatorView.h"
16 700184fb Miltiadis Vasilakis
#import "UIViewController+Conveniences.h"
17 700184fb Miltiadis Vasilakis
#import "UIColor+MoreColors.h"
18 700184fb Miltiadis Vasilakis
#import "StorageObject.h"
19 700184fb Miltiadis Vasilakis
#import "OCMimeType.h"
20 700184fb Miltiadis Vasilakis
#import "RSTextFieldCell.h"
21 700184fb Miltiadis Vasilakis
#import "NSObject+Conveniences.h"
22 7db1712d Miltiadis Vasilakis
#import "APICallback.h"
23 700184fb Miltiadis Vasilakis
24 700184fb Miltiadis Vasilakis
#define kName 0
25 700184fb Miltiadis Vasilakis
#define kContentType 1
26 700184fb Miltiadis Vasilakis
27 700184fb Miltiadis Vasilakis
28 700184fb Miltiadis Vasilakis
@implementation UploadGenericFileViewController
29 700184fb Miltiadis Vasilakis
30 700184fb Miltiadis Vasilakis
@synthesize account, container, folder, folderViewController, data, format, contentType, contentTypeEditable;
31 700184fb Miltiadis Vasilakis
32 700184fb Miltiadis Vasilakis
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
33 700184fb Miltiadis Vasilakis
    return (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) || (toInterfaceOrientation == UIInterfaceOrientationPortrait);
34 700184fb Miltiadis Vasilakis
}
35 700184fb Miltiadis Vasilakis
36 700184fb Miltiadis Vasilakis
#pragma mark -
37 700184fb Miltiadis Vasilakis
#pragma mark View lifecycle
38 700184fb Miltiadis Vasilakis
39 700184fb Miltiadis Vasilakis
- (void)viewDidLoad {
40 700184fb Miltiadis Vasilakis
    [super viewDidLoad];
41 700184fb Miltiadis Vasilakis
    self.navigationItem.title = @"Add File";
42 700184fb Miltiadis Vasilakis
    [self addSaveButton];
43 700184fb Miltiadis Vasilakis
}
44 700184fb Miltiadis Vasilakis
45 700184fb Miltiadis Vasilakis
- (void)viewWillAppear:(BOOL)animated {
46 700184fb Miltiadis Vasilakis
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
47 700184fb Miltiadis Vasilakis
        nameTextField = [[UITextField alloc] initWithFrame:CGRectMake(98.0, 13.0, 400.0, 24.0)];
48 700184fb Miltiadis Vasilakis
    } else {
49 700184fb Miltiadis Vasilakis
        nameTextField = [[UITextField alloc] initWithFrame:CGRectMake(79.0, 13.0, 222.0, 24.0)];
50 700184fb Miltiadis Vasilakis
    }    
51 700184fb Miltiadis Vasilakis
    nameTextField.delegate = self;
52 700184fb Miltiadis Vasilakis
    nameTextField.font = [UIFont systemFontOfSize:17.0];
53 700184fb Miltiadis Vasilakis
    nameTextField.textColor = [UIColor value1DetailTextLabelColor];
54 700184fb Miltiadis Vasilakis
    nameTextField.backgroundColor = [UIColor clearColor];
55 700184fb Miltiadis Vasilakis
    nameTextField.textAlignment = UITextAlignmentRight;
56 700184fb Miltiadis Vasilakis
    nameTextField.returnKeyType = UIReturnKeyDone;
57 700184fb Miltiadis Vasilakis
    nameTextField.autocorrectionType = UITextAutocorrectionTypeNo;
58 700184fb Miltiadis Vasilakis
    nameTextField.autocapitalizationType = UITextAutocapitalizationTypeNone;    
59 700184fb Miltiadis Vasilakis
    nameTextField.placeholder = [NSString stringWithFormat:@"ios_upload_%.0f", [[NSDate date] timeIntervalSince1970]];
60 700184fb Miltiadis Vasilakis
    
61 700184fb Miltiadis Vasilakis
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
62 700184fb Miltiadis Vasilakis
        formatLabel = [[UILabel alloc] initWithFrame:CGRectMake(41.0, 15.5, 458.0, 18.0)];
63 700184fb Miltiadis Vasilakis
    } else {
64 700184fb Miltiadis Vasilakis
        formatLabel = [[UILabel alloc] initWithFrame:CGRectMake(21.0, 15.5, 280.0, 18.0)];
65 700184fb Miltiadis Vasilakis
    }    
66 700184fb Miltiadis Vasilakis
    formatLabel.font = [UIFont systemFontOfSize:17.0];
67 700184fb Miltiadis Vasilakis
    formatLabel.textColor = [UIColor value1DetailTextLabelColor];
68 700184fb Miltiadis Vasilakis
    formatLabel.backgroundColor = [UIColor clearColor];
69 700184fb Miltiadis Vasilakis
    formatLabel.textAlignment = UITextAlignmentRight;
70 700184fb Miltiadis Vasilakis
    if (!self.format) {
71 700184fb Miltiadis Vasilakis
        self.format = @"";
72 700184fb Miltiadis Vasilakis
    } else if ([self.format isEqualToString:@".mov"]) {
73 700184fb Miltiadis Vasilakis
        self.navigationItem.title = @"Add Video";        
74 700184fb Miltiadis Vasilakis
    } else if ([self.format isEqualToString:@".txt"]) {
75 700184fb Miltiadis Vasilakis
        self.navigationItem.title = @"Add Text File";
76 700184fb Miltiadis Vasilakis
    }    
77 700184fb Miltiadis Vasilakis
78 700184fb Miltiadis Vasilakis
    formatLabel.text = self.format;
79 700184fb Miltiadis Vasilakis
    
80 700184fb Miltiadis Vasilakis
    // move the text field to make room for the numbers label
81 700184fb Miltiadis Vasilakis
    CGSize size = [formatLabel.text sizeWithFont:formatLabel.font constrainedToSize:CGSizeMake(280.0, 900.0f)];
82 700184fb Miltiadis Vasilakis
    
83 700184fb Miltiadis Vasilakis
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
84 700184fb Miltiadis Vasilakis
        nameTextField.frame = CGRectMake(98.0, 13.0, 400.0 - size.width, 24.0);
85 700184fb Miltiadis Vasilakis
    } else {
86 700184fb Miltiadis Vasilakis
        nameTextField.frame = CGRectMake(79.0, 13.0, 222.0 - size.width, 24.0);
87 700184fb Miltiadis Vasilakis
    }    
88 700184fb Miltiadis Vasilakis
    
89 700184fb Miltiadis Vasilakis
        
90 700184fb Miltiadis Vasilakis
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
91 700184fb Miltiadis Vasilakis
        contentTypeTextField = [[UITextField alloc] initWithFrame:CGRectMake(79.0, 13.0, 400.0, 24.0)];
92 700184fb Miltiadis Vasilakis
    } else {
93 700184fb Miltiadis Vasilakis
        contentTypeTextField = [[UITextField alloc] initWithFrame:CGRectMake(79.0, 13.0, 222.0, 24.0)];
94 700184fb Miltiadis Vasilakis
    }    
95 700184fb Miltiadis Vasilakis
    contentTypeTextField.delegate = self;
96 700184fb Miltiadis Vasilakis
    contentTypeTextField.font = [UIFont systemFontOfSize:17.0];
97 700184fb Miltiadis Vasilakis
    contentTypeTextField.textColor = [UIColor value1DetailTextLabelColor];
98 700184fb Miltiadis Vasilakis
    contentTypeTextField.backgroundColor = [UIColor clearColor];
99 700184fb Miltiadis Vasilakis
    contentTypeTextField.textAlignment = UITextAlignmentRight;
100 700184fb Miltiadis Vasilakis
    contentTypeTextField.returnKeyType = UIReturnKeyDone;
101 700184fb Miltiadis Vasilakis
    contentTypeTextField.autocorrectionType = UITextAutocorrectionTypeNo;
102 700184fb Miltiadis Vasilakis
    contentTypeTextField.autocapitalizationType = UITextAutocapitalizationTypeNone;
103 700184fb Miltiadis Vasilakis
    
104 700184fb Miltiadis Vasilakis
    if (contentTypeEditable) {
105 700184fb Miltiadis Vasilakis
        if (self.contentType) {
106 700184fb Miltiadis Vasilakis
            contentTypeTextField.text = self.contentType;
107 700184fb Miltiadis Vasilakis
        } else {
108 700184fb Miltiadis Vasilakis
            contentTypeTextField.text = [OCMimeType mimeTypeForFileExtension:[self.format substringFromIndex:1]];
109 700184fb Miltiadis Vasilakis
        }
110 700184fb Miltiadis Vasilakis
    } else {
111 700184fb Miltiadis Vasilakis
        contentTypeTextField.enabled = NO;
112 700184fb Miltiadis Vasilakis
        if (self.contentType) {
113 700184fb Miltiadis Vasilakis
            contentTypeTextField.placeholder = self.contentType;
114 700184fb Miltiadis Vasilakis
        } else {
115 700184fb Miltiadis Vasilakis
            contentTypeTextField.placeholder = [OCMimeType mimeTypeForFileExtension:[self.format substringFromIndex:1]];
116 700184fb Miltiadis Vasilakis
        }
117 700184fb Miltiadis Vasilakis
    }
118 700184fb Miltiadis Vasilakis
}
119 700184fb Miltiadis Vasilakis
120 700184fb Miltiadis Vasilakis
#pragma mark -
121 700184fb Miltiadis Vasilakis
#pragma mark Table view data source
122 700184fb Miltiadis Vasilakis
123 700184fb Miltiadis Vasilakis
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
124 700184fb Miltiadis Vasilakis
    return 2;
125 700184fb Miltiadis Vasilakis
}
126 700184fb Miltiadis Vasilakis
127 700184fb Miltiadis Vasilakis
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
128 700184fb Miltiadis Vasilakis
    if (section == kName) {
129 700184fb Miltiadis Vasilakis
        return 2;
130 700184fb Miltiadis Vasilakis
    } else {
131 700184fb Miltiadis Vasilakis
        return 1;
132 700184fb Miltiadis Vasilakis
    }
133 700184fb Miltiadis Vasilakis
}
134 700184fb Miltiadis Vasilakis
135 700184fb Miltiadis Vasilakis
- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section {
136 700184fb Miltiadis Vasilakis
    if (section == kContentType) {
137 700184fb Miltiadis Vasilakis
        return @"The Content Type (MIME Type) is a universal way to describe content regardless of the file extension.";
138 700184fb Miltiadis Vasilakis
    } else {
139 700184fb Miltiadis Vasilakis
        return @"";
140 700184fb Miltiadis Vasilakis
    }
141 700184fb Miltiadis Vasilakis
}
142 700184fb Miltiadis Vasilakis
143 700184fb Miltiadis Vasilakis
- (UITableViewCell *)tableView:(UITableView *)tableView textFieldCellForRowAtIndexPath:(NSIndexPath *)indexPath {
144 700184fb Miltiadis Vasilakis
    if (indexPath.section == kName) {
145 700184fb Miltiadis Vasilakis
        static NSString *CellIdentifier = @"NameCell";    
146 700184fb Miltiadis Vasilakis
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
147 700184fb Miltiadis Vasilakis
        if (cell == nil) {
148 700184fb Miltiadis Vasilakis
            cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier] autorelease];
149 700184fb Miltiadis Vasilakis
            cell.selectionStyle = UITableViewCellSelectionStyleNone;
150 700184fb Miltiadis Vasilakis
            cell.textLabel.text = @"Name";
151 700184fb Miltiadis Vasilakis
            [cell addSubview:nameTextField];
152 700184fb Miltiadis Vasilakis
            [cell addSubview:formatLabel];
153 700184fb Miltiadis Vasilakis
        }
154 700184fb Miltiadis Vasilakis
        return cell;
155 700184fb Miltiadis Vasilakis
    } else {
156 700184fb Miltiadis Vasilakis
        static NSString *CellIdentifier = @"ContentTypeCell";
157 700184fb Miltiadis Vasilakis
        RSTextFieldCell *cell = (RSTextFieldCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
158 700184fb Miltiadis Vasilakis
        if (cell == nil) {
159 700184fb Miltiadis Vasilakis
            cell = [[[RSTextFieldCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier] autorelease];
160 700184fb Miltiadis Vasilakis
            cell.selectionStyle = UITableViewCellSelectionStyleNone;
161 700184fb Miltiadis Vasilakis
            cell.modalPresentationStyle = UIModalPresentationFormSheet;
162 700184fb Miltiadis Vasilakis
            cell.textLabel.text = @"Content Type";
163 700184fb Miltiadis Vasilakis
            contentTypeTextField = cell.textField;
164 700184fb Miltiadis Vasilakis
            if (contentTypeEditable) {
165 700184fb Miltiadis Vasilakis
                if (self.contentType) {
166 700184fb Miltiadis Vasilakis
                    contentTypeTextField.text = self.contentType;
167 700184fb Miltiadis Vasilakis
                } else {
168 700184fb Miltiadis Vasilakis
                    contentTypeTextField.text = [OCMimeType mimeTypeForFileExtension:[self.format substringFromIndex:1]];
169 700184fb Miltiadis Vasilakis
                }
170 700184fb Miltiadis Vasilakis
            } else {
171 700184fb Miltiadis Vasilakis
                contentTypeTextField.enabled = NO;
172 700184fb Miltiadis Vasilakis
                if (self.contentType) {
173 700184fb Miltiadis Vasilakis
                    contentTypeTextField.placeholder = self.contentType;
174 700184fb Miltiadis Vasilakis
                } else {
175 700184fb Miltiadis Vasilakis
                    contentTypeTextField.placeholder = [OCMimeType mimeTypeForFileExtension:[self.format substringFromIndex:1]];
176 700184fb Miltiadis Vasilakis
                }
177 700184fb Miltiadis Vasilakis
            }
178 700184fb Miltiadis Vasilakis
            
179 700184fb Miltiadis Vasilakis
        }    
180 700184fb Miltiadis Vasilakis
        return cell;
181 700184fb Miltiadis Vasilakis
    }
182 700184fb Miltiadis Vasilakis
}
183 700184fb Miltiadis Vasilakis
184 700184fb Miltiadis Vasilakis
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
185 700184fb Miltiadis Vasilakis
    
186 700184fb Miltiadis Vasilakis
    if (indexPath.section == kName && indexPath.row == 0) {
187 700184fb Miltiadis Vasilakis
        return [self tableView:tableView textFieldCellForRowAtIndexPath:indexPath];
188 700184fb Miltiadis Vasilakis
    } else if (indexPath.section == kContentType) {
189 700184fb Miltiadis Vasilakis
        return [self tableView:tableView textFieldCellForRowAtIndexPath:indexPath];
190 700184fb Miltiadis Vasilakis
    } else {
191 700184fb Miltiadis Vasilakis
        static NSString *CellIdentifier = @"Cell";
192 700184fb Miltiadis Vasilakis
        
193 700184fb Miltiadis Vasilakis
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
194 700184fb Miltiadis Vasilakis
        if (cell == nil) {
195 700184fb Miltiadis Vasilakis
            cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier] autorelease];
196 700184fb Miltiadis Vasilakis
        }
197 700184fb Miltiadis Vasilakis
        
198 700184fb Miltiadis Vasilakis
        cell.textLabel.text = @"Size";
199 700184fb Miltiadis Vasilakis
        cell.detailTextLabel.text = [Container humanizedBytes:[data length]];
200 700184fb Miltiadis Vasilakis
        cell.selectionStyle = UITableViewCellSelectionStyleNone;
201 700184fb Miltiadis Vasilakis
        cell.accessoryType = UITableViewCellAccessoryNone;
202 700184fb Miltiadis Vasilakis
        
203 700184fb Miltiadis Vasilakis
        return cell;
204 700184fb Miltiadis Vasilakis
    }
205 700184fb Miltiadis Vasilakis
}
206 700184fb Miltiadis Vasilakis
207 700184fb Miltiadis Vasilakis
#pragma mark -
208 700184fb Miltiadis Vasilakis
#pragma mark Save Button
209 700184fb Miltiadis Vasilakis
210 700184fb Miltiadis Vasilakis
- (void)saveButtonPressed:(id)sender {
211 45f2fce6 Miltiadis Vasilakis
    [nameTextField resignFirstResponder];
212 45f2fce6 Miltiadis Vasilakis
    NSString *objectName;
213 45f2fce6 Miltiadis Vasilakis
    if (nameTextField.text && ![nameTextField.text isEqualToString:@""]) {
214 45f2fce6 Miltiadis Vasilakis
        objectName = [NSString stringWithFormat:@"%@%@", nameTextField.text, format];
215 45f2fce6 Miltiadis Vasilakis
    } else {
216 45f2fce6 Miltiadis Vasilakis
        objectName = [NSString stringWithFormat:@"%@%@", nameTextField.placeholder, format];
217 45f2fce6 Miltiadis Vasilakis
    }
218 45f2fce6 Miltiadis Vasilakis
    
219 45f2fce6 Miltiadis Vasilakis
    BOOL objectNameHasTrailingSlash = [objectName hasSuffix:@"/"];
220 45f2fce6 Miltiadis Vasilakis
    NSUInteger indexOfFirstSlash = [objectName rangeOfString:@"/"].location;
221 45f2fce6 Miltiadis Vasilakis
    
222 7db1712d Miltiadis Vasilakis
    if ((!objectNameHasTrailingSlash && indexOfFirstSlash != NSNotFound) || 
223 7db1712d Miltiadis Vasilakis
        (objectNameHasTrailingSlash && indexOfFirstSlash < objectName.length - 1)) {
224 45f2fce6 Miltiadis Vasilakis
        [self alert:@"Invalid folder name" message:@"'/' characters are only allowed at the end of folder names"];
225 45f2fce6 Miltiadis Vasilakis
        return;
226 45f2fce6 Miltiadis Vasilakis
    }
227 45f2fce6 Miltiadis Vasilakis
228 45f2fce6 Miltiadis Vasilakis
    if ([folderViewController.folder.objects objectForKey:objectName] && !allowOverwrite) {
229 45f2fce6 Miltiadis Vasilakis
        NSString *alertMessage = [NSString stringWithFormat:@"An object with path '%@' in the container '%@' already exists, do you want to replace it?",objectName, folderViewController.container.name];
230 45f2fce6 Miltiadis Vasilakis
        NSString *alertTitle = @"Apply changes";
231 45f2fce6 Miltiadis Vasilakis
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:alertTitle
232 45f2fce6 Miltiadis Vasilakis
                                                        message:alertMessage
233 45f2fce6 Miltiadis Vasilakis
                                                       delegate:self
234 45f2fce6 Miltiadis Vasilakis
                                              cancelButtonTitle:@"Cancel"
235 45f2fce6 Miltiadis Vasilakis
                                              otherButtonTitles:@"OK", nil];
236 45f2fce6 Miltiadis Vasilakis
        [alert show];
237 45f2fce6 Miltiadis Vasilakis
        return;
238 45f2fce6 Miltiadis Vasilakis
    }
239 45f2fce6 Miltiadis Vasilakis
240 700184fb Miltiadis Vasilakis
    activityIndicatorView = [[ActivityIndicatorView alloc] initWithFrame:[ActivityIndicatorView frameForText:@"Uploading..." withProgress:YES] text:@"Uploading..." withProgress:YES];
241 700184fb Miltiadis Vasilakis
    [activityIndicatorView addToView:self.view];
242 700184fb Miltiadis Vasilakis
    
243 700184fb Miltiadis Vasilakis
    StorageObject *object = [[StorageObject alloc] init];
244 45f2fce6 Miltiadis Vasilakis
    object.name = objectName;
245 700184fb Miltiadis Vasilakis
    object.fullPath = [NSString stringWithFormat:@"%@/%@", [folder fullPath], object.name];
246 700184fb Miltiadis Vasilakis
    object.fullPath = [object.fullPath substringFromIndex:1];
247 700184fb Miltiadis Vasilakis
    object.contentType = contentTypeTextField.text;
248 700184fb Miltiadis Vasilakis
    
249 700184fb Miltiadis Vasilakis
    if (!contentType) {
250 700184fb Miltiadis Vasilakis
        object.contentType = @"application/octet-stream";
251 700184fb Miltiadis Vasilakis
    }
252 700184fb Miltiadis Vasilakis
    
253 700184fb Miltiadis Vasilakis
    object.data = data;
254 700184fb Miltiadis Vasilakis
    object.bytes = [data length];
255 700184fb Miltiadis Vasilakis
    
256 7db1712d Miltiadis Vasilakis
    [[self.account.manager writeObject:self.container object:object downloadProgressDelegate:activityIndicatorView.progressView]
257 7db1712d Miltiadis Vasilakis
     success:^(OpenStackRequest *request) {
258 7db1712d Miltiadis Vasilakis
         [activityIndicatorView removeFromSuperviewAndRelease];
259 7db1712d Miltiadis Vasilakis
         object.data = nil;
260 7db1712d Miltiadis Vasilakis
         object.sharing = folder.sharing;
261 7db1712d Miltiadis Vasilakis
         BOOL currentFolderIsRoot;
262 7db1712d Miltiadis Vasilakis
         if ([folderViewController.folder isEqual:container.rootFolder]) {
263 7db1712d Miltiadis Vasilakis
             currentFolderIsRoot = YES;
264 7db1712d Miltiadis Vasilakis
         }
265 7db1712d Miltiadis Vasilakis
         [folder.objects setObject:object forKey:object.name];
266 7db1712d Miltiadis Vasilakis
         [folderViewController.tableView reloadData];
267 7db1712d Miltiadis Vasilakis
         if (currentFolderIsRoot) {
268 7db1712d Miltiadis Vasilakis
             container.count += 1;
269 7db1712d Miltiadis Vasilakis
             container.rootFolder = folder;
270 7db1712d Miltiadis Vasilakis
             [self.account.containers setObject:container forKey:container.name];
271 7db1712d Miltiadis Vasilakis
         }
272 7db1712d Miltiadis Vasilakis
         if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
273 7db1712d Miltiadis Vasilakis
             [folderViewController setDetailViewController];
274 7db1712d Miltiadis Vasilakis
         allowOverwrite = NO;
275 7db1712d Miltiadis Vasilakis
         [self dismissModalViewControllerAnimated:YES];
276 7db1712d Miltiadis Vasilakis
     }
277 7db1712d Miltiadis Vasilakis
     failure:^(OpenStackRequest *request) {
278 7db1712d Miltiadis Vasilakis
         allowOverwrite = NO;
279 7db1712d Miltiadis Vasilakis
         [activityIndicatorView removeFromSuperviewAndRelease];
280 7db1712d Miltiadis Vasilakis
         [self alert:@"There was a problem uploading the file." request:request];
281 7db1712d Miltiadis Vasilakis
     }];    
282 700184fb Miltiadis Vasilakis
}
283 700184fb Miltiadis Vasilakis
284 45f2fce6 Miltiadis Vasilakis
#pragma mark - Alertview delegate
285 45f2fce6 Miltiadis Vasilakis
286 45f2fce6 Miltiadis Vasilakis
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
287 45f2fce6 Miltiadis Vasilakis
{
288 45f2fce6 Miltiadis Vasilakis
    if (buttonIndex == 1) {
289 45f2fce6 Miltiadis Vasilakis
        allowOverwrite = YES;
290 45f2fce6 Miltiadis Vasilakis
        [self saveButtonPressed:nil];
291 45f2fce6 Miltiadis Vasilakis
    } 
292 45f2fce6 Miltiadis Vasilakis
}
293 45f2fce6 Miltiadis Vasilakis
294 45f2fce6 Miltiadis Vasilakis
295 700184fb Miltiadis Vasilakis
#pragma mark -
296 700184fb Miltiadis Vasilakis
#pragma mark Text Field Delegate
297 700184fb Miltiadis Vasilakis
298 700184fb Miltiadis Vasilakis
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
299 700184fb Miltiadis Vasilakis
    [textField resignFirstResponder];
300 700184fb Miltiadis Vasilakis
    return NO;
301 700184fb Miltiadis Vasilakis
}
302 700184fb Miltiadis Vasilakis
303 700184fb Miltiadis Vasilakis
#pragma mark -
304 700184fb Miltiadis Vasilakis
#pragma mark Memory management
305 700184fb Miltiadis Vasilakis
306 700184fb Miltiadis Vasilakis
- (void)dealloc {
307 700184fb Miltiadis Vasilakis
    [account release];
308 700184fb Miltiadis Vasilakis
    [container release];
309 700184fb Miltiadis Vasilakis
    [folder release];
310 700184fb Miltiadis Vasilakis
    [folderViewController release];
311 700184fb Miltiadis Vasilakis
    [data release];
312 700184fb Miltiadis Vasilakis
    [format release];
313 700184fb Miltiadis Vasilakis
    [contentType release];
314 700184fb Miltiadis Vasilakis
    [super dealloc];
315 700184fb Miltiadis Vasilakis
}
316 700184fb Miltiadis Vasilakis
317 700184fb Miltiadis Vasilakis
318 700184fb Miltiadis Vasilakis
@end