Centro de contenido - consejos y trucos#
Las aplicaciones están confinadas en Ubuntu Touch. La manera de compartir archivos entre ellas es a través del centro de contenido, una parte del sistema que se encarga de importar, exportar y compartir archivos.
Diferentes maneras de compartir contenido#
Como podemos ver en la documentación del centro de contenido, existen varias formas de manejar el archivo que se va a compartir:
ContentHandler.Source
(The selected app will provide a file to be imported)ContentHandler.Destination
(The selected app will be the destination for the exported file)ContentHandler.Share
(The selected app will be the destination for the exported file, which will then be shared externally)
Importar#
Mirando en el código de Webapp Creator, encontraremos el código para importar una imagen para usarla como icono. Pulsando en el marcador de posición se abrirá el centro de contenido que nos permitirá elegir desde dónde importar la imagen (ver el código fuente de Webapp Creator)
ContentPeerPicker {
anchors { fill: parent; topMargin: picker.header.height }
visible: parent.visible
showTitle: false
contentType: picker.contentType //ContentType.Pictures
handler: picker.handler //ContentHandler.Source
ContentPeerPicker
es el elemento que muestra las aplicaciones.
var importPage = mainPageStack.push(Qt.resolvedUrl("ImportPage.qml"),{"contentType": ContentType.Pictures, "handler": ContentHandler.Source})
contentType
se pasa en Main.qml como ContentType.Pictures. Así, solo veremos aplicaciones desde las que solo podemos importar imágenes. handler
se pasa en la misma línea como ContentHandler.Source. Ya que queremos importar una imagen desde la aplicación seleccionada en el centro de contenido.
Exportar#
En Gelek, vamos a terminar con algunos juegos salvados que queremos guardar en nuestro dispositivo o compartir con nosotros mismos (en Telegram y después guardarlos en nuestro ordenador).
Pulsando en el icono de descarga obtendremos un gestor de contenido para guardar el archivo del juego (que en realidad es una exportación).
El archivo de juego es un archivo del tipo glksave
. Diremos al centro de contenido que estamos enviando un archivo del tipo All
(ver el código de la página de instalación).
ContentPeerPicker {
anchors { fill: parent; topMargin: picker.header.height }
visible: parent.visible
showTitle: false
contentType: ContentType.All
handler: ContentHandler.Destination
onPeerSelected: {
contentType
es ContentType.All
, así que solo veremos aplicaciones que pueden recibir tipos de archivos sin marcar. handler
es ContentHandler.Destination
, así que la aplicación seleccionada debería almacenar el juego guardado.
Pulsando en el gestor de archivos guardaremos los juegos guardados en la carpeta que elijamos.
Espera un momento. ¿Por qué aplicaciones diferentes?#
Cada desarrollador puede decidir las normas que cada aplicación seguirá en relación con el centro de contenido. ¿Por qué aparece OpenStore como el destino de una exportación?
Comprobemos su manifest.json
"hooks": {
"openstore": {
"apparmor": "openstore/openstore.apparmor",
"desktop": "openstore/openstore.desktop",
"urls": "openstore/openstore.url-dispatcher",
"content-hub": "openstore/openstore-contenthub.json"
}
},
El código anterior define que los ganchos para la aplicación llamada «openstore»
en relación al «content-hub»
debería de seguir las reglas definidas en openstore-contenthub.json
{
"destination": [
"all"
]
}
Esto significa que OpenStore será el destino para todos los ContentTypes
.
¿Qué ocurre con uMatriks? Veamos su content-hub.json
{
"destination": [
"pictures",
"documents",
"videos",
"contacts",
"music"
],
"share": [
"pictures",
"documents",
"videos",
"contacts",
"music"
],
"source": [
"pictures",
"documents",
"videos",
"contacts",
"music"
]
}
Así, con este ejemplo, uMatriks podrá ser el destino, origen y aplicación para compartir para toda clase de ContentType
. ¿Qué ocurre con los otros ganchos en el manifest.json
? Eso se analiza en la siguiente guía.