tdf#132145: Synchronize ScInputCfg with configuration
Change-Id: I45cc9b6c8cbd9205e185bebff97644f53f5cf0af
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/125896
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
diff --git a/sc/inc/inputopt.hxx b/sc/inc/inputopt.hxx
index 5f20276..6a32617 100644
--- a/sc/inc/inputopt.hxx
+++ b/sc/inc/inputopt.hxx
@@ -77,7 +77,7 @@ class ScInputCfg final : public ScInputOptions,
public utl::ConfigItem
{
static css::uno::Sequence<OUString> GetPropertyNames();
void ReadCfg();
virtual void ImplCommit() override;
public:
diff --git a/sc/source/core/tool/inputopt.cxx b/sc/source/core/tool/inputopt.cxx
index 5152a01..aa5179b 100644
--- a/sc/source/core/tool/inputopt.cxx
+++ b/sc/source/core/tool/inputopt.cxx
@@ -91,64 +91,44 @@ ScInputCfg::ScInputCfg() :
ConfigItem( CFGPATH_INPUT )
{
Sequence<OUString> aNames = GetPropertyNames();
Sequence<Any> aValues = GetProperties(aNames);
EnableNotification(aNames);
const Any* pValues = aValues.getConstArray();
ReadCfg();
}
void ScInputCfg::ReadCfg()
{
const Sequence<OUString> aNames = GetPropertyNames();
const Sequence<Any> aValues = GetProperties(aNames);
OSL_ENSURE(aValues.getLength() == aNames.getLength(), "GetProperties failed");
if(aValues.getLength() != aNames.getLength())
return;
for(int nProp = 0; nProp < aNames.getLength(); nProp++)
{
OSL_ENSURE(pValues[nProp].hasValue(), "property value missing");
if(pValues[nProp].hasValue())
{
sal_Int32 nIntVal = 0;
switch(nProp)
{
case SCINPUTOPT_MOVEDIR:
if ( pValues[nProp] >>= nIntVal )
SetMoveDir( static_cast<sal_uInt16>(nIntVal) );
break;
case SCINPUTOPT_MOVESEL:
SetMoveSelection( ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) );
break;
case SCINPUTOPT_EDTEREDIT:
SetEnterEdit( ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) );
break;
case SCINPUTOPT_EXTENDFMT:
SetExtendFormat( ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) );
break;
case SCINPUTOPT_RANGEFIND:
SetRangeFinder( ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) );
break;
case SCINPUTOPT_EXPANDREFS:
SetExpandRefs( ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) );
break;
case SCINPUTOPT_SORT_REF_UPDATE:
SetSortRefUpdate(ScUnoHelpFunctions::GetBoolFromAny(pValues[nProp]));
break;
case SCINPUTOPT_MARKHEADER:
SetMarkHeader( ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) );
break;
case SCINPUTOPT_USETABCOL:
SetUseTabCol( ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) );
break;
case SCINPUTOPT_TEXTWYSIWYG:
SetTextWysiwyg( ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) );
break;
case SCINPUTOPT_REPLCELLSWARN:
SetReplaceCellsWarn( ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) );
break;
case SCINPUTOPT_LEGACY_CELL_SELECTION:
SetLegacyCellSelection( ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) );
break;
case SCINPUTOPT_ENTER_PASTE_MODE:
SetEnterPasteMode( ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) );
break;
}
}
}
if (sal_Int32 nVal; aValues[SCINPUTOPT_MOVEDIR] >>= nVal)
SetMoveDir(static_cast<sal_uInt16>(nVal));
if (bool bVal; aValues[SCINPUTOPT_MOVESEL] >>= bVal)
SetMoveSelection(bVal);
if (bool bVal; aValues[SCINPUTOPT_EDTEREDIT] >>= bVal)
SetEnterEdit(bVal);
if (bool bVal; aValues[SCINPUTOPT_EXTENDFMT] >>= bVal)
SetExtendFormat(bVal);
if (bool bVal; aValues[SCINPUTOPT_RANGEFIND] >>= bVal)
SetRangeFinder(bVal);
if (bool bVal; aValues[SCINPUTOPT_EXPANDREFS] >>= bVal)
SetExpandRefs(bVal);
if (bool bVal; aValues[SCINPUTOPT_SORT_REF_UPDATE] >>= bVal)
SetSortRefUpdate(bVal);
if (bool bVal; aValues[SCINPUTOPT_MARKHEADER] >>= bVal)
SetMarkHeader(bVal);
if (bool bVal; aValues[SCINPUTOPT_USETABCOL] >>= bVal)
SetUseTabCol(bVal);
if (bool bVal; aValues[SCINPUTOPT_TEXTWYSIWYG] >>= bVal)
SetTextWysiwyg(bVal);
if (bool bVal; aValues[SCINPUTOPT_REPLCELLSWARN] >>= bVal)
SetReplaceCellsWarn(bVal);
if (bool bVal; aValues[SCINPUTOPT_LEGACY_CELL_SELECTION] >>= bVal)
SetLegacyCellSelection(bVal);
if (bool bVal; aValues[SCINPUTOPT_ENTER_PASTE_MODE] >>= bVal)
SetEnterPasteMode(bVal);
}
void ScInputCfg::ImplCommit()
@@ -157,68 +137,38 @@ void ScInputCfg::ImplCommit()
Sequence<Any> aValues(aNames.getLength());
Any* pValues = aValues.getArray();
for(int nProp = 0; nProp < aNames.getLength(); nProp++)
{
switch(nProp)
{
case SCINPUTOPT_MOVEDIR:
pValues[nProp] <<= static_cast<sal_Int32>(GetMoveDir());
break;
case SCINPUTOPT_MOVESEL:
pValues[nProp] <<= GetMoveSelection();
break;
case SCINPUTOPT_EDTEREDIT:
pValues[nProp] <<= GetEnterEdit();
break;
case SCINPUTOPT_EXTENDFMT:
pValues[nProp] <<= GetExtendFormat();
break;
case SCINPUTOPT_RANGEFIND:
pValues[nProp] <<= GetRangeFinder();
break;
case SCINPUTOPT_EXPANDREFS:
pValues[nProp] <<= GetExpandRefs();
break;
case SCINPUTOPT_SORT_REF_UPDATE:
pValues[nProp] <<= GetSortRefUpdate();
break;
case SCINPUTOPT_MARKHEADER:
pValues[nProp] <<= GetMarkHeader();
break;
case SCINPUTOPT_USETABCOL:
pValues[nProp] <<= GetUseTabCol();
break;
case SCINPUTOPT_TEXTWYSIWYG:
pValues[nProp] <<= GetTextWysiwyg();
break;
case SCINPUTOPT_REPLCELLSWARN:
pValues[nProp] <<= GetReplaceCellsWarn();
break;
case SCINPUTOPT_LEGACY_CELL_SELECTION:
pValues[nProp] <<= GetLegacyCellSelection();
break;
case SCINPUTOPT_ENTER_PASTE_MODE:
pValues[nProp] <<= GetEnterPasteMode();
break;
}
}
pValues[SCINPUTOPT_MOVEDIR] <<= static_cast<sal_Int32>(GetMoveDir());
pValues[SCINPUTOPT_MOVESEL] <<= GetMoveSelection();
pValues[SCINPUTOPT_EDTEREDIT] <<= GetEnterEdit();
pValues[SCINPUTOPT_EXTENDFMT] <<= GetExtendFormat();
pValues[SCINPUTOPT_RANGEFIND] <<= GetRangeFinder();
pValues[SCINPUTOPT_EXPANDREFS] <<= GetExpandRefs();
pValues[SCINPUTOPT_SORT_REF_UPDATE] <<= GetSortRefUpdate();
pValues[SCINPUTOPT_MARKHEADER] <<= GetMarkHeader();
pValues[SCINPUTOPT_USETABCOL] <<= GetUseTabCol();
pValues[SCINPUTOPT_TEXTWYSIWYG] <<= GetTextWysiwyg();
pValues[SCINPUTOPT_REPLCELLSWARN] <<= GetReplaceCellsWarn();
pValues[SCINPUTOPT_LEGACY_CELL_SELECTION] <<= GetLegacyCellSelection();
pValues[SCINPUTOPT_ENTER_PASTE_MODE] <<= GetEnterPasteMode();
PutProperties(aNames, aValues);
}
void ScInputCfg::Notify( const Sequence<OUString>& /* aPropertyNames */ )
{
OSL_FAIL("properties have been changed");
ReadCfg();
}
void ScInputCfg::SetOptions( const ScInputOptions& rNew )
{
*static_cast<ScInputOptions*>(this) = rNew;
SetModified();
Commit();
}
void ScInputCfg::OptionsChanged()
{
SetModified();
Commit();
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/test/source/sheet/globalsheetsettings.cxx b/test/source/sheet/globalsheetsettings.cxx
index 78b6d88..0d07ace 100644
--- a/test/source/sheet/globalsheetsettings.cxx
+++ b/test/source/sheet/globalsheetsettings.cxx
@@ -9,9 +9,14 @@
#include <test/sheet/globalsheetsettings.hxx>
#include <com/sun/star/beans/NamedValue.hpp>
#include <com/sun/star/beans/XPropertySet.hpp>
#include <com/sun/star/configuration/theDefaultProvider.hpp>
#include <com/sun/star/uno/Any.hxx>
#include <com/sun/star/uno/Reference.hxx>
#include <com/sun/star/util/XChangesBatch.hpp>
#include <comphelper/processfactory.hxx>
#include <cppunit/TestAssert.h>
@@ -23,91 +28,62 @@ namespace apitest
void GlobalSheetSettings::testGlobalSheetSettingsProperties()
{
uno::Reference<beans::XPropertySet> xGlobalSheetSettings(init(), UNO_QUERY_THROW);
auto configProvider
= css::configuration::theDefaultProvider::get(comphelper::getProcessComponentContext());
css::uno::Sequence<css::uno::Any> args{ css::uno::Any(css::beans::NamedValue(
"nodepath", css::uno::makeAny(OUString("/org.openoffice.Office.Calc/Input")))) };
css::uno::Reference<beans::XPropertySet> xRegNodeRO(
configProvider->createInstanceWithArguments(
"com.sun.star.configuration.ConfigurationAccess", args),
css::uno::UNO_QUERY_THROW);
css::uno::Reference<beans::XPropertySet> xRegNodeRW(
configProvider->createInstanceWithArguments(
"com.sun.star.configuration.ConfigurationUpdateAccess", args),
css::uno::UNO_QUERY_THROW);
css::uno::Reference<css::util::XChangesBatch> xBatch(xRegNodeRW, css::uno::UNO_QUERY_THROW);
auto DoCheck = [&xGlobalSheetSettings, &xRegNodeRO, &xRegNodeRW,
&xBatch](const OUString& propName, const auto& origValue, const auto& newValue,
const OUString& regValueName) {
OString sMessage = "PropertyValue " + propName.toUtf8();
css::uno::Any aOrigValue(origValue), aNewValue(newValue);
// 1. Check initial value
CPPUNIT_ASSERT_EQUAL_MESSAGE(sMessage.getStr(), aOrigValue,
xGlobalSheetSettings->getPropertyValue(propName));
CPPUNIT_ASSERT_EQUAL_MESSAGE(sMessage.getStr(), aOrigValue,
xRegNodeRO->getPropertyValue(regValueName));
// 2. Check setting the value through GlobalSheetSettings
xGlobalSheetSettings->setPropertyValue(propName, aNewValue);
CPPUNIT_ASSERT_EQUAL_MESSAGE(sMessage.getStr(), aNewValue,
xGlobalSheetSettings->getPropertyValue(propName));
CPPUNIT_ASSERT_EQUAL_MESSAGE(sMessage.getStr(), aNewValue,
xRegNodeRO->getPropertyValue(regValueName));
// 3. Check setting the value through ConfigurationUpdateAccess
xRegNodeRW->setPropertyValue(regValueName, aOrigValue);
xBatch->commitChanges();
CPPUNIT_ASSERT_EQUAL_MESSAGE(sMessage.getStr(), aOrigValue,
xRegNodeRO->getPropertyValue(regValueName));
CPPUNIT_ASSERT_EQUAL_MESSAGE(sMessage.getStr(), aOrigValue,
xGlobalSheetSettings->getPropertyValue(propName));
};
DoCheck("MoveSelection", true, false, "MoveSelection");
DoCheck("MoveDirection", sal_Int16(0), sal_Int16(1), "MoveSelectionDirection");
DoCheck("EnterEdit", false, true, "SwitchToEditMode");
DoCheck("ExtendFormat", false, true, "ExpandFormatting");
DoCheck("RangeFinder", true, false, "ShowReference");
DoCheck("ExpandReferences", false, true, "ExpandReference");
DoCheck("MarkHeader", true, false, "HighlightSelection");
DoCheck("UseTabCol", false, true, "UseTabCol");
DoCheck("UsePrinterMetrics", false, true, "UsePrinterMetrics");
DoCheck("ReplaceCellsWarning", true, false, "ReplaceCellsWarning");
OUString propName;
uno::Any aNewValue;
propName = "MoveSelection";
bool aMoveSelection = false;
CPPUNIT_ASSERT(xGlobalSheetSettings->getPropertyValue(propName) >>= aMoveSelection);
CPPUNIT_ASSERT_MESSAGE("Unable to get PropertyValue MoveSelection", aMoveSelection);
aNewValue <<= false;
xGlobalSheetSettings->setPropertyValue(propName, aNewValue);
CPPUNIT_ASSERT(xGlobalSheetSettings->getPropertyValue(propName) >>= aMoveSelection);
CPPUNIT_ASSERT_MESSAGE("Unable to set PropertyValue MoveSelection", !aMoveSelection);
propName = "MoveDirection";
sal_Int16 aMoveDirection = 42;
CPPUNIT_ASSERT(xGlobalSheetSettings->getPropertyValue(propName) >>= aMoveDirection);
CPPUNIT_ASSERT_EQUAL_MESSAGE("Unable to get PropertyValue MoveDirection", sal_Int16(0),
aMoveDirection);
aNewValue <<= sal_Int16(1);
xGlobalSheetSettings->setPropertyValue(propName, aNewValue);
CPPUNIT_ASSERT(xGlobalSheetSettings->getPropertyValue(propName) >>= aMoveDirection);
CPPUNIT_ASSERT_EQUAL_MESSAGE("Unable to set PropertyValue MoveDirection", sal_Int16(1),
aMoveDirection);
propName = "EnterEdit";
bool aEnterEdit = true;
CPPUNIT_ASSERT(xGlobalSheetSettings->getPropertyValue(propName) >>= aEnterEdit);
CPPUNIT_ASSERT_MESSAGE("Unable to get PropertyValue EnterEdit", !aEnterEdit);
aNewValue <<= true;
xGlobalSheetSettings->setPropertyValue(propName, aNewValue);
CPPUNIT_ASSERT(xGlobalSheetSettings->getPropertyValue(propName) >>= aEnterEdit);
CPPUNIT_ASSERT_MESSAGE("Unable to set PropertyValue EnterEdit", aEnterEdit);
propName = "ExtendFormat";
bool aExtendFormat = true;
CPPUNIT_ASSERT(xGlobalSheetSettings->getPropertyValue(propName) >>= aExtendFormat);
CPPUNIT_ASSERT_MESSAGE("Unable to get PropertyValue ExtendFormat", !aExtendFormat);
aNewValue <<= true;
xGlobalSheetSettings->setPropertyValue(propName, aNewValue);
CPPUNIT_ASSERT(xGlobalSheetSettings->getPropertyValue(propName) >>= aExtendFormat);
CPPUNIT_ASSERT_MESSAGE("Unable to set PropertyValue ExtendFormat", aExtendFormat);
propName = "RangeFinder";
bool aRangeFinder = false;
CPPUNIT_ASSERT(xGlobalSheetSettings->getPropertyValue(propName) >>= aRangeFinder);
CPPUNIT_ASSERT_MESSAGE("Unable to get PropertyValue RangeFinder", aRangeFinder);
aNewValue <<= false;
xGlobalSheetSettings->setPropertyValue(propName, aNewValue);
CPPUNIT_ASSERT(xGlobalSheetSettings->getPropertyValue(propName) >>= aRangeFinder);
CPPUNIT_ASSERT_MESSAGE("Unable to set PropertyValue RangeFinder", !aRangeFinder);
propName = "ExpandReferences";
bool aExpandReferences = true;
CPPUNIT_ASSERT(xGlobalSheetSettings->getPropertyValue(propName) >>= aExpandReferences);
CPPUNIT_ASSERT_MESSAGE("Unable to get PropertyValue ExpandReferences", !aExpandReferences);
aNewValue <<= true;
xGlobalSheetSettings->setPropertyValue(propName, aNewValue);
CPPUNIT_ASSERT(xGlobalSheetSettings->getPropertyValue(propName) >>= aExpandReferences);
CPPUNIT_ASSERT_MESSAGE("Unable to set PropertyValue ExpandReferences", aExpandReferences);
propName = "MarkHeader";
bool aMarkHeader = false;
CPPUNIT_ASSERT(xGlobalSheetSettings->getPropertyValue(propName) >>= aMarkHeader);
CPPUNIT_ASSERT_MESSAGE("Unable to get PropertyValue MarkHeader", aMarkHeader);
aNewValue <<= false;
xGlobalSheetSettings->setPropertyValue(propName, aNewValue);
CPPUNIT_ASSERT(xGlobalSheetSettings->getPropertyValue(propName) >>= aMarkHeader);
CPPUNIT_ASSERT_MESSAGE("Unable to set PropertyValue MarkHeader", !aMarkHeader);
propName = "UseTabCol";
bool aUseTabCol = true;
CPPUNIT_ASSERT(xGlobalSheetSettings->getPropertyValue(propName) >>= aUseTabCol);
CPPUNIT_ASSERT_MESSAGE("Unable to get PropertyValue UseTabCol", !aUseTabCol);
aNewValue <<= true;
xGlobalSheetSettings->setPropertyValue(propName, aNewValue);
CPPUNIT_ASSERT(xGlobalSheetSettings->getPropertyValue(propName) >>= aUseTabCol);
CPPUNIT_ASSERT_MESSAGE("Unable to set PropertyValue UseTabCol", aUseTabCol);
propName = "Metric";
sal_Int16 aMetric = 42;
CPPUNIT_ASSERT(xGlobalSheetSettings->getPropertyValue(propName) >>= aMetric);
@@ -205,27 +181,6 @@ void GlobalSheetSettings::testGlobalSheetSettingsProperties()
xGlobalSheetSettings->setPropertyValue(propName, aNewValue);
CPPUNIT_ASSERT(xGlobalSheetSettings->getPropertyValue(propName) >>= aPrintEmptyPages);
CPPUNIT_ASSERT_MESSAGE("Unable to set PropertyValue PrintEmptyPages", aPrintEmptyPages);
propName = "UsePrinterMetrics";
bool aUsePrinterMetrics = true;
CPPUNIT_ASSERT(xGlobalSheetSettings->getPropertyValue(propName) >>= aUsePrinterMetrics);
CPPUNIT_ASSERT_MESSAGE("Unable to get PropertyValue UsePrinterMetrics", !aUsePrinterMetrics);
aNewValue <<= true;
xGlobalSheetSettings->setPropertyValue(propName, aNewValue);
CPPUNIT_ASSERT(xGlobalSheetSettings->getPropertyValue(propName) >>= aUsePrinterMetrics);
CPPUNIT_ASSERT_MESSAGE("Unable to set PropertyValue UsePrinterMetrics", aUsePrinterMetrics);
propName = "ReplaceCellsWarning";
bool aReplaceCellsWarning = false;
CPPUNIT_ASSERT(xGlobalSheetSettings->getPropertyValue(propName) >>= aReplaceCellsWarning);
CPPUNIT_ASSERT_MESSAGE("Unable to get PropertyValue ReplaceCellsWarning", aReplaceCellsWarning);
aNewValue <<= false;
xGlobalSheetSettings->setPropertyValue(propName, aNewValue);
CPPUNIT_ASSERT(xGlobalSheetSettings->getPropertyValue(propName) >>= aReplaceCellsWarning);
CPPUNIT_ASSERT_MESSAGE("Unable to set PropertyValue ReplaceCellsWarning",
!aReplaceCellsWarning);
}
}