Now that I’ve got the touchscreen hardware working properly, I’ll be using some of my time off over the Christmas break to start developing the User Interface for the Car PC project, which I’ve revived in a fit of motivation.

For this project, I’m going to be using Trolltech’s Qt library to handle everything to do with the user interface and media playback. I’ve chosen this platform as it’s fairly lightweight and fast, which are good choices for an embedded project like this.

But the user interface is what is going to make or break this project, I need something simple and intuitive, with minimal clutter. I’ve decided that I’m going to have a single main ‘status’ screen, which will have a number of application ‘launchers’ which will throw you into a specific tool.

I’m not good with design, so I decided to have a think about what touchscreen interfaces have this kind of layout and would work well. While I was thinking about this I got a text message on my iPhone, and knew I’d be going straight to hell.

… and whilst I haven’t decided what widgets/gears/etc will be on the main status page, I’ve blatently ripped a very famous interface. I give you the main screen of my CarPC:


Yeah I know, but I like it so deal with it. I had a very brief attempt at designing some user interfaces for the maps/music applications (see below), to get a feel for how I’d be using the screen space.

image image

Whilst cluttered, I’m trying to keep most of the touch interface buttons in the same horizontal strip as the main menu. Also, the position of the ‘return to main menu’ button at the far right of this strip needs to be maintained. Beyond that, I really do want to keep things conforming to the Apple iPhone User Interface Guidelines document - however given the application I’ll be relying on high contrast graphics where I can.

So with any luck, doing the user interfaces consistantly should be a case of figuring out what icons I need and finding a consistant set to keep the theming constant.

In either case, I hope to have a very basic user interface framework coded up by the end of the break.