September 10, 2011
At long last (big sigh of relief here by me) QuickConnectFamily 2.1 is finally available for download. It involved a lot of work by many people and has come together well. There are some big changes for both the iOS and Android platforms. These enhancements and changes have been driven by requests from developers like you.
- Another BIG one. In order to make the Control Function code more readable and more easily comprehended for those new to the framework all Control Functions MUST return one of the following three values (see the documentation for more information):
- qc.STACK_CONTINUE – This instructs the framework to execute the next control function in the stack.
- qc.STACK_EXIT – This instructs the framework to terminate all further stack execution.
- qc.WAIT_FOR_DATA – This instructs the framework that a call to database or remote data has been made or a call to device specific behavior such as showing a map, displaying the camera, email editor or other native behaviors.
- Work has been done to improve the asynchronous call stability in the underlying framework. (Thank you to the team at affinityAmp).
- Miscellaneous bug fixes and enhancements.
- Bug fixes
- Expanded database support and fixes
- A major rework of the underlying Android Java code to make it match the design changes in iOS. This is in preparation for QC Plugins and some new features such as ‘window-in-window’ that will be part of the next release as a Plugin. The ‘window-in-window’ code is in there now but not official until it is converted to a plugin and the same behavior is available for iOS.
- Added a hybrid sqlite database example
- Bug fixes
- Removed the native footer code since libraries for scrolling and others such as Sencha, JQTouch, etc. are now of good quality.
- QC Family Hybrid Plugin API and design spec completed. There is an example of how you can add to QC on your own. If you thing these additions could be useful to others you are free to charge for them, or not, host them yourself, notify me and I will add them to the plugin list on the QC plugin site. If you are willing to donate them to the QC community send them to me for review and I will put them into the git repository and list them on the QC plugin site.
- Updated all the examples to use the new return values and the new qc name space.
January 15, 2011
QC 1.6.7 has been uploaded. It includes a complete rewrite of the way your QCAndroid apps are compiled from within xCode. I think you will find compiling much better. It also includes a native Android template that allows you to build QC applications in Androids’ native Java along side the Objective-C native template for iOS apps.
Just like in QC Native for iOS apps created using this QC Native for Android template ‘pre-threads’ your application for you. This means that any code that you write that is not directly related to updating the view is run in helper threads. Any code you write that updates the view will run in the main view thread just like the native QC iOS apps.
Build your Control stacks in either language and your Validation and Business Control Objects, including db and server/service access, will be run on background, helper threads and then when the View Control Objects are executed they will be run in the main-view thread.
This means that your applications’ user experience is snappier since the main-view thread is only blocked when the view is being updated.
I will be covering the basic structure of Android Native QC apps and how to write them at the Android Developer Conference in March.
I will be covering the basic structure of iOS Native and Hybrid QC apps at the iPhone Developers Conference in April.
More tutorials, when I get them done, will be available on the wiki.
I have also uploaded QuickConnectFamilyPC_1.6.7 for those of you who want to develop using Eclipse rather than Xcode. It includes a few examples of hybrid apps and instructions for how to use QC in Eclipse.
I’d love to see you at the developer conferences and get feedback in addition to what I receive via the Google group and this blog.
December 31, 2010
December 23, 2010
I have just posted the 1.6.4 version of QC on SourceForge. It includes some defect fixes and some minor additions, and a few big changes. QC 1.6.4 requires the iOS 4.2 SDK.
The big changes are regarding the native application templates. You can now use the same design to create Objective-C iPhone, iPad, and Universal iPhone/iPad apps that you have been using to create your hybrid applications.
These native iOS apps come ‘pre-threaded’. Every time you call handleRequest your command stack is executed on a worker thread. Any of your ViewControlObjects that you create for your control Stack are executed in the main thread since it is the only one that is allowed to update the User Interface. All other behavior is done on a worker thread and you don’t have to worry about how to set it up, make it go, or make it stop.
Just as with the hybrid apps you’ve been creating with QC all of your async calls to HTTP servers, portals, etc. are linearized for you. You never need to write another callback function!
In addition to making your remote HTTP calls easier all of the templates for native QuickConnect applications also include support for both direct SQLite access and CoreData.
With a little time working in Interface Builder and putting together some CoreData objects your app is up and running.
Examples are already in the download for all of these native iOS templates. Check them out and see how easy native iOS apps can be.
The next release will have native multi-threaded Android applications as well.
One other change is that the PHP template has been updated. Take a look at the example in the download.
October 4, 2010
Since I regularly state that mobile devices such as the iPhone and iPad are the devices we will all be using in the future I decided to conduct a reasonability experiment. I decided that I would leave my laptop home while I presented at the iPhone Developers Conference. I took only my iPhone and iPad. This posting is a description of my experience.
What worked very well.
- Reading books on the plane and airport. I loved this. It was easy to read and very enjoyable. The only drawback was that I had to shut off the device during takeoff and landing.
- Battery life. There was plenty of battery to do everything I needed.
- Movie watching. Fantastic.
- Browsing during presentations. This worked very well. I was easily able to stay current with the presentation information and browse for more.
- Data entry. AMAZING. I have always hated typing on my laptop on a plane. There simply is not enough space. The iPad could easily sit on my legs and lean against the seat in front of me. This allowed me to use both hands to touch-type as I wrote documents. This was a complete and wonderful surprise for me. Gone are my cramps as I try to hold my arms in a position to type on my laptop on a plane. Again, AMAZING (capitalization intended).
What worked OK
- Presentations. I was able to connect up my device and show presentations without any technical issues. The software worked well with one reservation. I needed to be able to zoom-in on some code in slides but was unable to since pinch isn’t supported. Creating the presentations was a snap.
- Note taking during presentations. If you are going to do this you will want to be able to stand up the device on the table and use a bluetooth keyboard.
What didn’t work
- The one thing that I missed the most was the ability to modify, compile, and run my example code. There are changes that I would have liked to make at the last minute but could not since these devices don’t support the development platform. I understand why they don’t and shouldn’t. This was the only thing I missed from my laptop.
So the question comes down to this. Will I do this again? Can I leave my laptop home and go mobile? Emphatically yes. I will be doing this again. Often.
September 14, 2010
Recently I got a ping from a QuickConnect user regarding connecting to couchDB. For those that don’t know couchDB is a document storage database. It is written in Erlang
and, if I remember correctly, uses the Mnesia a database written in Erlang. couchDB also uses the HTTP protocol and JSON for communication.
As I went back and spent a few minutes with couchDB again I realized that the Objective-C version of the QCFamily Enterprise Data Sync feature that I will be presenting at the iPhoneDevCon on the 27th – 30th of September, 2010 needs only minor modifications to work with couchDB. I hadn’t thought of this before and was pleased that with these minor modifications couchDB could be added to Oracle, MySQL, and other relational databases that are supported.
Too much fun!
September 3, 2010
I have found that there are quite a few postings out there about how to use custom fonts in your application. It is unfortunate that I didn’t find a single one that actually helped me use a custom font. Most of them echoed each other and gave misleading or erroneous advice. Because of this I am going to post how to actually use a custom font in your app.
First, you must be aware that custom fonts are added on a per-application basis. You can not add a font to your iOS device and have it be available for all of your applications.
Second, no code needs to be added in order for you to use the custom font or fonts in a QuickConnectFamily hybrid iOS application or any other application that uses the UIWebView.
Third, no @font-face CSS call is needed in your application.
Fourth, this example will show two custom fonts being added and used. The first is the Freshman font, the second is the PF Handbook Pro Normal font. Both of these are available as ttf files.
OK. So here is how we do it.
- Drag your ttf files into the Resources group of your project selecting the copy checkbox.
- Open your applications’ info.plist found in the Resources group.
- Control-click on any of the properties and select New
- Select ‘fonts provided by application’
- Expand the resource just created by clicking the triangle button on the left of the description
- Enter Freshman.ttf in the Value column (You would put the name of your font file here)
- Control-click the Freshman.ttf row and select Add Row
- Enter PFHandbookProRegular.ttf in the Value column(You would put the name of another font you want to use here)
- Use the font in your CSS or directly in an inline style. Both now work.
Hopefully this will clear things up regarding using custom fonts.
August 22, 2010
I am uploading to sourceForge the latest version of QuickConnect right now.
This new version of QC is a maintenance version and has two fixes in it.
The first is a fix to the display of iAdds. Previously the iAdd seemed to disappear but was still taking up screen space and masking the area it was covering.
The second fix regarded a crash when using native databases with null values in fields.
Both of these defects have been fixed.
July 30, 2010
A feature to build on top of this download would be displaying office docs that you download. Would you like that feature?
July 28, 2010
There have been several Native UI elements made available in the recent releases thanks to Mike A and he has submitted one more that will be in the next release. iAds. You can now show and hide them in an iPhone app. As soon as iOS 4 ships for the iPad it will be available there as well.
I’ve been busy working on getting the Android version debugged. The database behavior seems to have changed since I put the Xcode template together. It is now working and ready. Both the enterprise data sync and the standard database access code.
I’m now working on file download and hope to have it done in the next day or so. The way you will use it is ‘download(“http://someURL.com”,”someFileNameYouWantItTohave”)
It will save the downloaded file using the name you provided. It will be in your applications data directory. When the download is complete you will be notified and sent a complete path to the file. You could then store this file path in a database, use it right then, both, or neither.
It looks like this will ship July 29th. Stay tuned. I’ll post here and also tweet when it is available.