using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Runtime.InteropServices.WindowsRuntime; using Windows.ApplicationModel; using Windows.ApplicationModel.Activation; using Windows.Foundation; using Windows.Foundation.Collections; using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Controls.Primitives; using Windows.UI.Xaml.Data; using Windows.UI.Xaml.Input; using Windows.UI.Xaml.Media; using Windows.UI.Xaml.Media.Animation; using Windows.UI.Xaml.Navigation; // Pour plus d'informations sur le modèle Application vide, consultez la page http://go.microsoft.com/fwlink/?LinkId=234227 namespace ModernKeePass { /// /// Fournit un comportement spécifique à l'application afin de compléter la classe Application par défaut. /// public sealed partial class App : Application { #if WINDOWS_PHONE_APP private TransitionCollection transitions; #endif /// /// Initialise l'objet d'application de singleton. Il s'agit de la première ligne du code créé /// à être exécutée. Elle correspond donc à l'équivalent logique de main() ou WinMain(). /// public App() { this.InitializeComponent(); this.Suspending += this.OnSuspending; } /// /// Invoqué lorsque l'application est lancée normalement par l'utilisateur final. D'autres points d'entrée /// sont utilisés lorsque l'application est lancée pour ouvrir un fichier spécifique, pour afficher /// des résultats de recherche, etc. /// /// Détails concernant la requête et le processus de lancement. protected override void OnLaunched(LaunchActivatedEventArgs e) { #if DEBUG if (System.Diagnostics.Debugger.IsAttached) { this.DebugSettings.EnableFrameRateCounter = true; } #endif Frame rootFrame = Window.Current.Content as Frame; // Ne répétez pas l'initialisation de l'application lorsque la fenêtre comporte déjà du contenu, // assurez-vous juste que la fenêtre est active if (rootFrame == null) { // Créez un Frame utilisable comme contexte de navigation et naviguez jusqu'à la première page rootFrame = new Frame(); // TODO: modifier cette valeur à une taille de cache qui contient à votre application rootFrame.CacheSize = 1; if (e.PreviousExecutionState == ApplicationExecutionState.Terminated) { // TODO: chargez l'état de l'application précédemment suspendue } // Placez le frame dans la fenêtre active Window.Current.Content = rootFrame; } if (rootFrame.Content == null) { #if WINDOWS_PHONE_APP // Supprime la navigation tourniquet pour le démarrage. if (rootFrame.ContentTransitions != null) { this.transitions = new TransitionCollection(); foreach (var c in rootFrame.ContentTransitions) { this.transitions.Add(c); } } rootFrame.ContentTransitions = null; rootFrame.Navigated += this.RootFrame_FirstNavigated; #endif // Quand la pile de navigation n'est pas restaurée, accédez à la première page, // puis configurez la nouvelle page en transmettant les informations requises en tant que // paramètre if (!rootFrame.Navigate(typeof(MainPage), e.Arguments)) { throw new Exception("Failed to create initial page"); } } // Vérifiez que la fenêtre actuelle est active Window.Current.Activate(); } #if WINDOWS_PHONE_APP /// /// Restaure les transitions de contenu une fois l'application lancée. /// /// Objet où le gestionnaire est attaché. /// Détails sur l'événement de navigation. private void RootFrame_FirstNavigated(object sender, NavigationEventArgs e) { var rootFrame = sender as Frame; rootFrame.ContentTransitions = this.transitions ?? new TransitionCollection() { new NavigationThemeTransition() }; rootFrame.Navigated -= this.RootFrame_FirstNavigated; } #endif /// /// Appelé lorsque l'exécution de l'application est suspendue. L'état de l'application est enregistré /// sans savoir si l'application pourra se fermer ou reprendre sans endommager /// le contenu de la mémoire. /// /// Source de la requête de suspension. /// Détails de la requête de suspension. private void OnSuspending(object sender, SuspendingEventArgs e) { var deferral = e.SuspendingOperation.GetDeferral(); // TODO: enregistrez l'état de l'application et arrêtez toute activité en arrière-plan deferral.Complete(); } } }