From KDE Community Wiki
< KTp‎ | Tasks

Declarative TextUI


In order to modernise we need more control.

This means doing our own thing with themes so we can change them. QML in many ways is a good choice, messages are like a list model.

We will get

  • Delivery Reports inline
  • Error messages inline
  • Better, richer plugins
  • Seperation between data + logic + view
  • Typing indicators inline
  • Contact status inline + mobile icon
  • History loaded on demand
  • Better load types (Webkit is slow, and we need avatars etc. before we can do anything)
  • User selected fonts for better desktop integration
  • Chat plasmoid will benefit from this too
  • Smoother loading/scrolling on images loading.. maybe :)


Demo is available here


It looks like this: [[1]]

Action Plan

  • Plan is to kill the webkit parts
  • Replace that part with a QDeclarativeView
  • It will NOT be merged if there are regressions
  • The group chat participants list will remain the same, toolbars will remain the same, typing area will remain the same. I do _NOT_ want to change those.
  • Themes will have Conversation* object exposed as rootContextProperty. I don't think it makes any sense to use ConversationsModel
  • It needs to look like part of a desktop app, and not part of something Plasma.

Work that needs doing

Status Action Where Developer
IN PROGRESS Split current message handling out of ChatWidget into AdiumThemeView subclass/container that can be swapped out textUI <[email protected]>
TODO Figure out how to handle notifications. I've copied code to MessageView, which won't be in the QML code. We can't move it to k-c-i because it needs knowledge of the widget to activate. textUI <[email protected]>
TODO Figure out how to do Copying text QML Demo <[email protected]>
TODO Figure out how to do searching + scroll QML Demo <[email protected]>
DONE Make a test-case for fixing the scrolling bug QML Demo <[email protected]>
TODO Fix autoscroll to bottom QML Demo <[email protected]>

DONE Add log loading to MessagesModel KCI <[email protected]>
DONE Handle MessageDeliveryReports in MessagesModel. Ideally update existing sent message with a property. KCI <[email protected]>
DONE Remove TargetContact - put as title + avatar + icon in Conversation. Be group chat compliant KCI <[email protected]>

Plugins are another problem. We can deal with that afterwards. Dave has a plan in his brain.

  • I'm not sure if we want to drop AdiumTheme support or not.