summaryrefslogtreecommitdiff
path: root/sc/source
diff options
context:
space:
mode:
Diffstat (limited to 'sc/source')
-rw-r--r--sc/source/core/tool/appoptio.cxx2
-rw-r--r--sc/source/core/tool/docoptio.cxx66
-rw-r--r--sc/source/ui/app/scmod.cxx10
-rw-r--r--sc/source/ui/attrdlg/scdlgfact.cxx3
-rw-r--r--sc/source/ui/inc/optdlg.hrc5
-rw-r--r--sc/source/ui/inc/tpdefaults.hxx65
-rw-r--r--sc/source/ui/optdlg/tpdefaults.cxx87
-rw-r--r--sc/source/ui/src/optdlg.src32
-rw-r--r--sc/source/ui/view/tabvwsh4.cxx12
9 files changed, 275 insertions, 7 deletions
diff --git a/sc/source/core/tool/appoptio.cxx b/sc/source/core/tool/appoptio.cxx
index 4680d86e9..7541fb638 100644
--- a/sc/source/core/tool/appoptio.cxx
+++ b/sc/source/core/tool/appoptio.cxx
@@ -85,7 +85,7 @@ ScAppOptions::~ScAppOptions()
void ScAppOptions::SetDefaults()
{
// Set default tab count for new spreadsheet.
- nTabCountInNewSpreadsheet = 3;
+ nTabCountInNewSpreadsheet = 0;
if ( ScOptionsUtil::IsMetricSystem() )
eMetric = FUNIT_CM; // default for countries with metric system
diff --git a/sc/source/core/tool/docoptio.cxx b/sc/source/core/tool/docoptio.cxx
index f9e81a964..662d59c5a 100644
--- a/sc/source/core/tool/docoptio.cxx
+++ b/sc/source/core/tool/docoptio.cxx
@@ -91,6 +91,7 @@ ScDocOptions::ScDocOptions()
ScDocOptions::ScDocOptions( const ScDocOptions& rCpy )
: fIterEps( rCpy.fIterEps ),
nIterCount( rCpy.nIterCount ),
+ nInitTabCount( rCpy.nInitTabCount ),
nPrecStandardFormat( rCpy.nPrecStandardFormat ),
eKeyBindingType( rCpy.eKeyBindingType ),
nDay( rCpy.nDay ),
@@ -126,6 +127,7 @@ void ScDocOptions::ResetDocOptions()
bIsIgnoreCase = false;
bIsIter = false;
nIterCount = 100;
+ nInitTabCount = 3;
fIterEps = 1.0E-3;
nPrecStandardFormat = SvNumberFormatter::UNLIMITED_PRECISION;
eKeyBindingType = ScOptionsUtil::KEY_DEFAULT;
@@ -290,6 +292,11 @@ SfxPoolItem* ScTpCalcItem::Clone( SfxItemPool * ) const
#define SCCOMPATOPT_KEY_BINDING 0
#define SCCOMPATOPT_COUNT 1
+#define CFGPATH_DEFAULTS "Office.Calc/Defaults"
+#define SCDEFAULTSOPT_TAB_COUNT 0
+#define SCDEFAULTSOPT_COUNT 1
+
+
Sequence<OUString> ScDocCfg::GetCalcPropertyNames()
{
static const char* aPropNames[] =
@@ -365,11 +372,27 @@ Sequence<OUString> ScDocCfg::GetCompatPropertyNames()
return aNames;
}
+Sequence<OUString> ScDocCfg::GetDefaultsPropertyNames()
+{
+ static const char* aPropNames[] =
+ {
+ "Other/TabCount" // SCDEFAULTSOPT_COUNT_TAB_COUNT
+ };
+ Sequence<OUString> aNames(SCDEFAULTSOPT_COUNT);
+ OUString* pNames = aNames.getArray();
+ for (int i = 0; i < SCDEFAULTSOPT_COUNT; ++i)
+ pNames[i] = OUString::createFromAscii(aPropNames[i]);
+
+ return aNames;
+}
+
+
ScDocCfg::ScDocCfg() :
aCalcItem( OUString(RTL_CONSTASCII_USTRINGPARAM( CFGPATH_CALC )) ),
aFormulaItem(OUString(RTL_CONSTASCII_USTRINGPARAM(CFGPATH_FORMULA))),
aLayoutItem(OUString(RTL_CONSTASCII_USTRINGPARAM(CFGPATH_DOCLAYOUT))),
- aCompatItem(OUString(RTL_CONSTASCII_USTRINGPARAM(CFGPATH_COMPAT)))
+ aCompatItem(OUString(RTL_CONSTASCII_USTRINGPARAM(CFGPATH_COMPAT))),
+ aDefaultsItem(OUString(RTL_CONSTASCII_USTRINGPARAM(CFGPATH_DEFAULTS)))
{
sal_Int32 nIntVal = 0;
@@ -559,6 +582,27 @@ ScDocCfg::ScDocCfg() :
}
}
aCompatItem.SetCommitLink( LINK(this, ScDocCfg, CompatCommitHdl) );
+
+ aNames = GetDefaultsPropertyNames();
+ aValues = aDefaultsItem.GetProperties(aNames);
+ aDefaultsItem.EnableNotification(aNames);
+ pValues = aValues.getConstArray();
+ if (aValues.getLength() == aNames.getLength())
+ {
+ for (int nProp = 0; nProp < aNames.getLength(); ++nProp)
+ {
+ switch (nProp)
+ {
+
+ case SCDEFAULTSOPT_TAB_COUNT:
+ nIntVal = 3; // 3 = 'Default'
+ if (pValues[nProp] >>= nIntVal)
+ SetInitTabCount( static_cast<SCTAB>(nIntVal) );
+ break;
+ }
+ }
+ }
+ aDefaultsItem.SetCommitLink( LINK(this, ScDocCfg, DefaultsCommitHdl) );
}
IMPL_LINK( ScDocCfg, CalcCommitHdl, void *, EMPTYARG )
@@ -703,6 +747,25 @@ IMPL_LINK( ScDocCfg, CompatCommitHdl, void *, EMPTYARG )
return 0;
}
+IMPL_LINK( ScDocCfg, DefaultsCommitHdl, void *, EMPTYARG )
+{
+ Sequence<OUString> aNames = GetDefaultsPropertyNames();
+ Sequence<Any> aValues(aNames.getLength());
+ Any* pValues = aValues.getArray();
+
+ for (int nProp = 0; nProp < aNames.getLength(); ++nProp)
+ {
+ switch(nProp)
+ {
+ case SCDEFAULTSOPT_TAB_COUNT:
+ pValues[nProp] <<= static_cast<sal_Int32>(GetInitTabCount());
+ break;
+ }
+ }
+ aDefaultsItem.PutProperties(aNames, aValues);
+ return 0;
+}
+
void ScDocCfg::SetOptions( const ScDocOptions& rNew )
{
*(ScDocOptions*)this = rNew;
@@ -711,6 +774,7 @@ void ScDocCfg::SetOptions( const ScDocOptions& rNew )
aFormulaItem.SetModified();
aLayoutItem.SetModified();
aCompatItem.SetModified();
+ aDefaultsItem.SetModified();
}
diff --git a/sc/source/ui/app/scmod.cxx b/sc/source/ui/app/scmod.cxx
index f1610e347..75cca3046 100644
--- a/sc/source/ui/app/scmod.cxx
+++ b/sc/source/ui/app/scmod.cxx
@@ -100,13 +100,13 @@
#include "dwfunctr.hxx"
#include "formdata.hxx"
#include "tpprint.hxx"
+#include "tpdefaults.hxx"
#include "transobj.hxx"
#include "detfunc.hxx"
#include "preview.hxx"
#include <svx/xmlsecctrl.hxx>
-
#define ScModule
#include "scslots.hxx"
@@ -2047,6 +2047,14 @@ SfxTabPage* ScModule::CreateTabPage( sal_uInt16 nId, Window* pParent, const Sfx
pRet = (*ScTpPrintOptionsCreate)( pParent, rSet);
}
break;
+ case RID_SC_TP_DEFAULTS:
+ {
+ ::CreateTabPage ScTpDefaultsOptionsCreate = pFact->GetTabPageCreatorFunc( RID_SCPAGE_DEFAULTS );
+ if ( ScTpDefaultsOptionsCreate )
+ pRet = (*ScTpDefaultsOptionsCreate)( pParent, rSet);
+ }
+ break;
+
case RID_OFA_TP_INTERNATIONAL:
{
SfxAbstractDialogFactory* pSfxFact = SfxAbstractDialogFactory::Create();
diff --git a/sc/source/ui/attrdlg/scdlgfact.cxx b/sc/source/ui/attrdlg/scdlgfact.cxx
index 8d2e54ea1..9937e35cc 100644
--- a/sc/source/ui/attrdlg/scdlgfact.cxx
+++ b/sc/source/ui/attrdlg/scdlgfact.cxx
@@ -83,6 +83,7 @@
#include "tpformula.hxx"
#include "datafdlg.hxx"
#include "tpcompatibility.hxx"
+#include "tpdefaults.hxx"
// ause
#include "editutil.hxx"
@@ -1608,6 +1609,8 @@ CreateTabPage ScAbstractDialogFactory_Impl::GetTabPageCreatorFunc( sal_uInt16 nI
return ScTpFormulaOptions::Create;
case RID_SCPAGE_COMPATIBILITY:
return ScTpCompatOptions::Create;
+ case RID_SCPAGE_DEFAULTS:
+ return ScTpDefaultsOptions::Create;
case RID_SCPAGE_PRINT :
return ScTpPrintOptions::Create;
//break;
diff --git a/sc/source/ui/inc/optdlg.hrc b/sc/source/ui/inc/optdlg.hrc
index d62819b1e..4cdb0a568 100644
--- a/sc/source/ui/inc/optdlg.hrc
+++ b/sc/source/ui/inc/optdlg.hrc
@@ -194,3 +194,8 @@
#define FL_KEY_BINDINGS 1
#define FT_KEY_BINDINGS 2
#define LB_KEY_BINDINGS 3
+
+// TP_DEFAULTS
+#define FL_INIT_SPREADSHEET 1
+#define FT_NSHEETS 2
+#define ED_NSHEETS 3
diff --git a/sc/source/ui/inc/tpdefaults.hxx b/sc/source/ui/inc/tpdefaults.hxx
new file mode 100644
index 000000000..622a3105f
--- /dev/null
+++ b/sc/source/ui/inc/tpdefaults.hxx
@@ -0,0 +1,65 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (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.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Initial Developer of the Original Code is
+ * Albert Thuswaldner <albert.thuswaldner@gmail.com>
+ * Portions created by the Initial Developer are Copyright (C) 2011 the
+ * Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
+
+#ifndef __SC_TPDEFAULTS_HXX__
+#define __SC_TPDEFAULTS_HXX__
+
+#include <sfx2/tabdlg.hxx>
+#include <vcl/fixed.hxx>
+#include <vcl/field.hxx>
+
+#include <boost/shared_ptr.hpp>
+
+class ScDocOptions;
+
+class ScTpDefaultsOptions : public SfxTabPage
+{
+public:
+ using SfxTabPage::DeactivatePage;
+
+ static SfxTabPage* Create (Window* pParent, const SfxItemSet& rCoreAttrs);
+
+ virtual sal_Bool FillItemSet(SfxItemSet& rCoreAttrs);
+ virtual void Reset(const SfxItemSet& rCoreAttrs);
+ virtual int DeactivatePage(SfxItemSet* pSet = NULL);
+
+private:
+ explicit ScTpDefaultsOptions(Window* pParent, const SfxItemSet& rCoreAttrs);
+ virtual ~ScTpDefaultsOptions();
+
+private:
+ FixedLine aFLInitSpreadSheet;
+ FixedText aFtNSheets;
+ NumericField aEdNSheets;
+
+ ::boost::shared_ptr<ScDocOptions> mpLocalOptions;
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/ui/optdlg/tpdefaults.cxx b/sc/source/ui/optdlg/tpdefaults.cxx
new file mode 100644
index 000000000..bd9704131
--- /dev/null
+++ b/sc/source/ui/optdlg/tpdefaults.cxx
@@ -0,0 +1,87 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (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.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Initial Developer of the Original Code is
+ * Albert Thuswaldner <albert.thuswaldner@gmail.com>
+ * Portions created by the Initial Developer are Copyright (C) 2011 the
+ * Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sc.hxx"
+
+#undef SC_DLLIMPLEMENTATION
+
+#include "tpdefaults.hxx"
+#include "optdlg.hrc"
+#include "scresid.hxx"
+#include "scmod.hxx"
+#include "docoptio.hxx"
+
+ScTpDefaultsOptions::ScTpDefaultsOptions(Window *pParent, const SfxItemSet &rCoreAttrs) :
+ SfxTabPage(pParent, ScResId(RID_SCPAGE_DEFAULTS), rCoreAttrs),
+ aFLInitSpreadSheet ( this, ScResId( FL_INIT_SPREADSHEET ) ),
+ aFtNSheets ( this, ScResId( FT_NSHEETS ) ),
+ aEdNSheets ( this, ScResId( ED_NSHEETS ) )
+{
+ FreeResource();
+
+ const ScTpCalcItem& rItem = static_cast<const ScTpCalcItem&>(
+ rCoreAttrs.Get(GetWhich(SID_SCDOCOPTIONS)));
+ mpLocalOptions.reset(new ScDocOptions(rItem.GetDocOptions()));
+}
+
+ScTpDefaultsOptions::~ScTpDefaultsOptions()
+{
+}
+
+SfxTabPage* ScTpDefaultsOptions::Create(Window *pParent, const SfxItemSet &rCoreAttrs)
+{
+ return new ScTpDefaultsOptions(pParent, rCoreAttrs);
+}
+
+sal_Bool ScTpDefaultsOptions::FillItemSet(SfxItemSet &rCoreAttrs)
+{
+ SCTAB nTabCount = static_cast<SCTAB>(aEdNSheets.GetValue());
+
+ if ( mpLocalOptions->GetInitTabCount() != nTabCount)
+ {
+ mpLocalOptions->SetInitTabCount( nTabCount );
+
+ rCoreAttrs.Put(ScTpCalcItem(GetWhich(SID_SCDOCOPTIONS), *mpLocalOptions));
+ return sal_True;
+ }
+ else
+ return sal_False;
+}
+
+void ScTpDefaultsOptions::Reset(const SfxItemSet &/*rCoreAttrs*/)
+{
+ aEdNSheets.SetValue( static_cast<sal_uInt16>(mpLocalOptions->GetInitTabCount()) );
+}
+
+int ScTpDefaultsOptions::DeactivatePage(SfxItemSet* /*pSet*/)
+{
+ return KEEP_PAGE;
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/ui/src/optdlg.src b/sc/source/ui/src/optdlg.src
index 5a210d004..d6a622832 100644
--- a/sc/source/ui/src/optdlg.src
+++ b/sc/source/ui/src/optdlg.src
@@ -908,3 +908,35 @@ TabPage RID_SCPAGE_PRINT
Text [ en-US ] = "~Print only selected sheets";
};
};
+
+TabPage RID_SCPAGE_DEFAULTS
+{
+ HelpId = HID_SCPAGE_DEFAULTS ;
+ SVLook = TRUE ;
+ Hide = TRUE ;
+ Pos = MAP_APPFONT ( 0 , 0 ) ;
+ Size = MAP_APPFONT ( 260 , 185 ) ;
+ FixedLine FL_INIT_SPREADSHEET
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 248 , 8 ) ;
+ Text [ en-US ] = "New Spreadsheet";
+ };
+ FixedText FT_NSHEETS
+ {
+ Pos = MAP_APPFONT ( 12 , 32 ) ;
+ Size = MAP_APPFONT ( 120 , 8 ) ;
+ Text [ en-US ] = "Number of worksheets in new document";
+ };
+ NumericField ED_NSHEETS
+ {
+ HelpID = "sc:NumericField:RID_SCPAGE_CALC:ED_NSHEETS";
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 130 , 30 ) ;
+ Size = MAP_APPFONT ( 25 , 12 ) ;
+ Minimum = 1 ;
+ Maximum = 32000 ;
+ Spin = TRUE ;
+ Repeat = TRUE ;
+ };
+};
diff --git a/sc/source/ui/view/tabvwsh4.cxx b/sc/source/ui/view/tabvwsh4.cxx
index a542a2743..73e3055cc 100644
--- a/sc/source/ui/view/tabvwsh4.cxx
+++ b/sc/source/ui/view/tabvwsh4.cxx
@@ -29,8 +29,6 @@
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_sc.hxx"
-
-
// INCLUDE ---------------------------------------------------------------
#include "scitems.hxx"
@@ -97,6 +95,7 @@
#include "sc.hrc"
#include "scabstdlg.hxx"
#include "externalrefmgr.hxx"
+#include "docoptio.hxx"
void ActivateOlk( ScViewData* pViewData );
void DeActivateOlk( ScViewData* pViewData );
@@ -1596,8 +1595,13 @@ void ScTabViewShell::Construct( sal_uInt8 nForceDesignMode )
// append additional sheets (not for OLE object)
if ( pDocSh->GetCreateMode() != SFX_CREATE_MODE_EMBEDDED )
{
- SCTAB nInitTabCount = 3; //! konfigurierbar !!!
- // Get the customized initial tab count, we only can set the count by VBA API currently.
+ // Get the customized initial tab count...
+
+ // ... from option dialog.
+ const ScDocOptions& rDocOpt = SC_MOD()->GetDocOptions();
+ SCTAB nInitTabCount = rDocOpt.GetInitTabCount();
+
+ // ... by VBA API.
const ScAppOptions& rAppOpt = SC_MOD()->GetAppOptions();
SCTAB nNewTabCount = rAppOpt.GetTabCountInNewSpreadsheet();
if ( nNewTabCount >= 1 && nNewTabCount <= MAXTAB )