Subversion Repository Public Repository

Nextrek

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
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.Navigation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls;
using Microsoft.Phone.Shell;

namespace OpenLavoro
{
    public partial class App : Application
    {
        private static MainViewModel viewModel = null;

        /// <summary>
        /// Oggetto ViewModel statico utilizzato dalle visualizzazioni con cui eseguire l'associazione.
        /// </summary>
        /// <returns>Oggetto MainViewModel.</returns>
        public static MainViewModel ViewModel
        {
            get
            {
                // Ritardare la creazione del modello di visualizzazione finché necessario
                if (viewModel == null)
                    viewModel = new MainViewModel();

                return viewModel;
            }
        }

        /// <summary>
        /// Offre facile accesso al frame radice dell'applicazione Windows Phone.
        /// </summary>
        /// <returns>Nome radice dell'applicazione Windows Phone.</returns>
        public PhoneApplicationFrame RootFrame { get; private set; }

        /// <summary>
        /// Costruttore dell'oggetto Application.
        /// </summary>
        public App()
        {
            // Gestore globale delle eccezioni non rilevate. 
            UnhandledException += Application_UnhandledException;

            // Inizializzazione Silverlight standard
            InitializeComponent();

            // Inizializzazione specifica del telefono
            InitializePhoneApplication();

            // Visualizza informazioni di profilatura delle immagini durante il debug.
            if (System.Diagnostics.Debugger.IsAttached)
            {
                // Visualizza i contatori della frequenza fotogrammi corrente
                Application.Current.Host.Settings.EnableFrameRateCounter = false;

                // Visualizza le aree dell'applicazione che vengono ridisegnate in ogni fotogramma.
                //Application.Current.Host.Settings.EnableRedrawRegions = true;

                // Abilitare la modalità di visualizzazione dell'analisi non di produzione, 
                // che consente di visualizzare le aree di una pagina passate alla GPU con una sovrapposizione colorata.
                //Application.Current.Host.Settings.EnableCacheVisualization = true;

                // Disabilitare il rilevamento dell'inattività dell'applicazione impostando la proprietà UserIdleDetectionMode
                // dell'oggetto PhoneApplicationService dell'applicazione su Disabled.
                // Attenzione: utilizzare questa opzione solo in modalità di debug. L'applicazione che disabilita il rilevamento dell'inattività dell'utente continuerà ad essere eseguita
                // e a consumare energia quando l'utente non utilizza il telefono.
                PhoneApplicationService.Current.UserIdleDetectionMode = IdleDetectionMode.Disabled;
            }
        }

        // Codice da eseguire all'avvio dell'applicazione (ad esempio da Start)
        // Questo codice non verrà eseguito quando l'applicazione viene riattivata
        private void Application_Launching(object sender, LaunchingEventArgs e)
        {
        }

        // Codice da eseguire quando l'applicazione viene attivata (portata in primo piano)
        // Questo codice non verrà eseguito al primo avvio dell'applicazione
        private void Application_Activated(object sender, ActivatedEventArgs e)
        {
            // Verificare che lo stato dell'applicazione sia ripristinato in modo appropriato
            if (!App.ViewModel.IsDataLoaded)
            {
                App.ViewModel.LoadData();
            }
        }

        // Codice da eseguire quando l'applicazione viene disattivata (inviata in background)
        // Questo codice non verrà eseguito alla chiusura dell'applicazione
        private void Application_Deactivated(object sender, DeactivatedEventArgs e)
        {
        }

        // Codice da eseguire alla chiusura dell'applicazione (ad esempio se l'utente fa clic su Indietro)
        // Questo codice non verrà eseguito quando l'applicazione viene disattivata
        private void Application_Closing(object sender, ClosingEventArgs e)
        {
            // Verificare che lo stato dell'applicazione richiesto sia persistente qui.
        }

        // Codice da eseguire se un'operazione di navigazione ha esito negativo
        private void RootFrame_NavigationFailed(object sender, NavigationFailedEventArgs e)
        {
            if (System.Diagnostics.Debugger.IsAttached)
            {
                // Un'operazione di navigazione ha avuto esito negativo; inserire un'interruzione nel debugger
                System.Diagnostics.Debugger.Break();
            }
        }

        // Codice da eseguire in caso di eccezioni non gestite
        private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
        {
            if (System.Diagnostics.Debugger.IsAttached)
            {
                // Si è verificata un'eccezione non gestita; inserire un'interruzione nel debugger
                System.Diagnostics.Debugger.Break();
            }
        }

        #region Inizializzazione dell'applicazione Windows Phone

        // Evitare la doppia inizializzazione
        private bool phoneApplicationInitialized = false;

        // Non aggiungere altro codice a questo metodo
        private void InitializePhoneApplication()
        {
            if (phoneApplicationInitialized)
                return;

            // Creare il fotogramma ma non impostarlo ancora come RootVisual; in questo modo
            // la schermata iniziale rimane attiva finché non viene completata la preparazione al rendering dell'applicazione.
            RootFrame = new PhoneApplicationFrame();
            RootFrame.Navigated += CompleteInitializePhoneApplication;

            // Gestisce gli errori di navigazione
            RootFrame.NavigationFailed += RootFrame_NavigationFailed;

            // Accertarsi che l'inizializzazione non venga ripetuta
            phoneApplicationInitialized = true;
        }

        // Non aggiungere altro codice a questo metodo
        private void CompleteInitializePhoneApplication(object sender, NavigationEventArgs e)
        {
            // Impostare l'elemento visivo radice per consentire il rendering dell'applicazione
            if (RootVisual != RootFrame)
                RootVisual = RootFrame;

            // Rimuovere il gestore in quanto non più necessario
            RootFrame.Navigated -= CompleteInitializePhoneApplication;
        }

        #endregion
    }
}

Commits for Nextrek/WindowsPhone/OpenLavoro/OpenLavoro/App.xaml.cs

Diff revisions: vs.
Revision Author Commited Message
137 LTardio picture LTardio Mon 10 Nov, 2014 17:19:48 +0000