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
- Split text-ui away from AdiumTheme*
- Move all message handling away from ChatWidget, along with any remaining "theme" things into AdiumMessagesView (which has some sort of setTextChannel method)
- 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
- 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