xref: /aoo41x/main/desktop/source/app/cmdlineargs.cxx (revision 85c309d6)
12722ceddSAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
32722ceddSAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
42722ceddSAndrew Rist  * or more contributor license agreements.  See the NOTICE file
52722ceddSAndrew Rist  * distributed with this work for additional information
62722ceddSAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
72722ceddSAndrew Rist  * to you under the Apache License, Version 2.0 (the
82722ceddSAndrew Rist  * "License"); you may not use this file except in compliance
92722ceddSAndrew Rist  * with the License.  You may obtain a copy of the License at
102722ceddSAndrew Rist  *
112722ceddSAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
122722ceddSAndrew Rist  *
132722ceddSAndrew Rist  * Unless required by applicable law or agreed to in writing,
142722ceddSAndrew Rist  * software distributed under the License is distributed on an
152722ceddSAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
162722ceddSAndrew Rist  * KIND, either express or implied.  See the License for the
172722ceddSAndrew Rist  * specific language governing permissions and limitations
182722ceddSAndrew Rist  * under the License.
192722ceddSAndrew Rist  *
202722ceddSAndrew Rist  *************************************************************/
212722ceddSAndrew Rist 
222722ceddSAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
25cdf0e10cSrcweir #include "precompiled_desktop.hxx"
26cdf0e10cSrcweir #include <cmdlineargs.hxx>
27cdf0e10cSrcweir #include <vcl/svapp.hxx>
28cdf0e10cSrcweir #include <rtl/uri.hxx>
29cdf0e10cSrcweir #include <rtl/ustring.hxx>
30cdf0e10cSrcweir #include "rtl/process.h"
31cdf0e10cSrcweir #include <comphelper/processfactory.hxx>
32cdf0e10cSrcweir #include <com/sun/star/uri/XExternalUriReferenceTranslator.hpp>
33cdf0e10cSrcweir #include <com/sun/star/lang/XMultiServiceFactory.hpp>
34cdf0e10cSrcweir #include <com/sun/star/uno/Reference.hxx>
35cdf0e10cSrcweir #include "tools/getprocessworkingdir.hxx"
36cdf0e10cSrcweir 
37cdf0e10cSrcweir #include <svl/documentlockfile.hxx>
38cdf0e10cSrcweir 
39cdf0e10cSrcweir using namespace rtl;
40cdf0e10cSrcweir using namespace com::sun::star::lang;
41cdf0e10cSrcweir using namespace com::sun::star::uri;
42cdf0e10cSrcweir using namespace com::sun::star::uno;
43cdf0e10cSrcweir 
44cdf0e10cSrcweir namespace desktop
45cdf0e10cSrcweir {
46cdf0e10cSrcweir 
47cdf0e10cSrcweir namespace {
48cdf0e10cSrcweir 
49cdf0e10cSrcweir class ExtCommandLineSupplier: public CommandLineArgs::Supplier {
50cdf0e10cSrcweir public:
ExtCommandLineSupplier()51cdf0e10cSrcweir     explicit ExtCommandLineSupplier():
52cdf0e10cSrcweir         m_count(rtl_getAppCommandArgCount()),
53cdf0e10cSrcweir         m_index(0)
54cdf0e10cSrcweir     {
55cdf0e10cSrcweir         rtl::OUString url;
56cdf0e10cSrcweir         if (tools::getProcessWorkingDir(&url)) {
57cdf0e10cSrcweir             m_cwdUrl.reset(url);
58cdf0e10cSrcweir         }
59cdf0e10cSrcweir     }
60cdf0e10cSrcweir 
~ExtCommandLineSupplier()61cdf0e10cSrcweir     virtual ~ExtCommandLineSupplier() {}
62cdf0e10cSrcweir 
getCwdUrl()63cdf0e10cSrcweir     virtual boost::optional< rtl::OUString > getCwdUrl() { return m_cwdUrl; }
64cdf0e10cSrcweir 
next(rtl::OUString * argument)65cdf0e10cSrcweir     virtual bool next(rtl::OUString * argument) {
66cdf0e10cSrcweir         OSL_ASSERT(argument != NULL);
67cdf0e10cSrcweir         if (m_index < m_count) {
68cdf0e10cSrcweir             rtl_getAppCommandArg(m_index++, &argument->pData);
69cdf0e10cSrcweir             return true;
70cdf0e10cSrcweir         } else {
71cdf0e10cSrcweir             return false;
72cdf0e10cSrcweir         }
73cdf0e10cSrcweir     }
74cdf0e10cSrcweir 
75cdf0e10cSrcweir private:
76cdf0e10cSrcweir     boost::optional< rtl::OUString > m_cwdUrl;
77cdf0e10cSrcweir     sal_uInt32 m_count;
78cdf0e10cSrcweir     sal_uInt32 m_index;
79cdf0e10cSrcweir };
80cdf0e10cSrcweir 
81cdf0e10cSrcweir }
82cdf0e10cSrcweir 
83cdf0e10cSrcweir static CommandLineArgs::BoolParam aModuleGroupDefinition[] =
84cdf0e10cSrcweir {
85cdf0e10cSrcweir 	CommandLineArgs::CMD_BOOLPARAM_WRITER,
86cdf0e10cSrcweir 	CommandLineArgs::CMD_BOOLPARAM_CALC,
87cdf0e10cSrcweir 	CommandLineArgs::CMD_BOOLPARAM_DRAW,
88cdf0e10cSrcweir 	CommandLineArgs::CMD_BOOLPARAM_IMPRESS,
89cdf0e10cSrcweir 	CommandLineArgs::CMD_BOOLPARAM_GLOBAL,
90cdf0e10cSrcweir 	CommandLineArgs::CMD_BOOLPARAM_MATH,
91cdf0e10cSrcweir 	CommandLineArgs::CMD_BOOLPARAM_WEB,
92cdf0e10cSrcweir 	CommandLineArgs::CMD_BOOLPARAM_BASE
93cdf0e10cSrcweir };
94cdf0e10cSrcweir 
95cdf0e10cSrcweir CommandLineArgs::GroupDefinition CommandLineArgs::m_pGroupDefinitions[ CommandLineArgs::CMD_GRPID_COUNT ] =
96cdf0e10cSrcweir {
97cdf0e10cSrcweir 	{ 8, aModuleGroupDefinition }
98cdf0e10cSrcweir };
99cdf0e10cSrcweir 
Exception()100cdf0e10cSrcweir CommandLineArgs::Supplier::Exception::Exception() {}
101cdf0e10cSrcweir 
Exception(Exception const &)102cdf0e10cSrcweir CommandLineArgs::Supplier::Exception::Exception(Exception const &) {}
103cdf0e10cSrcweir 
~Exception()104cdf0e10cSrcweir CommandLineArgs::Supplier::Exception::~Exception() {}
105cdf0e10cSrcweir 
106cdf0e10cSrcweir CommandLineArgs::Supplier::Exception &
operator =(Exception const &)107cdf0e10cSrcweir CommandLineArgs::Supplier::Exception::operator =(Exception const &)
108cdf0e10cSrcweir { return *this; }
109cdf0e10cSrcweir 
~Supplier()110cdf0e10cSrcweir CommandLineArgs::Supplier::~Supplier() {}
111cdf0e10cSrcweir 
112cdf0e10cSrcweir // intialize class with command line parameters from process environment
CommandLineArgs()113cdf0e10cSrcweir CommandLineArgs::CommandLineArgs()
114cdf0e10cSrcweir {
115cdf0e10cSrcweir 	ResetParamValues();
116cdf0e10cSrcweir     ExtCommandLineSupplier s;
117cdf0e10cSrcweir 	ParseCommandLine_Impl( s );
118cdf0e10cSrcweir }
119cdf0e10cSrcweir 
CommandLineArgs(Supplier & supplier)120cdf0e10cSrcweir CommandLineArgs::CommandLineArgs( Supplier& supplier )
121cdf0e10cSrcweir {
122cdf0e10cSrcweir 	ResetParamValues();
123cdf0e10cSrcweir 	ParseCommandLine_Impl( supplier );
124cdf0e10cSrcweir }
125cdf0e10cSrcweir 
126cdf0e10cSrcweir // ----------------------------------------------------------------------------
127cdf0e10cSrcweir 
ParseCommandLine_Impl(Supplier & supplier)128cdf0e10cSrcweir void CommandLineArgs::ParseCommandLine_Impl( Supplier& supplier )
129cdf0e10cSrcweir {
130cdf0e10cSrcweir     m_cwdUrl = supplier.getCwdUrl();
131cdf0e10cSrcweir 	Reference<XMultiServiceFactory> xMS(comphelper::getProcessServiceFactory(), UNO_QUERY);
132cdf0e10cSrcweir 	OSL_ENSURE(xMS.is(), "CommandLineArgs: no ProcessServiceFactory.");
133cdf0e10cSrcweir 
134cdf0e10cSrcweir     Reference< XExternalUriReferenceTranslator > xTranslator(
135cdf0e10cSrcweir         xMS->createInstance(
136cdf0e10cSrcweir         OUString::createFromAscii(
137cdf0e10cSrcweir         "com.sun.star.uri.ExternalUriReferenceTranslator")),
138cdf0e10cSrcweir         UNO_QUERY);
139cdf0e10cSrcweir 
140cdf0e10cSrcweir 	// parse command line arguments
141cdf0e10cSrcweir     bool bOpenEvent(true);
142cdf0e10cSrcweir     bool bPrintEvent(false);
143cdf0e10cSrcweir     bool bViewEvent(false);
144cdf0e10cSrcweir     bool bStartEvent(false);
145cdf0e10cSrcweir     bool bPrintToEvent(false);
146cdf0e10cSrcweir     bool bPrinterName(false);
147cdf0e10cSrcweir     bool bForceOpenEvent(false);
148cdf0e10cSrcweir     bool bForceNewEvent(false);
149cdf0e10cSrcweir     bool bDisplaySpec(false);
150cdf0e10cSrcweir     bool bOpenDoc(false);
151cdf0e10cSrcweir 
152cdf0e10cSrcweir     m_eArgumentCount = NONE;
153cdf0e10cSrcweir 
154cdf0e10cSrcweir     for (;;)
155cdf0e10cSrcweir     {
156cdf0e10cSrcweir         ::rtl::OUString	aArg;
157cdf0e10cSrcweir         if ( !supplier.next( &aArg ) )
158cdf0e10cSrcweir         {
159cdf0e10cSrcweir             break;
160cdf0e10cSrcweir         }
161cdf0e10cSrcweir         // convert file URLs to internal form #112849#
162cdf0e10cSrcweir         if (aArg.indexOf(OUString::createFromAscii("file:"))==0 &&
163cdf0e10cSrcweir             xTranslator.is())
164cdf0e10cSrcweir         {
165cdf0e10cSrcweir             OUString tmp(xTranslator->translateToInternal(aArg));
166cdf0e10cSrcweir             if (tmp.getLength() > 0)
167cdf0e10cSrcweir                 aArg = tmp;
168cdf0e10cSrcweir         }
169cdf0e10cSrcweir 
170cdf0e10cSrcweir         String aArgStr = aArg;
171cdf0e10cSrcweir         if ( aArg.getLength() > 0 )
172cdf0e10cSrcweir         {
173cdf0e10cSrcweir             m_eArgumentCount = m_eArgumentCount == NONE ? ONE : MANY;
174cdf0e10cSrcweir             if ( !InterpretCommandLineParameter( aArg ))
175cdf0e10cSrcweir             {
176cdf0e10cSrcweir                 if ( aArgStr.GetChar(0) == '-' )
177cdf0e10cSrcweir                 {
178cdf0e10cSrcweir                     // handle this argument as an option
179cdf0e10cSrcweir                     if ( aArgStr.EqualsIgnoreCaseAscii( "-n" ))
180cdf0e10cSrcweir                     {
181cdf0e10cSrcweir                         // force new documents based on the following documents
182cdf0e10cSrcweir                         bForceNewEvent  = true;
183cdf0e10cSrcweir                         bOpenEvent      = false;
184cdf0e10cSrcweir                         bForceOpenEvent = false;
185cdf0e10cSrcweir                         bPrintToEvent   = false;
186cdf0e10cSrcweir                         bPrintEvent     = false;
187cdf0e10cSrcweir                         bViewEvent      = false;
188cdf0e10cSrcweir                         bStartEvent     = false;
189cdf0e10cSrcweir                         bDisplaySpec    = false;
190cdf0e10cSrcweir                     }
191cdf0e10cSrcweir                     else if ( aArgStr.EqualsIgnoreCaseAscii( "-o" ))
192cdf0e10cSrcweir                     {
193cdf0e10cSrcweir                         // force open documents regardless if they are templates or not
194cdf0e10cSrcweir                         bForceOpenEvent = true;
195cdf0e10cSrcweir                         bOpenEvent      = false;
196cdf0e10cSrcweir                         bForceNewEvent  = false;
197cdf0e10cSrcweir                         bPrintToEvent   = false;
198cdf0e10cSrcweir                         bPrintEvent     = false;
199cdf0e10cSrcweir                         bViewEvent      = false;
200cdf0e10cSrcweir                         bStartEvent     = false;
201cdf0e10cSrcweir                         bDisplaySpec    = false;
202cdf0e10cSrcweir                     }
203cdf0e10cSrcweir                     else if ( aArgStr.EqualsIgnoreCaseAscii( "-pt" ))
204cdf0e10cSrcweir                     {
205cdf0e10cSrcweir                         // Print to special printer
206cdf0e10cSrcweir                         bPrintToEvent   = true;
207cdf0e10cSrcweir                         bPrinterName    = true;
208cdf0e10cSrcweir                         bPrintEvent     = false;
209cdf0e10cSrcweir                         bOpenEvent      = false;
210cdf0e10cSrcweir                         bForceNewEvent  = false;
211cdf0e10cSrcweir                         bViewEvent      = false;
212cdf0e10cSrcweir                         bStartEvent     = false;
213cdf0e10cSrcweir                         bDisplaySpec    = false;
214cdf0e10cSrcweir                         bForceOpenEvent = false;
215cdf0e10cSrcweir                    }
216cdf0e10cSrcweir                    else if ( aArgStr.EqualsIgnoreCaseAscii( "-p" ))
217cdf0e10cSrcweir                    {
218cdf0e10cSrcweir                         // Print to default printer
219cdf0e10cSrcweir                         bPrintEvent     = true;
220cdf0e10cSrcweir                         bPrintToEvent   = false;
221cdf0e10cSrcweir                         bOpenEvent      = false;
222cdf0e10cSrcweir                         bForceNewEvent  = false;
223cdf0e10cSrcweir                         bForceOpenEvent = false;
224cdf0e10cSrcweir                         bViewEvent      = false;
225cdf0e10cSrcweir                         bStartEvent     = false;
226cdf0e10cSrcweir                         bDisplaySpec    = false;
227cdf0e10cSrcweir                    }
228cdf0e10cSrcweir                    else if ( aArgStr.EqualsIgnoreCaseAscii( "-view" ))
229cdf0e10cSrcweir                    {
230cdf0e10cSrcweir                         // open in viewmode
231cdf0e10cSrcweir                         bOpenEvent      = false;
232cdf0e10cSrcweir                         bPrintEvent     = false;
233cdf0e10cSrcweir                         bPrintToEvent   = false;
234cdf0e10cSrcweir                         bForceNewEvent  = false;
235cdf0e10cSrcweir                         bForceOpenEvent = false;
236cdf0e10cSrcweir                         bViewEvent      = true;
237cdf0e10cSrcweir                         bStartEvent     = false;
238cdf0e10cSrcweir                         bDisplaySpec    = false;
239cdf0e10cSrcweir  		    }
240cdf0e10cSrcweir                     else if ( aArgStr.EqualsIgnoreCaseAscii( "-show" ))
241cdf0e10cSrcweir                     {
242cdf0e10cSrcweir                         // open in viewmode
243cdf0e10cSrcweir                         bOpenEvent      = false;
244cdf0e10cSrcweir                         bViewEvent      = false;
245cdf0e10cSrcweir                         bStartEvent     = true;
246cdf0e10cSrcweir                         bPrintEvent     = false;
247cdf0e10cSrcweir                         bPrintToEvent   = false;
248cdf0e10cSrcweir                         bForceNewEvent  = false;
249cdf0e10cSrcweir                         bForceOpenEvent = false;
250cdf0e10cSrcweir                         bDisplaySpec    = false;
251cdf0e10cSrcweir                     }
252cdf0e10cSrcweir                     else if ( aArgStr.EqualsIgnoreCaseAscii( "-display" ))
253cdf0e10cSrcweir                     {
254cdf0e10cSrcweir                         // set display
255cdf0e10cSrcweir                         bOpenEvent      = false;
256cdf0e10cSrcweir                         bPrintEvent     = false;
257cdf0e10cSrcweir                         bForceOpenEvent = false;
258cdf0e10cSrcweir                         bPrintToEvent   = false;
259cdf0e10cSrcweir                         bForceNewEvent  = false;
260cdf0e10cSrcweir                         bViewEvent      = false;
261cdf0e10cSrcweir                         bStartEvent     = false;
262cdf0e10cSrcweir                         bDisplaySpec    = true;
263cdf0e10cSrcweir                     }
264cdf0e10cSrcweir                     else if ( aArgStr.EqualsIgnoreCaseAscii( "-language" ))
265cdf0e10cSrcweir                     {
266cdf0e10cSrcweir                         bOpenEvent      = false;
267cdf0e10cSrcweir                         bPrintEvent     = false;
268cdf0e10cSrcweir                         bForceOpenEvent = false;
269cdf0e10cSrcweir                         bPrintToEvent   = false;
270cdf0e10cSrcweir                         bForceNewEvent  = false;
271cdf0e10cSrcweir                         bViewEvent      = false;
272cdf0e10cSrcweir                         bStartEvent     = false;
273cdf0e10cSrcweir                         bDisplaySpec    = false;
274cdf0e10cSrcweir                     }
275cdf0e10cSrcweir 
276cdf0e10cSrcweir                     #ifdef MACOSX
277cdf0e10cSrcweir                     /* #i84053# ignore -psn on Mac
278cdf0e10cSrcweir                        Platform dependent #ifdef here is ugly, however this is currently
279cdf0e10cSrcweir                        the only platform dependent parameter. Should more appear
280cdf0e10cSrcweir                        we should find a better solution
281cdf0e10cSrcweir                     */
282cdf0e10cSrcweir                     else if ( aArgStr.CompareToAscii( "-psn", 4 ) == COMPARE_EQUAL )
283cdf0e10cSrcweir                     {
284cdf0e10cSrcweir                         // finder argument from MacOSX
285cdf0e10cSrcweir                         bOpenEvent      = false;
286cdf0e10cSrcweir                        	bPrintEvent     = false;
287cdf0e10cSrcweir                         bForceOpenEvent = false;
288cdf0e10cSrcweir                         bPrintToEvent   = false;
289cdf0e10cSrcweir                         bForceNewEvent  = false;
290cdf0e10cSrcweir                         bViewEvent      = false;
291cdf0e10cSrcweir                         bStartEvent     = false;
292cdf0e10cSrcweir                         bDisplaySpec    = false;
293cdf0e10cSrcweir                     }
294cdf0e10cSrcweir                     #endif
295cdf0e10cSrcweir                 }
296cdf0e10cSrcweir                 else
297cdf0e10cSrcweir                 {
298cdf0e10cSrcweir                     if ( bPrinterName && bPrintToEvent )
299cdf0e10cSrcweir                     {
300cdf0e10cSrcweir                         // first argument after "-pt" this must be the printer name
301cdf0e10cSrcweir                         AddStringListParam_Impl( CMD_STRINGPARAM_PRINTERNAME, aArgStr );
302cdf0e10cSrcweir                         bPrinterName = sal_False;
303cdf0e10cSrcweir                     }
304cdf0e10cSrcweir                     else
305cdf0e10cSrcweir                     {
306cdf0e10cSrcweir                         // handle this argument as a filename
307cdf0e10cSrcweir                         if ( bOpenEvent )
308cdf0e10cSrcweir                         {
309cdf0e10cSrcweir                             AddStringListParam_Impl( CMD_STRINGPARAM_OPENLIST, aArgStr );
310cdf0e10cSrcweir                             bOpenDoc = true;
311cdf0e10cSrcweir                         }
312cdf0e10cSrcweir                         else if ( bViewEvent )
313cdf0e10cSrcweir 	                {
314cdf0e10cSrcweir                             AddStringListParam_Impl( CMD_STRINGPARAM_VIEWLIST, aArgStr );
315cdf0e10cSrcweir                             bOpenDoc = true;
316cdf0e10cSrcweir                         }
317cdf0e10cSrcweir                         else if ( bStartEvent )
318cdf0e10cSrcweir                         {
319cdf0e10cSrcweir                             AddStringListParam_Impl( CMD_STRINGPARAM_STARTLIST, aArgStr );
320cdf0e10cSrcweir                             bOpenDoc = true;
321cdf0e10cSrcweir                         }
322cdf0e10cSrcweir                         else if ( bPrintEvent )
323cdf0e10cSrcweir                         {
324cdf0e10cSrcweir                             AddStringListParam_Impl( CMD_STRINGPARAM_PRINTLIST, aArgStr );
325cdf0e10cSrcweir                             bOpenDoc = true;
326cdf0e10cSrcweir                         }
327cdf0e10cSrcweir                         else if ( bPrintToEvent )
328cdf0e10cSrcweir                         {
329cdf0e10cSrcweir                             AddStringListParam_Impl( CMD_STRINGPARAM_PRINTTOLIST, aArgStr );
330cdf0e10cSrcweir                             bOpenDoc = true;
331cdf0e10cSrcweir                         }
332cdf0e10cSrcweir                         else if ( bForceNewEvent )
333cdf0e10cSrcweir                         {
334cdf0e10cSrcweir                             AddStringListParam_Impl( CMD_STRINGPARAM_FORCENEWLIST, aArgStr );
335cdf0e10cSrcweir                             bOpenDoc = true;
336cdf0e10cSrcweir                         }
337cdf0e10cSrcweir                         else if ( bForceOpenEvent )
338cdf0e10cSrcweir                         {
339cdf0e10cSrcweir                             AddStringListParam_Impl( CMD_STRINGPARAM_FORCEOPENLIST, aArgStr );
340cdf0e10cSrcweir                             bOpenDoc = true;
341cdf0e10cSrcweir                         }
342cdf0e10cSrcweir                         else if ( bDisplaySpec )
343cdf0e10cSrcweir                         {
344cdf0e10cSrcweir                             AddStringListParam_Impl( CMD_STRINGPARAM_DISPLAY, aArgStr );
345cdf0e10cSrcweir                             bDisplaySpec = false; // only one display, not a lsit
346cdf0e10cSrcweir                             bOpenEvent = true;    // set back to standard
347cdf0e10cSrcweir                         }
348cdf0e10cSrcweir                     }
349cdf0e10cSrcweir                 }
350cdf0e10cSrcweir             }
351cdf0e10cSrcweir         }
352cdf0e10cSrcweir     }
353cdf0e10cSrcweir 
354cdf0e10cSrcweir     if ( bOpenDoc )
355cdf0e10cSrcweir         m_bDocumentArgs = true;
356cdf0e10cSrcweir }
357cdf0e10cSrcweir 
AddStringListParam_Impl(StringParam eParam,const rtl::OUString & aParam)358cdf0e10cSrcweir void CommandLineArgs::AddStringListParam_Impl( StringParam eParam, const rtl::OUString& aParam )
359cdf0e10cSrcweir {
360cdf0e10cSrcweir 	OSL_ASSERT( eParam >= 0 && eParam < CMD_STRINGPARAM_COUNT );
361cdf0e10cSrcweir 	if ( m_aStrParams[eParam].getLength() )
362cdf0e10cSrcweir 		m_aStrParams[eParam] += ::rtl::OUString::valueOf( (sal_Unicode)APPEVENT_PARAM_DELIMITER );
363cdf0e10cSrcweir 	m_aStrParams[eParam] += aParam;
364cdf0e10cSrcweir 	m_aStrSetParams[eParam] = sal_True;
365cdf0e10cSrcweir }
366cdf0e10cSrcweir 
SetBoolParam_Impl(BoolParam eParam,sal_Bool bValue)367cdf0e10cSrcweir void CommandLineArgs::SetBoolParam_Impl( BoolParam eParam, sal_Bool bValue )
368cdf0e10cSrcweir {
369cdf0e10cSrcweir 	OSL_ASSERT( eParam >= 0 && eParam < CMD_BOOLPARAM_COUNT );
370cdf0e10cSrcweir 	m_aBoolParams[eParam] = bValue;
371cdf0e10cSrcweir }
372cdf0e10cSrcweir 
InterpretCommandLineParameter(const::rtl::OUString & aArg)373cdf0e10cSrcweir sal_Bool CommandLineArgs::InterpretCommandLineParameter( const ::rtl::OUString& aArg )
374cdf0e10cSrcweir {
375cdf0e10cSrcweir     String aArgStr( aArg );
376cdf0e10cSrcweir 
377cdf0e10cSrcweir     if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-minimized" )) == sal_True )
378cdf0e10cSrcweir     {
379cdf0e10cSrcweir         SetBoolParam_Impl( CMD_BOOLPARAM_MINIMIZED, sal_True );
380cdf0e10cSrcweir         return sal_True;
381cdf0e10cSrcweir     }
382cdf0e10cSrcweir     else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-invisible" )) == sal_True )
383cdf0e10cSrcweir     {
384cdf0e10cSrcweir         SetBoolParam_Impl( CMD_BOOLPARAM_INVISIBLE, sal_True );
385cdf0e10cSrcweir         return sal_True;
386cdf0e10cSrcweir     }
387cdf0e10cSrcweir     else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-norestore" )) == sal_True )
388cdf0e10cSrcweir     {
389cdf0e10cSrcweir         SetBoolParam_Impl( CMD_BOOLPARAM_NORESTORE, sal_True );
390cdf0e10cSrcweir         return sal_True;
391cdf0e10cSrcweir     }
392cdf0e10cSrcweir     else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-nodefault" )) == sal_True )
393cdf0e10cSrcweir     {
394cdf0e10cSrcweir         SetBoolParam_Impl( CMD_BOOLPARAM_NODEFAULT, sal_True );
395cdf0e10cSrcweir         return sal_True;
396cdf0e10cSrcweir     }
397cdf0e10cSrcweir     else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-bean" )) == sal_True )
398cdf0e10cSrcweir     {
399cdf0e10cSrcweir         SetBoolParam_Impl( CMD_BOOLPARAM_BEAN, sal_True );
400cdf0e10cSrcweir         return sal_True;
401cdf0e10cSrcweir     }
402cdf0e10cSrcweir     else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-plugin" )) == sal_True )
403cdf0e10cSrcweir     {
404cdf0e10cSrcweir         SetBoolParam_Impl( CMD_BOOLPARAM_PLUGIN, sal_True );
405cdf0e10cSrcweir         return sal_True;
406cdf0e10cSrcweir     }
407cdf0e10cSrcweir     else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-server" )) == sal_True )
408cdf0e10cSrcweir     {
409cdf0e10cSrcweir         SetBoolParam_Impl( CMD_BOOLPARAM_SERVER, sal_True );
410cdf0e10cSrcweir         return sal_True;
411cdf0e10cSrcweir     }
412cdf0e10cSrcweir     else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-headless" )) == sal_True )
413cdf0e10cSrcweir     {
414cdf0e10cSrcweir         // Headless means also invisibile, so set this parameter to true!
415cdf0e10cSrcweir         SetBoolParam_Impl( CMD_BOOLPARAM_HEADLESS, sal_True );
416cdf0e10cSrcweir         SetBoolParam_Impl( CMD_BOOLPARAM_INVISIBLE, sal_True );
417cdf0e10cSrcweir         return sal_True;
418cdf0e10cSrcweir     }
419*85c309d6SJürgen Schmidt     else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-conversionmode" )) == sal_True )
420*85c309d6SJürgen Schmidt     {
421*85c309d6SJürgen Schmidt         // ConversionMode means also headless and invisibile, so set these parameters to true!
422*85c309d6SJürgen Schmidt         SetBoolParam_Impl( CMD_BOOLPARAM_HEADLESS, sal_True );
423*85c309d6SJürgen Schmidt         SetBoolParam_Impl( CMD_BOOLPARAM_INVISIBLE, sal_True );
424*85c309d6SJürgen Schmidt         SetBoolParam_Impl( CMD_BOOLPARAM_CONVERSIONMODE, sal_True );
425*85c309d6SJürgen Schmidt         return sal_True;
426*85c309d6SJürgen Schmidt     }
427cdf0e10cSrcweir     else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-quickstart" )) == sal_True )
428cdf0e10cSrcweir     {
4292ad018beSPedro Giffuni #if defined(ENABLE_QUICKSTART_APPLET)
430cdf0e10cSrcweir         SetBoolParam_Impl( CMD_BOOLPARAM_QUICKSTART, sal_True );
431cdf0e10cSrcweir #endif
432cdf0e10cSrcweir         SetBoolParam_Impl( CMD_BOOLPARAM_NOQUICKSTART, sal_False );
433cdf0e10cSrcweir         return sal_True;
434cdf0e10cSrcweir     }
435cdf0e10cSrcweir     else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-quickstart=no" )))
436cdf0e10cSrcweir     {
437cdf0e10cSrcweir         SetBoolParam_Impl( CMD_BOOLPARAM_NOQUICKSTART, sal_True );
438cdf0e10cSrcweir         SetBoolParam_Impl( CMD_BOOLPARAM_QUICKSTART, sal_False );
439cdf0e10cSrcweir         return sal_True;
440cdf0e10cSrcweir     }
441cdf0e10cSrcweir     else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-terminate_after_init" )) == sal_True )
442cdf0e10cSrcweir     {
443cdf0e10cSrcweir         SetBoolParam_Impl( CMD_BOOLPARAM_TERMINATEAFTERINIT, sal_True );
444cdf0e10cSrcweir         return sal_True;
445cdf0e10cSrcweir     }
446cdf0e10cSrcweir     else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-nofirststartwizard" )) == sal_True )
447cdf0e10cSrcweir     {
448cdf0e10cSrcweir         SetBoolParam_Impl( CMD_BOOLPARAM_NOFIRSTSTARTWIZARD, sal_True );
449cdf0e10cSrcweir         return sal_True;
450cdf0e10cSrcweir     }
451cdf0e10cSrcweir     else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-nologo" )) == sal_True )
452cdf0e10cSrcweir     {
453cdf0e10cSrcweir         SetBoolParam_Impl( CMD_BOOLPARAM_NOLOGO, sal_True );
454cdf0e10cSrcweir         return sal_True;
455cdf0e10cSrcweir     }
456cdf0e10cSrcweir     else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-nolockcheck" )) == sal_True )
457cdf0e10cSrcweir     {
458cdf0e10cSrcweir         SetBoolParam_Impl( CMD_BOOLPARAM_NOLOCKCHECK, sal_True );
459cdf0e10cSrcweir         // Workaround for automated testing
460cdf0e10cSrcweir         ::svt::DocumentLockFile::AllowInteraction( sal_False );
461cdf0e10cSrcweir 
462cdf0e10cSrcweir         return sal_True;
463cdf0e10cSrcweir     }
464cdf0e10cSrcweir     else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-help" ))
465cdf0e10cSrcweir 	      || aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-h" ))
466cdf0e10cSrcweir 	      || aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-?" )))
467cdf0e10cSrcweir     {
468cdf0e10cSrcweir         SetBoolParam_Impl( CMD_BOOLPARAM_HELP, sal_True );
469cdf0e10cSrcweir         return sal_True;
470cdf0e10cSrcweir     }
471cdf0e10cSrcweir     else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-helpwriter" )) == sal_True )
472cdf0e10cSrcweir     {
473cdf0e10cSrcweir         SetBoolParam_Impl( CMD_BOOLPARAM_HELPWRITER, sal_True );
474cdf0e10cSrcweir         return sal_True;
475cdf0e10cSrcweir     }
476cdf0e10cSrcweir     else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-helpcalc" )) == sal_True )
477cdf0e10cSrcweir     {
478cdf0e10cSrcweir         SetBoolParam_Impl( CMD_BOOLPARAM_HELPCALC, sal_True );
479cdf0e10cSrcweir         return sal_True;
480cdf0e10cSrcweir     }
481cdf0e10cSrcweir     else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-helpdraw" )) == sal_True )
482cdf0e10cSrcweir     {
483cdf0e10cSrcweir         SetBoolParam_Impl( CMD_BOOLPARAM_HELPDRAW, sal_True );
484cdf0e10cSrcweir         return sal_True;
485cdf0e10cSrcweir     }
486cdf0e10cSrcweir     else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-helpimpress" )) == sal_True )
487cdf0e10cSrcweir     {
488cdf0e10cSrcweir         SetBoolParam_Impl( CMD_BOOLPARAM_HELPIMPRESS, sal_True );
489cdf0e10cSrcweir         return sal_True;
490cdf0e10cSrcweir     }
491cdf0e10cSrcweir     else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-helpbase" )) == sal_True )
492cdf0e10cSrcweir     {
493cdf0e10cSrcweir         SetBoolParam_Impl( CMD_BOOLPARAM_HELPBASE, sal_True );
494cdf0e10cSrcweir         return sal_True;
495cdf0e10cSrcweir     }
496cdf0e10cSrcweir     else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-helpbasic" )) == sal_True )
497cdf0e10cSrcweir     {
498cdf0e10cSrcweir         SetBoolParam_Impl( CMD_BOOLPARAM_HELPBASIC, sal_True );
499cdf0e10cSrcweir         return sal_True;
500cdf0e10cSrcweir     }
501cdf0e10cSrcweir     else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-helpmath" )) == sal_True )
502cdf0e10cSrcweir     {
503cdf0e10cSrcweir         SetBoolParam_Impl( CMD_BOOLPARAM_HELPMATH, sal_True );
504cdf0e10cSrcweir         return sal_True;
505cdf0e10cSrcweir     }
506cdf0e10cSrcweir #ifdef MACOSX
507cdf0e10cSrcweir   /* #i84053# ignore -psn on Mac
508cdf0e10cSrcweir      Platform dependent #ifdef here is ugly, however this is currently
509cdf0e10cSrcweir      the only platform dependent parameter. Should more appear
510cdf0e10cSrcweir      we should find a better solution
511cdf0e10cSrcweir   */
512cdf0e10cSrcweir     else if ( aArg.compareToAscii( "-psn", 4 ) == 0 )
513cdf0e10cSrcweir     {
514cdf0e10cSrcweir         SetBoolParam_Impl( CMD_BOOLPARAM_PSN, sal_True );
515cdf0e10cSrcweir         return sal_True;
516cdf0e10cSrcweir     }
517cdf0e10cSrcweir #endif
518cdf0e10cSrcweir     else if ( aArgStr.Copy(0, 8).EqualsIgnoreCaseAscii( "-accept=" ))
519cdf0e10cSrcweir     {
520cdf0e10cSrcweir         AddStringListParam_Impl( CMD_STRINGPARAM_ACCEPT, aArgStr.Copy( 8 ) );
521cdf0e10cSrcweir         return sal_True;
522cdf0e10cSrcweir     }
523cdf0e10cSrcweir     else if ( aArgStr.Copy(0, 10).EqualsIgnoreCaseAscii( "-unaccept=" ))
524cdf0e10cSrcweir     {
525cdf0e10cSrcweir         AddStringListParam_Impl( CMD_STRINGPARAM_UNACCEPT, aArgStr.Copy( 10 ) );
526cdf0e10cSrcweir         return sal_True;
527cdf0e10cSrcweir     }
528cdf0e10cSrcweir     else if ( aArgStr.CompareIgnoreCaseToAscii( "-portal," ,
529cdf0e10cSrcweir               RTL_CONSTASCII_LENGTH( "-portal," )) == COMPARE_EQUAL )
530cdf0e10cSrcweir     {
531cdf0e10cSrcweir         AddStringListParam_Impl( CMD_STRINGPARAM_PORTAL, aArgStr.Copy( RTL_CONSTASCII_LENGTH( "-portal," )) );
532cdf0e10cSrcweir         return sal_True;
533cdf0e10cSrcweir     }
534cdf0e10cSrcweir     else if ( aArgStr.Copy( 0, 7 ).EqualsIgnoreCaseAscii( "-userid" ))
535cdf0e10cSrcweir     {
536cdf0e10cSrcweir         if ( aArgStr.Len() > 8 )
537cdf0e10cSrcweir 	{
538cdf0e10cSrcweir 	    rtl::OUString aUserDir = aArgStr;
539cdf0e10cSrcweir 	    AddStringListParam_Impl( CMD_STRINGPARAM_USERDIR,
540cdf0e10cSrcweir 				     ::rtl::Uri::decode( aUserDir.copy( 8 ), rtl_UriDecodeWithCharset, RTL_TEXTENCODING_UTF8 ) );
541cdf0e10cSrcweir         }
542cdf0e10cSrcweir         return sal_True;
543cdf0e10cSrcweir     }
544cdf0e10cSrcweir     else if ( aArgStr.Copy( 0, 15).EqualsIgnoreCaseAscii( "-clientdisplay=" ))
545cdf0e10cSrcweir     {
546cdf0e10cSrcweir         AddStringListParam_Impl( CMD_STRINGPARAM_CLIENTDISPLAY, aArgStr.Copy( 15 ) );
547cdf0e10cSrcweir         return sal_True;
548cdf0e10cSrcweir     }
549cdf0e10cSrcweir     else if ( aArgStr.Copy(0, 9).EqualsIgnoreCaseAscii( "-version=" ))
550cdf0e10cSrcweir     {
551cdf0e10cSrcweir         AddStringListParam_Impl( CMD_STRINGPARAM_VERSION, aArgStr.Copy( 9 ) );
552cdf0e10cSrcweir         return sal_True;
553cdf0e10cSrcweir     }
554cdf0e10cSrcweir     else if ( aArgStr.Copy(0, 10).EqualsIgnoreCaseAscii( "-language=" ))
555cdf0e10cSrcweir     {
556cdf0e10cSrcweir         AddStringListParam_Impl( CMD_STRINGPARAM_LANGUAGE, aArgStr.Copy( 10 ) );
557cdf0e10cSrcweir         return sal_True;
558cdf0e10cSrcweir     }
559cdf0e10cSrcweir     else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-writer" )) == sal_True )
560cdf0e10cSrcweir     {
561cdf0e10cSrcweir         sal_Bool bAlreadySet = CheckGroupMembers( CMD_GRPID_MODULE, CMD_BOOLPARAM_WRITER );
562cdf0e10cSrcweir         if ( !bAlreadySet )
563cdf0e10cSrcweir 	    SetBoolParam_Impl( CMD_BOOLPARAM_WRITER, sal_True );
564cdf0e10cSrcweir         m_bDocumentArgs = true;
565cdf0e10cSrcweir         return sal_True;
566cdf0e10cSrcweir     }
567cdf0e10cSrcweir     else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-calc" )) == sal_True )
568cdf0e10cSrcweir     {
569cdf0e10cSrcweir         sal_Bool bAlreadySet = CheckGroupMembers( CMD_GRPID_MODULE, CMD_BOOLPARAM_CALC );
570cdf0e10cSrcweir         if ( !bAlreadySet )
571cdf0e10cSrcweir 	    SetBoolParam_Impl( CMD_BOOLPARAM_CALC, sal_True );
572cdf0e10cSrcweir         m_bDocumentArgs = true;
573cdf0e10cSrcweir         return sal_True;
574cdf0e10cSrcweir     }
575cdf0e10cSrcweir     else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-draw" )) == sal_True )
576cdf0e10cSrcweir     {
577cdf0e10cSrcweir         sal_Bool bAlreadySet = CheckGroupMembers( CMD_GRPID_MODULE, CMD_BOOLPARAM_DRAW );
578cdf0e10cSrcweir         if ( !bAlreadySet )
579cdf0e10cSrcweir 	    SetBoolParam_Impl( CMD_BOOLPARAM_DRAW, sal_True );
580cdf0e10cSrcweir         m_bDocumentArgs = true;
581cdf0e10cSrcweir         return sal_True;
582cdf0e10cSrcweir     }
583cdf0e10cSrcweir     else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-impress" )) == sal_True )
584cdf0e10cSrcweir     {
585cdf0e10cSrcweir         sal_Bool bAlreadySet = CheckGroupMembers( CMD_GRPID_MODULE, CMD_BOOLPARAM_IMPRESS );
586cdf0e10cSrcweir         if ( !bAlreadySet )
587cdf0e10cSrcweir 	    SetBoolParam_Impl( CMD_BOOLPARAM_IMPRESS, sal_True );
588cdf0e10cSrcweir         m_bDocumentArgs = true;
589cdf0e10cSrcweir         return sal_True;
590cdf0e10cSrcweir     }
591cdf0e10cSrcweir     else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-base" )) == sal_True )
592cdf0e10cSrcweir     {
593cdf0e10cSrcweir         sal_Bool bAlreadySet = CheckGroupMembers( CMD_GRPID_MODULE, CMD_BOOLPARAM_BASE );
594cdf0e10cSrcweir         if ( !bAlreadySet )
595cdf0e10cSrcweir 	    SetBoolParam_Impl( CMD_BOOLPARAM_BASE, sal_True );
596cdf0e10cSrcweir         m_bDocumentArgs = true;
597cdf0e10cSrcweir         return sal_True;
598cdf0e10cSrcweir     }
599cdf0e10cSrcweir     else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-global" )) == sal_True )
600cdf0e10cSrcweir     {
601cdf0e10cSrcweir         sal_Bool bAlreadySet = CheckGroupMembers( CMD_GRPID_MODULE, CMD_BOOLPARAM_GLOBAL );
602cdf0e10cSrcweir         if ( !bAlreadySet )
603cdf0e10cSrcweir 	    SetBoolParam_Impl( CMD_BOOLPARAM_GLOBAL, sal_True );
604cdf0e10cSrcweir         m_bDocumentArgs = true;
605cdf0e10cSrcweir         return sal_True;
606cdf0e10cSrcweir     }
607cdf0e10cSrcweir     else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-math" )) == sal_True )
608cdf0e10cSrcweir     {
609cdf0e10cSrcweir         sal_Bool bAlreadySet = CheckGroupMembers( CMD_GRPID_MODULE, CMD_BOOLPARAM_MATH );
610cdf0e10cSrcweir         if ( !bAlreadySet )
611cdf0e10cSrcweir 	    SetBoolParam_Impl( CMD_BOOLPARAM_MATH, sal_True );
612cdf0e10cSrcweir         m_bDocumentArgs = true;
613cdf0e10cSrcweir         return sal_True;
614cdf0e10cSrcweir     }
615cdf0e10cSrcweir     else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-web" )) == sal_True )
616cdf0e10cSrcweir     {
617cdf0e10cSrcweir         sal_Bool bAlreadySet = CheckGroupMembers( CMD_GRPID_MODULE, CMD_BOOLPARAM_WEB );
618cdf0e10cSrcweir         if ( !bAlreadySet )
619cdf0e10cSrcweir 	    SetBoolParam_Impl( CMD_BOOLPARAM_WEB, sal_True );
620cdf0e10cSrcweir         m_bDocumentArgs = true;
621cdf0e10cSrcweir         return sal_True;
622cdf0e10cSrcweir     }
623cdf0e10cSrcweir 
624cdf0e10cSrcweir     return sal_False;
625cdf0e10cSrcweir }
626cdf0e10cSrcweir 
CheckGroupMembers(GroupParamId nGroupId,BoolParam nExcludeMember) const627cdf0e10cSrcweir sal_Bool CommandLineArgs::CheckGroupMembers( GroupParamId nGroupId, BoolParam nExcludeMember ) const
628cdf0e10cSrcweir {
629cdf0e10cSrcweir     // Check if at least one bool param out of a group is set. An exclude member can be provided.
630cdf0e10cSrcweir     for ( int i = 0; i < m_pGroupDefinitions[nGroupId].nCount; i++ )
631cdf0e10cSrcweir     {
632cdf0e10cSrcweir         BoolParam nParam = m_pGroupDefinitions[nGroupId].pGroupMembers[i];
633cdf0e10cSrcweir         if ( nParam != nExcludeMember && m_aBoolParams[nParam] )
634cdf0e10cSrcweir             return sal_True;
635cdf0e10cSrcweir     }
636cdf0e10cSrcweir 
637cdf0e10cSrcweir     return sal_False;
638cdf0e10cSrcweir }
639cdf0e10cSrcweir 
ResetParamValues()640cdf0e10cSrcweir void CommandLineArgs::ResetParamValues()
641cdf0e10cSrcweir {
642cdf0e10cSrcweir     int i;
643cdf0e10cSrcweir     for ( i = 0; i < CMD_BOOLPARAM_COUNT; i++ )
644cdf0e10cSrcweir         m_aBoolParams[i] = sal_False;
645cdf0e10cSrcweir     for ( i = 0; i < CMD_STRINGPARAM_COUNT; i++ )
646cdf0e10cSrcweir         m_aStrSetParams[i] = sal_False;
647cdf0e10cSrcweir     m_eArgumentCount = NONE;
648cdf0e10cSrcweir     m_bDocumentArgs  = false;
649cdf0e10cSrcweir }
650cdf0e10cSrcweir 
SetBoolParam(BoolParam eParam,sal_Bool bNewValue)651cdf0e10cSrcweir void CommandLineArgs::SetBoolParam( BoolParam eParam, sal_Bool bNewValue )
652cdf0e10cSrcweir {
653cdf0e10cSrcweir 	osl::MutexGuard  aMutexGuard( m_aMutex );
654cdf0e10cSrcweir 
655cdf0e10cSrcweir 	OSL_ASSERT( ( eParam >= 0 && eParam < CMD_BOOLPARAM_COUNT ) );
656cdf0e10cSrcweir 	m_aBoolParams[eParam] = bNewValue;
657cdf0e10cSrcweir }
658cdf0e10cSrcweir 
IsMinimized() const659cdf0e10cSrcweir sal_Bool CommandLineArgs::IsMinimized() const
660cdf0e10cSrcweir {
661cdf0e10cSrcweir 	osl::MutexGuard  aMutexGuard( m_aMutex );
662cdf0e10cSrcweir 	return m_aBoolParams[ CMD_BOOLPARAM_MINIMIZED ];
663cdf0e10cSrcweir }
664cdf0e10cSrcweir 
IsInvisible() const665cdf0e10cSrcweir sal_Bool CommandLineArgs::IsInvisible() const
666cdf0e10cSrcweir {
667cdf0e10cSrcweir 	osl::MutexGuard  aMutexGuard( m_aMutex );
668cdf0e10cSrcweir 	return m_aBoolParams[ CMD_BOOLPARAM_INVISIBLE ];
669cdf0e10cSrcweir }
670cdf0e10cSrcweir 
IsNoRestore() const671cdf0e10cSrcweir sal_Bool CommandLineArgs::IsNoRestore() const
672cdf0e10cSrcweir {
673cdf0e10cSrcweir 	osl::MutexGuard  aMutexGuard( m_aMutex );
674cdf0e10cSrcweir 	return m_aBoolParams[ CMD_BOOLPARAM_NORESTORE ];
675cdf0e10cSrcweir }
676cdf0e10cSrcweir 
IsNoDefault() const677cdf0e10cSrcweir sal_Bool CommandLineArgs::IsNoDefault() const
678cdf0e10cSrcweir {
679cdf0e10cSrcweir 	osl::MutexGuard  aMutexGuard( m_aMutex );
680cdf0e10cSrcweir 	return m_aBoolParams[ CMD_BOOLPARAM_NODEFAULT ];
681cdf0e10cSrcweir }
682cdf0e10cSrcweir 
IsBean() const683cdf0e10cSrcweir sal_Bool CommandLineArgs::IsBean() const
684cdf0e10cSrcweir {
685cdf0e10cSrcweir 	osl::MutexGuard  aMutexGuard( m_aMutex );
686cdf0e10cSrcweir 	return m_aBoolParams[ CMD_BOOLPARAM_BEAN ];
687cdf0e10cSrcweir }
688cdf0e10cSrcweir 
IsServer() const689cdf0e10cSrcweir sal_Bool CommandLineArgs::IsServer() const
690cdf0e10cSrcweir {
691cdf0e10cSrcweir 	osl::MutexGuard  aMutexGuard( m_aMutex );
692cdf0e10cSrcweir 	return m_aBoolParams[ CMD_BOOLPARAM_SERVER ];
693cdf0e10cSrcweir }
694cdf0e10cSrcweir 
IsHeadless() const695cdf0e10cSrcweir sal_Bool CommandLineArgs::IsHeadless() const
696cdf0e10cSrcweir {
697cdf0e10cSrcweir 	osl::MutexGuard  aMutexGuard( m_aMutex );
698cdf0e10cSrcweir 	return m_aBoolParams[ CMD_BOOLPARAM_HEADLESS ];
699cdf0e10cSrcweir }
700cdf0e10cSrcweir 
IsConversionMode() const701*85c309d6SJürgen Schmidt sal_Bool CommandLineArgs::IsConversionMode() const
702*85c309d6SJürgen Schmidt {
703*85c309d6SJürgen Schmidt 	osl::MutexGuard  aMutexGuard( m_aMutex );
704*85c309d6SJürgen Schmidt 	return m_aBoolParams[ CMD_BOOLPARAM_CONVERSIONMODE ];
705*85c309d6SJürgen Schmidt }
706*85c309d6SJürgen Schmidt 
IsQuickstart() const707cdf0e10cSrcweir sal_Bool CommandLineArgs::IsQuickstart() const
708cdf0e10cSrcweir {
709cdf0e10cSrcweir 	osl::MutexGuard  aMutexGuard( m_aMutex );
710cdf0e10cSrcweir 	return m_aBoolParams[ CMD_BOOLPARAM_QUICKSTART ];
711cdf0e10cSrcweir }
712cdf0e10cSrcweir 
IsNoQuickstart() const713cdf0e10cSrcweir sal_Bool CommandLineArgs::IsNoQuickstart() const
714cdf0e10cSrcweir {
715cdf0e10cSrcweir     osl::MutexGuard aMutexGuard( m_aMutex );
716cdf0e10cSrcweir     return m_aBoolParams[ CMD_BOOLPARAM_NOQUICKSTART ];
717cdf0e10cSrcweir }
718cdf0e10cSrcweir 
IsTerminateAfterInit() const719cdf0e10cSrcweir sal_Bool CommandLineArgs::IsTerminateAfterInit() const
720cdf0e10cSrcweir {
721cdf0e10cSrcweir 	osl::MutexGuard  aMutexGuard( m_aMutex );
722cdf0e10cSrcweir 	return m_aBoolParams[ CMD_BOOLPARAM_TERMINATEAFTERINIT ];
723cdf0e10cSrcweir }
724cdf0e10cSrcweir 
IsNoFirstStartWizard() const725cdf0e10cSrcweir sal_Bool CommandLineArgs::IsNoFirstStartWizard() const
726cdf0e10cSrcweir {
727cdf0e10cSrcweir 	osl::MutexGuard  aMutexGuard( m_aMutex );
728cdf0e10cSrcweir 	return m_aBoolParams[ CMD_BOOLPARAM_NOFIRSTSTARTWIZARD ];
729cdf0e10cSrcweir }
730cdf0e10cSrcweir 
IsNoLogo() const731cdf0e10cSrcweir sal_Bool CommandLineArgs::IsNoLogo() const
732cdf0e10cSrcweir {
733cdf0e10cSrcweir 	osl::MutexGuard  aMutexGuard( m_aMutex );
734cdf0e10cSrcweir 	return m_aBoolParams[ CMD_BOOLPARAM_NOLOGO ];
735cdf0e10cSrcweir }
736cdf0e10cSrcweir 
IsNoLockcheck() const737cdf0e10cSrcweir sal_Bool CommandLineArgs::IsNoLockcheck() const
738cdf0e10cSrcweir {
739cdf0e10cSrcweir 	osl::MutexGuard  aMutexGuard( m_aMutex );
740cdf0e10cSrcweir 	return m_aBoolParams[ CMD_BOOLPARAM_NOLOCKCHECK ];
741cdf0e10cSrcweir }
742cdf0e10cSrcweir 
IsHelp() const743cdf0e10cSrcweir sal_Bool CommandLineArgs::IsHelp() const
744cdf0e10cSrcweir {
745cdf0e10cSrcweir 	osl::MutexGuard  aMutexGuard( m_aMutex );
746cdf0e10cSrcweir 	return m_aBoolParams[ CMD_BOOLPARAM_HELP ];
747cdf0e10cSrcweir }
IsHelpWriter() const748cdf0e10cSrcweir sal_Bool CommandLineArgs::IsHelpWriter() const
749cdf0e10cSrcweir {
750cdf0e10cSrcweir 	osl::MutexGuard  aMutexGuard( m_aMutex );
751cdf0e10cSrcweir 	return m_aBoolParams[ CMD_BOOLPARAM_HELPWRITER ];
752cdf0e10cSrcweir }
753cdf0e10cSrcweir 
IsHelpCalc() const754cdf0e10cSrcweir sal_Bool CommandLineArgs::IsHelpCalc() const
755cdf0e10cSrcweir {
756cdf0e10cSrcweir 	osl::MutexGuard  aMutexGuard( m_aMutex );
757cdf0e10cSrcweir 	return m_aBoolParams[ CMD_BOOLPARAM_HELPCALC ];
758cdf0e10cSrcweir }
759cdf0e10cSrcweir 
IsHelpDraw() const760cdf0e10cSrcweir sal_Bool CommandLineArgs::IsHelpDraw() const
761cdf0e10cSrcweir {
762cdf0e10cSrcweir 	osl::MutexGuard  aMutexGuard( m_aMutex );
763cdf0e10cSrcweir 	return m_aBoolParams[ CMD_BOOLPARAM_HELPDRAW ];
764cdf0e10cSrcweir }
765cdf0e10cSrcweir 
IsHelpImpress() const766cdf0e10cSrcweir sal_Bool CommandLineArgs::IsHelpImpress() const
767cdf0e10cSrcweir {
768cdf0e10cSrcweir 	osl::MutexGuard  aMutexGuard( m_aMutex );
769cdf0e10cSrcweir 	return m_aBoolParams[ CMD_BOOLPARAM_HELPIMPRESS ];
770cdf0e10cSrcweir }
771cdf0e10cSrcweir 
IsHelpBase() const772cdf0e10cSrcweir sal_Bool CommandLineArgs::IsHelpBase() const
773cdf0e10cSrcweir {
774cdf0e10cSrcweir 	osl::MutexGuard  aMutexGuard( m_aMutex );
775cdf0e10cSrcweir 	return m_aBoolParams[ CMD_BOOLPARAM_HELPBASE ];
776cdf0e10cSrcweir }
IsHelpMath() const777cdf0e10cSrcweir sal_Bool CommandLineArgs::IsHelpMath() const
778cdf0e10cSrcweir {
779cdf0e10cSrcweir 	osl::MutexGuard  aMutexGuard( m_aMutex );
780cdf0e10cSrcweir 	return m_aBoolParams[ CMD_BOOLPARAM_HELPMATH ];
781cdf0e10cSrcweir }
IsHelpBasic() const782cdf0e10cSrcweir sal_Bool CommandLineArgs::IsHelpBasic() const
783cdf0e10cSrcweir {
784cdf0e10cSrcweir 	osl::MutexGuard  aMutexGuard( m_aMutex );
785cdf0e10cSrcweir 	return m_aBoolParams[ CMD_BOOLPARAM_HELPBASIC ];
786cdf0e10cSrcweir }
787cdf0e10cSrcweir 
IsWriter() const788cdf0e10cSrcweir sal_Bool CommandLineArgs::IsWriter() const
789cdf0e10cSrcweir {
790cdf0e10cSrcweir 	osl::MutexGuard  aMutexGuard( m_aMutex );
791cdf0e10cSrcweir 	return m_aBoolParams[ CMD_BOOLPARAM_WRITER ];
792cdf0e10cSrcweir }
793cdf0e10cSrcweir 
IsCalc() const794cdf0e10cSrcweir sal_Bool CommandLineArgs::IsCalc() const
795cdf0e10cSrcweir {
796cdf0e10cSrcweir 	osl::MutexGuard  aMutexGuard( m_aMutex );
797cdf0e10cSrcweir 	return m_aBoolParams[ CMD_BOOLPARAM_CALC ];
798cdf0e10cSrcweir }
799cdf0e10cSrcweir 
IsDraw() const800cdf0e10cSrcweir sal_Bool CommandLineArgs::IsDraw() const
801cdf0e10cSrcweir {
802cdf0e10cSrcweir 	osl::MutexGuard  aMutexGuard( m_aMutex );
803cdf0e10cSrcweir 	return m_aBoolParams[ CMD_BOOLPARAM_DRAW ];
804cdf0e10cSrcweir }
805cdf0e10cSrcweir 
IsImpress() const806cdf0e10cSrcweir sal_Bool CommandLineArgs::IsImpress() const
807cdf0e10cSrcweir {
808cdf0e10cSrcweir 	osl::MutexGuard  aMutexGuard( m_aMutex );
809cdf0e10cSrcweir 	return m_aBoolParams[ CMD_BOOLPARAM_IMPRESS ];
810cdf0e10cSrcweir }
811cdf0e10cSrcweir 
IsBase() const812cdf0e10cSrcweir sal_Bool CommandLineArgs::IsBase() const
813cdf0e10cSrcweir {
814cdf0e10cSrcweir 	osl::MutexGuard  aMutexGuard( m_aMutex );
815cdf0e10cSrcweir 	return m_aBoolParams[ CMD_BOOLPARAM_BASE ];
816cdf0e10cSrcweir }
817cdf0e10cSrcweir 
IsGlobal() const818cdf0e10cSrcweir sal_Bool CommandLineArgs::IsGlobal() const
819cdf0e10cSrcweir {
820cdf0e10cSrcweir 	osl::MutexGuard  aMutexGuard( m_aMutex );
821cdf0e10cSrcweir 	return m_aBoolParams[ CMD_BOOLPARAM_GLOBAL ];
822cdf0e10cSrcweir }
823cdf0e10cSrcweir 
IsMath() const824cdf0e10cSrcweir sal_Bool CommandLineArgs::IsMath() const
825cdf0e10cSrcweir {
826cdf0e10cSrcweir 	osl::MutexGuard  aMutexGuard( m_aMutex );
827cdf0e10cSrcweir 	return m_aBoolParams[ CMD_BOOLPARAM_MATH ];
828cdf0e10cSrcweir }
829cdf0e10cSrcweir 
IsWeb() const830cdf0e10cSrcweir sal_Bool CommandLineArgs::IsWeb() const
831cdf0e10cSrcweir {
832cdf0e10cSrcweir 	osl::MutexGuard  aMutexGuard( m_aMutex );
833cdf0e10cSrcweir 	return m_aBoolParams[ CMD_BOOLPARAM_WEB ];
834cdf0e10cSrcweir }
835cdf0e10cSrcweir 
HasModuleParam() const836cdf0e10cSrcweir sal_Bool CommandLineArgs::HasModuleParam() const
837cdf0e10cSrcweir {
838cdf0e10cSrcweir 	osl::MutexGuard  aMutexGuard( m_aMutex );
839cdf0e10cSrcweir 	return CheckGroupMembers( CMD_GRPID_MODULE, CMD_BOOLPARAM_COUNT );
840cdf0e10cSrcweir }
841cdf0e10cSrcweir 
GetPortalConnectString(::rtl::OUString & rPara) const842cdf0e10cSrcweir sal_Bool CommandLineArgs::GetPortalConnectString( ::rtl::OUString& rPara ) const
843cdf0e10cSrcweir {
844cdf0e10cSrcweir 	osl::MutexGuard  aMutexGuard( m_aMutex );
845cdf0e10cSrcweir 	rPara = m_aStrParams[ CMD_STRINGPARAM_PORTAL ];
846cdf0e10cSrcweir 	return m_aStrSetParams[ CMD_STRINGPARAM_PORTAL ];
847cdf0e10cSrcweir }
848cdf0e10cSrcweir 
GetAcceptString(::rtl::OUString & rPara) const849cdf0e10cSrcweir sal_Bool CommandLineArgs::GetAcceptString( ::rtl::OUString& rPara ) const
850cdf0e10cSrcweir {
851cdf0e10cSrcweir 	osl::MutexGuard  aMutexGuard( m_aMutex );
852cdf0e10cSrcweir 	rPara = m_aStrParams[ CMD_STRINGPARAM_ACCEPT ];
853cdf0e10cSrcweir 	return m_aStrSetParams[ CMD_STRINGPARAM_ACCEPT ];
854cdf0e10cSrcweir }
855cdf0e10cSrcweir 
GetUnAcceptString(::rtl::OUString & rPara) const856cdf0e10cSrcweir sal_Bool CommandLineArgs::GetUnAcceptString( ::rtl::OUString& rPara ) const
857cdf0e10cSrcweir {
858cdf0e10cSrcweir 	osl::MutexGuard  aMutexGuard( m_aMutex );
859cdf0e10cSrcweir 	rPara = m_aStrParams[ CMD_STRINGPARAM_UNACCEPT ];
860cdf0e10cSrcweir 	return m_aStrSetParams[ CMD_STRINGPARAM_UNACCEPT ];
861cdf0e10cSrcweir }
862cdf0e10cSrcweir 
GetOpenList(::rtl::OUString & rPara) const863cdf0e10cSrcweir sal_Bool CommandLineArgs::GetOpenList( ::rtl::OUString& rPara) const
864cdf0e10cSrcweir {
865cdf0e10cSrcweir 	osl::MutexGuard  aMutexGuard( m_aMutex );
866cdf0e10cSrcweir 	rPara = m_aStrParams[ CMD_STRINGPARAM_OPENLIST ];
867cdf0e10cSrcweir 	return m_aStrSetParams[ CMD_STRINGPARAM_OPENLIST ];
868cdf0e10cSrcweir }
869cdf0e10cSrcweir 
GetViewList(::rtl::OUString & rPara) const870cdf0e10cSrcweir sal_Bool CommandLineArgs::GetViewList( ::rtl::OUString& rPara) const
871cdf0e10cSrcweir {
872cdf0e10cSrcweir 	osl::MutexGuard  aMutexGuard( m_aMutex );
873cdf0e10cSrcweir 	rPara = m_aStrParams[ CMD_STRINGPARAM_VIEWLIST ];
874cdf0e10cSrcweir 	return m_aStrSetParams[ CMD_STRINGPARAM_VIEWLIST ];
875cdf0e10cSrcweir }
876cdf0e10cSrcweir 
GetStartList(::rtl::OUString & rPara) const877cdf0e10cSrcweir sal_Bool CommandLineArgs::GetStartList( ::rtl::OUString& rPara) const
878cdf0e10cSrcweir {
879cdf0e10cSrcweir       osl::MutexGuard  aMutexGuard( m_aMutex );
880cdf0e10cSrcweir       rPara = m_aStrParams[ CMD_STRINGPARAM_STARTLIST ];
881cdf0e10cSrcweir       return m_aStrSetParams[ CMD_STRINGPARAM_STARTLIST ];
882cdf0e10cSrcweir }
883cdf0e10cSrcweir 
GetForceOpenList(::rtl::OUString & rPara) const884cdf0e10cSrcweir sal_Bool CommandLineArgs::GetForceOpenList( ::rtl::OUString& rPara) const
885cdf0e10cSrcweir {
886cdf0e10cSrcweir 	osl::MutexGuard  aMutexGuard( m_aMutex );
887cdf0e10cSrcweir 	rPara = m_aStrParams[ CMD_STRINGPARAM_FORCEOPENLIST ];
888cdf0e10cSrcweir 	return m_aStrSetParams[ CMD_STRINGPARAM_FORCEOPENLIST ];
889cdf0e10cSrcweir }
890cdf0e10cSrcweir 
GetForceNewList(::rtl::OUString & rPara) const891cdf0e10cSrcweir sal_Bool CommandLineArgs::GetForceNewList( ::rtl::OUString& rPara) const
892cdf0e10cSrcweir {
893cdf0e10cSrcweir 	osl::MutexGuard  aMutexGuard( m_aMutex );
894cdf0e10cSrcweir 	rPara = m_aStrParams[ CMD_STRINGPARAM_FORCENEWLIST ];
895cdf0e10cSrcweir 	return m_aStrSetParams[ CMD_STRINGPARAM_FORCENEWLIST ];
896cdf0e10cSrcweir }
897cdf0e10cSrcweir 
GetPrintList(::rtl::OUString & rPara) const898cdf0e10cSrcweir sal_Bool CommandLineArgs::GetPrintList( ::rtl::OUString& rPara) const
899cdf0e10cSrcweir {
900cdf0e10cSrcweir 	osl::MutexGuard  aMutexGuard( m_aMutex );
901cdf0e10cSrcweir 	rPara = m_aStrParams[ CMD_STRINGPARAM_PRINTLIST ];
902cdf0e10cSrcweir 	return m_aStrSetParams[ CMD_STRINGPARAM_PRINTLIST ];
903cdf0e10cSrcweir }
904cdf0e10cSrcweir 
GetPrintToList(::rtl::OUString & rPara) const905cdf0e10cSrcweir sal_Bool CommandLineArgs::GetPrintToList( ::rtl::OUString& rPara ) const
906cdf0e10cSrcweir {
907cdf0e10cSrcweir 	osl::MutexGuard  aMutexGuard( m_aMutex );
908cdf0e10cSrcweir 	rPara = m_aStrParams[ CMD_STRINGPARAM_PRINTTOLIST ];
909cdf0e10cSrcweir 	return m_aStrSetParams[ CMD_STRINGPARAM_PRINTTOLIST ];
910cdf0e10cSrcweir }
911cdf0e10cSrcweir 
GetPrinterName(::rtl::OUString & rPara) const912cdf0e10cSrcweir sal_Bool CommandLineArgs::GetPrinterName( ::rtl::OUString& rPara ) const
913cdf0e10cSrcweir {
914cdf0e10cSrcweir 	osl::MutexGuard  aMutexGuard( m_aMutex );
915cdf0e10cSrcweir 	rPara = m_aStrParams[ CMD_STRINGPARAM_PRINTERNAME ];
916cdf0e10cSrcweir 	return m_aStrSetParams[ CMD_STRINGPARAM_PRINTERNAME ];
917cdf0e10cSrcweir }
918cdf0e10cSrcweir 
GetLanguage(::rtl::OUString & rPara) const919cdf0e10cSrcweir sal_Bool CommandLineArgs::GetLanguage( ::rtl::OUString& rPara ) const
920cdf0e10cSrcweir {
921cdf0e10cSrcweir 	osl::MutexGuard  aMutexGuard( m_aMutex );
922cdf0e10cSrcweir 	rPara = m_aStrParams[ CMD_STRINGPARAM_LANGUAGE ];
923cdf0e10cSrcweir 	return m_aStrSetParams[ CMD_STRINGPARAM_LANGUAGE ];
924cdf0e10cSrcweir }
925cdf0e10cSrcweir 
IsEmpty() const926cdf0e10cSrcweir sal_Bool CommandLineArgs::IsEmpty() const
927cdf0e10cSrcweir {
928cdf0e10cSrcweir     osl::MutexGuard  aMutexGuard( m_aMutex );
929cdf0e10cSrcweir     return m_eArgumentCount == NONE;
930cdf0e10cSrcweir }
931cdf0e10cSrcweir 
IsEmptyOrAcceptOnly() const932cdf0e10cSrcweir sal_Bool CommandLineArgs::IsEmptyOrAcceptOnly() const
933cdf0e10cSrcweir {
934cdf0e10cSrcweir     osl::MutexGuard  aMutexGuard( m_aMutex );
935cdf0e10cSrcweir 
936cdf0e10cSrcweir     return m_eArgumentCount == NONE ||
937cdf0e10cSrcweir            ( ( m_eArgumentCount == ONE ) && ( m_aStrParams[ CMD_STRINGPARAM_ACCEPT ].getLength() )) ||
938cdf0e10cSrcweir            ( ( m_eArgumentCount == ONE ) && m_aBoolParams[ CMD_BOOLPARAM_PSN ] );
939cdf0e10cSrcweir }
940cdf0e10cSrcweir 
WantsToLoadDocument() const941cdf0e10cSrcweir sal_Bool CommandLineArgs::WantsToLoadDocument() const
942cdf0e10cSrcweir {
943cdf0e10cSrcweir     osl::MutexGuard  aMutexGuard( m_aMutex );
944cdf0e10cSrcweir     return m_bDocumentArgs;
945cdf0e10cSrcweir }
946cdf0e10cSrcweir 
947cdf0e10cSrcweir } // namespace desktop
948