Break out ListBox used to display conversations into standalone widget.
The conversation viewer's ListBox is sufficiently complex to warrant its own widget. Use empty placeholders for the list per the HIG, and correctly fix mamagement of empty folder vs no conversations selected this time. * src/client/application/geary-controller.vala (GearyController): Directly manage secondary parts of the conversation viewer, since the controller since it has a better and more timely idea of when a conversation change is due to folder loading status or from the user selecting conversations, and so the viwer doesn't need to hook back into the controller. Remove the now-unused conversations_selected signal and its callers. * src/client/conversation-viewer/conversation-listbox.vala: New widget for displaying the list of emails for a conversation. Moved relevant code from ConversationViewer here. Made adding emails async to get better UI responsiveness. Don't implement anything to handle conversation changes or emptying the list. * src/client/conversation-viewer/conversation-viewer.vala: Replace user messages - empty folder/search & no/multiple messages selected with new EmptyPlaceholder. Remove a lot of the state manage code needed when managing the email listbox. Add a new ConversationListBox for every new conversation and just throw away. * src/client/conversation-list/conversation-list-view.vala (ConversationListView): Clean up firing the conversations_selected signal - don't actually emit it when the model is clearing, and don't bother delaying the check either. * src/client/components/empty-placeholder.vala: New widget for displaying empty list and grid placeholders per the HIG. * src/client/conversation-viewer/conversation-email.vala (ConversationEmail): Make manually read a property, since it effectively is one. * src/CMakeLists.txt: Include new source files. * po/POTFILES.in: Include new source and UI files, and some missing ones. * ui/CMakeLists.txt: Include new UI files. * ui/conversation-viewer.ui: Replace user message and splash page with placeholders for the new empty placeholders(!). * ui/empty-placeholder.ui: UI def for new widget class. * ui/geary.css: Chase widget name/class changes, style new empty placeholder UI.
Showing with 1261 additions and 1081 deletions
This diff is collapsed.
This diff is collapsed.