Add option to enable/disable the additional Privacy Status bar OUT-514
authorThomas
Thu, 18 Oct 2018 13:38:58 +0200
branchOUT-514
changeset 241080c01cc1dec1
parent 2409 8908fefc77e3
child 2415 b0bc36808170
Add option to enable/disable the additional Privacy Status bar
PEPSettings.cs
Properties/Resources.Designer.cs
Properties/Resources.de.resx
Properties/Resources.es.resx
Properties/Resources.resx
ThisAddIn.cs
UI/FormControlOptions.xaml
UI/FormControlOptions.xaml.cs
UI/FormRegionPrivacyStatus.cs
UI/RibbonCustomizations.cs
     1.1 --- a/PEPSettings.cs	Thu Oct 18 12:27:44 2018 +0200
     1.2 +++ b/PEPSettings.cs	Thu Oct 18 13:38:58 2018 +0200
     1.3 @@ -64,6 +64,7 @@
     1.4          public const string REG_NAME_IS_NEVER_UNSECURE_OPTION_VISIBLE           = "IsNeverUnsecureOptionVisible";
     1.5          public const string REG_NAME_IS_PASSIVE_MODE_ENABLED                    = "IsPassiveModeEnabled";
     1.6          public const string REG_NAME_IS_PEP_FOLDER_VISIBLE                      = "IsPEPFolderVisible";
     1.7 +        public const string REG_NAME_IS_PRIVACY_STATUS_BAR_ENABLED              = "IsPrivacyStatusBarEnabled";
     1.8          public const string REG_NAME_IS_READER_SPLASH_ENABLED                   = "IsReaderSplashEnabled";
     1.9          public const string REG_NAME_IS_SECURITY_LOSS_WARNING_ENABLED           = "IsSecurityLossWarningEnabled";
    1.10          public const string REG_NAME_IS_SENSITIVE_DATA_LOGGING_ENABLED          = "IsSensitiveDataLoggingEnabled";
    1.11 @@ -97,6 +98,7 @@
    1.12          public const bool                  IS_NEVER_UNSECURE_OPTION_VISIBLE_DEFAULT           = false;
    1.13          public const bool                  IS_PASSIVE_MODE_ENABLED_DEFAULT                    = false;
    1.14          public const bool                  IS_PEP_FOLDER_VISIBLE_DEFAULT                      = true;
    1.15 +        public const bool                  IS_PRIVACY_STATUS_BAR_ENABLED_DEFAULT              = false;
    1.16          public const bool                  IS_READER_SPLASH_ENABLED_DEFAULT                   = true;
    1.17  #if READER_RELEASE_MODE
    1.18          public const bool                  IS_SECURITY_LOSS_WARNING_ENABLED_DEFAULT           = true;
    1.19 @@ -124,6 +126,7 @@
    1.20          private bool                                     _IsNeverUnsecureOptionVisible;
    1.21          private bool                                     _IsPassiveModeEnabled;
    1.22          private bool                                     _IsPEPFolderVisible;
    1.23 +        private bool                                     _IsPrivacyStatusBarEnabled;
    1.24          private bool                                     _IsReaderSplashEnabled;
    1.25          private bool                                     _IsSecurityLossWarningEnabled;
    1.26          private bool                                     _IsSensitiveDataLoggingEnabled;
    1.27 @@ -358,6 +361,22 @@
    1.28          }
    1.29  
    1.30          /// <summary>
    1.31 +        /// Gets or sets whether privacy status bar is enabled or not.
    1.32 +        /// </summary>
    1.33 +        public bool IsPrivacyStatusBarEnabled
    1.34 +        {
    1.35 +            get { return (this._IsPrivacyStatusBarEnabled); }
    1.36 +            set
    1.37 +            {
    1.38 +                if (object.Equals(this._IsPrivacyStatusBarEnabled, value) == false)
    1.39 +                {
    1.40 +                    this._IsPrivacyStatusBarEnabled = value;
    1.41 +                    this.RaisePropertyChangedEvent(nameof(this.IsPrivacyStatusBarEnabled));
    1.42 +                }
    1.43 +            }
    1.44 +        }
    1.45 +
    1.46 +        /// <summary>
    1.47          /// Gets or sets whether the reader splash screen is enabled.
    1.48          /// When enabled, the splash will be shown at startup.
    1.49          /// This value is ignored if ReleaseMode != Reader.
    1.50 @@ -530,6 +549,7 @@
    1.51              this._IsNeverUnsecureOptionVisible = PEPSettings.IS_NEVER_UNSECURE_OPTION_VISIBLE_DEFAULT;
    1.52              this._IsPassiveModeEnabled = PEPSettings.IS_PASSIVE_MODE_ENABLED_DEFAULT;
    1.53              this._IsPEPFolderVisible = PEPSettings.IS_PEP_FOLDER_VISIBLE_DEFAULT;
    1.54 +            this._IsPrivacyStatusBarEnabled = PEPSettings.IS_PRIVACY_STATUS_BAR_ENABLED_DEFAULT;
    1.55              this._IsReaderSplashEnabled = PEPSettings.IS_READER_SPLASH_ENABLED_DEFAULT;
    1.56              this._IsSecurityLossWarningEnabled = PEPSettings.IS_SECURITY_LOSS_WARNING_ENABLED_DEFAULT;
    1.57              this._IsSensitiveDataLoggingEnabled = PEPSettings.IS_SENSITIVE_DATA_LOGGING_ENABLED_DEFAULT;
    1.58 @@ -557,6 +577,7 @@
    1.59              this.RaisePropertyChangedEvent(nameof(this.IsNeverUnsecureOptionVisible));
    1.60              this.RaisePropertyChangedEvent(nameof(this.IsPassiveModeEnabled));
    1.61              this.RaisePropertyChangedEvent(nameof(this.IsPEPFolderVisible));
    1.62 +            this.RaisePropertyChangedEvent(nameof(this.IsPrivacyStatusBarEnabled));
    1.63              this.RaisePropertyChangedEvent(nameof(this.IsReaderSplashEnabled));
    1.64              this.RaisePropertyChangedEvent(nameof(this.IsSecurityLossWarningEnabled));
    1.65              this.RaisePropertyChangedEvent(nameof(this.IsSensitiveDataLoggingEnabled));
    1.66 @@ -683,6 +704,7 @@
    1.67                  Comparisons.Equals(this.IsNeverUnsecureOptionVisible, obj.IsNeverUnsecureOptionVisible) &&
    1.68                  Comparisons.Equals(this.IsPassiveModeEnabled, obj.IsPassiveModeEnabled) &&
    1.69                  Comparisons.Equals(this.IsPEPFolderVisible, obj.IsPEPFolderVisible) &&
    1.70 +                Comparisons.Equals(this.IsPrivacyStatusBarEnabled, obj.IsPrivacyStatusBarEnabled) &&
    1.71                  Comparisons.Equals(this.IsReaderSplashEnabled, obj.IsReaderSplashEnabled) &&
    1.72                  Comparisons.Equals(this.IsSecurityLossWarningEnabled, obj.IsSecurityLossWarningEnabled) &&
    1.73                  Comparisons.Equals(this.IsSensitiveDataLoggingEnabled, obj.IsSensitiveDataLoggingEnabled) &&
    1.74 @@ -831,6 +853,7 @@
    1.75                          pEpKey.SetValue(PEPSettings.REG_NAME_IS_KEY_SERVER_USED, this._IsKeyServerUsed.ToString(), RegistryValueKind.String);
    1.76                          pEpKey.SetValue(PEPSettings.REG_NAME_IS_NEVER_UNSECURE_OPTION_VISIBLE, this._IsNeverUnsecureOptionVisible.ToString(), RegistryValueKind.String);
    1.77                          pEpKey.SetValue(PEPSettings.REG_NAME_IS_PEP_FOLDER_VISIBLE, this._IsPEPFolderVisible.ToString(), RegistryValueKind.String);
    1.78 +                        pEpKey.SetValue(PEPSettings.REG_NAME_IS_PRIVACY_STATUS_BAR_ENABLED, this._IsPrivacyStatusBarEnabled.ToString(), RegistryValueKind.String);
    1.79                          pEpKey.SetValue(PEPSettings.REG_NAME_IS_READER_SPLASH_ENABLED, this._IsReaderSplashEnabled.ToString(), RegistryValueKind.String);
    1.80                          pEpKey.SetValue(PEPSettings.REG_NAME_IS_SECURITY_LOSS_WARNING_ENABLED, this._IsSecurityLossWarningEnabled.ToString(), RegistryValueKind.String);
    1.81                          pEpKey.SetValue(PEPSettings.REG_NAME_IS_SYNC_ENABLED_FOR_ALL_ACCOUNTS, this._IsSyncEnabledForAllAccounts.ToString(), RegistryValueKind.String);
    1.82 @@ -1570,6 +1593,33 @@
    1.83                              this.RaisePropertyChangedEvent(nameof(this.IsPEPFolderVisible));
    1.84                          }
    1.85  
    1.86 +                        // Attempt to get IsPrivacyStatusBarEnabled value
    1.87 +                        isPropertySet = false;
    1.88 +                        try
    1.89 +                        {
    1.90 +                            keyValue = pEpKey.GetValue(PEPSettings.REG_NAME_IS_PRIVACY_STATUS_BAR_ENABLED, PEPSettings.IS_PRIVACY_STATUS_BAR_ENABLED_DEFAULT).ToString();
    1.91 +                            isSuccessful = bool.TryParse(keyValue, out parsedBoolValue);
    1.92 +
    1.93 +                            if (isSuccessful)
    1.94 +                            {
    1.95 +                                this._IsPrivacyStatusBarEnabled = parsedBoolValue;
    1.96 +                                isPropertySet = true;
    1.97 +                            }
    1.98 +                        }
    1.99 +                        catch
   1.100 +                        {
   1.101 +                            Log.Warning("LoadFromRegistry: Unable to read IsPrivacyStatusBarEnabled");
   1.102 +                        }
   1.103 +                        finally
   1.104 +                        {
   1.105 +                            if (isPropertySet == false)
   1.106 +                            {
   1.107 +                                this._IsPrivacyStatusBarEnabled = PEPSettings.IS_PRIVACY_STATUS_BAR_ENABLED_DEFAULT;
   1.108 +                            }
   1.109 +
   1.110 +                            this.RaisePropertyChangedEvent(nameof(this.IsPrivacyStatusBarEnabled));
   1.111 +                        }
   1.112 +
   1.113                          // Attempt to get IsReaderSplashEnabled value
   1.114                          isPropertySet = false;
   1.115                          try
     2.1 --- a/Properties/Resources.Designer.cs	Thu Oct 18 12:27:44 2018 +0200
     2.2 +++ b/Properties/Resources.Designer.cs	Thu Oct 18 13:38:58 2018 +0200
     2.3 @@ -19,7 +19,7 @@
     2.4      // class via a tool like ResGen or Visual Studio.
     2.5      // To add or remove a member, edit your .ResX file then rerun ResGen
     2.6      // with the /str option, or rebuild your VS project.
     2.7 -    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
     2.8 +    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")]
     2.9      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    2.10      [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
    2.11      public class Resources {
    2.12 @@ -1585,6 +1585,15 @@
    2.13          }
    2.14          
    2.15          /// <summary>
    2.16 +        ///   Looks up a localized string similar to Show additional Privacy Status Bar.
    2.17 +        /// </summary>
    2.18 +        public static string Options_IsPrivacyStatusBarEnabledText {
    2.19 +            get {
    2.20 +                return ResourceManager.GetString("Options_IsPrivacyStatusBarEnabledText", resourceCulture);
    2.21 +            }
    2.22 +        }
    2.23 +        
    2.24 +        /// <summary>
    2.25          ///   Looks up a localized string similar to Show a warning when a message loses security through reply or forward.
    2.26          /// </summary>
    2.27          public static string Options_IsSecurityLossWarningEnabledText {
     3.1 --- a/Properties/Resources.de.resx	Thu Oct 18 12:27:44 2018 +0200
     3.2 +++ b/Properties/Resources.de.resx	Thu Oct 18 13:38:58 2018 +0200
     3.3 @@ -822,4 +822,7 @@
     3.4    <data name="KeySyncWizard_PGPPrivateKeyMessageBody" xml:space="preserve">
     3.5      <value>Im Anhang finden Sie den privaten Schlüssel Ihres p≡p-Geräts. Sie können diesen nun in Ihren Schlüsselring importieren.</value>
     3.6    </data>
     3.7 +  <data name="Options_IsPrivacyStatusBarEnabledText" xml:space="preserve">
     3.8 +    <value>Zusätzliche Datenschutzleiste anzeigen</value>
     3.9 +  </data>
    3.10  </root>
    3.11 \ No newline at end of file
     4.1 --- a/Properties/Resources.es.resx	Thu Oct 18 12:27:44 2018 +0200
     4.2 +++ b/Properties/Resources.es.resx	Thu Oct 18 13:38:58 2018 +0200
     4.3 @@ -822,4 +822,7 @@
     4.4    <data name="KeySyncWizard_PGPPrivateKeyMessageBody" xml:space="preserve">
     4.5      <value>Adjunto encontrarás la clave privada de tu dispositivo p≡p. Puedes importarla ahora a tu llavero.</value>
     4.6    </data>
     4.7 +  <data name="Options_IsPrivacyStatusBarEnabledText" xml:space="preserve">
     4.8 +    <value>Mostrar barra adicional con el estatus de privacidad</value>
     4.9 +  </data>
    4.10  </root>
    4.11 \ No newline at end of file
     5.1 --- a/Properties/Resources.resx	Thu Oct 18 12:27:44 2018 +0200
     5.2 +++ b/Properties/Resources.resx	Thu Oct 18 13:38:58 2018 +0200
     5.3 @@ -949,4 +949,7 @@
     5.4    <data name="ImagePrivacyStatusYellowInvert" type="System.Resources.ResXFileRef, System.Windows.Forms">
     5.5      <value>..\Resources\ImagePrivacyStatusYellowInvert.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
     5.6    </data>
     5.7 +  <data name="Options_IsPrivacyStatusBarEnabledText" xml:space="preserve">
     5.8 +    <value>Show additional Privacy Status Bar</value>
     5.9 +  </data>
    5.10  </root>
    5.11 \ No newline at end of file
     6.1 --- a/ThisAddIn.cs	Thu Oct 18 12:27:44 2018 +0200
     6.2 +++ b/ThisAddIn.cs	Thu Oct 18 13:38:58 2018 +0200
     6.3 @@ -1075,6 +1075,7 @@
     6.4                  this._Settings.IsNeverUnsecureOptionVisible = state.IsNeverUnsecureOptionVisible;
     6.5                  this._Settings.IsPassiveModeEnabled = state.IsPassiveModeEnabled;
     6.6                  this._Settings.IsPEPFolderVisible = state.IsPEPFolderVisible;
     6.7 +                this._Settings.IsPrivacyStatusBarEnabled = state.IsPrivacyStatusBarEnabled;
     6.8                  this._Settings.IsSecurityLossWarningEnabled = state.IsSecurityLossWarningEnabled;
     6.9                  this._Settings.IsSyncEnabledForAllAccounts = state.IsSyncEnabledForAllAccounts;
    6.10                  this._Settings.IsUnencryptedSubjectEnabled = state.IsUnencryptedSubjectEnabled;
     7.1 --- a/UI/FormControlOptions.xaml	Thu Oct 18 12:27:44 2018 +0200
     7.2 +++ b/UI/FormControlOptions.xaml	Thu Oct 18 13:38:58 2018 +0200
     7.3 @@ -315,6 +315,7 @@
     7.4                              <RowDefinition Height="Auto" />
     7.5                              <RowDefinition Height="Auto" />
     7.6                              <RowDefinition Height="Auto" />
     7.7 +                            <RowDefinition Height="Auto" />
     7.8                          </Grid.RowDefinitions>
     7.9                          <CheckBox Grid.Row="0"
    7.10                                    VerticalContentAlignment="Top"
    7.11 @@ -397,11 +398,26 @@
    7.12                                         TextWrapping="Wrap"
    7.13                                         Margin="{StaticResource CheckBoxContentMarginWhenTop}" />
    7.14                          </CheckBox>
    7.15 -                        <StackPanel Grid.Row="4"
    7.16 +                        <CheckBox Grid.Row="4"
    7.17 +                                  VerticalContentAlignment="Top"
    7.18 +                                  IsThreeState="False"
    7.19 +                                  IsChecked="{Binding Path=IsPrivacyStatusBarEnabled, Mode=TwoWay}"
    7.20 +                                  Visibility="{Binding Path=IsAdvancedEnabled, Converter={StaticResource BoolToVisibility}}">
    7.21 +                            <CheckBox.Margin>
    7.22 +                                <Thickness Bottom="0"
    7.23 +                                           Left="0"
    7.24 +                                           Right="0"
    7.25 +                                           Top="{StaticResource PageSubSectionSpacing}" />
    7.26 +                            </CheckBox.Margin>
    7.27 +                            <TextBlock Text="{x:Static p:Resources.Options_IsPrivacyStatusBarEnabledText}"
    7.28 +                                       TextWrapping="Wrap"
    7.29 +                                       Margin="{StaticResource CheckBoxContentMarginWhenTop}" />
    7.30 +                        </CheckBox>
    7.31 +                        <StackPanel Grid.Row="5"
    7.32                                      Orientation="Horizontal"
    7.33                                      VerticalAlignment="Center"
    7.34                                      HorizontalAlignment="Left"
    7.35 -                                    Visibility="{Binding ElementName=CheckBoxIsAdvancedEnabled, Path=IsChecked, Mode=OneWay, Converter={StaticResource BoolToVisibility}}">
    7.36 +                                    Visibility="{Binding Path=IsAdvancedEnabled, Converter={StaticResource BoolToVisibility}}">
    7.37                              <Label Content="{x:Static p:Resources.Options_TrustwordsLanguageText}"
    7.38                                     VerticalAlignment="Center"
    7.39                                     Margin="0,2" />
     8.1 --- a/UI/FormControlOptions.xaml.cs	Thu Oct 18 12:27:44 2018 +0200
     8.2 +++ b/UI/FormControlOptions.xaml.cs	Thu Oct 18 13:38:58 2018 +0200
     8.3 @@ -332,75 +332,76 @@
     8.4                  Developer = 4
     8.5              }
     8.6  
     8.7 -            private string                                  _AccountIsPEPEnabledText;
     8.8 -            private string                                  _AccountIsSecureStorageEnabledText;
     8.9 -            private string                                  _AccountIsSyncEnabledText;
    8.10 -            private ObservableCollection<AccountState>      _AccountSettingsList;
    8.11 -            private int                                     _AccountSettingsListSelectedIndex;
    8.12 -            private string                                  _AutoUpdateOffWarningText;
    8.13 +            private string                                          _AccountIsPEPEnabledText;
    8.14 +            private string                                          _AccountIsSecureStorageEnabledText;
    8.15 +            private string                                          _AccountIsSyncEnabledText;
    8.16 +            private ObservableCollection<AccountState>              _AccountSettingsList;
    8.17 +            private int                                             _AccountSettingsListSelectedIndex;
    8.18 +            private string                                          _AutoUpdateOffWarningText;
    8.19              private ObservableCollection<KVPair<PEPIdentity, bool>> _Blacklist;
    8.20              private ObservableCollection<KVPair<PEPIdentity, bool>> _BlacklistDisplayed;
    8.21 -            private string                                  _BlacklistEnteredFingerprint;
    8.22 -            private string                                  _BlacklistEnteredFingerprintText;
    8.23 -            private string                                  _BlacklistSearchNoResultsText;
    8.24 -            private int                                     _BlacklistSelectedIndex;
    8.25 -            private string                                  _CancelText;
    8.26 -            private string                                  _EncryptedAccountsText;
    8.27 -            private bool                                    _IsAdvancedEnabled;
    8.28 -            private string                                  _IsAdvancedEnabledText;
    8.29 -            private bool                                    _IsAutoUpdateEnabled;
    8.30 -            private string                                  _IsAutoUpdateEnabledText;
    8.31 -            private bool                                    _IsBlacklistAddEnabled;
    8.32 -            private bool                                    _IsDeveloperModeEnabled;
    8.33 -            private bool                                    _IsEncryptAllAccountsEnabled;
    8.34 -            private string                                  _IsEncryptAllAccountsEnabledText;
    8.35 -            private bool                                    _IsKeyServerUsed;
    8.36 -            private string                                  _IsKeyServerUsedText;
    8.37 -            private bool                                    _IsNeverUnsecureOptionVisible;
    8.38 -            private string                                  _IsNeverUnsecureOptionVisibleText;
    8.39 -            private bool                                    _IsPassiveModeEnabled;
    8.40 -            private bool                                    _IsPEPFolderDefaultStore;
    8.41 -            private bool                                    _IsPEPFolderVisible;
    8.42 -            private string                                  _IsPEPFolderVisibleText;
    8.43 -            private bool                                    _IsSecurityLossWarningEnabled;
    8.44 -            private string                                  _IsSecurityLossWarningEnabledText;
    8.45 -            private bool                                    _IsSyncEnabledForAllAccounts;
    8.46 -            private string                                  _IsSyncEnabledForAllAccountsText;
    8.47 -            private bool                                    _IsTNEFDisabled;
    8.48 -            private string                                  _IsTNEFDisabledText;
    8.49 -            private bool                                    _IsUnencryptedSubjectEnabled;
    8.50 -            private string                                  _IsUnencryptedSubjectEnabledText;
    8.51 -            private bool                                    _IsVerboseLoggingEnabled;
    8.52 -            private string                                  _IsVerboseLoggingEnabledText;
    8.53 -            private string                                  _LogClearText;
    8.54 -            private string                                  _LogEngine;
    8.55 -            private string                                  _LogEngineText;
    8.56 -            private string                                  _LogOutlook;
    8.57 -            private string                                  _LogOutlookText;
    8.58 -            private string                                  _LogRefreshText;
    8.59 -            private string                                  _OKText;
    8.60 -            private string                                  _OpenKeyManagerText;
    8.61 -            private string                                  _PageAboutText;
    8.62 -            private string                                  _PageAccountsText;
    8.63 -            private string                                  _PageCompatibilityText;
    8.64 -            private string                                  _PageCreditsText;
    8.65 -            private string                                  _PageDeveloperText;
    8.66 -            private string                                  _PageSectionAboutText;
    8.67 -            private string                                  _PageSectionAccountsText;
    8.68 -            private string                                  _PageSectionBlacklistText;
    8.69 -            private string                                  _PageSectionCreditsText;
    8.70 -            private string                                  _PageSectionDeveloperText;
    8.71 -            private string                                  _PageSectionOpenPGPCompatibilityText;
    8.72 -            private string                                  _PEPCopyright;
    8.73 -            private FlowDocument                            _PEPCredits;
    8.74 -            private string                                  _PEPName;
    8.75 -            private string                                  _PEPWebAddress;
    8.76 -            private Globals.ReleaseMode                     _ReleaseMode;
    8.77 -            private string                                  _ResetPEPStoreText;
    8.78 -            private int                                     _SelectedPageIndex;
    8.79 -            private List<KVPair<string, string>>            _SystemInfo;
    8.80 -            private CultureInfo                             _TrustwordsCulture;
    8.81 -            private List<KeyValuePair<CultureInfo, string>> _TrustwordsCultureList;
    8.82 +            private string                                          _BlacklistEnteredFingerprint;
    8.83 +            private string                                          _BlacklistEnteredFingerprintText;
    8.84 +            private string                                          _BlacklistSearchNoResultsText;
    8.85 +            private int                                             _BlacklistSelectedIndex;
    8.86 +            private string                                          _CancelText;
    8.87 +            private string                                          _EncryptedAccountsText;
    8.88 +            private bool                                            _IsAdvancedEnabled;
    8.89 +            private string                                          _IsAdvancedEnabledText;
    8.90 +            private bool                                            _IsAutoUpdateEnabled;
    8.91 +            private string                                          _IsAutoUpdateEnabledText;
    8.92 +            private bool                                            _IsBlacklistAddEnabled;
    8.93 +            private bool                                            _IsDeveloperModeEnabled;
    8.94 +            private bool                                            _IsEncryptAllAccountsEnabled;
    8.95 +            private string                                          _IsEncryptAllAccountsEnabledText;
    8.96 +            private bool                                            _IsKeyServerUsed;
    8.97 +            private string                                          _IsKeyServerUsedText;
    8.98 +            private bool                                            _IsNeverUnsecureOptionVisible;
    8.99 +            private string                                          _IsNeverUnsecureOptionVisibleText;
   8.100 +            private bool                                            _IsPassiveModeEnabled;
   8.101 +            private bool                                            _IsPEPFolderDefaultStore;
   8.102 +            private bool                                            _IsPEPFolderVisible;
   8.103 +            private string                                          _IsPEPFolderVisibleText;
   8.104 +            private bool                                            _IsPrivacyStatusBarEnabled;
   8.105 +            private bool                                            _IsSecurityLossWarningEnabled;
   8.106 +            private string                                          _IsSecurityLossWarningEnabledText;
   8.107 +            private bool                                            _IsSyncEnabledForAllAccounts;
   8.108 +            private string                                          _IsSyncEnabledForAllAccountsText;
   8.109 +            private bool                                            _IsTNEFDisabled;
   8.110 +            private string                                          _IsTNEFDisabledText;
   8.111 +            private bool                                            _IsUnencryptedSubjectEnabled;
   8.112 +            private string                                          _IsUnencryptedSubjectEnabledText;
   8.113 +            private bool                                            _IsVerboseLoggingEnabled;
   8.114 +            private string                                          _IsVerboseLoggingEnabledText;
   8.115 +            private string                                          _LogClearText;
   8.116 +            private string                                          _LogEngine;
   8.117 +            private string                                          _LogEngineText;
   8.118 +            private string                                          _LogOutlook;
   8.119 +            private string                                          _LogOutlookText;
   8.120 +            private string                                          _LogRefreshText;
   8.121 +            private string                                          _OKText;
   8.122 +            private string                                          _OpenKeyManagerText;
   8.123 +            private string                                          _PageAboutText;
   8.124 +            private string                                          _PageAccountsText;
   8.125 +            private string                                          _PageCompatibilityText;
   8.126 +            private string                                          _PageCreditsText;
   8.127 +            private string                                          _PageDeveloperText;
   8.128 +            private string                                          _PageSectionAboutText;
   8.129 +            private string                                          _PageSectionAccountsText;
   8.130 +            private string                                          _PageSectionBlacklistText;
   8.131 +            private string                                          _PageSectionCreditsText;
   8.132 +            private string                                          _PageSectionDeveloperText;
   8.133 +            private string                                          _PageSectionOpenPGPCompatibilityText;
   8.134 +            private string                                          _PEPCopyright;
   8.135 +            private FlowDocument                                    _PEPCredits;
   8.136 +            private string                                          _PEPName;
   8.137 +            private string                                          _PEPWebAddress;
   8.138 +            private Globals.ReleaseMode                             _ReleaseMode;
   8.139 +            private string                                          _ResetPEPStoreText;
   8.140 +            private int                                             _SelectedPageIndex;
   8.141 +            private List<KVPair<string, string>>                    _SystemInfo;
   8.142 +            private CultureInfo                                     _TrustwordsCulture;
   8.143 +            private List<KeyValuePair<CultureInfo, string>>         _TrustwordsCultureList;
   8.144  
   8.145              private bool calcDepPropIsEnabled;
   8.146  
   8.147 @@ -752,6 +753,19 @@
   8.148              }
   8.149  
   8.150              /// <summary>
   8.151 +            /// Gets or sets whether the Privacy Status bar is visible.
   8.152 +            /// </summary>
   8.153 +            public bool IsPrivacyStatusBarEnabled
   8.154 +            {
   8.155 +                get { return (this._IsPrivacyStatusBarEnabled); }
   8.156 +                set
   8.157 +                {
   8.158 +                    this._IsPrivacyStatusBarEnabled = value;
   8.159 +                    this.RaisePropertyChangedEvent(nameof(this.IsPrivacyStatusBarEnabled));
   8.160 +                }
   8.161 +            }
   8.162 +
   8.163 +            /// <summary>
   8.164              /// Gets or sets whether to display a warning when sending a message (forward/reply)
   8.165              /// unencrypted that was previously encrypted.
   8.166              /// </summary>
   8.167 @@ -1298,6 +1312,7 @@
   8.168                  copy.IsPassiveModeEnabled = this._IsPassiveModeEnabled;
   8.169                  copy.IsPEPFolderDefaultStore = this._IsPEPFolderDefaultStore;
   8.170                  copy.IsPEPFolderVisible = this._IsPEPFolderVisible;
   8.171 +                copy.IsPrivacyStatusBarEnabled  = this._IsPrivacyStatusBarEnabled;
   8.172                  copy.IsSecurityLossWarningEnabled = this._IsSecurityLossWarningEnabled;
   8.173                  copy.IsSyncEnabledForAllAccounts = this._IsSyncEnabledForAllAccounts;
   8.174                  copy.IsTNEFDisabled = this._IsTNEFDisabled;
   8.175 @@ -1348,6 +1363,7 @@
   8.176                  this._IsPassiveModeEnabled = PEPSettings.IS_PASSIVE_MODE_ENABLED_DEFAULT;
   8.177                  this._IsPEPFolderDefaultStore = false;
   8.178                  this._IsPEPFolderVisible = PEPSettings.IS_PEP_FOLDER_VISIBLE_DEFAULT;
   8.179 +                this._IsPrivacyStatusBarEnabled = PEPSettings.IS_PRIVACY_STATUS_BAR_ENABLED_DEFAULT;
   8.180                  this._IsSecurityLossWarningEnabled = PEPSettings.IS_SECURITY_LOSS_WARNING_ENABLED_DEFAULT;
   8.181                  this._IsSyncEnabledForAllAccounts = PEPSettings.IS_SYNC_ENABLED_FOR_ALL_ACCOUNTS_DEFAULT;
   8.182                  this._IsTNEFDisabled = PEPSettings.IS_TNEF_DISABLED_DEFAULT;
   8.183 @@ -1382,6 +1398,7 @@
   8.184                  this.RaisePropertyChangedEvent(nameof(this.IsPassiveModeEnabled));
   8.185                  this.RaisePropertyChangedEvent(nameof(this.IsPEPFolderDefaultStore));
   8.186                  this.RaisePropertyChangedEvent(nameof(this.IsPEPFolderVisible));
   8.187 +                this.RaisePropertyChangedEvent(nameof(this.IsPrivacyStatusBarEnabled));
   8.188                  this.RaisePropertyChangedEvent(nameof(this.IsSecurityLossWarningEnabled));
   8.189                  this.RaisePropertyChangedEvent(nameof(this.IsSyncEnabledForAllAccounts));
   8.190                  this.RaisePropertyChangedEvent(nameof(this.IsTNEFDisabled));
     9.1 --- a/UI/FormRegionPrivacyStatus.cs	Thu Oct 18 12:27:44 2018 +0200
     9.2 +++ b/UI/FormRegionPrivacyStatus.cs	Thu Oct 18 13:38:58 2018 +0200
     9.3 @@ -565,6 +565,8 @@
     9.4  
     9.5              this.isEnabled = enabled;
     9.6  
     9.7 +            this.OutlookFormRegion.Visible = (enabled && Globals.ThisAddIn.Settings.IsPrivacyStatusBarEnabled);
     9.8 +
     9.9              if (enabled)
    9.10              {
    9.11                  // Do not allow initialization more than once
    9.12 @@ -730,9 +732,6 @@
    9.13              Outlook.MailItem omi = null;
    9.14              PEPCache.CacheItem cacheItem = null;
    9.15  
    9.16 -            // Do not show the form region
    9.17 -            this.OutlookFormRegion.Visible = true;
    9.18 -
    9.19              // Set mail item
    9.20              omi = this.OutlookItem as Outlook.MailItem;
    9.21  
    10.1 --- a/UI/RibbonCustomizations.cs	Thu Oct 18 12:27:44 2018 +0200
    10.2 +++ b/UI/RibbonCustomizations.cs	Thu Oct 18 13:38:58 2018 +0200
    10.3 @@ -801,7 +801,7 @@
    10.4              string label = this.GetFormRegionPrivacyStatus(control)?.PrivacyState.Label;
    10.5  
    10.6              // Workaround to show ampersands correctly
    10.7 -            if (label.Contains(" & "))
    10.8 +            if (label?.Contains(" & ") == true)
    10.9              {
   10.10                  label = label.Replace(" & ", " && ");
   10.11              }