Esempio n. 1
0
        /// <summary>
        /// Lädt die VarioiplusLogin- und Window1-Klasse und stellt die Interaktionslogik
        /// für das UI der VarioiplusLogin-Klasse.
        /// </summary>
        /// <param name="VarioiplusLogin">Eine Instanz der VarioiplusLogin-Klasse</param>
        /// <remarks>Wird in einer Instanz des ApplicationInitializeDelegate verarbeitet.</remarks>
        private void applicationInitialize(Login VarioiplusLogin)
        {
            string[] cmLineArg = System.Environment.GetCommandLineArgs();

            bool      RegisterACObjects  = false;
            bool      PropPersistenceOff = false;
            bool      WCFOff             = cmLineArg.Contains("/WCFOff");
            bool      simulation         = cmLineArg.Contains("/Simulation");
            string    UserName           = "";
            string    PassWord           = "";
            eWpfTheme wpfTheme           = gip.iplus.client.Properties.Settings.Default.WpfTheme;

            if (!cmLineArg.Contains("/autologin"))
            {
                UserName = gip.iplus.client.Properties.Settings.Default.User;
#if DEBUG
                PassWord = gip.iplus.client.Properties.Settings.Default.Password;
#endif
            }

            if (cmLineArg.Contains("-controlLoad=True"))
            {
                VarioiplusLogin.IsLoginWithControlLoad = true;
            }

            String errorMsg = "";
            for (int i = 0; i < 3; i++)
            {
                if (!cmLineArg.Contains("/autologin") || i > 0)
                {
                    VarioiplusLogin.DisplayLogin(true, UserName, PassWord, wpfTheme, errorMsg);
                    VarioiplusLogin.GetLoginResult(ref UserName, ref PassWord, ref RegisterACObjects, ref PropPersistenceOff);
                    wpfTheme = VarioiplusLogin.WpfTheme;
                    errorMsg = "";
                    VarioiplusLogin.DisplayLogin(false, "", "", wpfTheme, errorMsg);
                }
                else
                {
                    if (i > 0)
                    {
                        break;
                    }
                    UserName = WindowsIdentity.GetCurrent().Name.Split('\\')[1];
                    PassWord = "******";
                }

                ControlManager.WpfTheme = wpfTheme;
                short result = _StartUpManager.LoginUser(UserName, PassWord, RegisterACObjects, PropPersistenceOff, ref errorMsg, WCFOff, simulation);
                if (result == 1)
                {
                    if (!cmLineArg.Contains("/autologin"))
                    {
                        gip.iplus.client.Properties.Settings.Default.User = UserName;
#if DEBUG
                        gip.iplus.client.Properties.Settings.Default.Password = PassWord;
#endif
                        gip.iplus.client.Properties.Settings.Default.WpfTheme = wpfTheme;
                        gip.iplus.client.Properties.Settings.Default.Save();
                    }

                    break;
                }
                // Keine Lizenz
                if (result == -1)
                {
                    break;
                }
            }

            if (ACRoot.SRoot != null)
            {
                ACRoot.SRoot.Environment.License.PropertyChanged += License_PropertyChanged;
            }

            // Initialisierung abgeschlossen, Hauptfenster laden
            Dispatcher.BeginInvoke(DispatcherPriority.Normal, (Invoker) delegate
            {
                ControlManager.RegisterImplicitStyles(this);
                Application.Current.ShutdownMode = ShutdownMode.OnExplicitShutdown;
                if (ACRoot.SRoot == null)
                {
                    Shutdown();
                    return;
                }

                Application.Current.MainWindow = new Masterpage();
                UpdateLicenseTitle();
                Application.Current.MainWindow.Show();
            });
        }
        /// <summary>
        /// 1. Call from App
        /// </summary>
        /// <param name="display"></param>
        /// <param name="defaultUser"></param>
        /// <param name="defaultPassword"></param>
        public void DisplayLogin(bool display, string defaultUser, string defaultPassword, eWpfTheme wpfTheme, String errorMsg)
        {
            if (!this.ProgressGrid.CheckAccess())
            {
                this.ProgressGrid.Dispatcher.BeginInvoke(DispatcherPriority.Send, new Action <bool, string, string, eWpfTheme, String>(DisplayLogin), display, defaultUser, defaultPassword, wpfTheme, errorMsg);
                return;
            }

            if (display)
            {
                CheckRestoreSameScreen.IsChecked = !ControlManager.RestoreWindowsOnSameScreen;
                CheckTouchScreen.IsChecked       = ControlManager.TouchScreenMode;
                _CountAttempts++;
                if (_CountAttempts <= 1)
                {
                    _User            = defaultUser;
                    TextboxUser.Text = _User;
                    TextboxKey.Text  = "";
#if DEBUG
                    _Password = defaultPassword;
                    TextboxPassword.Password = _Password;
#endif
                    selTheme.ItemsSource   = System.Enum.GetValues(typeof(eWpfTheme));
                    selTheme.SelectedValue = wpfTheme;
                    //selTheme.SelectedIndex = 0;
                }
                else
                {
                    Msg msgLogon = Messages.GlobalMsg.MsgDetails.Where(c => c.Message == "DB-Connection failed!").FirstOrDefault();
                    Msg userMsg;
                    if (msgLogon != null)
                    {
                        userMsg = new Msg()
                        {
                            Message = "Cannot connect to database. Check your connection string or rights connecting the database!", MessageLevel = eMsgLevel.Info
                        };
                    }
                    else
                    {
                        userMsg = new Msg()
                        {
                            Message = String.Format("User {0} doesn't exist or wrong password!", this.User), MessageLevel = eMsgLevel.Info
                        };
                    }
                    if (!String.IsNullOrEmpty(errorMsg))
                    {
                        userMsg.Message += " // " + errorMsg;
                    }
                    //VBWindowDialogMsg vbMessagebox = new VBWindowDialogMsg(userMsg, eMsgButton.OK, null);
                    //vbMessagebox.ShowMessageBox();
                    MessageBox.Show(userMsg.Message, "Info", MessageBoxButton.OK, MessageBoxImage.Exclamation);

                    _Password = "";
                    TextboxPassword.Password = _Password;
                }

                _CtrlPressed = false;
                _F1Pressed   = false;

                ProgressGrid.Visibility = System.Windows.Visibility.Collapsed;
                LoginGrid.Visibility    = System.Windows.Visibility.Visible;
            }
            else
            {
                Monitor.Enter(_WaitOnOkClick);
                LoginGrid.Visibility    = System.Windows.Visibility.Collapsed;
                ProgressGrid.Visibility = System.Windows.Visibility.Visible;
            }
        }