summaryrefslogtreecommitdiffstats
path: root/sc/inc/docoptio.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'sc/inc/docoptio.hxx')
-rw-r--r--sc/inc/docoptio.hxx178
1 files changed, 178 insertions, 0 deletions
diff --git a/sc/inc/docoptio.hxx b/sc/inc/docoptio.hxx
new file mode 100644
index 000000000..66946b3cf
--- /dev/null
+++ b/sc/inc/docoptio.hxx
@@ -0,0 +1,178 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * 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/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#ifndef INCLUDED_SC_INC_DOCOPTIO_HXX
+#define INCLUDED_SC_INC_DOCOPTIO_HXX
+
+#include <unotools/textsearch.hxx>
+#include <svl/poolitem.hxx>
+#include "scdllapi.h"
+#include "optutil.hxx"
+
+class SC_DLLPUBLIC ScDocOptions
+{
+ double fIterEps; // epsilon value dazu
+ sal_uInt16 nIterCount; ///< number
+ sal_uInt16 nPrecStandardFormat; ///< precision for standard format
+ sal_uInt16 nDay; ///< Null date:
+ sal_uInt16 nMonth;
+ sal_uInt16 nYear;
+ sal_uInt16 nYear2000; ///< earlier 19YY is assumed, 20YY otherwise (if only YY of year is given)
+ sal_uInt16 nTabDistance; ///< distance of standard tabs
+ mutable utl::SearchParam::SearchType eFormulaSearchType; ///< wildcards or regular expressions or normal search
+ bool bIsIgnoreCase; ///< ignore case for comparisons?
+ bool bIsIter; ///< iterations for circular refs
+ bool bCalcAsShown; ///< calculate as shown (wrt precision)
+ bool bMatchWholeCell; ///< search criteria must match the whole cell
+ bool bDoAutoSpell; ///< auto-spelling
+ bool bLookUpColRowNames; ///< determine column-/row titles automagically
+ mutable bool bFormulaRegexEnabled; ///< regular expressions in formulas enabled, only when reading settings
+ mutable bool bFormulaWildcardsEnabled;///< wildcards in formulas enabled, only when reading settings
+ bool bWriteCalcConfig; ///< (subset of) Calc config will be written to user's profile
+
+public:
+ ScDocOptions();
+
+ bool IsLookUpColRowNames() const { return bLookUpColRowNames; }
+ void SetLookUpColRowNames( bool bVal ) { bLookUpColRowNames = bVal; }
+ bool IsAutoSpell() const { return bDoAutoSpell; }
+ void SetAutoSpell( bool bVal ) { bDoAutoSpell = bVal; }
+ bool IsMatchWholeCell() const { return bMatchWholeCell; }
+ void SetMatchWholeCell( bool bVal ) { bMatchWholeCell = bVal; }
+ bool IsIgnoreCase() const { return bIsIgnoreCase; }
+ void SetIgnoreCase( bool bVal ) { bIsIgnoreCase = bVal; }
+ bool IsIter() const { return bIsIter; }
+ void SetIter( bool bVal ) { bIsIter = bVal; }
+ sal_uInt16 GetIterCount() const { return nIterCount; }
+ void SetIterCount( sal_uInt16 nCount) { nIterCount = nCount; }
+ double GetIterEps() const { return fIterEps; }
+ void SetIterEps( double fEps ) { fIterEps = fEps; }
+
+ void GetDate( sal_uInt16& rD, sal_uInt16& rM, sal_Int16& rY ) const
+ { rD = nDay; rM = nMonth; rY = nYear;}
+ void SetDate (sal_uInt16 nD, sal_uInt16 nM, sal_Int16 nY)
+ { nDay = nD; nMonth = nM; nYear = nY; }
+ sal_uInt16 GetTabDistance() const { return nTabDistance;}
+ void SetTabDistance( sal_uInt16 nTabDist ) {nTabDistance = nTabDist;}
+
+ void ResetDocOptions();
+
+ inline bool operator==( const ScDocOptions& rOpt ) const;
+ inline bool operator!=( const ScDocOptions& rOpt ) const;
+
+ sal_uInt16 GetStdPrecision() const { return nPrecStandardFormat; }
+ void SetStdPrecision( sal_uInt16 n ) { nPrecStandardFormat = n; }
+
+ bool IsCalcAsShown() const { return bCalcAsShown; }
+ void SetCalcAsShown( bool bVal ) { bCalcAsShown = bVal; }
+
+ void SetYear2000( sal_uInt16 nVal ) { nYear2000 = nVal; }
+ sal_uInt16 GetYear2000() const { return nYear2000; }
+
+ utl::SearchParam::SearchType GetFormulaSearchType() const
+ {
+ if (eFormulaSearchType == utl::SearchParam::SearchType::Unknown || (bFormulaRegexEnabled && bFormulaWildcardsEnabled))
+ eFormulaSearchType = utl::SearchParam::ConvertToSearchType( bFormulaWildcardsEnabled, bFormulaRegexEnabled);
+ return eFormulaSearchType;
+ }
+
+ void SetFormulaRegexEnabled( bool bVal );
+ bool IsFormulaRegexEnabled() const { return GetFormulaSearchType() == utl::SearchParam::SearchType::Regexp; }
+
+ void SetFormulaWildcardsEnabled( bool bVal );
+ bool IsFormulaWildcardsEnabled() const { return GetFormulaSearchType() == utl::SearchParam::SearchType::Wildcard; }
+
+ void SetWriteCalcConfig( bool bVal ) { bWriteCalcConfig = bVal; }
+ bool IsWriteCalcConfig() const { return bWriteCalcConfig; }
+};
+
+inline bool ScDocOptions::operator==( const ScDocOptions& rOpt ) const
+{
+ return (
+ rOpt.bIsIgnoreCase == bIsIgnoreCase
+ && rOpt.bIsIter == bIsIter
+ && rOpt.nIterCount == nIterCount
+ && rOpt.fIterEps == fIterEps
+ && rOpt.nPrecStandardFormat == nPrecStandardFormat
+ && rOpt.nDay == nDay
+ && rOpt.nMonth == nMonth
+ && rOpt.nYear == nYear
+ && rOpt.nYear2000 == nYear2000
+ && rOpt.nTabDistance == nTabDistance
+ && rOpt.bCalcAsShown == bCalcAsShown
+ && rOpt.bMatchWholeCell == bMatchWholeCell
+ && rOpt.bDoAutoSpell == bDoAutoSpell
+ && rOpt.bLookUpColRowNames == bLookUpColRowNames
+ && rOpt.bFormulaRegexEnabled == bFormulaRegexEnabled
+ && rOpt.bFormulaWildcardsEnabled == bFormulaWildcardsEnabled
+ && rOpt.eFormulaSearchType == eFormulaSearchType
+ && rOpt.bWriteCalcConfig == bWriteCalcConfig
+ );
+}
+
+inline bool ScDocOptions::operator!=( const ScDocOptions& rOpt ) const
+{
+ return !(operator==(rOpt));
+}
+
+// Item for preferences dialog - calculation
+
+class SC_DLLPUBLIC ScTpCalcItem final : public SfxPoolItem
+{
+public:
+ ScTpCalcItem( sal_uInt16 nWhich,
+ const ScDocOptions& rOpt );
+ virtual ~ScTpCalcItem() override;
+
+ ScTpCalcItem(ScTpCalcItem const &) = default;
+ ScTpCalcItem(ScTpCalcItem &&) = default;
+ ScTpCalcItem & operator =(ScTpCalcItem const &) = delete; // due to SfxPoolItem
+ ScTpCalcItem & operator =(ScTpCalcItem &&) = delete; // due to SfxPoolItem
+
+ virtual bool operator==( const SfxPoolItem& ) const override;
+ virtual ScTpCalcItem* Clone( SfxItemPool *pPool = nullptr ) const override;
+
+ const ScDocOptions& GetDocOptions() const { return theOptions; }
+
+private:
+ ScDocOptions theOptions;
+};
+
+// Config Item containing document options
+
+class ScDocCfg : public ScDocOptions
+{
+ ScLinkConfigItem aCalcItem;
+ ScLinkConfigItem aLayoutItem;
+
+ DECL_LINK( CalcCommitHdl, ScLinkConfigItem&, void );
+ DECL_LINK( LayoutCommitHdl, ScLinkConfigItem&, void );
+
+ static css::uno::Sequence<OUString> GetCalcPropertyNames();
+ static css::uno::Sequence<OUString> GetLayoutPropertyNames();
+
+public:
+ ScDocCfg();
+
+ void SetOptions( const ScDocOptions& rNew );
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */