GSoC08 Themable Chat Dialogs
From PsiWiki
I am Paweł Wiejacha and this page details my project for Google Summer of Code 2008.
Overview
Abstract (from my application)
Psi is a featureful open-source instant messaging application designed for the Jabber IM network (including Google Talk). It is cross-platform (works on Windows, Linux, and Mac OS X), fast, stable and lightweight. Because of that Psi is widely used. However look and feel of its chat windows is clearly obsolete.
Nowadays some IM clients offer really powerful (and simple at the same time) theming for their chats. A good example of this is Mac OS X application Adium which uses XHTML and CSS based styles. This approach allows users to easily create fully customizable themes.
Qt 4.4 comes with integrated WebKit - the open source web browser engine used by companies such as Apple, Google and Nokia. Psi is written in C++ using the Qt toolkit, therefore it is possible to create modern looking chat dialogs. With WebKit Psi will also have improved support for XHTML-IM [XEP-0071] (exchanging instant messages that contain lightweight text markup) in Psi.
The aim of this project is to create themable (by XHTML and CSS templates) QtWebKit-based chat and groupchat dialogs supporting XHTML-IM and extended presence (e.g. mood, user tune etc.) changes. Additionally, chat dialogs will be themable with the distributed Adium themes, in order to be able to enjoy a wide set of themes out of the box.
How will it look like?
We will be using Adium themes. You can browse them here.
Progress
Iteration 2 (23.06 - 29.06)
* appending ChatEvents (FileTransferChatEvent, StatusChatEvent) * simple theme selection * reading themes from filesystem * simple theme dialog * validation XHTML-IM messages
Iteration 3 (30.06 - 6.07)
Iteration 4 (7.07 - 13.07)
Iteration 5 (14.07 - 20.07)
Iteration 6 (21.07 - 27.07)
Iteration 7 (28.07 - 3.08)
Iteration 8 (4.08 - 10.08)
Iteration 9 (11.08 - 17.08)
Iteration 10 (18.06 - 24.08)
Tasks
Rough sketch.
HTMLChatView - logging chat messages
| Task name | Priority | Status |
|---|---|---|
| Define ChatView and ChatTheme API | 10 | 90% |
| Create ChatTheme | 10 | 90% |
| Create ChatView prototype 1 | 10 | 90% |
| Create ChatView prototype 2 | 10 | 60% |
| Emoticons support | 7 | 0% |
| TrackBar replacement | 5 | 0% |
| Write documentation and examples for ChatView and ChatTheme | 5 | 0% |
| Test cases - only generated HTML | 7 | 0% |
ThemeSelector - selecting chat dialog theme/variation
| Task name | Priority | Status |
|---|---|---|
| Live theme preview | Optional | 0% |
| Different theme per group/user/regexp | Optional | 0% |
| Reading themes from filesystem | Required | 40% |
PlainChatView - logging chat messages without WebKit
| Task name | Priority | Status |
|---|---|---|
| Task 1 | Optional | 0% |
| Another task | Required | 0% |
ChatEdit - composing XHTML-IM messages
| Task name | Priority | Status |
|---|---|---|
| Define XHTML-IM subset we want to use | 10 | 0% |
| Create fixed toolbar | 7 | 0% |
| Make toolbar configurable (Options->Toolbars) | 7 | 0% |
| Text formatting | 10 | 0% |
| Inserting images | 8 | 0% |
MessageValidator - validating incoming messages
| Task name | Priority | Status |
|---|---|---|
| Validating message by walking through its DOM tree | 10 | 30% |
| Test cases | 10 | 0% |
ChatDlg refactorings
| Task name | Priority | Status |
|---|---|---|
| Task 1 | Optional | 0% |
| Another task | Required | 0% |
Group chat dialog refactorings
| Task name | Priority | Status |
|---|---|---|
| Task 1 | Optional | 0% |
| Another task | Required | 0% |
Event logging
| Task name | Priority | Status |
|---|---|---|
| User Mood [xep-107] logging | 10 | 0% |
| User Tune [xep-118] logging | 10 | 0% |
| FileTransfer logging | 10 | 0% |



