Windows 7 Taskbar: ícone e barra de progresso
Para terminar a série de posts sobre a nova barra de tarefas do Windows 7, vou mostrar como trabalhar com ícones e barra de progresso no taskbar. Para isso novamente estarei utilizando os helpers que referenciei no primeiro post sobre a barra de tarefas do Windows 7.
Trocando o Ícone
Algumas vezes pode ser interessante alterar o ícone que aparece na barra de tarefas. Por exemplo, o Messenger utiliza desse recurso: o ícone na barra de tarefas reflete exatamente o status em que me encontro:
Executar essa alteração é muito simples. Utilizando o helper Windows7Taskbar precisamos chamar o método SetTaskbarOverlayIcon que recebe o novo ícone e sua descrição. Dessa forma o que precisaríamos fazer é, ao mudar o status de nossa aplicação, chamar esse método (como feito no código abaixo):
Icon icon = GetIconByStatus((string)cmbStatus.SelectedItem);
Windows7Taskbar.SetTaskbarOverlayIcon(this.Handle, icon, (string)cmbStatus.SelectedItem);
Nesse código estou recuperando o ícone baseado no que foi selecionado num ComboBox e após isso estou chamando o SetTaskbarOverlayIcon para trocar o ícone. O resultado na aplicação que estou utilizando como teste seria o seguinte:
Barra de progresso
Outra possibilidade da nova barra de tarefas é utilizar o ícone que fica na barra de tarefa como uma barra de progresso.
Para demonstrar isso vou utilizar a mesma aplicação acima e realizar uma tarefa de transferência de arquivo (não vou implementar a transferência, mas vou simular um processo que toma algum tempo para terminar). Para isso vou utilizar o método Windows7Taskbar.SetProgressValue. Esse método recebe o percentual no qual o processo se encontra (de 0 a 100).
Windows7Taskbar.SetProgressValue(Handle, (ulong)_percentFileCompleted,(ulong)100);
Com isso, a barra verde vai crescendo de acordo com o valor que foi passado. Além disso podemos passar um status (por exemplo, um status de erro). Para isso utilizamos o Windows7Taskbar.SetProgressState.
Windows7Taskbar.SetProgressState(Handle, Windows7Taskbar.ThumbnailProgressState.Error);
Dessa forma podemos acompanhar o progresso da tarefa (atualizando o valor de _percentFileCompleted) ou informar visualmente que um erro ocorreu. Abaixo o código que utilizei para simular o progresso e o erro (que ocorre quando chega a 100%).
sendFileTimer.Interval = 1000;
sendFileTimer.Tick += delegate
{
_percentFileCompleted += 10;
if (_percentFileCompleted == 100)
{
sendFileTimer.Stop();
MessageBox.Show("File operation failed!");
Windows7Taskbar.SetProgressState(Handle,
Windows7Taskbar.ThumbnailProgressState.Error);
_percentFileCompleted = 0;
}
else
{
Windows7Taskbar.SetProgressValue(Handle,
(ulong)_percentFileCompleted, (ulong)100);
}
};
sendFileTimer.Start();
Com essas informações, eu fecho a série de 3 posts referentes a nova barra de tarefas do Windows, onde a idéia foi demonstrar algumas possibilidades de utilização dessa nova Taskbar em sua aplicação.
Os outros dois posts foram:
[]s
Alex Schulz