[Libreoffice-commits] .: sc/inc sc/Library_scui.mk sc/source

Kohei Yoshida kohei at kemper.freedesktop.org
Mon Jun 13 13:08:46 PDT 2011


 sc/Library_scui.mk                 |    1 
 sc/inc/docoptio.hxx                |    9 +++
 sc/inc/helpids.h                   |    2 
 sc/inc/sc.hrc                      |    3 +
 sc/source/core/tool/appoptio.cxx   |    2 
 sc/source/core/tool/docoptio.cxx   |   66 +++++++++++++++++++++++++++-
 sc/source/ui/app/scmod.cxx         |   10 +++-
 sc/source/ui/attrdlg/scdlgfact.cxx |    3 +
 sc/source/ui/inc/optdlg.hrc        |    5 ++
 sc/source/ui/inc/tpdefaults.hxx    |   65 +++++++++++++++++++++++++++
 sc/source/ui/optdlg/tpdefaults.cxx |   87 +++++++++++++++++++++++++++++++++++++
 sc/source/ui/src/optdlg.src        |   32 +++++++++++++
 sc/source/ui/view/tabvwsh4.cxx     |   12 +++--
 13 files changed, 289 insertions(+), 8 deletions(-)

New commits:
commit ac702efe46eb35da87e6da4ab50b100e5bef7dd3
Author: Albert Thuswaldner <albert.thuswaldner at gmail.com>
Date:   Mon Jun 13 15:54:06 2011 -0400

    fdo#33293: Option to configure initial number of sheets in Calc.

diff --git a/sc/Library_scui.mk b/sc/Library_scui.mk
index 1e0ef6b..c85de9f 100644
--- a/sc/Library_scui.mk
+++ b/sc/Library_scui.mk
@@ -103,6 +103,7 @@ $(eval $(call gb_Library_add_exception_objects,scui,\
     sc/source/ui/optdlg/tpcalc \
     sc/source/ui/optdlg/tpcompatibility \
     sc/source/ui/optdlg/tpformula \
+    sc/source/ui/optdlg/tpdefaults \
     sc/source/ui/optdlg/tpprint \
     sc/source/ui/optdlg/tpusrlst \
     sc/source/ui/optdlg/tpview \
diff --git a/sc/inc/docoptio.hxx b/sc/inc/docoptio.hxx
index 9ca84eb..de6b970 100644
--- a/sc/inc/docoptio.hxx
+++ b/sc/inc/docoptio.hxx
@@ -33,6 +33,7 @@
 #include <svl/poolitem.hxx>
 #include <svl/itemprop.hxx>
 #include "scdllapi.h"
+#include "scmod.hxx"
 #include "optutil.hxx"
 
 #include "formula/grammar.hxx"
@@ -41,6 +42,7 @@ class SC_DLLPUBLIC ScDocOptions
 {
     double fIterEps;				// epsilon value dazu
     sal_uInt16 nIterCount;				// number
+    SCTAB nInitTabCount;			// number of Tabs for new Spreadssheet doc
     sal_uInt16 nPrecStandardFormat; // precision for standard format
     ScOptionsUtil::KeyBindingType eKeyBindingType;
     sal_uInt16 nDay;					// Null date:
@@ -79,6 +81,8 @@ public:
     void   SetIter( sal_Bool bVal )			{ bIsIter = bVal; }
     sal_uInt16 GetIterCount() const			{ return nIterCount; }
     void   SetIterCount( sal_uInt16 nCount) { nIterCount = nCount; }
+    SCTAB GetInitTabCount() const			{ return nInitTabCount; }
+    void   SetInitTabCount( SCTAB nTabs) { nInitTabCount = nTabs; }
     double GetIterEps() const			{ return fIterEps; }
     void   SetIterEps( double fEps )	{ fIterEps = fEps; }
 
@@ -134,6 +138,7 @@ inline const ScDocOptions& ScDocOptions::operator=( const ScDocOptions& rCpy )
     bIsIgnoreCase		= rCpy.bIsIgnoreCase;
     bIsIter				= rCpy.bIsIter;
     nIterCount			= rCpy.nIterCount;
+    nInitTabCount       = rCpy.nInitTabCount;
     fIterEps			= rCpy.fIterEps;
     nPrecStandardFormat = rCpy.nPrecStandardFormat;
     eKeyBindingType     = rCpy.eKeyBindingType;
@@ -162,6 +167,7 @@ inline int ScDocOptions::operator==( const ScDocOptions& rOpt ) const
                 rOpt.bIsIgnoreCase			== bIsIgnoreCase
             &&	rOpt.bIsIter 				== bIsIter
             &&	rOpt.nIterCount 			== nIterCount
+            &&  rOpt.nInitTabCount          == nInitTabCount
             &&	rOpt.fIterEps 				== fIterEps
             &&	rOpt.nPrecStandardFormat 	== nPrecStandardFormat
             &&  rOpt.eKeyBindingType        == eKeyBindingType
@@ -221,16 +227,19 @@ class ScDocCfg : public ScDocOptions
     ScLinkConfigItem    aFormulaItem;
     ScLinkConfigItem	aLayoutItem;
     ScLinkConfigItem    aCompatItem;
+    ScLinkConfigItem    aDefaultsItem;
 
     DECL_LINK( CalcCommitHdl, void* );
     DECL_LINK( FormulaCommitHdl, void* );
     DECL_LINK( LayoutCommitHdl, void* );
     DECL_LINK( CompatCommitHdl, void* );
+    DECL_LINK( DefaultsCommitHdl, void* );
 
     com::sun::star::uno::Sequence<rtl::OUString> GetCalcPropertyNames();
     com::sun::star::uno::Sequence<rtl::OUString> GetFormulaPropertyNames();
     com::sun::star::uno::Sequence<rtl::OUString> GetLayoutPropertyNames();
     com::sun::star::uno::Sequence<rtl::OUString> GetCompatPropertyNames();
+    com::sun::star::uno::Sequence<rtl::OUString> GetDefaultsPropertyNames();
 
 public:
             ScDocCfg();
diff --git a/sc/inc/helpids.h b/sc/inc/helpids.h
index de666a3..6273186 100644
--- a/sc/inc/helpids.h
+++ b/sc/inc/helpids.h
@@ -99,7 +99,7 @@
 #define HID_SCPAGE_COMPATIBILITY                                "SC_HID_SCPAGE_COMPATIBILITY"
 #define HID_SCPAGE_TABLE                                        "SC_HID_SCPAGE_TABLE"
 #define HID_SCPAGE_PRINT                                        "SC_HID_SCPAGE_PRINT"
-
+#define HID_SCPAGE_DEFAULTS                                     "SC_HID_SCPAGE_DEFAULTS"
 #define HID_SCPAGE_SUBT_GROUP1                                  "SC_HID_SCPAGE_SUBT_GROUP1"
 #define HID_SCPAGE_SUBT_GROUP2                                  "SC_HID_SCPAGE_SUBT_GROUP2"
 #define HID_SCPAGE_SUBT_GROUP3                                  "SC_HID_SCPAGE_SUBT_GROUP3"
diff --git a/sc/inc/sc.hrc b/sc/inc/sc.hrc
index dbee75b..ad488e1 100644
--- a/sc/inc/sc.hrc
+++ b/sc/inc/sc.hrc
@@ -1254,5 +1254,8 @@
 // compatibility options page
 #define RID_SCPAGE_COMPATIBILITY    (SC_OOO_BUILD_START + 9)
 
+// init option page
+#define RID_SCPAGE_DEFAULTS         (SC_OOO_BUILD_START + 10)
+
 #endif
 
diff --git a/sc/source/core/tool/appoptio.cxx b/sc/source/core/tool/appoptio.cxx
index 4680d86..7541fb6 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 f9e81a9..662d59c 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 f1610e3..75cca30 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 8d2e54e..9937e35 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 d62819b..4cdb0a5 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 0000000..622a310
--- /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 at 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 0000000..bd97041
--- /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 at 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 5a210d0..d6a6228 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 a542a27..73e3055 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 )


More information about the Libreoffice-commits mailing list