diff --git a/BeWo/BeWo.csproj b/BeWo/BeWo.csproj index 471267ae1..28dcbe8d6 100644 --- a/BeWo/BeWo.csproj +++ b/BeWo/BeWo.csproj @@ -306,6 +306,10 @@ MSBuild:Compile Designer + + Designer + MSBuild:Compile + MSBuild:Compile Designer @@ -996,6 +1000,9 @@ ValueListEntryEditControl.xaml + + DebugMessageLogView.xaml + OwnChatSettingsView.xaml @@ -2452,392 +2459,392 @@ False + Include + True - Include - True Assembly False + Include + True - Include - True Assembly False + Include + True - Include - True Assembly False + Include + True - Include - True Assembly False + Include + True - Include - True Assembly False + Include + True - Include - True Assembly False + Include + True - Include - True Assembly False + Include + True - Include - True Assembly False + Include + True - Include - True Assembly False + Include + True - Include - True Assembly False + Include + True - Include - True Assembly False + Include + True - Include - True Assembly False + Include + True - Include - True Assembly False + Include + True - Include - True Assembly False + Include + True - Include - True Assembly False + Include + True - Include - True Assembly False + Include + True - Include - True Assembly False + Include + True - Include - True Assembly False + Include + True - Include - True Assembly False + Include + True - Include - True Assembly False + Include + True - Include - True Assembly False + Include + True - Include - True Assembly False + Include + True - Include - True Assembly False + Include + True - Include - True Assembly False + Include + True - Include - True Assembly False + Include + True - Include - True Assembly False + Include + True - Include - True Assembly False + Include + True - Include - True Assembly False + Include + True - Include - True Assembly False + Include + True - Include - True Assembly False + Include + True - Include - True Assembly False + Include + True - Include - True Assembly False + Include + True - Include - True Assembly False + Include + True - Include - True Assembly False + Include + True - Include - True Assembly False + Include + True - Include - True Assembly False + Include + True - Include - True Assembly False + Include + True - Include - True Assembly False + Include + True - Include - True Assembly diff --git a/BeWo/BeWoApp.xaml.cs b/BeWo/BeWoApp.xaml.cs index 67e0d81d5..23b2e306a 100644 --- a/BeWo/BeWoApp.xaml.cs +++ b/BeWo/BeWoApp.xaml.cs @@ -18,6 +18,7 @@ using BeWo.Core; using BeWo.Core.Config; using BeWo.ServiceProxy; using BeWo.View; +using BeWo.View.Detail; using BeWo.View.Navigation; using BeWo.View.Navigation.Filter; @@ -36,9 +37,12 @@ namespace BeWo /// /// Interaction logic for App.xaml /// - public partial class BeWoApp : Application, INotifyPropertyChanged - { - private static FrameworkElement _lockedContent; + public partial class BeWoApp : INotifyPropertyChanged + { + private static DebugMessageLogView _DebugMessageLogView; + + + private static FrameworkElement _lockedContent; public static LoginControl LoginControl; @@ -76,19 +80,16 @@ namespace BeWo internal static PasswortSecurityStrength PasswortStrength; - public static BeWoApp CurrentBeWo - { - get { return Current as BeWoApp; } - } + public static BeWoApp CurrentBeWo => Current as BeWoApp; - public static Dictionary ICD10Diagnosis { get; set; } + public static Dictionary ICD10Diagnosis { get; set; } public static EmployeeDC LoggedOnEmployee { - get { return _LoggedOnEmployee; } + get => _LoggedOnEmployee; - set { _LoggedOnEmployee = value; } - } + set => _LoggedOnEmployee = value; + } public static long? LoggedOnEmployeeOid => _LoggedOnEmployee?.EmployeeOid; @@ -99,34 +100,15 @@ namespace BeWo set => _CompactLoggedOnEmployee = value; } - public ObservableCollection LoggedOnUsersRights + public ObservableCollection LoggedOnUsersRights => LoggedOnUser?.GetGrantedRights().ToObservableCollection(); + + public DocumentWatcher DocumentWatcher => _DocumentWatcher ?? (_DocumentWatcher = new DocumentWatcher()); + + public static string ServerAddress { - get - { - if (LoggedOnUser != null) - return LoggedOnUser.GetGrantedRights().ToObservableCollection(); - return null; - } - } + get => _ServerAddress; - public DocumentWatcher DocumentWatcher - { - get - { - if (_DocumentWatcher == null) - { - _DocumentWatcher = new DocumentWatcher(); - } - - return _DocumentWatcher; - } - } - - public static string ServerAddress - { - get { return _ServerAddress; } - - set + set { //if (_ServerAddress != null && _ServerAddress.Equals(value)) // return; @@ -218,227 +200,228 @@ namespace BeWo AppSettings.ShowAdvisedAttendedFlag = false; - String timeRecordingMenuName = ""; + var timeRecordingMenuName = string.Empty; if (_Mandator != null) { - string val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "ShowMedication"); + var val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.ShowMedication); AppSettings.IsMedicationAllowed = val != null && val.Equals("1"); - val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "ShowScheduler"); + val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.ShowScheduler); AppSettings.IsSchedulerAllowed = val != null && val.Equals("1"); - val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "ShowWohnheime"); + val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.ShowWohnheime); AppSettings.IsWohnheimAllowed = val != null && val.Equals("1"); - val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "ShowChat"); - AppSettings.ShowOwnChat = val != null && val.Equals("1"); + val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.ShowChat); + AppSettings.ShowOwnChat = val != null && val.Equals("1"); - val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "ShowOwnChatSettings"); - AppSettings.ShowOwnChatSettings = val != null && val.Equals("1"); + val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.ShowOwnChatSettings); + AppSettings.ShowOwnChatSettings = val != null && val.Equals("1"); - val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "SetStartTimeToEndTimeAfterSave"); - AppSettings.SetStartTimeToEndTimeAfterSave = val != null && val.Equals("1"); - - val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "IsServiceRecordNoticeMandatory"); - if (val != null && val.Equals("0")) + val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.SetStartTimeToEndTimeAfterSave); + AppSettings.SetStartTimeToEndTimeAfterSave = val != null && val.Equals("1"); + + val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.IsServiceRecordNoticeMandatory); + if(val != null && val.Equals("0")) { isServiceRecordNoticeMandatory = false; } - - val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "IsPasswordSecurityActiv"); - if (val != null && val.Equals("1")) - { - isPasswordSecurityActiv = true; - } - val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "IsEndDateVisible"); - if (val != null && val.Equals("1")) - { - isEndDateVisible = true; - } + val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.IsPasswordSecurityActiv); + if(val != null && val.Equals("1")) + { + isPasswordSecurityActiv = true; + } - val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "IsOnlyYearMonthVisible"); - if (val != null && val.Equals("1")) - { - isOnlyYearMonthVisible = true; - } - - val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "IsZeiterfassungInStdMin"); - if (val != null && val.Equals("1")) - { - isZeiterfassungInStdMin = true; - } - if (!isZeiterfassungInStdMin) - { - AppSettings.LetzteZeiterfassungsDauer = ZeiterfassungsDauer.Minuten; - } - val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "IsZeiterfassDateNormal"); - if (val != null && val.Equals("0")) - { - isZeiterfassDateNormal = false; - } - + val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.IsEndDateVisible); + if(val != null && val.Equals("1")) + { + isEndDateVisible = true; + } - val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "MaxDaysEditServiceRecordsAllowed"); + val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.IsOnlyYearMonthVisible); + if(val != null && val.Equals("1")) + { + isOnlyYearMonthVisible = true; + } + + val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.IsZeiterfassungInStdMin); + if(val != null && val.Equals("1")) + { + isZeiterfassungInStdMin = true; + } + if(!isZeiterfassungInStdMin) + { + AppSettings.LetzteZeiterfassungsDauer = ZeiterfassungsDauer.Minuten; + } + val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.IsZeiterfassDateNormal); + if(val != null && val.Equals("0")) + { + isZeiterfassDateNormal = false; + } + + + val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.MaxDaysEditServiceRecordsAllowed); int result; - if (Int32.TryParse(val, out result)) + if(Int32.TryParse(val, out result)) { maxDaysEditServiceRecordsAllowed = result; } - val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "HilfeplanAuslaufAuswahl"); - int resultplan; - if (Int32.TryParse(val, out resultplan)) - { - hilfeplanAuslaufAuswahl = resultplan; - } - - val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "LastSelectedStundenkontoIntervall"); - int resultinterval; - if (Int32.TryParse(val, out resultinterval)) - { - lastSelectedStundenkontoIntervall = resultinterval; - } + val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.HilfeplanAuslaufAuswahl); + int resultplan; + if(Int32.TryParse(val, out resultplan)) + { + hilfeplanAuslaufAuswahl = resultplan; + } - val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "AnzTageZeiterfassErfolgt"); - int resultzeitplan; - if (Int32.TryParse(val, out resultzeitplan)) - { - anzTageZeiterfassErfolgt = resultzeitplan; - } - - val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "ZeiterfassungsSchwellwert"); - int resultschwell; - if (Int32.TryParse(val, out resultschwell)) - { - zeiterfassungsSchwellwert = resultschwell; - } + val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.LastSelectedStundenkontoIntervall); + int resultinterval; + if(Int32.TryParse(val, out resultinterval)) + { + lastSelectedStundenkontoIntervall = resultinterval; + } - val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "ShowDistanceFields"); - if (val != null && val.Equals("1")) + val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.AnzTageZeiterfassErfolgt); + int resultzeitplan; + if(Int32.TryParse(val, out resultzeitplan)) + { + anzTageZeiterfassErfolgt = resultzeitplan; + } + + val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.ZeiterfassungsSchwellwert); + int resultschwell; + if(Int32.TryParse(val, out resultschwell)) + { + zeiterfassungsSchwellwert = resultschwell; + } + + val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.ShowDistanceFields); + if(val != null && val.Equals("1")) { showServiceRecordsDistanceFields = true; } - val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "ShowBetrag"); - if (val != null && val.Equals("1")) - { - showBetrag = true; - } + val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.ShowBetrag); + if(val != null && val.Equals("1")) + { + showBetrag = true; + } - val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "ShowHilfeplanBezeichnung"); - if (val != null && val.Equals("1")) - { - showHilfeplanBezeichnung = true; - } + val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.ShowHilfeplanBezeichnung); + if(val != null && val.Equals("1")) + { + showHilfeplanBezeichnung = true; + } - val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "ShowArbeitszeiten"); - if (val != null && val.Equals("1")) - { - showArbeitszeiten = true; - } + val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.ShowArbeitszeiten); + if(val != null && val.Equals("1")) + { + showArbeitszeiten = true; + } - val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "ShowRessources"); - AppSettings.ShowRessources = val != null && val.Equals("1"); + val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.ShowRessources); + AppSettings.ShowRessources = val != null && val.Equals("1"); - - val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "ShowTeamNews"); - if (val != null && val.Equals("1")) + + + val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.ShowTeamNews); + if(val != null && val.Equals("1")) { showTeamNews = true; } - val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "ShowPivotGrid"); - if (val != null && val.Equals("1")) - { - showPivotGrid = true; - } + val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.ShowPivotGrid); + if(val != null && val.Equals("1")) + { + showPivotGrid = true; + } - val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "ShowUrlaubsplanung"); - if (val != null && val.Equals("1")) - { - showUrlaubsplanung = true; - } + val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.ShowUrlaubsplanung); + if(val != null && val.Equals("1")) + { + showUrlaubsplanung = true; + } - val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "dontShowSpitzabrechnung"); - if (val != null && val.Equals("1")) - { - dontShowSpitzabrechnung = true; - } + val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.DontShowSpitzabrechnung); + if(val != null && val.Equals("1")) + { + dontShowSpitzabrechnung = true; + } - val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "ShowDienstplanung"); - if (val != null && val.Equals("1")) - { - showDienstplanung = true; - } + val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.ShowDienstplanung); + if(val != null && val.Equals("1")) + { + showDienstplanung = true; + } - val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "ShowMarker"); - if (val != null && val.Equals("1")) + val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.ShowMarker); + if(val != null && val.Equals("1")) { showMarker = true; } - val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "ShowAnnualReport"); - if (val != null && val.Equals("1")) + val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.ShowAnnualReport); + if(val != null && val.Equals("1")) { showAnnualReport = true; } - val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "ShowCustomerDistanceFields"); - if (val != null && val.Equals("1")) + val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.ShowCustomerDistanceFields); + if(val != null && val.Equals("1")) { showCustomerDistanceFields = true; } - val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "ShowAdditionalService"); - if (val != null && val.Equals("1")) + val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.ShowAdditionalService); + if(val != null && val.Equals("1")) { showAdditionalService = true; } - val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "ShowRoundedDurationInEmployeeAnalysis"); - if (val != null && val.Equals("0")) + val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.ShowRoundedDurationInEmployeeAnalysis); + if(val != null && val.Equals("0")) { showRoundedDurationInEmployeeAnalysis = false; } - val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "ShowDatevFields"); - if (val != null && val.Equals("1")) + val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.ShowDatevFields); + if(val != null && val.Equals("1")) { showDatevFields = true; } - val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "PrinterSettingsUseLandscape"); - if (val != null && val.Equals("1")) + val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.PrinterSettingsUseLandscape); + if(val != null && val.Equals("1")) { printerSettingsUseLandscape = true; } - val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "PrinterSettingsUseMargins"); - if (val != null && val.Equals("1")) + val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.PrinterSettingsUseMargins); + if(val != null && val.Equals("1")) { printerSettingsUseMargins = true; } - val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "PrinterSettingsUsePaperKind"); - if (val != null && val.Equals("1")) + val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.PrinterSettingsUsePaperKind); + if(val != null && val.Equals("1")) { printerSettingsUsePaperKind = true; } - val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "HideServiceRecordInsertedByAndInsertedOn"); - if(val != null && val.Equals("1")) - { - hideServiceRecordInsertedByAndInsertedOn = true; - } + val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.HideServiceRecordInsertedByAndInsertedOn); + if(val != null && val.Equals("1")) + { + hideServiceRecordInsertedByAndInsertedOn = true; + } - val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "ShowSignature"); - if (val != null && val.Equals("1")) - { - showSignatures = true; - } + val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.ShowSignature); + if(val != null && val.Equals("1")) + { + showSignatures = true; + } - val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "ShowRtfTextfield"); - if (val != null && val.Equals("1")) - { - showRtfTextfield = true; - } + val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.ShowRtfTextfield); + if(val != null && val.Equals("1")) + { + showRtfTextfield = true; + } - val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, "ShowEmployeeSignature"); - if(val != null && val.Equals("1")) + val = UserSettingsUtils.GetSettingValue(_Mandator.Settings, SettingsKeys.ShowEmployeeSignature); + if(val != null && val.Equals("1")) { showEmployeeSignature = true; } @@ -587,7 +570,7 @@ namespace BeWo { get { - var lockTime = _Mandator.Settings.SplitToKeyValuePairList(";", "=").FirstOrDefault(f => f.Key.Equals("TimeUntilUILock")).Value; + var lockTime = _Mandator.Settings.SplitToKeyValuePairList(";", "=").FirstOrDefault(f => f.Key.Equals(SettingsKeys.TimeUntilUILock)).Value; if(_LoggedOnUser != null && lockTime != null) { @@ -673,19 +656,19 @@ namespace BeWo if (_AppSettings != null && _LoggedOnUser != null && _AppSettings.IsDirty) { _AppSettings.IsDirty = false; - UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, "WindowStateType", ((int) _AppSettings.WindowState).ToString(), _LoggedOnUser.Settings); - UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, "LastSelectedServiceRecordTimeInterval", ((int) _AppSettings.LastSelectedServiceRecordTimeInterval).ToString(), _LoggedOnUser.Settings); - UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, "CustomerFilterInZeiterfassung", ((int)_AppSettings.CustomerFilterInZeiterfassung).ToString(), _LoggedOnUser.Settings); - UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, "CustomerFilterSupportConcepts", ((int)_AppSettings.CustomerFilterSupportConcepts).ToString(), _LoggedOnUser.Settings); - UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, "CustomerFilterCustomers", ((int)_AppSettings.CustomerFilterCustomers).ToString(), _LoggedOnUser.Settings); - UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, "ShowExpiredSupportConcepts", _AppSettings.ShowExpiredSupportConcepts ? "1" : "0", _LoggedOnUser.Settings); - UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, "ShowServiceRecordGridControl", _AppSettings.ShowServiceRecordGridControl ? "1" : "0", _LoggedOnUser.Settings); - UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, "StartupPanelMaximized", _AppSettings.StartupPanelMaximized, _LoggedOnUser.Settings); - UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, "HideServiceRecordInsertedByAndInsertedOn", _AppSettings.HideServiceRecordInsertedByAndInsertedOn ? "1" : "0", _LoggedOnUser.Settings); - UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, "DocumentationFontSize", _AppSettings.DocumentationFontSize.ToString(), _LoggedOnUser.Settings); - UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, "ZeigeNurMeineTermine", _AppSettings.ZeigeNurMeineTermine ? "1" : "0", _LoggedOnUser.Settings); - UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, "LastSelectedServiceRecordTimeIntervalDays", _AppSettings.LastSelectedServiceRecordTimeIntervalDays.ToString(), _LoggedOnUser.Settings); - UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, "LetzteZeiterfassungsDauer", ((int)_AppSettings.LetzteZeiterfassungsDauer).ToString(), _LoggedOnUser.Settings); + UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.WindowStateType, ((int) _AppSettings.WindowState).ToString(), _LoggedOnUser.Settings); + UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.LastSelectedServiceRecordTimeInterval, ((int) _AppSettings.LastSelectedServiceRecordTimeInterval).ToString(), _LoggedOnUser.Settings); + UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.CustomerFilterInZeiterfassung, ((int)_AppSettings.CustomerFilterInZeiterfassung).ToString(), _LoggedOnUser.Settings); + UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.CustomerFilterSupportConcepts, ((int)_AppSettings.CustomerFilterSupportConcepts).ToString(), _LoggedOnUser.Settings); + UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.CustomerFilterCustomers, ((int)_AppSettings.CustomerFilterCustomers).ToString(), _LoggedOnUser.Settings); + UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.ShowExpiredSupportConcepts, _AppSettings.ShowExpiredSupportConcepts ? "1" : "0", _LoggedOnUser.Settings); + UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.ShowServiceRecordGridControl, _AppSettings.ShowServiceRecordGridControl ? "1" : "0", _LoggedOnUser.Settings); + UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.StartupPanelMaximized, _AppSettings.StartupPanelMaximized, _LoggedOnUser.Settings); + UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.HideServiceRecordInsertedByAndInsertedOn, _AppSettings.HideServiceRecordInsertedByAndInsertedOn ? "1" : "0", _LoggedOnUser.Settings); + UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.DocumentationFontSize, _AppSettings.DocumentationFontSize.ToString(), _LoggedOnUser.Settings); + UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.ZeigeNurMeineTermine, _AppSettings.ZeigeNurMeineTermine ? "1" : "0", _LoggedOnUser.Settings); + UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.LastSelectedServiceRecordTimeIntervalDays, _AppSettings.LastSelectedServiceRecordTimeIntervalDays.ToString(), _LoggedOnUser.Settings); + UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.LetzteZeiterfassungsDauer, ((int)_AppSettings.LetzteZeiterfassungsDauer).ToString(), _LoggedOnUser.Settings); string val = string.Empty; if (_AppSettings.StartupPanelOrder != null) @@ -701,7 +684,7 @@ namespace BeWo } } - UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, "StartupPanelOrder", val, _LoggedOnUser.Settings); + UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.StartupPanelOrder, val, _LoggedOnUser.Settings); ServiceFacade.DoUserServiceAsync(s => s.UpdateUserSettings(_LoggedOnUser.UserOid.Value, _LoggedOnUser.Settings), ReloadSettings, false); } @@ -724,12 +707,9 @@ namespace BeWo } internal void FirePropertyChanged(string pPropertyName) - { - if (PropertyChanged != null) - { - PropertyChanged(this, new PropertyChangedEventArgs(pPropertyName)); - } - } + { + PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(pPropertyName)); + } public static void InitAutoUILocking() { @@ -738,11 +718,11 @@ namespace BeWo var settingsKeyValuePairList = _Mandator.Settings.SplitToKeyValuePairList(";", "=").ToList(); - var x = settingsKeyValuePairList.FirstOrDefault(f => f.Key.Equals("TimeUntilUILock")).Value ?? "NULL"; + var x = settingsKeyValuePairList.FirstOrDefault(f => f.Key.Equals(SettingsKeys.TimeUntilUILock)).Value ?? "NULL"; var y = _LockUITime; - AutoLockUI.LockUITime = Convert.ToInt32(settingsKeyValuePairList.FirstOrDefault(f => f.Key.Equals("TimeUntilUILock")).Value ?? LockUITime.ToString()); + AutoLockUI.LockUITime = Convert.ToInt32(settingsKeyValuePairList.FirstOrDefault(f => f.Key.Equals(SettingsKeys.TimeUntilUILock)).Value ?? LockUITime.ToString()); AutoLockUI.DoAutoLockUIEvent += AutoLockUIDoAutoLockUIEvent; @@ -791,69 +771,69 @@ namespace BeWo _AppSettings = new AppSettings(); var settings = _LoggedOnUser.Settings; - var val = UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, "WindowStateType", settings); + var val = UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.WindowStateType, settings); if (int.TryParse(val, out var result)) { _AppSettings.WindowState = (AppSettings.WindowStateType) result; } - val = UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, "LastSelectedServiceRecordTimeInterval", settings); - if (int.TryParse(val, out result)) + val = UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.LastSelectedServiceRecordTimeInterval, settings); + if(int.TryParse(val, out result)) { - _AppSettings.LastSelectedServiceRecordTimeInterval = (ServiceRecordTimeInterval) result; + _AppSettings.LastSelectedServiceRecordTimeInterval = (ServiceRecordTimeInterval)result; } - val = UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, "CustomerFilterInZeiterfassung", settings); - if (int.TryParse(val, out result)) - { - _AppSettings.CustomerFilterInZeiterfassung = (CustomerFilterEnum)result; - } + val = UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.CustomerFilterInZeiterfassung, settings); + if(int.TryParse(val, out result)) + { + _AppSettings.CustomerFilterInZeiterfassung = (CustomerFilterEnum)result; + } - val = UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, "CustomerFilterSupportConcepts", settings); - if (int.TryParse(val, out result)) - { - _AppSettings.CustomerFilterSupportConcepts = (CustomerFilterEnum)result; - } + val = UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.CustomerFilterSupportConcepts, settings); + if(int.TryParse(val, out result)) + { + _AppSettings.CustomerFilterSupportConcepts = (CustomerFilterEnum)result; + } - val = UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, "CustomerFilterCustomers", settings); - if (int.TryParse(val, out result)) - { - _AppSettings.CustomerFilterCustomers = (CustomerFilterEnum)result; - } + val = UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.CustomerFilterCustomers, settings); + if(int.TryParse(val, out result)) + { + _AppSettings.CustomerFilterCustomers = (CustomerFilterEnum)result; + } - val = UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, "ShowServiceRecordGridControl", settings); + val = UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.ShowServiceRecordGridControl, settings); _AppSettings.ShowServiceRecordGridControl = val == "1"; - val = UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, "ShowExpiredSupportConcepts", settings); + val = UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.ShowExpiredSupportConcepts, settings); _AppSettings.ShowExpiredSupportConcepts = val != "0"; - - - _AppSettings.StartupPanelMaximized = UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, "StartupPanelMaximized", settings); - - _AppSettings.DocumentationFontSize = Convert.ToDouble(UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, "DocumentationFontSize", settings)); - - //val = GetSettingValue(SettingsType.ApplicationSettings, "ZeigeNurMeineTermine"); - //_AppSettings.ZeigeNurMeineTermine = val != "0"; - - _AppSettings.ZeigeNurMeineTermine = UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, "ZeigeNurMeineTermine", settings) == "1"; - - val = UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, "LastSelectedServiceRecordTimeIntervalDays", settings); - if (val != null) - { - _AppSettings.LastSelectedServiceRecordTimeIntervalDays = Convert.ToInt32(UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, "LastSelectedServiceRecordTimeIntervalDays", settings)); - } - val = UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, "LetzteZeiterfassungsDauer", settings); - if (val != null) - { - var x = Convert.ToInt32(UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, "LetzteZeiterfassungsDauer", settings)); - _AppSettings.LetzteZeiterfassungsDauer = x == 0 ? ZeiterfassungsDauer.Minuten : ZeiterfassungsDauer.Stunden; - } + _AppSettings.StartupPanelMaximized = UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.StartupPanelMaximized, settings); - val = UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, "StartupPanelOrder", settings); - if (val != null) + _AppSettings.DocumentationFontSize = Convert.ToDouble(UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.DocumentationFontSize, settings)); + + //val = GetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.ZeigeNurMeineTermine"); + //_AppSettings.ZeigeNurMeineTermine = val != "0"; + + _AppSettings.ZeigeNurMeineTermine = UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.ZeigeNurMeineTermine, settings) == "1"; + + val = UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.LastSelectedServiceRecordTimeIntervalDays, settings); + if(val != null) + { + _AppSettings.LastSelectedServiceRecordTimeIntervalDays = Convert.ToInt32(UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.LastSelectedServiceRecordTimeIntervalDays, settings)); + } + + + val = UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.LetzteZeiterfassungsDauer, settings); + if(val != null) + { + var x = Convert.ToInt32(UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.LetzteZeiterfassungsDauer, settings)); + _AppSettings.LetzteZeiterfassungsDauer = x == 0 ? ZeiterfassungsDauer.Minuten : ZeiterfassungsDauer.Stunden; + } + + val = UserSettingsUtils.GetSettingValue(SettingsType.ApplicationSettings, SettingsKeys.StartupPanelOrder, settings); + if (val != null) { _AppSettings.StartupPanelOrder = new List(); var panels = val.Split('|'); @@ -871,52 +851,49 @@ namespace BeWo private void BtnOpenServiceRecordView_Click(object sender, RoutedEventArgs e) { - var btn = sender as Button; - if (btn == null) return; + if (!(sender is Button btn)) + { + return; + } - var dc = btn.Tag as CompactSupportConceptDC; + if (!(btn.Tag is CompactSupportConceptDC dc)) + { + return; + } - if (dc == null) return; - - if (MainControl != null) - MainControl.NavigateToServiceRecordView(dc.SupportConceptOid); - } + MainControl?.NavigateToServiceRecordView(dc.SupportConceptOid); + } private void Togglebutton_maximise_Checked(object sender, RoutedEventArgs e) - { - if (MainControl != null) - MainControl.Maximize(); - } + { + MainControl?.Maximize(); + } private void Togglebutton_maximise_Unchecked(object sender, RoutedEventArgs e) - { - if (MainControl != null) - MainControl.Minimize(); - } + { + MainControl?.Minimize(); + } private void TogglebuttonChat_maximise_Unchecked(object sender, RoutedEventArgs e) { - if (MainControl.HomeView.ServiceChatView != null) - MainControl.HomeView.ServiceChatView.Normal(); + MainControl.HomeView.ServiceChatView?.Normal(); } private void TogglebuttonChat_maximise_Checked(object sender, RoutedEventArgs e) { - if (MainControl.HomeView.ServiceChatView != null) - MainControl.HomeView.ServiceChatView.Maximize(); + MainControl.HomeView.ServiceChatView?.Maximize(); } private void TogglebuttonChat_Minimize_Checked(object sender, RoutedEventArgs e) { - if (MainControl.HomeView.ServiceChatView != null) - MainControl.HomeView.ServiceChatView.Minimize(); + MainControl.HomeView.ServiceChatView?.Minimize(); } private void FrameLeftMouseDown(object sender, MouseButtonEventArgs e) { var border = (Border) sender; var borderParent = (Grid) border.Parent; - DependencyObject template = borderParent.TemplatedParent; + var template = borderParent.TemplatedParent; var parent = new Window(); var x = (FrameworkElement) template; @@ -927,12 +904,14 @@ namespace BeWo { y = (FrameworkElement) x.Parent; if (y != null) - x = y; + { + x = y; + } } - if (x is Window) + if (x is Window window) { - parent = (Window) x; + parent = window; parent.DragMove(); } } @@ -954,7 +933,7 @@ namespace BeWo _lockedContent = CurrentBeWo.MainWindow?.Content as FrameworkElement; - if (_lockedContent is Grid && (_lockedContent as Grid).Children.Contains(LoginControl)) + if (_lockedContent is Grid grid && grid.Children.Contains(LoginControl)) { AutoLockUI.StartAutoLockUIOption(); return; @@ -976,11 +955,14 @@ namespace BeWo var lockedPage = new LockedPage(); lockedPage.ButtonLogin.Click += UnlockBeWoPlaner; - CurrentBeWo.MainWindow.Content = lockedPage; + if(CurrentBeWo?.MainWindow != null) + { + CurrentBeWo.MainWindow.Content = lockedPage; - Current.Dispatcher.Invoke(new Action(() => CurrentBeWo.MainWindow?.Activate())); + Current.Dispatcher.Invoke(new Action(() => CurrentBeWo.MainWindow?.Activate())); + } - AutoLockUI.StartAutoLockUIOption(); + AutoLockUI.StartAutoLockUIOption(); } private static void UnlockBeWoPlaner(object sender, RoutedEventArgs e) @@ -992,8 +974,8 @@ namespace BeWo lbtnParent.Children.CopyTo(mainWindowUIElements, 0); var elementList = mainWindowUIElements.ToList(); - var username = ((TextBox) elementList.Where(el => el is TextBox && ((TextBox) el).Name.Equals("TextBoxUsername")).ToList()[0]).Text; - var password = ((PasswordBox) elementList.Where(el => el is PasswordBox && ((PasswordBox) el).Name.Equals("PasswordBoxPassword")).ToList()[0]).Password; + var username = ((TextBox) elementList.Where(el => el is TextBox textBox && textBox.Name.Equals("TextBoxUsername")).ToList()[0]).Text; + var password = ((PasswordBox) elementList.Where(el => el is PasswordBox passwordBox && passwordBox.Name.Equals("PasswordBoxPassword")).ToList()[0]).Password; if (string.IsNullOrEmpty(username) || !username.Equals(_LoggedOnUser.LoginName, StringComparison.OrdinalIgnoreCase)) { @@ -1015,7 +997,10 @@ namespace BeWo Current.Dispatcher.Invoke(delegate { - CurrentBeWo.MainWindow.Content = _lockedContent; + if(CurrentBeWo?.MainWindow != null) + { + CurrentBeWo.MainWindow.Content = _lockedContent; + } MainControl.ShowCurrentModalViewWindowsAgain(); }); @@ -1085,5 +1070,49 @@ namespace BeWo // e => MainControl.AufOffeneTerminePruefen(), null ,TimeSpan.Zero, TimeSpan.FromMinutes(1) // ); //} + + public static void LogMessage(string message) + { +#if DEBUG + if(_DebugMessageLogView == null) + { + _DebugMessageLogView = new DebugMessageLogView(); + } + + _DebugMessageLogView.Closed += (s, e) => { _DebugMessageLogView = null; }; + + _DebugMessageLogView.Show(); + _DebugMessageLogView.LogMessage(message); +#endif + } + + public static void LogMessage(string message, DebugWindowMessageColor color) + { +#if DEBUG + if(_DebugMessageLogView == null) + { + _DebugMessageLogView = new DebugMessageLogView(); + } + + _DebugMessageLogView.Closed += (s, e) => { _DebugMessageLogView = null; }; + + _DebugMessageLogView.Show(); + _DebugMessageLogView.LogMessage(message, color); +#endif + } + public static void LogMessage(string message, Color customColor) + { +#if DEBUG + if(_DebugMessageLogView == null) + { + _DebugMessageLogView = new DebugMessageLogView(); + } + + _DebugMessageLogView.Closed += (s, e) => { _DebugMessageLogView = null; }; + + _DebugMessageLogView.Show(); + _DebugMessageLogView.LogMessage(message, customColor); +#endif + } } } \ No newline at end of file diff --git a/BeWo/Core/BeWoUtils.cs b/BeWo/Core/BeWoUtils.cs index edce76ea7..1310922e4 100644 --- a/BeWo/Core/BeWoUtils.cs +++ b/BeWo/Core/BeWoUtils.cs @@ -1821,40 +1821,6 @@ namespace BeWo.Core } break; - case ServiceRecordValidationResult.HasEmployeeSignature: - // Prüfen, ob eine Änderung oder Erstellung stattfindet - if(dc.ServiceRecordVersion.HasValue) - { - if(!BeWoApp.LoggedOnUser.HasRight(UserRightType.EditAll) && !BeWoApp.LoggedOnUser.HasRight(UserRightType.ServiceRecord_AllowEditAfterEmployeeSignature)) - { - MessageBox.Show($"Sie können den Eintrag nicht speichern, da bereits eine Mitarbeiterunterschrift geleistet wurde.", "Speichern nicht möglich", MessageBoxButton.OK, MessageBoxImage.Warning); - - lValid = false; - exitLoop = true; - } - else if(MessageBox.Show($"Es existiert bereits eine Mitarbeiterunterschrift. Möchten Sie trotzdem speichern?", "Speichern nicht möglich", MessageBoxButton.YesNo, MessageBoxImage.Warning).Equals(MessageBoxResult.No)) - { - lValid = false; - exitLoop = true; - } - } - else - { - if(!BeWoApp.LoggedOnUser.HasRight(UserRightType.CreateAll) && !BeWoApp.LoggedOnUser.HasRight(UserRightType.ServiceRecord_AllowCreateAfterEmployeeSignature)) - { - MessageBox.Show($"Sie können den Eintrag nicht speichern, da bereits eine Mitarbeiterunterschrift geleistet wurde.", "Speichern nicht möglich", MessageBoxButton.OK, MessageBoxImage.Warning); - - lValid = false; - exitLoop = true; - } - else if(MessageBox.Show($"Es existiert bereits eine Mitarbeiterunterschrift.\nMöchten Sie trotzdem speichern?", "Speichern", MessageBoxButton.YesNo, MessageBoxImage.Warning).Equals(MessageBoxResult.No)) - { - lValid = false; - exitLoop = true; - } - } - - break; } if (exitLoop) break; @@ -1904,20 +1870,6 @@ namespace BeWo.Core exitLoop = true; } - break; - case ServiceRecordValidationResult.HasEmployeeSignature: - if(!BeWoApp.LoggedOnUser.HasRight(UserRightType.DeleteAll) && !BeWoApp.LoggedOnUser.HasRight(UserRightType.ServiceRecord_AllowDeleteAfterEmployeeSignature)) - { - MessageBox.Show($"Sie können den Eintrag nicht löschen, da bereits eine Mitarbeiterunterschrift geleistet wurde.", "Löschen nicht möglich", MessageBoxButton.OK, MessageBoxImage.Warning); - - lValid = false; - exitLoop = true; - } - else if(MessageBox.Show($"Es existiert bereits eine Mitarbeiterunterschrift.\nMöchten Sie trotzdem löschen?", "Löschen", MessageBoxButton.YesNo, MessageBoxImage.Warning).Equals(MessageBoxResult.No)) - { - lValid = false; - exitLoop = true; - } break; } diff --git a/BeWo/Scheduler/View/NewSchedulerView.xaml b/BeWo/Scheduler/View/NewSchedulerView.xaml index a758c8c81..e8a24e8f8 100644 --- a/BeWo/Scheduler/View/NewSchedulerView.xaml +++ b/BeWo/Scheduler/View/NewSchedulerView.xaml @@ -986,9 +986,9 @@ - + ().ToList(); if (appList.Any(f => f.CF_IsPrivate())) @@ -2370,22 +2368,21 @@ namespace BeWo.Scheduler.View private void AufgabeAnlegen_OnItemClick(object sender, ItemClickEventArgs e) { - var end = Scheduler.SelectedInterval.End.GetShortDateTime(); - var dueDate = Scheduler.SelectedInterval.End; - var start = end.AddDays(1); + // TODO: Durch eigenen Editor ersetzen, der mit dem Scheduler nichts am Hut hat! - var newTask = Scheduler.Storage.CreateAppointment(AppointmentType.Normal); + // var dueDate = Scheduler.SelectedInterval.End; + //var end = dueDate.GetShortDateTime().AddDays(1); + // var start = Scheduler.SelectedInterval.Start.GetShortDateTime(); - newTask.Start = end; - newTask.End = start; - newTask.AllDay = true; - newTask.Subject = "Neue Aufgabe"; + // var newTask = Scheduler.Storage.CreateAppointment(AppointmentType.Normal, start, end, "Neue Aufgabe"); + + // newTask.AllDay = true; - var employees2Appointments = SelectedEmployees.Select(item => new Employee2SchedulerAppointmentDC { Employee = item, ParticipationAnswer = ParticipationAnswer.Offen }).ToList(); + //var employees2Appointments = SelectedEmployees.Select(item => new Employee2SchedulerAppointmentDC { Employee = item, ParticipationAnswer = ParticipationAnswer.Offen }).ToList(); - ViewModel.InitNewTask(newTask, dueDate, employees2Appointments, SelectedCustomers, SelectedResources, new List()); + // ViewModel.InitNewTask(newTask, dueDate, employees2Appointments, SelectedCustomers, SelectedResources, new List()); - Scheduler.ShowEditAppointmentForm(newTask); + // Scheduler.ShowEditAppointmentForm(newTask); } private void ShowTasksCheckBox_OnClick(object sender, RoutedEventArgs e) diff --git a/BeWo/Scheduler/View/SchedulerAppointmentEditForm.xaml b/BeWo/Scheduler/View/SchedulerAppointmentEditForm.xaml index 808590ada..2313a9665 100644 --- a/BeWo/Scheduler/View/SchedulerAppointmentEditForm.xaml +++ b/BeWo/Scheduler/View/SchedulerAppointmentEditForm.xaml @@ -1,17 +1,17 @@  + xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" + xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" + xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" + xmlns:d="http://schemas.microsoft.com/expression/blend/2008" + xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors" + xmlns:dxschint="http://schemas.devexpress.com/winfx/2008/xaml/scheduler/internal" + xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core" + xmlns:dxsch="http://schemas.devexpress.com/winfx/2008/xaml/scheduler" + xmlns:converter="clr-namespace:BeWo.Scheduler.Converter" + xmlns:bewoConverter="clr-namespace:BeWo.Converter" + xmlns:localSchView="clr-namespace:BeWo.Scheduler.View" + xmlns:search="clr-namespace:BeWo.View.Search" + mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="300" Width="420"> @@ -21,88 +21,87 @@ - + + + + + + - + @@ -290,22 +289,29 @@ -