El hub de contingut - consells i trucs

../../_images/01.png

Centre de continguts

A Ubuntu Touch les aplicacions estan confinades. La manera de compartir fitxers entre ells és a través del Content Hub, una part del sistema que s’encarrega de la importació, exportació i compartició de fitxers.

Diferents maneres de compartir el contingut

Com podem veure a la documentació del Content Hub hi ha diverses maneres de gestionar el fitxer a compartir:

  • ContentHandler.Source (L’aplicació seleccionada proporcionarà un fitxer a importar)

  • ContentHandler.Destination (L’aplicació seleccionada serà la destinació del fitxer exportat)

  • ContentHandler.Share (L’aplicació seleccionada serà la destinació del fitxer exportat, que després es compartirà externament)

../../_images/12.svg

Importació

../../_images/02.png

Creador de Webapp a l’OpenStore

Mirant el codi de Webapp Creator, trobarem el codi per importar una imatge que s’utilitzarà com a icona. Anar al titular del lloc obrirà el Content Hub que ens permetrà triar d’on importar la imatge (seeveure el codi font del creador de Webapp <https://gitlab.com/cibersheep/webapp-creator/blob/master/webapp-creator/app/ImportPage.qml#L38> the)

ContentPeerPicker {
    anchors { fill: parent; topMargin: picker.header.height }
    visible: parent.visible
    showTitle: false
    contentType: picker.contentType //ContentType.Pictures
    handler: picker.handler //ContentHandler.Source

ContentPeerPicker és l’element que mostra les aplicacions.

var importPage = mainPageStack.push(Qt.resolvedUrl("ImportPage.qml"),{"contentType": ContentType.Pictures, "handler": ContentHandler.Source})

contentType es passa a Main.qml com a ContentType.Pictures. Per tant, només veurem aplicacions des de les quals només podem importar imatges. handler es passa en la mateixa línia que ContentHandler.Source. Com volem importar una imatge de l’app seleccionada al Content Hub.

Exportació

../../_images/04.png

Gelek a l’OpenStore

A Gelek, acabarem amb alguns jocs guardats que volem guardar al nostre dispositiu o compartir amb nosaltres mateixos (a Telegram i després guardar-los al nostre ordinador).

../../_images/05.png

A la icona de descàrrega obtindrem un Content Hub per a savar el fitxer de joc (que en realitat és una exportació).

El fitxer de joc és un fitxer del tipus glksave. Li direm a Content Hub que estem enviant un fitxer de tipus All (vegeu el codi de pàgina d’instal·lació).

ContentPeerPicker {
    anchors { fill: parent; topMargin: picker.header.height }
    visible: parent.visible
    showTitle: false
    contentType: ContentType.All
    handler: ContentHandler.Destination

    onPeerSelected: {

contentType és ContentType.All, així que només veurem aplicacions que poden rebre tipus de fitxers sense marcar. handler és ContentHandler.Destination, de manera que l’aplicació seleccionada hauria d’emmagatzemar el joc desat.

En fer clic al gestor de fitxers, desarem la partida desada a la carpeta que escollim.

Compartició

De la mateixa manera, prémer la icona de compartició ens permetrà enviar el joc desat a través de Telegram a nosaltres mateixos (seeveure el codi font de la pàgina d’importació del creador de Webapp <https://gitlab.com/cibersheep/webapp-creator/blob/master/webapp-creator/app/ImportPage.qml#L38>).). Compartir és similar a exportar, excepte que l’aplicació de destinació pot compartir el contingut externament (per exemple, a través de Telegram o missatge de text).

ContentPeerPicker {
    anchors { fill: parent; topMargin: picker.header.height }
    visible: parent.visible
    showTitle: false
    contentType: picker.contentType //ContentType.Pictures
    handler: picker.handler //ContentHandler.Source

    onPeerSelected: {

L’única diferència entre aquest codi i l’anterior és que handler és ContentHandler.Share.

Espera un minut. Per què les diferents apps?

../../_images/08.png

Hub de contingut: Exportació vs Compartir

Cada desenvolupador pot decidir les regles que seguiria cada aplicació en relació amb el Content Hub. Per què l’OpenStore es mostra com la destinació d’una exportació?

Anem a comprovar el seu manifest.json

"hooks": {
    "openstore": {
        "apparmor": "openstore/openstore.apparmor",
        "desktop": "openstore/openstore.desktop",
        "urls": "openstore/openstore.url-dispatcher",
        "content-hub": "openstore/openstore-contenthub.json"
    }
},

El codi anterior defineix que els ganxos de l’aplicació anomenada "openstore" en relació amb el "content-hub" han de seguir les regles definides a openstore-contenthub.json

{
    "destination": [
        "all"
    ]
}

Això vol dir que l’OpenStore serà la destinació de tots els ContentTypes.

Què hi ha dels uMatriks? Vegem el seu content-hub.json

{
    "destination": [
        "pictures",
        "documents",
        "videos",
        "contacts",
        "music"
    ],
    "share": [
        "pictures",
        "documents",
        "videos",
        "contacts",
        "music"
    ],
    "source": [
        "pictures",
        "documents",
        "videos",
        "contacts",
        "music"
    ]
}

Així, amb aquest exemple, uMatriks podrà ser la destinació, font i compartir app per a tot tipus de ContentType. Què passa amb els altres ganxos del manifest.json? Això es discuteix en la guia següent.