xref: /trunk/main/sc/source/core/tool/printopt.cxx (revision cf6516809c57e1bb0a940545cca99cdad54d4ce2)
1*b3f79822SAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*b3f79822SAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*b3f79822SAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*b3f79822SAndrew Rist  * distributed with this work for additional information
6*b3f79822SAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*b3f79822SAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*b3f79822SAndrew Rist  * "License"); you may not use this file except in compliance
9*b3f79822SAndrew Rist  * with the License.  You may obtain a copy of the License at
10cdf0e10cSrcweir  *
11*b3f79822SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12cdf0e10cSrcweir  *
13*b3f79822SAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*b3f79822SAndrew Rist  * software distributed under the License is distributed on an
15*b3f79822SAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b3f79822SAndrew Rist  * KIND, either express or implied.  See the License for the
17*b3f79822SAndrew Rist  * specific language governing permissions and limitations
18*b3f79822SAndrew Rist  * under the License.
19cdf0e10cSrcweir  *
20*b3f79822SAndrew Rist  *************************************************************/
21*b3f79822SAndrew Rist 
22*b3f79822SAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
25cdf0e10cSrcweir #include "precompiled_sc.hxx"
26cdf0e10cSrcweir 
27cdf0e10cSrcweir 
28cdf0e10cSrcweir 
29cdf0e10cSrcweir #include <com/sun/star/uno/Any.hxx>
30cdf0e10cSrcweir #include <com/sun/star/uno/Sequence.hxx>
31cdf0e10cSrcweir 
32cdf0e10cSrcweir #include "printopt.hxx"
33cdf0e10cSrcweir #include "miscuno.hxx"
34cdf0e10cSrcweir 
35cdf0e10cSrcweir using namespace utl;
36cdf0e10cSrcweir using namespace rtl;
37cdf0e10cSrcweir using namespace com::sun::star::uno;
38cdf0e10cSrcweir 
39cdf0e10cSrcweir // -----------------------------------------------------------------------
40cdf0e10cSrcweir 
41cdf0e10cSrcweir TYPEINIT1(ScTpPrintItem, SfxPoolItem);
42cdf0e10cSrcweir 
43cdf0e10cSrcweir // -----------------------------------------------------------------------
44cdf0e10cSrcweir 
ScPrintOptions()45cdf0e10cSrcweir ScPrintOptions::ScPrintOptions()
46cdf0e10cSrcweir {
47cdf0e10cSrcweir     SetDefaults();
48cdf0e10cSrcweir }
49cdf0e10cSrcweir 
ScPrintOptions(const ScPrintOptions & rCpy)50cdf0e10cSrcweir ScPrintOptions::ScPrintOptions( const ScPrintOptions& rCpy ) :
51cdf0e10cSrcweir     bSkipEmpty( rCpy.bSkipEmpty ),
52cdf0e10cSrcweir     bAllSheets( rCpy.bAllSheets )
53cdf0e10cSrcweir {
54cdf0e10cSrcweir }
55cdf0e10cSrcweir 
~ScPrintOptions()56cdf0e10cSrcweir ScPrintOptions::~ScPrintOptions()
57cdf0e10cSrcweir {
58cdf0e10cSrcweir }
59cdf0e10cSrcweir 
SetDefaults()60cdf0e10cSrcweir void ScPrintOptions::SetDefaults()
61cdf0e10cSrcweir {
62cdf0e10cSrcweir     bSkipEmpty = sal_True;
63cdf0e10cSrcweir     bAllSheets = sal_False;
64cdf0e10cSrcweir }
65cdf0e10cSrcweir 
operator =(const ScPrintOptions & rCpy)66cdf0e10cSrcweir const ScPrintOptions& ScPrintOptions::operator=( const ScPrintOptions& rCpy )
67cdf0e10cSrcweir {
68cdf0e10cSrcweir     bSkipEmpty = rCpy.bSkipEmpty;
69cdf0e10cSrcweir     bAllSheets = rCpy.bAllSheets;
70cdf0e10cSrcweir     return *this;
71cdf0e10cSrcweir }
72cdf0e10cSrcweir 
operator ==(const ScPrintOptions & rOpt) const73cdf0e10cSrcweir int ScPrintOptions::operator==( const ScPrintOptions& rOpt ) const
74cdf0e10cSrcweir {
75cdf0e10cSrcweir     return bSkipEmpty == rOpt.bSkipEmpty
76cdf0e10cSrcweir         && bAllSheets == rOpt.bAllSheets;
77cdf0e10cSrcweir }
78cdf0e10cSrcweir 
operator !=(const ScPrintOptions & rOpt) const79cdf0e10cSrcweir int ScPrintOptions::operator!=( const ScPrintOptions& rOpt ) const
80cdf0e10cSrcweir {
81cdf0e10cSrcweir     return !(operator==(rOpt));
82cdf0e10cSrcweir }
83cdf0e10cSrcweir 
84cdf0e10cSrcweir // -----------------------------------------------------------------------
85cdf0e10cSrcweir 
86cdf0e10cSrcweir //UNUSED2008-05  ScTpPrintItem::ScTpPrintItem( sal_uInt16 nWhichP ) : SfxPoolItem( nWhichP )
87cdf0e10cSrcweir //UNUSED2008-05  {
88cdf0e10cSrcweir //UNUSED2008-05  }
89cdf0e10cSrcweir 
ScTpPrintItem(sal_uInt16 nWhichP,const ScPrintOptions & rOpt)90cdf0e10cSrcweir ScTpPrintItem::ScTpPrintItem( sal_uInt16 nWhichP, const ScPrintOptions& rOpt ) :
91cdf0e10cSrcweir     SfxPoolItem ( nWhichP ),
92cdf0e10cSrcweir     theOptions  ( rOpt )
93cdf0e10cSrcweir {
94cdf0e10cSrcweir }
95cdf0e10cSrcweir 
ScTpPrintItem(const ScTpPrintItem & rItem)96cdf0e10cSrcweir ScTpPrintItem::ScTpPrintItem( const ScTpPrintItem& rItem ) :
97cdf0e10cSrcweir     SfxPoolItem ( rItem ),
98cdf0e10cSrcweir     theOptions  ( rItem.theOptions )
99cdf0e10cSrcweir {
100cdf0e10cSrcweir }
101cdf0e10cSrcweir 
~ScTpPrintItem()102cdf0e10cSrcweir ScTpPrintItem::~ScTpPrintItem()
103cdf0e10cSrcweir {
104cdf0e10cSrcweir }
105cdf0e10cSrcweir 
GetValueText() const106cdf0e10cSrcweir String ScTpPrintItem::GetValueText() const
107cdf0e10cSrcweir {
108cdf0e10cSrcweir     return String::CreateFromAscii( "ScTpPrintItem" );
109cdf0e10cSrcweir }
110cdf0e10cSrcweir 
operator ==(const SfxPoolItem & rItem) const111cdf0e10cSrcweir int ScTpPrintItem::operator==( const SfxPoolItem& rItem ) const
112cdf0e10cSrcweir {
113cdf0e10cSrcweir     DBG_ASSERT( SfxPoolItem::operator==( rItem ), "unequal Which or Type" );
114cdf0e10cSrcweir 
115cdf0e10cSrcweir     const ScTpPrintItem& rPItem = (const ScTpPrintItem&)rItem;
116cdf0e10cSrcweir     return ( theOptions == rPItem.theOptions );
117cdf0e10cSrcweir }
118cdf0e10cSrcweir 
Clone(SfxItemPool *) const119cdf0e10cSrcweir SfxPoolItem* ScTpPrintItem::Clone( SfxItemPool * ) const
120cdf0e10cSrcweir {
121cdf0e10cSrcweir     return new ScTpPrintItem( *this );
122cdf0e10cSrcweir }
123cdf0e10cSrcweir 
124cdf0e10cSrcweir // -----------------------------------------------------------------------
125cdf0e10cSrcweir 
126cdf0e10cSrcweir #define CFGPATH_PRINT           "Office.Calc/Print"
127cdf0e10cSrcweir 
128cdf0e10cSrcweir #define SCPRINTOPT_EMPTYPAGES       0
129cdf0e10cSrcweir #define SCPRINTOPT_ALLSHEETS        1
130cdf0e10cSrcweir #define SCPRINTOPT_COUNT            2
131cdf0e10cSrcweir 
GetPropertyNames()132cdf0e10cSrcweir Sequence<OUString> ScPrintCfg::GetPropertyNames()
133cdf0e10cSrcweir {
134cdf0e10cSrcweir     static const char* aPropNames[] =
135cdf0e10cSrcweir     {
136cdf0e10cSrcweir         "Page/EmptyPages",          // SCPRINTOPT_EMPTYPAGES
137cdf0e10cSrcweir         "Other/AllSheets"           // SCPRINTOPT_ALLSHEETS
138cdf0e10cSrcweir     };
139cdf0e10cSrcweir     Sequence<OUString> aNames(SCPRINTOPT_COUNT);
140cdf0e10cSrcweir     OUString* pNames = aNames.getArray();
141cdf0e10cSrcweir     for(int i = 0; i < SCPRINTOPT_COUNT; i++)
142cdf0e10cSrcweir         pNames[i] = OUString::createFromAscii(aPropNames[i]);
143cdf0e10cSrcweir 
144cdf0e10cSrcweir     return aNames;
145cdf0e10cSrcweir }
146cdf0e10cSrcweir 
ScPrintCfg()147cdf0e10cSrcweir ScPrintCfg::ScPrintCfg() :
148cdf0e10cSrcweir     ConfigItem( OUString::createFromAscii( CFGPATH_PRINT ) )
149cdf0e10cSrcweir {
150cdf0e10cSrcweir     Sequence<OUString> aNames = GetPropertyNames();
151cdf0e10cSrcweir     Sequence<Any> aValues = GetProperties(aNames);
152cdf0e10cSrcweir //  EnableNotification(aNames);
153cdf0e10cSrcweir     const Any* pValues = aValues.getConstArray();
154cdf0e10cSrcweir     DBG_ASSERT(aValues.getLength() == aNames.getLength(), "GetProperties failed");
155cdf0e10cSrcweir     if(aValues.getLength() == aNames.getLength())
156cdf0e10cSrcweir     {
157cdf0e10cSrcweir         for(int nProp = 0; nProp < aNames.getLength(); nProp++)
158cdf0e10cSrcweir         {
159cdf0e10cSrcweir             DBG_ASSERT(pValues[nProp].hasValue(), "property value missing");
160cdf0e10cSrcweir             if(pValues[nProp].hasValue())
161cdf0e10cSrcweir             {
162cdf0e10cSrcweir                 switch(nProp)
163cdf0e10cSrcweir                 {
164cdf0e10cSrcweir                     case SCPRINTOPT_EMPTYPAGES:
165cdf0e10cSrcweir                         // reversed
166cdf0e10cSrcweir                         SetSkipEmpty( !ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) );
167cdf0e10cSrcweir                         break;
168cdf0e10cSrcweir                     case SCPRINTOPT_ALLSHEETS:
169cdf0e10cSrcweir                         SetAllSheets( ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) );
170cdf0e10cSrcweir                         break;
171cdf0e10cSrcweir                 }
172cdf0e10cSrcweir             }
173cdf0e10cSrcweir         }
174cdf0e10cSrcweir     }
175cdf0e10cSrcweir }
176cdf0e10cSrcweir 
177cdf0e10cSrcweir 
Commit()178cdf0e10cSrcweir void ScPrintCfg::Commit()
179cdf0e10cSrcweir {
180cdf0e10cSrcweir     Sequence<OUString> aNames = GetPropertyNames();
181cdf0e10cSrcweir     Sequence<Any> aValues(aNames.getLength());
182cdf0e10cSrcweir     Any* pValues = aValues.getArray();
183cdf0e10cSrcweir 
184cdf0e10cSrcweir     for(int nProp = 0; nProp < aNames.getLength(); nProp++)
185cdf0e10cSrcweir     {
186cdf0e10cSrcweir         switch(nProp)
187cdf0e10cSrcweir         {
188cdf0e10cSrcweir             case SCPRINTOPT_EMPTYPAGES:
189cdf0e10cSrcweir                 // reversed
190cdf0e10cSrcweir                 ScUnoHelpFunctions::SetBoolInAny( pValues[nProp], !GetSkipEmpty() );
191cdf0e10cSrcweir                 break;
192cdf0e10cSrcweir             case SCPRINTOPT_ALLSHEETS:
193cdf0e10cSrcweir                 ScUnoHelpFunctions::SetBoolInAny( pValues[nProp], GetAllSheets() );
194cdf0e10cSrcweir                 break;
195cdf0e10cSrcweir         }
196cdf0e10cSrcweir     }
197cdf0e10cSrcweir     PutProperties(aNames, aValues);
198cdf0e10cSrcweir }
199cdf0e10cSrcweir 
SetOptions(const ScPrintOptions & rNew)200cdf0e10cSrcweir void ScPrintCfg::SetOptions( const ScPrintOptions& rNew )
201cdf0e10cSrcweir {
202cdf0e10cSrcweir     *(ScPrintOptions*)this = rNew;
203cdf0e10cSrcweir     SetModified();
204cdf0e10cSrcweir }
205cdf0e10cSrcweir 
Notify(const::com::sun::star::uno::Sequence<rtl::OUString> &)206cdf0e10cSrcweir void ScPrintCfg::Notify( const ::com::sun::star::uno::Sequence< rtl::OUString >& ) {}
207