The Loader is separate because the ContentPickerDialog and gets destroyed when the dialog is closed, keeping it separate allows us to avoid having to requery the content-hub for peers every time the dialog is displayed (which is less of an issue now the dbus speed problems are resolved, but could become important again when there are a lot of peers).
(The ContentPeerPicker component will create a model itself when a custom model isn't provided, so most apps don't need to worry about this sort of thing).
The Loader is separate because the ContentPickerDialog and gets destroyed when the dialog is closed, keeping it separate allows us to avoid having to requery the content-hub for peers every time the dialog is displayed (which is less of an issue now the dbus speed problems are resolved, but could become important again when there are a lot of peers).
(The ContentPeerPicker component will create a model itself when a custom model isn't provided, so most apps don't need to worry about this sort of thing).