Since we're using the Icon View, we have some more options in terms of
user selction and the actions applicable to that. So make the attachment
signals and their handlers all apply to collections of attachments and
use the GAppInfo class for determining which app to open an attachment
with.
* src/client/application/geary-controller.vala: Chase signal changes.
(GearyController::on_attachments_activated): Handle multiple
attachments being activated at once. Use its GAppInfo for launching
each attachment, prompt the user with an GtkAppChooserDialog if the
info is unknown.
* src/client/conversation-viewer/conversation-email.vala Use the new
AttachmentInfo class to manage lists of all displayed and currently
selected attachments and their associated GAppInfo objects. Add actions
for attachment context menu items. Move attachment signals from
ConversationViewer here, make all attachment signals have a collection
of them as their param. Hook up appropriate GtkIconView callbacks to
manage selection, activation, etc. Construct AttachmentInfo instances
when loading attachments and use them in the icon view's model.
* ui/conversation-email.ui: Define needed callbacks for the icon
view. Update its model to accept a GObject for the attachment info
class.
* ui/conversation-message-menu.ui: Fix action name for save attachments
menu item.