Sysnthesise a problem report and use a MainWindowInfoBar for displaying
account service status problems rather than using a custom info bar.
This lets us use the same infrastructure for displaying problem reports
and will enable capturing relevant logs at the time that the error
occurred.
Move the timer from ConversationListStore to MainWindow, ensure that
both the list and the viewer get their dates updated, but only when
the main window is visible.
This breaks out the problem details dialog out into a seperate class so
it can be used for both problem reports and status problems. Pass in any
service errors to the main window when updating account status, show a
Details button on the service status info bar and show the details
dialog when clicked.
This restores normal key handling MainWindow:key_press_event when a
keyboard modifier (Ctrl, Shift, etc) is down, keeping the ordering hack
only for plain key presses, so that we can handle Ctrl+V before
WebKitGTK does, and hence letting us paste plain text default when rich
text is not enabled.
Fixes Bug 730495.
* src/client/components/main-window-info-bar.vala (MainWindowInfoBar):
New class and UI file for displaying an info bar in the main window, as
well as providing a way to show technical informartion if needed.
* src/client/components/main-window.vala (MainWindow): Add a Gtk.Frame
and container to hold inforbar instances. Show it when showing an
infobar, and hide it when there are none. Add show_infobar() method to
provide a cromulent way of adding info bars.
* src/client/application/geary-controller.vala (BaseObject): Rather than
bailing out on an account when an error occurs, display an info bar
instead.
* ui/geary.css: Style the info bar frame to only show a border between
main content and the info bars.
* src/client/components/main-window.vala (MainWindow): Convert
on_key_press_event handler to override Gtk.Window's key_press_event
virtual method. Reimplement that so that single keystroke shortcuts
work, but also so GtkWindow.propagate_key_event only gets called once,
and the WebKit event loop is avoided. See source comments for
details. Also clean up shift up/down handling to not update when any
GtkEntry or ComposerWebView is focused.
* Use GtkTemplate to simplify layout.
* Prefix instance variables with this.
* Extract helper methods for clarity.
Signed-off-by: Niels De Graef <nielsdegraef@gmail.com>