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@cib.de>
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
This commit is contained in:
Samuel Mehrbrodt
2020-04-23 10:59:42 +02:00
committed by Stephan Bergmann
parent 3fb1477de1
commit 29575dc6a4
5 changed files with 76 additions and 0 deletions
+1
View File
@@ -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;
};
+1
View File
@@ -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 \
@@ -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>
+1
View File
@@ -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 \
+20
View File
@@ -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();