My favorites | Sign in
Project Home Source
Project Information
Members
Links

Overview

Cooliris ToolKit for iOS is a collection of Objective-C classes you can use to speed up development of your iOS applications. It is used in various Cooliris products for iOS like Discover or Decks.

What makes Cooliris ToolKit different from various open-source toolkits is that each feature was designed to have minimal dependency on the other ones. Each feature was also designed to be implemented with a single .h/.m source code files pair. The combination of these 2 design goals makes it quite easy to re-use only what you need from this project without clustering your application with many additional obscure source files.

License

Cooliris ToolKit is copyright 2011 Cooliris, Inc. and available under Apache 2.0 license. See the LICENSE file in the project for more information.

IMPORTANT: Cooliris ToolKit includes some other open-source projects and such projects remain under their own license.

Clients & Examples

These are shipping iOS applications or examples that make significant use of the Cooliris ToolKit:

  • Discover by Cooliris, a completely new way to explore Wikipedia, inviting you to sit back, relax, and expand your knowledge through a delightful experience that doesn't feel like you're reading an encyclopedia.
  • Decks by Cooliris, your brand new buying experience on iPad. Create and enjoy your own customized catalogs as intuitive decks of cards that update continuously — all in one place.
  • Decks for Apps, the simplest and fastest way to keep up to date on the top apps for iPad. With Decks for Apps, discovering new apps on the App Store has become a whole lot easier.
  • Decks for Flickr, your whole new way to enjoy a rich, fluid photographic experience on iPad. Discover and follow public photos from Flickr that match your interest, all as intuitive decks of cards that update continuously.
  • Decks for Movies, the hassle-free way to catch movie trailers for the top movies all in one place.
  • ComicFlow, a popular free iPad comic reader by Pierre-Olivier Latour and available under open-source license at http://code.google.com/p/comicflow/.
  • iOS Face Detection, a demo application that uses OpenCV to detect faces in a picture taken with an iPhone or iPad camera.

If you have an application that would fit this list, make sure to let us know at feedback@cooliris.com.

Using Cooliris ToolKit

You can of course cherry pick which classes you want in your project and copy the related source code files, but the easiest way it to have the entire Cooliris-Toolkit directory at the top-level of your project directory so you can easily keep up to date with the latest version.

hg clone https://cooliris-toolkit.googlecode.com/hg/ Cooliris-ToolKit

If you use Mercurial for source control, you should add Cooliris ToolKit as a subrepository.

Be aware that some classes have required matching assets in the Resources directory e.g. “GridView-Background.png” for GridView.h/m.

Open-Source Wrappers

Cooliris Toolkit re-embeds some other open-source projects and wraps them into their own Xcode sub-projects that produces self-contained static libraries and headers with abstracted high-level classes or functions.

For convenience all the build products go to a top-level "build" directory so you only need to include one path in the Xcode target settings.

This approach makes it quite easier to use these open-source projects in multiple iOS apps as there is no need to manually add and keep track of each project source files: simply add a dependency to the Xcode sub-project from your main project and you’re done.

In case you need to use one of these Xcode sub-projects e.g. “DAVServer”, proceed as follow:

  1. Add the Xcode sub-project to your main Xcode project,
  2. In the target settings of your main Xcode project, add this path to the “User Header Search Paths” setting:
  3.   Cooliris-ToolKit/build/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
  4. In the target settings of your main Xcode project, add this path to the “Other Linker Flags” setting:
  5.   -ObjC
This is required to ensure Objective-C categories are preserved in static libraries (see this topic for details).
  1. Finally, link to the built product of the Xcode sub-project

Directory Hierarchy

Classes

This directory is the core of the Cooliris Toolkit: these Objective-C classes have minimal dependencies between each others and should be ready-to-use in your projects.

  • ApplicationDelegate: This classes offers numerous built-in functionalities for a UIApplication delegate in cooperation with the Logging and Task classes. Your application delegate class should subclass this class instead of NSObject to benefit automatically from all these features.
  • AutoresizingView: UIView subclass that automatically resizes a content subview using a “center”, “resize”, “aspect-fit” or “aspect-fill” method.
  • BasicAnimation: Simple CABasicAnimation subclass that allows to specify per-instance delegate and callbacks on animation completion.
  • CameraViewController: UIViewController subclass to replace UIImagePickerController to take photos with customizable user interface, image scaling and EXIF metadata (including GPS location) inclusion.
  • Crypto: Provides C function wrappers for MD5 and SHA2-256 hash computations.
  • Database: Implements a powerful SQLite Objectice-C wrapper with automatic schema creation from class properties.
  • DataWrapper: Simple NSData subclass that allows to wrap a block of memory and provide a custom C callback for release.
  • DiskCache: Manages a cache on disk of NSCoding compatible objects or raw data files which can be purged to a maximum size.
  • DocumentView: Displays and manages layout and user interaction of a set of “page-type” subviews arranged horizontally.
  • ExtendedPageControl: Implements a page control like the one on the home screen of iOS.
  • Extensions_AmazonS3: Category on NSMutableURLRequest to sign HTTP requests for Amazon S3.
  • Extensions_CoreAnimation: Categories on Core Animation classes to implement various convenience features.
  • Extensions_Foundation: Categories on Foundation classes to implement various convenience features.
  • Extensions_UIKit: Categories on UIKit classes to implement various convenience features.
  • FileSystemView: Subclass of GridView that displays the contents of a directory.
  • FormTableController: UITableView subclass that implements a form with text, password or checkbox fields.
  • GridView: Displays and manages layout and user interaction with a grid of subviews.
  • HTTPURLConnection: Subclass of NSURLConnection that implements synchronous HTTP operations and offers features like downloading to disk or resuming downloads.
  • ImageCell: UITableViewCell subclass to display images.
  • ImageUtilities: Low-level C functions to perform graphic operations on CGImages.
  • InfiniteView: Displays and manages layout and user interaction of a set of “page-type” subviews arranged both horizontally and vertically in an infinite presentation.
  • Keychain: Objective-C wrapper to store and retrieve passwords from the Keychain.
  • LibXMLParser: Objective-C wrapper for LibXML.
  • Logging: Powerful logging facility with history recording and playback, and well as remote logging over Telnet.
  • MapAnnotation: Basic MKAnnotation conforming class to use with MapKit.
  • MovieView: Loads and displays a movie from a URL.
  • NavigationControl: Implements a navigation control with customizable markers and thumb.
  • NetReachability: Objective-C wrapper for the System Configuration reachability APIs.
  • OverlayView: Displays a simple pop-over view with an arrow at a given location.
  • PubNub: Clean and simple Objective-C interface for http://www.pubnub.com/.
  • RemoteUpdater: Allows one-way synchronization of “extra content”, typically Zip archives which get decompressed on arrival, from a remote server to the application.
  • RichString: Basic replacement for NSAttributedString that allows archiving of itself and its attachments.
  • ServerConnection: Provides an abstract state-machine for applications that needs to be continuously connected to a server and automatically reconnect / disconnect depending on network conditions.
  • ShakeMotion: Wrapper around UIAccelerometer to detect shake motions.
  • SliderControl: Implements a slider control with customizable graphic assets.
  • SmartDescription: Replacement for NSObject's -description that automatically prints the values of the object’s properties.
  • SwitchCell: UITableViewCell subclass to display switches.
  • Task: Implements a powerful background tasks management system for your application: task dependencies, task groups, independent completion delegates... Works on iOS 3.2 using threads and GCD on iOS 4.0 and later.
  • TextFieldCell: UITableViewCell subclass to display text fields.
  • TextIndex: Offers a simple text indexer for Western languages.
  • UnitTest: Base class to implement unit tests.
  • WebViewController: UIViewController subclass that displays a UIWebView along with back and forward buttons.
  • WorkerThread: Allows to start and wait for completion of background threads in an atomic way.
  • ZoomView: Displays a content subview (typically a UIImageView) with automatic pan and zoom behavior.

DAVServer

This is a self-contained WebDAV class 1 server from https://code.google.com/p/cocoadavserver/ that is wrapped by a high-level Objective-C class interface.

JSON

This directory contains https://github.com/mobilehub/JSONKit wrapped by high-level C functions interface.

Lua

This directory simply contains Lua-5.1.4 from http://www.lua.org/.

MiniZip

This directory contains Minizip 1.1 from http://www.winimage.com/zLibDll/minizip.html wrapped by a high-level Objective-C class interface.

Resources

Associated resources required by the source code in the “Classes” directory.

Scripts

A series of shell scripts to be used from Xcode script phases. The primary one is “PatchInfoPlist.sh” which conveniently replaces some predefined variables in “Info.plist” and associated “InfoPlist.strings” files.

SocialNetworks

A fully self-contained set of Objective-C classes to present a user interface to post to Facebook or Twitter based on https://github.com/facebook/facebook-ios-sdk and https://github.com/ideashower/ShareKit. When using this Xcode sub-project, don’t forget to include the associated Resources directory in your main Xcode project.

UnitTests

Stand-alone Xcode project to run the unit tests on Mac OS X for the source code in the “Classes” directory.

UnRAR

This directory contains UnRAR 3.9.10 from http://www.rarlab.com/rar_add.htm that is wrapped by a high-level Objective-C class interface.

Xcode-Configurations

Recommanded Xcode configurations for your iOS project: all Xcode projects in Cooliris Toolkit use them.

Powered by Google Project Hosting