summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sc/inc/printopt.hxx5
-rw-r--r--sc/source/core/tool/printopt.cxx58
-rw-r--r--sc/source/ui/app/scmod.cxx2
-rw-r--r--test/source/sheet/globalsheetsettings.cxx74
4 files changed, 53 insertions, 86 deletions
diff --git a/sc/inc/printopt.hxx b/sc/inc/printopt.hxx
index 1f00ab1cf486..f646a3548246 100644
--- a/sc/inc/printopt.hxx
+++ b/sc/inc/printopt.hxx
@@ -69,16 +69,17 @@ private:
// config item
-class ScPrintCfg final : public ScPrintOptions, public utl::ConfigItem
+class ScPrintCfg final : private ScPrintOptions, public utl::ConfigItem
{
private:
static css::uno::Sequence<OUString> GetPropertyNames();
-
+ void ReadCfg();
virtual void ImplCommit() override;
public:
ScPrintCfg();
+ const ScPrintOptions& GetOptions() const { return *this; }
void SetOptions( const ScPrintOptions& rNew );
virtual void Notify( const css::uno::Sequence< OUString >& aPropertyNames ) override;
diff --git a/sc/source/core/tool/printopt.cxx b/sc/source/core/tool/printopt.cxx
index b598672b2442..930de81d6fa3 100644
--- a/sc/source/core/tool/printopt.cxx
+++ b/sc/source/core/tool/printopt.cxx
@@ -88,32 +88,24 @@ ScPrintCfg::ScPrintCfg() :
ConfigItem( CFGPATH_PRINT )
{
Sequence<OUString> aNames = GetPropertyNames();
- Sequence<Any> aValues = GetProperties(aNames);
- const Any* pValues = aValues.getConstArray();
+ EnableNotification(aNames);
+ ReadCfg();
+}
+
+void ScPrintCfg::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())
- {
- switch(nProp)
- {
- case SCPRINTOPT_EMPTYPAGES:
- // reversed
- SetSkipEmpty( !ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) );
- break;
- case SCPRINTOPT_ALLSHEETS:
- SetAllSheets( ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) );
- break;
- case SCPRINTOPT_FORCEBREAKS:
- SetForceBreaks( ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) );
- break;
- }
- }
- }
+ if (bool bVal; aValues[SCPRINTOPT_EMPTYPAGES] >>= bVal)
+ SetSkipEmpty(!bVal); // reversed
+ if (bool bVal; aValues[SCPRINTOPT_ALLSHEETS] >>= bVal)
+ SetAllSheets(bVal);
+ if (bool bVal; aValues[SCPRINTOPT_FORCEBREAKS] >>= bVal)
+ SetForceBreaks(bVal);
}
void ScPrintCfg::ImplCommit()
@@ -122,22 +114,9 @@ void ScPrintCfg::ImplCommit()
Sequence<Any> aValues(aNames.getLength());
Any* pValues = aValues.getArray();
- for(int nProp = 0; nProp < aNames.getLength(); nProp++)
- {
- switch(nProp)
- {
- case SCPRINTOPT_EMPTYPAGES:
- // reversed
- pValues[nProp] <<= !GetSkipEmpty();
- break;
- case SCPRINTOPT_ALLSHEETS:
- pValues[nProp] <<= GetAllSheets();
- break;
- case SCPRINTOPT_FORCEBREAKS:
- pValues[nProp] <<= GetForceBreaks();
- break;
- }
- }
+ pValues[SCPRINTOPT_EMPTYPAGES] <<= !GetSkipEmpty(); // reversed
+ pValues[SCPRINTOPT_ALLSHEETS] <<= GetAllSheets();
+ pValues[SCPRINTOPT_FORCEBREAKS] <<= GetForceBreaks();
PutProperties(aNames, aValues);
}
@@ -145,8 +124,9 @@ void ScPrintCfg::SetOptions( const ScPrintOptions& rNew )
{
*static_cast<ScPrintOptions*>(this) = rNew;
SetModified();
+ Commit();
}
-void ScPrintCfg::Notify( const css::uno::Sequence< OUString >& ) {}
+void ScPrintCfg::Notify( const css::uno::Sequence< OUString >& ) { ReadCfg(); }
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/ui/app/scmod.cxx b/sc/source/ui/app/scmod.cxx
index dee33b48a509..d97a10248115 100644
--- a/sc/source/ui/app/scmod.cxx
+++ b/sc/source/ui/app/scmod.cxx
@@ -793,7 +793,7 @@ const ScPrintOptions& ScModule::GetPrintOptions()
if ( !m_pPrintCfg )
m_pPrintCfg.reset( new ScPrintCfg );
- return *m_pPrintCfg;
+ return m_pPrintCfg->GetOptions();
}
ScNavipiCfg& ScModule::GetNavipiCfg()
diff --git a/test/source/sheet/globalsheetsettings.cxx b/test/source/sheet/globalsheetsettings.cxx
index 0d07ace15abf..b707a770f921 100644
--- a/test/source/sheet/globalsheetsettings.cxx
+++ b/test/source/sheet/globalsheetsettings.cxx
@@ -30,24 +30,25 @@ 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) {
+
+ auto DoCheck = [&xGlobalSheetSettings, &configProvider](
+ const OUString& propName, const auto& origValue, const auto& newValue,
+ const OUString& regNodeName, const OUString& regValueName) {
OString sMessage = "PropertyValue " + propName.toUtf8();
css::uno::Any aOrigValue(origValue), aNewValue(newValue);
+ css::uno::Sequence<css::uno::Any> args{ css::uno::Any(
+ css::beans::NamedValue("nodepath", css::uno::makeAny(regNodeName))) };
+ 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);
+
// 1. Check initial value
CPPUNIT_ASSERT_EQUAL_MESSAGE(sMessage.getStr(), aOrigValue,
xGlobalSheetSettings->getPropertyValue(propName));
@@ -70,16 +71,17 @@ void GlobalSheetSettings::testGlobalSheetSettingsProperties()
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 node = "/org.openoffice.Office.Calc/Input";
+ DoCheck("MoveSelection", true, false, node, "MoveSelection");
+ DoCheck("MoveDirection", sal_Int16(0), sal_Int16(1), node, "MoveSelectionDirection");
+ DoCheck("EnterEdit", false, true, node, "SwitchToEditMode");
+ DoCheck("ExtendFormat", false, true, node, "ExpandFormatting");
+ DoCheck("RangeFinder", true, false, node, "ShowReference");
+ DoCheck("ExpandReferences", false, true, node, "ExpandReference");
+ DoCheck("MarkHeader", true, false, node, "HighlightSelection");
+ DoCheck("UseTabCol", false, true, node, "UseTabCol");
+ DoCheck("UsePrinterMetrics", false, true, node, "UsePrinterMetrics");
+ DoCheck("ReplaceCellsWarning", true, false, node, "ReplaceCellsWarning");
OUString propName;
uno::Any aNewValue;
@@ -162,25 +164,9 @@ void GlobalSheetSettings::testGlobalSheetSettingsProperties()
CPPUNIT_ASSERT_EQUAL_MESSAGE("Unable to set PropertyValue LinkUpdateMode", sal_Int16(1),
aLinkUpdateMode);
- propName = "PrintAllSheets";
- bool aPrintAllSheets = true;
- CPPUNIT_ASSERT(xGlobalSheetSettings->getPropertyValue(propName) >>= aPrintAllSheets);
- CPPUNIT_ASSERT_MESSAGE("Unable to get PropertyValue PrintAllSheets", !aPrintAllSheets);
-
- aNewValue <<= true;
- xGlobalSheetSettings->setPropertyValue(propName, aNewValue);
- CPPUNIT_ASSERT(xGlobalSheetSettings->getPropertyValue(propName) >>= aPrintAllSheets);
- CPPUNIT_ASSERT_MESSAGE("Unable to set PropertyValue PrintAllSheets", aPrintAllSheets);
-
- propName = "PrintEmptyPages";
- bool aPrintEmptyPages = true;
- CPPUNIT_ASSERT(xGlobalSheetSettings->getPropertyValue(propName) >>= aPrintEmptyPages);
- CPPUNIT_ASSERT_MESSAGE("Unable to get PropertyValue PrintEmptyPages", !aPrintEmptyPages);
-
- aNewValue <<= true;
- xGlobalSheetSettings->setPropertyValue(propName, aNewValue);
- CPPUNIT_ASSERT(xGlobalSheetSettings->getPropertyValue(propName) >>= aPrintEmptyPages);
- CPPUNIT_ASSERT_MESSAGE("Unable to set PropertyValue PrintEmptyPages", aPrintEmptyPages);
+ node = "/org.openoffice.Office.Calc/Print/";
+ DoCheck("PrintAllSheets", false, true, node + "Other", "AllSheets");
+ DoCheck("PrintEmptyPages", false, true, node + "Page", "EmptyPages");
}
}