KTp/Tasks/TextUIQML
Declarative TextUI
Rationale
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 :)
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 |
---|---|---|---|
TODO | Split message handling out of ChatWidget | 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]> |
TODO | Fix autoscroll to bottom | Active/Plasmoid | <[email protected]>
|
TODO | Add log loading to MessagesModel | KCI | <[email protected]> |
TODO | Expose ChannelContactModel in Conversation | KCI | <[email protected]> |
TODO | Remove TargetContact - put as title + icon in Conversation | KCI | <[email protected]>
|
Plugins are another problem. We can deal with that afterwards
- Split text-ui away from AdiumTheme*
- This will allow us to drop this thing out, and a new one in
- Once that is done, should allow fairly easy porting in a branch without conflicts
- Work on the themes is going on with fake models at LINK HERE
- I personally want two themes, one like Renkoo and a group theme that matches
visual change won't be too large. (Though /maybe/ it's best to focus on just one thing)
- I'm not sure if we want to drop AdiumTheme support or not.
- MessagesModel needs better delivery report handling
- Make targetContact not suck. Take a ChannelPtr and it should handle group chat titles too
- will have something like "QString channelName()" "QPixmap channelIcon"
- MessagesModel needs logger integration at least to load the last n messages like text-ui does
QML issues remaining
- Desktop Scrollbars (see Muon Discover)
- We need "scroll to bottom" on new message
- Find (highlight and scroll to the right place)
- Text copying (not easy)
- Make arrow keys cause scroll
- Links working
- Emoticons to text
- Plugins (I want the message to have some sort of map of "what QML item to insert, and properties to pass to it"
Custom items could then be included.
- Warnings in "take2" theme
- Sort out notification handling