Monthly Archives: June 2013

Announcing v1.2 of AxCrypt for iOS!

The fresh from the oven – and still open-sourced – version 1.2 of AxCrypt for iOS feature separate listings of Received and Transferred documents and better utilization of the larger screens of iPhone 5 and iPads. It also invites the user to send feedback straight from the app and provides additional online resources through its main interface. Being more protective of the user’s information, AxCrypt for iOS now closes its document if you leave the app for whatever reason (say, you get a phone call). Last, but not least, the app should be more stable than ever, having both its file management and resource management looked at a little extra.

Click to go to the source file

v1.2 MainWindowController on an iPhone 5

Click to go to the source file

v1.2 FileListingViewController on an iPhone 5

Click to go to source

v1.2 MainViewController on an iPad

 

In this version of AxCrypt, I replaced my home made progress indicator with the excellent BTProgressHUD from Nic Wise. The Xamarin Component Store made it really easy to browse and locate the component, and putting it into my solution, was a breeze:

I also added the progress HUD to my new WebViewController, complementing the iOS’ Network Activity Indicator. As an extra bonus, if something were to go wrong, the HUD provides a nice ShowErrorWithStatus method, letting the user know what’s going on.

Separation of Concerns

Attempting to make the solution easier to manage, I broke out a lot of functionality from the AppViewController, creating the Theme class (more on that below) and the FileListingViewController, moving the flow control from the view controller to the AppDelegate, where it belongs. The result of this refactoring, was that the AppDelegate now gives you a very nice overview of what the app does, delegating control to various controllers through its application flow. I also broke out the decryption logic out of the PassphraseViewController and into its own DecryptionViewController, reducing the PassphraseViewController to, simply, PassphraseController.

Theming

As I touched on above, I broke out the shared appearance logic in this version out of the MainViewController and into a separate Theme class, coupled with two new MonoTouch.Dialog Elements – ThemedFileElement and ThemedStringElement, both delegating their cell rendering to methods in Theme. This allowed me to get an overview of all theming related code, and helped me decouple the various ViewControllers further (since their Views should match the main view without being dependent on it).

For the full set of commits, see this listing.

I hope you enjoy the new version and that you find it helpful!

 

Personal highlights from Xamarin Evolve

Xamarin Evolve was undoubtedly a hit and I wish I could’ve been there in person to enjoy it all. Doing the next best thing, however, I have managed to chew through quite a bit of the material Xamarin has made available from the conference. Below, is my curated list of must-see sessions.

First things first: The keynote, outlining the various advancements Xamarin have accomplished, is – of course – worth your time. Here, Miguel shows us the new integrated iOS UI designer in Xamarin Studio, tells us about C# 5 support and also drops the F# bomb. Nat continues by showing off Test Cloud. Watch it now ;-)

The other three general (or broad-reaching) sessions – How C# Saved my Marriage …, Multiplatformism: Lessons learned … and Buttons are a Hack were all good sessions too. Scott reminded us in his talk, that we can use C# for everything these days, making us feel good about ourselves. Andrew continued by giving us insights in how they ported their game (and why) to multiple platforms, and what in it took the bulk of their time. Very interesting! Josh then, told us that skeuomorphism is okay, if we take it far enough. Don’t do things half-assed, basically? Judge for yourself – it was a good talk!

Getting the Most from Xamarin Studio contained a lot of nice tips and tricks, teaching me what the quick search actually does (CMD+. on Mac, CTRL+, on Windows), walking through the built-in quick fixes (ALT+Enter), and teaching me how to turn on solution-wide source-code analysis. Awesome!

Intro to Calabash blew my mind! I found they way you are able to completely interact with your compiled app through code (i.e. automation) extremely cool! This is the technology that powers Xamarin’s Test Cloud, by the way.

Another super-interesting talk, was Sharing up to 80% code for iOS, Android and Windows platforms, a retail app case study. Sharing the actual experiences and lessons learned, and taking part of decisions that was made and their outcome, was invaluable! The two guys presenting, also had another talk with an equally long name - Create a uniform login experience with a centralized cloud authentication system. As their previous talk, this one was very interesting. However! I discourage you from listening to them both right after one another, since they are both very rich in information and slightly overlapping, easily bruising your brain. Instead, interleave the talks with something feel-goody, like Scott’s talk about C#. ;-)

Maximizing code-sharing with Xamarin.Mobile was nice to skim-through if you already knew about its existence. If not, lean back and enjoy this one as well.

Designing experiences for the iPad was a little long-winded, but then – I’m not a designer. That said, it was interesting to hear about the design process as opposed to the skewed view that designs come up out of nowhere.

Crafting interactions with Core Animation, also a little long-winded (sense a theme?), but contained some very valuable information about how UIKit works as far as layout, layers and animations work. Does a UIView render it’s content? Does a UILayer accept user input? What’s a PresentationLayer? Find out here.

Fast UI Creation with MonoTouch.Dialog was pure gold. I’m a big fan of MonoTouch.Dialog, and often-times, this is the first thing I show off when introducing a developer to MonoTouch Xamarin.iOS for the first time, due to its simple, declarative, nature.

I have yet to see all sessions, so this list is likely to be updated. Which was your favourite session? Let me know in the comments!

 Scroll to top