Dynamics Mobile. Personalización del SplashScreen

Las herramientas de desarrollo de Dynamics Mobile nos ofrecen un buen conjunto de herramientas para poder realizar nuestros desarrollos móviles, entre de estas herramientas se nos ofrece la posibilidad de personalizar nuestra aplicación, en este capítulo veremos cómo personalizar el Splashscreen, como adaptar sus textos y como cambiar la imagen predefinida ya incluida.


Para aquellos que aún no hayáis creado una aplicación con Dynamics Mobile. Al iniciar cualquier aplicación desarrollada con Dynamics Mobile, lo primero en ejecutarse, la aplicación RolePad, muestra una pantalla de carga, el Splashsceen. Esta pantalla por defecto nos muestra el estado de carga de nuestra aplicación.


En el Splashscreen podemos personalizar los textos de carga e incluso la imagen mostrada durante la carga.



Ejemplo SplashScreen
 

Personalizando el Splashscreen


Partimos de una aplicación Dynamics Mobile cualquiera, la abrimos en nuestro Visual Studio y abrimos el archivo app.config (todo lo haremos desde este archivo)


Tan solo hemos de agregar lo siguiente, en la sección de configuraciones, agregamos una nueva sección llamada splashScreen (ver Sección código xml 1 en negrita), esta parte se encuentra al principio del archivo.


[Sección código xml 1] Archivo app.config


<configSections>
  <section name=«splashScreen» 
                 type=«Microsoft.Dynamics.Mobile.Framework.RolePad.SplashScreen.SplashScreenSection, 
                           RolePad» />
</configSections>


A continuación agregamos la definición de dicha sección. Esta parte la agregamos tras el elemento <application>, un nuevo nodo llamado Splashscreen como podéis ver en la Sección de código xml 2.


[Sección código xml 2] Archivo app.config


<!– Splash screen–>
  <splashScreen background=«MobileNugSplash.jpg«>
    <labels>
      <add key=«Label_ApplyingUpdate« text=«Instalando actualizaciones«/>
      <add key=«Label_Initializing« text=«Cargando, epere por favor…«/>
      <add key=«Label_Rollingbackupdates« text=«Desaciendo cambios«/>
      <add key=«Label_Startingapplication« text=«Cargando…«/>
      <add key=«Label_Startingservices« text=«Configurando servicios…«/>
      <add key=«Label_Startingshell« text=«Cargando el shell…«/>
    </labels>
  </splashScreen>

Los parámetros a configurar son los siguientes background, en este atributo podemos especificar el nombre de un archive de imagen válido (jpg, png, bmp) que se encuentre en el directorio de nuestra aplicación.


Para agregarlo podemos incluirlo como contenido dentro del proyecto RolePad y asegurarnos de que lo incluimos en el cab de instalación para que se copie en la carpeta de nuestra aplicación.


En nuestro ejemplo hemos incluido un archivo MobileNugSplash.jpg (Figura1) personalizado con el logo de la comunidad de MobileNug


 


EjemploSplashScreen


Figura 1


 


El tamaño de la imagen es importante ya que debemos tener en cuenta el factor de forma en que se mostrará nuestra aplicación de creando una imagen con el tamaño de 320×268 nos aseguramos de que nuestra imagen ocupará toda la pantalla ya mostremos la aplicación en horizontal o en vertical.


Como podéis ver en la Figura 2 hemos incluido la imagen como contenido y la hemos marcado para que se copie cuando hagamos el despliegue.


 


Explorador de soluciones


Figura 2


También podemos agregar los textos de información de carga de nuestra aplicación y personalizarlos para el idioma que corresponda. Esto se hace agregando un elemento contenedor de labels en el ejemplo de [Sección de código xml 1] podéis verlo los textos aparecen en la parte inferior de la pantalla y son los siguientes.


Label_ApplyingUpdate: Texto mostrado mientras se instalan actualizaciones
Label_Initializing:  Texto mostrado al inicializar la aplicación
Label_Rollingbackupdates: Texto mostrado al deshcer cambios
Label_Startingapplication: Texto mostrado al cargar la aplicación
Label_Startingservices: Texto mostrado al configurar los servicios
Label_Startingshell: Texto mostrado mientras se carga el shell


Como habéis visto esta personalización es muy sencilla pero con un resultado vistoso, ya que es una buena forma de diferenciar nuestra aplicación.


En próximas entregas os ire iremos comentando nuevas pesonalizaciones, aunque aquí va otro pequeño apunte.


Si deseamos cambiar el nombre mostrado en la cabecera de nuestros formularios es tan sencillo como modificar la etiqueta <application> dentro del archivo app.config


<application text=»MobileNUG demo» validation=»false» />


Lo mostrado en el atributo text será el nombre mostrado en la cabecera de nuestros formularios.


Aquí os dejo el PDF con el tutorial y la solución (codigo fuente) con el ejemplo.


Personalizando el Splash Screen [ PDF 8 Páginas 388 KB (397.312 bytes)]

 

Solución de ejemplo [28,0 KB (28.672 bytes)] (Solución Visual Studio 2005 C#, compatible con VS2008)

Saludos y nos leemos pronto


José Antonio Gallego


Mobile .NET Users Group

Dynamics Mobile. Como pasar información entre Tasklets

Hoy voy a contar que metodo utilizar con Dynamics Mobile a la hora de traspasar datos entre los distintos Tasklets (Vistas o formularios), como podemos pasar una o varias variables y como poder capturar las variables de salida de Tasklets desarrollados por teceros (por ejemplo de Dynamics Mobile Sales)


Dado que cada uno de los Tasklet son realmente ensamblados compilados (dll) en proyectos independientes carecemos de la opción de traspasar los datos entre los distintos formularios (ups, perdón, tasklets) del modo habitual, con varialbes estaticas, pasandolo mediante funciones etc…


Para poder entender esto antes de meternos en código os voy a explicar primero que método utiliza internamete


El método es muy sencillo, el sistema lo que hace es que el Tasklet deja en memoria (lo que llaman un StateKey) el valor del dato o los datos que queremos traspasar, este StateKey tiene un nombre concreto que previamente le habremos dado, cuando abrimos otro Tasklet si este tiene especificado como dato de entrada un parámetro cuyo nombre StateKey es el mismo el sistema automáticamente rellenará esa propiedad con el contenido almacenado en memoria, el metodo es muy similar al uso de las Hastables.


Esto nos obliga a trabajar con mucho cuidado, ya que los datos se almacenan en memoria siempre en modo texto, por lo que los datos deben ser validos, de lo contrato se producirá un error en tiempo de ejecución, por ejemplo la propiedad de destino es de tipo numerico y le pasamos una cadena «paco»… ya podeís imaginar que esto no va a funcionar precisamente bién.



Flujo de datos

 


 


Para poder manejar esto deberemos utilizar en nuestros Tasklets los parametros OutputMapping para las salidas y los InputMapping para los parametros de entrada.


Si quereís un ejemplo completo de como pasar información entre dos tasklets aquí os dejo una guía y una solución de ejemplo para seguirla. 


Tener en cuenta que esto es para desarrollo con Dynamics Mobile por lo que es necesario tener las herramientas del framework de Dynamics Mobile instaladas. Podréis descargarlas desde la partnersource (es necesario estar registrado)


Tutorial en PDF: Como pasar datos entre tasklets


Solución de ejemplo: Ejemplo como pasar datos entre tasklets


Un saludo a todos!


José Antonio Gallego


Mobile .NET Users Group

Compact Framework y las aplicaciones en modo Kiosco

Normalmente a la hora de afrontar el desarrollo de una aplicación móvil nos suelen exigir que la aplicación se ejecute en modo kiosco, es decir que el usuario solo pueda trabajar con la aplicación en cuestión y limitar de este modo el acceso a otras aplicaciones.


Unos de los primeros pasos para esto es el inhabilitar el botón de inicio del escritorio, eso nos permite hacer que nuestra aplicación pueda utilizarse en modo kiosco sin la necesidad de estar maximizando el formulario y realizando chequeos para hacer que nuestra aplicación siempre tenga el foco, esto último además tiene el inconveniente de que en caso de que necesitemos utilizar alguna funcionalidad de la PDA, como el teléfono móvil, no podríamos hacerlo.
En otros casos también necesitamos deshabilitar el SIP panel para forzar a utilizar nuestro propio teclado.


Todo esto es posible hacerlo mediante llamadas en nativo, para facilitar esto aquí os dejo una pequeña librería MobileNUG.Device.Kiosco que os permitirá jugar con todo esto directamente desde código manejado.


Para utilizarla tan solo debéis agregarla a vuestra solución Smart Device para Compact Framework.


La librería MobileNUG.Device.Kiosco cuenta con las siguientes funciones


ModoKiosco(Activar)
Esta función deshabilita y oculta el icono de Inicio de Windows Mobile, y deshabilita y oculta el SIPpanel


OcultarElemento(Accion a realizar)
Esta función permite realizar (según el parámetro Acción que le pasemos)
Mostrar y habilitar todo
Ocultlar botón inicio
Ocultar icono SIP panel
Ocultar botón inicio e icono SIP panel


Ojo, que los oculta pero no los deshabilita


BotonInicio(Activar)
Hbilita y deshabilita el botón de inicio (no lo oculta)


SIPpanel(Activar)
Habilita y deshabilita el SIP panel.


Aquí va un ejemplo de como útilizarla.


(…)
using MobileNUG.Device;


public partial class Form1 : Form
{
   
//Declaramos el nuevo objeto MobileNUG.Device.Kiosco
    Kiosco
mnugKiosco;
   

    public
Form1()
    {
        InitializeComponent();
   
    //Inicializamos el componente kiosco
       
mnugKiosco = new MobileNUG.Device.Kiosco(this.Handle);
   
    //Habilitamos el modo kiosco
   
    mnugKiosco.ModoKiosco(true);
    }
   
   
private void Form1_Closing(object sender, CancelEventArgs e)
    {
   
    //Desactivamos el modo kiosco
       
mnugKiosco.ModoKiosco(false);
    }
}


También podéis descargaros la solución completa en MobileNUG en este enlace.


Ejemplo MobileNUG.Device.Kiosco


Si solo queréis descargaros la librería podéis hacerlo aquí.


El ejemplo y la solución están en C# para Compact Framework 2.0 pero es muy fácil pasarla a VB.NET y también es compatible con Compact Framework 3.5 y Visual Studio 2008.


¡Espero que os sea útil!


Un saludo a todos desde MobileNUG
José Antonio


Mobile .NET Users Group