grp11 - QtConstruction

  1. Marko Suhonen – 0259290 – LUT
  2. Jukka-Pekka Stranden – 0237911 – LUT

Idea

In construction site there are many tasks/events that are done, and some tasks need to be informed to other workers/people. Idea of QtConstruction is to inform when some events are done and what kind of event is in question. This will keep outsiders out of the site when something potentially dangerous is happening (e.g. crane lifting heavy concrete pieces). Because the application is designed to be used on the site and typing in those conditions can be hard, QtConstruction doesn't require any typing. Calendar events and times are selected by tapping icons and dates in a calendar.

Idea presentation

Presentation

Features

Job Priority Status
Interface1Done
Adding Event1Done
Viewing Events1Done
Removing/Changing Events2Not Done
Maps/Location/GPS2Not Done
Shared data3Not Done

Implementation

Design

The application is divided into two parts: view and model. View part has control and user interface part of the applications while model handles and stores the data. View consists programs controller and UI, Model consists of Event storage class, Event and Event type model. Event type model is handled as QStandardItemModel which allows its usage straight in QListViewWidget and other Qt view widgets. For events a custom storage class called Event is used. Event class holds information about event start time and end time, date, type and location.

MainWindow launches ViewDialog and AddDialog. ViewDialog gets a pointer to EventStorage so that it can access the events.

Tools used

We used NokiaQtSDK for making the application mainly because we couldn't get Maemo to run on our computers and we had limited time. Also because Maemo5 has native Qt support we wanted to try that out. NokiaQtSDK is easy to install and can be downloaded for Linux and Windows. It has IDE, QtDesigner for drawing the UI and tool chains for making Symbian and Maemo packages. However, we found out that it builds Maemo packages with invalid packet structure. We don't know how to fix this.

We also used Subversion version management system and a SVN repository for storing and merging the code. We created accounts in Assembla.com for the codecamp, created a SVN repository there and installed a program called RabbitVCS on Ubuntu which has a Nautilus integration. SVN makes sharing and merging the code easier but in conflict situations it makes a bit of a mess of the code and it requires manual cleaning.

Future improvements

In the future, the system could be modified to support map api. The user could draw the area of the notification on the map and the location would be saved in Event class. Because Event is used through interface MEVent, a new implementation of it wouldn't require many changes. Also, the application could use more event types. That would basically mean just drawing more icons and adding them to the event type model.

Screenshots

Main menu

 Main Menu

Also shows todays events.

Add menu

Add menu

Add menu for adding events. First needs to add event type, after that day and time.

Add Date

Adding date

Can not choose date which is in the past.

Add Time

Adding time

Slides are easy to use for setting up the time…

View menu

View menu

View menu for viewing events and by clicking them can see more information about that day.

Code

The armel debian package might not install on emulator or device. NokiaQtSDK's QtSimulator can be used to run the application. (We don't know why NokiaQtSDK doesn't build a working Maemo install package).

QtConstruction source package

Conclusion

Maemo programming environment is horrible to install and to run. So we ended up with NokiaQtSDK which has ready made Maemo tool chain. We tried both Linux and Windows version of the IDE and it couldn't build a working Maemo application installer packet. Otherwise it offers complete development environment. Nokia's QtMobility libraries should support Maemo and it should be possible to use their APIs in Maemo programs. We wanted to use the map API in our application but we couldn't get it to work and all the tutorials we found were for Qt for Symbian.