copyright
feedback

Restituer la navigation après une terminaison

Lorsque l’utilisateur va basculer d’une application à une autre, l’application passe donc en arrière plan et passe dans un état d’attente et le système peut décider de la terminer si la mémoire du Device se réduit. Avant ça, si l’utilisateur revient sur votre application, il doit revenir sur la bonne page et s’il avait saisi des données faire qu’elle y soit toujours. Si vous ne prévoyez pas ce scénario, l’application revient à son état initiale et ça aura pour but de faire bouillir votre utilisateur. Pour garantir une bonne expérience à l’utilisateur, il va être necessaire d’ajouter quelques bout de code pour gérer ce cycle de vie.

Quel code ajouter à votre appli :

Revenir sur la même page

Mémorisation dans l’event OnSuspending

On va ici mémoriser la page qui était affichée. Entre le deferral qui permet d’indiquer au système que vous utilisez par exemple du code async et que vous avez besoin d’un peu de temps pour finaliser (environ 5 secondes max)

private void OnSuspending(object sender, SuspendingEventArgs e)
{
    var deferral = e.SuspendingOperation.GetDeferral();
   
    //Mémo de la page actuelle
    Frame frame = Windows.Current.Content as Frame;
    ApplicationData.Current.LocalSettings.Values["NavigationState"] = frame.GetNavigationState();

    deferral.Complete();
}

Retour sur la page dans l’event Onlaunched

On insérera ces lignes dans l’évènement OnLaunched de l’App.xaml.cs

protected override void OnLaunched(LaunchActivatedEventArgs e)
{    
    //.....
    if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)
    {
        //Si y'a une page de mémorisée
        if (ApplicationData.Current.LocalSettings.Values.ContainsKey("NavigationState"))
        {
            rootFrame.SetNavigationState((string)ApplicationData.Current.LocalSettings.Values["NavigationState"]);
        }
    }

    // Placez le frame dans la fenêtre active
    Window.Current.Content = rootFrame;
}

Voyons maintenant comment mémoriser les données : Restituer les données après une terminaison

1  

Restituer les données après une terminaison

Dans l’article précédent Restituer la navigation après une terminaison on a su revenir sur la bonne page de votre application. Ici on va remettre les données que l’utilisateur avait par exemple commencé à saisir.

Déclarer une variable static IsSuspending dans l’App.xaml.cs et la passer à TRUE dans l’évènement OnSupending

private void OnSuspending(object sender, SuspendingEventArgs e)
{
    var deferral = e.SuspendingOperation.GetDeferral();
   
    IsSuspending = true;
   
    //Mémo de la page actuelle
    Frame frame = Windows.Current.Content as Frame;
    ApplicationData.Current.LocalSettings.Values["NavigationState"] = frame.GetNavigationState();

    deferral.Complete();
}

MaPage.Xaml.cs : OnNavigationFrom

Dans votre page, on va maintenant mémoriser les données dans l’évent OnNavigationFrom (on quitte la page) puis les restituer dans l’évent OnNavigationTo (On arrive sur la page) :

protected override void OnNavitationFrom(NavigationEventArgs e)
{
    bool suspending = ((App)App.Current).IsSuspending;
    if (suspending )
    {
       var composite = new ApplicationDataCompositeValue();
       composite["madonnee1"] = this.textBoxName.Text;
       composite["madonnee2"] = this.textBoxAge.Text;
       ApplicationData.Current.LocalSettings.Values["Mesdonnees"] = composite;
     
       //On peut utiliser ça aussi :
      //state["madonnee1"] = this.textBoxName.Text;
    }
}

MaPage.Xaml.cs : OnNavigationTo

Et au retour de la page, si c’est une nouvelle navigation on vide par sécu le « composite » sinon on regarde s’il existe et restitue les info :

protected overrire void OnNavigationTo (NavigationEventArgs e)
{
   if (e.NavigationMode == NavigationMode.New)
   {
       ApplicationData.Current.LocalSettings.Values.Remove("Mesdonnees");
   }
   else
   {
       if (ApplicationData.Current.LocalSettings.Values.ContainsKey("Mesdonnees"))
       {
          var composite = ApplicationData.Current.LocalSettings.Values["Mesdonnees"] as ApplicationDataCompositeValue;
          this.textBoxName.Text = (string)composite["madonnee1"];
          this.textBoxAge.Text = (string)composite["madonnee2"];
   
          ApplicationData.Current.LocalSettings.Values.Remove("Mesdonnees");
       }
   }
}
0  
research

Tips de Bing pour les développeurs

Mi-Octobre, l’équipe de Bing a publié des outils très sympathiques pour nous faire gagner du temps pour certaines tâches. Notons qu’en septembre dernier ils avaient ajouté des outils pour les musiciens (« guitar tuner »)

En premier lieu il vous faut changer la région de votre Bing ! Accédez à http://www.bing.com et en haut à droite cliquer sur l’icône représentant un engrenage, cliquez ensuite sur « paramètres ». Dans le nouvel écran cliquer sur [ Région ] et choisissez « États-Unis – Anglais » puis [Enregistrer]. Notez que si vous bloquez tous les cookies, ça risque de ne pas, encore, fonctionner.

Au retour vous pourrez donc tester plein de petits outils ! Non ne tapez pas « guitar tuner », ici on parle « Dév » ^^ mais par exemple :

Color Picker

Bing-Color-Picker

Différents « formateurs » de données

Il suffit alors de saisir l’un de ces mots :

  • XML formatter
  • Javascript formatter
  • JSON formatter
  • HTML formatter
  • CSS formatter

x-formater

Et enfin un générateur de QR Code et un la table de correspondance des code Ascii :

  • Table ASCII
  • QR code

Creator-tools-P5-100815

privacy
0  
feedback

Extension Developer Assistant pour Visual Studio

Developer Assistant pour Visual Studio
Developer Assistant, édité par une équipe de Microsoft, va aider le développeur à trouver rapidement des extraits de codes via par exemple MSDN, GitHub, StackOverFlow, CodeProject.com… Il se base entre autre sur Bing Code Search de Microsoft Research que vous pouvez retrouver et tester en ligne à cette adresse : http://codesnippet.research.microsoft.com/.

L’extension « Developer Assistant » est disponible pour les versions 2012, 2013 et 2015 de Visual Studio. Pour l’installer, il vous suffit simplement de la recherche via la fonction [Extension et mise à jour] du menu Outils :
Developer Assistant -install

Recherche dans GitHub

GitHub est l’une des communautés open source les plus populaires et on y retrouve un très grand nombre de projets .NET, Node.JS, les librairies comme HTMLAgilityPack, NewtonSoft.json, Xamarin… Actuellement les moteurs de recherches ne sont pas encore optimisés pour effectuer des recherches de codes dans les projets GitHub mais grâce à « Developer Assistant » vous pouvez ainsi augmentez votre efficacité.
Un explorateur de code permet de filtrer facilement les codes de GitHub, de les cloner dans un dossier local de votre choix et un autre onglet permet de récupérer des bouts de code (Snippet) :
DEveloper Assistat - snippets

L’expérience IntelliSense

L’équipe de développement de cette extension a soigné la partie IntelliSense. L’IntelliSense c’est l’auto-complétion du code dans l’IDE (environnement de développement ou IDE en anglais, pour Integrated Development Environment ). Globalement, cette invention géniale permet aux développeurs les plus fainéants comme moi de taper moins de caractères sur leur clavier. Dans Visual Studio, ce système s’appelle l’IntelliSense et il est particulièrement bien foutu et c’est sur ce dernier que cette extension est venu se greffer :

Developer Assistan -github

Depuis l’Intellisense on peut visualiser un bout de code relatif à l’API que nous sommes en train de taper. La vitesse de recherche de Bing Code Search qui gère cette partie m’a juste surpris ! Un lien de cet extrait de code vous permettra d’aller sur la page de cette source, mais aussi copier le code dans le presse-papier ou demander de rechercher d’autre proposition de codes via le bouton [Search more]

Proposer à MSDN votre exemple de code

Il arrive qu’aucun extrait de code ne soit trouver ou disponible sur une API que vous utilisez. Donc là c’est tant pis pour vous, il va falloir faire sans mais ce qui est sympa c’est qu’une fois que vous aurez trouvé le fonctionnement de l’API vous avez la possibilité de proposer à MSDN votre petit exemple très rapidement.

6-share

Le lien « share some code samples » vous ouvre dans Visual Studio le formulaire très simple pour coller votre code. Si ce n’est pas directement fait, vous vous connecter avec mon compte Microsoft et il ne vous reste plus qu’à donner une petite explication et « bonjour la visibilité » ! La communauté de développeurs vous remercie par avance 🙂

Une recherche locale

Précédemment je vous disais que la recherche s’effectuer via différent site communautaire pour vous proposer des exemples et bien l’extension permet aussi de faire une recherche en local sur votre disque dur. L’idée est intéressante car nous sommes beaucoup à avoir un dossier local de sample et donc vous pouvez configurer Developer Assistant via le menu [Outils] puis [options] de Visual Studio pour paramétrer votre chemin. Ainsi lors des recherche et qu’aucune connexion au réseau n’est disponible par exemple et bien l’Intellisense vous proposera tout de même des extraits.

7-local

Une recherche omniprésente

Cette extension est en effet omniprésente et surtout de manière contextuelle plus une barre d’outils dédiée.

5-menu

Par exemple nous retrouverons une recherche contextuelle sur l’ensemble des éléments de votre code où il suffit de sélectionner un texte de l’éditeur et dans le menu vous pourrez interroger Bing Search. Au niveau de la liste des erreurs c’est la même chose et en effet les codes d’erreurs ne sont parfois pas évidents à comprendre

7-context

Vous l’aurez compris, Developer Assistant est un must-have qui s’intégrer parfaitement à Visual Studio et nous aide dans ce que nous faisons constamment ; Trouver des exemples d’utilisation d’API.

Retrouvez mon article dans le N° 191 de Programmez! Magazine !Programmez! Magazine !

0  

Les tests unitaires dans Visual Studio : DevApp

Aujourd’hui j’ai participé au numéro 5 du podcast dédié à 100% Visual Studio créé par Denis Voituron @denisvoituron

Cet épisode est dédié aux Tests Unitaires intégré à toute la gamme de Visual Studio. Ce podcast est disponible en mp3 mais aussi sur YouTube où vous pourrez suivre les slides :

http://devapps.be/Podcast/5

DevApps Unit Testing

Alors Si vous ne vous êtes jamais mis à utiliser les tests unitaires, vous verrez : écoutez cet épisode et vous pourrez plus vous passer des tests unitaires !

Je remercie beaucoup Denis pour son invitation et espère que vous apprécierez l’épisode !

0  
research
privacy
feedback