Thursday, December 29, 2011

Introducing QMLIrc (yeah, it's a rubbish name...)

Behold. The first screenshot of QMLIrc, my IRC client for Symbian Anna and Belle smartphones. You'll see elements of Windows 7 in the background. This is because it's a screen capture of the program running un the Qt Simulator, as I haven't yet downloaded a screen capture program for my N8.


You'll notice the Belle-based user interface, mostly built on QT Quick Components. So what can it do right now? Well, it can connect to an IRC server, and join one or more channels. It can send output to the server, and receive input, which it can direct to the proper tab. And, thanks to the Communi library, it has pretty colours, too! If fact as it stands it's a usable, if extremely basic IRC client.

Here's the GitHub repository if you want to play...



Sunday, December 04, 2011

Belle will go to the IRC ball!

My previous post requires some explanation

I've been hanging around in the chatrooms on UKChatterbox a lot recently. Mainly using the Java IRC (Internet Relay Chat) client on the website, but occasionally on my Nokia N8. There are a few IRC clients out there for Symbian phones, but all of them so far have one major failing: they can't use the split screen keyboard introduced in Symbian Anna. So you miss what people are saying as you're typing your reply. Therefore I'm writing my own.

I'm using QT Quick, which makes it easy to write code which conforms to the Symbian Belle look and feel. Belle isn't out yet on my N8, but the component set will run in Anna, and by the time it's ready, I may well be running Belle. Much of the heavy lifting - the posting and translation of IRC messages to the server - is being done by the excellent Communi library, written by JP Nurmi et al.

My plan, such as it is (I've never bothered with any Detailed Design Documents or any of the other overheads of software engineering as I work on my own: it's all in my head), is in three stages:

  1. IRCBoilerplate. This is a simple Windows IRC client whose function is to allow me to get to grips with using the Communi library in a relatively comfortable environment. At the time of writing, it is perfectly usable as an IRC, client, if a little rough and ready. But then, it is boilerplate code. The GitHub repo for IRCBoilerplate is here. It's not the latest version, though.  It is. Why? See below...
  2. SessionWrapper. This is two of the classes from IRCBoilerplate placed in a separate QT Library project, so that they can be shared between IRCBoilerplate and QMLIrc (the working name for the Symbian IRC client. Horrible, isn't it?). Their function is to further decouple the UI (written in QTQuick QML) from the Communi-based backend code. I'm planning to limit the interaction between the two to using Qt signals and slots. I haven't set up a repo for this yet. I have, but SessionWrapper as a separate library is defunct. The reason is that it's too difficult to set up multiple static libraries in Qt. As SessionWrapper is two files, it's easier just to put it in the main project. I've had to adapt it for QMLIrc anyway.
  3. QMLIrc. This is the Qt Quick based IRC client for phones running Symbian Anna and later. All I've done so far is prototyped the UI. See above...
So there you have it. When it's finished, I'll probably end up putting it in the Nokia Store. It'll be free, though. I'm doing it for fun, not profit.