1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 // MARKER(update_precomp.py): autogen include statement, do not remove
25 #include "precompiled_framework.hxx"
26 
27 //_________________________________________________________________________________________________________________
28 //	my own includes
29 //_________________________________________________________________________________________________________________
30 #include <classes/servicemanager.hxx>
31 #include <classes/filtercache.hxx>
32 #include <macros/generic.hxx>
33 #include <macros/debug.hxx>
34 #include <services.h>
35 #include <filterflags.h>
36 #include <queries.h>
37 
38 //_________________________________________________________________________________________________________________
39 //	interface includes
40 //_________________________________________________________________________________________________________________
41 #include <com/sun/star/lang/XMultiServiceFactory.hpp>
42 #include <com/sun/star/container/XNameContainer.hpp>
43 #include <com/sun/star/beans/PropertyValue.hpp>
44 
45 //_________________________________________________________________________________________________________________
46 //	other includes
47 //_________________________________________________________________________________________________________________
48 #include <comphelper/processfactory.hxx>
49 #include <vos/process.hxx>
50 #include <rtl/ustring.hxx>
51 #include <rtl/ustrbuf.hxx>
52 
53 #ifndef __SGI_STL_HASH_MAP
54 #include <hash_map>
55 #endif
56 
57 #include <vcl/event.hxx>
58 #include <vcl/svapp.hxx>
59 #include <vcl/wrkwin.hxx>
60 #include <vcl/msgbox.hxx>
61 #include <stdio.h>
62 
63 //_________________________________________________________________________________________________________________
64 //	const
65 //_________________________________________________________________________________________________________________
66 
67 #define RDBFILE                                     DECLARE_ASCII("typecfg.rdb" )
68 #define ARGUMENT_DIRNAME                            DECLARE_ASCII("-dir="       )           // argument for output directory
69 #define ARGUMENT_VERSION                            DECLARE_ASCII("-ver="       )           // argument for file version to read    [1|2|3]
70 #define ARGUMENTLENGTH                              5                                       // same length for all arguemnts make it easier to detect it :-)
71 #define ARGUMENTFOUND                               0                                       // OUString::compareTo returns 0 if searched string match given one
72 
73 #define MENU_HTML                                   "menu.html"
74 #define BLANK_HTML                                  "blank.html"
75 
76 #define FRAMESET_START_HTML                         "index.html"
77 #define FRAMESET_TYPES_HTML                         "fs_types.html"
78 #define FRAMESET_FILTERS_HTML                       "fs_filters.html"
79 #define FRAMESET_MODULFILTERS_HTML                  "fs_modulfilters.html"
80 #define FRAMESET_DETECTORS_HTML                     "fs_detectors.html"
81 #define FRAMESET_LOADERS_HTML                       "fs_loaders.html"
82 #define FRAMESET_INVALIDFILTERS_HTML                "fs_invalidfilters.html"
83 #define FRAMESET_INVALIDDETECTORS_HTML              "fs_invaliddetectors.html"
84 #define FRAMESET_INVALIDLOADERS_HTML                "fs_invalidloaders.html"
85 #define FRAMESET_DOUBLEFILTERUINAMES_HTML           "fs_doublefilteruinames.html"
86 
87 #define ALLTYPES_HTML                               "alltypes.html"
88 #define ALLFILTERS_HTML                             "allfilters.html"
89 #define ALLDETECTORS_HTML                           "alldetectors.html"
90 #define ALLLOADERS_HTML                             "allloaders.html"
91 
92 #define TYPEPROPERTIES_HTML                         "typeproperties.html"
93 #define FILTERPROPERTIES_HTML                       "filterproperties.html"
94 #define DETECTORPROPERTIES_HTML                     "detectorproperties.html"
95 #define LOADERPROPERTIES_HTML                       "loaderproperties.html"
96 
97 #define INVALIDFILTERS_HTML                         "invalidfilters.html"
98 #define INVALIDDETECTORS_HTML                       "invaliddetectors.html"
99 #define INVALIDLOADERS_HTML                         "invalidloaders.html"
100 
101 #define FILTERFLAGS_HTML                            "filterflags.html"
102 #define MODULFILTERS_HTML                           "modulfilters.html"
103 #define DOUBLEFILTERUINAMES_HTML                    "doublefilteruinames.html"
104 
105 #define TARGET_MENU                                 "menu"
106 #define TARGET_VIEW                                 "view"
107 #define TARGET_LIST                                 "list"
108 #define TARGET_PROPERTIES                           "properties"
109 
110 //_________________________________________________________________________________________________________________
111 //	namespace
112 //_________________________________________________________________________________________________________________
113 
114 using namespace ::std						;
115 using namespace ::vos						;
116 using namespace ::rtl						;
117 using namespace ::framework					;
118 using namespace ::comphelper				;
119 using namespace ::com::sun::star::uno		;
120 using namespace ::com::sun::star::lang		;
121 using namespace ::com::sun::star::container	;
122 using namespace ::com::sun::star::beans		;
123 
124 //_________________________________________________________________________________________________________________
125 //	defines
126 //_________________________________________________________________________________________________________________
127 
128 //_________________________________________________________________________________________________________________
129 //	declarations
130 //_________________________________________________________________________________________________________________
131 
132 /*-***************************************************************************************************************/
133 struct AppMember
134 {
135         Reference< XMultiServiceFactory >   xServiceManager     ;
136         FilterCache*                        pCache              ;
137         ::rtl::OUString                     sDirectory          ;
138         sal_Int32                           nVersion            ;
139 };
140 
141 /*-***************************************************************************************************************/
142 class CFGView : public Application
143 {
144 	//*************************************************************************************************************
145 	public:
146 		void Main();
147 
148 	//*************************************************************************************************************
149 	private:
150         void impl_parseCommandLine                  ( AppMember& rMember );
151         void impl_generateHTMLView                  ();
152 
153 	//*************************************************************************************************************
154 	private:
155         void impl_printCopyright                    ();
156         void impl_printSyntax                       ();
157         void impl_generateTypeListHTML              ();
158         void impl_generateFilterListHTML            ();
159         void impl_generateFilterModulListHTML       ();
160         void impl_generateDetectorListHTML          ();
161         void impl_generateLoaderListHTML            ();
162         void impl_generateInvalidFiltersHTML        ();
163         void impl_generateInvalidDetectorsHTML      ();
164         void impl_generateInvalidLoadersHTML        ();
165         void impl_generateFilterFlagsHTML           ();
166         void impl_generateDefaultFiltersHTML        ();
167         void impl_generateDoubleFilterUINamesHTML   ();
168         void impl_writeFile                         ( const ::rtl::OString& sFile, const ::rtl::OString& sContent );
169 
170 	//*************************************************************************************************************
171 	private:
172         AppMember m_aData ;
173 
174 };  //  class CFGView
175 
176 //_________________________________________________________________________________________________________________
177 //	global variables
178 //_________________________________________________________________________________________________________________
179 
180 CFGView gApplication;
181 
182 //*****************************************************************************************************************
Main()183 void CFGView::Main()
184 {
185     // Init global servicemanager and set it.
186     // It's neccessary for other services ... e.g. configuration.
187     ServiceManager aManager;
188     ::comphelper::setProcessServiceFactory( aManager.getGlobalUNOServiceManager() );
189 
190     // Get optional commands from command line.
191     impl_parseCommandLine( m_aData );
192 
193     // Read configuration and fill cache ... use given file version (see parameter "-ver=" too)
194     m_aData.pCache = new FilterCache( m_aData.nVersion );
195 
196     // Generate view as html
197     impl_generateHTMLView();
198 
199     // Free all used memory
200     delete m_aData.pCache;
201     m_aData.pCache = NULL;
202 }
203 
204 /*-************************************************************************************************************//**
205     @short      print some info messages to stderr
206     @descr      We must show an copyright or help for using this file.
207                 This two methods do that.
208 
209     @seealso    -
210 
211     @param      -
212     @return     -
213 
214     @onerror    -
215 *//*-*************************************************************************************************************/
impl_printCopyright()216 void CFGView::impl_printCopyright()
217 {
218     fprintf( stderr, "\n(c) Copyright by Sun microsystems, 2001\n" );
219 }
220 
221 //*****************************************************************************************************************
impl_printSyntax()222 void CFGView::impl_printSyntax()
223 {
224     fprintf( stderr, "\nusing: xml2xcd -fi=<outputfile> -vi=<version input> -vo=<version output> [-wr=<true|false>]\n\n"    );
225     fprintf( stderr, "\tneccessary parameters:\n"                                                                           );
226     fprintf( stderr, "\t\t-fi=<outputfile>\tname of output file in system notation\n"                                       );
227     fprintf( stderr, "\t\t-vi=<version input>\tformat version of input xml file\n"                                          );
228     fprintf( stderr, "\t\t-vo=<version output>\tformat version of generated xcd file\n\n"                                   );
229     fprintf( stderr, "\toptional parameters:\n"                                                                             );
230     fprintf( stderr, "\t\t-wr=<true|false>\tconfig items should be writeable ... [true|false]\n"                            );
231 }
232 
233 /*-************************************************************************************************************//**
234     @short      analyze command line arguments
235     @descr      Created binary accept different command line arguments. These parameters
236                 regulate creation of this html view. Follow arguments are supported:
237                     "-dir=<directory for output files>"
238                     "-ver=<version of input file>[1|2|3]"
239 
240     @seealso    -
241 
242     @param      "rMember", reference to struct of global application member to fill arguments in it
243     @return     right filled member struct or unchanged struct if an error occure!
244 
245     @onerror    We do nothing - or warn programmer!
246 *//*-*************************************************************************************************************/
impl_parseCommandLine(AppMember & rMember)247 void CFGView::impl_parseCommandLine( AppMember& rMember )
248 {
249     ::vos::OStartupInfo aInfo                                   ;
250     ::rtl::OUString     sArgument                               ;
251     sal_Int32           nArgument   = 0                         ;
252     sal_Int32           nCount      = aInfo.getCommandArgCount();
253     sal_Int32           nMinCount   = 0                         ;
254 
255 	while( nArgument<nCount )
256 	{
257 		aInfo.getCommandArg( nArgument, sArgument );
258 
259 		//_____________________________________________________________________________________________________
260         // look for "-dir="
261         if( sArgument.compareTo( ARGUMENT_DIRNAME, ARGUMENTLENGTH ) == ARGUMENTFOUND )
262 		{
263             rMember.sDirectory = sArgument.copy( ARGUMENTLENGTH, sArgument.getLength()-ARGUMENTLENGTH );
264             ++nMinCount;
265 		}
266         else
267 		//_____________________________________________________________________________________________________
268         // look for "-ver="
269         if( sArgument.compareTo( ARGUMENT_VERSION, ARGUMENTLENGTH ) == ARGUMENTFOUND )
270 		{
271             ::rtl::OUString sVersion = sArgument.copy( ARGUMENTLENGTH, sArgument.getLength()-ARGUMENTLENGTH );
272             rMember.nVersion = sVersion.toInt32();
273             ++nMinCount;
274 		}
275 
276 		++nArgument;
277 	}
278 
279     // Show help if user don't call us right!
280     if( nMinCount != 2 )
281     {
282         impl_printSyntax();
283         exit(-1);
284     }
285 }
286 
287 //*****************************************************************************************************************
impl_generateHTMLView()288 void CFGView::impl_generateHTMLView()
289 {
290 	//-------------------------------------------------------------------------------------------------------------
291 	// generate start frameset
292 	OUStringBuffer sStartFramesetHTML( 10000 );
293 
294 	sStartFramesetHTML.appendAscii( "<html>\n\t<head>\n\t\t<title>\n\t\t\tTypeDetection CFG\n\t\t</title>\n\t</head>\n"		);	// open html
295 	sStartFramesetHTML.appendAscii( "\t\t<frameset rows=\"25%,75%\">\n"														);	// open frameset
296 	sStartFramesetHTML.appendAscii( "\t\t\t<frame name=\""																	);	// generate frame "menu"
297 	sStartFramesetHTML.appendAscii( TARGET_MENU																				);
298 	sStartFramesetHTML.appendAscii( "\" src=\""																				);
299 	sStartFramesetHTML.appendAscii( MENU_HTML																				);
300 	sStartFramesetHTML.appendAscii( "\" title=\"List\">\n"																	);
301 	sStartFramesetHTML.appendAscii( "\t\t\t<frame name=\""																	);	// generate frame "view"
302 	sStartFramesetHTML.appendAscii( TARGET_VIEW																				);
303 	sStartFramesetHTML.appendAscii( "\" src=\""																				);
304 	sStartFramesetHTML.appendAscii( BLANK_HTML																				);
305 	sStartFramesetHTML.appendAscii( "\" title=\"Properties\">\n"															);
306 	sStartFramesetHTML.appendAscii( "\t\t</frameset>\n"																		);	// close frameset
307 	sStartFramesetHTML.appendAscii( "</html>\n"																				);	// close html
308 
309     impl_writeFile( FRAMESET_START_HTML, U2B(sStartFramesetHTML.makeStringAndClear()) );
310 
311 	//-------------------------------------------------------------------------------------------------------------
312 	// generate blank html
313 	OUStringBuffer sBlankHTML( 10000 );
314 
315 	sBlankHTML.appendAscii( "<html>\n\t<head>\n\t\t<title>\n\t\t\tBlank\n\t\t</title>\n\t</head>\n\t<body>\n\t</body>Please select ...\n</html>\n"	);	// open html
316 
317     impl_writeFile( BLANK_HTML, U2B(sBlankHTML.makeStringAndClear()) );
318 
319 	//-------------------------------------------------------------------------------------------------------------
320 	// generate menu
321 	OUStringBuffer sMenuHTML( 10000 );
322 
323 	sMenuHTML.appendAscii( "<html>\n\t<head>\n\t\t<title>\n\t\t\tMenu\n\t\t</title>\n\t</head>\n\t<body>\n"				);	// open html
324 	sMenuHTML.appendAscii( "\t\t<ul>\n"																					);	// open list
325 
326 	sMenuHTML.appendAscii( "\t\t<li><a href=\""																			);	// list entry for "All Types"
327 	sMenuHTML.appendAscii( FRAMESET_TYPES_HTML																			);
328 	sMenuHTML.appendAscii( "\" target=\""																				);
329 	sMenuHTML.appendAscii( TARGET_VIEW																					);
330 	sMenuHTML.appendAscii( "\">All Types</a></li>\n"																	);
331 
332 	sMenuHTML.appendAscii( "\t\t<li><a href=\""																			);	// list entry for "All Filters"
333 	sMenuHTML.appendAscii( FRAMESET_FILTERS_HTML																		);
334 	sMenuHTML.appendAscii( "\" target=\""																				);
335 	sMenuHTML.appendAscii( TARGET_VIEW																					);
336     sMenuHTML.appendAscii( "\">All Filters</a></li>\n"                                                                  );
337 
338     sMenuHTML.appendAscii( "\t\t<li><a href=\""                                                                         );  // list entry for "All Filters sorted by modules"
339     sMenuHTML.appendAscii( FRAMESET_MODULFILTERS_HTML                                                                   );
340 	sMenuHTML.appendAscii( "\" target=\""																				);
341 	sMenuHTML.appendAscii( TARGET_VIEW																					);
342     sMenuHTML.appendAscii( "\">Filters by Moduls</a></li>\n"                                                            );
343 
344 	sMenuHTML.appendAscii( "\t\t<li><a href=\""																			);	// list entry for "All Detectors"
345 	sMenuHTML.appendAscii( FRAMESET_DETECTORS_HTML																		);
346 	sMenuHTML.appendAscii( "\" target=\""																				);
347 	sMenuHTML.appendAscii( TARGET_VIEW																					);
348 	sMenuHTML.appendAscii( "\">All Detector Services</a></li>\n"														);
349 
350 	sMenuHTML.appendAscii( "\t\t<li><a href=\""																			);	// list entry for "All Loaders"
351 	sMenuHTML.appendAscii( FRAMESET_LOADERS_HTML																		);
352 	sMenuHTML.appendAscii( "\" target=\""																				);
353 	sMenuHTML.appendAscii( TARGET_VIEW																					);
354 	sMenuHTML.appendAscii( "\">All Loader Services</a></li>\n"															);
355 
356 	sMenuHTML.appendAscii( "\t\t<li><a href=\""																			);	// list entry for "Invalid Filter"
357 	sMenuHTML.appendAscii( FRAMESET_INVALIDFILTERS_HTML																	);
358 	sMenuHTML.appendAscii( "\" target=\""																				);
359 	sMenuHTML.appendAscii( TARGET_VIEW																					);
360 	sMenuHTML.appendAscii( "\">Invalid Filter</a></li>\n"																);
361 
362 	sMenuHTML.appendAscii( "\t\t<li><a href=\""																			);	// list entry for "Invalid Detect Services"
363 	sMenuHTML.appendAscii( FRAMESET_INVALIDDETECTORS_HTML																);
364 	sMenuHTML.appendAscii( "\" target=\""																				);
365 	sMenuHTML.appendAscii( TARGET_VIEW																					);
366 	sMenuHTML.appendAscii( "\">Invalid Detect Services</a></li>\n"														);
367 
368     sMenuHTML.appendAscii( "\t\t<li><a href=\""                                                                         );  // list entry for "Double Filter UINames"
369     sMenuHTML.appendAscii( FRAMESET_DOUBLEFILTERUINAMES_HTML                                                            );
370 	sMenuHTML.appendAscii( "\" target=\""																				);
371 	sMenuHTML.appendAscii( TARGET_VIEW																					);
372     sMenuHTML.appendAscii( "\">Double Filter UINames</a></li>\n"                                                        );
373 
374 	sMenuHTML.appendAscii( "\t\t<li><a href=\""																			);	// list entry for "Show Filter Flags"
375 	sMenuHTML.appendAscii( FILTERFLAGS_HTML																				);
376 	sMenuHTML.appendAscii( "\" target=\""																				);
377 	sMenuHTML.appendAscii( TARGET_VIEW																					);
378 	sMenuHTML.appendAscii( "\">Show Filter Flags</a></li>\n"															);
379 
380 	sMenuHTML.appendAscii( "\t\t</ul>\n"																				);	// close list
381 	sMenuHTML.appendAscii( "\t</body>\n</html>\n"																		);	// close html
382 
383     impl_writeFile( MENU_HTML, U2B(sMenuHTML.makeStringAndClear()) );
384 
385 	impl_generateTypeListHTML			();
386 	impl_generateFilterListHTML			();
387     impl_generateFilterModulListHTML    ();
388 	impl_generateDetectorListHTML		();
389 	impl_generateLoaderListHTML			();
390 	impl_generateInvalidFiltersHTML		();
391 	impl_generateInvalidDetectorsHTML	();
392 	impl_generateInvalidLoadersHTML		();
393 	impl_generateFilterFlagsHTML		();
394     impl_generateDoubleFilterUINamesHTML();
395 }
396 
397 //*****************************************************************************************************************
impl_generateTypeListHTML()398 void CFGView::impl_generateTypeListHTML()
399 {
400 	//-------------------------------------------------------------------------------------------------------------
401 	// generate frameset for types
402 	OUStringBuffer sTypesFramesetHTML( 10000 );
403 
404 	sTypesFramesetHTML.appendAscii( "<html>\n\t<head>\n\t\t<title>\n\t\t\tFrameset: Types\n\t\t</title>\n\t</head>\n"		);	// open html
405 	sTypesFramesetHTML.appendAscii( "\t\t<frameset cols=\"40%,60%\">\n"														);	// open frameset for cols
406 	sTypesFramesetHTML.appendAscii( "\t\t\t<frame name=\""																	);	// generate frame "list"
407 	sTypesFramesetHTML.appendAscii( TARGET_LIST																				);
408 	sTypesFramesetHTML.appendAscii( "\" src=\""																				);
409 	sTypesFramesetHTML.appendAscii( ALLTYPES_HTML																			);
410 	sTypesFramesetHTML.appendAscii( "\" title=\"List\">\n"																	);
411 	sTypesFramesetHTML.appendAscii( "\t\t\t<frame name=\""																	);	// generate frame "properties"
412 	sTypesFramesetHTML.appendAscii( TARGET_PROPERTIES																		);
413 	sTypesFramesetHTML.appendAscii( "\" src=\""																				);
414 	sTypesFramesetHTML.appendAscii( TYPEPROPERTIES_HTML																		);
415 	sTypesFramesetHTML.appendAscii( "\" title=\"Properties\">\n"															);
416 	sTypesFramesetHTML.appendAscii( "\t\t</frameset>\n"																		);	// close frameset cols
417 	sTypesFramesetHTML.appendAscii( "</html>\n"																				);	// close html
418 
419     impl_writeFile( FRAMESET_TYPES_HTML, U2B(sTypesFramesetHTML.makeStringAndClear()) );
420 
421 	//-------------------------------------------------------------------------------------------------------------
422 	// generate type list (names and links only!)
423 	// use same loop to generate type property list!
424 	OUStringBuffer sAllTypesHTML( 10000 );
425 	OUStringBuffer sTypePropHTML( 10000 );
426 
427 	sAllTypesHTML.appendAscii( "<html>\n\t<head>\n\t\t<title>\n\t\t\tAll Types\n\t\t</title>\n\t</head>\n\t<body>\n"										);	// open html
428 	sAllTypesHTML.appendAscii( "\t\t<table border=0><tr><td bgcolor=#ff8040><strong>Nr.</strong></td><td bgcolor=#ff8040><strong>Type</strong></td></tr>\n"	);	// open table
429 
430 	sTypePropHTML.appendAscii( "<html>\n\t<head>\n\t\t<title>\n\t\t\tTypeProperties\n\t\t</title>\n\t</head>\n\t<body>\n"									);	// open html
431 
432     css::uno::Sequence< ::rtl::OUString > lNames = m_aData.pCache->getAllTypeNames();
433     sal_Int32                             nCount = lNames.getLength()               ;
434     for( sal_Int32 nItem=0; nItem<nCount; ++nItem )
435     {
436         ::rtl::OUString sName = lNames[nItem]                   ;
437         FileType        aItem = m_aData.pCache->getType( sName );
438 
439 		// write entry in type list table
440 		sAllTypesHTML.appendAscii	( "\t\t\t<tr>\n"																											);	// open row
441 		sAllTypesHTML.appendAscii	( "\t\t\t\t<td bgcolor=#f5f9d5 valign=\"top\" align=\"top\">"																);	// open column "nr"
442         sAllTypesHTML.append        ( OUString::valueOf( nItem )                                                                                                );  // write nr
443 		sAllTypesHTML.appendAscii	( "</td>\n"																													);	// close column "nr"
444 		sAllTypesHTML.appendAscii	( "\t\t\t\t<td>"																											);	// open column "name"
445 		sAllTypesHTML.appendAscii	( "<a href=\""																												);	// open href="typeproperties.html#<typename>"
446 		sAllTypesHTML.appendAscii	( TYPEPROPERTIES_HTML																										);
447 		sAllTypesHTML.appendAscii	( "#"																														);
448         sAllTypesHTML.append        ( aItem.sName                                                                                                               );
449 		sAllTypesHTML.appendAscii	( "\" target=\""																											);
450 		sAllTypesHTML.appendAscii	( TARGET_PROPERTIES																											);
451 		sAllTypesHTML.appendAscii	( "\">"																														);
452         sAllTypesHTML.append        ( aItem.sName                                                                                                               );  // write name
453         sAllTypesHTML.appendAscii   ( "</a>"                                                                                                                    );  // close href
454         sAllTypesHTML.appendAscii   ( "</td>\n"                                                                                                                 );  // close column "name"
455         sAllTypesHTML.appendAscii   ( "\t\t\t</tr>\n"                                                                                                           );  // close row
456 
457         // write entry in type property table
458         sTypePropHTML.appendAscii   ( "\t\t<a name=\""                                                                                                              );  // set target="#<typename>" to follow table
459         sTypePropHTML.append        ( aItem.sName                                                                                                                   );
460         sTypePropHTML.appendAscii   ( "\"></a>"                                                                                                                     );
461         sTypePropHTML.appendAscii   ( "\t\t<table border=0>\n"                                                                                                      );  // open table
462         sTypePropHTML.appendAscii   ( "\t\t\t<tr><td bgcolor=#f5f9d5 valign=\"top\" align=\"top\">Nr.</td><td bgcolor=#f5f9d5 valign=\"top\" align=\"top\">&nbsp;"  );    // generate row "Nr <value>"
463         sTypePropHTML.append        ( OUString::valueOf( nItem )                                                                                                    );
464         sTypePropHTML.appendAscii   ( "</td></tr>\n"                                                                                                                );
465         sTypePropHTML.appendAscii   ( "\t\t\t<tr><td bgcolor=#f5f9d5 valign=\"top\" align=\"top\">Name</td><td valign=\"top\" align=\"top\">&nbsp;"                 );  // generate row "Name <value>"
466         sTypePropHTML.append        ( aItem.sName                                                                                                                   );
467         sTypePropHTML.appendAscii   ( "</td></tr>\n"                                                                                                                );
468         sTypePropHTML.appendAscii   ( "\t\t\t<tr><td bgcolor=#f5f9d5 valign=\"top\" align=\"top\">UIName</td><td valign=\"top\" align=\"top\">"                     );  // generate row "UIName <value>"
469         for(    ConstStringHashIterator pUIName=aItem.lUINames.begin()  ;
470                 pUIName!=aItem.lUINames.end()                           ;
471                 ++pUIName                                                       )
472 		{
473             sTypePropHTML.appendAscii   ( "&nbsp;["       );
474             sTypePropHTML.append        ( pUIName->first  );
475             sTypePropHTML.appendAscii   ( "] \""          );
476             sTypePropHTML.append        ( pUIName->second );
477             sTypePropHTML.appendAscii   ( "\"<br>"        );
478 		}
479         sTypePropHTML.appendAscii   ( "</td></tr>\n"                                                                                                            );
480 		sTypePropHTML.appendAscii	( "\t\t\t<tr><td bgcolor=#f5f9d5 valign=\"top\" align=\"top\">MediaType</td><td valign=\"top\" align=\"top\">&nbsp;"		);	// generate row "MediaType <value>"
481         sTypePropHTML.append        ( aItem.sMediaType                                                                                                          );
482 		sTypePropHTML.appendAscii	( "</td></tr>\n"																											);
483 		sTypePropHTML.appendAscii	( "\t\t\t<tr><td bgcolor=#f5f9d5 valign=\"top\" align=\"top\">ClipboardFormat</td><td valign=\"top\" align=\"top\">&nbsp;"	);	// generate row "ClipboardFormat <value>"
484         sTypePropHTML.append        ( aItem.sClipboardFormat                                                                                                    );
485 		sTypePropHTML.appendAscii	( "</td></tr>\n"																											);
486 		sTypePropHTML.appendAscii	( "\t\t\t<tr><td bgcolor=#f5f9d5 valign=\"top\" align=\"top\">URLPattern</td><td valign=\"top\" align=\"top\">"				);	// generate row "URLPattern <value>"
487         for(    ConstStringListIterator pPattern=aItem.lURLPattern.begin()  ;
488                 pPattern!=aItem.lURLPattern.end()                           ;
489                 ++pPattern                                                  )
490 		{
491 			sTypePropHTML.appendAscii	( "&nbsp;\"");
492 			sTypePropHTML.append		( *pPattern	);
493 			sTypePropHTML.appendAscii	( "\"<br>"	);
494 		}
495 		sTypePropHTML.appendAscii	( "</td></tr>\n"																											);
496 		sTypePropHTML.appendAscii	( "\t\t\t<tr><td bgcolor=#f5f9d5 valign=\"top\" align=\"top\">Extensions</td><td valign=\"top\" align=\"top\">"				);	// generate row "Extensions <value>"
497         for(    ConstStringListIterator pExtension=aItem.lExtensions.begin()    ;
498                 pExtension!=aItem.lExtensions.end()                             ;
499                 ++pExtension                                                    )
500 		{
501 			sTypePropHTML.appendAscii	( "&nbsp;\""	);
502 			sTypePropHTML.append		( *pExtension	);
503 			sTypePropHTML.appendAscii	( "\"<br>"		);
504 		}
505 		sTypePropHTML.appendAscii	( "</td></tr>\n"																											);
506 		sTypePropHTML.appendAscii	( "\t\t\t<tr><td bgcolor=#f5f9d5 valign=\"top\" align=\"top\">DocumentIconID</td><td valign=\"top\" align=\"top\">&nbsp;"	);	// generate row "DocumentIconID <value>"
507         sTypePropHTML.append        ( OUString::valueOf( aItem.nDocumentIconID )                                                                                );
508 		sTypePropHTML.appendAscii	( "</td></tr>\n"																											);
509 		sTypePropHTML.appendAscii	( "\t\t</table>\n"																											);	// close table
510 		sTypePropHTML.appendAscii	( "\t\t<p>\n"																												);	// add space between this and following table
511 	}
512 
513 	sAllTypesHTML.appendAscii( "</table>\n"			);	// close table
514 	sAllTypesHTML.appendAscii( "</body>\n</html>\n"	);	// close html
515 
516 	sTypePropHTML.appendAscii( "</body>\n</html>\n"	);	// close html
517 
518     impl_writeFile( ALLTYPES_HTML        , U2B(sAllTypesHTML.makeStringAndClear()) );
519     impl_writeFile( TYPEPROPERTIES_HTML  , U2B(sTypePropHTML.makeStringAndClear()) );
520 }
521 
522 //*****************************************************************************************************************
impl_generateFilterListHTML()523 void CFGView::impl_generateFilterListHTML()
524 {
525 	//-------------------------------------------------------------------------------------------------------------
526 	// generate frameset for types
527 	OUStringBuffer sFiltersFramesetHTML( 10000 );
528 
529 	sFiltersFramesetHTML.appendAscii( "<html>\n\t<head>\n\t\t<title>\n\t\t\tFrameset: Filters\n\t\t</title>\n\t</head>\n"		);	// open html
530 	sFiltersFramesetHTML.appendAscii( "\t\t<frameset cols=\"40%,60%\">\n"														);	// open frameset for cols
531 	sFiltersFramesetHTML.appendAscii( "\t\t\t<frame name=\""																	);	// generate frame "list"
532 	sFiltersFramesetHTML.appendAscii( TARGET_LIST																				);
533 	sFiltersFramesetHTML.appendAscii( "\" src=\""																				);
534 	sFiltersFramesetHTML.appendAscii( ALLFILTERS_HTML																			);
535 	sFiltersFramesetHTML.appendAscii( "\" title=\"List\">\n"																	);
536 	sFiltersFramesetHTML.appendAscii( "\t\t\t<frame name=\""																	);	// generate frame "properties"
537 	sFiltersFramesetHTML.appendAscii( TARGET_PROPERTIES																			);
538 	sFiltersFramesetHTML.appendAscii( "\" src=\""																				);
539 	sFiltersFramesetHTML.appendAscii( FILTERPROPERTIES_HTML																		);
540 	sFiltersFramesetHTML.appendAscii( "\" title=\"Properties\">\n"																);
541 	sFiltersFramesetHTML.appendAscii( "\t\t</frameset>\n"																		);	// close frameset cols
542 	sFiltersFramesetHTML.appendAscii( "</html>\n"																				);	// close html
543 
544     impl_writeFile( FRAMESET_FILTERS_HTML, U2B(sFiltersFramesetHTML.makeStringAndClear()) );
545 
546 	//-------------------------------------------------------------------------------------------------------------
547 	// generate filter list (names and links only!)
548 	// use same loop to generate filter property list!
549 	OUStringBuffer sAllFiltersHTML( 10000 );
550 	OUStringBuffer sFilterPropHTML( 10000 );
551 
552 	sAllFiltersHTML.appendAscii( "<html>\n\t<head>\n\t\t<title>\n\t\t\tAll Filters\n\t\t</title>\n\t</head>\n\t<body>\n"										);	// open html
553 	sAllFiltersHTML.appendAscii( "\t\t<table border=0><tr><td bgcolor=#ff8040><strong>Nr.</strong></td><td bgcolor=#ff8040><strong>Filter</strong></td></tr>\n"	);	// open table
554 
555 	sFilterPropHTML.appendAscii( "<html>\n\t<head>\n\t\t<title>\n\t\t\tFilterProperties\n\t\t</title>\n\t</head>\n\t<body>\n"									);	// open html
556 /*
557     ::framework::StringList lFilterNames;
558     for( ConstFilterIterator pFilter=m_pData->aCFGView.begin(); pFilter!=m_pData->aCFGView.end(); ++pFilter )
559 	{
560         lFilterNames.push_back( pFilter->first );
561     }
562     ::std::stable_sort( lFilterNames.begin(), lFilterNames.end() );
563     css::uno::Sequence< ::rtl::OUString > lNames;
564     ::framework::DataContainer::convertStringVectorToSequence( lFilterNames, lNames );
565 */
566     css::uno::Sequence< ::rtl::OUString > lNames         = m_aData.pCache->getAllFilterNames()  ;
567     sal_Int32                             nFilterCounter = 0                                    ;
568     sal_Int32                             nCount         = lNames.getLength()                   ;
569     Filter                                aFilter                                               ;
570     for( nFilterCounter=0; nFilterCounter<nCount; ++nFilterCounter )
571 	{
572         aFilter = m_aData.pCache->getFilter( lNames[nFilterCounter] );
573 
574 		// write entry in filter list table
575 		sAllFiltersHTML.appendAscii	( "\t\t\t<tr>\n"																											);	// open row
576 		sAllFiltersHTML.appendAscii	( "\t\t\t\t<td bgcolor=#f5f9d5 valign=\"top\" align=\"top\">"																);	// open column "nr"
577 		sAllFiltersHTML.append		( OUString::valueOf( nFilterCounter )																						);	// write nr
578 		sAllFiltersHTML.appendAscii	( "</td>\n"																													);	// close column "nr"
579 		sAllFiltersHTML.appendAscii	( "\t\t\t\t<td>"																											);	// open column "name"
580 		sAllFiltersHTML.appendAscii	( "<a href=\""																												);	// open href="filterproperties.html#<filtername>"
581 		sAllFiltersHTML.appendAscii	( FILTERPROPERTIES_HTML																										);
582 		sAllFiltersHTML.appendAscii	( "#"																														);
583         sAllFiltersHTML.append      ( aFilter.sName                                                                                                             );
584 		sAllFiltersHTML.appendAscii	( "\" target=\""																											);
585 		sAllFiltersHTML.appendAscii	( TARGET_PROPERTIES																											);
586 		sAllFiltersHTML.appendAscii	( "\">"																														);
587         sAllFiltersHTML.append      ( aFilter.sName                                                                                                             );  // write name
588 		sAllFiltersHTML.appendAscii	( "</a>"																													);	// close href
589 		sAllFiltersHTML.appendAscii	( "</td>\n"																													);	// close column "name"
590 		sAllFiltersHTML.appendAscii	( "\t\t\t</tr>\n"																											);	// close row
591 
592 		// write entry in filter property table
593 		sFilterPropHTML.appendAscii	( "\t\t<a name=\""																											);	// set target="#<typename>" to follow table
594         sFilterPropHTML.append      ( aFilter.sName                                                                                                             );
595 		sFilterPropHTML.appendAscii	( "\"></a>"																													);
596 		sFilterPropHTML.appendAscii	( "\t\t<table border=0>\n"			   																						);	// open table
597 		sFilterPropHTML.appendAscii	( "\t\t\t<tr><td bgcolor=#f5f9d5 valign=\"top\" align=\"top\">Nr.</td><td bgcolor=#f5f9d5 valign=\"top\" align=\"top\">&nbsp;");	// generate row "Nr <value>"
598 		sFilterPropHTML.append		( OUString::valueOf( nFilterCounter )																						);
599 		sFilterPropHTML.appendAscii	( "</td></tr>\n"																											);
600 		sFilterPropHTML.appendAscii	( "\t\t\t<tr><td bgcolor=#f5f9d5 valign=\"top\" align=\"top\">Name</td><td valign=\"top\" align=\"top\">&nbsp;"				);	// generate row "Name <value>"
601         sFilterPropHTML.append      ( aFilter.sName                                                                                                             );
602 		sFilterPropHTML.appendAscii	( "</td></tr>\n"																											);
603         sFilterPropHTML.appendAscii ( "\t\t\t<tr><td bgcolor=#f5f9d5 valign=\"top\" align=\"top\">Order</td><td valign=\"top\" align=\"top\">&nbsp;\""          );  // generate row "Order <value>"
604         sFilterPropHTML.append      ( aFilter.nOrder                                                                                                            );
605 		sFilterPropHTML.appendAscii	( "\"</td></tr>\n"																											);
606 		sFilterPropHTML.appendAscii	( "\t\t\t<tr><td bgcolor=#f5f9d5 valign=\"top\" align=\"top\">Type</td><td valign=\"top\" align=\"top\">&nbsp;\""			);	// generate row "Type <value>"
607         sFilterPropHTML.append      ( aFilter.sType                                                                                                             );
608 		sFilterPropHTML.appendAscii	( "\"</td></tr>\n"																											);
609         sFilterPropHTML.appendAscii ( "\t\t\t<tr><td bgcolor=#f5f9d5 valign=\"top\" align=\"top\">UIName</td><td valign=\"top\" align=\"top\">"                 );  // generate row "UIName <value>"
610         for(    ConstStringHashIterator pUIName=aFilter.lUINames.begin()  ;
611                 pUIName!=aFilter.lUINames.end()                           ;
612                 ++pUIName                                                 )
613 		{
614             sFilterPropHTML.appendAscii   ( "&nbsp;["       );
615             sFilterPropHTML.append        ( pUIName->first  );
616             sFilterPropHTML.appendAscii   ( "] \""          );
617             sFilterPropHTML.append        ( pUIName->second );
618             sFilterPropHTML.appendAscii   ( "\"<br>"        );
619 		}
620         sFilterPropHTML.appendAscii ( "</td></tr>\n"                                                                                                          );
621 		sFilterPropHTML.appendAscii	( "\t\t\t<tr><td bgcolor=#f5f9d5 valign=\"top\" align=\"top\">DocumentService</td><td valign=\"top\" align=\"top\">&nbsp;"	);	// generate row "DocumentService <value>"
622         sFilterPropHTML.append      ( aFilter.sDocumentService                                                                                          );
623 		sFilterPropHTML.appendAscii	( "</td></tr>\n"																											);
624 		sFilterPropHTML.appendAscii	( "\t\t\t<tr><td bgcolor=#f5f9d5 valign=\"top\" align=\"top\">FilterService</td><td valign=\"top\" align=\"top\">&nbsp;"	);	// generate row "FilterService <value>"
625         sFilterPropHTML.append      ( aFilter.sFilterService                                                                                            );
626 		sFilterPropHTML.appendAscii	( "</td></tr>\n"																											);
627 		sFilterPropHTML.appendAscii	( "\t\t\t<tr><td bgcolor=#f5f9d5 valign=\"top\" align=\"top\">Flags</td><td valign=\"top\" align=\"top\">&nbsp;"			);	// generate row "Flags <value>"
628         if( aFilter.nFlags & FILTERFLAG_IMPORT          ) { sFilterPropHTML.append( FILTERFLAGNAME_IMPORT          ); sFilterPropHTML.appendAscii( "<br>&nbsp;" ); };
629         if( aFilter.nFlags & FILTERFLAG_EXPORT          ) { sFilterPropHTML.append( FILTERFLAGNAME_EXPORT          ); sFilterPropHTML.appendAscii( "<br>&nbsp;" ); };
630         if( aFilter.nFlags & FILTERFLAG_TEMPLATE        ) { sFilterPropHTML.append( FILTERFLAGNAME_TEMPLATE        ); sFilterPropHTML.appendAscii( "<br>&nbsp;" ); };
631         if( aFilter.nFlags & FILTERFLAG_INTERNAL        ) { sFilterPropHTML.append( FILTERFLAGNAME_INTERNAL        ); sFilterPropHTML.appendAscii( "<br>&nbsp;" ); };
632         if( aFilter.nFlags & FILTERFLAG_TEMPLATEPATH    ) { sFilterPropHTML.append( FILTERFLAGNAME_TEMPLATEPATH    ); sFilterPropHTML.appendAscii( "<br>&nbsp;" ); };
633         if( aFilter.nFlags & FILTERFLAG_OWN             ) { sFilterPropHTML.append( FILTERFLAGNAME_OWN             ); sFilterPropHTML.appendAscii( "<br>&nbsp;" ); };
634         if( aFilter.nFlags & FILTERFLAG_ALIEN           ) { sFilterPropHTML.append( FILTERFLAGNAME_ALIEN           ); sFilterPropHTML.appendAscii( "<br>&nbsp;" ); };
635         if( aFilter.nFlags & FILTERFLAG_USESOPTIONS     ) { sFilterPropHTML.append( FILTERFLAGNAME_USESOPTIONS     ); sFilterPropHTML.appendAscii( "<br>&nbsp;" ); };
636         if( aFilter.nFlags & FILTERFLAG_DEFAULT         ) { sFilterPropHTML.append( FILTERFLAGNAME_DEFAULT         ); sFilterPropHTML.appendAscii( "<br>&nbsp;" ); };
637         if( aFilter.nFlags & FILTERFLAG_NOTINFILEDIALOG ) { sFilterPropHTML.append( FILTERFLAGNAME_NOTINFILEDIALOG ); sFilterPropHTML.appendAscii( "<br>&nbsp;" ); };
638         if( aFilter.nFlags & FILTERFLAG_NOTINCHOOSER    ) { sFilterPropHTML.append( FILTERFLAGNAME_NOTINCHOOSER    ); sFilterPropHTML.appendAscii( "<br>&nbsp;" ); };
639         if( aFilter.nFlags & FILTERFLAG_ASYNCHRON       ) { sFilterPropHTML.append( FILTERFLAGNAME_ASYNCHRON       ); sFilterPropHTML.appendAscii( "<br>&nbsp;" ); };
640         if( aFilter.nFlags & FILTERFLAG_READONLY        ) { sFilterPropHTML.append( FILTERFLAGNAME_READONLY        ); sFilterPropHTML.appendAscii( "<br>&nbsp;" ); };
641         if( aFilter.nFlags & FILTERFLAG_NOTINSTALLED    ) { sFilterPropHTML.append( FILTERFLAGNAME_NOTINSTALLED    ); sFilterPropHTML.appendAscii( "<br>&nbsp;" ); };
642         if( aFilter.nFlags & FILTERFLAG_CONSULTSERVICE  ) { sFilterPropHTML.append( FILTERFLAGNAME_CONSULTSERVICE  ); sFilterPropHTML.appendAscii( "<br>&nbsp;" ); };
643         if( aFilter.nFlags & FILTERFLAG_3RDPARTYFILTER  ) { sFilterPropHTML.append( FILTERFLAGNAME_3RDPARTYFILTER  ); sFilterPropHTML.appendAscii( "<br>&nbsp;" ); };
644         if( aFilter.nFlags & FILTERFLAG_PACKED          ) { sFilterPropHTML.append( FILTERFLAGNAME_PACKED          ); sFilterPropHTML.appendAscii( "<br>&nbsp;" ); };
645         if( aFilter.nFlags & FILTERFLAG_SILENTEXPORT    ) { sFilterPropHTML.append( FILTERFLAGNAME_SILENTEXPORT    ); sFilterPropHTML.appendAscii( "<br>&nbsp;" ); };
646         if( aFilter.nFlags & FILTERFLAG_BROWSERPREFERED ) { sFilterPropHTML.append( FILTERFLAGNAME_BROWSERPREFERED ); sFilterPropHTML.appendAscii( "<br>&nbsp;" ); };
647         if( aFilter.nFlags & FILTERFLAG_PREFERED        ) { sFilterPropHTML.append( FILTERFLAGNAME_PREFERED        ); sFilterPropHTML.appendAscii( "<br>&nbsp;" ); };
648 
649         sFilterPropHTML.appendAscii ( "</td></tr>\n"                                                                                                            );
650 		sFilterPropHTML.appendAscii	( "\t\t\t<tr><td bgcolor=#f5f9d5 valign=\"top\" align=\"top\">UserData</td><td valign=\"top\" align=\"top\">"				);	// generate row "UserData <value>"
651         for(    ConstStringListIterator pUserData=aFilter.lUserData.begin() ;
652                 pUserData!=aFilter.lUserData.end()                          ;
653                 ++pUserData                                                 )
654 		{
655 			sFilterPropHTML.appendAscii	( "&nbsp;\""	);
656 			sFilterPropHTML.append		( *pUserData	);
657 			sFilterPropHTML.appendAscii	( "\"<br>"		);
658 		}
659 		sFilterPropHTML.appendAscii	( "</td></tr>\n"																											);
660 		sFilterPropHTML.appendAscii	( "\t\t\t<tr><td bgcolor=#f5f9d5 valign=\"top\" align=\"top\">FileFormatVersion</td><td valign=\"top\" align=\"top\">&nbsp;");	// generate row "FileFormatVersion <value>"
661         sFilterPropHTML.append      ( OUString::valueOf( aFilter.nFileFormatVersion )                                                                           );
662 		sFilterPropHTML.appendAscii	( "</td></tr>\n"																											);
663 		sFilterPropHTML.appendAscii	( "\t\t\t<tr><td bgcolor=#f5f9d5 valign=\"top\" align=\"top\">TemplateName</td><td valign=\"top\" align=\"top\">&nbsp;"		);	// generate row "TemplateName <value>"
664         sFilterPropHTML.append      ( aFilter.sTemplateName                                                                                                     );
665 		sFilterPropHTML.appendAscii	( "</td></tr>\n"																											);
666 		sFilterPropHTML.appendAscii	( "\t\t</table>\n"																											);	// close table
667 		sFilterPropHTML.appendAscii	( "\t\t<p>\n"																												);	// add space between this and following table
668 	}
669 
670 	sAllFiltersHTML.appendAscii( "</table>\n"			);	// close table
671 	sAllFiltersHTML.appendAscii( "</body>\n</html>\n"	);	// close html
672 
673 	sFilterPropHTML.appendAscii( "</body>\n</html>\n"	);	// close html
674 
675     impl_writeFile( ALLFILTERS_HTML      , U2B(sAllFiltersHTML.makeStringAndClear()) );
676     impl_writeFile( FILTERPROPERTIES_HTML, U2B(sFilterPropHTML.makeStringAndClear()) );
677 }
678 
679 //*****************************************************************************************************************
impl_generateFilterModulListHTML()680 void CFGView::impl_generateFilterModulListHTML()
681 {
682 	//-------------------------------------------------------------------------------------------------------------
683     // generate frameset for filters sorted by modules
684 	OUStringBuffer sFiltersFramesetHTML( 10000 );
685 
686     sFiltersFramesetHTML.appendAscii( "<html>\n\t<head>\n\t\t<title>\n\t\t\tFrameset: Filters sorted by modules\n\t\t</title>\n\t</head>\n" );  // open html
687     sFiltersFramesetHTML.appendAscii( "\t\t<frameset cols=\"40%,60%\">\n"                                                                   );  // open frameset for cols
688     sFiltersFramesetHTML.appendAscii( "\t\t\t<frame name=\""                                                                                );  // generate frame "list"
689     sFiltersFramesetHTML.appendAscii( TARGET_LIST                                                                                           );
690     sFiltersFramesetHTML.appendAscii( "\" src=\""                                                                                           );
691     sFiltersFramesetHTML.appendAscii( MODULFILTERS_HTML                                                                                     );
692     sFiltersFramesetHTML.appendAscii( "\" title=\"List\">\n"                                                                                );
693     sFiltersFramesetHTML.appendAscii( "\t\t\t<frame name=\""                                                                                );  // generate frame "properties"
694     sFiltersFramesetHTML.appendAscii( TARGET_PROPERTIES                                                                                     );
695     sFiltersFramesetHTML.appendAscii( "\" src=\""                                                                                           );
696     sFiltersFramesetHTML.appendAscii( FILTERPROPERTIES_HTML                                                                                 );
697     sFiltersFramesetHTML.appendAscii( "\" title=\"Properties\">\n"                                                                          );
698     sFiltersFramesetHTML.appendAscii( "\t\t</frameset>\n"                                                                                   );  // close frameset cols
699     sFiltersFramesetHTML.appendAscii( "</html>\n"                                                                                           );  // close html
700 
701     impl_writeFile( FRAMESET_FILTERS_HTML, U2B(sFiltersFramesetHTML.makeStringAndClear()) );
702 
703 	//-------------------------------------------------------------------------------------------------------------
704 	// generate filter list (names and links only!)
705 	// use same loop to generate filter property list!
706 	OUStringBuffer sAllFiltersHTML( 10000 );
707 	OUStringBuffer sFilterPropHTML( 10000 );
708 
709 	sAllFiltersHTML.appendAscii( "<html>\n\t<head>\n\t\t<title>\n\t\t\tAll Filters\n\t\t</title>\n\t</head>\n\t<body>\n"										);	// open html
710 	sAllFiltersHTML.appendAscii( "\t\t<table border=0><tr><td bgcolor=#ff8040><strong>Nr.</strong></td><td bgcolor=#ff8040><strong>Filter</strong></td></tr>\n"	);	// open table
711 
712 	sFilterPropHTML.appendAscii( "<html>\n\t<head>\n\t\t<title>\n\t\t\tFilterProperties\n\t\t</title>\n\t</head>\n\t<body>\n"									);	// open html
713 
714     css::uno::Sequence< ::rtl::OUString > lWriter ;
715     css::uno::Sequence< ::rtl::OUString > lWeb    ;
716     css::uno::Sequence< ::rtl::OUString > lGlobal ;
717     css::uno::Sequence< ::rtl::OUString > lChart  ;
718     css::uno::Sequence< ::rtl::OUString > lCalc   ;
719     css::uno::Sequence< ::rtl::OUString > lImpress;
720     css::uno::Sequence< ::rtl::OUString > lDraw   ;
721     css::uno::Sequence< ::rtl::OUString > lMath   ;
722     css::uno::Sequence< ::rtl::OUString > lGraphic;
723     css::uno::Sequence< ::rtl::OUString > lDefault;
724     css::uno::Sequence< ::rtl::OUString > lNames  ;
725 
726     m_aData.pCache->queryFilters( FILTERQUERY_TEXTDOCUMENT_WITHDEFAULT        ) >>= lWriter   ;
727     m_aData.pCache->queryFilters( FILTERQUERY_WEBDOCUMENT_WITHDEFAULT         ) >>= lWeb      ;
728     m_aData.pCache->queryFilters( FILTERQUERY_GLOBALDOCUMENT_WITHDEFAULT      ) >>= lGlobal   ;
729     m_aData.pCache->queryFilters( FILTERQUERY_CHARTDOCUMENT_WITHDEFAULT       ) >>= lChart    ;
730     m_aData.pCache->queryFilters( FILTERQUERY_SPREADSHEETDOCUMENT_WITHDEFAULT ) >>= lCalc     ;
731     m_aData.pCache->queryFilters( FILTERQUERY_PRESENTATIONDOCUMENT_WITHDEFAULT) >>= lImpress  ;
732     m_aData.pCache->queryFilters( FILTERQUERY_DRAWINGDOCUMENT_WITHDEFAULT     ) >>= lDraw     ;
733     m_aData.pCache->queryFilters( FILTERQUERY_FORMULARPROPERTIES_WITHDEFAULT  ) >>= lMath     ;
734     m_aData.pCache->queryFilters( FILTERQUERY_GRAPHICFILTERS                  ) >>= lGraphic  ;
735     m_aData.pCache->queryFilters( FILTERQUERY_DEFAULTFILTERS                  ) >>= lDefault  ;
736 
737     sal_Int32       nModuls       = 0;
738     sal_Int32       nFilters      = 0;
739     sal_Int32       nModulCount   = 0;
740     sal_Int32       nFilterCount  = 0;
741     Filter          aFilter          ;
742     ::rtl::OString  sModul           ;
743 
744     for( nModuls=0; nModuls<nModulCount; ++nModuls )
745     {
746         switch( nModuls )
747         {
748             case 0: {
749                         lNames = lWriter;
750                         sModul = "Writer";
751                     }
752                     break;
753             case 1: {
754                         lNames = lWeb    ;
755                         sModul = "Web";
756                     }
757                     break;
758             case 2: {
759                         lNames = lGlobal ;
760                         sModul = "GlobalDokument";
761                     }
762                     break;
763             case 3: {
764                         lNames = lChart  ;
765                         sModul = "Chart";
766                     }
767                     break;
768             case 4: {
769                         lNames = lCalc   ;
770                         sModul = "Calc";
771                     }
772                     break;
773             case 5: {
774                         lNames = lImpress;
775                         sModul = "Impress";
776                     }
777                     break;
778             case 6: {
779                         lNames = lDraw   ;
780                         sModul = "Draw";
781                     }
782                     break;
783             case 7: {
784                         lNames = lMath   ;
785                         sModul = "Math";
786                     }
787                     break;
788             case 8: {
789                         lNames = lGraphic;
790                         sModul = "Graphic";
791                     }
792                     break;
793             case 9: {
794                         lNames = lDefault;
795                         sModul = "Default Filter!";
796                     }
797                     break;
798         }
799 
800         sAllFiltersHTML.appendAscii ( "\t\t\t<tr>\n"                                                                        );
801         sAllFiltersHTML.appendAscii ( "\t\t\t\t<td bgcolor=#000000 fgcolor=#ffffff valign=\"top\" align=\"top\">-</td>\n"   );
802         sAllFiltersHTML.appendAscii ( "\t\t\t\t<td bgcolor=#000000 fgcolor=#ffffff valign=\"top\" align=\"top\">"           );
803         sAllFiltersHTML.appendAscii ( sModul                                                                                );
804         sAllFiltersHTML.appendAscii ( "</td>\n"                                                                             );
805         sAllFiltersHTML.appendAscii ( "\t\t\t</tr>\n"                                                                       );
806 
807         nFilterCount = lNames.getLength();
808 
809         for( nFilters=0; nFilters<nFilterCount; ++nFilters )
810         {
811             aFilter = m_aData.pCache->getFilter( lNames[nFilters] );
812 
813             // write entry in filter list table
814             sAllFiltersHTML.appendAscii ( "\t\t\t<tr>\n"                                                                                                            );  // open row
815             sAllFiltersHTML.appendAscii ( "\t\t\t\t<td bgcolor=#f5f9d5 valign=\"top\" align=\"top\">"                                                               );  // open column "nr"
816             sAllFiltersHTML.append      ( OUString::valueOf( nFilters )                                                                                             );  // write nr
817             sAllFiltersHTML.appendAscii ( "</td>\n"                                                                                                                 );  // close column "nr"
818             sAllFiltersHTML.appendAscii ( "\t\t\t\t<td>"                                                                                                            );  // open column "name"
819             sAllFiltersHTML.appendAscii ( "<a href=\""                                                                                                              );  // open href="filterproperties.html#<filtername>"
820             sAllFiltersHTML.appendAscii ( FILTERPROPERTIES_HTML                                                                                                     );
821             sAllFiltersHTML.appendAscii ( "#"                                                                                                                       );
822             sAllFiltersHTML.append      ( aFilter.sName                                                                                                             );
823             sAllFiltersHTML.appendAscii ( "\" target=\""                                                                                                            );
824             sAllFiltersHTML.appendAscii ( TARGET_PROPERTIES                                                                                                         );
825             sAllFiltersHTML.appendAscii ( "\">"                                                                                                                     );
826             sAllFiltersHTML.append      ( aFilter.sName                                                                                                             );  // write name
827             sAllFiltersHTML.appendAscii ( "</a>"                                                                                                                    );  // close href
828             sAllFiltersHTML.appendAscii ( "</td>\n"                                                                                                                 );  // close column "name"
829             sAllFiltersHTML.appendAscii ( "\t\t\t</tr>\n"                                                                                                           );  // close row
830 
831             // write entry in filter property table
832             sFilterPropHTML.appendAscii ( "\t\t<a name=\""                                                                                                          );  // set target="#<typename>" to follow table
833             sFilterPropHTML.append      ( aFilter.sName                                                                                                             );
834             sFilterPropHTML.appendAscii ( "\"></a>"                                                                                                                 );
835             sFilterPropHTML.appendAscii ( "\t\t<table border=0>\n"                                                                                                  );  // open table
836             sFilterPropHTML.appendAscii ( "\t\t\t<tr><td bgcolor=#f5f9d5 valign=\"top\" align=\"top\">Nr.</td><td bgcolor=#f5f9d5 valign=\"top\" align=\"top\">&nbsp;");    // generate row "Nr <value>"
837             sFilterPropHTML.append      ( OUString::valueOf( nFilters )                                                                                             );
838             sFilterPropHTML.appendAscii ( "</td></tr>\n"                                                                                                            );
839             sFilterPropHTML.appendAscii ( "\t\t\t<tr><td bgcolor=#f5f9d5 valign=\"top\" align=\"top\">Name</td><td valign=\"top\" align=\"top\">&nbsp;"             );  // generate row "Name <value>"
840             sFilterPropHTML.append      ( aFilter.sName                                                                                                             );
841             sFilterPropHTML.appendAscii ( "</td></tr>\n"                                                                                                            );
842             sFilterPropHTML.appendAscii ( "\t\t\t<tr><td bgcolor=#f5f9d5 valign=\"top\" align=\"top\">Order</td><td valign=\"top\" align=\"top\">&nbsp;\""          );  // generate row "Order <value>"
843             sFilterPropHTML.append      ( aFilter.nOrder                                                                                                            );
844             sFilterPropHTML.appendAscii ( "\"</td></tr>\n"                                                                                                          );
845             sFilterPropHTML.appendAscii ( "\t\t\t<tr><td bgcolor=#f5f9d5 valign=\"top\" align=\"top\">Type</td><td valign=\"top\" align=\"top\">&nbsp;\""           );  // generate row "Type <value>"
846             sFilterPropHTML.append      ( aFilter.sType                                                                                                             );
847             sFilterPropHTML.appendAscii ( "\"</td></tr>\n"                                                                                                          );
848             sFilterPropHTML.appendAscii ( "\t\t\t<tr><td bgcolor=#f5f9d5 valign=\"top\" align=\"top\">UIName</td><td valign=\"top\" align=\"top\">"                 );  // generate row "UIName <value>"
849             for(    ConstStringHashIterator pUIName=aFilter.lUINames.begin()  ;
850                     pUIName!=aFilter.lUINames.end()                           ;
851                     ++pUIName                                                 )
852             {
853                 sFilterPropHTML.appendAscii   ( "&nbsp;["       );
854                 sFilterPropHTML.append        ( pUIName->first  );
855                 sFilterPropHTML.appendAscii   ( "] \""          );
856                 sFilterPropHTML.append        ( pUIName->second );
857                 sFilterPropHTML.appendAscii   ( "\"<br>"        );
858             }
859             sFilterPropHTML.appendAscii ( "</td></tr>\n"                                                                                                          );
860             sFilterPropHTML.appendAscii ( "\t\t\t<tr><td bgcolor=#f5f9d5 valign=\"top\" align=\"top\">DocumentService</td><td valign=\"top\" align=\"top\">&nbsp;"  );  // generate row "DocumentService <value>"
861             sFilterPropHTML.append      ( aFilter.sDocumentService                                                                                          );
862             sFilterPropHTML.appendAscii ( "</td></tr>\n"                                                                                                            );
863             sFilterPropHTML.appendAscii ( "\t\t\t<tr><td bgcolor=#f5f9d5 valign=\"top\" align=\"top\">FilterService</td><td valign=\"top\" align=\"top\">&nbsp;"    );  // generate row "FilterService <value>"
864             sFilterPropHTML.append      ( aFilter.sFilterService                                                                                            );
865             sFilterPropHTML.appendAscii ( "</td></tr>\n"                                                                                                            );
866             sFilterPropHTML.appendAscii ( "\t\t\t<tr><td bgcolor=#f5f9d5 valign=\"top\" align=\"top\">Flags</td><td valign=\"top\" align=\"top\">&nbsp;"            );  // generate row "Flags <value>"
867             if( aFilter.nFlags & FILTERFLAG_IMPORT          ) { sFilterPropHTML.append( FILTERFLAGNAME_IMPORT          ); sFilterPropHTML.appendAscii( "<br>&nbsp;" ); };
868             if( aFilter.nFlags & FILTERFLAG_EXPORT          ) { sFilterPropHTML.append( FILTERFLAGNAME_EXPORT          ); sFilterPropHTML.appendAscii( "<br>&nbsp;" ); };
869             if( aFilter.nFlags & FILTERFLAG_TEMPLATE        ) { sFilterPropHTML.append( FILTERFLAGNAME_TEMPLATE        ); sFilterPropHTML.appendAscii( "<br>&nbsp;" ); };
870             if( aFilter.nFlags & FILTERFLAG_INTERNAL        ) { sFilterPropHTML.append( FILTERFLAGNAME_INTERNAL        ); sFilterPropHTML.appendAscii( "<br>&nbsp;" ); };
871             if( aFilter.nFlags & FILTERFLAG_TEMPLATEPATH    ) { sFilterPropHTML.append( FILTERFLAGNAME_TEMPLATEPATH    ); sFilterPropHTML.appendAscii( "<br>&nbsp;" ); };
872             if( aFilter.nFlags & FILTERFLAG_OWN             ) { sFilterPropHTML.append( FILTERFLAGNAME_OWN             ); sFilterPropHTML.appendAscii( "<br>&nbsp;" ); };
873             if( aFilter.nFlags & FILTERFLAG_ALIEN           ) { sFilterPropHTML.append( FILTERFLAGNAME_ALIEN           ); sFilterPropHTML.appendAscii( "<br>&nbsp;" ); };
874             if( aFilter.nFlags & FILTERFLAG_USESOPTIONS     ) { sFilterPropHTML.append( FILTERFLAGNAME_USESOPTIONS     ); sFilterPropHTML.appendAscii( "<br>&nbsp;" ); };
875             if( aFilter.nFlags & FILTERFLAG_DEFAULT         ) { sFilterPropHTML.append( FILTERFLAGNAME_DEFAULT         ); sFilterPropHTML.appendAscii( "<br>&nbsp;" ); };
876             if( aFilter.nFlags & FILTERFLAG_NOTINFILEDIALOG ) { sFilterPropHTML.append( FILTERFLAGNAME_NOTINFILEDIALOG ); sFilterPropHTML.appendAscii( "<br>&nbsp;" ); };
877             if( aFilter.nFlags & FILTERFLAG_NOTINCHOOSER    ) { sFilterPropHTML.append( FILTERFLAGNAME_NOTINCHOOSER    ); sFilterPropHTML.appendAscii( "<br>&nbsp;" ); };
878             if( aFilter.nFlags & FILTERFLAG_ASYNCHRON       ) { sFilterPropHTML.append( FILTERFLAGNAME_ASYNCHRON       ); sFilterPropHTML.appendAscii( "<br>&nbsp;" ); };
879             if( aFilter.nFlags & FILTERFLAG_READONLY        ) { sFilterPropHTML.append( FILTERFLAGNAME_READONLY        ); sFilterPropHTML.appendAscii( "<br>&nbsp;" ); };
880             if( aFilter.nFlags & FILTERFLAG_NOTINSTALLED    ) { sFilterPropHTML.append( FILTERFLAGNAME_NOTINSTALLED    ); sFilterPropHTML.appendAscii( "<br>&nbsp;" ); };
881             if( aFilter.nFlags & FILTERFLAG_CONSULTSERVICE  ) { sFilterPropHTML.append( FILTERFLAGNAME_CONSULTSERVICE  ); sFilterPropHTML.appendAscii( "<br>&nbsp;" ); };
882             if( aFilter.nFlags & FILTERFLAG_3RDPARTYFILTER  ) { sFilterPropHTML.append( FILTERFLAGNAME_3RDPARTYFILTER  ); sFilterPropHTML.appendAscii( "<br>&nbsp;" ); };
883             if( aFilter.nFlags & FILTERFLAG_PACKED          ) { sFilterPropHTML.append( FILTERFLAGNAME_PACKED          ); sFilterPropHTML.appendAscii( "<br>&nbsp;" ); };
884             if( aFilter.nFlags & FILTERFLAG_SILENTEXPORT    ) { sFilterPropHTML.append( FILTERFLAGNAME_SILENTEXPORT    ); sFilterPropHTML.appendAscii( "<br>&nbsp;" ); };
885             if( aFilter.nFlags & FILTERFLAG_BROWSERPREFERED ) { sFilterPropHTML.append( FILTERFLAGNAME_BROWSERPREFERED ); sFilterPropHTML.appendAscii( "<br>&nbsp;" ); };
886             if( aFilter.nFlags & FILTERFLAG_PREFERED        ) { sFilterPropHTML.append( FILTERFLAGNAME_PREFERED        ); sFilterPropHTML.appendAscii( "<br>&nbsp;" ); };
887 
888             sFilterPropHTML.appendAscii ( "</td></tr>\n"                                                                                                            );
889             sFilterPropHTML.appendAscii ( "\t\t\t<tr><td bgcolor=#f5f9d5 valign=\"top\" align=\"top\">UserData</td><td valign=\"top\" align=\"top\">"               );  // generate row "UserData <value>"
890             for(    ConstStringListIterator pUserData=aFilter.lUserData.begin() ;
891                     pUserData!=aFilter.lUserData.end()                          ;
892                     ++pUserData                                                 )
893             {
894                 sFilterPropHTML.appendAscii ( "&nbsp;\""    );
895                 sFilterPropHTML.append      ( *pUserData    );
896                 sFilterPropHTML.appendAscii ( "\"<br>"      );
897             }
898             sFilterPropHTML.appendAscii ( "</td></tr>\n"                                                                                                            );
899             sFilterPropHTML.appendAscii ( "\t\t\t<tr><td bgcolor=#f5f9d5 valign=\"top\" align=\"top\">FileFormatVersion</td><td valign=\"top\" align=\"top\">&nbsp;");  // generate row "FileFormatVersion <value>"
900             sFilterPropHTML.append      ( OUString::valueOf( aFilter.nFileFormatVersion )                                                                           );
901             sFilterPropHTML.appendAscii ( "</td></tr>\n"                                                                                                            );
902             sFilterPropHTML.appendAscii ( "\t\t\t<tr><td bgcolor=#f5f9d5 valign=\"top\" align=\"top\">TemplateName</td><td valign=\"top\" align=\"top\">&nbsp;"     );  // generate row "TemplateName <value>"
903             sFilterPropHTML.append      ( aFilter.sTemplateName                                                                                                     );
904             sFilterPropHTML.appendAscii ( "</td></tr>\n"                                                                                                            );
905             sFilterPropHTML.appendAscii ( "\t\t</table>\n"                                                                                                          );  // close table
906             sFilterPropHTML.appendAscii ( "\t\t<p>\n"                                                                                                               );  // add space between this and following table
907         }
908     }
909 
910 	sAllFiltersHTML.appendAscii( "</table>\n"			);	// close table
911 	sAllFiltersHTML.appendAscii( "</body>\n</html>\n"	);	// close html
912 
913 	sFilterPropHTML.appendAscii( "</body>\n</html>\n"	);	// close html
914 
915     impl_writeFile( ALLFILTERS_HTML      , U2B(sAllFiltersHTML.makeStringAndClear()) );
916     impl_writeFile( FILTERPROPERTIES_HTML, U2B(sFilterPropHTML.makeStringAndClear()) );
917 }
918 
919 //*****************************************************************************************************************
impl_generateDetectorListHTML()920 void CFGView::impl_generateDetectorListHTML()
921 {
922 	//-------------------------------------------------------------------------------------------------------------
923 	// generate frameset for detector services
924 	OUStringBuffer sDetectorsFramesetHTML( 10000 );
925 
926 	sDetectorsFramesetHTML.appendAscii( "<html>\n\t<head>\n\t\t<title>\n\t\t\tFrameset: Detector Services\n\t\t</title>\n\t</head>\n"	);	// open html
927 	sDetectorsFramesetHTML.appendAscii( "\t\t<frameset cols=\"40%,60%\">\n"																);	// open frameset for cols
928 	sDetectorsFramesetHTML.appendAscii( "\t\t\t<frame name=\""																			);	// generate frame "list"
929 	sDetectorsFramesetHTML.appendAscii( TARGET_LIST																						);
930 	sDetectorsFramesetHTML.appendAscii( "\" src=\""																						);
931 	sDetectorsFramesetHTML.appendAscii( ALLDETECTORS_HTML																				);
932 	sDetectorsFramesetHTML.appendAscii( "\" title=\"List\">\n"																			);
933 	sDetectorsFramesetHTML.appendAscii( "\t\t\t<frame name=\""																			);	// generate frame "properties"
934 	sDetectorsFramesetHTML.appendAscii( TARGET_PROPERTIES																				);
935 	sDetectorsFramesetHTML.appendAscii( "\" src=\""																						);
936 	sDetectorsFramesetHTML.appendAscii( DETECTORPROPERTIES_HTML																			);
937 	sDetectorsFramesetHTML.appendAscii( "\" title=\"Properties\">\n"																	);
938 	sDetectorsFramesetHTML.appendAscii( "\t\t</frameset>\n"																				);	// close frameset cols
939 	sDetectorsFramesetHTML.appendAscii( "</html>\n"																						);	// close html
940 
941     impl_writeFile( FRAMESET_DETECTORS_HTML, U2B(sDetectorsFramesetHTML.makeStringAndClear()) );
942 
943 	//-------------------------------------------------------------------------------------------------------------
944 	// generate detector list (names and links only!)
945 	// use same loop to generate detector property list!
946 	OUStringBuffer sAllDetectorsHTML( 10000 );
947 	OUStringBuffer sDetectorPropHTML( 10000 );
948 
949 	sAllDetectorsHTML.appendAscii( "<html>\n\t<head>\n\t\t<title>\n\t\t\tAll Detectors\n\t\t</title>\n\t</head>\n\t<body>\n"										);	// open html
950 	sAllDetectorsHTML.appendAscii( "\t\t<table border=0><tr><td bgcolor=#ff8040><strong>Nr.</strong></td><td bgcolor=#ff8040><strong>Detector</strong></td></tr>\n"	);	// open table
951 
952 	sDetectorPropHTML.appendAscii( "<html>\n\t<head>\n\t\t<title>\n\t\t\tDetectorProperties\n\t\t</title>\n\t</head>\n\t<body>\n"									);	// open html
953 
954     css::uno::Sequence< ::rtl::OUString > lNames = m_aData.pCache->getAllDetectorNames();
955     sal_Int32                             nCount = lNames.getLength()                   ;
956     for( sal_Int32 nItem=0; nItem<nCount; ++nItem )
957 	{
958         Detector aDetector = m_aData.pCache->getDetector( lNames[nItem] );
959 
960 		// write entry in detector list table
961 		sAllDetectorsHTML.appendAscii	( "\t\t\t<tr>\n"																											);	// open row
962 		sAllDetectorsHTML.appendAscii	( "\t\t\t\t<td bgcolor=#f5f9d5 valign=\"top\" align=\"top\">"																);	// open column "nr"
963         sAllDetectorsHTML.append        ( OUString::valueOf( nItem )                                                                                                );  // write nr
964 		sAllDetectorsHTML.appendAscii	( "</td>\n"																													);	// close column "nr"
965 		sAllDetectorsHTML.appendAscii	( "\t\t\t\t<td>"																											);	// open column "name"
966 		sAllDetectorsHTML.appendAscii	( "<a href=\""																												);	// open href="detectorproperties.html#<detectorname>"
967 		sAllDetectorsHTML.appendAscii	( DETECTORPROPERTIES_HTML																									);
968 		sAllDetectorsHTML.appendAscii	( "#"																														);
969         sAllDetectorsHTML.append        ( aDetector.sName                                                                                                           );
970 		sAllDetectorsHTML.appendAscii	( "\" target=\""																											);
971 		sAllDetectorsHTML.appendAscii	( TARGET_PROPERTIES																											);
972 		sAllDetectorsHTML.appendAscii	( "\">"																														);
973         sAllDetectorsHTML.append        ( aDetector.sName                                                                                                           );  // write name
974 		sAllDetectorsHTML.appendAscii	( "</a>"																													);	// close href
975 		sAllDetectorsHTML.appendAscii	( "</td>\n"																													);	// close column "name"
976 		sAllDetectorsHTML.appendAscii	( "\t\t\t</tr>\n"																											);	// close row
977 
978 		// write entry in detector property table
979 		sDetectorPropHTML.appendAscii	( "\t\t<a name=\""																											);	// set target="#<detectorname>" to follow table
980         sDetectorPropHTML.append        ( aDetector.sName                                                                                                           );
981 		sDetectorPropHTML.appendAscii	( "\"></a>"																													);
982 		sDetectorPropHTML.appendAscii	( "\t\t<table border=0>\n"			   																						);	// open table
983 		sDetectorPropHTML.appendAscii	( "\t\t\t<tr><td bgcolor=#f5f9d5 valign=\"top\" align=\"top\">Nr.</td><td valign=\"top\" align=\"top\">&nbsp;"				);	// generate row "Nr <value>"
984         sDetectorPropHTML.append        ( OUString::valueOf( nItem )                                                                                                );
985 		sDetectorPropHTML.appendAscii	( "</td></tr>\n"																											);
986 		sDetectorPropHTML.appendAscii	( "\t\t\t<tr><td bgcolor=#f5f9d5 valign=\"top\" align=\"top\">Name</td><td valign=\"top\" align=\"top\">&nbsp;"				);	// generate row "Name <value>"
987         sDetectorPropHTML.append        ( aDetector.sName                                                                                                           );
988 		sDetectorPropHTML.appendAscii	( "</td></tr>\n"																											);
989 		sDetectorPropHTML.appendAscii	( "\t\t\t<tr><td bgcolor=#f5f9d5 valign=\"top\" align=\"top\">Types</td><td valign=\"top\" align=\"top\">"					);	// generate row "Types <value>"
990         for(    ConstStringListIterator pType=aDetector.lTypes.begin()  ;
991                 pType!=aDetector.lTypes.end()                           ;
992                 ++pType                                                 )
993 		{
994 			sDetectorPropHTML.appendAscii	( "&nbsp;\"");
995 			sDetectorPropHTML.append		( *pType	);
996 			sDetectorPropHTML.appendAscii	( "\"<br>"	);
997 		}
998 
999 		sDetectorPropHTML.appendAscii	( "\t\t</table>\n"																											);	// close table
1000 		sDetectorPropHTML.appendAscii	( "\t\t<p>\n"																												);	// add space between this and following table
1001 	}
1002 
1003 	sAllDetectorsHTML.appendAscii( "</table>\n"			);	// close table
1004 	sAllDetectorsHTML.appendAscii( "</body>\n</html>\n"	);	// close html
1005 
1006 	sDetectorPropHTML.appendAscii( "</body>\n</html>\n"	);	// close html
1007 
1008     impl_writeFile( ALLDETECTORS_HTML        , U2B(sAllDetectorsHTML.makeStringAndClear()) );
1009     impl_writeFile( DETECTORPROPERTIES_HTML  , U2B(sDetectorPropHTML.makeStringAndClear()) );
1010 }
1011 
1012 //*****************************************************************************************************************
impl_generateLoaderListHTML()1013 void CFGView::impl_generateLoaderListHTML()
1014 {
1015 	//-------------------------------------------------------------------------------------------------------------
1016 	// generate frameset for loader services
1017 	OUStringBuffer sLoadersFramesetHTML( 10000 );
1018 
1019 	sLoadersFramesetHTML.appendAscii( "<html>\n\t<head>\n\t\t<title>\n\t\t\tFrameset: Loader Services\n\t\t</title>\n\t</head>\n"	);	// open html
1020 	sLoadersFramesetHTML.appendAscii( "\t\t<frameset cols=\"40%,60%\">\n"															);	// open frameset for cols
1021 	sLoadersFramesetHTML.appendAscii( "\t\t\t<frame name=\""																		);	// generate frame "list"
1022 	sLoadersFramesetHTML.appendAscii( TARGET_LIST																					);
1023 	sLoadersFramesetHTML.appendAscii( "\" src=\""																					);
1024 	sLoadersFramesetHTML.appendAscii( ALLLOADERS_HTML																				);
1025 	sLoadersFramesetHTML.appendAscii( "\" title=\"List\">\n"																		);
1026 	sLoadersFramesetHTML.appendAscii( "\t\t\t<frame name=\""																		);	// generate frame "properties"
1027 	sLoadersFramesetHTML.appendAscii( TARGET_PROPERTIES																				);
1028 	sLoadersFramesetHTML.appendAscii( "\" src=\""																					);
1029 	sLoadersFramesetHTML.appendAscii( LOADERPROPERTIES_HTML																			);
1030 	sLoadersFramesetHTML.appendAscii( "\" title=\"Properties\">\n"																	);
1031 	sLoadersFramesetHTML.appendAscii( "\t\t</frameset>\n"																			);	// close frameset cols
1032 	sLoadersFramesetHTML.appendAscii( "</html>\n"																					);	// close html
1033 
1034     impl_writeFile( FRAMESET_LOADERS_HTML, U2B(sLoadersFramesetHTML.makeStringAndClear()) );
1035 
1036 	//-------------------------------------------------------------------------------------------------------------
1037 	// generate loader list (names and links only!)
1038 	// use same loop to generate loader property list!
1039 	OUStringBuffer sAllLoadersHTML( 10000 );
1040 	OUStringBuffer sLoaderPropHTML( 10000 );
1041 
1042 	sAllLoadersHTML.appendAscii( "<html>\n\t<head>\n\t\t<title>\n\t\t\tAll Loaders\n\t\t</title>\n\t</head>\n\t<body>\n"										);	// open html
1043 	sAllLoadersHTML.appendAscii( "\t\t<table border=0><tr><td bgcolor=#ff8040><strong>Nr.</strong></td><td bgcolor=#ff8040><strong>Loader</strong></td></tr>\n"	);	// open table
1044 
1045 	sLoaderPropHTML.appendAscii( "<html>\n\t<head>\n\t\t<title>\n\t\t\tLoaderProperties\n\t\t</title>\n\t</head>\n\t<body>\n"									);	// open html
1046 
1047     css::uno::Sequence< ::rtl::OUString > lNames = m_aData.pCache->getAllLoaderNames();
1048     sal_Int32                             nCount = lNames.getLength()                 ;
1049     for( sal_Int32 nItem=0; nItem<nCount; ++nItem )
1050 	{
1051         Loader aLoader = m_aData.pCache->getLoader( lNames[nItem] );
1052 
1053 		// write entry in loader list table
1054 		sAllLoadersHTML.appendAscii	( "\t\t\t<tr>\n"																											);	// open row
1055 		sAllLoadersHTML.appendAscii	( "\t\t\t\t<td bgcolor=#f5f9d5 valign=\"top\" align=\"top\">"																);	// open column "nr"
1056         sAllLoadersHTML.append      ( OUString::valueOf( nItem )                                                                                                );  // write nr
1057 		sAllLoadersHTML.appendAscii	( "</td>\n"																													);	// close column "nr"
1058 		sAllLoadersHTML.appendAscii	( "\t\t\t\t<td>"																											);	// open column "name"
1059 		sAllLoadersHTML.appendAscii	( "<a href=\""																												);	// open href="loaderproperties.html#<loadername>"
1060 		sAllLoadersHTML.appendAscii	( LOADERPROPERTIES_HTML																										);
1061 		sAllLoadersHTML.appendAscii	( "#"																														);
1062         sAllLoadersHTML.append      ( aLoader.sName                                                                                                             );
1063 		sAllLoadersHTML.appendAscii	( "\" target=\""																											);
1064 		sAllLoadersHTML.appendAscii	( TARGET_PROPERTIES																											);
1065 		sAllLoadersHTML.appendAscii	( "\">"																														);
1066         sAllLoadersHTML.append      ( aLoader.sName                                                                                                             );  // write name
1067 		sAllLoadersHTML.appendAscii	( "</a>"																													);	// close href
1068 		sAllLoadersHTML.appendAscii	( "</td>\n"																													);	// close column "name"
1069 		sAllLoadersHTML.appendAscii	( "\t\t\t</tr>\n"																											);	// close row
1070 
1071 		// write entry in loader property table
1072 		sLoaderPropHTML.appendAscii	( "\t\t<a name=\""																											);	// set target="#<loadername>" to follow table
1073         sLoaderPropHTML.append      ( aLoader.sName                                                                                                             );
1074 		sLoaderPropHTML.appendAscii	( "\"></a>"																													);
1075 		sLoaderPropHTML.appendAscii	( "\t\t<table border=0>\n"			   																						);	// open table
1076 		sLoaderPropHTML.appendAscii	( "\t\t\t<tr><td bgcolor=#f5f9d5 valign=\"top\" align=\"top\">Nr.</td><td valign=\"top\" align=\"top\">&nbsp;"				);	// generate row "Nr <value>"
1077         sLoaderPropHTML.append      ( OUString::valueOf( nItem )                                                                                                );
1078 		sLoaderPropHTML.appendAscii	( "</td></tr>\n"																											);
1079 		sLoaderPropHTML.appendAscii	( "\t\t\t<tr><td bgcolor=#f5f9d5 valign=\"top\" align=\"top\">Name</td><td valign=\"top\" align=\"top\">&nbsp;"				);	// generate row "Name <value>"
1080         sLoaderPropHTML.append      ( aLoader.sName                                                                                                             );
1081 		sLoaderPropHTML.appendAscii	( "</td></tr>\n"																											);
1082         sLoaderPropHTML.appendAscii ( "\t\t\t<tr><td bgcolor=#f5f9d5 valign=\"top\" align=\"top\">UIName</td><td valign=\"top\" align=\"top\">"                 );  // generate row "UIName <value>"
1083         for(    ConstStringHashIterator pUIName=aLoader.lUINames.begin()  ;
1084                 pUIName!=aLoader.lUINames.end()                           ;
1085                 ++pUIName                                                 )
1086 		{
1087             sLoaderPropHTML.appendAscii   ( "&nbsp;["       );
1088             sLoaderPropHTML.append        ( pUIName->first  );
1089             sLoaderPropHTML.appendAscii   ( "] \""          );
1090             sLoaderPropHTML.append        ( pUIName->second );
1091             sLoaderPropHTML.appendAscii   ( "\"<br>"        );
1092 		}
1093 		sLoaderPropHTML.appendAscii	( "</td></tr>\n"																											);
1094 		sLoaderPropHTML.appendAscii	( "\t\t\t<tr><td bgcolor=#f5f9d5 valign=\"top\" align=\"top\">Types</td><td valign=\"top\" align=\"top\">"					);	// generate row "Types <value>"
1095         for(    ConstStringListIterator pType=aLoader.lTypes.begin()    ;
1096                 pType!=aLoader.lTypes.end()                             ;
1097                 ++pType                                                 )
1098 		{
1099 			sLoaderPropHTML.appendAscii	( "&nbsp;\"");
1100 			sLoaderPropHTML.append		( *pType	);
1101 			sLoaderPropHTML.appendAscii	( "\"<br>"	);
1102 		}
1103 
1104 		sLoaderPropHTML.appendAscii	( "\t\t</table>\n"																											);	// close table
1105 		sLoaderPropHTML.appendAscii	( "\t\t<p>\n"																												);	// add space between this and following table
1106 	}
1107 
1108 	sAllLoadersHTML.appendAscii( "</table>\n"			);	// close table
1109 	sAllLoadersHTML.appendAscii( "</body>\n</html>\n"	);	// close html
1110 
1111 	sLoaderPropHTML.appendAscii( "</body>\n</html>\n"	);	// close html
1112 
1113     impl_writeFile( ALLLOADERS_HTML      , U2B(sAllLoadersHTML.makeStringAndClear()) );
1114     impl_writeFile( LOADERPROPERTIES_HTML, U2B(sLoaderPropHTML.makeStringAndClear()) );
1115 }
1116 
1117 //*****************************************************************************************************************
impl_generateInvalidFiltersHTML()1118 void CFGView::impl_generateInvalidFiltersHTML()
1119 {
1120 	//-------------------------------------------------------------------------------------------------------------
1121 	// generate frameset for invalid filters
1122 	OUStringBuffer sInvalidFiltersFramesetHTML( 10000 );
1123 
1124 	sInvalidFiltersFramesetHTML.appendAscii( "<html>\n\t<head>\n\t\t<title>\n\t\t\tFrameset: Invalid Filters\n\t\t</title>\n\t</head>\n"	);	// open html
1125 	sInvalidFiltersFramesetHTML.appendAscii( "\t\t<frameset cols=\"40%,60%\">\n"															);	// open frameset for cols
1126 	sInvalidFiltersFramesetHTML.appendAscii( "\t\t\t<frame name=\""																			);	// generate frame "list"
1127 	sInvalidFiltersFramesetHTML.appendAscii( TARGET_LIST																					);
1128 	sInvalidFiltersFramesetHTML.appendAscii( "\" src=\""																					);
1129 	sInvalidFiltersFramesetHTML.appendAscii( INVALIDFILTERS_HTML																			);
1130 	sInvalidFiltersFramesetHTML.appendAscii( "\" title=\"List\">\n"																			);
1131 	sInvalidFiltersFramesetHTML.appendAscii( "\t\t\t<frame name=\""																			);	// generate frame "properties"
1132 	sInvalidFiltersFramesetHTML.appendAscii( TARGET_PROPERTIES																				);
1133 	sInvalidFiltersFramesetHTML.appendAscii( "\" src=\""																					);
1134 	sInvalidFiltersFramesetHTML.appendAscii( FILTERPROPERTIES_HTML																			);
1135 	sInvalidFiltersFramesetHTML.appendAscii( "\" title=\"Properties\">\n"																	);
1136 	sInvalidFiltersFramesetHTML.appendAscii( "\t\t</frameset>\n"																			);	// close frameset cols
1137 	sInvalidFiltersFramesetHTML.appendAscii( "</html>\n"																					);	// close html
1138 
1139     impl_writeFile( FRAMESET_INVALIDFILTERS_HTML, U2B(sInvalidFiltersFramesetHTML.makeStringAndClear()) );
1140 
1141 	//-------------------------------------------------------------------------------------------------------------
1142 	// Search invalid registered filters!
1143 	OUStringBuffer sInvalidFilterHTML( 10000 );
1144 
1145 	sInvalidFilterHTML.appendAscii( "<html>\n\t<head>\n\t\t<title>\n\t\t\tInvalid Filter\n\t\t</title>\n\t</head>\n\t<body>\n"																			);	// open html
1146 	sInvalidFilterHTML.appendAscii( "\t\tPlease check follow filter entries in configuration. They are registered for invalid types!<p>\n"																);	// write "Note"
1147 	sInvalidFilterHTML.appendAscii( "\t\t<table border=0>\n"															 																				);	// open table
1148 	sInvalidFilterHTML.appendAscii( "\t<tr><td bgcolor=#ff8040><strong>Nr.</strong></td><td bgcolor=#ff8040><strong>Filter</strong></td><td bgcolor=#ff8040><strong>Wrong Type</strong></td></tr>\n"	);	// generate table header
1149 
1150     css::uno::Sequence< ::rtl::OUString > lFilters     = m_aData.pCache->getAllFilterNames();
1151     sal_Int32                             nFilterCount = lFilters.getLength()               ;
1152     css::uno::Sequence< ::rtl::OUString > lTypes       = m_aData.pCache->getAllTypeNames()  ;
1153     sal_Int32                             nTypeCount   = lTypes.getLength()                 ;
1154     FileType                              aType  ;
1155     Filter                                aFilter;
1156     for( sal_Int32 nFilter=0; nFilter<nFilterCount; ++nFilter )
1157 	{
1158         aFilter = m_aData.pCache->getFilter( lFilters[nFilter] );
1159 		sal_Bool bFound = sal_False;
1160         for( sal_Int32 nType=0; nType<nTypeCount; ++nType )
1161         {
1162             aType = m_aData.pCache->getType( lTypes[nType] );
1163             if( aFilter.sType == aType.sName )
1164 			{
1165 				bFound = sal_True;
1166 				break;
1167 			}
1168 		}
1169 		if( bFound == sal_False )
1170 		{
1171 			sInvalidFilterHTML.appendAscii	( "\t<tr><td bgcolor=#ff0000 color=#00ffff>"		);	// generate row for invalid filter entry
1172             sInvalidFilterHTML.append       ( OUString::valueOf( nFilter )                      );
1173 			sInvalidFilterHTML.appendAscii	( "</td><td><a href=\""								);
1174 			sInvalidFilterHTML.appendAscii	( FILTERPROPERTIES_HTML								);
1175 			sInvalidFilterHTML.appendAscii	( "#"												);
1176             sInvalidFilterHTML.append       ( aFilter.sName                                     );
1177 			sInvalidFilterHTML.appendAscii	( "\" target=\""									);
1178 			sInvalidFilterHTML.appendAscii	( TARGET_PROPERTIES									);
1179 			sInvalidFilterHTML.appendAscii	( "\">"												);
1180             sInvalidFilterHTML.append       ( aFilter.sName                                     );
1181 			sInvalidFilterHTML.appendAscii	( "\"</a></td><td>\""								);
1182             sInvalidFilterHTML.append       ( aFilter.sType                                     );
1183 			sInvalidFilterHTML.appendAscii	( "\"</td></tr>\n"									);
1184 		}
1185 	}
1186 	sInvalidFilterHTML.appendAscii( "</table>\n"			);	// close table
1187 	sInvalidFilterHTML.appendAscii( "</body>\n</html>\n"	);	// close html
1188     impl_writeFile( INVALIDFILTERS_HTML, U2B(sInvalidFilterHTML.makeStringAndClear()) );
1189 }
1190 
1191 //*****************************************************************************************************************
impl_generateInvalidDetectorsHTML()1192 void CFGView::impl_generateInvalidDetectorsHTML()
1193 {
1194 	//-------------------------------------------------------------------------------------------------------------
1195 	// generate frameset for invalid detectors
1196 	OUStringBuffer sInvalidDetectorsFramesetHTML( 10000 );
1197 
1198 	sInvalidDetectorsFramesetHTML.appendAscii( "<html>\n\t<head>\n\t\t<title>\n\t\t\tFrameset: Invalid Detectors\n\t\t</title>\n\t</head>\n"	);	// open html
1199 	sInvalidDetectorsFramesetHTML.appendAscii( "\t\t<frameset cols=\"40%,60%\">\n"																);	// open frameset for cols
1200 	sInvalidDetectorsFramesetHTML.appendAscii( "\t\t\t<frame name=\""																			);	// generate frame "list"
1201 	sInvalidDetectorsFramesetHTML.appendAscii( TARGET_LIST																						);
1202 	sInvalidDetectorsFramesetHTML.appendAscii( "\" src=\""																						);
1203 	sInvalidDetectorsFramesetHTML.appendAscii( INVALIDDETECTORS_HTML																			);
1204 	sInvalidDetectorsFramesetHTML.appendAscii( "\" title=\"List\">\n"																			);
1205 	sInvalidDetectorsFramesetHTML.appendAscii( "\t\t\t<frame name=\""																			);	// generate frame "properties"
1206 	sInvalidDetectorsFramesetHTML.appendAscii( TARGET_PROPERTIES																				);
1207 	sInvalidDetectorsFramesetHTML.appendAscii( "\" src=\""																						);
1208 	sInvalidDetectorsFramesetHTML.appendAscii( DETECTORPROPERTIES_HTML																			);
1209 	sInvalidDetectorsFramesetHTML.appendAscii( "\" title=\"Properties\">\n"																		);
1210 	sInvalidDetectorsFramesetHTML.appendAscii( "\t\t</frameset>\n"																				);	// close frameset cols
1211 	sInvalidDetectorsFramesetHTML.appendAscii( "</html>\n"																						);	// close html
1212 
1213     impl_writeFile( FRAMESET_INVALIDDETECTORS_HTML, U2B(sInvalidDetectorsFramesetHTML.makeStringAndClear()) );
1214 
1215 	//-------------------------------------------------------------------------------------------------------------
1216 	// Search invalid registered detect services!
1217 	OUStringBuffer sInvalidDetectorsHTML( 10000 );
1218 
1219 	sInvalidDetectorsHTML.appendAscii( "<html>\n\t<head>\n\t\t<title>\n\t\t\tInvalid Detector Services\n\t\t</title>\n\t</head>\n\t<body>\n"			);	// open html
1220 	sInvalidDetectorsHTML.appendAscii( "\t\tPlease check follow detect service entries in configuration. They are registered for invalid types!<p>\n"	);	// write "Note"
1221 	sInvalidDetectorsHTML.appendAscii( "\t\t<table border=0>\n"															 								);	// open table
1222 	sInvalidDetectorsHTML.appendAscii( "\t<tr><td bgcolor=#ff8040><strong>Nr.</strong></td><td bgcolor=#ff8040><strong>Detector</strong></td></tr>\n"	);	// generate table header
1223 
1224     css::uno::Sequence< ::rtl::OUString > lDetectors     = m_aData.pCache->getAllDetectorNames();
1225     sal_Int32                             nDetectorCount = lDetectors.getLength()               ;
1226     css::uno::Sequence< ::rtl::OUString > lTypes       = m_aData.pCache->getAllTypeNames()  ;
1227     sal_Int32                             nTypeCount   = lTypes.getLength()                 ;
1228     FileType                              aType    ;
1229     Detector                              aDetector;
1230     for( sal_Int32 nDetector=0; nDetector<nDetectorCount; ++nDetector )
1231 	{
1232         aDetector = m_aData.pCache->getDetector( lDetectors[nDetector] );
1233 		sal_Bool bFound = sal_False;
1234         for( sal_Int32 nType=0; nType<nTypeCount; ++nType )
1235         {
1236             aType = m_aData.pCache->getType( lTypes[nType] );
1237             for( ConstStringListIterator pTypeListEntry=aDetector.lTypes.begin(); pTypeListEntry!=aDetector.lTypes.end(); ++pTypeListEntry )
1238 			{
1239                 if( *pTypeListEntry == aType.sName )
1240 				{
1241 					bFound = sal_True;
1242 					break;
1243 				}
1244 			}
1245 		}
1246 		if( bFound == sal_False )
1247 		{
1248 			sInvalidDetectorsHTML.appendAscii	( "\t<tr><td bgcolor=#ff0000 color=#00ffff>"		);	// generate row for invalid detector entry
1249             sInvalidDetectorsHTML.append        ( OUString::valueOf( nDetector )                    );
1250 			sInvalidDetectorsHTML.appendAscii	( "</td><td><a href=\""								);
1251 			sInvalidDetectorsHTML.appendAscii	( DETECTORPROPERTIES_HTML							);
1252 			sInvalidDetectorsHTML.appendAscii	( "#"												);
1253             sInvalidDetectorsHTML.append        ( aDetector.sName                                   );
1254 			sInvalidDetectorsHTML.appendAscii	( "\" target=\""									);
1255 			sInvalidDetectorsHTML.appendAscii	( TARGET_PROPERTIES									);
1256 			sInvalidDetectorsHTML.appendAscii	( "\">"												);
1257             sInvalidDetectorsHTML.append        ( aDetector.sName                                   );
1258 			sInvalidDetectorsHTML.appendAscii	( "\"</a></td></tr>\n"								);
1259 		}
1260 	}
1261 	sInvalidDetectorsHTML.appendAscii( "</table>\n"			);	// close table
1262 	sInvalidDetectorsHTML.appendAscii( "</body>\n</html>\n"	);	// close html
1263     impl_writeFile( INVALIDDETECTORS_HTML, U2B(sInvalidDetectorsHTML.makeStringAndClear()) );
1264 }
1265 
1266 //*****************************************************************************************************************
impl_generateInvalidLoadersHTML()1267 void CFGView::impl_generateInvalidLoadersHTML()
1268 {
1269 	//-------------------------------------------------------------------------------------------------------------
1270 	// generate frameset for invalid loaders
1271 	OUStringBuffer sInvalidLoadersFramesetHTML( 10000 );
1272 
1273 	sInvalidLoadersFramesetHTML.appendAscii( "<html>\n\t<head>\n\t\t<title>\n\t\t\tFrameset: Invalid Loaders\n\t\t</title>\n\t</head>\n"	);	// open html
1274 	sInvalidLoadersFramesetHTML.appendAscii( "\t\t<frameset cols=\"40%,60%\">\n"															);	// open frameset for cols
1275 	sInvalidLoadersFramesetHTML.appendAscii( "\t\t\t<frame name=\""																			);	// generate frame "list"
1276 	sInvalidLoadersFramesetHTML.appendAscii( TARGET_LIST																					);
1277 	sInvalidLoadersFramesetHTML.appendAscii( "\" src=\""																					);
1278 	sInvalidLoadersFramesetHTML.appendAscii( INVALIDLOADERS_HTML																			);
1279 	sInvalidLoadersFramesetHTML.appendAscii( "\" title=\"List\">\n"																			);
1280 	sInvalidLoadersFramesetHTML.appendAscii( "\t\t\t<frame name=\""																			);	// generate frame "properties"
1281 	sInvalidLoadersFramesetHTML.appendAscii( TARGET_PROPERTIES																				);
1282 	sInvalidLoadersFramesetHTML.appendAscii( "\" src=\""																					);
1283 	sInvalidLoadersFramesetHTML.appendAscii( LOADERPROPERTIES_HTML																			);
1284 	sInvalidLoadersFramesetHTML.appendAscii( "\" title=\"Properties\">\n"																	);
1285 	sInvalidLoadersFramesetHTML.appendAscii( "\t\t</frameset>\n"																			);	// close frameset cols
1286 	sInvalidLoadersFramesetHTML.appendAscii( "</html>\n"																					);	// close html
1287 
1288     impl_writeFile( FRAMESET_INVALIDLOADERS_HTML, U2B(sInvalidLoadersFramesetHTML.makeStringAndClear()) );
1289 
1290 	//-------------------------------------------------------------------------------------------------------------
1291 	// Search invalid registered detect services!
1292 	OUStringBuffer sInvalidLoadersHTML( 10000 );
1293 
1294 	sInvalidLoadersHTML.appendAscii( "<html>\n\t<head>\n\t\t<title>\n\t\t\tInvalid Loader Services\n\t\t</title>\n\t</head>\n\t<body>\n"			);	// open html
1295 	sInvalidLoadersHTML.appendAscii( "\t\tPlease check follow loader service entries in configuration. They are registered for invalid types!<p>\n"	);	// write "Note"
1296 	sInvalidLoadersHTML.appendAscii( "\t\t<table border=0>\n"															 							);	// open table
1297 	sInvalidLoadersHTML.appendAscii( "\t<tr><td bgcolor=#ff8040><strong>Nr.</strong></td><td bgcolor=#ff8040><strong>Loader</strong></td></tr>\n"	);	// generate table header
1298 
1299     css::uno::Sequence< ::rtl::OUString > lLoaders     = m_aData.pCache->getAllLoaderNames();
1300     sal_Int32                             nLoaderCount = lLoaders.getLength()               ;
1301     css::uno::Sequence< ::rtl::OUString > lTypes       = m_aData.pCache->getAllTypeNames()  ;
1302     sal_Int32                             nTypeCount   = lTypes.getLength()                 ;
1303     FileType                              aType    ;
1304     Loader                                aLoader  ;
1305     for( sal_Int32 nLoader=0; nLoader<nLoaderCount; ++nLoader )
1306 	{
1307         aLoader = m_aData.pCache->getLoader( lLoaders[nLoader] );
1308 		sal_Bool bFound = sal_False;
1309         for( sal_Int32 nType=0; nType<nTypeCount; ++nType )
1310         {
1311             aType = m_aData.pCache->getType( lTypes[nType] );
1312             for( ConstStringListIterator pTypeListEntry=aLoader.lTypes.begin(); pTypeListEntry!=aLoader.lTypes.end(); ++pTypeListEntry )
1313 			{
1314                 if( *pTypeListEntry == aType.sName )
1315 				{
1316 					bFound = sal_True;
1317 					break;
1318 				}
1319 			}
1320 		}
1321 		if( bFound == sal_False )
1322 		{
1323 			sInvalidLoadersHTML.appendAscii	( "\t<tr><td bgcolor=#ff0000 color=#00ffff>"		);	// generate row for invalid loader entry
1324             sInvalidLoadersHTML.append      ( OUString::valueOf( nLoader )                      );
1325 			sInvalidLoadersHTML.appendAscii	( "</td><td><a href=\""								);
1326 			sInvalidLoadersHTML.appendAscii	( LOADERPROPERTIES_HTML								);
1327 			sInvalidLoadersHTML.appendAscii	( "#"												);
1328             sInvalidLoadersHTML.append      ( aLoader.sName                                     );
1329 			sInvalidLoadersHTML.appendAscii	( "\" target=\""									);
1330 			sInvalidLoadersHTML.appendAscii	( TARGET_PROPERTIES									);
1331 			sInvalidLoadersHTML.appendAscii	( "\">"												);
1332             sInvalidLoadersHTML.append      ( aLoader.sName                                     );
1333 			sInvalidLoadersHTML.appendAscii	( "\"</a></td></tr>\n"								);
1334 		}
1335 	}
1336 	sInvalidLoadersHTML.appendAscii( "</table>\n"			);	// close table
1337 	sInvalidLoadersHTML.appendAscii( "</body>\n</html>\n"	);	// close html
1338     impl_writeFile( INVALIDLOADERS_HTML, U2B(sInvalidLoadersHTML.makeStringAndClear()) );
1339 }
1340 
1341 //*****************************************************************************************************************
impl_generateFilterFlagsHTML()1342 void CFGView::impl_generateFilterFlagsHTML()
1343 {
1344 	//-------------------------------------------------------------------------------------------------------------
1345 	// Create view of all filters and his flags.
1346 	OUStringBuffer sFilterFlagsHTML( 10000 );
1347 
1348 	sFilterFlagsHTML.appendAscii( "<html>\n\t<head>\n\t\t<title>\n\t\t\tFilter and Flags\n\t\t</title>\n\t</head>\n\t<body>\n"					);	// open html
1349 	sFilterFlagsHTML.appendAscii( "\t\tThis is a list of all filters and his supported flags!<p>\n"												);	// write "Note"
1350 	sFilterFlagsHTML.appendAscii( "\t\t<table border=0>\n"															 							);	// open table
1351 	sFilterFlagsHTML.appendAscii( "\t<tr><td bgcolor=#ff8040><strong>Nr.</strong></td><td bgcolor=#ff8040><strong>Loader</strong></td></tr>\n"	);	// generate table header
1352 
1353     css::uno::Sequence< ::rtl::OUString > lNames = m_aData.pCache->getAllFilterNames();
1354     sal_Int32                             nCount = lNames.getLength();
1355     for( sal_Int32 nItem=0; nItem!=nCount; ++nItem )
1356 	{
1357         Filter aFilter = m_aData.pCache->getFilter( lNames[nItem] );
1358 
1359 		sFilterFlagsHTML.appendAscii( "\t<tr><td bgcolor=#ff0000 color=#00ffff>"		);
1360         sFilterFlagsHTML.append     ( OUString::valueOf( nItem )                        );
1361 		sFilterFlagsHTML.appendAscii( "</td><td><a href=\""								);
1362 		sFilterFlagsHTML.appendAscii( LOADERPROPERTIES_HTML								);
1363 		sFilterFlagsHTML.appendAscii( "#"												);
1364         sFilterFlagsHTML.append     ( aFilter.sName                                     );
1365 		sFilterFlagsHTML.appendAscii( "\" target=\""									);
1366 		sFilterFlagsHTML.appendAscii( TARGET_PROPERTIES									);
1367 		sFilterFlagsHTML.appendAscii( "\">"												);
1368         sFilterFlagsHTML.append     ( aFilter.sName                                     );
1369 		sFilterFlagsHTML.appendAscii( "\"</a></td><td>"									);
1370 
1371         if( aFilter.nFlags & FILTERFLAG_IMPORT          ) { sFilterFlagsHTML.append( FILTERFLAGNAME_IMPORT          ); sFilterFlagsHTML.appendAscii( " | " ); }
1372         if( aFilter.nFlags & FILTERFLAG_EXPORT          ) { sFilterFlagsHTML.append( FILTERFLAGNAME_EXPORT          ); sFilterFlagsHTML.appendAscii( " | " ); }
1373         if( aFilter.nFlags & FILTERFLAG_TEMPLATE        ) { sFilterFlagsHTML.append( FILTERFLAGNAME_TEMPLATE        ); sFilterFlagsHTML.appendAscii( " | " ); }
1374         if( aFilter.nFlags & FILTERFLAG_INTERNAL        ) { sFilterFlagsHTML.append( FILTERFLAGNAME_INTERNAL        ); sFilterFlagsHTML.appendAscii( " | " ); }
1375         if( aFilter.nFlags & FILTERFLAG_TEMPLATEPATH    ) { sFilterFlagsHTML.append( FILTERFLAGNAME_TEMPLATEPATH    ); sFilterFlagsHTML.appendAscii( " | " ); }
1376         if( aFilter.nFlags & FILTERFLAG_OWN             ) { sFilterFlagsHTML.append( FILTERFLAGNAME_OWN             ); sFilterFlagsHTML.appendAscii( " | " ); }
1377         if( aFilter.nFlags & FILTERFLAG_ALIEN           ) { sFilterFlagsHTML.append( FILTERFLAGNAME_ALIEN           ); sFilterFlagsHTML.appendAscii( " | " ); }
1378         if( aFilter.nFlags & FILTERFLAG_USESOPTIONS     ) { sFilterFlagsHTML.append( FILTERFLAGNAME_USESOPTIONS     ); sFilterFlagsHTML.appendAscii( " | " ); }
1379         if( aFilter.nFlags & FILTERFLAG_DEFAULT         ) { sFilterFlagsHTML.append( FILTERFLAGNAME_DEFAULT         ); sFilterFlagsHTML.appendAscii( " | " ); }
1380         if( aFilter.nFlags & FILTERFLAG_NOTINFILEDIALOG ) { sFilterFlagsHTML.append( FILTERFLAGNAME_NOTINFILEDIALOG ); sFilterFlagsHTML.appendAscii( " | " ); }
1381         if( aFilter.nFlags & FILTERFLAG_NOTINCHOOSER    ) { sFilterFlagsHTML.append( FILTERFLAGNAME_NOTINCHOOSER    ); sFilterFlagsHTML.appendAscii( " | " ); }
1382         if( aFilter.nFlags & FILTERFLAG_ASYNCHRON       ) { sFilterFlagsHTML.append( FILTERFLAGNAME_ASYNCHRON       ); sFilterFlagsHTML.appendAscii( " | " ); }
1383         if( aFilter.nFlags & FILTERFLAG_READONLY        ) { sFilterFlagsHTML.append( FILTERFLAGNAME_READONLY        ); sFilterFlagsHTML.appendAscii( " | " ); }
1384         if( aFilter.nFlags & FILTERFLAG_NOTINSTALLED    ) { sFilterFlagsHTML.append( FILTERFLAGNAME_NOTINSTALLED    ); sFilterFlagsHTML.appendAscii( " | " ); }
1385         if( aFilter.nFlags & FILTERFLAG_CONSULTSERVICE  ) { sFilterFlagsHTML.append( FILTERFLAGNAME_CONSULTSERVICE  ); sFilterFlagsHTML.appendAscii( " | " ); }
1386         if( aFilter.nFlags & FILTERFLAG_3RDPARTYFILTER  ) { sFilterFlagsHTML.append( FILTERFLAGNAME_3RDPARTYFILTER  ); sFilterFlagsHTML.appendAscii( " | " ); }
1387         if( aFilter.nFlags & FILTERFLAG_PACKED          ) { sFilterFlagsHTML.append( FILTERFLAGNAME_PACKED          ); sFilterFlagsHTML.appendAscii( " | " ); }
1388         if( aFilter.nFlags & FILTERFLAG_SILENTEXPORT    ) { sFilterFlagsHTML.append( FILTERFLAGNAME_SILENTEXPORT    ); sFilterFlagsHTML.appendAscii( " | " ); }
1389         if( aFilter.nFlags & FILTERFLAG_BROWSERPREFERED ) { sFilterFlagsHTML.append( FILTERFLAGNAME_BROWSERPREFERED ); sFilterFlagsHTML.appendAscii( " | " ); }
1390         if( aFilter.nFlags & FILTERFLAG_PREFERED        ) { sFilterFlagsHTML.append( FILTERFLAGNAME_PREFERED        ); }
1391 
1392 		sFilterFlagsHTML.appendAscii( "</td></tr>\n"	);
1393 	}
1394 	sFilterFlagsHTML.appendAscii( "</table>\n"			);	// close table
1395 	sFilterFlagsHTML.appendAscii( "</body>\n</html>\n"	);	// close html
1396     impl_writeFile( FILTERFLAGS_HTML, U2B(sFilterFlagsHTML.makeStringAndClear()) );
1397 }
1398 
1399 //*****************************************************************************************************************
impl_generateDefaultFiltersHTML()1400 void CFGView::impl_generateDefaultFiltersHTML()
1401 {
1402 }
1403 
1404 //*****************************************************************************************************************
impl_generateDoubleFilterUINamesHTML()1405 void CFGView::impl_generateDoubleFilterUINamesHTML()
1406 {
1407 	//-------------------------------------------------------------------------------------------------------------
1408     // generate frameset for double UINames
1409     OUStringBuffer sFrameSet( 10000 );
1410 
1411     sFrameSet.appendAscii( "<html>\n\t<head>\n\t\t<title>\n\t\t\tFrameset: Search doubl UINames\n\t\t</title>\n\t</head>\n" );  // open html
1412     sFrameSet.appendAscii( "\t\t<frameset cols=\"40%,60%\">\n"                                                              );  // open frameset for cols
1413     sFrameSet.appendAscii( "\t\t\t<frame name=\""                                                                           );  // generate frame "list"
1414     sFrameSet.appendAscii( TARGET_LIST                                                                                      );
1415     sFrameSet.appendAscii( "\" src=\""                                                                                      );
1416     sFrameSet.appendAscii( DOUBLEFILTERUINAMES_HTML                                                                         );
1417     sFrameSet.appendAscii( "\" title=\"Double UINames\">\n"                                                                 );
1418     sFrameSet.appendAscii( "\t\t\t<frame name=\""                                                                           );  // generate frame "properties"
1419     sFrameSet.appendAscii( TARGET_PROPERTIES                                                                                );
1420     sFrameSet.appendAscii( "\" src=\""                                                                                      );
1421     sFrameSet.appendAscii( FILTERPROPERTIES_HTML                                                                            );
1422     sFrameSet.appendAscii( "\" title=\"Properties\">\n"                                                                     );
1423     sFrameSet.appendAscii( "\t\t</frameset>\n"                                                                              );  // close frameset cols
1424     sFrameSet.appendAscii( "</html>\n"                                                                                      );  // close html
1425 
1426     impl_writeFile( FRAMESET_DOUBLEFILTERUINAMES_HTML, U2B(sFrameSet.makeStringAndClear()) );
1427 
1428 	//-------------------------------------------------------------------------------------------------------------
1429 	// Search invalid registered detect services!
1430     OUStringBuffer sHTML( 10000 );
1431 
1432     sHTML.appendAscii( "<html>\n\t<head>\n\t\t<title>\n\t\t\tDouble Filter UINames\n\t\t</title>\n\t</head>\n\t<body>\n"    );  // open html
1433     sHTML.appendAscii( "\t\tPlease check follow filter entries in configuration. Her UINames are registered twice!<p>\n"    );  // write "Note"
1434     sHTML.appendAscii( "\t\t<table border=0>\n"                                                                             );  // open table
1435     sHTML.appendAscii( "\t<tr><td bgcolor=#ff8040><strong>Nr.</strong></td>\n"                                              );  // generate table header
1436     sHTML.appendAscii( "\t\t<td bgcolor=#ff8040><strong>UIName</strong></td>\n"                                             );
1437     sHTML.appendAscii( "\t\t<td bgcolor=#ff8040><strong>Filters</strong></td>\n"                                            );
1438     sHTML.appendAscii( "\t</tr>\n"                                                                                          );
1439 
1440     StringHash                            lUINames                                          ;
1441     css::uno::Sequence< ::rtl::OUString > lFilters     = m_aData.pCache->getAllFilterNames();
1442     sal_Int32                             nFilterCount = lFilters.getLength()               ;
1443     Filter                                aFilter                                           ;
1444     ::rtl::OUStringBuffer                 sBuffer                                           ;
1445     ::rtl::OUString                       sUIName                                           ;
1446 
1447     for( sal_Int32 nFilter=0; nFilter<nFilterCount; ++nFilter )
1448 	{
1449         aFilter = m_aData.pCache->getFilter( lFilters[nFilter] );
1450         for( ConstStringHashIterator pUIName=aFilter.lUINames.begin(); pUIName!= aFilter.lUINames.end(); ++pUIName )
1451         {
1452             // Build key value by using localized UIName to register filter name
1453             sBuffer.appendAscii( "["             );
1454             sBuffer.append     ( pUIName->first  );
1455             sBuffer.appendAscii( "] \""          );
1456             sBuffer.append     ( pUIName->second );
1457             sBuffer.appendAscii( "\""            );
1458             sUIName = sBuffer.makeStringAndClear();
1459 
1460             // insert filter into hash table
1461             sBuffer.append     ( lUINames[ sUIName ]     );
1462             sBuffer.appendAscii ( "<a href=\""           );
1463             sBuffer.appendAscii ( FILTERPROPERTIES_HTML  );
1464             sBuffer.appendAscii ( "#"                    );
1465             sBuffer.append      ( aFilter.sName          );
1466             sBuffer.appendAscii ( "\" target=\""         );
1467             sBuffer.appendAscii ( TARGET_PROPERTIES      );
1468             sBuffer.appendAscii ( "\">"                  );
1469             sBuffer.append      ( aFilter.sName          );
1470             sBuffer.appendAscii ( "\"</a><br>\n"         );
1471             lUINames[ sUIName ] = sBuffer.makeStringAndClear();
1472         }
1473     }
1474 
1475     nFilter = 1;
1476     for( ConstStringHashIterator pIterator=lUINames.begin(); pIterator!=lUINames.end(); ++pIterator )
1477     {
1478         if( pIterator->second.indexOf( '\n' ) != pIterator->second.lastIndexOf( '\n' ) )
1479         {
1480             sHTML.appendAscii ( "\t<tr><td bgcolor=#ff0000 color=#00ffff valign=top>"   );  // generate row for uiname->filter entry
1481             sHTML.append      ( OUString::valueOf( nFilter )                            );
1482             sHTML.appendAscii ( "</td><td valign=top>"                                  );
1483             sHTML.append      ( pIterator->first                                        );
1484             sHTML.appendAscii ( "</td><td bgcolor=#f0f0f0 valign=top>"                  );
1485             sHTML.append      ( pIterator->second                                       );
1486             sHTML.appendAscii ( "</td></tr>\n"                                          );
1487 
1488             ++nFilter;
1489         }
1490     }
1491 
1492     sHTML.appendAscii( "</table>\n"           );  // close table
1493     sHTML.appendAscii( "</body>\n</html>\n"   );  // close html
1494     impl_writeFile( DOUBLEFILTERUINAMES_HTML, U2B(sHTML.makeStringAndClear()) );
1495 }
1496 
1497 //*****************************************************************************************************************
impl_writeFile(const::rtl::OString & sFile,const::rtl::OString & sContent)1498 void CFGView::impl_writeFile( const ::rtl::OString& sFile, const ::rtl::OString& sContent )
1499 {
1500     ::rtl::OUStringBuffer sFullPath( 1000 );
1501     sFullPath.append        ( m_aData.sDirectory    );
1502     sFullPath.appendAscii   ( "\\"                  );
1503     sFullPath.appendAscii   ( sFile.getStr()        );
1504 
1505     ::rtl::OUString s = sFullPath.makeStringAndClear();
1506 
1507     WRITE_LOGFILE( U2B(s), sContent )
1508 }
1509