Le centre de contenus - trucs et astuces¶
Page de partage du centre de contenus¶
Sur Ubuntu Touch, les applications sont confinées. Une façon de partager des fichiers entre elles est de passer par le centre de contenus, une partie du système qui s’occupe de l’import, de l’export et du partage de fichiers.
Différentes manières de partager le contenu¶
As we can see in the Content Hub documentation, there are several ways of handling the file to be shared:
ContentHandler.Source(L’application sélectionnée va être la source du fichier à importer)ContentHandler.Destination(L’application sélectionnée sera la destination du fichier exporté)ContentHandler.Share(L’application sélectionnée va être la destination pour le fichier exporté, qui va ensuite être partagé)
Import¶
Créateur d’applications Web dans l’OpenStore¶
En regardant le code du créateur d’applications Web, nous trouvons le code pour importer une image à utiliser en tant qu’icône. Un appui sur le champ ouvre le centre de contenus qui nous laisse choisir à partir d’où importer l’image (voir le code source du créateur d’applications Web)
ContentPeerPicker {
anchors { fill: parent; topMargin: picker.header.height }
visible: parent.visible
showTitle: false
contentType: picker.contentType //ContentType.Pictures
handler: picker.handler //ContentHandler.Source
ContentPeerPicker est l’élément qui affiche les applications.
var importPage = mainPageStack.push(Qt.resolvedUrl("ImportPage.qml"),{"contentType": ContentType.Pictures, "handler": ContentHandler.Source})
contentType` est passé dans Main.qml comme ContentType.Pictures. Ainsi, nous ne verrons que les applications à partir desquelles nous ne pouvons importer que des images. handler est passé dans la même ligne que ContentHandler.Source. Comme nous voulons importer une image de l’application sélectionnée dans le Hub de Contenu.
Export¶
Gelek dans l’OpenStore¶
Dans Gelek, nous allons terminer avec quelques parties sauvegardées que nous voulons enregistrer sur notre appareil ou partager avec nous-même (dans Telegram pour les enregistrer ensuite sur notre ordinateur).
L’appui sur l’icône de téléchargement ouvrira le centre de contenus pour enregistrer le fichier de jeu (qui est en réalité un export).
Le fichier de jeu est un fichier de type glksave. Nous allons dire au centre de contenus que nous envoyons un fichier de type All (Tout) (voir le code de la page d’installation).
ContentPeerPicker {
anchors { fill: parent; topMargin: picker.header.height }
visible: parent.visible
showTitle: false
contentType: ContentType.All
handler: ContentHandler.Destination
onPeerSelected: {
contentType est ContentType.All, nous verrons donc uniquement les applications qui sont capables de recevoir des types de fichiers non marqués. handler est ContentHandler.Destination, l’application sélectionnée devrait donc stocker la partie enregistrée.
Nous enregistrerons la partie sauvegardée dans le dossier de notre choix en appuyant sur le gestionnaire de fichiers.
Attendez un instant : pourquoi des applications différentes ?¶
Centre de contenus : exporter ou partager¶
Chaque développeur peut décider des règles que chaque application suivra en relation avec le Hub de Contenu. Pourquoi l’OpenStore est-il affiché comme destination d’une exportation ?
Vérifions son manifest.json
"hooks": {
"openstore": {
"apparmor": "openstore/openstore.apparmor",
"desktop": "openstore/openstore.desktop",
"urls": "openstore/openstore.url-dispatcher",
"content-hub": "openstore/openstore-contenthub.json"
}
},
Le code qui précède précise que les hooks pour l’application nommée "openstore" relativement au "content-hub" doivent suivre les règles définies dans openstore-contenthub.json
{
"destination": [
"all"
]
}
Cela signifie, l’Openstore sera la destination de tout les ContentTypes.
What about uMatriks? Let’s see its content-hub.json
{
"destination": [
"pictures",
"documents",
"videos",
"contacts",
"music"
],
"share": [
"pictures",
"documents",
"videos",
"contacts",
"music"
],
"source": [
"pictures",
"documents",
"videos",
"contacts",
"music"
]
}
So, with this example, uMatriks will be able to be the destination, source and share app for all kinds of ContentType.
What about the other hooks in the manifest.json? That is discussed in the next guide.