protected virtual void OnKioskStateChanged(KioskStateChangedEventArgs args)
 {
     try
     {
         var handler = this.KioskStateChangedEvent;
         if (handler != null)
         {
             handler.Invoke(args);
         }
     }
     catch (Exception ex)
     {
         //if (log.IsErrorEnabled) log.Error("Caught exception in OnKioskStateChanged" + ex.Message);
     }
 }
예제 #2
0
        private void OnKioskStateChangedEvent(KioskStateChangedEventArgs args)
        {
            Trace.WriteLine(string.Format("{0} OnKioskStateChangedEvent Started",DateTime.Now));
            bool isLanguageChanged = false;
            bool isStyleChanged = false;
            try
            {
                KioskAction action = StateManager.CurrentState.KioskActions.Where(a => string.CompareOrdinal(a.Name, args.Action) == 0).FirstOrDefault();
                Trace.WriteLine(string.Format(" Current state: {0} - action : {1}", StateManager.CurrentState.Name, args.Action));
                // Deregister old child view events.
                PresenterBase currentstatePresenter = StateManager.CurrentState.PresenterClass as PresenterBase;
                if (currentstatePresenter != null)
                {
                    Trace.WriteLine(string.Format("{0} CurrentStatePresenter is not null", DateTime.Now));
                    currentstatePresenter.Deactivate();
                    currentstatePresenter.KioskStateChangedEvent -= OnKioskStateChangedEvent;
                    currentstatePresenter.RequestLayoutUpdate -= ChildPresenter_LayoutUpdate;
                }

                if (action != null && (action.SwitchModule))
                {
                    Trace.WriteLine(string.Format("{0} Deactivate the current Module.", DateTime.Now));

                    // Deactivate the current module.
                    this.Deactivate();

                    // Switch to a different module or home.
                    Trace.WriteLine(string.Format("{0} switching to new state {1} ", DateTime.Now,action.AcquiredState));
                    RaiseModuleSelectionChangedEvent(action.AcquiredState, args.Action);
                    return;
                }

                // Switch to the requested state in the same module.
                string newStateNameRequested = StateManager.GetNewStateNameByAction(args.Action);
                Trace.WriteLine(string.Format("{0} New state {1} Requested with action {2}", DateTime.Now,newStateNameRequested,args.Action));
                KioskState newStateRequested = StateManager.GetStateByName(newStateNameRequested);

                if (newStateRequested.IsDefault && string.CompareOrdinal(StateManager.CurrentLanguageKey, StateManager.GetDefaultLanguageDictionaryKey()) != 0)
                {
                    isLanguageChanged = true;
                    this.StateManager.CurrentLanguageKey = this.StateManager.GetDefaultLanguageDictionaryKey();
                    //Trace.WriteLine(string.Format("{0} Current Language Key {2} Loaded", DateTime.Now, this.StateManager.CurrentLanguageKey));
                    Trace.WriteLine(string.Format("{0} Current Language Key {1} Loaded", DateTime.Now, this.StateManager.CurrentLanguageKey));
                    //this.CurrentTransactionContext.SelectedLanguageKey = this.StateManager.CurrentLanguageKey;
                    this.CurrentTransactionContext.CurrentLanguageDictionaryPath = this.StateManager.GetCurrentLanguageDictionaryPath();
                    //Trace.WriteLine(string.Format("{0} Current Language Dictionary Path {2} Loaded", DateTime.Now, this.CurrentTransactionContext.CurrentLanguageDictionaryPath));
                    Trace.WriteLine(string.Format("{0} Current Language Dictionary Path {1} Loaded", DateTime.Now, this.CurrentTransactionContext.CurrentLanguageDictionaryPath));
                }
                else if (string.CompareOrdinal(StateManager.CurrentLanguageKey, CurrentTransactionContext.SelectedLanguageKey) != 0)
                {
                    isLanguageChanged = true;
                    if (CurrentTransactionContext.SelectedLanguageKey != null)
                        StateManager.CurrentLanguageKey = CurrentTransactionContext.SelectedLanguageKey;
                    this.CurrentTransactionContext.CurrentLanguageDictionaryPath = this.StateManager.GetCurrentLanguageDictionaryPath();
                }

                /*** Added By Jags on 02/04/2012 to handle multiple Style Dictionaries********************************************/

                if (newStateRequested.IsDefault && string.CompareOrdinal(StateManager.CurrentStyleKey, StateManager.GetDefaultStyleDictionaryKey()) != 0)
                {

                    isStyleChanged = true;
                    this.StateManager.CurrentStyleKey = this.StateManager.GetDefaultStyleDictionaryKey();
                    //this.CurrentTransactionContext.SelectedStyleKey = this.StateManager.CurrentStyleKey;
                    this.CurrentTransactionContext.CurrentStyleDictionaryPath = this.StateManager.GetDefaultStyleDictionaryPath();
                    Trace.WriteLine(string.Format(" {0} - Style Loaded {1} Language loaded {2}", DateTime.Now, stateManager.CurrentStyleKey, stateManager.CurrentLanguageKey));
                }
                else if ((newStateRequested.StyleDictionaryKey == null) && (string.CompareOrdinal(StateManager.CurrentStyleKey, CurrentTransactionContext.SelectedStyleKey) != 0))
                {

                    isStyleChanged = true;
                    if (CurrentTransactionContext.SelectedStyleKey != null)
                        StateManager.CurrentStyleKey = CurrentTransactionContext.SelectedStyleKey;
                    this.CurrentTransactionContext.CurrentStyleDictionaryPath = this.StateManager.GetCurrentStyleDictionaryPath();
                    Trace.WriteLine(string.Format(" {0} - Style Loaded {1} Language loaded {2}", DateTime.Now, stateManager.CurrentStyleKey, stateManager.CurrentLanguageKey));
                }
                else if ((newStateRequested.StyleDictionaryKey != null) && (newStateRequested.StyleDictionaryKey != StateManager.CurrentStyleKey))
                {

                    isStyleChanged = true;
                    //if (newStateRequested.StyleDictionaryKey != null)
                    //{
                    StateManager.CurrentStyleKey = newStateRequested.StyleDictionaryKey;
                    this.CurrentTransactionContext.CurrentStyleDictionaryPath = this.StateManager.GetCurrentStyleDictionaryPath();
                    //}
                    //else
                    //{
                    //    StateManager.CurrentStyleKey = CurrentTransactionContext.SelectedStyleKey;
                    //    this.CurrentTransactionContext.CurrentStyleDictionaryPath = this.StateManager.GetCurrentStyleDictionaryPath();
                    //}
                    Trace.WriteLine(string.Format(" {0} - Style Loaded {1} Language loaded {2}", DateTime.Now, stateManager.CurrentStyleKey, stateManager.CurrentLanguageKey));
                }

                //if (log.IsInfoEnabled) log.Info(" Current state: " + StateManager.CurrentState.Name + ", action : " + args.Action + ", new state: " + newStateNameRequested);
                Trace.WriteLine(string.Format(" Current state: {0} - action : {1} - new state: {2}", StateManager.CurrentState.Name, args.Action, newStateNameRequested));
                var shell = ShellPresenter.ViewGrid as FrameworkElement;
                if (isLanguageChanged || (isStyleChanged))
                {
                    shell.Resources.MergedDictionaries.Clear();
                    //if ( (newStateRequested.StyleDictionaryPath != null) && (string.CompareOrdinal(this.StateManager.GetCurrentStyleDictionaryPath(), newStateRequested.StyleDictionaryPath) != 0))
                    //using (FileStream fs = new FileStream(newStateRequested.StyleDictionaryPath, FileMode.Open))
                    //{
                    //    ResourceDictionary dic = (ResourceDictionary)XamlReader.Load(fs);
                    //    shell.Resources.MergedDictionaries.Add(dic);
                    //}
                    //else if(this.StateManager.CurrentStyleKey == null)
                    //using (FileStream fs = new FileStream(StateManager.DefaultStyleDictionaryPath, FileMode.Open))
                    //{
                    //    ResourceDictionary dic = (ResourceDictionary)XamlReader.Load(fs);
                    //    shell.Resources.MergedDictionaries.Add(dic);
                    //}
                    //else
                    //using (FileStream fs = new FileStream(StateManager.GetCurrentStyleDictionaryPath(), FileMode.Open))
                    //{
                    //    ResourceDictionary dic = (ResourceDictionary)XamlReader.Load(fs);
                    //    shell.Resources.MergedDictionaries.Add(dic);
                    //}

                    if (StateManager.CurrentLanguageKey != null)
                        using (FileStream fs = new FileStream(StateManager.GetCurrentLanguageDictionaryPath(), FileMode.Open))
                        {
                            Trace.WriteLine(string.Format(" {0} - Current Language Dic Path {1} ", DateTime.Now, stateManager.GetCurrentLanguageDictionaryPath()));
                            ResourceDictionary dic = (ResourceDictionary)XamlReader.Load(fs);
                            //if (log.IsInfoEnabled) log.Info(" Loading Language Dictionary : " + this.StateManager.CurrentLanguageKey + " - State :" + StateManager.CurrentState.Name);
                            shell.Resources.MergedDictionaries.Add(dic);
                        }
                    if (StateManager.CurrentStyleKey != null)
                        using (FileStream fs = new FileStream(StateManager.GetCurrentStyleDictionaryPath(), FileMode.Open))
                        {
                            Trace.WriteLine(string.Format(" {0} - Current Style Dic Path {1} ", DateTime.Now, stateManager.GetCurrentStyleDictionaryPath()));
                            ResourceDictionary dic = (ResourceDictionary)XamlReader.Load(fs);
                            //if (log.IsInfoEnabled) log.Info(" Loading Style Dictionary : " + this.StateManager.CurrentStyleKey + " - State :" + StateManager.CurrentState.Name);
                            shell.Resources.MergedDictionaries.Add(dic);
                        }

                }

                // Load the new state and register for corresponding events.
                ShellPresenter.Child = StateManager.LoadState(CurrentTransactionContext, devices, newStateNameRequested);
                ChildPresenter_LayoutUpdate();
                //ShellPresenter.RefreshShellForNewState(StateManager.CurrentState);
                currentstatePresenter = StateManager.CurrentState.PresenterClass as PresenterBase;
                if (currentstatePresenter != null)
                {
                    currentstatePresenter.RequestLayoutUpdate += ChildPresenter_LayoutUpdate;
                    currentstatePresenter.KioskStateChangedEvent += OnKioskStateChangedEvent;
                }
            }
            catch (Exception ex)
            {
                Trace.WriteLine(string.Format("{0} - Error in KioskStateChangedEventArgs - {1} Stack Trace {2}", DateTime.Now, ex.Message, ex.StackTrace));
                Trace.WriteLine(string.Format("{0} - Inner Error in KioskStateChangedEventArgs - {1} \n Inner Stack Trace {2}", DateTime.Now, (ex.InnerException == null) ? "" : ex.InnerException.Message, (ex.InnerException == null) ? "" : ex.InnerException.StackTrace));
                //if (log.IsInfoEnabled) log.Info("Caught exception in OnKioskStateChangedEvent." + ex.Message + " - State :" + StateManager.CurrentState.Name);
            }
        }