[Libreoffice-commits] core.git: include/sfx2 officecfg/files.mk officecfg/registry postprocess/CustomTarget_registry.mk sfx2/source

Samuel Mehrbrodt (via logerrit) logerrit at kemper.freedesktop.org
Thu Apr 23 09:00:21 UTC 2020


 include/sfx2/infobar.hxx                                       |    1 
 officecfg/files.mk                                             |    1 
 officecfg/registry/schema/org/openoffice/Office/UI/Infobar.xcs |   53 ++++++++++
 postprocess/CustomTarget_registry.mk                           |    1 
 sfx2/source/dialog/infobar.cxx                                 |   20 +++
 5 files changed, 76 insertions(+)

New commits:
commit 29575dc6a481f2548b3fcb0906138861aec03583
Author:     Samuel Mehrbrodt <Samuel.Mehrbrodt at cib.de>
AuthorDate: Wed Apr 22 15:30:47 2020 +0200
Commit:     Stephan Bergmann <sbergman at redhat.com>
CommitDate: Thu Apr 23 10:59:42 2020 +0200

    Add config to disable individual infobars
    
    In some deployments users want to disable certain infobars
    to not interfere with their workflows.
    Also, there are individual users who want to disable certain infobars
    for various reasons.
    
    This could be a generic config setting where you can set a list
    of Infobar IDs which should be disabled.
    That however would require knowledge about the internal IDs which
    are not exposed (and might even change over time).
    
    So instead, add a config option for each known infobar where we suspect
    users might want to turn it off.
    
    This list might change over time.
    
    Change-Id: I13f0456435b59aafe929a46498de5a8847f138e2
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/92638
    Tested-by: Samuel Mehrbrodt <Samuel.Mehrbrodt at cib.de>
    Reviewed-by: Stephan Bergmann <sbergman at redhat.com>

diff --git a/include/sfx2/infobar.hxx b/include/sfx2/infobar.hxx
index 08de31318517..dc016a53a60b 100644
--- a/include/sfx2/infobar.hxx
+++ b/include/sfx2/infobar.hxx
@@ -114,6 +114,7 @@ public:
     VclPtr<SfxInfoBarWindow> getInfoBar(const OUString& sId);
     bool hasInfoBarWithID(const OUString& sId);
     void removeInfoBar(VclPtr<SfxInfoBarWindow> const& pInfoBar);
+    static bool isInfobarEnabled(const OUString& sId);
 
     virtual void Resize() override;
 };
diff --git a/officecfg/files.mk b/officecfg/files.mk
index 54b875ece4ac..5244654af01c 100644
--- a/officecfg/files.mk
+++ b/officecfg/files.mk
@@ -76,6 +76,7 @@ officecfg_XCSFILES := \
     Office/UI/GenericCommands \
     Office/UI/GlobalSettings \
     Office/UI/ImpressWindowState \
+    Office/UI/Infobar \
     Office/UI/MathCommands \
     Office/UI/MathWindowState \
     Office/UI/ReportCommands \
diff --git a/officecfg/registry/schema/org/openoffice/Office/UI/Infobar.xcs b/officecfg/registry/schema/org/openoffice/Office/UI/Infobar.xcs
new file mode 100644
index 000000000000..af0434046770
--- /dev/null
+++ b/officecfg/registry/schema/org/openoffice/Office/UI/Infobar.xcs
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+-->
+<!DOCTYPE oor:component-schema SYSTEM "../../../../../component-schema.dtd">
+<oor:component-schema xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" oor:name="Infobar" oor:package="org.openoffice.Office.UI" xml:lang="en-US">
+  <info>
+    <desc>Infobar configuration.</desc>
+  </info>
+  <template></template>
+  <component>
+    <group oor:name="Enabled">
+      <info>
+        <desc>Which Infobars are enabled.</desc>
+      </info>
+      <prop oor:name="Readonly" oor:type="xs:boolean" oor:nillable="false">
+        <info>
+          <desc>Whether the Infobar shown in read-only docs is enabled</desc>
+        </info>
+        <value>true</value>
+      </prop>
+      <prop oor:name="Signature" oor:type="xs:boolean" oor:nillable="false">
+        <info>
+          <desc>Whether the Infobar showing the Digital Signature state is enabled</desc>
+        </info>
+        <value>true</value>
+      </prop>
+      <prop oor:name="Donate" oor:type="xs:boolean" oor:nillable="false">
+        <info>
+          <desc>Whether the Infobar showing the call for donations is enabled</desc>
+        </info>
+        <value>true</value>
+      </prop>
+      <prop oor:name="GetInvolved" oor:type="xs:boolean" oor:nillable="false">
+        <info>
+          <desc>Whether the Infobar showing the call to 'Get Involved' is enabled</desc>
+        </info>
+        <value>true</value>
+      </prop>
+      <prop oor:name="HyphenationMissing" oor:type="xs:boolean" oor:nillable="false">
+        <info>
+          <desc>Whether an Infobar is shown when Hyphenation Info is missing for a document</desc>
+        </info>
+        <value>true</value>
+      </prop>
+    </group>
+  </component>
+</oor:component-schema>
diff --git a/postprocess/CustomTarget_registry.mk b/postprocess/CustomTarget_registry.mk
index 0e2af975255f..a5b520992786 100644
--- a/postprocess/CustomTarget_registry.mk
+++ b/postprocess/CustomTarget_registry.mk
@@ -181,6 +181,7 @@ postprocess_FILES_main := \
 	$(postprocess_XCS)/Office/UI/GenericCategories.xcs \
 	$(postprocess_XCS)/Office/UI/GenericCommands.xcs \
 	$(postprocess_XCS)/Office/UI/GlobalSettings.xcs \
+	$(postprocess_XCS)/Office/UI/Infobar.xcs \
 	$(postprocess_XCS)/Office/UI/Sidebar.xcs \
 	$(postprocess_XCS)/Office/UI/StartModuleCommands.xcs \
 	$(postprocess_XCS)/Office/UI/StartModuleWindowState.xcs \
diff --git a/sfx2/source/dialog/infobar.cxx b/sfx2/source/dialog/infobar.cxx
index 2c8d18bc0f04..771bda8f4e6c 100644
--- a/sfx2/source/dialog/infobar.cxx
+++ b/sfx2/source/dialog/infobar.cxx
@@ -14,6 +14,7 @@
 #include <drawinglayer/processor2d/baseprocessor2d.hxx>
 #include <drawinglayer/processor2d/processorfromoutputdevice.hxx>
 #include <memory>
+#include <officecfg/Office/UI/Infobar.hxx>
 #include <sfx2/bindings.hxx>
 #include <sfx2/dispatch.hxx>
 #include <sfx2/infobar.hxx>
@@ -393,6 +394,9 @@ SfxInfoBarContainerWindow::appendInfoBar(const OUString& sId, const OUString& sP
                                          const OUString& sSecondaryMessage, InfobarType ibType,
                                          WinBits nMessageStyle, bool bShowCloseButton)
 {
+    if (!isInfobarEnabled(sId))
+        return nullptr;
+
     auto pInfoBar = VclPtr<SfxInfoBarWindow>::Create(this, sId, sPrimaryMessage, sSecondaryMessage,
                                                      ibType, nMessageStyle, bShowCloseButton);
 
@@ -438,6 +442,22 @@ void SfxInfoBarContainerWindow::removeInfoBar(VclPtr<SfxInfoBarWindow> const& pI
     m_pChildWin->Update();
 }
 
+bool SfxInfoBarContainerWindow::isInfobarEnabled(const OUString& sId)
+{
+    if (sId == "readonly")
+        return officecfg::Office::UI::Infobar::Enabled::Readonly::get();
+    if (sId == "signature")
+        return officecfg::Office::UI::Infobar::Enabled::Signature::get();
+    if (sId == "donate")
+        return officecfg::Office::UI::Infobar::Enabled::Donate::get();
+    if (sId == "getinvolved")
+        return officecfg::Office::UI::Infobar::Enabled::GetInvolved::get();
+    if (sId == "hyphenationmissing")
+        return officecfg::Office::UI::Infobar::Enabled::HyphenationMissing::get();
+
+    return true;
+}
+
 void SfxInfoBarContainerWindow::Resize()
 {
     long nWidth = GetSizePixel().getWidth();


More information about the Libreoffice-commits mailing list