Archives de Catégorie: Tips

[WP] Afficher l’image d’un contact

Pour les besoins d’un projet il m’a fallu afficher les images des contacts de l’utilisateur.

L’objet Contact qui défini notre contact contient une méthode GetPicture() qui nous retourne en Stream son image. Nous pouvons donc soit l’enregistrer, soit faire un converter pour l’afficher directement !

Voici le code dans le cas du converter :

C#

public class ContactPictureConverter : IValueConverter
    {
        public object Convert(object value,
            Type targetType,
            object parameter,
            System.Globalization.CultureInfo culture)
        {
            Contact c = value as Contact;
            if (c == null) return null;

            System.IO.Stream imageStream = c.GetPicture();
            if (null != imageStream)
                return PictureDecoder.DecodeJpeg(imageStream);

            return null;
        }

        public object ConvertBack(object value, 
            Type targetType, 
            object parameter, 
            System.Globalization.CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }

Ce converter s’occupe de récupérer un stream représentant l’image du contact concerné et le retourne sous forme d’image.

Déclarez ensuite votre Converter dans votre fichier de ressources et ajoutez une image dans votre xaml avec dans la Source, le contact visé et ce converter :

<Image Source= »{Binding MyContact, Converter={StaticResource ContactPictureConverter}} » />

Par JC VASSELON

[TIP] Changer la couleur de l’état indéterminé d’une ProgressBar sous Windows 8

Si vous avez essayé de modifier la couleur de la ProgressBar en changeant sa propriété « Foreground », vous avez pu vous rendre compte que celle ne faisait rien…. Ceci est dû au fait que la couleur est définie par la couleur d’accentuation de l’utilisateur (modifiable depuis les paramètres du PC, champs Personnaliser, onglet Ecran d’accueil) et non pas par la propriété Foreground.

Vous pouvez tout de même la modifier en déclarant une chaîne de caractère portant la clé « ProgressBarIndeterminateForegroundThemeBrush »dans les ressources de votre application. Cela aura pour effet de surcharger la couleur de la ProgressBar sur toute l’application :

<x:String x:Key="ProgressBarIndeterminateForegroundThemeBrush">#FF1E4C82</x:String>

Solution par Mathieu Hollebecq
Mise en forme par JC VASSELON

[Windows 8] Déplacer éléments dans une liste

Il est parfois intéressant de laisser l’utilisateur la possibilité d’agencer une liste à sa manière.
Sur Windows Phone, des contrôles personnalisés existent comme la Reorder List de Bewise (http://bewisephonecontrols.codeplex.com/).

Déplacer des éléments sous Windows 8

Sous Windows 8, la GridView et la ListView supportent ce comportement par défaut. Pour cela, il faut configurer les propriétés suivantes :

  • CanReorder= »True »
  • AllowDrop= »True »
  • CanDragItems= »True »

Problématiques

En mode tactile, sur un GridView, si le ScrollViewer vertical est activé vous ne pourrez pas déplacer les éléments. Pour éviter cela, vous pouvez passer par une ListView ou si vous n’en avez pas besoin désactivez le scroll en mettant la propriété : ScrollViewer.VerticalScrollMode sur « Disabled ».

La ListView a un système de déplacement particulier, en effet il faut soit laisser appuyer sur l’élément soit le tirer sur la droite ou la gauche pour le déplacer verticalement.

Illustration : Screen shot showing the disambiguation threshold.

(source :
http://msdn.microsoft.com/en-us/library/windows/apps/hh465299.aspx )

Vous trouverez un exemple ici : https://skydrive.live.com/redir?resid=3929B7A47D0F06D!604&authkey=!AOct7PEtAxVl9I4

Par JC VASSELON

Install Windows 8 from USB Key

(Article disponible en français à cette adresse : https://onefor4.wordpress.com/2011/09/05/crez-une-cl-usb-bootable-pour-installer-windows-7/ )

From graphical user interface

Nowadays, when you buy a new laptop, you may have no DVD drive. In this case, if you want to install Windows 8 or Windows 7, you will not be able to burn a DVD and install the system from it.

Fortunately, quite all motherboards allow us to boot from an USB key. We will use it to launch the Windows 8 setup. First, we have to get the iso file used to the system set up. MSDN subscribers can download it legally. For the others, if you have bought the DVD, you can create an iso file from a computer with a DVD drive, softwares like poweriso or deamon tools lite will create it for you.

Once you have your iso file, you have to put it on the USB key but not from a simple copy/paste. Some additional operations are needed. Microsoft have created a freeware to create bootable USB keys for Windows 7, Windows 7 USB/DVD Download Tools, you can download it on the Microsoft Store.

You just have to launch the software, select the iso, your usb key and start the copy. Once all these operations ended, the USB key is ready, you can launch the install.

But sometimes, with some iso files (especially from MSDN), the copy fails and you obtain the following error “We were unable to copy your files. Please check your USB device and the selected ISO file and try again” while your iso have been checked and so your usb key.

In this case, we will have to use the command line interface.

By the command line interface

Requirements

The first step is easy : plug your usb key Sourire Then, download an utility to create virtual dvd drives like poweriso or deamon tools lite. If you are running the Windows 8 Release Preview, you will not need another software, Windows 8 do it for you. Finally, mount the iso and check the letter assigned to your virtual drive (here F: ).

Format the USB key with Diskpart

The following step consists in create a primary active partition on the key and format it in NTFS. For that, we use the CLI utility diskpart. In Windows 7, launch the CLI in administrator mode by clicking “start”, “all programs”, “accessories”, right click on “Command prompt” and “launch as administrator”. On windows 8, type “command line” on the start menu, right click on “command prompt” and “launch as administrator”. Now, type:

diskpart

The command line now switches to the disk management utility named “diskpart”. List all available disks with:

list disk

You can see that my USB key is “disk 2” (obviously, not the 931 GB drive Sourire). To create the partition and format it in NTFS:

select disk 2 (replace the number corresponding to your usb key)

clean

create partition primary

select partition 1

active

format fs=ntfs (formatting can last several minutes)

assign (a letter is assigned to your usb key, maybe different from the letter assigned in the beginning)

exit

Create the boot sector of your usb key with bootsect

After “exit”, you are again on the starting CLI. Open “computer” to know the letter assigned to your usb key (here G: ). You will first set on the “boot” folder on the virtual Windows 8 DVD :

F: cd boot (replace F: by the letter corresponding to your virtual dvd drive)

cd boot

Then a last command will allow booting on your usb key

bootsect.exe /nt60 g: (replace G by your usb key letter)

And to finish, simply copy/paste all files from your DVD to your USB key and set your BIOS to check USB boot before hard drive boot.

Happy installation, and enjoy Windows Sourire

By Mathieu Hollebecq

Essayer WordPress en local sous Windows

J’avais envie de voir les possibilités offertes par WordPress mais j’avais un souvenir d’installation laborieuse. Déployer un serveur apache, configurer une base de données mysql, avec les fichiers conf à faire à la main, ….

Mais ça, c’était avant !

Maintenant, grâce à l’outil Microsoft Web Platform Installer, disponible par ici : http://www.microsoft.com/web/downloads/platform.aspx

Vous pouvez installer en deux clics la plupart des CMS existants (WordPress, Joomla, …), de plateforme d’e-commerce (Drupal, dashCommerce, …) ainsi que différents outils bien utiles.

image

Vous sélectionnez les différents produits ou faites une recherche rapide de ceux qui vous intéressent, l’outil de Microsoft s’occupera d’installer et configurer tout ce dont vous avez besoin.

Ça prend un peu de temps, mais une fois démarré vous n’avez presque plus rien à toucher.

Bien sûr à éviter en production où il est plus intéressant d’avoir la main sur toute l’installation pour éviter des problèmes de sécurité, mais c’est bien utile dans une optique de test.

Par JC VASSELON

[WP7] HttpWebRequest et problèmes d’encodage

Introduction

Lorsque vous réalisez une HttpWebRequest en Windows Phone 7, vous risquez d’avoir une réponse dans un encodage différent d’UTF8. Ce qui peut entrainer des caractères illisibles à la place des lettres accentuées (ex : “?” au lieu de “é”).

Pour remédier à cela, on va réencoder notre chaîne grâce à la classe System.Text.Encoding.

Explication par le code

String resultString;
HttpWebResponse response = 
      (HttpWebResponse)request.EndGetResponse(result);
//On définit l'encodage de base de notre chaîne
var source = Encoding.GetEncoding("iso-8859-1");
//On définit l'encodage de de destination
var dest = Encoding.UTF8;

/*Lors de la création de notre StreamReader, 
* on précise l'encodage de départ*/
using (StreamReader streamReader1 =
      new StreamReader(response.GetResponseStream(),
          source))
{
      resultString = streamReader1.ReadToEnd();
 }
 if (!String.IsNullOrEmpty(resultString))
{                    
      /*On récupère notre chaîne sous forme d'un tableau 
      de bytes*/
      byte[] sourceBytes = source.GetBytes(resultString);
      //On convertit notre tableau dans l'encodage souhaité
      byte[] destBytes = Encoding.Convert(source,
         dest, sourceBytes);
      //Et on reforme notre chaîne de caractère
      resultString = Encoding.UTF8.GetString(destBytes, 0,
         destBytes.Length);
 }

En résumé :

  • On créé un StreamReader avec l’encodage de base
  • On transforme la chaîne récupérée en tableau de bytes
  • On convertit ce tableau de bytes dans l’encodage souhaité
  • On le retransforme en String

Par JC VASSELON

Pimp ma listbox

On va découvrir ici comment éditer et transformer une ListBox. L’exemple sera fait sur du Windows Phone, mais pourra être facilement répliqué en WPF, Silverlight, … En Xaml quoi !

Je vais rapidement rappeler les bases d’une ListBox et nous passerons ensuite sur quelques exemples concrets (ListBox horizontale, ListBox wrappée).

Pour cet article, j’ai utilisé Expression Blend, qui permet d’éditer les styles rapidement et facilement :
Un clic droit sur la ListBox, et dans le menu additionnal template vous pourrez éditer facilement les éléments que je signale.

Structure d’une ListBox

Comme son nom l’indique, une ListBox sert à afficher une liste d’éléments, une collection d’objets. En plus de son template, elle est constituée de trois autres templates qui permettent de la personnaliser plus précisément. C’est à eux que l’on va s’intéresser.

Illustrons ces différents templates, avec un exemple simple : une boîte de bonbons :

  • ItemTemplate : La forme sous laquelle vont s’afficher les objets contenus dans la collection. Le bonbon brut.
  • ItemContainerStyle : Le conteneur de l’item. le papier autour du bonbon. C’est sur lui qu’on gèrera l’espacement entre chaque item.
  • ItemsPanel : Le conteneur général. La boîte.

ListBox Horizontale

En partant de cette base, comment faire une ListBox Horizontale ?

  1. On édite l’ItemsPanel, on veut un conteneur horizontal. On passe donc la propriété Orientation du StackPanel sur “Horizontal”;
  2. On revient à notre ListBox, on édite les propriétés liées au Layout, on passe HorizontalScrollBarVisibility sur “Auto” ou “Visible” et VerticalScrollBarVisibility sur “Disabled” (Si vous êtes sur Blend, et que vous ne trouvez pas ces propriétés, cliquez sur la petite flèche en bas de Layout);
  3. On édite l’ItemContainerStyle en mettant une marge à droite sur notre bordure (12px est le nombre magique en général) pour pas que les éléments soit collés;
  4. Il ne vous reste plus qu’à éditer l’ItemTemplate en quelques clics en fonction de vos goûts.

Et nous avons une belle ListBox horizontale !

ListBox Wrapped

Pour rappel, le wrap est le système qui permet à des éléments de revenir à la ligne automatiquement et de s’adapter à différentes tailles d’écrans :

image

(oui ce sont des carottes wrappées)

Donc si on a bien suivi, qu’a-t-on à faire ?

  1. Modifier l’ItemsPanel, oui ! On supprime le StackPanel qu’on remplace par le WrapPanel disponible dans le Silverlight Toolkit For Windows Phone (disponible via Nuggets);
  2. Régler l’HorizontalScrollBarVisibility et la VericalScrollBarVisibility en fonction du sens dans lequel vous voulez faire aller vos éléments (verticaux ou horizontaux);
  3. Editer l’ItemContainerStyle avec une marge en bas et à droite pour “décoller” les éléments entre eux;
  4. Et éditer l’ItemTemplate en fonction de vos goûts !

Conclusion

On a donc vu rapidement la structure d’une ListBox et comment faire facilement différents types de listes.

Par JC VASSELON