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 |