DEVELOPERS BLOG

SystemDialog for WebWorks with Signals and Slots

OPEN SOURCE / 05.05.15 / timwin1

main pic

This is the final follow-up post from the UCOSP program this past fall. In the previous posts, we talked about the work we did on the new AudioMetaData plugin, updates to some existing plugins, and further work on PhoneGap plugins. The next plugin we worked on was another first for the UCOSP program, being the first time the students created a plugin that used Qt Signals and Slots. Yifan, from the University of Waterloo, deserves the credit for figuring out how to take the powerful QtBridge plugin and make it work for the project. Yifan created the System Dialog plugin, which can display a global dialog outside the application. In the following term, which has just wrapped up, other students used Yifan’s work to create even more plugins using Qt Signals and Slots. Here’s her account of the term:

I Participated in the BB10 PhoneGap team and was working on porting native plugins for BlackBerry10. I had an enjoyable and rewarding time working on the project, and experienced real-world software engineering practices and open source collaboration.

One thing I really appreciate about the BB10 PhoneGap project is its tasks. It has a list of independent tasks, and each one requests to build a complete plugin project of a useful feature, for example, zip file extraction and compression, barcode scanner, or system dialog. We had a chance to select one that interested us most, and would deal with the whole project, including configuration, source code, build, documentation and tests.

It took my some time to get familiar with the whole system including the Cordova frameworks, the plugin interface, the JavaScript implementation, the native C++ code, and how everything is connected. Fortunately, everything was well-documented, and Tim, our mentor, was extremely helpful and very experienced with BB10 plugins. By the end of the code sprint, I had finished the configuration, made the test app run, and got some idea about the remaining works. I felt strongly that this project was a great opportunity to apply my knowledge and skills learned in class to real life.

My chosen task was to build the system dialog plugin, which allows users to prompt global dialogs with buttons from their applications. Thanks to the handy templates and detailed documents, the starting steps were quite easy, while the rest of the work was a little bit challenging but also interesting.

When I was working on this plugin, I was introduced to the Qt library and its signals & slots mechanism for object communication. I found that to be extremely useful and planned to import that library to my personal project. Moreover, I did learn a lot about fundamental aspects of projects building, such as project structure, configuration, Makefiles, and documentation.

Help is always available. We had weekly team meeting to report our process and ask questions. Tim was also available and helpful during the rest of the time. I often received timely feedback and really useful suggestions.

At the final words I can say that working on the BB10 PhoneGap plugins and participating in UCOSP was a big step for me. Not just for the fact that I developed practical skills and got a deeper understanding of real-world projects; I also gained open source experience and made contributions to the community. I certainly enjoy working in the team with these awesome people, and would strongly recommend computer science students who wish to get involved and gain open source experience to apply for UCSOP and contribute!

That’s the last post to get us caught up on the previous UCOSP term contributions. In my next posts I’ll show what the most recent term has done, starting with using PouchDB to connect to a Couchbase server. If you’re interested in following along with the student project, watch #bbucosp on Twitter.  All of the code will be going into the public BlackBerry repositories on GitHub. If you want to get involved yourself, contact me to get started: @timothywindsor on Twitter, https://github.com/timwindsor on GitHub.

 

About timwin1