Launchers são bibliotecas que permitem executar determinadas tarefas sem retornar nenhuma informação para o aplicativo. O nome dado para uma dessas chamadas é Launcher. No exemplo a seguir será utilizada a classe EmailComposeTask e com a passagem correta de parâmetros, será exibida uma tela para o usuário em que ele poderá optar por enviar ou não um e-mail e qual e-mail de remetente utilizar. Então o Launcher é encerrado e o aplicativo retorna ao estado em que se encontrava.

Para isso abra o Visual Studio e inicie um novo projeto em Windows Phone 7.1.

Criação do projeto para Windows Phone no Visual Studio

Figura 1: Criação do projeto para Windows Phone no Visual Studio

Nesse pequeno aplicativo serão criados três templates de e-mails prontos para o envio do usuário. Sendo assim, três TextBlocks com um evento que instanciará a classe e passará como parâmetro o texto escolhido pelo usuário.

Abra o arquivo MainPage.xaml e adicione ao contentPanel um StackPanel com 450 de largura, 400 de altura, verticalmente alinhado ao topo e com um fundo cinza claro. Este StackPanel irá conter os TextBlocks para o usuário.

Listagem 1: StackPanel adicionado ao ContentPanel


<!--ContentPanel - place additional content here-->
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<StackPanel Width="450" Height="400" VerticalAlignment="Top" Background="LightGray">
                
</StackPanel>
</Grid>

Agora adicione o primeiro TextBlock com 420 de largura e 100 de altura, cor (Foreground) preto para que o usuário não tenha dificuldade em ler ao trocar entre os temas claro e escuro, coloque o alinhamento horizontal para a esquerda e o TextWrapping, que é a quebra de linhas de acordo com o tamanho do TextBlock, para Wrap, assim o texto é adaptado de acordo com o tamanho definido.

Listagem 2: Primeiro template TextBlock adicionado ao StackPanel


<!--ContentPanel - place additional content here-->
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<StackPanel Width="450" Height="400" VerticalAlignment="Top" Background="LightGray">
<TextBlock Name="lblTemplateUm" Width="420" Height="100" Foreground="Black" HorizontalAlignment="Left" TextWrapping="Wrap" Text="Bom Dia, estou em reunião mais tarde nos encontramos." Margin="10,0,0,0" Tap="lblTemplateUm_Tap_1"/>
</StackPanel>
</Grid>

Agora adicione mais um template ao StackPanel, ou seja, mais um TextBlock com as mesmas definições anteriores mudando apenas o conteúdo e o nome do TextBlock.

Listagem 3: Segundo template TextBlock adicionado ao StackPanel


<!--ContentPanel - place additional content here-->
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<StackPanel Width="450" Height="400" VerticalAlignment="Top" Background="LightGray">
<TextBlock Name="lblTemplateUm" Width="420" Height="100" Foreground="Black" HorizontalAlignment="Left" TextWrapping="Wrap" Text="Bom Dia, estou em reunião mais tarde nos encontramos." Margin="10,0,0,0" Tap="lblTemplateUm_Tap_1"/>
<TextBlock Name="lblTemplateDois" Width="420" Height="100" Foreground="Black" HorizontalAlignment="Left" TextWrapping="Wrap" Text="Não esquece do nosso almoço na sexta feira no village mall, lá pras 13 hrs. Abraço" Margin="10,0,0,0" Tap="lblTemplateDois_Tap_1"/>                
</StackPanel>
</Grid>

Então, para terminar adicione o último template de e-mail para o StackPanel:

Listagem 4: Terceiro e último template adicionado ao StackPanel


<!--ContentPanel - place additional content here-->
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<StackPanel Width="450" Height="400" VerticalAlignment="Top" Background="LightGray">
<TextBlock Name="lblTemplateUm" Width="420" Height="100" Foreground="Black" HorizontalAlignment="Left" TextWrapping="Wrap" Text="Bom Dia, estou em reunião mais tarde nos encontramos." Margin="10,0,0,0" Tap="lblTemplateUm_Tap_1"/>
<TextBlock Name="lblTemplateDois" Width="420" Height="100" Foreground="Black" HorizontalAlignment="Left" TextWrapping="Wrap" Text="Não esquece do nosso almoço na sexta feira no village mall, lá pras 13 hrs. Abraço" Margin="10,0,0,0" Tap="lblTemplateDois_Tap_1"/>
<TextBlock Name="lblTemplateTres" Width="420" Height="100" Foreground="Black" HorizontalAlignment="Left" TextWrapping="Wrap" Text="Eu comprei 3 camisas, sendo que uma era pra você passa lá em casa para pegar depois. Beijos" Margin="10,0,0,0" Tap="lblTemplateTres_Tap_1"/>
</StackPanel>
</Grid>

Lembrando que cada TextBlock tem seu próprio evento para a chamada da composição do e-mail com o corpo do texto. Seu layout deve estar próximo a esse.

Layout da página

Figura 2: Layout da página

Agora falta o tratamento dos eventos criados. Abra o arquivo MainPage.xaml.cs, ele deve estar semelhante ao código abaixo, caso os métodos não tenham sido gerados automaticamente ao adiciona-los aos TextBlocks, escreva-os.

Listagem 5: Código da página MainPage.xaml.cs sem o tratamento nos métodos

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls;

namespace TesteEmail
{
    public partial class MainPage : PhoneApplicationPage
    {
        // Constructor
        public MainPage()
        {
            InitializeComponent();
        }

        private void lblTemplateUm_Tap_1(object sender, GestureEventArgs e)
        {

        }

        private void lblTemplateDois_Tap_1(object sender, GestureEventArgs e)
        {

        }

        private void lblTemplateTres_Tap_1(object sender, GestureEventArgs e)
        {

        }
    }
}

Para poder utilizar a classe EmailComposeTask você deve adicionar no início do arquivo a seguinte linha:

Listagem 6: Código de using para utilização da Classe EmailComposeTask

using Microsoft.Phone.Tasks;

A classe EmailComposeTask possui três parâmetros para serem passados. O “To” que é o e-mail de destino, o “Subject” que é o assunto do e-mail, e o “Body” que seria o corpo do e-mail. Portanto preencha-os com valores válidos e utilize o método Show para exibir ao usuário a tela de e-mail pronta para envio.

No primeiro método será utilizado o texto do TextBlock template um.

Listagem 7: Código do primeiro método de envio de template do e-mail

private void lblTemplateUm_Tap_1(object sender, GestureEventArgs e)
{
            EmailComposeTask email = new EmailComposeTask();
            email.To = "nsafatli@msn.com";
            email.Subject = "Template Dois";
            email.Body = lblTemplateUm.Text;
     email.Show();
}

No segundo método utilize o texto do template dois.

Listagem 9: Código do segundo método de envio de template do e-mail

private void lblTemplateDois_Tap_1(object sender, GestureEventArgs e)
{
            EmailComposeTask email = new EmailComposeTask();
            email.To = "nsafatli@msn.com";
            email.Subject = "Template Dois";
            email.Body = lblTemplateDois.Text;
            email.Show();
}

No último método utilize o texto do terceiro template.

Listagem 10: Código do terceiro método.


private void lblTemplateTres_Tap_1(object sender, GestureEventArgs e)
{
            EmailComposeTask email = new EmailComposeTask();
            email.To = "nsafatli@msn.com";
            email.Subject = "Template Três";
            email.Body = lblTemplateTres.Text;
            email.Show();
}

Observação: Você não poderá utilizar este Launcher no emulator, apenas no aparelho com Windows Phone.

Então execute seu aplicativo no seu device e veja o launcher em funcionamento.

Um abraço e até o próximo artigo.