Several small improvements: spinner, information display, etc. t20
authorStefane Fermigier <sfermigier@nuxeo.com>
Tue, 09 Mar 2010 10:44:16 +0100
brancht20
changeset 3866ef59e17ee3
parent 37 0c7da81f2e98
child 39 1e221a5b27f2
Several small improvements: spinner, information display, etc.
Classes/CmisClient.m
Classes/DocView.xib
Classes/DocViewController.h
Classes/DocViewController.m
Classes/FolderView.xib
Classes/FolderViewCell.h
Classes/FolderViewCell.m
Classes/FolderViewController.m
Classes/NXFolder.h
Classes/NXFolder.m
Classes/NXObject.m
Classes/SearchViewController.h
ROADMAP.txt
iNuxeo.xcodeproj/project.pbxproj
     1.1 --- a/Classes/CmisClient.m
     1.2 +++ b/Classes/CmisClient.m
     1.3 @@ -86,6 +86,7 @@
     1.4          childObject.url = [NSURL URLWithString:url];
     1.5          [folder addChild:childObject];
     1.6      }
     1.7 +    [folder sort];
     1.8      
     1.9      return folder;
    1.10  }
    1.11 @@ -125,7 +126,9 @@
    1.12      NSMutableURLRequest *request = [self makeRequestForURL:url consumes:mimeType];
    1.13      NSHTTPURLResponse *response;
    1.14      NSError *error;
    1.15 +    [UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
    1.16      NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
    1.17 +    [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
    1.18      if ([response statusCode] != 200) {
    1.19          NSString *msg = [NSString stringWithFormat:@"URL: %@\n", url];
    1.20          UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error fetching remote object"
     2.1 --- a/Classes/DocView.xib
     2.2 +++ b/Classes/DocView.xib
     2.3 @@ -1,13 +1,18 @@
     2.4  <?xml version="1.0" encoding="UTF-8"?>
     2.5 -<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.03">
     2.6 +<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.10">
     2.7  	<data>
     2.8  		<int key="IBDocument.SystemTarget">784</int>
     2.9 -		<string key="IBDocument.SystemVersion">9L30</string>
    2.10 -		<string key="IBDocument.InterfaceBuilderVersion">680</string>
    2.11 -		<string key="IBDocument.AppKitVersion">949.54</string>
    2.12 -		<string key="IBDocument.HIToolboxVersion">353.00</string>
    2.13 +		<string key="IBDocument.SystemVersion">10C540</string>
    2.14 +		<string key="IBDocument.InterfaceBuilderVersion">740</string>
    2.15 +		<string key="IBDocument.AppKitVersion">1038.25</string>
    2.16 +		<string key="IBDocument.HIToolboxVersion">458.00</string>
    2.17 +		<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
    2.18 +			<string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
    2.19 +			<string key="NS.object.0">62</string>
    2.20 +		</object>
    2.21  		<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
    2.22  			<bool key="EncodedWithXMLCoder">YES</bool>
    2.23 +			<integer value="5"/>
    2.24  			<integer value="1"/>
    2.25  		</object>
    2.26  		<object class="NSArray" key="IBDocument.PluginDependencies">
    2.27 @@ -16,7 +21,7 @@
    2.28  		</object>
    2.29  		<object class="NSMutableDictionary" key="IBDocument.Metadata">
    2.30  			<bool key="EncodedWithXMLCoder">YES</bool>
    2.31 -			<object class="NSArray" key="dict.sortedKeys">
    2.32 +			<object class="NSArray" key="dict.sortedKeys" id="0">
    2.33  				<bool key="EncodedWithXMLCoder">YES</bool>
    2.34  			</object>
    2.35  			<object class="NSMutableArray" key="dict.values">
    2.36 @@ -56,12 +61,40 @@
    2.37  				<object class="NSColor" key="IBUIBackgroundColor">
    2.38  					<int key="NSColorSpace">3</int>
    2.39  					<bytes key="NSWhite">MQA</bytes>
    2.40 -					<object class="NSColorSpace" key="NSCustomColorSpace">
    2.41 +					<object class="NSColorSpace" key="NSCustomColorSpace" id="932970627">
    2.42  						<int key="NSID">2</int>
    2.43  					</object>
    2.44  				</object>
    2.45  				<object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics"/>
    2.46  			</object>
    2.47 +			<object class="IBUIView" id="451919951">
    2.48 +				<reference key="NSNextResponder"/>
    2.49 +				<int key="NSvFlags">256</int>
    2.50 +				<object class="NSMutableArray" key="NSSubviews">
    2.51 +					<bool key="EncodedWithXMLCoder">YES</bool>
    2.52 +					<object class="IBUIActivityIndicatorView" id="675522255">
    2.53 +						<reference key="NSNextResponder" ref="451919951"/>
    2.54 +						<int key="NSvFlags">256</int>
    2.55 +						<string key="NSFrame">{{142, 211}, {37, 37}}</string>
    2.56 +						<reference key="NSSuperview" ref="451919951"/>
    2.57 +						<bool key="IBUIOpaque">NO</bool>
    2.58 +						<bool key="IBUIClearsContextBeforeDrawing">NO</bool>
    2.59 +						<float key="IBUIAlpha">0.47183099389076233</float>
    2.60 +						<bool key="IBUIUserInteractionEnabled">NO</bool>
    2.61 +						<bool key="IBUIHidesWhenStopped">NO</bool>
    2.62 +						<bool key="IBUIAnimating">YES</bool>
    2.63 +						<int key="IBUIStyle">0</int>
    2.64 +					</object>
    2.65 +				</object>
    2.66 +				<string key="NSFrameSize">{320, 460}</string>
    2.67 +				<reference key="NSSuperview"/>
    2.68 +				<object class="NSColor" key="IBUIBackgroundColor">
    2.69 +					<int key="NSColorSpace">3</int>
    2.70 +					<bytes key="NSWhite">MQA</bytes>
    2.71 +					<reference key="NSCustomColorSpace" ref="932970627"/>
    2.72 +				</object>
    2.73 +				<bool key="IBUIClearsContextBeforeDrawing">NO</bool>
    2.74 +			</object>
    2.75  		</object>
    2.76  		<object class="IBObjectContainer" key="IBDocument.Objects">
    2.77  			<object class="NSMutableArray" key="connectionRecords">
    2.78 @@ -74,15 +107,21 @@
    2.79  					</object>
    2.80  					<int key="connectionID">3</int>
    2.81  				</object>
    2.82 +				<object class="IBConnectionRecord">
    2.83 +					<object class="IBCocoaTouchOutletConnection" key="connection">
    2.84 +						<string key="label">spinnerView</string>
    2.85 +						<reference key="source" ref="372490531"/>
    2.86 +						<reference key="destination" ref="451919951"/>
    2.87 +					</object>
    2.88 +					<int key="connectionID">7</int>
    2.89 +				</object>
    2.90  			</object>
    2.91  			<object class="IBMutableOrderedSet" key="objectRecords">
    2.92  				<object class="NSArray" key="orderedObjects">
    2.93  					<bool key="EncodedWithXMLCoder">YES</bool>
    2.94  					<object class="IBObjectRecord">
    2.95  						<int key="objectID">0</int>
    2.96 -						<object class="NSArray" key="object" id="300673415">
    2.97 -							<bool key="EncodedWithXMLCoder">YES</bool>
    2.98 -						</object>
    2.99 +						<reference key="object" ref="0"/>
   2.100  						<reference key="children" ref="1000"/>
   2.101  						<nil key="parent"/>
   2.102  					</object>
   2.103 @@ -93,50 +132,69 @@
   2.104  							<bool key="EncodedWithXMLCoder">YES</bool>
   2.105  							<reference ref="684980253"/>
   2.106  						</object>
   2.107 -						<reference key="parent" ref="300673415"/>
   2.108 +						<reference key="parent" ref="0"/>
   2.109  					</object>
   2.110  					<object class="IBObjectRecord">
   2.111  						<int key="objectID">-1</int>
   2.112  						<reference key="object" ref="372490531"/>
   2.113 -						<reference key="parent" ref="300673415"/>
   2.114 -						<string type="base64-UTF8" key="objectName">RmlsZSdzIE93bmVyA</string>
   2.115 +						<reference key="parent" ref="0"/>
   2.116 +						<string key="objectName">File's Owner</string>
   2.117  					</object>
   2.118  					<object class="IBObjectRecord">
   2.119  						<int key="objectID">-2</int>
   2.120  						<reference key="object" ref="975951072"/>
   2.121 -						<reference key="parent" ref="300673415"/>
   2.122 +						<reference key="parent" ref="0"/>
   2.123  					</object>
   2.124  					<object class="IBObjectRecord">
   2.125  						<int key="objectID">4</int>
   2.126  						<reference key="object" ref="684980253"/>
   2.127  						<reference key="parent" ref="191373211"/>
   2.128  					</object>
   2.129 +					<object class="IBObjectRecord">
   2.130 +						<int key="objectID">5</int>
   2.131 +						<reference key="object" ref="451919951"/>
   2.132 +						<object class="NSMutableArray" key="children">
   2.133 +							<bool key="EncodedWithXMLCoder">YES</bool>
   2.134 +							<reference ref="675522255"/>
   2.135 +						</object>
   2.136 +						<reference key="parent" ref="0"/>
   2.137 +						<string key="objectName">Spinner View</string>
   2.138 +					</object>
   2.139 +					<object class="IBObjectRecord">
   2.140 +						<int key="objectID">6</int>
   2.141 +						<reference key="object" ref="675522255"/>
   2.142 +						<reference key="parent" ref="451919951"/>
   2.143 +					</object>
   2.144  				</object>
   2.145  			</object>
   2.146  			<object class="NSMutableDictionary" key="flattenedProperties">
   2.147  				<bool key="EncodedWithXMLCoder">YES</bool>
   2.148 -				<object class="NSMutableArray" key="dict.sortedKeys">
   2.149 +				<object class="NSArray" key="dict.sortedKeys">
   2.150  					<bool key="EncodedWithXMLCoder">YES</bool>
   2.151  					<string>-1.CustomClassName</string>
   2.152  					<string>-2.CustomClassName</string>
   2.153  					<string>1.IBEditorWindowLastContentRect</string>
   2.154  					<string>1.IBPluginDependency</string>
   2.155  					<string>4.IBPluginDependency</string>
   2.156 +					<string>5.IBEditorWindowLastContentRect</string>
   2.157 +					<string>5.IBPluginDependency</string>
   2.158 +					<string>6.IBPluginDependency</string>
   2.159  				</object>
   2.160  				<object class="NSMutableArray" key="dict.values">
   2.161  					<bool key="EncodedWithXMLCoder">YES</bool>
   2.162  					<string>DocViewController</string>
   2.163  					<string>UIResponder</string>
   2.164 -					<string>{{556, 276}, {320, 480}}</string>
   2.165 +					<string>{{537, 252}, {320, 480}}</string>
   2.166 +					<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
   2.167 +					<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
   2.168 +					<string>{{0, 285}, {320, 460}}</string>
   2.169  					<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
   2.170  					<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
   2.171  				</object>
   2.172  			</object>
   2.173  			<object class="NSMutableDictionary" key="unlocalizedProperties">
   2.174  				<bool key="EncodedWithXMLCoder">YES</bool>
   2.175 -				<object class="NSArray" key="dict.sortedKeys">
   2.176 -					<bool key="EncodedWithXMLCoder">YES</bool>
   2.177 -				</object>
   2.178 +				<reference key="dict.sortedKeys" ref="0"/>
   2.179  				<object class="NSMutableArray" key="dict.values">
   2.180  					<bool key="EncodedWithXMLCoder">YES</bool>
   2.181  				</object>
   2.182 @@ -144,15 +202,13 @@
   2.183  			<nil key="activeLocalization"/>
   2.184  			<object class="NSMutableDictionary" key="localizations">
   2.185  				<bool key="EncodedWithXMLCoder">YES</bool>
   2.186 -				<object class="NSArray" key="dict.sortedKeys">
   2.187 -					<bool key="EncodedWithXMLCoder">YES</bool>
   2.188 -				</object>
   2.189 +				<reference key="dict.sortedKeys" ref="0"/>
   2.190  				<object class="NSMutableArray" key="dict.values">
   2.191  					<bool key="EncodedWithXMLCoder">YES</bool>
   2.192  				</object>
   2.193  			</object>
   2.194  			<nil key="sourceID"/>
   2.195 -			<int key="maxID">4</int>
   2.196 +			<int key="maxID">7</int>
   2.197  		</object>
   2.198  		<object class="IBClassDescriber" key="IBDocument.Classes">
   2.199  			<object class="NSMutableArray" key="referencedPartialClassDescriptions">
   2.200 @@ -160,15 +216,209 @@
   2.201  				<object class="IBPartialClassDescription">
   2.202  					<string key="className">DocViewController</string>
   2.203  					<string key="superclassName">UIViewController</string>
   2.204 +					<object class="NSMutableDictionary" key="outlets">
   2.205 +						<string key="NS.key.0">spinnerView</string>
   2.206 +						<string key="NS.object.0">UIView</string>
   2.207 +					</object>
   2.208  					<object class="IBClassDescriptionSource" key="sourceIdentifier">
   2.209  						<string key="majorKey">IBProjectSource</string>
   2.210 -						<string key="minorKey">DocViewController.h</string>
   2.211 +						<string key="minorKey">Classes/DocViewController.h</string>
   2.212 +					</object>
   2.213 +				</object>
   2.214 +			</object>
   2.215 +			<object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
   2.216 +				<bool key="EncodedWithXMLCoder">YES</bool>
   2.217 +				<object class="IBPartialClassDescription">
   2.218 +					<string key="className">NSObject</string>
   2.219 +					<object class="IBClassDescriptionSource" key="sourceIdentifier">
   2.220 +						<string key="majorKey">IBFrameworkSource</string>
   2.221 +						<string key="minorKey">Foundation.framework/Headers/NSError.h</string>
   2.222 +					</object>
   2.223 +				</object>
   2.224 +				<object class="IBPartialClassDescription">
   2.225 +					<string key="className">NSObject</string>
   2.226 +					<object class="IBClassDescriptionSource" key="sourceIdentifier">
   2.227 +						<string key="majorKey">IBFrameworkSource</string>
   2.228 +						<string key="minorKey">Foundation.framework/Headers/NSFileManager.h</string>
   2.229 +					</object>
   2.230 +				</object>
   2.231 +				<object class="IBPartialClassDescription">
   2.232 +					<string key="className">NSObject</string>
   2.233 +					<object class="IBClassDescriptionSource" key="sourceIdentifier">
   2.234 +						<string key="majorKey">IBFrameworkSource</string>
   2.235 +						<string key="minorKey">Foundation.framework/Headers/NSKeyValueCoding.h</string>
   2.236 +					</object>
   2.237 +				</object>
   2.238 +				<object class="IBPartialClassDescription">
   2.239 +					<string key="className">NSObject</string>
   2.240 +					<object class="IBClassDescriptionSource" key="sourceIdentifier">
   2.241 +						<string key="majorKey">IBFrameworkSource</string>
   2.242 +						<string key="minorKey">Foundation.framework/Headers/NSKeyValueObserving.h</string>
   2.243 +					</object>
   2.244 +				</object>
   2.245 +				<object class="IBPartialClassDescription">
   2.246 +					<string key="className">NSObject</string>
   2.247 +					<object class="IBClassDescriptionSource" key="sourceIdentifier">
   2.248 +						<string key="majorKey">IBFrameworkSource</string>
   2.249 +						<string key="minorKey">Foundation.framework/Headers/NSKeyedArchiver.h</string>
   2.250 +					</object>
   2.251 +				</object>
   2.252 +				<object class="IBPartialClassDescription">
   2.253 +					<string key="className">NSObject</string>
   2.254 +					<object class="IBClassDescriptionSource" key="sourceIdentifier">
   2.255 +						<string key="majorKey">IBFrameworkSource</string>
   2.256 +						<string key="minorKey">Foundation.framework/Headers/NSNetServices.h</string>
   2.257 +					</object>
   2.258 +				</object>
   2.259 +				<object class="IBPartialClassDescription">
   2.260 +					<string key="className">NSObject</string>
   2.261 +					<object class="IBClassDescriptionSource" key="sourceIdentifier">
   2.262 +						<string key="majorKey">IBFrameworkSource</string>
   2.263 +						<string key="minorKey">Foundation.framework/Headers/NSObject.h</string>
   2.264 +					</object>
   2.265 +				</object>
   2.266 +				<object class="IBPartialClassDescription">
   2.267 +					<string key="className">NSObject</string>
   2.268 +					<object class="IBClassDescriptionSource" key="sourceIdentifier">
   2.269 +						<string key="majorKey">IBFrameworkSource</string>
   2.270 +						<string key="minorKey">Foundation.framework/Headers/NSPort.h</string>
   2.271 +					</object>
   2.272 +				</object>
   2.273 +				<object class="IBPartialClassDescription">
   2.274 +					<string key="className">NSObject</string>
   2.275 +					<object class="IBClassDescriptionSource" key="sourceIdentifier">
   2.276 +						<string key="majorKey">IBFrameworkSource</string>
   2.277 +						<string key="minorKey">Foundation.framework/Headers/NSRunLoop.h</string>
   2.278 +					</object>
   2.279 +				</object>
   2.280 +				<object class="IBPartialClassDescription">
   2.281 +					<string key="className">NSObject</string>
   2.282 +					<object class="IBClassDescriptionSource" key="sourceIdentifier">
   2.283 +						<string key="majorKey">IBFrameworkSource</string>
   2.284 +						<string key="minorKey">Foundation.framework/Headers/NSStream.h</string>
   2.285 +					</object>
   2.286 +				</object>
   2.287 +				<object class="IBPartialClassDescription">
   2.288 +					<string key="className">NSObject</string>
   2.289 +					<object class="IBClassDescriptionSource" key="sourceIdentifier">
   2.290 +						<string key="majorKey">IBFrameworkSource</string>
   2.291 +						<string key="minorKey">Foundation.framework/Headers/NSThread.h</string>
   2.292 +					</object>
   2.293 +				</object>
   2.294 +				<object class="IBPartialClassDescription">
   2.295 +					<string key="className">NSObject</string>
   2.296 +					<object class="IBClassDescriptionSource" key="sourceIdentifier">
   2.297 +						<string key="majorKey">IBFrameworkSource</string>
   2.298 +						<string key="minorKey">Foundation.framework/Headers/NSURL.h</string>
   2.299 +					</object>
   2.300 +				</object>
   2.301 +				<object class="IBPartialClassDescription">
   2.302 +					<string key="className">NSObject</string>
   2.303 +					<object class="IBClassDescriptionSource" key="sourceIdentifier">
   2.304 +						<string key="majorKey">IBFrameworkSource</string>
   2.305 +						<string key="minorKey">Foundation.framework/Headers/NSURLConnection.h</string>
   2.306 +					</object>
   2.307 +				</object>
   2.308 +				<object class="IBPartialClassDescription">
   2.309 +					<string key="className">NSObject</string>
   2.310 +					<object class="IBClassDescriptionSource" key="sourceIdentifier">
   2.311 +						<string key="majorKey">IBFrameworkSource</string>
   2.312 +						<string key="minorKey">Foundation.framework/Headers/NSXMLParser.h</string>
   2.313 +					</object>
   2.314 +				</object>
   2.315 +				<object class="IBPartialClassDescription">
   2.316 +					<string key="className">NSObject</string>
   2.317 +					<object class="IBClassDescriptionSource" key="sourceIdentifier">
   2.318 +						<string key="majorKey">IBFrameworkSource</string>
   2.319 +						<string key="minorKey">UIKit.framework/Headers/UINibLoading.h</string>
   2.320 +					</object>
   2.321 +				</object>
   2.322 +				<object class="IBPartialClassDescription">
   2.323 +					<string key="className">UIActivityIndicatorView</string>
   2.324 +					<string key="superclassName">UIView</string>
   2.325 +					<object class="IBClassDescriptionSource" key="sourceIdentifier">
   2.326 +						<string key="majorKey">IBFrameworkSource</string>
   2.327 +						<string key="minorKey">UIKit.framework/Headers/UIActivityIndicatorView.h</string>
   2.328 +					</object>
   2.329 +				</object>
   2.330 +				<object class="IBPartialClassDescription">
   2.331 +					<string key="className">UIResponder</string>
   2.332 +					<string key="superclassName">NSObject</string>
   2.333 +					<object class="IBClassDescriptionSource" key="sourceIdentifier">
   2.334 +						<string key="majorKey">IBFrameworkSource</string>
   2.335 +						<string key="minorKey">UIKit.framework/Headers/UIResponder.h</string>
   2.336 +					</object>
   2.337 +				</object>
   2.338 +				<object class="IBPartialClassDescription">
   2.339 +					<string key="className">UISearchBar</string>
   2.340 +					<string key="superclassName">UIView</string>
   2.341 +					<object class="IBClassDescriptionSource" key="sourceIdentifier">
   2.342 +						<string key="majorKey">IBFrameworkSource</string>
   2.343 +						<string key="minorKey">UIKit.framework/Headers/UISearchBar.h</string>
   2.344 +					</object>
   2.345 +				</object>
   2.346 +				<object class="IBPartialClassDescription">
   2.347 +					<string key="className">UIView</string>
   2.348 +					<object class="IBClassDescriptionSource" key="sourceIdentifier">
   2.349 +						<string key="majorKey">IBFrameworkSource</string>
   2.350 +						<string key="minorKey">UIKit.framework/Headers/UITextField.h</string>
   2.351 +					</object>
   2.352 +				</object>
   2.353 +				<object class="IBPartialClassDescription">
   2.354 +					<string key="className">UIView</string>
   2.355 +					<string key="superclassName">UIResponder</string>
   2.356 +					<object class="IBClassDescriptionSource" key="sourceIdentifier">
   2.357 +						<string key="majorKey">IBFrameworkSource</string>
   2.358 +						<string key="minorKey">UIKit.framework/Headers/UIView.h</string>
   2.359 +					</object>
   2.360 +				</object>
   2.361 +				<object class="IBPartialClassDescription">
   2.362 +					<string key="className">UIViewController</string>
   2.363 +					<object class="IBClassDescriptionSource" key="sourceIdentifier">
   2.364 +						<string key="majorKey">IBFrameworkSource</string>
   2.365 +						<string key="minorKey">UIKit.framework/Headers/UINavigationController.h</string>
   2.366 +					</object>
   2.367 +				</object>
   2.368 +				<object class="IBPartialClassDescription">
   2.369 +					<string key="className">UIViewController</string>
   2.370 +					<object class="IBClassDescriptionSource" key="sourceIdentifier">
   2.371 +						<string key="majorKey">IBFrameworkSource</string>
   2.372 +						<string key="minorKey">UIKit.framework/Headers/UITabBarController.h</string>
   2.373 +					</object>
   2.374 +				</object>
   2.375 +				<object class="IBPartialClassDescription">
   2.376 +					<string key="className">UIViewController</string>
   2.377 +					<string key="superclassName">UIResponder</string>
   2.378 +					<object class="IBClassDescriptionSource" key="sourceIdentifier">
   2.379 +						<string key="majorKey">IBFrameworkSource</string>
   2.380 +						<string key="minorKey">UIKit.framework/Headers/UIViewController.h</string>
   2.381 +					</object>
   2.382 +				</object>
   2.383 +				<object class="IBPartialClassDescription">
   2.384 +					<string key="className">UIWebView</string>
   2.385 +					<string key="superclassName">UIView</string>
   2.386 +					<object class="IBClassDescriptionSource" key="sourceIdentifier">
   2.387 +						<string key="majorKey">IBFrameworkSource</string>
   2.388 +						<string key="minorKey">UIKit.framework/Headers/UIWebView.h</string>
   2.389  					</object>
   2.390  				</object>
   2.391  			</object>
   2.392  		</object>
   2.393  		<int key="IBDocument.localizationMode">0</int>
   2.394 -		<string key="IBDocument.LastKnownRelativeProjectPath">iNuxeo.xcodeproj</string>
   2.395 +		<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencies">
   2.396 +			<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>
   2.397 +			<integer value="784" key="NS.object.0"/>
   2.398 +		</object>
   2.399 +		<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
   2.400 +			<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>
   2.401 +			<integer value="544" key="NS.object.0"/>
   2.402 +		</object>
   2.403 +		<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
   2.404 +			<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string>
   2.405 +			<integer value="3000" key="NS.object.0"/>
   2.406 +		</object>
   2.407 +		<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
   2.408 +		<string key="IBDocument.LastKnownRelativeProjectPath">../iNuxeo.xcodeproj</string>
   2.409  		<int key="IBDocument.defaultPropertyAccessControl">3</int>
   2.410  		<string key="IBCocoaTouchPluginVersion">3.1</string>
   2.411  	</data>
     3.1 --- a/Classes/DocViewController.h
     3.2 +++ b/Classes/DocViewController.h
     3.3 @@ -10,6 +10,8 @@
     3.4  
     3.5  @interface DocViewController : UIViewController {
     3.6      NSURL *url;
     3.7 +
     3.8 +    IBOutlet UIView *spinnerView;
     3.9  }
    3.10  
    3.11  @property (nonatomic, retain) NSURL *url;
     4.1 --- a/Classes/DocViewController.m
     4.2 +++ b/Classes/DocViewController.m
     4.3 @@ -13,60 +13,74 @@
     4.4  
     4.5  @synthesize url;
     4.6  
     4.7 -- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
     4.8 -    if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
     4.9 -        self.navigationItem.title = @"My doc";
    4.10 -        self.navigationItem.backBarButtonItem.enabled = YES;
    4.11 -    }
    4.12 -    return self;
    4.13 +- (void)viewDidLoad {
    4.14 +    [super viewDidLoad];
    4.15 +    self.navigationItem.title = @"My doc";
    4.16 +    self.navigationItem.backBarButtonItem.enabled = YES;
    4.17  }
    4.18  
    4.19  - (void)loadDocument {
    4.20      UIWebView *view = [[UIWebView alloc] init];
    4.21      view.scalesPageToFit = YES;
    4.22 +    self.view = view;
    4.23      
    4.24      NSMutableURLRequest *request = [[CmisClient sharedClient] makeRequestForURL:url consumes:@"*/*"];
    4.25      NSHTTPURLResponse *response;
    4.26      NSError *error;
    4.27 +    [UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
    4.28 +    //[self showSpinner];
    4.29      NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
    4.30      if ([response statusCode] != 200) {
    4.31          NSLog(@"WARNING: non-200 response code!: %d", [response statusCode]);
    4.32      }
    4.33      [view loadData:data MIMEType:[response MIMEType] textEncodingName:nil baseURL:url];
    4.34 -    self.view = view;
    4.35 +    [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
    4.36 +    //[self hideSpinner];
    4.37  }
    4.38  
    4.39 -/*
    4.40 -// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
    4.41 -- (void)viewDidLoad {
    4.42 -    [super viewDidLoad];
    4.43 -}
    4.44 -*/
    4.45 -
    4.46 -/*
    4.47 -// Override to allow orientations other than the default portrait orientation.
    4.48 -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    4.49 -    // Return YES for supported orientations
    4.50 -    return (interfaceOrientation == UIInterfaceOrientationPortrait);
    4.51 -}
    4.52 -*/
    4.53 -
    4.54 -- (void)didReceiveMemoryWarning {
    4.55 -	// Releases the view if it doesn't have a superview.
    4.56 -    [super didReceiveMemoryWarning];
    4.57 -	
    4.58 -	// Release any cached data, images, etc that aren't in use.
    4.59 -}
    4.60 -
    4.61 -- (void)viewDidUnload {
    4.62 -	// Release any retained subviews of the main view.
    4.63 -	// e.g. self.myOutlet = nil;
    4.64 -}
    4.65 -
    4.66 -
    4.67  - (void)dealloc {
    4.68      [super dealloc];
    4.69  }
    4.70  
    4.71 +#pragma mark -
    4.72 +#pragma mark spinner
    4.73 +
    4.74 +- (void)addProgressIndicator {
    4.75 +    NSAutoreleasePool *apool = [[NSAutoreleasePool alloc] init];
    4.76 +    
    4.77 +    [self.view addSubview:spinnerView];
    4.78 +    spinnerView.alpha = 0.0;
    4.79 +    [self.view bringSubviewToFront:spinnerView];
    4.80 +    [UIView beginAnimations:nil context:nil];
    4.81 +    [UIView setAnimationDuration:0.5];
    4.82 +    [UIView setAnimationTransition:UIViewAnimationTransitionNone forView:self.view cache:YES];
    4.83 +    spinnerView.alpha = 0.7;
    4.84 +    [UIView commitAnimations];
    4.85 +    
    4.86 +    [apool release];
    4.87 +}
    4.88 +
    4.89 +- (void)removeProgressIndicator {
    4.90 +    NSAutoreleasePool *apool = [[NSAutoreleasePool alloc] init];
    4.91 +    
    4.92 +    [UIView beginAnimations:nil context:nil];
    4.93 +    [UIView setAnimationDuration:0.5];
    4.94 +    [UIView setAnimationTransition:UIViewAnimationTransitionNone forView:self.view cache:YES];
    4.95 +    [UIView setAnimationDelegate:self];
    4.96 +    spinnerView.alpha = 0.0;
    4.97 +    [UIView commitAnimations];
    4.98 +    
    4.99 +    [spinnerView removeFromSuperview];
   4.100 +    
   4.101 +    [apool release];
   4.102 +}
   4.103 +
   4.104 +- (void)showSpinner {
   4.105 +    [self performSelectorInBackground:@selector(addProgressIndicator) withObject:nil];
   4.106 +}
   4.107 +
   4.108 +- (void)hideSpinner {
   4.109 +    [self performSelectorInBackground:@selector(removeProgressIndicator) withObject:nil];
   4.110 +}
   4.111  
   4.112  @end
     5.1 --- a/Classes/FolderView.xib
     5.2 +++ b/Classes/FolderView.xib
     5.3 @@ -66,10 +66,6 @@
     5.4  				<float key="IBUISectionHeaderHeight">27</float>
     5.5  				<float key="IBUISectionFooterHeight">27</float>
     5.6  			</object>
     5.7 -			<object class="IBUIBarButtonItem" id="291600978">
     5.8 -				<int key="IBUIStyle">1</int>
     5.9 -				<int key="IBUISystemItemIdentifier">9</int>
    5.10 -			</object>
    5.11  		</object>
    5.12  		<object class="IBObjectContainer" key="IBDocument.Objects">
    5.13  			<object class="NSMutableArray" key="connectionRecords">
    5.14 @@ -106,14 +102,6 @@
    5.15  					</object>
    5.16  					<int key="connectionID">13</int>
    5.17  				</object>
    5.18 -				<object class="IBConnectionRecord">
    5.19 -					<object class="IBCocoaTouchOutletConnection" key="connection">
    5.20 -						<string key="label">infoButton</string>
    5.21 -						<reference key="source" ref="372490531"/>
    5.22 -						<reference key="destination" ref="291600978"/>
    5.23 -					</object>
    5.24 -					<int key="connectionID">16</int>
    5.25 -				</object>
    5.26  			</object>
    5.27  			<object class="IBMutableOrderedSet" key="objectRecords">
    5.28  				<object class="NSArray" key="orderedObjects">
    5.29 @@ -145,12 +133,6 @@
    5.30  						<reference key="object" ref="556243163"/>
    5.31  						<reference key="parent" ref="0"/>
    5.32  					</object>
    5.33 -					<object class="IBObjectRecord">
    5.34 -						<int key="objectID">15</int>
    5.35 -						<reference key="object" ref="291600978"/>
    5.36 -						<reference key="parent" ref="0"/>
    5.37 -						<string key="objectName">Info button</string>
    5.38 -					</object>
    5.39  				</object>
    5.40  			</object>
    5.41  			<object class="NSMutableDictionary" key="flattenedProperties">
    5.42 @@ -160,7 +142,6 @@
    5.43  					<string>-1.CustomClassName</string>
    5.44  					<string>-2.CustomClassName</string>
    5.45  					<string>14.IBPluginDependency</string>
    5.46 -					<string>15.IBPluginDependency</string>
    5.47  					<string>9.IBEditorWindowLastContentRect</string>
    5.48  					<string>9.IBPluginDependency</string>
    5.49  				</object>
    5.50 @@ -169,7 +150,6 @@
    5.51  					<string>FolderViewController</string>
    5.52  					<string>UIResponder</string>
    5.53  					<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
    5.54 -					<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
    5.55  					<string>{{236, 337}, {320, 480}}</string>
    5.56  					<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
    5.57  				</object>
     6.1 --- a/Classes/FolderViewCell.h
     6.2 +++ b/Classes/FolderViewCell.h
     6.3 @@ -10,8 +10,10 @@
     6.4  #import "NXObject.h"
     6.5  
     6.6  @interface FolderViewCell : UITableViewCell {
     6.7 +    NSDateFormatter *dateFormatter;
     6.8 +}
     6.9  
    6.10 -}
    6.11 +@property (nonatomic, retain, readonly) NSDateFormatter *dateFormatter;
    6.12  
    6.13  - (id)initWithObject:(NXObject *)object;
    6.14  
     7.1 --- a/Classes/FolderViewCell.m
     7.2 +++ b/Classes/FolderViewCell.m
     7.3 @@ -10,6 +10,20 @@
     7.4  
     7.5  @implementation FolderViewCell
     7.6  
     7.7 +// On-demand initializer for read-only property.
     7.8 +- (NSDateFormatter *)dateFormatter {
     7.9 +    if (dateFormatter == nil) {
    7.10 +        dateFormatter = [[NSDateFormatter alloc] init];
    7.11 +        [dateFormatter setDateFormat:@"yyyy/MM/dd '|' hh:mm"];
    7.12 +    }
    7.13 +    return dateFormatter;
    7.14 +}
    7.15 +
    7.16 +- (void)dealloc {
    7.17 +    [dateFormatter release];
    7.18 +	[super dealloc];
    7.19 +}
    7.20 +
    7.21  - (id)initWithObject:(NXObject *)object {
    7.22  
    7.23      UILabel *titleLabel = nil;
    7.24 @@ -23,14 +37,30 @@
    7.25      infoLabel = [[[UILabel alloc] initWithFrame:CGRectMake(30, 18, 240, 30)] autorelease];
    7.26      infoLabel.tag = 2;
    7.27      infoLabel.font = [UIFont systemFontOfSize:11];
    7.28 +
    7.29 +    NSString *creator = (NSString *)[object getProperty:@"cmis:createdBy"];
    7.30 +    NSDate *lastModificationDate = (NSDate *)[object getProperty:@"cmis:lastModificationDate"];
    7.31 +    
    7.32      if ([object isFolder]) {
    7.33 -        infoLabel.text = @"Which info should we put here?";
    7.34 +        infoLabel.text = [NSString stringWithFormat:@"%@ | %@",
    7.35 +                          creator,
    7.36 +                          [self.dateFormatter stringFromDate:lastModificationDate]];
    7.37      } else {
    7.38 -        //infoLabel.text = @"Updated xxx | Size: zzz";
    7.39 -        NSString *mimeType = (NSString *)[object getProperty:@"cmis:contentStreamMimeType"];
    7.40 -        NSNumber *size = (NSNumber *)[object getProperty:@"cmis:contentStreamLength"];
    7.41 -        infoLabel.text = [NSString stringWithFormat:@"Size: %@ | Mime-Type: %@",
    7.42 -                          size, mimeType];
    7.43 +        long long size = [(NSNumber *)[object getProperty:@"cmis:contentStreamLength"] longLongValue];
    7.44 +        NSString *formattedSize;
    7.45 +        if (size < 1000) {
    7.46 +            formattedSize = [NSString stringWithFormat:@"%db", size];
    7.47 +        } else if (size < 1000000) {
    7.48 +            formattedSize = [NSString stringWithFormat:@"%dkB", size/1000];
    7.49 +        } else if (size < 1000000000) {
    7.50 +            formattedSize = [NSString stringWithFormat:@"%dMB", size/1000000];
    7.51 +        } else if (size < 1000000000000) {
    7.52 +            formattedSize = [NSString stringWithFormat:@"%dGB", size/1000000000];
    7.53 +        }
    7.54 +        infoLabel.text = [NSString stringWithFormat:@"%@ | %@ | %@",
    7.55 +                          creator,
    7.56 +                          [self.dateFormatter stringFromDate:lastModificationDate],
    7.57 +                          formattedSize];
    7.58      }
    7.59      [self.contentView addSubview:infoLabel];
    7.60  
     8.1 --- a/Classes/FolderViewController.m
     8.2 +++ b/Classes/FolderViewController.m
     8.3 @@ -82,8 +82,8 @@
     8.4          DocViewController *docViewController = [[DocViewController alloc] initWithNibName:@"DocView" bundle:nil];
     8.5          docViewController.title = object.title;
     8.6          docViewController.url = object.url;
     8.7 +        [self.navigationController pushViewController:docViewController animated:YES];
     8.8          [docViewController loadDocument];
     8.9 -        [self.navigationController pushViewController:docViewController animated:YES];
    8.10          [docViewController release];
    8.11      }
    8.12  }
     9.1 --- a/Classes/NXFolder.h
     9.2 +++ b/Classes/NXFolder.h
     9.3 @@ -16,6 +16,7 @@
     9.4  @property (retain) NSMutableArray *children;
     9.5  
     9.6  - (void)addChild:(NXObject*)child;
     9.7 +- (void)sort;
     9.8  - (NSUInteger)countChildren;
     9.9  
    9.10  @end
    10.1 --- a/Classes/NXFolder.m
    10.2 +++ b/Classes/NXFolder.m
    10.3 @@ -37,4 +37,10 @@
    10.4      return [self.children count];
    10.5  }
    10.6  
    10.7 +- (void)sort {
    10.8 +    NSSortDescriptor *sortDesc = [[NSSortDescriptor alloc] initWithKey:@"title" ascending:YES];
    10.9 +    [self.children sortUsingDescriptors:[NSArray arrayWithObject:sortDesc]];
   10.10 +    [sortDesc release];
   10.11 +}
   10.12 +
   10.13  @end
    11.1 --- a/Classes/NXObject.m
    11.2 +++ b/Classes/NXObject.m
    11.3 @@ -26,7 +26,12 @@
    11.4      self.properties = [[NSMutableDictionary alloc] init];
    11.5      [self parse:entry];
    11.6  
    11.7 -    self.title = (NSString*)[self getProperty:@"cmis:name"];
    11.8 +    NSString *dcTitle = (NSString*)[self getProperty:@"dc:title"];
    11.9 +    if (dcTitle != nil) {
   11.10 +        self.title = dcTitle;
   11.11 +    } else {
   11.12 +        self.title = (NSString*)[self getProperty:@"cmis:name"];
   11.13 +    }
   11.14      return self;
   11.15  }
   11.16  
   11.17 @@ -38,13 +43,11 @@
   11.18      DDXMLElement *object = [[entry elementsForName:@"object"] objectAtIndex:0] ;
   11.19      DDXMLElement *props = [[object elementsForName:@"properties"] objectAtIndex:0];
   11.20      for (DDXMLElement *prop in [props elementsForName:@"propertyId"]) {
   11.21 -        //NSLog(@"%@", [prop XMLString]);
   11.22          NSString *propName = [[prop attributeForName:@"propertyDefinitionId"] stringValue];
   11.23          NSString *propValue = [[[prop elementsForName:@"value"] objectAtIndex:0] stringValue];
   11.24          [self.properties setObject:propValue forKey:propName];        
   11.25      }
   11.26      for (DDXMLElement *prop in [props elementsForName:@"propertyString"]) {
   11.27 -        //NSLog(@"%@", [prop XMLString]);
   11.28          NSString *propName = [[prop attributeForName:@"propertyDefinitionId"] stringValue];
   11.29          if ([propName isEqualToString:@"dc:subjects"] || [propName isEqualToString:@"content_roots"]
   11.30              || [propName isEqualToString:@"publish:sections"]) {
   11.31 @@ -55,14 +58,15 @@
   11.32          [self.properties setObject:propValue forKey:propName];        
   11.33      }
   11.34      for (DDXMLElement *prop in [props elementsForName:@"propertyDateTime"]) {
   11.35 -        //NSLog(@"%@", [prop XMLString]);
   11.36          NSString *propName = [[prop attributeForName:@"propertyDefinitionId"] stringValue];
   11.37 -        NSString *propValue = [[[prop elementsForName:@"value"] objectAtIndex:0] stringValue];
   11.38 +        NSString *dateString = [[[prop elementsForName:@"value"] objectAtIndex:0] stringValue];
   11.39 +        NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
   11.40 +        [dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"];
   11.41 +        NSDate *propValue = [dateFormatter dateFromString:dateString];
   11.42          NSLog(@"%@ = %@", propName, propValue);
   11.43          [self.properties setObject:propValue forKey:propName];        
   11.44      }
   11.45      for (DDXMLElement *prop in [props elementsForName:@"propertyInteger"]) {
   11.46 -        //NSLog(@"%@", [prop XMLString]);
   11.47          NSString *propName = [[prop attributeForName:@"propertyDefinitionId"] stringValue];
   11.48          NSString *propValue = [[[prop elementsForName:@"value"] objectAtIndex:0] stringValue];
   11.49          NSLog(@"%@ = %@", propName, propValue);
    12.1 --- a/Classes/SearchViewController.h
    12.2 +++ b/Classes/SearchViewController.h
    12.3 @@ -8,7 +8,6 @@
    12.4  
    12.5  #import <UIKit/UIKit.h>
    12.6  
    12.7 -
    12.8  @interface SearchViewController : UITableViewController <UISearchDisplayDelegate, UISearchBarDelegate> {
    12.9  
   12.10  }
    13.1 --- a/ROADMAP.txt
    13.2 +++ b/ROADMAP.txt
    13.3 @@ -7,13 +7,18 @@
    13.4  V 0.1:
    13.5  
    13.6  + Navigate in repository
    13.7 ++ Show spinner when running HTTP requests
    13.8 ++ Proper object info in table views
    13.9 +  + Use dc:title instead of name
   13.10 +  + Last modification date
   13.11 +  + size
   13.12 +  + Creator
   13.13 ++ Order folders in a predictable way
   13.14  - Implement settings screen
   13.15 +
   13.16 +v 0.1.5:
   13.17 +
   13.18  - Implement search
   13.19 -- Asynchronous requests + progress bars
   13.20 -- Proper object info in table views
   13.21 -  - Use title instead of name
   13.22 -  - Last modification date / size  
   13.23 -- Order folders in a predictable way
   13.24  - Add bottom bar to splash view
   13.25  - Proper memory management
   13.26  - Better Logo / splashscreen
   13.27 @@ -21,6 +26,7 @@
   13.28  
   13.29  V 0.2:
   13.30  
   13.31 +- Asynchronous requests + progress bars
   13.32  - View object properties
   13.33  - Implement timeline
   13.34  - Caching
    14.1 --- a/iNuxeo.xcodeproj/project.pbxproj
    14.2 +++ b/iNuxeo.xcodeproj/project.pbxproj
    14.3 @@ -194,8 +194,8 @@
    14.4  			isa = PBXGroup;
    14.5  			children = (
    14.6  				781530CB113FFB7F0021E3DA /* DocView.xib */,
    14.7 +				781530C9113FFB7F0021E3DA /* DocViewController.h */,
    14.8  				781530C8113FFB7F0021E3DA /* DocViewController.m */,
    14.9 -				781530C9113FFB7F0021E3DA /* DocViewController.h */,
   14.10  				783EC6DF113FFF27007F8A72 /* FolderView.xib */,
   14.11  				28C286DF0D94DF7D0034E888 /* FolderViewController.h */,
   14.12  				28C286E00D94DF7D0034E888 /* FolderViewController.m */,